initial transfer of old game
11
godot/AllBuildings.tscn
Normal file
@ -0,0 +1,11 @@
|
||||
[gd_scene load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://Assets/classroom_empty.png" type="Texture" id=1]
|
||||
|
||||
[node name="AllBuildings" type="Node"]
|
||||
|
||||
[node name="Classroom" type="Node2D" parent="."]
|
||||
|
||||
[node name="classroom_empty" type="Sprite" parent="Classroom"]
|
||||
position = Vector2( 152.713, 124.123 )
|
||||
texture = ExtResource( 1 )
|
BIN
godot/Assets/CooperHewitt-Bold.otf
Normal file
BIN
godot/Assets/CooperHewitt-Book.otf
Normal file
BIN
godot/Assets/CooperHewitt-Heavy.otf
Normal file
BIN
godot/Assets/CooperHewitt-Light.otf
Normal file
BIN
godot/Assets/CooperHewitt-Medium.otf
Normal file
BIN
godot/Assets/CooperHewitt-Semibold.otf
Normal file
BIN
godot/Assets/CooperHewitt-Thin.otf
Normal file
BIN
godot/Assets/Jellee-Bold.ttf
Normal file
BIN
godot/Assets/Xolonium-Regular.ttf
Normal file
6
godot/Assets/XoloniumRegular.tres
Normal file
@ -0,0 +1,6 @@
|
||||
[gd_resource type="DynamicFont" load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://Assets/Xolonium-Regular.ttf" type="DynamicFontData" id=1]
|
||||
|
||||
[resource]
|
||||
font_data = ExtResource( 1 )
|
BIN
godot/Assets/classroom_empty.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
35
godot/Assets/classroom_empty.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/classroom_empty.png-c01200954255d576e059ca479e9e2498.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/classroom_empty.png"
|
||||
dest_files=[ "res://.import/classroom_empty.png-c01200954255d576e059ca479e9e2498.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
BIN
godot/Assets/grass.png
Normal file
After Width: | Height: | Size: 953 B |
35
godot/Assets/grass.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/grass.png-46bb554aade75a091da98570239d1507.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/grass.png"
|
||||
dest_files=[ "res://.import/grass.png-46bb554aade75a091da98570239d1507.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
BIN
godot/Assets/road.aseprite
Normal file
BIN
godot/Assets/road.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
35
godot/Assets/road.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/road.png-c3c47e2cc8c90beae2ad5c8a3bb2c3ca.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/road.png"
|
||||
dest_files=[ "res://.import/road.png-c3c47e2cc8c90beae2ad5c8a3bb2c3ca.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
BIN
godot/Assets/road2.aseprite
Normal file
BIN
godot/Assets/road2.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
35
godot/Assets/road2.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/road2.png-3f6afbaa996079cb42c78e4d1e7670f5.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/road2.png"
|
||||
dest_files=[ "res://.import/road2.png-3f6afbaa996079cb42c78e4d1e7670f5.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
BIN
godot/Assets/road_crossing.aseprite
Normal file
BIN
godot/Assets/road_crossing.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
35
godot/Assets/road_crossing.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/road_crossing.png-13290d5fe14068f060bacc8e668e68a5.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/road_crossing.png"
|
||||
dest_files=[ "res://.import/road_crossing.png-13290d5fe14068f060bacc8e668e68a5.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
BIN
godot/Assets/tree1.aseprite
Normal file
BIN
godot/Assets/tree1.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
35
godot/Assets/tree1.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/tree1.png-bee06456232c1c7e7aa2f9c68bba732a.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/tree1.png"
|
||||
dest_files=[ "res://.import/tree1.png-bee06456232c1c7e7aa2f9c68bba732a.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
19
godot/BudgetMenu.gd
Normal file
@ -0,0 +1,19 @@
|
||||
extends Control
|
||||
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
onready var game_time = get_node("/root/GameTimer")
|
||||
onready var finances = get_node("/root/Finances")
|
||||
|
||||
var estimate_month
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
game_time.connect("heartbeat", self, "_on_heartbeat")
|
||||
|
||||
|
||||
func _on_heartbeat():
|
||||
estimate_month = player_vars.pupils_income - player_vars.operating_costs - player_vars.salary_cost
|
||||
$BuildingCostNumber.text = str(player_vars.operating_costs)
|
||||
$TeacherCostNumber.text = str(player_vars.salary_cost)
|
||||
$PupilIncomeNumber.text = str(player_vars.pupils_income)
|
||||
$TotalNumber.text = str(estimate_month)
|
42
godot/Buildings.gd
Normal file
@ -0,0 +1,42 @@
|
||||
extends Node
|
||||
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
var classroom_agent = preload("res://Rooms/Classroom.tscn")
|
||||
var staffroom_agent = preload("res://Rooms/StaffRoom.tscn")
|
||||
var cpdroom_agent = preload("res://Rooms/CPDRoom.tscn")
|
||||
|
||||
# Repeatable Buildings
|
||||
|
||||
func add_classroom():
|
||||
if player_vars.funds > (player_vars.classroom_cost - 1):
|
||||
var classroom = classroom_agent.instance()
|
||||
add_child(classroom)
|
||||
player_vars.funds -= player_vars.classroom_cost
|
||||
player_vars.classroom_count += 1
|
||||
|
||||
func add_staffroom():
|
||||
if player_vars.has_staffroom == false:
|
||||
if player_vars.funds > (player_vars.staffroom_cost - 1):
|
||||
var staffroom = staffroom_agent.instance()
|
||||
add_child(staffroom)
|
||||
player_vars.funds -= player_vars.staffroom_cost
|
||||
player_vars.has_staffroom = true
|
||||
|
||||
# Unique Buildings
|
||||
|
||||
func add_cpdroom():
|
||||
if player_vars.has_cpdroom == false:
|
||||
if player_vars.funds > (player_vars.cpdroom_cost - 1):
|
||||
var cpdroom = cpdroom_agent.instance()
|
||||
add_child(cpdroom)
|
||||
player_vars.funds -= player_vars.cpdroom_cost
|
||||
player_vars.has_cpdroom = true
|
||||
|
||||
func _on_ClassroomButton_pressed():
|
||||
add_classroom()
|
||||
|
||||
func _on_StaffroomButton_pressed():
|
||||
add_staffroom()
|
||||
|
||||
func _on_CPDRoomButton_pressed():
|
||||
add_cpdroom()
|
50
godot/CTeacher.gd
Normal file
@ -0,0 +1,50 @@
|
||||
extends Node2D
|
||||
|
||||
onready var game_time = get_node("/root/GameTimer")
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
onready var teacher_manager = get_node("/root/Main/ClassTeachers")
|
||||
onready var name_gen = get_node("/root/NameGenerator")
|
||||
onready var registers = get_node("/root/Registers")
|
||||
|
||||
var teacher_happiness : int
|
||||
var teacher_academic_rating : int
|
||||
var teacher_report_card : int
|
||||
var teacher_gender : bool
|
||||
var teacher_name : String
|
||||
var teacher_first_name : String
|
||||
var teacher_last_name : String
|
||||
var teacher_in_game : int
|
||||
var teacher_joined_this_season : bool
|
||||
var teacher_id : int
|
||||
|
||||
|
||||
func _ready():
|
||||
randomize()
|
||||
game_time.connect("heartbeat", self, "teacher_on_heartbeat")
|
||||
game_time.connect("month_heartbeat", self, "teacher_on_month_heartbeat")
|
||||
teacher_joined_this_season = true
|
||||
player_vars.teacher_baseid += 1
|
||||
teacher_gender = (randi() & 1)
|
||||
teacher_last_name = name_gen.last_name[randi() % name_gen.last_name.size()]
|
||||
if teacher_gender == true:
|
||||
teacher_first_name = name_gen.boy_first_name[randi() % name_gen.boy_first_name.size()]
|
||||
if teacher_gender == false:
|
||||
teacher_first_name = name_gen.girl_first_name[randi() % name_gen.girl_first_name.size()]
|
||||
teacher_id = player_vars.teacher_baseid
|
||||
teacher_name = teacher_first_name + " " + teacher_last_name
|
||||
registers.TeacherRegister.append(teacher_name)
|
||||
|
||||
func teacher_on_heartbeat():
|
||||
teacher_in_game += 1
|
||||
player_vars.salary_cost += (player_vars.cteacher_salary / 20)
|
||||
|
||||
# StaffTracker stuff
|
||||
teacher_manager.sa_pool += 1
|
||||
teacher_manager.se_pool += 1
|
||||
teacher_manager.sw_pool += 1
|
||||
|
||||
if teacher_in_game == 60:
|
||||
teacher_joined_this_season = false
|
||||
|
||||
func teacher_on_month_heartbeat():
|
||||
pass
|
6
godot/CTeacher.tscn
Normal file
@ -0,0 +1,6 @@
|
||||
[gd_scene load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://CTeacher.gd" type="Script" id=1]
|
||||
|
||||
[node name="CTeacher" type="Node2D"]
|
||||
script = ExtResource( 1 )
|
50
godot/ClassTeachers.gd
Normal file
@ -0,0 +1,50 @@
|
||||
extends Node
|
||||
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
var classroomteacher = preload("res://CTeacher.tscn")
|
||||
onready var game_time = get_node("/root/GameTimer")
|
||||
|
||||
var staff_tracker_achievement : int
|
||||
var sa_pool : int
|
||||
var staff_tracker_enjoyment : int
|
||||
var se_pool : int
|
||||
var staff_tracker_wellbeing : int
|
||||
var sw_pool : int
|
||||
var staff_tracker_total : int
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
game_time.connect("heartbeat", self, "on_heartbeat")
|
||||
staff_tracker_achievement = 50
|
||||
staff_tracker_enjoyment = 50
|
||||
staff_tracker_wellbeing = 50
|
||||
staff_tracker_total = 50
|
||||
# game_time.connect("month_heartbeat", self, "on_month_heartbeat")
|
||||
|
||||
func add_teacher():
|
||||
if player_vars.teacher_pop < player_vars.classroom_count:
|
||||
if player_vars.funds > (player_vars.teacher_hire - 1):
|
||||
var teacher_agent = classroomteacher.instance()
|
||||
add_child(teacher_agent)
|
||||
player_vars.funds -= player_vars.teacher_hire
|
||||
player_vars.teacher_pop += 1
|
||||
|
||||
func _on_AddTeacher_pressed():
|
||||
add_teacher()
|
||||
|
||||
func on_heartbeat():
|
||||
player_vars.teacher_pop = get_child_count()
|
||||
|
||||
staff_tracker()
|
||||
|
||||
func staff_tracker():
|
||||
if sa_pool > 0 && staff_tracker_achievement < 100:
|
||||
staff_tracker_achievement += (sa_pool / player_vars.teacher_pop)
|
||||
if se_pool > 0 && staff_tracker_enjoyment < 100:
|
||||
staff_tracker_enjoyment += (se_pool / player_vars.teacher_pop)
|
||||
if sw_pool > 0 && staff_tracker_wellbeing < 100:
|
||||
staff_tracker_wellbeing += (sw_pool / player_vars.teacher_pop)
|
||||
sa_pool = 0
|
||||
sw_pool = 0
|
||||
se_pool = 0
|
||||
staff_tracker_total = int(float(staff_tracker_achievement * 0.5 + staff_tracker_enjoyment * 0.2 + staff_tracker_wellbeing * 0.3))
|
22
godot/DebugMenu.gd
Normal file
@ -0,0 +1,22 @@
|
||||
extends Control
|
||||
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
onready var game_time = get_node("/root/GameTimer")
|
||||
|
||||
func _ready():
|
||||
game_time.connect("heartbeat", self, "_on_heartbeat")
|
||||
|
||||
func _on_heartbeat():
|
||||
$PupilsLabel.text = str(player_vars.pupil_pop)
|
||||
$TeacherLabel.text = str(player_vars.teacher_pop)
|
||||
$ClassroomLabel.text = str(player_vars.classroom_count)
|
||||
if player_vars.has_cpdroom == true:
|
||||
$CPDRoomLabel.text = str("HasCPDRoom")
|
||||
|
||||
func _on_AddMoney_pressed():
|
||||
player_vars.funds += 100000
|
||||
|
||||
|
||||
func _on_StaffroomButton_pressed():
|
||||
if player_vars.has_staffroom == true:
|
||||
$StaffroomLabel.text = str("HasStaffroom")
|
13
godot/Dialogs.gd
Normal file
@ -0,0 +1,13 @@
|
||||
extends Node
|
||||
|
||||
onready var game_time = get_node("/root/GameTimer")
|
||||
onready var josephine1_dialog = get_node("/root/Main/UI/Dialogs/Josephine1")
|
||||
|
||||
func _ready():
|
||||
game_time.connect("josephine_dialog1", self, "_on_josephine_dialog1")
|
||||
pass
|
||||
|
||||
func _on_josephine_dialog1():
|
||||
# game_time.paused = 1
|
||||
josephine1_dialog.talk()
|
||||
# game_time.paused = 0
|
45
godot/Dialogs/Josephine1.gd
Normal file
@ -0,0 +1,45 @@
|
||||
extends Node
|
||||
|
||||
var dialogue_state : int
|
||||
|
||||
onready var dialoguePopup = $"../../DialoguePopup"
|
||||
onready var buttona = $"../../DialoguePopup/DialogBox/ButtonA"
|
||||
onready var buttonb = $"../../DialoguePopup/DialogBox/ButtonB"
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
dialogue_state = 0
|
||||
|
||||
func talk(answer = ""):
|
||||
dialoguePopup.npc = self
|
||||
dialoguePopup.npc_name = "Josephine"
|
||||
|
||||
match dialogue_state:
|
||||
0:
|
||||
dialogue_state = 1
|
||||
dialoguePopup.dialogue = "Hello you! This is a test!"
|
||||
dialoguePopup.answera = "Understood."
|
||||
dialoguePopup.answerb = "Tell me more."
|
||||
dialoguePopup.open()
|
||||
1:
|
||||
match answer:
|
||||
"A":
|
||||
dialogue_state = 3
|
||||
dialoguePopup.dialogue = "Well. There's a lot to cover. Bye!"
|
||||
dialoguePopup.answera = "End"
|
||||
buttonb.visible = false
|
||||
dialoguePopup.open()
|
||||
"B":
|
||||
dialogue_state = 3
|
||||
dialoguePopup.dialogue = "I'd rather not..."
|
||||
dialoguePopup.answera = "End"
|
||||
buttonb.visible = false
|
||||
dialoguePopup.open()
|
||||
2:
|
||||
dialogue_state = 3
|
||||
dialoguePopup.answera = "End"
|
||||
buttonb.visible = false
|
||||
# dialoguePopup.open()
|
||||
3:
|
||||
dialogue_state = 0
|
||||
dialoguePopup.close()
|
3
godot/Dialogs/data/dialog1.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"001" : {"name":"Josephine", "expression": "neutral", "text":"You found something." },
|
||||
}
|
70
godot/DialoguePopup.gd
Normal file
@ -0,0 +1,70 @@
|
||||
extends Popup
|
||||
|
||||
onready var game_time = get_node("/root/GameTimer")
|
||||
|
||||
var npc_name setget name_set
|
||||
var dialogue setget dialogue_set
|
||||
var answers setget answers_set
|
||||
var npc
|
||||
var answera setget answera_set
|
||||
var answerb setget answerb_set
|
||||
|
||||
func name_set(new_value):
|
||||
npc_name = new_value
|
||||
$DialogBox/NameBox/NPCName.text = new_value
|
||||
|
||||
func dialogue_set(new_value):
|
||||
dialogue = new_value
|
||||
$DialogBox/Dialogue.text = new_value
|
||||
|
||||
func answers_set(new_value):
|
||||
answers = new_value
|
||||
$DialogBox/Answers.text = new_value
|
||||
|
||||
func answera_set(new_value):
|
||||
answera = new_value
|
||||
$DialogBox/ButtonA.text = new_value
|
||||
|
||||
func answerb_set(new_value):
|
||||
answerb = new_value
|
||||
$DialogBox/ButtonB.text = new_value
|
||||
|
||||
func open():
|
||||
set_process_input(true)
|
||||
game_time.paused = 1
|
||||
popup()
|
||||
$DialogBox/Tween.interpolate_property(
|
||||
$DialogBox/Dialogue, "percent_visible", 0, 1, 1,
|
||||
Tween.TRANS_LINEAR,Tween.EASE_IN_OUT
|
||||
)
|
||||
$DialogBox/Tween.start()
|
||||
|
||||
func close():
|
||||
set_process_input(false)
|
||||
hide()
|
||||
game_time.paused = 0
|
||||
|
||||
func _ready():
|
||||
set_process_input(false)
|
||||
|
||||
func _input(event):
|
||||
if event is InputEventKey:
|
||||
if event.scancode == KEY_A:
|
||||
# if _on_ButtonA_pressed():
|
||||
set_process_input(false)
|
||||
npc.talk("A")
|
||||
elif event.scancode == KEY_B:
|
||||
set_process_input(false)
|
||||
npc.talk("B")
|
||||
|
||||
func _on_ButtonA_pressed():
|
||||
var a = InputEventKey.new()
|
||||
a.scancode = KEY_A
|
||||
a.pressed = true # change to false to simulate a key release
|
||||
Input.parse_input_event(a)
|
||||
|
||||
func _on_ButtonB_pressed():
|
||||
var a = InputEventKey.new()
|
||||
a.scancode = KEY_B
|
||||
a.pressed = true # change to false to simulate a key release
|
||||
Input.parse_input_event(a)
|
3
godot/Docs/3d_idea.md
Normal file
@ -0,0 +1,3 @@
|
||||
Use BlockBench:
|
||||
|
||||
[Blockbench](https://www.blockbench.net)
|
42
godot/Docs/SchoolSim.md
Normal file
@ -0,0 +1,42 @@
|
||||
StudentTracker
|
||||
A value between 0 and 100 (percentage, 50 is neutral)
|
||||
|
||||
Comprises of
|
||||
- Achievement (50%)
|
||||
- Enjoyment (20%)
|
||||
- Wellbeing (30%)
|
||||
|
||||
StaffTracker
|
||||
|
||||
- Quality of Teaching (50 %)
|
||||
- Wellbeing (30 %)
|
||||
- Enjoyment (20 %)
|
||||
|
||||
ParentTracker
|
||||
|
||||
- Satisfaction
|
||||
|
||||
|
||||
Every value is 0 to 100
|
||||
|
||||
But then the average is as described above.
|
||||
|
||||
This influences:
|
||||
|
||||
- School Rating
|
||||
|
||||
It would be great if there were different buildings available depending on the type of school you wanted to create.
|
||||
|
||||
- Secondary School will be a 1.1 update. Or 1.2 or 1.3. Or 1.4. We'll start with just Primary.
|
||||
|
||||
So the type of Primary School you can build... needs to be unlocked through research, I think. The types are:
|
||||
|
||||
- International School (Pupil Fee difference. Classroom size difference.)
|
||||
- Local School
|
||||
- Natural School (low tech)
|
||||
|
||||
Someday/Maybe features:
|
||||
- Landscape editors
|
||||
- Slopes (like Transport Tycoon). I think it can be done, using simple logic statements. Things that can / can't be built on slopes. And would add interesting visual features to the school design. A hallway block placed on a slope would automatically become a staircase. And can't link to anything else. It stairways depending on the slope.
|
||||
- Multi-story. This just seems incredibly complex.
|
||||
- Moving agents. Similar to actual simulator-movement. Would be incredibly difficult to implement. I'd rather go for the random animation player and not bother with visible agents. Though assigning teachers to classrooms is a must.
|
31
godot/Finances.gd
Normal file
@ -0,0 +1,31 @@
|
||||
extends Node
|
||||
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
onready var game_time = get_node("/root/GameTimer")
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
# game_time.connect("heartbeat", self, "_on_heartbeat")
|
||||
game_time.connect("month_heartbeat", self, "_on_month_heartbeat")
|
||||
# game_time.connect("season_heartbeat", self, "_on_season_heartbeat")
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
#func _process(delta):
|
||||
# pass
|
||||
|
||||
|
||||
#func _on_heartbeat():
|
||||
# pass
|
||||
|
||||
|
||||
func _on_month_heartbeat():
|
||||
player_vars.funds += player_vars.pupils_income
|
||||
player_vars.funds -= player_vars.salary_cost
|
||||
player_vars.funds -= player_vars.operating_costs
|
||||
player_vars.salary_cost = 0
|
||||
player_vars.pupils_income = 0
|
||||
player_vars.operating_costs = 0
|
||||
|
||||
|
||||
#func _on_season_heartbeat():
|
||||
# pass
|
60
godot/GameTimer.gd
Normal file
@ -0,0 +1,60 @@
|
||||
extends Node
|
||||
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
|
||||
var game_timer = 0
|
||||
var wait_time = 6
|
||||
var paused = 0
|
||||
signal heartbeat
|
||||
signal week_heartbeat
|
||||
signal month_heartbeat
|
||||
signal season_heartbeat
|
||||
signal year_heartbeat
|
||||
|
||||
# Dialogues
|
||||
|
||||
signal josephine_dialog1
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
# warning-ignore:return_value_discarded
|
||||
connect("heartbeat", self, "on_heartbeat")
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
game_timer += delta
|
||||
if game_timer > wait_time:
|
||||
if paused == 0:
|
||||
game_timer = 0
|
||||
emit_signal("heartbeat")
|
||||
if paused == 1:
|
||||
game_timer = 0
|
||||
|
||||
func on_heartbeat():
|
||||
player_vars.day += 1
|
||||
player_vars.total_day += 1
|
||||
|
||||
if player_vars.day == 6:
|
||||
player_vars.day = 1
|
||||
player_vars.week += 1
|
||||
emit_signal("week_heartbeat")
|
||||
|
||||
if player_vars.week == 5:
|
||||
player_vars.week = 1
|
||||
player_vars.month += 1
|
||||
emit_signal("month_heartbeat")
|
||||
|
||||
if player_vars.month == 3:
|
||||
player_vars.month = 1
|
||||
player_vars.season += 1
|
||||
emit_signal("season_heartbeat")
|
||||
|
||||
if player_vars.season == 6:
|
||||
player_vars.season = 1
|
||||
player_vars.year += 1
|
||||
emit_signal("year_heartbeat")
|
||||
|
||||
# Unique Day Events
|
||||
|
||||
if player_vars.total_day == 2:
|
||||
emit_signal("josephine_dialog1")
|
10
godot/Main.gd
Normal file
@ -0,0 +1,10 @@
|
||||
extends Node
|
||||
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
#func _ready():
|
||||
# pass
|
||||
|
||||
#func _process(delta):
|
||||
# pass
|
1801
godot/Main.tscn
Normal file
41
godot/MainCamera.gd
Normal file
@ -0,0 +1,41 @@
|
||||
extends Camera2D
|
||||
|
||||
const MAX_ZOOM_LEVEL = 0.5
|
||||
const MIN_ZOOM_LEVEL = 2.5
|
||||
const ZOOM_INCREMENT = 0.5
|
||||
|
||||
signal moved()
|
||||
signal zoomed()
|
||||
|
||||
var _current_zoom_level = 1.5
|
||||
var _drag = false
|
||||
|
||||
func _input(event):
|
||||
if event.is_action_pressed("cam_drag"):
|
||||
_drag = true
|
||||
elif event.is_action_released("cam_drag"):
|
||||
_drag = false
|
||||
elif event.is_action("cam_zoom_in"):
|
||||
_update_zoom(-ZOOM_INCREMENT, get_local_mouse_position())
|
||||
elif event.is_action("cam_zoom_out"):
|
||||
_update_zoom(ZOOM_INCREMENT, get_local_mouse_position())
|
||||
elif event is InputEventMouseMotion && _drag:
|
||||
set_offset(get_offset() - event.relative*_current_zoom_level)
|
||||
emit_signal("moved")
|
||||
|
||||
func _update_zoom(incr, zoom_anchor):
|
||||
var old_zoom = _current_zoom_level
|
||||
_current_zoom_level += incr
|
||||
if _current_zoom_level < MAX_ZOOM_LEVEL:
|
||||
_current_zoom_level = MAX_ZOOM_LEVEL
|
||||
elif _current_zoom_level > MIN_ZOOM_LEVEL:
|
||||
_current_zoom_level = MIN_ZOOM_LEVEL
|
||||
if old_zoom == _current_zoom_level:
|
||||
return
|
||||
|
||||
var zoom_center = zoom_anchor - get_offset()
|
||||
var ratio = 1-_current_zoom_level/old_zoom
|
||||
set_offset(get_offset() + zoom_center*ratio)
|
||||
|
||||
set_zoom(Vector2(_current_zoom_level, _current_zoom_level))
|
||||
emit_signal("zoomed")
|
7
godot/NameGenerator.gd
Normal file
@ -0,0 +1,7 @@
|
||||
extends Node
|
||||
|
||||
const boy_first_name = ["Adam", "Ben", "Cody", "David", "Ephraim", "Fred", "Greg", "Harry", "Ian", "John", "Kenny", "Leo", "Manfred", "Nico", "Oliver", "Paddy", "Quentin", "Robert", "Stephen", "Theo", "Uman", "Victor", "Wanford", "Xavier", "Ystan", "Zebedeus"]
|
||||
|
||||
const girl_first_name = ["Mandy"]
|
||||
|
||||
const last_name = ["Johnson", "Abrahms", "Stevens"]
|
108
godot/PlayerVariables.gd
Normal file
@ -0,0 +1,108 @@
|
||||
extends Node
|
||||
|
||||
# Time Variables
|
||||
|
||||
var day : int
|
||||
var week : int
|
||||
var month : int
|
||||
var season : int
|
||||
var year : int
|
||||
var total_day : int
|
||||
|
||||
# Finance Variables
|
||||
|
||||
var funds : int
|
||||
var pupil_funding : float
|
||||
var pupils_income : float
|
||||
var operating_costs : float
|
||||
var land_lease : int
|
||||
var cteacher_salary : float
|
||||
var salary_cost : float
|
||||
|
||||
# Population Variables
|
||||
|
||||
var pupil_pop : int
|
||||
var max_pupils : int
|
||||
var pupil_baseid : int
|
||||
var teacher_baseid : int
|
||||
var total_pupils_in_game : int
|
||||
var total_pupils_in_school : int
|
||||
var teacher_pop : int
|
||||
var pupil_difference : int
|
||||
|
||||
# Rating Variables
|
||||
|
||||
var school_level : int
|
||||
var rating : float
|
||||
|
||||
# Building Variables
|
||||
|
||||
var classroom_count : int
|
||||
|
||||
# Game Management Variables
|
||||
|
||||
var loaded_game : bool
|
||||
|
||||
# Policy Variables
|
||||
|
||||
var pupils_per_classroom : int
|
||||
var pupil_fee : float
|
||||
|
||||
# Principal Variables
|
||||
|
||||
var principal_name : String
|
||||
|
||||
# School Variables
|
||||
|
||||
var school_name : String
|
||||
|
||||
# Building & Staffing Costs
|
||||
|
||||
var classroom_cost : int
|
||||
var cpdroom_cost : int
|
||||
var staffroom_cost : int
|
||||
var teacher_hire : int
|
||||
var classroom_operating : float
|
||||
var cpdroom_operating : float
|
||||
var staffroom_operating : float
|
||||
|
||||
# Unique Buildings
|
||||
|
||||
var has_staffroom : bool
|
||||
var has_cpdroom : bool
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
|
||||
# Setting things up for a new game (Easy difficulty)
|
||||
|
||||
if loaded_game == false:
|
||||
# Initial Timer Stuff
|
||||
loaded_game = true
|
||||
day = 1
|
||||
week = 1
|
||||
month = 1
|
||||
season = 1
|
||||
year = 1
|
||||
total_day = 1
|
||||
pupil_fee = 0
|
||||
pupil_funding = 200.00
|
||||
funds = 20000
|
||||
cteacher_salary = 2000.00
|
||||
pupils_per_classroom = 20
|
||||
rating = 1.0
|
||||
principal_name = "Joe Bloggs"
|
||||
school_level = 1
|
||||
pupil_baseid = 0
|
||||
teacher_pop = 0
|
||||
teacher_hire = 2000
|
||||
# Building Costs
|
||||
classroom_cost = 7500
|
||||
staffroom_cost = 5000
|
||||
cpdroom_cost = 12500
|
||||
# Operating Costs
|
||||
classroom_operating = 1600.00
|
||||
cpdroom_operating = 1500.00
|
||||
staffroom_operating = 1000.00
|
||||
has_cpdroom = false
|
||||
has_staffroom = false
|
BIN
godot/Principal/Face1.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
35
godot/Principal/Face1.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/Face1.png-b7a4b8ed2752953c1379d3eb5487f396.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Principal/Face1.png"
|
||||
dest_files=[ "res://.import/Face1.png-b7a4b8ed2752953c1379d3eb5487f396.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
BIN
godot/Principal/Face2.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
35
godot/Principal/Face2.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/Face2.png-e55ff0cefe3d5f37d9e69776ba18b206.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Principal/Face2.png"
|
||||
dest_files=[ "res://.import/Face2.png-e55ff0cefe3d5f37d9e69776ba18b206.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
BIN
godot/Principal/Face3.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
35
godot/Principal/Face3.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/Face3.png-23410e5ad82018561c3c2c91bb6b3750.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Principal/Face3.png"
|
||||
dest_files=[ "res://.import/Face3.png-23410e5ad82018561c3c2c91bb6b3750.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
45
godot/PrincipalMenu.gd
Normal file
@ -0,0 +1,45 @@
|
||||
extends Control
|
||||
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
|
||||
var principal_face1 = preload("res://Principal/Face1.png")
|
||||
var principal_face2 = preload("res://Principal/Face2.png")
|
||||
var principal_face3 = preload("res://Principal/Face3.png")
|
||||
|
||||
var principal_num = 1
|
||||
var principal_num_max = 4
|
||||
|
||||
onready var principal_face = get_node("PrincipalPhoto")
|
||||
|
||||
func switch_principal_face():
|
||||
if principal_num == 1:
|
||||
principal_face.set_texture(principal_face1)
|
||||
|
||||
if principal_num == 2:
|
||||
principal_face.set_texture(principal_face2)
|
||||
|
||||
if principal_num == 3:
|
||||
principal_face.set_texture(principal_face3)
|
||||
|
||||
func _on_ChangeFace_pressed():
|
||||
if principal_num < principal_num_max:
|
||||
principal_num += 1
|
||||
|
||||
if principal_num == principal_num_max:
|
||||
principal_num = 1
|
||||
|
||||
$PrincipalNumLabel.text = str(principal_num)
|
||||
switch_principal_face()
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
$PrincipalNumLabel.text = str(principal_num)
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
#func _process(delta):
|
||||
# pass
|
||||
|
||||
|
||||
func _on_SchoolNameOK_pressed():
|
||||
player_vars.school_name = $SchoolNameLine.text
|
146
godot/Pupil.gd
Normal file
@ -0,0 +1,146 @@
|
||||
extends Node
|
||||
|
||||
onready var game_time = get_node("/root/GameTimer")
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
onready var name_gen = get_node("/root/NameGenerator")
|
||||
onready var registers = get_node("/root/Registers")
|
||||
onready var pupil_manager = get_node("/root/Main/Pupils")
|
||||
|
||||
var pupil_neg_chance : int
|
||||
var pupil_id : int
|
||||
var pupil_first_name : String
|
||||
var pupil_last_name : String
|
||||
var pupil_full_name : String
|
||||
var pupil_gender : bool
|
||||
|
||||
var pupil_achievement : int
|
||||
var pupil_enjoyment : int
|
||||
var pupil_wellbeing : int
|
||||
|
||||
var pupil_report_card : int
|
||||
var pupil_year_group : int
|
||||
|
||||
var pupil_disorder : int
|
||||
var pupil_diagnosed : bool
|
||||
|
||||
var pupil_in_game : int # The day ticker for how long the pupil was in the school
|
||||
|
||||
# Money related variables
|
||||
|
||||
var pupil_income : float # Both dailies added together
|
||||
var pupil_daily_income : float # Daily income from Pupil Fee
|
||||
var pupil_state_income : float # Daily income from State Funding
|
||||
|
||||
# For the portrait generator
|
||||
|
||||
var pupil_face : int
|
||||
var pupil_eyes : int
|
||||
var pupil_hair : int
|
||||
var pupil_shirt : int
|
||||
|
||||
|
||||
func _ready():
|
||||
randomize()
|
||||
pupil_neg_chance = (randi() % 20) + 1
|
||||
game_time.connect("year_heartbeat", self, "pupil_on_year_heartbeat")
|
||||
game_time.connect("month_heartbeat", self, "pupil_on_month_heartbeat")
|
||||
game_time.connect("heartbeat", self, "pupil_on_heartbeat")
|
||||
player_vars.pupil_baseid += 1
|
||||
pupil_gender = (randi() & 1)
|
||||
randomize()
|
||||
pupil_last_name = name_gen.last_name[randi() % name_gen.last_name.size()]
|
||||
randomize()
|
||||
if pupil_gender == true:
|
||||
pupil_first_name = name_gen.boy_first_name[randi() % name_gen.boy_first_name.size()]
|
||||
if pupil_gender == false:
|
||||
pupil_first_name = name_gen.girl_first_name[randi() % name_gen.girl_first_name.size()]
|
||||
pupil_id = player_vars.pupil_baseid
|
||||
pupil_full_name = pupil_first_name + " " + pupil_last_name
|
||||
registers.PupilRegister.append(pupil_full_name)
|
||||
decide_year_group()
|
||||
# SEN Need
|
||||
randomize()
|
||||
if pupil_neg_chance == 7:
|
||||
pupil_disorder = randi() % 8
|
||||
|
||||
func decide_year_group():
|
||||
if pupil_manager.year8_pop < pupil_manager.year1_max_pop:
|
||||
pupil_year_group = 8
|
||||
pupil_manager.year8_pop += 1
|
||||
elif pupil_manager.year7_pop < pupil_manager.year2_max_pop:
|
||||
pupil_year_group = 7
|
||||
pupil_manager.year7_pop += 1
|
||||
elif pupil_manager.year6_pop < pupil_manager.year3_max_pop:
|
||||
pupil_year_group = 6
|
||||
pupil_manager.year6_pop += 1
|
||||
elif pupil_manager.year5_pop < pupil_manager.year4_max_pop:
|
||||
pupil_year_group = 5
|
||||
pupil_manager.year5_pop += 1
|
||||
elif pupil_manager.year4_pop < pupil_manager.year5_max_pop:
|
||||
pupil_year_group = 4
|
||||
pupil_manager.year4_pop += 1
|
||||
elif pupil_manager.year3_pop < pupil_manager.year6_max_pop:
|
||||
pupil_year_group = 3
|
||||
pupil_manager.year3_pop += 1
|
||||
elif pupil_manager.year2_pop < pupil_manager.year7_max_pop:
|
||||
pupil_year_group = 2
|
||||
pupil_manager.year2_pop += 1
|
||||
elif pupil_manager.year1_pop < pupil_manager.year8_max_pop:
|
||||
pupil_year_group = 1
|
||||
pupil_manager.year1_pop += 1
|
||||
# pupil_year_group = (randi() % 8) + 1
|
||||
|
||||
func pupil_on_too_many():
|
||||
if pupil_year_group == 1: pupil_manager.year1_pop -= 1
|
||||
if pupil_year_group == 2: pupil_manager.year1_pop -= 2
|
||||
if pupil_year_group == 3: pupil_manager.year1_pop -= 3
|
||||
if pupil_year_group == 4: pupil_manager.year1_pop -= 4
|
||||
if pupil_year_group == 5: pupil_manager.year1_pop -= 5
|
||||
if pupil_year_group == 6: pupil_manager.year1_pop -= 6
|
||||
if pupil_year_group == 7: pupil_manager.year1_pop -= 7
|
||||
if pupil_year_group == 8: pupil_manager.year1_pop -= 8
|
||||
registers.PupilRegister.remove(pupil_full_name)
|
||||
queue_free()
|
||||
|
||||
func pupil_on_year_heartbeat():
|
||||
pupil_year_group += 1
|
||||
if pupil_year_group == 2:
|
||||
pupil_manager.year1_pop -= 1
|
||||
pupil_manager.year2_pop += 1
|
||||
if pupil_year_group == 3:
|
||||
pupil_manager.year2_pop -= 1
|
||||
pupil_manager.year3_pop += 1
|
||||
if pupil_year_group == 4:
|
||||
pupil_manager.year3_pop -= 1
|
||||
pupil_manager.year4_pop += 1
|
||||
if pupil_year_group == 5:
|
||||
pupil_manager.year4_pop -= 1
|
||||
pupil_manager.year5_pop += 1
|
||||
if pupil_year_group == 6:
|
||||
pupil_manager.year5_pop -= 1
|
||||
pupil_manager.year6_pop += 1
|
||||
if pupil_year_group == 7:
|
||||
pupil_manager.year6_pop -= 1
|
||||
pupil_manager.year7_pop += 1
|
||||
if pupil_year_group == 8:
|
||||
pupil_manager.year7_pop -= 1
|
||||
pupil_manager.year8_pop += 1
|
||||
|
||||
if pupil_year_group == 9:
|
||||
pupil_manager.year8_pop -= 1
|
||||
queue_free()
|
||||
|
||||
func pupil_on_month_heartbeat():
|
||||
# Too many pupils
|
||||
|
||||
if player_vars.max_pupils < player_vars.pupil_pop:
|
||||
pupil_on_too_many()
|
||||
|
||||
func pupil_on_heartbeat():
|
||||
pupil_in_game += 1
|
||||
player_vars.pupils_income += (player_vars.pupil_fee / 20) + (player_vars.pupil_funding / 20)
|
||||
|
||||
# PupilTracker stuff
|
||||
pupil_manager.pa_pool += 1
|
||||
pupil_manager.pe_pool += 1
|
||||
pupil_manager.pw_pool += 1
|
6
godot/Pupil.tscn
Normal file
@ -0,0 +1,6 @@
|
||||
[gd_scene load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://Pupil.gd" type="Script" id=1]
|
||||
|
||||
[node name="Pupil" type="Node2D"]
|
||||
script = ExtResource( 1 )
|
102
godot/Pupils.gd
Normal file
@ -0,0 +1,102 @@
|
||||
extends Node
|
||||
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
onready var game_time = get_node("/root/GameTimer")
|
||||
|
||||
var pupil_agent = preload("res://Pupil.tscn")
|
||||
|
||||
var pupils_per_heartbeat : int
|
||||
|
||||
var pupil_tracker_achievement : int
|
||||
var pa_pool : int
|
||||
var pupil_tracker_enjoyment : int
|
||||
var pe_pool : int
|
||||
var pupil_tracker_wellbeing : int
|
||||
var pw_pool : int
|
||||
var pupil_tracker_total : int
|
||||
|
||||
var year1_max_pop : float
|
||||
var year2_max_pop : float
|
||||
var year3_max_pop : float
|
||||
var year4_max_pop : float
|
||||
var year5_max_pop : float
|
||||
var year6_max_pop : float
|
||||
var year7_max_pop : float
|
||||
var year8_max_pop : float
|
||||
var year1_pop : int
|
||||
var year2_pop : int
|
||||
var year3_pop : int
|
||||
var year4_pop : int
|
||||
var year5_pop : int
|
||||
var year6_pop : int
|
||||
var year7_pop : int
|
||||
var year8_pop : int
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
game_time.connect("heartbeat", self, "on_pupils_heartbeat")
|
||||
pupil_tracker_achievement = 50
|
||||
pupil_tracker_enjoyment = 50
|
||||
pupil_tracker_wellbeing = 50
|
||||
pupil_tracker_total = 50
|
||||
|
||||
func on_pupils_heartbeat():
|
||||
|
||||
player_vars.pupil_pop = get_child_count()
|
||||
|
||||
# Hieronder. Dit moet waarschijnlijk sequentially verhuizen om geen leerlingen onnodig de school uit te schoppen.
|
||||
|
||||
var ct_multiplier = player_vars.classroom_count - player_vars.teacher_pop
|
||||
|
||||
player_vars.max_pupils = (player_vars.classroom_count * player_vars.pupils_per_classroom)
|
||||
|
||||
if player_vars.classroom_count > player_vars.teacher_pop:
|
||||
player_vars.max_pupils -= ct_multiplier * player_vars.pupils_per_classroom
|
||||
|
||||
pupil_tracker()
|
||||
|
||||
year1_max_pop = player_vars.max_pupils * 0.125
|
||||
year2_max_pop = player_vars.max_pupils * 0.125
|
||||
year3_max_pop = player_vars.max_pupils * 0.125
|
||||
year4_max_pop = player_vars.max_pupils * 0.125
|
||||
year5_max_pop = player_vars.max_pupils * 0.125
|
||||
year6_max_pop = player_vars.max_pupils * 0.125
|
||||
year7_max_pop = player_vars.max_pupils * 0.125
|
||||
year8_max_pop = player_vars.max_pupils * 0.125
|
||||
|
||||
pupil_fill_spaces()
|
||||
|
||||
# Adding pupils when there is capacity - random number per day
|
||||
func pupil_fill_spaces():
|
||||
if (player_vars.max_pupils - player_vars.pupil_pop) > 6:
|
||||
randomize()
|
||||
pupils_per_heartbeat = randi() % 5
|
||||
while pupils_per_heartbeat > 0:
|
||||
add_pupil()
|
||||
pupils_per_heartbeat -= 1
|
||||
elif (player_vars.max_pupils - player_vars.pupil_pop) <= 6:
|
||||
player_vars.pupil_difference = player_vars.max_pupils - player_vars.pupil_pop
|
||||
pupils_per_heartbeat = player_vars.pupil_difference
|
||||
while pupils_per_heartbeat > 0:
|
||||
add_pupil()
|
||||
pupils_per_heartbeat -= 1
|
||||
|
||||
func pupil_tracker():
|
||||
if pa_pool > 0 && pupil_tracker_achievement < 100:
|
||||
pupil_tracker_achievement += (pa_pool / player_vars.pupil_pop)
|
||||
if pe_pool > 0 && pupil_tracker_enjoyment < 100:
|
||||
pupil_tracker_enjoyment += (pe_pool / player_vars.pupil_pop)
|
||||
if pw_pool > 0 && pupil_tracker_wellbeing < 100:
|
||||
pupil_tracker_wellbeing += (pw_pool / player_vars.pupil_pop)
|
||||
pa_pool = 0
|
||||
pw_pool = 0
|
||||
pe_pool = 0
|
||||
pupil_tracker_total = int(float(pupil_tracker_achievement * 0.5 + pupil_tracker_enjoyment * 0.2 + pupil_tracker_wellbeing * 0.3))
|
||||
|
||||
func add_pupil():
|
||||
var pupil = pupil_agent.instance()
|
||||
add_child(pupil)
|
||||
player_vars.pupil_pop = get_child_count()
|
||||
|
||||
func yeargroup_manager():
|
||||
pass
|
2
godot/README.md
Normal file
@ -0,0 +1,2 @@
|
||||
# SchoolSim
|
||||
|
4
godot/Registers.gd
Normal file
@ -0,0 +1,4 @@
|
||||
extends Node
|
||||
|
||||
var PupilRegister : Array = []
|
||||
var TeacherRegister : Array = []
|
79
godot/Resources/Grasses.tres
Normal file
@ -0,0 +1,79 @@
|
||||
[gd_resource type="TileSet" load_steps=6 format=2]
|
||||
|
||||
[ext_resource path="res://Assets/grass.png" type="Texture" id=1]
|
||||
[ext_resource path="res://Assets/road.png" type="Texture" id=2]
|
||||
[ext_resource path="res://Assets/tree1.png" type="Texture" id=3]
|
||||
[ext_resource path="res://Assets/road2.png" type="Texture" id=4]
|
||||
[ext_resource path="res://Assets/road_crossing.png" type="Texture" id=5]
|
||||
|
||||
[resource]
|
||||
0/name = "grass"
|
||||
0/texture = ExtResource( 1 )
|
||||
0/tex_offset = Vector2( 0, 0 )
|
||||
0/modulate = Color( 1, 1, 1, 1 )
|
||||
0/region = Rect2( 0, 0, 130, 67 )
|
||||
0/tile_mode = 0
|
||||
0/occluder_offset = Vector2( 65, 33.5 )
|
||||
0/navigation_offset = Vector2( 65, 33.5 )
|
||||
0/shape_offset = Vector2( 0, 0 )
|
||||
0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
0/shape_one_way = false
|
||||
0/shape_one_way_margin = 0.0
|
||||
0/shapes = [ ]
|
||||
0/z_index = 0
|
||||
1/name = "road.png 1"
|
||||
1/texture = ExtResource( 2 )
|
||||
1/tex_offset = Vector2( 0, 0 )
|
||||
1/modulate = Color( 1, 1, 1, 1 )
|
||||
1/region = Rect2( 0, 1, 129, 72 )
|
||||
1/tile_mode = 0
|
||||
1/occluder_offset = Vector2( 0, 0 )
|
||||
1/navigation_offset = Vector2( 0, 0 )
|
||||
1/shape_offset = Vector2( 0, 0 )
|
||||
1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
1/shape_one_way = false
|
||||
1/shape_one_way_margin = 0.0
|
||||
1/shapes = [ ]
|
||||
1/z_index = 0
|
||||
2/name = "tree1.png 2"
|
||||
2/texture = ExtResource( 3 )
|
||||
2/tex_offset = Vector2( 0, 0 )
|
||||
2/modulate = Color( 1, 1, 1, 1 )
|
||||
2/region = Rect2( 32, 0, 69, 87 )
|
||||
2/tile_mode = 0
|
||||
2/occluder_offset = Vector2( 0, 0 )
|
||||
2/navigation_offset = Vector2( 0, 0 )
|
||||
2/shape_offset = Vector2( 0, 0 )
|
||||
2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
2/shape_one_way = false
|
||||
2/shape_one_way_margin = 0.0
|
||||
2/shapes = [ ]
|
||||
2/z_index = 0
|
||||
3/name = "road2.png 3"
|
||||
3/texture = ExtResource( 4 )
|
||||
3/tex_offset = Vector2( 0, 0 )
|
||||
3/modulate = Color( 1, 1, 1, 1 )
|
||||
3/region = Rect2( 0, 0, 129, 73 )
|
||||
3/tile_mode = 0
|
||||
3/occluder_offset = Vector2( 0, 0 )
|
||||
3/navigation_offset = Vector2( 0, 0 )
|
||||
3/shape_offset = Vector2( 0, 0 )
|
||||
3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
3/shape_one_way = false
|
||||
3/shape_one_way_margin = 0.0
|
||||
3/shapes = [ ]
|
||||
3/z_index = 0
|
||||
4/name = "road_crossing.png 4"
|
||||
4/texture = ExtResource( 5 )
|
||||
4/tex_offset = Vector2( 0, 0 )
|
||||
4/modulate = Color( 1, 1, 1, 1 )
|
||||
4/region = Rect2( 0, 0, 129, 73 )
|
||||
4/tile_mode = 0
|
||||
4/occluder_offset = Vector2( 0, 0 )
|
||||
4/navigation_offset = Vector2( 0, 0 )
|
||||
4/shape_offset = Vector2( 0, 0 )
|
||||
4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
4/shape_one_way = false
|
||||
4/shape_one_way_margin = 0.0
|
||||
4/shapes = [ ]
|
||||
4/z_index = 0
|
19
godot/Rooms/CPDRoom.gd
Normal file
@ -0,0 +1,19 @@
|
||||
extends Node2D
|
||||
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
onready var game_time = get_node("/root/GameTimer")
|
||||
|
||||
# Classroom variables
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
# player_vars.max_pupils += player_vars.pupils_per_classroom
|
||||
game_time.connect("heartbeat", self, "on_cpdroom_heartbeat")
|
||||
game_time.connect("season_heartbeat", self, "on_cpdroom_season_heartbeat")
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func on_cpdroom_heartbeat():
|
||||
player_vars.operating_costs += (player_vars.cpdroom_operating / 20)
|
||||
|
||||
func on_cpdroom_season_heartbeat():
|
||||
pass
|
11
godot/Rooms/CPDRoom.tscn
Normal file
@ -0,0 +1,11 @@
|
||||
[gd_scene load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://Assets/classroom_empty.png" type="Texture" id=1]
|
||||
[ext_resource path="res://Rooms/CPDRoom.gd" type="Script" id=2]
|
||||
|
||||
[node name="CPDRoom" type="Node2D"]
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="cpdroom_empty" type="Sprite" parent="."]
|
||||
position = Vector2( 152.713, 124.123 )
|
||||
texture = ExtResource( 1 )
|
3
godot/Rooms/CTeacher.tscn
Normal file
@ -0,0 +1,3 @@
|
||||
[gd_scene format=2]
|
||||
|
||||
[node name="CTeacher" type="Node2D"]
|
19
godot/Rooms/Classroom.gd
Normal file
@ -0,0 +1,19 @@
|
||||
extends Node2D
|
||||
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
onready var game_time = get_node("/root/GameTimer")
|
||||
|
||||
# Classroom variables
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
# player_vars.max_pupils += player_vars.pupils_per_classroom
|
||||
game_time.connect("heartbeat", self, "on_classroom_heartbeat")
|
||||
game_time.connect("season_heartbeat", self, "on_classroom_season_heartbeat")
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func on_classroom_heartbeat():
|
||||
player_vars.operating_costs += (player_vars.classroom_operating / 20)
|
||||
|
||||
func on_classroom_season_heartbeat():
|
||||
pass
|
11
godot/Rooms/Classroom.tscn
Normal file
@ -0,0 +1,11 @@
|
||||
[gd_scene load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://Assets/classroom_empty.png" type="Texture" id=1]
|
||||
[ext_resource path="res://Rooms/Classroom.gd" type="Script" id=2]
|
||||
|
||||
[node name="Classroom" type="Node2D"]
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="classroom_empty" type="Sprite" parent="."]
|
||||
position = Vector2( 152.713, 124.123 )
|
||||
texture = ExtResource( 1 )
|
19
godot/Rooms/StaffRoom.gd
Normal file
@ -0,0 +1,19 @@
|
||||
extends Node2D
|
||||
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
onready var game_time = get_node("/root/GameTimer")
|
||||
|
||||
# Classroom variables
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
# player_vars.max_pupils += player_vars.pupils_per_classroom
|
||||
game_time.connect("heartbeat", self, "on_staffroom_heartbeat")
|
||||
game_time.connect("season_heartbeat", self, "on_staffroom_season_heartbeat")
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func on_staffroom_heartbeat():
|
||||
player_vars.operating_costs += (player_vars.staffroom_operating / 20)
|
||||
|
||||
func on_staffroom_season_heartbeat():
|
||||
pass
|
11
godot/Rooms/StaffRoom.tscn
Normal file
@ -0,0 +1,11 @@
|
||||
[gd_scene load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://Assets/classroom_empty.png" type="Texture" id=1]
|
||||
[ext_resource path="res://Rooms/Classroom.gd" type="Script" id=2]
|
||||
|
||||
[node name="Staffroom" type="Node2D"]
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="staffroom_empty" type="Sprite" parent="."]
|
||||
position = Vector2( 152.713, 124.123 )
|
||||
texture = ExtResource( 1 )
|
196
godot/UserInterface.gd
Normal file
@ -0,0 +1,196 @@
|
||||
extends CanvasLayer
|
||||
|
||||
onready var player_vars = get_node("/root/PlayerVariables")
|
||||
onready var game_time = get_node("/root/GameTimer")
|
||||
onready var finances = get_node("/root/Finances")
|
||||
onready var registers = get_node("/root/Registers")
|
||||
onready var pupil_manager = get_node("/root/Main/Pupils")
|
||||
onready var staff_manager = get_node("/root/Main/ClassTeachers")
|
||||
|
||||
var estimated_funds : int
|
||||
|
||||
|
||||
func _ready():
|
||||
game_time.connect("heartbeat", self, "_on_heartbeat")
|
||||
update_ui_timers()
|
||||
$BuildMenu/ClassroomCost.text = str(player_vars.classroom_cost)
|
||||
|
||||
func disable_menus():
|
||||
$BudgetMenu.visible = false
|
||||
$PolicyMenu.visible = false
|
||||
$PrincipalMenu.visible = false
|
||||
$HRMenu.visible = false
|
||||
$DebugMenu.visible = false
|
||||
$BuildMenu.visible = false
|
||||
$InfoMenu.visible = false
|
||||
|
||||
func update_ui_timers():
|
||||
$MainMenu/DayNumber.text = str(player_vars.day)
|
||||
$MainMenu/WeekNumber.text = str(player_vars.week)
|
||||
$MainMenu/MonthNumber.text = str(player_vars.month)
|
||||
$MainMenu/YearNumber.text = str(player_vars.year)
|
||||
if player_vars.season == 1:
|
||||
$MainMenu/SeasonNumber.text = "Autumn"
|
||||
if player_vars.season == 2:
|
||||
$MainMenu/SeasonNumber.text = "Winter"
|
||||
if player_vars.season == 3:
|
||||
$MainMenu/SeasonNumber.text = "Spring"
|
||||
if player_vars.season == 4:
|
||||
$MainMenu/SeasonNumber.text = "Easter"
|
||||
if player_vars.season == 5:
|
||||
$MainMenu/SeasonNumber.text = "Summer"
|
||||
|
||||
|
||||
func update_funds():
|
||||
$MainMenu/FundsNumber.text = str(player_vars.funds)
|
||||
$MainMenu/RatingNumber.text = str(player_vars.rating)
|
||||
$MainMenu/PupilsNumber.text = str(player_vars.pupil_pop)
|
||||
$MainMenu/PupilsMax.text = str(player_vars.max_pupils)
|
||||
|
||||
func update_trackers():
|
||||
$DebugMenu/PupilAchievementNumber.text = str(pupil_manager.pupil_tracker_achievement)
|
||||
$DebugMenu/PupilEnjoymentNumber.text = str(pupil_manager.pupil_tracker_enjoyment)
|
||||
$DebugMenu/PupilWellbeingNumber.text = str(pupil_manager.pupil_tracker_wellbeing)
|
||||
$DebugMenu/PupilTotalScoreNumber.text = str(pupil_manager.pupil_tracker_total)
|
||||
$DebugMenu/TeacherAchievementNumber.text = str(staff_manager.staff_tracker_achievement)
|
||||
$DebugMenu/TeacherEnjoymentNumber.text = str(staff_manager.staff_tracker_enjoyment)
|
||||
$DebugMenu/TeacherWellbeingNumber.text = str(staff_manager.staff_tracker_wellbeing)
|
||||
$DebugMenu/TeacherTotalScoreNumber.text = str(staff_manager.staff_tracker_total)
|
||||
$MainMenu/Bars/PupilBar.value = pupil_manager.pupil_tracker_total
|
||||
$MainMenu/Bars/TeacherBar.value = staff_manager.staff_tracker_total
|
||||
$InfoMenu/Year1Number.text = str(pupil_manager.year1_pop)
|
||||
$InfoMenu/Year2Number.text = str(pupil_manager.year2_pop)
|
||||
$InfoMenu/Year3Number.text = str(pupil_manager.year3_pop)
|
||||
$InfoMenu/Year4Number.text = str(pupil_manager.year4_pop)
|
||||
$InfoMenu/Year5Number.text = str(pupil_manager.year5_pop)
|
||||
$InfoMenu/Year6Number.text = str(pupil_manager.year6_pop)
|
||||
$InfoMenu/Year7Number.text = str(pupil_manager.year7_pop)
|
||||
$InfoMenu/Year8Number.text = str(pupil_manager.year8_pop)
|
||||
|
||||
func update_policy():
|
||||
$PolicyMenu/ClassSize.text = str(player_vars.pupils_per_classroom)
|
||||
|
||||
func _process(_delta):
|
||||
$DebugMenu/TestTimer.text = str(game_time.game_timer)
|
||||
update_funds()
|
||||
update_policy()
|
||||
update_trackers()
|
||||
|
||||
|
||||
func _on_heartbeat():
|
||||
update_ui_timers()
|
||||
$InfoMenu/PupilRegister.text = str(registers.PupilRegister)
|
||||
|
||||
func _on_SpeedOne_pressed():
|
||||
game_time.paused = 0
|
||||
game_time.wait_time = 6
|
||||
|
||||
func _on_SpeedTwo_pressed():
|
||||
game_time.paused = 0
|
||||
game_time.wait_time = 3
|
||||
|
||||
func _on_SpeedThree_pressed():
|
||||
game_time.paused = 0
|
||||
game_time.wait_time = 1
|
||||
|
||||
func _on_SpeedPause_pressed():
|
||||
game_time.paused = 1
|
||||
|
||||
func _on_DebugMenuClose_pressed():
|
||||
$DebugMenu.visible = false
|
||||
|
||||
func _on_DebugMenuOn_pressed():
|
||||
if player_vars.has_staffroom == true:
|
||||
$DebugMenu/StaffroomLabel.text = str("HasStaffroom")
|
||||
if player_vars.has_cpdroom == true:
|
||||
$DebugMenu/CPDRoomLabel.text = str("HasCPDRoom")
|
||||
disable_menus()
|
||||
$DebugMenu.visible = true
|
||||
|
||||
func _on_BuildMenuOn_pressed():
|
||||
disable_menus()
|
||||
$BuildMenu.visible = true
|
||||
|
||||
func _on_BuildMenuClose_pressed():
|
||||
$BuildMenu.visible = false
|
||||
|
||||
func _on_ClassroomButton_pressed():
|
||||
pass
|
||||
|
||||
|
||||
func _on_BudgetMenuClose_pressed():
|
||||
$BudgetMenu.visible = false
|
||||
# $PausedRect.visible = false
|
||||
# $MainMenu.visible = true
|
||||
# $MenuButtons.visible = true
|
||||
# game_time.paused = 0
|
||||
|
||||
|
||||
func _on_BudgetMenuOn_pressed():
|
||||
disable_menus()
|
||||
$BudgetMenu.visible = true
|
||||
# $PausedRect.visible = true
|
||||
# $MainMenu.visible = false
|
||||
# $MenuButtons.visible = false
|
||||
# game_time.paused = 1
|
||||
|
||||
|
||||
func _on_ClosePolicyMenu_pressed():
|
||||
$PolicyMenu.visible = false
|
||||
# game_time.paused = 0
|
||||
|
||||
|
||||
func _on_PolicyMenuOn_pressed():
|
||||
disable_menus()
|
||||
$PolicyMenu.visible = true
|
||||
# game_time.paused = 1
|
||||
|
||||
|
||||
func _on_PupilFeeDecrease_pressed():
|
||||
if player_vars.pupil_fee > 99:
|
||||
player_vars.pupil_fee -= 100
|
||||
|
||||
|
||||
func _on_PupilFeeIncrease_pressed():
|
||||
player_vars.pupil_fee += 100
|
||||
|
||||
|
||||
func _on_ClassSizeLower_pressed():
|
||||
player_vars.pupils_per_classroom -= 1
|
||||
|
||||
|
||||
func _on_ClassSizeRaise_pressed():
|
||||
player_vars.pupils_per_classroom += 1
|
||||
|
||||
|
||||
func _on_PrincipalMenuOn_pressed():
|
||||
disable_menus()
|
||||
$PrincipalMenu/NameLine.text = player_vars.principal_name
|
||||
$PrincipalMenu/SchoolNameLine.text = player_vars.school_name
|
||||
$PrincipalMenu.visible = true
|
||||
|
||||
|
||||
func _on_ClosePrincipalMenu_pressed():
|
||||
$PrincipalMenu.visible = false
|
||||
|
||||
|
||||
func _on_HRMenuButton_pressed():
|
||||
disable_menus()
|
||||
$HRMenu.visible = true
|
||||
|
||||
|
||||
func _on_CloseHRMenu_pressed():
|
||||
$HRMenu.visible = false
|
||||
|
||||
|
||||
func _on_NameLineOK_pressed():
|
||||
player_vars.principal_name = $PrincipalMenu/NameLine.text
|
||||
|
||||
|
||||
func _on_InfoButton_pressed():
|
||||
disable_menus()
|
||||
$InfoMenu.visible = true
|
||||
|
||||
|
||||
func _on_InfoMenuClose_pressed():
|
||||
$InfoMenu.visible = false
|
7
godot/default_env.tres
Normal file
@ -0,0 +1,7 @@
|
||||
[gd_resource type="Environment" load_steps=2 format=2]
|
||||
|
||||
[sub_resource type="ProceduralSky" id=1]
|
||||
|
||||
[resource]
|
||||
background_mode = 2
|
||||
background_sky = SubResource( 1 )
|
BIN
godot/icon.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
35
godot/icon.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://icon.png"
|
||||
dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
4
godot/makefile
Normal file
@ -0,0 +1,4 @@
|
||||
git:
|
||||
git add -A
|
||||
git commit -m "$m"
|
||||
git push
|
66
godot/project.godot
Normal file
@ -0,0 +1,66 @@
|
||||
; Engine configuration file.
|
||||
; It's best edited using the editor UI and not directly,
|
||||
; since the parameters that go here are not all obvious.
|
||||
;
|
||||
; Format:
|
||||
; [section] ; section goes between []
|
||||
; param=value ; assign values to parameters
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="School Simulator"
|
||||
run/main_scene="res://Main.tscn"
|
||||
config/icon="res://icon.png"
|
||||
|
||||
[autoload]
|
||||
|
||||
PlayerVariables="*res://PlayerVariables.gd"
|
||||
GameTimer="*res://GameTimer.gd"
|
||||
Finances="*res://Finances.gd"
|
||||
NameGenerator="*res://NameGenerator.gd"
|
||||
Registers="*res://Registers.gd"
|
||||
|
||||
[debug]
|
||||
|
||||
settings/fps/force_fps=30
|
||||
|
||||
[display]
|
||||
|
||||
window/size/width=1920
|
||||
window/size/height=1080
|
||||
window/dpi/allow_hidpi=true
|
||||
window/stretch/mode="2d"
|
||||
window/stretch/aspect="expand"
|
||||
|
||||
[input]
|
||||
|
||||
cam_drag={
|
||||
"deadzone": 0.5,
|
||||
"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":2,"pressed":false,"doubleclick":false,"script":null)
|
||||
]
|
||||
}
|
||||
cam_zoom_in={
|
||||
"deadzone": 0.5,
|
||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777349,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":4,"pressed":false,"doubleclick":false,"script":null)
|
||||
]
|
||||
}
|
||||
cam_zoom_out={
|
||||
"deadzone": 0.5,
|
||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777347,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":5,"pressed":false,"doubleclick":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[rendering]
|
||||
|
||||
2d/snapping/use_gpu_pixel_snap=true
|
||||
quality/filters/anisotropic_filter_level=1
|
||||
environment/default_environment="res://default_env.tres"
|
||||
quality/2d/use_pixel_snap=true
|