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
|
extends Spatial
# MULTIPLAYER DATA
var gc_client # to be assigned by MainScene upon game creation/joining
# END MULTIPLAYER DATA
# GAME DATA
enum { PREGAME, PLACING, DETERMINE_ACTIONS, MOVEMENT }
var game_state: int
var BOARD_GEN_PARAMS = {
"airport_style" : 0, # 0 = colors + numbers, 1 = names
"num_airports" : 18,
"board_side_length" : 6,
"num_hills" : 8,
"num_mountains" : 4,
"runways_per_airport" : 0 # 0 random, 1-3
}
var RULES = {
"fly_over_airports" : 0, # 1 = only at altitude 2, 2 = any altitude
"must_land_on_final_action" : 0,
"takeoff_action" : 2, # 0 - 4
"move_forward_order" : 0, # 0 = either before or after, 1 = after, 2 = before
"gamemode" : 0, # 0 = cooperative, 1 = versus
"plane_assignment" : 0, # 0 = random, 1 = draft
"altitude_and_turn" : 0, # whether a plane can change altitude and turn in the same action
"event_frequency" : 1, # turns per event
"weather_enabled" : 1,
"misc_enabled" : 1,
"new_planes_per_turn" : 4, # 1 - 8
"ramp_up_enabled" : 0, # whether to ramp up to max planes per turn
"starting_planes_per_player": 4,
"round_timer" : 60, # seconds
}
onready var BOARD = $Board
var PLANES = []
var desired_player_count: int
var is_board_generated: bool = false # determine whether host can begin the game
# END GAME DATA
# directions: E, NE, NW, W, SW, SE
const adjacent_offsets = [ [0,1] , [-1, 0], [-1, -1], [0, -1], [1, 0], [1, 1] ]
func _ready():
pass
func set_up(ws_client, is_host: bool, lobby_id: String, player_id: String, rejoin_key: String):
self.ws_client = ws_client
self.is_host = is_host
self.lobby_id = lobby_id
self.player_id = player_id
self.rejoin_key = rejoin_key
# ask host for complete game state. returned fields will depend on game state
func request_complete_game_state():
if is_host: return
var request = { "type" : "request", "source" : host_id, "requested_data" : "ALL" }
|