Added income frequency

- Added years and quarters to the interface
- Created timer that increments the number of quarters in a year until it reaches four. After four, the quarter resets and the year increments.
- Renamed TowerData to GameData
This commit is contained in:
Anthony Foxclaw 2020-04-12 20:06:52 -04:00
parent dff1abaf49
commit 3308bddc6c
12 changed files with 104 additions and 63 deletions

View file

@ -9,7 +9,3 @@ room_income = 500
room_expense = 350
room_capacity = 1
is_rentable = true
[node name="Rent" type="Timer" parent="."]
wait_time = 5.0
[connection signal="timeout" from="Rent" to="." method="_on_Rent_timeout"]

View file

@ -21,11 +21,11 @@ config/icon="res://icon.png"
[autoload]
TowerData="*res://src/autoload/twrdata.gd"
GameData="*res://src/autoload/gamedata.gd"
[display]
window/stretch/mode="viewport"
window/stretch/mode="2d"
window/stretch/aspect="keep"
[rendering]

View file

@ -0,0 +1,8 @@
extends Node
var tower_name: String
var budget: int = 2000000
var year: int = 1
var prev_quarter: int
var quarter: int = 1
enum GameSpeed { SLOW, MEDIUM, FAST }

View file

@ -1,16 +0,0 @@
extends Node
var tower_name: String
var budget: int
var prev_budget: int
func starting_budget(lev: int):
if lev == 3:
budget = 5000
elif lev == 2:
budget = 10000
# Default to easy mode
else:
budget = 20000

View file

@ -1,7 +0,0 @@
extends Panel
func _ready():
$TwrMenus/TwrNameLbl.text = TowerData.tower_name
func _process(delta):
$TwrMenus/MoneyLbl.text = str(TowerData.budget)

View file

@ -2,12 +2,16 @@ extends Control
func _ready():
$GPanel/GameStatus/MoneyLbl.text = str(GameData.budget)
$GPanel/GameStatus/YearNumLbl.text = str(GameData.year)
$GPanel/GameStatus/QuaterNumLbl.text = str(GameData.quarter)
$GPanel/GameMenus/NameLbl.text = GameData.tower_name
$WelcomeDlg.show()
$GPanel/GameMenus/NameLbl.text = TowerData.tower_name
func _process(delta):
# $GPanel/GameStatus/MoneyLbl.text = str(TowerData.budget)
pass
$GPanel/GameStatus/MoneyLbl.text = str(GameData.budget)
$GPanel/GameStatus/YearNumLbl.text = str(GameData.year)
$GPanel/GameStatus/QuaterNumLbl.text = str(GameData.quarter)
func _on_WelcomeDlg_confirmed():
$WelcomeDlg.hide()

View file

@ -30,20 +30,20 @@ __meta__ = {
[node name="NameLbl" type="Label" parent="GPanel/GameMenus"]
margin_top = 3.0
margin_right = 80.0
margin_right = 9.0
margin_bottom = 17.0
text = "Tower Name"
text = "#"
[node name="GameSpeed" type="MenuButton" parent="GPanel/GameMenus"]
margin_left = 84.0
margin_right = 177.0
margin_left = 13.0
margin_right = 106.0
margin_bottom = 20.0
text = "Game Speed"
items = [ "Slow", null, 0, false, false, 0, 0, null, "", false, "Medium", null, 0, false, false, 1, 0, null, "", false, "Fast", null, 0, false, false, 2, 0, null, "", false ]
[node name="Disasters" type="MenuButton" parent="GPanel/GameMenus"]
margin_left = 181.0
margin_right = 253.0
margin_left = 110.0
margin_right = 182.0
margin_bottom = 20.0
text = "Disasters"
@ -61,6 +61,39 @@ __meta__ = {
"_edit_use_anchors_": false
}
[node name="YearLbl" type="Label" parent="GPanel/GameStatus"]
margin_left = 193.0
margin_top = 3.0
margin_right = 200.0
margin_bottom = 17.0
text = "Y"
[node name="YearNumLbl" type="Label" parent="GPanel/GameStatus"]
margin_left = 204.0
margin_top = 3.0
margin_right = 212.0
margin_bottom = 17.0
text = "1"
[node name="QuaterLbl" type="Label" parent="GPanel/GameStatus"]
margin_left = 216.0
margin_top = 3.0
margin_right = 227.0
margin_bottom = 17.0
text = "Q"
[node name="QuaterNumLbl" type="Label" parent="GPanel/GameStatus"]
margin_left = 231.0
margin_top = 3.0
margin_right = 239.0
margin_bottom = 17.0
text = "1"
[node name="VSeparator" type="VSeparator" parent="GPanel/GameStatus"]
margin_left = 243.0
margin_right = 247.0
margin_bottom = 20.0
[node name="CurrencyLbl" type="Label" parent="GPanel/GameStatus"]
margin_left = 251.0
margin_top = 3.0
@ -84,6 +117,7 @@ margin_bottom = 583.202
text = "Debug"
[node name="WelcomeDlg" type="AcceptDialog" parent="."]
pause_mode = 2
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5

View file

@ -2,6 +2,6 @@ extends Control
func _on_CreateBtn_pressed():
var tower_name = $TwrNameEdit.text
TowerData.tower_name = tower_name
GameData.tower_name = tower_name
get_tree().change_scene("res://src/world.tscn")

View file

@ -1,19 +1,31 @@
extends Node2D
export var room_cost: int
enum IncomeFrequency { ONE_TIME, QUARTERLY, DAILY }
export var room_cost: int = 10000
export var room_income: int
export var room_expense: int
export var room_capacity: int
export var is_rentable: bool
export(IncomeFrequency) var income_frequency = IncomeFrequency.DAILY
var rent: Timer
var is_vacant: bool
var num_of_tenants: int
var is_full: bool
func _ready():
match income_frequency:
# TODO: how long should a day be?
IncomeFrequency.DAILY:
rent.wait_time = 1
IncomeFrequency.QUARTERLY:
rent.wait_time = 5
# Once placed in-world, it'll substract from your budget
if TowerData.budget >= room_cost:
TowerData.budget = -room_cost
if GameData.budget >= room_cost:
GameData.budget = -room_cost
func _process(delta):
@ -22,12 +34,14 @@ func _process(delta):
if num_of_tenants >= room_capacity:
is_vacant = false
num_of_tenants += 1
$Rent.start()
rent.start()
else:
$Rent.stop()
rent.stop()
func _on_Rent_timeout():
# On timeout, pay the player and restart timer
if room_income != 0:
TowerData.budget = room_income
$Rent.start()
match income_frequency:
IncomeFrequency.DAILY:
# On timeout, pay the player and restart timer
GameData.budget = room_income
rent.start()
IncomeFrequency.ONE_TIME:
GameData.budget = room_income

View file

@ -29,22 +29,11 @@ __meta__ = {
"_edit_use_anchors_": false
}
[node name="BudgetMenu" type="MenuButton" parent="."]
margin_left = 339.0
margin_top = 294.0
margin_right = 628.0
margin_bottom = 314.0
text = "Starting Budget"
items = [ "20000", null, 0, false, false, 0, 0, null, "", false, "10000", null, 0, false, false, 1, 0, null, "", false, "500", null, 0, false, false, 2, 0, null, "", false ]
__meta__ = {
"_edit_use_anchors_": false
}
[node name="CreateBtn" type="Button" parent="."]
margin_left = 339.0
margin_top = 319.0
margin_top = 291.0
margin_right = 628.0
margin_bottom = 339.0
margin_bottom = 311.0
text = "Create"
__meta__ = {
"_edit_use_anchors_": false

12
project/src/world.gd Normal file
View file

@ -0,0 +1,12 @@
extends Node
func _on_Quarters_timeout():
if GameData.prev_quarter == 4:
GameData.quarter = 1
GameData.year += 1
else:
GameData.quarter += 1
GameData.prev_quarter = GameData.quarter
$Quarters.start()

View file

@ -1,7 +1,14 @@
[gd_scene load_steps=2 format=2]
[gd_scene load_steps=3 format=2]
[ext_resource path="res://src/world.gd" type="Script" id=1]
[ext_resource path="res://src/gui.tscn" type="PackedScene" id=2]
[node name="World" type="Node"]
script = ExtResource( 1 )
[node name="GUI" parent="." instance=ExtResource( 2 )]
[node name="Quarters" type="Timer" parent="."]
wait_time = 5.0
autostart = true
[connection signal="timeout" from="Quarters" to="." method="_on_Quarters_timeout"]