-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCamera2D.gd
107 lines (95 loc) · 2.7 KB
/
Camera2D.gd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
extends Camera2D
var size = Vector2()
func _ready():
get_tree().connect("screen_resized", self, "screen_size")
screen_size()
set_network_master(1, false)
return
func screen_size():
size = get_viewport().size
var sr = size.y / size.x
var gr = 460 / 280
var h = size.y
var gh = 460 + 10 * (sr / gr)
var sy = gh / h
zoom = Vector2(sy, sy)
return
func _unhandled_input(event):
if not get_tree().network_peer:
return
else:
if not(event is InputEventMouseButton and not event.is_pressed()):
return
if not(event.button_index == 1):
return
if get_tree().network_peer.get_connection_status() == NetworkedMultiplayerPeer.CONNECTION_CONNECTED:
var pos = event.position
var half = size / 2
pos = pos - half
pos = (pos * zoom) + get_camera_position()
var det = get_world_2d().direct_space_state.intersect_point(pos, 1, [], 32)
if not det:
error("Cannot drop my unit there !")
return
if get_tree().is_network_server():
if valid_card(global.blue_card):
rpc("server_drop", global.blue_card, pos, true)
else:
error("No card selected !")
else:
if valid_card(global.red_card):
rpc("server_drop", global.red_card, pos.rotated(PI), false)
else:
error("No card selected !")
return
func valid_card(card:int):
return card >=0 and card <=3
master func server_drop(card, pos, blue):
var scard = null
if blue:
scard = global.blue_deck[card]
var cost = global.card_map[scard][1]
if global.blue_elixir < cost:
error("Not enough mana !")
return
global.blue_elixir -= cost
global.blue_deck[card] = global.blue_deck[4]
global.blue_deck.remove(4)
global.blue_deck.append(scard)
clear_deck_selection()
update_deck(global.blue_deck)
else:
scard = global.red_deck[card]
var cost = global.card_map[scard][1]
if global.red_elixir < cost:
rpc("error", "Not enough mana !")
return
global.red_elixir -= cost
global.red_deck[card] = global.red_deck[4]
global.red_deck.remove(4)
global.red_deck.append(scard)
rpc("clear_deck_selection")
rpc("update_deck", global.red_deck)
var unit = get_parent().get_node("Choke/TileMap/Unit")
unit.unit_deploy(scard, pos, blue)
return
func init_deck():
clear_deck_selection()
update_deck(global.blue_deck)
rpc("clear_deck_selection")
rpc("update_deck", global.red_deck)
return
puppet func clear_deck_selection():
var deck = get_parent().get_node("Choke/Center/Deck")
deck.clear_selection()
return
puppet func update_deck(param):
var deck = get_parent().get_node("Choke/Center/Deck")
deck.update_card(param)
return
puppet func error(msg):
var error:Label = get_parent().get_node("Choke/Error")
error.text = msg
yield(get_tree().create_timer(3), "timeout")
error.text = ""
return