Menu sprites from Micropolis

- Removed UI from ZC's Dress Up (may return in a later time)
- Power stations
- Simplified UI
- Time now works
- Income and expenses
This commit is contained in:
Tony Bark 2021-05-20 04:54:00 -04:00
parent 0b60335591
commit 8170b69b7a
400 changed files with 1888 additions and 4809 deletions

View file

@ -1,24 +1,24 @@
extends KinematicBody2D
signal grabbed
signal power
export var cost: int = 10000
export var income: int
export var expense: int
enum IsPowerStation {TRUE, FALSE}
export(IsPowerStation) var power_station = IsPowerStation.FALSE
onready var zone = $Sprite
onready var quarters = $Quarters
onready var player = $AnimationPlayer
onready var animator = $AnimationPlayer
var can_grab = false
var is_powered = false
var grabbed_offset = Vector2()
func _ready():
SimEvents.connect("pay_expense", self, "_get_expense")
SimEvents.connect("budget", self, "_get_budget")
SimEvents.connect("has_power", self, "_power_zone")
connect("grabbed", self, "_grab_zone")
connect("power", self, "_power_zone")
func _input(event):
if event is InputEventMouseButton and can_grab:
@ -29,35 +29,36 @@ func _input(event):
# Substract from the player's budget
if SimData.budget >= cost:
SimData.budget -= cost
if power_station == IsPowerStation.TRUE:
SimEvents.emit_signal("has_power")
func _process(delta):
if can_grab:
position = get_global_mouse_position() + grabbed_offset
if not is_powered:
quarters.stop()
else:
if SimData.has_power and can_grab == false:
quarters.start()
_animante_sprite()
else:
quarters.stop()
_animante_sprite(false)
func _animante_sprite(animante: bool = true):
if zone.hframes > 1 or zone.vframes > 1 and animante:
animator.play("Animante")
else:
animator.stop()
func _grab_zone():
can_grab = true
func _power_zone():
quarters.start()
player.play("Animante")
SimData.has_power = true
func _on_Quarters_timeout():
if SimData.prev_quarter == 4:
if SimData.budget >= expense:
SimData.budget -= expense
func _get_budget():
if SimData.budget >= expense:
SimData.budget -= expense
if SimData.budget >= income:
SimData.budget += income
SimData.year += 1
SimData.emit_signal("one_time_zone")
SimData.emit_signal("pay_expense")
SimData.prev_quarter = SimData.quarter
quarters.start()
if SimData.budget >= income:
SimData.budget += income

View file

@ -1,15 +1,18 @@
extends Node
var city_name: String
var year: int = 1
# Hard-coded for now
var city_name: String = "Furtropolis"
var year: int = 1980
var prev_quarter: int
var quarter: int = 1
var population: int = 0
var news_ticker: String
var budget: int = 10000000
var prev_budget: int
var power_grid: int
var has_power: bool
var res_tax: int
var comm_tax: int
var indust_tax: int

View file

@ -1,5 +1,5 @@
extends Node
signal one_time_income
signal pay_expense
signal has_power
signal budget
signal game_speed

View file

@ -2,9 +2,11 @@ extends BoxContainer
onready var city_name = $CityNameLbl
onready var money = $Money/MoneyLbl
onready var year = $YearLbl
func _ready():
city_name.text = SimData.city_name
func _process(delta):
money.text = str(SimData.budget)
year.text = str(SimData.year)

10
scripts/game.gd Normal file
View file

@ -0,0 +1,10 @@
extends Node2D
onready var quarters = $Quarters
func _on_Quarters_timeout():
SimData.year += 1
SimData.prev_quarter = SimData.quarter
SimEvents.emit_signal("budget")
quarters.start()

View file

@ -1,8 +0,0 @@
extends Node
onready var gui = $Controls/GUI
onready var advisor = $Controls/GUI/AdvsiorNotice
# Called when the node enters the scene tree for the first time.
func _ready():
advisor.show()

View file

@ -17,7 +17,7 @@ func _ready():
make_terrian_map()
make_water()
func make_terrian_map():
for x in map_size.x:
for y in map_size.y:
@ -35,17 +35,15 @@ func make_water():
water.update_bitmask_region(Vector2(0.0, 0.0), Vector2(map_size.x, map_size.y))
func fake_click(flags=0):
var ev = InputEvent
ev.type = InputEvent.MOUSE_BUTTON
ev.button_index=BUTTON_LEFT
ev.pressed = true
ev.global_pos = get_global_mouse_position()
ev.meta = flags
get_tree().input_event(ev)
func _on_PoliceBtn_pressed():
var police = preload("res://scenes/Zone.tscn")
var instance = police.instance()
func _on_ResBtn_pressed():
var new_zone = preload("res://scenes/zones/Zone.tscn")
var instance = new_zone.instance()
add_child(instance)
instance.emit_signal("grabbed")
func _on_CoalBtn_pressed():
var new_zone = preload("res://scenes/zones/Coal.tscn")
var instance = new_zone.instance()
add_child(instance)
instance.emit_signal("grabbed")

View file

@ -6,6 +6,4 @@ onready var budget = $Container/BudgetMenu
func _on_CreateBtn_pressed():
SimData.city_name = city_name
get_tree().change_scene("res://scenes/Game.tscn")

4
scripts/toolbar.gd Normal file
View file

@ -0,0 +1,4 @@
extends Panel