added ledger (untested)

master
potatoxel 10 months ago
parent f6ecffda02
commit f8b2f1068f
  1. 34
      export_presets.cfg
  2. 1
      prefabs/grid/grid.gd
  3. 6
      project.godot
  4. 19
      scenes/game/country.gd
  5. 14
      scenes/game/game.gd
  6. 14
      scenes/game/game.tscn
  7. 58
      scenes/game/game_info_ui.gd
  8. 2
      scenes/game/player.gd

@ -0,0 +1,34 @@
[preset.0]
name="HTML5"
platform="HTML5"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=""
script_export_mode=1
script_encryption_key=""
[preset.0.options]
custom_template/debug=""
custom_template/release=""
variant/export_type=0
vram_texture_compression/for_desktop=true
vram_texture_compression/for_mobile=false
html/export_icon=true
html/custom_html_shell=""
html/head_include=""
html/canvas_resize_policy=2
html/focus_canvas_on_start=true
html/experimental_virtual_keyboard=false
progressive_web_app/enabled=false
progressive_web_app/offline_page=""
progressive_web_app/display=1
progressive_web_app/orientation=0
progressive_web_app/icon_144x144=""
progressive_web_app/icon_180x180=""
progressive_web_app/icon_512x512=""
progressive_web_app/background_color=Color( 0, 0, 0, 1 )

@ -72,6 +72,7 @@ func set_factory(v, factory):
grid[v].country.factory_positions.append(v)
else:
grid[v].country.factory_positions.erase(v)
grid[v].country.emit_signal("state_changed") #TODO refactor into country.
if factory:
$Factories.set_cellv(v, $TileMap.tile_set.find_tile_by_name("factory"))

@ -25,6 +25,11 @@ _global_script_classes=[ {
"path": "res://scenes/game/country.gd"
}, {
"base": "Node2D",
"class": "Game",
"language": "GDScript",
"path": "res://scenes/game/game.gd"
}, {
"base": "Node2D",
"class": "Grid",
"language": "GDScript",
"path": "res://prefabs/grid/grid.gd"
@ -38,6 +43,7 @@ _global_script_class_icons={
"Army": "",
"Boat": "",
"Country": "",
"Game": "",
"Grid": "",
"Player": ""
}

@ -1,10 +1,12 @@
class_name Country
extends Reference
signal state_changed()
var id
var name
var color
var money = 8
var money = 8 setget _set_money
var stock_price = 1
var total_stocks = 0
var player_stocks = [0,0,0]
@ -20,22 +22,30 @@ 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 += len(factory_positions) - len(armies) - len(boats)
money += get_net_profit()
emit_signal("state_changed")
func get_controller_id():
for i in len(player_stocks):
@ -52,4 +62,9 @@ func process_proposal():
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")

@ -1,3 +1,4 @@
class_name Game
extends Node2D
var countries = [
@ -23,14 +24,19 @@ var mouse_click_mode = null
var stocks_ui = []
func _ready():
func _init():
randomize()
_setup_players()
_setup_countries()
_setup_turns()
func _ready():
_setup_stock_ui()
$Grid.countries = countries
$Grid.setup()
turn = turns[turn_id]
_on_EndTurnButton_pressed()
@ -60,9 +66,7 @@ func _setup_countries():
countries2.append(country2)
id += 1
countries = countries2
$Grid.countries = countries
$Grid.setup()
func _setup_turns():
for player in players:

@ -1,7 +1,8 @@
[gd_scene load_steps=3 format=2]
[gd_scene load_steps=4 format=2]
[ext_resource path="res://prefabs/grid/grid.tscn" type="PackedScene" id=1]
[ext_resource path="res://scenes/game/game.gd" type="Script" id=2]
[ext_resource path="res://scenes/game/game_info_ui.gd" type="Script" id=3]
[node name="Game" type="Node2D"]
script = ExtResource( 2 )
@ -184,6 +185,17 @@ margin_bottom = -42.0
rect_scale = Vector2( 4, 4 )
text = "Player X Wins!!!"
[node name="GameInfoUI" type="GridContainer" parent="CanvasLayer/Control"]
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = -485.0
margin_top = -324.0
margin_bottom = -45.0
columns = 9
script = ExtResource( 3 )
[connection signal="tile_pressed" from="Grid" to="." method="_on_Grid_tile_pressed"]
[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/BuyFactory" to="." method="_on_BuyFactory_pressed"]
[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/BuyArmy" to="." method="_on_BuyArmy_pressed"]

@ -0,0 +1,58 @@
extends GridContainer
onready var game = owner as Game
func _ready():
for country in game.countries:
country.connect("state_changed", self, "refresh")
for player in game.players:
player.connect("state_changed", self, "refresh")
refresh()
func refresh():
for child in get_children():
child.queue_free()
add_label("Country")
for country in game.countries:
if country.id == 0: continue
add_label(country.name)
add_label("Money")
for player in game.players:
add_label(player.name)
var country_id = 0
for stock in player.stocks:
if country_id != 0:
add_label(str(stock) + ("/" if game.countries[country_id].player_acceptance[player.id] else " "))
country_id += 1
add_label(str(player.money) + "$")
add_label("Money")
for country in game.countries:
if country.id == 0: continue
add_label(
str(country.money) + \
"(" + signify(country.get_net_profit()) + ")" + \
"$"
)
add_label("")
add_label("Stock price")
for country in game.countries:
if country.id == 0: continue
add_label(
str(country.stock_price) + \
("(" + signify(country.proposal) + ")" if country.proposal != 0 else "") + \
"$"
)
func signify(num):
return ("+" if num >= 0 else "-") + str(abs(num))
func add_label(text):
var label = Label.new()
label.text = str(text)
add_child(label)
return label

@ -2,6 +2,7 @@ class_name Player
extends Reference
signal win
signal state_changed()
var id
var name
@ -17,5 +18,6 @@ func compute_balance():
func _set_money(value):
money = value
emit_signal("state_changed")
if value >= 40:
emit_signal("win")

Loading…
Cancel
Save