summaryrefslogtreecommitdiff
path: root/scripts/GameTable.gd
blob: b0bedf26756072ec2c76899befba1bea8219072b (plain)
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" }