|
|
|
class_name Country
|
|
|
|
extends Reference
|
|
|
|
|
|
|
|
signal state_changed()
|
|
|
|
|
|
|
|
var id
|
|
|
|
var name
|
|
|
|
var color
|
|
|
|
var money = 8 setget _set_money
|
|
|
|
var stock_price = 1
|
|
|
|
var total_stocks = 0
|
|
|
|
var player_stocks = [0,0,0]
|
|
|
|
var player_acceptance = [false, false, false]
|
|
|
|
var proposal = 0 setget _set_proposal
|
|
|
|
var tile_positions
|
|
|
|
var armies = []
|
|
|
|
var boats = []
|
|
|
|
var factory_positions = []
|
|
|
|
var grid
|
|
|
|
|
|
|
|
func add_unit(unit, v):
|
|
|
|
unit.country = self
|
|
|
|
armies.append(unit)
|
|
|
|
grid.add_unit(unit, v)
|
|
|
|
emit_signal("state_changed")
|
|
|
|
|
|
|
|
func remove_unit(unit):
|
|
|
|
armies.erase(unit)
|
|
|
|
grid.remove_unit(unit)
|
|
|
|
emit_signal("state_changed")
|
|
|
|
|
|
|
|
func add_boat(unit, v):
|
|
|
|
unit.country = self
|
|
|
|
boats.append(unit)
|
|
|
|
grid.add_boat(unit, v)
|
|
|
|
emit_signal("state_changed")
|
|
|
|
|
|
|
|
func remove_boat(unit):
|
|
|
|
boats.erase(unit)
|
|
|
|
grid.remove_boat(unit)
|
|
|
|
emit_signal("state_changed")
|
|
|
|
|
|
|
|
func get_net_profit():
|
|
|
|
return len(factory_positions) - len(armies) - len(boats)
|
|
|
|
|
|
|
|
func compute_balance():
|
|
|
|
money += get_net_profit()
|
|
|
|
emit_signal("state_changed")
|
|
|
|
|
|
|
|
func get_controller_id():
|
|
|
|
for i in len(player_stocks):
|
|
|
|
if player_stocks[i] >= 4:
|
|
|
|
return i
|
|
|
|
return -1
|
|
|
|
|
|
|
|
func process_proposal():
|
|
|
|
for i in len(player_acceptance):
|
|
|
|
var acceptance = player_acceptance[i]
|
|
|
|
var stocks = player_stocks[i]
|
|
|
|
if (not acceptance) and stocks > 0:
|
|
|
|
return false
|
|
|
|
stock_price += proposal
|
|
|
|
proposal = 0
|
|
|
|
player_acceptance = [false, false, false]
|
|
|
|
emit_signal("state_changed")
|
|
|
|
return true
|
|
|
|
|
|
|
|
func _set_money(value):
|
|
|
|
money = value
|
|
|
|
emit_signal("state_changed")
|
|
|
|
|
|
|
|
func _set_proposal(value):
|
|
|
|
proposal = value
|
|
|
|
emit_signal("state_changed")
|