Compare commits
17 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d112e0c105 | |||
| e4cff6f2b9 | |||
| 9fe4485832 | |||
| 55afdc4b33 | |||
| 5562774716 | |||
| 8d8e108382 | |||
| 807c52a9cc | |||
| d6fd60d3e8 | |||
| 8758a3ddfc | |||
| ca3f2aba83 | |||
| a540ae1f83 | |||
| b918871be2 | |||
| da014a5341 | |||
| 8fd7d0131c | |||
| 81610a3cb0 | |||
| 8d50ac076f | |||
| f2b5be763d |
55 changed files with 1050 additions and 1527 deletions
13
Resources/Filaments/filament_abs.tres
Normal file
13
Resources/Filaments/filament_abs.tres
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
[gd_resource type="Resource" script_class="FilamentData" format=3 uid="uid://gmby6rjd07wi"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cim8peoxip2si" path="res://Resources/filament_data.gd" id="1_uvxfr"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("1_uvxfr")
|
||||||
|
material = "ABS - Small"
|
||||||
|
reward_multiplier = 1.0
|
||||||
|
xp_multiplier = 1.0
|
||||||
|
amount = 200.0
|
||||||
|
price = 4.18
|
||||||
|
description = "ABS filament for industrial applications"
|
||||||
|
metadata/_custom_type_script = "uid://cim8peoxip2si"
|
||||||
14
Resources/Filaments/filament_asa-cf.tres
Normal file
14
Resources/Filaments/filament_asa-cf.tres
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
[gd_resource type="Resource" script_class="FilamentData" format=3 uid="uid://gm0cqq0ggri"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cim8peoxip2si" path="res://Resources/filament_data.gd" id="1_ws0fq"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("1_ws0fq")
|
||||||
|
material = "ASA-CF - Small"
|
||||||
|
reward_multiplier = 1.0
|
||||||
|
xp_multiplier = 1.0
|
||||||
|
amount = 200.0
|
||||||
|
price = 7.74
|
||||||
|
description = "Carbon fibre-reinforced ASA to withstand extreme performance"
|
||||||
|
level_req = 3
|
||||||
|
metadata/_custom_type_script = "uid://cim8peoxip2si"
|
||||||
13
Resources/Filaments/filament_asa.tres
Normal file
13
Resources/Filaments/filament_asa.tres
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
[gd_resource type="Resource" script_class="FilamentData" format=3 uid="uid://cwtaryim1yjnu"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cim8peoxip2si" path="res://Resources/filament_data.gd" id="1_02q3j"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("1_02q3j")
|
||||||
|
material = "ASA - Small"
|
||||||
|
reward_multiplier = 1.0
|
||||||
|
xp_multiplier = 1.0
|
||||||
|
amount = 200.0
|
||||||
|
price = 5.3
|
||||||
|
description = "Weather and UV resistant ASA filament"
|
||||||
|
metadata/_custom_type_script = "uid://cim8peoxip2si"
|
||||||
14
Resources/Filaments/filament_petg.tres
Normal file
14
Resources/Filaments/filament_petg.tres
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
[gd_resource type="Resource" script_class="FilamentData" format=3 uid="uid://vuby4u37cu42"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cim8peoxip2si" path="res://Resources/filament_data.gd" id="1_w3dqi"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("1_w3dqi")
|
||||||
|
material = "PETG - Small"
|
||||||
|
reward_multiplier = 1.0
|
||||||
|
xp_multiplier = 1.0
|
||||||
|
amount = 200.0
|
||||||
|
price = 5.23
|
||||||
|
description = "PETG filament for robust & precise prints"
|
||||||
|
level_req = 2
|
||||||
|
metadata/_custom_type_script = "uid://cim8peoxip2si"
|
||||||
13
Resources/Filaments/filament_pla.tres
Normal file
13
Resources/Filaments/filament_pla.tres
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
[gd_resource type="Resource" script_class="FilamentData" format=3 uid="uid://dvu3hbx3tn0nx"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cim8peoxip2si" path="res://Resources/filament_data.gd" id="1_7duty"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("1_7duty")
|
||||||
|
material = "PLA"
|
||||||
|
reward_multiplier = 1.0
|
||||||
|
xp_multiplier = 1.0
|
||||||
|
amount = 200.0
|
||||||
|
price = 4.18
|
||||||
|
description = "Filament with reduced plastic content"
|
||||||
|
metadata/_custom_type_script = "uid://cim8peoxip2si"
|
||||||
19
Resources/Jobs/all_jobs.tres
Normal file
19
Resources/Jobs/all_jobs.tres
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[gd_resource type="Resource" script_class="JobList" format=3 uid="uid://buvi8m3atoavu"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://bp1c3unpg2ndn" path="res://Resources/job_data.gd" id="1_nybwa"]
|
||||||
|
[ext_resource type="Resource" uid="uid://0gyhxwe47tby" path="res://Resources/Jobs/job_action_figure.tres" id="2_7dwwk"]
|
||||||
|
[ext_resource type="Script" uid="uid://dmfdc1mnd4dy5" path="res://Resources/job_list.gd" id="2_8lx8r"]
|
||||||
|
[ext_resource type="Resource" uid="uid://cuff7udubpjgk" path="res://Resources/Jobs/job_ad_keychain.tres" id="3_s4yce"]
|
||||||
|
[ext_resource type="Resource" uid="uid://ceck7mpy7qnae" path="res://Resources/Jobs/job_cafe_cookie_stamp.tres" id="4_eriey"]
|
||||||
|
[ext_resource type="Resource" uid="uid://5ag48elqtpg7" path="res://Resources/Jobs/job_college_electronic_box.tres" id="5_gkqel"]
|
||||||
|
[ext_resource type="Resource" uid="uid://dg2ffm3feksrm" path="res://Resources/Jobs/job_cup_holder_seat.tres" id="6_d2ue3"]
|
||||||
|
[ext_resource type="Resource" uid="uid://c3l3haowyo1yc" path="res://Resources/Jobs/job_drone_chassis.tres" id="7_nayax"]
|
||||||
|
[ext_resource type="Resource" uid="uid://0wacf77o0vq1" path="res://Resources/Jobs/job_headphone_stand_tableside.tres" id="8_1p1kw"]
|
||||||
|
[ext_resource type="Resource" uid="uid://dt1hgcy140fpt" path="res://Resources/Jobs/job_modern_cabinet_handle.tres" id="9_cfo7u"]
|
||||||
|
[ext_resource type="Resource" uid="uid://b0akomrm6gavw" path="res://Resources/Jobs/job_rc_car_control_arm.tres" id="10_awcc0"]
|
||||||
|
[ext_resource type="Resource" uid="uid://dy48odm1apexk" path="res://Resources/Jobs/job_zipper_pull_tab.tres" id="11_mr4tb"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("2_8lx8r")
|
||||||
|
jobs = Array[ExtResource("1_nybwa")]([ExtResource("2_7dwwk"), ExtResource("3_s4yce"), ExtResource("4_eriey"), ExtResource("5_gkqel"), ExtResource("6_d2ue3"), ExtResource("7_nayax"), ExtResource("8_1p1kw"), ExtResource("9_cfo7u"), ExtResource("10_awcc0"), ExtResource("11_mr4tb")])
|
||||||
|
metadata/_custom_type_script = "uid://dmfdc1mnd4dy5"
|
||||||
|
|
@ -8,5 +8,6 @@ printer_manufacturer = "Bambulab"
|
||||||
printer_type = "A1 Mini"
|
printer_type = "A1 Mini"
|
||||||
printer_speed = 4.0
|
printer_speed = 4.0
|
||||||
printer_quality = 3.5
|
printer_quality = 3.5
|
||||||
|
printer_level_req = 5
|
||||||
printer_price = 350.0
|
printer_price = 350.0
|
||||||
metadata/_custom_type_script = "uid://bed8wdnwod4wu"
|
metadata/_custom_type_script = "uid://bed8wdnwod4wu"
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
script = ExtResource("1_nuksd")
|
script = ExtResource("1_nuksd")
|
||||||
printer_manufacturer = "Creality"
|
printer_manufacturer = "Creality"
|
||||||
printer_type = "Ender-3 V3 SE"
|
printer_type = "Ender-3 V3 SE"
|
||||||
printer_speed = 2.0
|
printer_speed = 1.0
|
||||||
printer_quality = 2.0
|
printer_quality = 1.0
|
||||||
printer_price = 200.0
|
printer_price = 200.0
|
||||||
metadata/_custom_type_script = "uid://bed8wdnwod4wu"
|
metadata/_custom_type_script = "uid://bed8wdnwod4wu"
|
||||||
|
|
|
||||||
|
|
@ -8,5 +8,6 @@ printer_manufacturer = "Prusa Research"
|
||||||
printer_type = "MK4S"
|
printer_type = "MK4S"
|
||||||
printer_speed = 4.5
|
printer_speed = 4.5
|
||||||
printer_quality = 5.0
|
printer_quality = 5.0
|
||||||
|
printer_level_req = 10
|
||||||
printer_price = 850.0
|
printer_price = 850.0
|
||||||
metadata/_custom_type_script = "uid://bed8wdnwod4wu"
|
metadata/_custom_type_script = "uid://bed8wdnwod4wu"
|
||||||
|
|
|
||||||
10
Resources/filament_data.gd
Normal file
10
Resources/filament_data.gd
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
class_name FilamentData
|
||||||
|
extends Resource
|
||||||
|
|
||||||
|
@export var material: String
|
||||||
|
@export var reward_multiplier: float
|
||||||
|
@export var xp_multiplier: float
|
||||||
|
@export var amount: float
|
||||||
|
@export var price: float
|
||||||
|
@export var description: String = ""
|
||||||
|
@export var level_req: int = 1
|
||||||
1
Resources/filament_data.gd.uid
Normal file
1
Resources/filament_data.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://cim8peoxip2si
|
||||||
4
Resources/job_list.gd
Normal file
4
Resources/job_list.gd
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
class_name JobList
|
||||||
|
extends Resource
|
||||||
|
|
||||||
|
@export var jobs: Array[JobData] = []
|
||||||
1
Resources/job_list.gd.uid
Normal file
1
Resources/job_list.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dmfdc1mnd4dy5
|
||||||
|
|
@ -5,4 +5,5 @@ extends Resource
|
||||||
@export var printer_type: String
|
@export var printer_type: String
|
||||||
@export_range(1, 5) var printer_speed: float
|
@export_range(1, 5) var printer_speed: float
|
||||||
@export_range(1, 5) var printer_quality: float
|
@export_range(1, 5) var printer_quality: float
|
||||||
|
@export var printer_level_req: int = 1
|
||||||
@export var printer_price: float
|
@export var printer_price: float
|
||||||
|
|
|
||||||
15
Scenes/Filament/filament.gd
Normal file
15
Scenes/Filament/filament.gd
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
signal amount_changed(new_amount)
|
||||||
|
|
||||||
|
var filament_data: FilamentData
|
||||||
|
var amount: float:
|
||||||
|
set(value):
|
||||||
|
amount = value
|
||||||
|
amount_changed.emit(amount)
|
||||||
|
|
||||||
|
|
||||||
|
func initialize_filament(data: FilamentData) -> void:
|
||||||
|
filament_data = data
|
||||||
|
amount = filament_data.amount
|
||||||
|
print("Filament added: ", filament_data.material)
|
||||||
1
Scenes/Filament/filament.gd.uid
Normal file
1
Scenes/Filament/filament.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://saed3mn0c2cw
|
||||||
6
Scenes/Filament/filament.tscn
Normal file
6
Scenes/Filament/filament.tscn
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
[gd_scene format=3 uid="uid://ckjg1eynole7p"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://saed3mn0c2cw" path="res://Scenes/Filament/filament.gd" id="1_b0mke"]
|
||||||
|
|
||||||
|
[node name="Filament" type="Node" unique_id=274664749]
|
||||||
|
script = ExtResource("1_b0mke")
|
||||||
|
|
@ -6,43 +6,67 @@ signal job_interact
|
||||||
signal printer_bought(printer: Node)
|
signal printer_bought(printer: Node)
|
||||||
@warning_ignore("unused_signal")
|
@warning_ignore("unused_signal")
|
||||||
signal refresh_printer_dropdown
|
signal refresh_printer_dropdown
|
||||||
|
signal notification_requested(message: String, color: String)
|
||||||
|
|
||||||
# - Variables - Code managed
|
# - Variables - Code managed
|
||||||
var job_spawn_timer: Timer
|
var job_spawn_timer: Timer
|
||||||
|
var inventory: Node
|
||||||
var jobs_array: Array[JobData]
|
var jobs_array: Array[JobData]
|
||||||
var current_job_count: int = 0
|
var current_job_count: int = 0
|
||||||
|
var filaments_array: Array[Node]
|
||||||
|
|
||||||
|
# - Text colors
|
||||||
|
var hex_white: String = '#ffffff'
|
||||||
|
var hex_green: String = '#4ade80'
|
||||||
|
var hex_blue: String = '#60a5fa'
|
||||||
|
var hex_red: String = '#f87171'
|
||||||
|
|
||||||
# - Scenes
|
# - Scenes
|
||||||
const JOB_CARD = preload("uid://dvfcie8hqcb0")
|
const JOB_CARD = preload("uid://dvfcie8hqcb0")
|
||||||
const PRINTER = preload("uid://33ctlyrpibs3")
|
const PRINTER = preload("uid://33ctlyrpibs3")
|
||||||
|
const ALL_JOBS = preload("uid://buvi8m3atoavu")
|
||||||
|
const FILAMENT = preload("uid://ckjg1eynole7p")
|
||||||
|
|
||||||
|
|
||||||
# - Constants - Settings
|
# - Constants - Settings
|
||||||
# Jobs
|
# Jobs
|
||||||
const JOB_SPAWN_WAIT: float = 2.0
|
const JOB_SPAWN_WAIT: float = 2.0
|
||||||
var max_jobs: int = PlayerData.max_order_amount
|
var max_jobs: int = PlayerData.max_order_amount
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
load_all_jobs("res://Resources/Jobs/")
|
jobs_array = ALL_JOBS.jobs
|
||||||
|
|
||||||
# Create timer for job spawning
|
# Create timer for job spawning
|
||||||
job_spawn_timer = Timer.new()
|
job_spawn_timer = Timer.new()
|
||||||
|
inventory = Node.new()
|
||||||
add_child(job_spawn_timer)
|
add_child(job_spawn_timer)
|
||||||
|
add_child(inventory)
|
||||||
job_spawn_timer.wait_time = JOB_SPAWN_WAIT
|
job_spawn_timer.wait_time = JOB_SPAWN_WAIT
|
||||||
job_spawn_timer.one_shot = false
|
job_spawn_timer.one_shot = false
|
||||||
job_spawn_timer.timeout.connect(_on_job_spawn_timer_timeout)
|
job_spawn_timer.timeout.connect(_on_job_spawn_timer_timeout)
|
||||||
job_spawn_timer.start()
|
job_spawn_timer.start()
|
||||||
|
|
||||||
|
func display_msg(message: String, color: String) -> void:
|
||||||
|
notification_requested.emit(message,color)
|
||||||
|
|
||||||
|
#region Shop buy interactions
|
||||||
func _on_shop_printer_purchase_req(printer_data: PrinterData) -> void:
|
func _on_shop_printer_purchase_req(printer_data: PrinterData) -> void:
|
||||||
if PlayerData.try_purchase(printer_data.printer_price):
|
if PlayerData.try_purchase(printer_data.printer_price):
|
||||||
var new_printer = PRINTER.instantiate()
|
var new_printer = PRINTER.instantiate()
|
||||||
printer_bought.emit(new_printer)
|
printer_bought.emit(new_printer)
|
||||||
new_printer.initialize_printer(printer_data)
|
new_printer.initialize_printer(printer_data)
|
||||||
|
PlayerData.owned_printers += 1
|
||||||
|
|
||||||
|
func _on_shop_filament_purchase_req(filament_data: FilamentData) -> void:
|
||||||
|
if PlayerData.try_purchase(filament_data.price):
|
||||||
|
var new_filament = FILAMENT.instantiate()
|
||||||
|
inventory.add_child(new_filament)
|
||||||
|
new_filament.initialize_filament(filament_data)
|
||||||
|
#filaments_array.append(new_filament)
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Job generation
|
#region Job generation
|
||||||
func _on_job_spawn_timer_timeout() -> void:
|
func _on_job_spawn_timer_timeout() -> void:
|
||||||
#print("Spawn timer over")
|
|
||||||
#generate_job()
|
#generate_job()
|
||||||
draw_job()
|
draw_job()
|
||||||
|
|
||||||
|
|
@ -77,9 +101,6 @@ func generate_random_job() -> JobData:
|
||||||
new_job.job_difficulty = random_job.job_difficulty
|
new_job.job_difficulty = random_job.job_difficulty
|
||||||
new_job.job_amount = roundf(amount)
|
new_job.job_amount = roundf(amount)
|
||||||
|
|
||||||
#print('Random amount: %.2f' % amount)
|
|
||||||
#print('Job amount: %.2f' % new_job.job_amount)
|
|
||||||
print('Generated new job: %s (%d € | %d xp | %d pcs)' % [new_job.job_name, new_job.job_reward, new_job.job_experience, new_job.job_amount])
|
|
||||||
return new_job
|
return new_job
|
||||||
|
|
||||||
func _on_job_accepted_pressed(accepted_job) -> void:
|
func _on_job_accepted_pressed(accepted_job) -> void:
|
||||||
|
|
@ -88,25 +109,3 @@ func _on_job_accepted_pressed(accepted_job) -> void:
|
||||||
accepted_job.queue_free()
|
accepted_job.queue_free()
|
||||||
job_interact.emit()
|
job_interact.emit()
|
||||||
#endregion
|
#endregion
|
||||||
#region Utility - Load job resources
|
|
||||||
func load_all_jobs(path: String) -> void:
|
|
||||||
var dir = DirAccess.open(path)
|
|
||||||
|
|
||||||
if dir:
|
|
||||||
dir.list_dir_begin()
|
|
||||||
var file_name = dir.get_next()
|
|
||||||
|
|
||||||
while file_name != "":
|
|
||||||
if not dir.current_is_dir() and file_name.get_extension() == "tres":
|
|
||||||
var full_path = path + file_name
|
|
||||||
var job_resource = load(full_path) as JobData
|
|
||||||
|
|
||||||
if job_resource:
|
|
||||||
jobs_array.append(job_resource)
|
|
||||||
#print(job_resource)
|
|
||||||
file_name = dir.get_next()
|
|
||||||
dir.list_dir_end()
|
|
||||||
#print(jobs_array)
|
|
||||||
else:
|
|
||||||
print("No files found on path")
|
|
||||||
#endregion
|
|
||||||
|
|
|
||||||
|
|
@ -5,22 +5,33 @@ var xp: float = 0:
|
||||||
xp = value
|
xp = value
|
||||||
xp_changed.emit(xp)
|
xp_changed.emit(xp)
|
||||||
|
|
||||||
var money: float = 500:
|
var money: float = 9999:
|
||||||
set(value):
|
set(value):
|
||||||
money = value
|
money = value
|
||||||
money_changed.emit(money)
|
money_changed.emit(money)
|
||||||
|
|
||||||
var level: int = 0:
|
var level: int = 1:
|
||||||
set(value):
|
set(value):
|
||||||
level = value
|
level = value
|
||||||
level_changed.emit(level)
|
level_changed.emit(level)
|
||||||
|
|
||||||
var max_order_amount: int = 10:
|
var max_order_amount: int = 3:
|
||||||
set(value):
|
set(value):
|
||||||
max_order_amount = value
|
max_order_amount = value
|
||||||
max_order_amount_changed.emit(max_order_amount)
|
max_order_amount_changed.emit(max_order_amount)
|
||||||
|
|
||||||
var sell_multiplier: float = 0.5
|
var owned_printers: int = 0:
|
||||||
|
set(value):
|
||||||
|
owned_printers = value
|
||||||
|
owned_printers_changed.emit(value)
|
||||||
|
|
||||||
|
var sell_multiplier: float = 0.5:
|
||||||
|
set(value):
|
||||||
|
sell_multiplier = value
|
||||||
|
|
||||||
|
var failure_chance: float = 0.6:
|
||||||
|
set(value):
|
||||||
|
failure_chance = value
|
||||||
|
|
||||||
var jobs: Array[JobData]
|
var jobs: Array[JobData]
|
||||||
|
|
||||||
|
|
@ -29,6 +40,7 @@ signal xp_changed(new_xp)
|
||||||
signal money_changed(new_money)
|
signal money_changed(new_money)
|
||||||
signal level_changed(new_level)
|
signal level_changed(new_level)
|
||||||
signal max_order_amount_changed(new_max_order_amount)
|
signal max_order_amount_changed(new_max_order_amount)
|
||||||
|
signal owned_printers_changed(new_amount)
|
||||||
|
|
||||||
# Signal - functions
|
# Signal - functions
|
||||||
signal give_experience(xp_amount)
|
signal give_experience(xp_amount)
|
||||||
|
|
@ -41,14 +53,23 @@ func _ready() -> void:
|
||||||
func _on_give_experience(amount: float) -> void:
|
func _on_give_experience(amount: float) -> void:
|
||||||
print('Gave: %.0f xp' % amount)
|
print('Gave: %.0f xp' % amount)
|
||||||
xp += amount
|
xp += amount
|
||||||
if xp >= 100:
|
|
||||||
while xp >= 100:
|
while xp >= xp_required_for_level(level):
|
||||||
|
xp -= xp_required_for_level(level)
|
||||||
level += 1
|
level += 1
|
||||||
xp -= 100
|
|
||||||
|
|
||||||
func _on_give_money(amount: float) -> void:
|
func _on_give_money(amount: float) -> void:
|
||||||
money += amount
|
money += amount
|
||||||
|
|
||||||
|
func xp_required_for_level(player_level: int) -> float:
|
||||||
|
if player_level == 1:
|
||||||
|
return 100.0
|
||||||
|
|
||||||
|
var base_xp = 100 * (player_level - 1)
|
||||||
|
var exponent_xp = pow(player_level - 1, 1.8) * 25
|
||||||
|
|
||||||
|
return float(base_xp + exponent_xp)
|
||||||
|
|
||||||
func try_purchase(amount) -> bool:
|
func try_purchase(amount) -> bool:
|
||||||
if amount <= money:
|
if amount <= money:
|
||||||
money -= amount
|
money -= amount
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,11 @@ var job_material: String
|
||||||
@onready var job_experience: Label = $MarginContainer/VBoxContainer/HBoxContainer3/PartExperience
|
@onready var job_experience: Label = $MarginContainer/VBoxContainer/HBoxContainer3/PartExperience
|
||||||
@onready var job_time_label: Label = $MarginContainer/VBoxContainer/HBoxContainer/TimeLabel
|
@onready var job_time_label: Label = $MarginContainer/VBoxContainer/HBoxContainer/TimeLabel
|
||||||
@onready var job_material_label: Label = $MarginContainer/VBoxContainer/HBoxContainer2/PartMaterial
|
@onready var job_material_label: Label = $MarginContainer/VBoxContainer/HBoxContainer2/PartMaterial
|
||||||
|
@onready var skip_job_button: Button = $MarginContainer/VBoxContainer/HBoxContainer/SkipJob
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
PlayerData.owned_printers_changed.connect(_on_owned_printers_changed)
|
||||||
|
_on_owned_printers_changed(PlayerData.owned_printers)
|
||||||
|
|
||||||
func initialize_job(data: JobData) -> void:
|
func initialize_job(data: JobData) -> void:
|
||||||
job_data = data
|
job_data = data
|
||||||
|
|
@ -37,6 +41,12 @@ func calculate_time() -> String:
|
||||||
else:
|
else:
|
||||||
return '%.2f s' % round_time
|
return '%.2f s' % round_time
|
||||||
|
|
||||||
|
func _on_owned_printers_changed(owned_printers: int) -> void:
|
||||||
|
if owned_printers == 0:
|
||||||
|
skip_job_button.disabled = true
|
||||||
|
return
|
||||||
|
skip_job_button.disabled = false
|
||||||
|
|
||||||
func _on_accept_job_pressed() -> void:
|
func _on_accept_job_pressed() -> void:
|
||||||
job_accepted.emit(self)
|
job_accepted.emit(self)
|
||||||
GameData.refresh_printer_dropdown.emit()
|
GameData.refresh_printer_dropdown.emit()
|
||||||
|
|
|
||||||
87
Scenes/Map/Map.tscn
Normal file
87
Scenes/Map/Map.tscn
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
[gd_scene format=3 uid="uid://xpks7daol1db"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cesw3a37hqn08" path="res://Scenes/Map/map.gd" id="1_iio4a"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://c6icyfxslhlmc" path="res://Scenes/Map/map_tile.tscn" id="2_lcs11"]
|
||||||
|
|
||||||
|
[sub_resource type="Environment" id="Environment_7g6h4"]
|
||||||
|
ambient_light_source = 2
|
||||||
|
ambient_light_color = Color(0.057391837, 0.057391845, 0.057391837, 1)
|
||||||
|
fog_enabled = true
|
||||||
|
fog_light_color = Color(0.7149284, 0.74206614, 0.7842839, 1)
|
||||||
|
fog_sky_affect = 0.0
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_v0tmn"]
|
||||||
|
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.5, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
|
||||||
|
point_count = 3
|
||||||
|
|
||||||
|
[sub_resource type="CurveTexture" id="CurveTexture_m2fa0"]
|
||||||
|
curve = SubResource("Curve_v0tmn")
|
||||||
|
|
||||||
|
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_6kfdn"]
|
||||||
|
emission_shape = 3
|
||||||
|
emission_box_extents = Vector3(10, 0.2, 10)
|
||||||
|
angle_min = 1.0728835e-05
|
||||||
|
angle_max = 360.00003
|
||||||
|
direction = Vector3(1, 0, 1)
|
||||||
|
initial_velocity_min = 0.049999997
|
||||||
|
initial_velocity_max = 0.19999999
|
||||||
|
gravity = Vector3(0, 0, 0)
|
||||||
|
scale_min = 2.0
|
||||||
|
scale_max = 4.0
|
||||||
|
alpha_curve = SubResource("CurveTexture_m2fa0")
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_yju8x"]
|
||||||
|
offsets = PackedFloat32Array(0.2, 0.8)
|
||||||
|
metadata/_snap_enabled = true
|
||||||
|
|
||||||
|
[sub_resource type="FastNoiseLite" id="FastNoiseLite_11lgl"]
|
||||||
|
|
||||||
|
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_lcs11"]
|
||||||
|
noise = SubResource("FastNoiseLite_11lgl")
|
||||||
|
color_ramp = SubResource("Gradient_yju8x")
|
||||||
|
|
||||||
|
[sub_resource type="ORMMaterial3D" id="ORMMaterial3D_11lgl"]
|
||||||
|
transparency = 1
|
||||||
|
vertex_color_use_as_albedo = true
|
||||||
|
albedo_color = Color(1, 1, 1, 0.11764706)
|
||||||
|
albedo_texture = SubResource("NoiseTexture2D_lcs11")
|
||||||
|
proximity_fade_enabled = true
|
||||||
|
|
||||||
|
[sub_resource type="SphereMesh" id="SphereMesh_lcs11"]
|
||||||
|
material = SubResource("ORMMaterial3D_11lgl")
|
||||||
|
radius = 2.0
|
||||||
|
height = 4.0
|
||||||
|
|
||||||
|
[node name="Map" type="Node3D" unique_id=1765565476]
|
||||||
|
script = ExtResource("1_iio4a")
|
||||||
|
tile_scene = ExtResource("2_lcs11")
|
||||||
|
|
||||||
|
[node name="Camera3D" type="Camera3D" parent="." unique_id=40432726]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 0.7071068, 0.7071068, 0, -0.7071068, 0.7071068, 0, 6, 5)
|
||||||
|
|
||||||
|
[node name="MapTile" parent="." unique_id=441860049 instance_placeholder="res://Scenes/Map/map_tile.tscn"]
|
||||||
|
|
||||||
|
[node name="Control" type="CanvasLayer" parent="." unique_id=1301244712]
|
||||||
|
|
||||||
|
[node name="Button" type="Button" parent="Control" unique_id=1524228928]
|
||||||
|
anchors_preset = 5
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -73.5
|
||||||
|
offset_top = 46.0
|
||||||
|
offset_right = 72.5
|
||||||
|
offset_bottom = 79.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
text = "Generate new tile"
|
||||||
|
|
||||||
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1838982295]
|
||||||
|
environment = SubResource("Environment_7g6h4")
|
||||||
|
|
||||||
|
[node name="EnvFog" type="GPUParticles3D" parent="." unique_id=1381169011]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||||
|
amount = 50
|
||||||
|
lifetime = 10.0
|
||||||
|
process_material = SubResource("ParticleProcessMaterial_6kfdn")
|
||||||
|
draw_pass_1 = SubResource("SphereMesh_lcs11")
|
||||||
|
|
||||||
|
[connection signal="pressed" from="Control/Button" to="." method="_on_button_pressed"]
|
||||||
78
Scenes/Map/map.gd
Normal file
78
Scenes/Map/map.gd
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
extends Node3D
|
||||||
|
|
||||||
|
@export var tile_scene: PackedScene
|
||||||
|
@export var tile_size: float = 2.0
|
||||||
|
@export var tile_separation: float = 0.2
|
||||||
|
|
||||||
|
var generated_tiles: Dictionary = {}
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
spawn_tile(Vector2i(0, 0))
|
||||||
|
|
||||||
|
func spawn_tile(grid_pos: Vector2i) -> void:
|
||||||
|
if generated_tiles.has(grid_pos):
|
||||||
|
return
|
||||||
|
|
||||||
|
var tile = tile_scene.instantiate()
|
||||||
|
add_child(tile)
|
||||||
|
|
||||||
|
var x_spacing = tile_size * 0.75 + tile_separation
|
||||||
|
var z_spacing = tile_size * sqrt(3) / 2 + tile_separation
|
||||||
|
|
||||||
|
var pos_x = grid_pos.x * x_spacing
|
||||||
|
var pos_z = grid_pos.y * z_spacing + (abs(grid_pos.x) % 2) * (z_spacing / 2.0)
|
||||||
|
|
||||||
|
var target_position = Vector3(pos_x, 0, pos_z)
|
||||||
|
|
||||||
|
tile.transform.origin = Vector3(pos_x, -3.0, pos_z)
|
||||||
|
|
||||||
|
generated_tiles[grid_pos] = tile
|
||||||
|
if tile.has_method("initialize"):
|
||||||
|
tile.initialize(grid_pos.x, grid_pos.y)
|
||||||
|
|
||||||
|
var tween = create_tween()
|
||||||
|
var tile_light = tile.get_node_or_null("OmniLight3D")
|
||||||
|
if tile_light:
|
||||||
|
tile_light.light_energy = 0.0
|
||||||
|
|
||||||
|
tween.tween_property(tile, "position", target_position, 0.8)\
|
||||||
|
.set_trans(Tween.TRANS_CUBIC)\
|
||||||
|
.set_ease(Tween.EASE_OUT)
|
||||||
|
|
||||||
|
if tile_light:
|
||||||
|
tween.parallel().tween_property(tile_light, "light_energy", 1.5, 0.8)\
|
||||||
|
.set_trans(Tween.TRANS_CUBIC)\
|
||||||
|
.set_ease(Tween.EASE_OUT)
|
||||||
|
|
||||||
|
func get_hex_neighbors(grid_pos: Vector2i) -> Array[Vector2i]:
|
||||||
|
var neighbors: Array[Vector2i] = []
|
||||||
|
|
||||||
|
neighbors.append(grid_pos + Vector2i(0, -1)) # Neighbor Up
|
||||||
|
neighbors.append(grid_pos + Vector2i(0, 1)) # Neighbor Down
|
||||||
|
neighbors.append(grid_pos + Vector2i(-1, 0)) # Neighbor Left
|
||||||
|
neighbors.append(grid_pos + Vector2i(1, 0)) # Neighbor Right
|
||||||
|
|
||||||
|
if abs(grid_pos.x) % 2 == 1:
|
||||||
|
neighbors.append(grid_pos + Vector2i(-1, 1)) # Neighbor Left-Down
|
||||||
|
neighbors.append(grid_pos + Vector2i(1, 1)) # Neighbor Right-Down
|
||||||
|
else:
|
||||||
|
neighbors.append(grid_pos + Vector2i(-1, -1)) # Neighbor Left-Up
|
||||||
|
neighbors.append(grid_pos + Vector2i(1, -1)) # Neighbor Right-Up
|
||||||
|
return neighbors
|
||||||
|
|
||||||
|
func _on_button_pressed() -> void:
|
||||||
|
var open_neighbors = []
|
||||||
|
|
||||||
|
for current_pos in generated_tiles.keys():
|
||||||
|
var neighbors = get_hex_neighbors(current_pos)
|
||||||
|
for n_pos in neighbors:
|
||||||
|
if not generated_tiles.has(n_pos) and not open_neighbors.has(n_pos):
|
||||||
|
open_neighbors.append(n_pos)
|
||||||
|
|
||||||
|
if open_neighbors.size() > 0:
|
||||||
|
var random_target_pos = open_neighbors[randi() % open_neighbors.size()]
|
||||||
|
spawn_tile(random_target_pos)
|
||||||
|
print("Generated new tile at: ", random_target_pos)
|
||||||
|
else:
|
||||||
|
print("World is full")
|
||||||
|
|
||||||
1
Scenes/Map/map.gd.uid
Normal file
1
Scenes/Map/map.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://cesw3a37hqn08
|
||||||
1
Scenes/Map/map_tile.gd
Normal file
1
Scenes/Map/map_tile.gd
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
extends Node3D
|
||||||
1
Scenes/Map/map_tile.gd.uid
Normal file
1
Scenes/Map/map_tile.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://db7luam5x7vhs
|
||||||
32
Scenes/Map/map_tile.tscn
Normal file
32
Scenes/Map/map_tile.tscn
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
[gd_scene format=3 uid="uid://c6icyfxslhlmc"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://db7luam5x7vhs" path="res://Scenes/Map/map_tile.gd" id="1_0t1dj"]
|
||||||
|
|
||||||
|
[sub_resource type="CylinderMesh" id="CylinderMesh_7g6h4"]
|
||||||
|
top_radius = 1.0
|
||||||
|
bottom_radius = 1.0
|
||||||
|
height = 0.2
|
||||||
|
radial_segments = 6
|
||||||
|
|
||||||
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_7g6h4"]
|
||||||
|
height = 0.22
|
||||||
|
radius = 0.859375
|
||||||
|
|
||||||
|
[node name="MapTile" type="Node3D" unique_id=441860049]
|
||||||
|
transform = Transform3D(-4.3711385e-08, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, -4.3711385e-08, 0, 0, 0)
|
||||||
|
script = ExtResource("1_0t1dj")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=786384927]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0)
|
||||||
|
mesh = SubResource("CylinderMesh_7g6h4")
|
||||||
|
|
||||||
|
[node name="Area3D" type="Area3D" parent="MeshInstance3D" unique_id=519127025]
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="MeshInstance3D/Area3D" unique_id=318914845]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0057469606, 0)
|
||||||
|
shape = SubResource("CylinderShape3D_7g6h4")
|
||||||
|
debug_color = Color(0, 0.6509804, 0.08627451, 0.52156866)
|
||||||
|
|
||||||
|
[node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=1228933535]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2232149, 0)
|
||||||
|
light_energy = 1.5
|
||||||
|
|
@ -1,18 +1,35 @@
|
||||||
extends PanelContainer
|
extends PanelContainer
|
||||||
|
|
||||||
@onready var printer_name_label: Label = $MarginContainer/MainArea/TopInfo/PrinterLabel
|
@onready var printer_name_label: Label = $MarginContainer/MainArea/TopInfo/PrinterLabel
|
||||||
@onready var printer_model_label: Label = $MarginContainer/MainArea/PrinterModelLabel
|
@onready var printer_model_label: Label = $MarginContainer/MainArea/Model/PrinterModelLabel
|
||||||
@onready var progress_bar: ProgressBar = $MarginContainer/MainArea/PrintInfo/ProgressBar
|
@onready var progress_bar: ProgressBar = $MarginContainer/MainArea/PrintInfo/ProgressBar
|
||||||
@onready var select_job: OptionButton = $MarginContainer/MainArea/SelectJob
|
@onready var select_job: OptionButton = $MarginContainer/MainArea/SelectJob
|
||||||
@onready var status_label: Label = $MarginContainer/MainArea/TopInfo/StatusLabel
|
@onready var select_filament: OptionButton = $MarginContainer/MainArea/SelectFilament
|
||||||
@onready var time_left_label: Label = $MarginContainer/MainArea/PrintInfo/TimeLeftLabel
|
@onready var status_label: RichTextLabel = $MarginContainer/MainArea/TopInfo/StatusLabel
|
||||||
|
@onready var time_left_label: RichTextLabel = $MarginContainer/MainArea/PrintInfo/InfoRow2/TimeLeftLabel
|
||||||
@onready var start_button: Button = $MarginContainer/MainArea/Buttons/StartButton
|
@onready var start_button: Button = $MarginContainer/MainArea/Buttons/StartButton
|
||||||
|
@onready var reward_label: RichTextLabel = $MarginContainer/MainArea/PrintInfo/InfoRow2/RewardLabel
|
||||||
|
@onready var quality_label: RichTextLabel = $MarginContainer/MainArea/PrintInfo/InfoRow1/QualityLabel
|
||||||
|
@onready var loaded_filament_label: RichTextLabel = $MarginContainer/MainArea/PrintInfo/InfoRow1/LoadedFilament
|
||||||
|
|
||||||
|
|
||||||
var printer_data: PrinterData
|
var printer_data: PrinterData
|
||||||
|
|
||||||
|
# - Job and Filament selection variables
|
||||||
var selected_job: JobData
|
var selected_job: JobData
|
||||||
var selected_job_index: int
|
var selected_job_index: int
|
||||||
|
var selected_filament: Node = null
|
||||||
|
var selected_filament_index: int
|
||||||
|
|
||||||
|
# - Printer states
|
||||||
var is_printing: bool = false
|
var is_printing: bool = false
|
||||||
|
var print_failed: bool = false
|
||||||
|
|
||||||
|
# Variables - Failure calculations
|
||||||
var time_left: float
|
var time_left: float
|
||||||
|
var failure_points: Array
|
||||||
|
var failure_point_amount: float = 5
|
||||||
|
var print_quality: float = 1.0
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
GameData.refresh_printer_dropdown.connect(_on_refresh_printer_dropdown)
|
GameData.refresh_printer_dropdown.connect(_on_refresh_printer_dropdown)
|
||||||
|
|
@ -21,53 +38,123 @@ func initialize_printer(data: PrinterData) -> void:
|
||||||
printer_data = data
|
printer_data = data
|
||||||
printer_name_label.text = printer_data.printer_manufacturer
|
printer_name_label.text = printer_data.printer_manufacturer
|
||||||
printer_model_label.text = printer_data.printer_type
|
printer_model_label.text = printer_data.printer_type
|
||||||
|
quality_label.visible = false
|
||||||
|
reward_label.visible = false
|
||||||
time_left_label.visible = false
|
time_left_label.visible = false
|
||||||
|
loaded_filament_label.visible = true
|
||||||
time_left = 0
|
time_left = 0
|
||||||
set_status()
|
status_label.text = 'Status: [color=%s]%s[/color]' % [GameData.hex_white, "Free"]
|
||||||
progress_bar.visible = false
|
progress_bar.visible = false
|
||||||
progress_bar.value = 0
|
progress_bar.value = 0
|
||||||
|
|
||||||
|
GameData.display_msg('%s printer bought!' % printer_data.printer_manufacturer, GameData.hex_green)
|
||||||
_on_select_job_pressed()
|
_on_select_job_pressed()
|
||||||
|
_on_select_filament_pressed()
|
||||||
|
|
||||||
func _process(delta) -> void:
|
func _process(delta) -> void:
|
||||||
if is_printing:
|
if is_printing:
|
||||||
select_job.visible = false
|
select_job.hide()
|
||||||
progress_bar.visible = true
|
select_filament.hide()
|
||||||
time_left_label.visible = true
|
progress_bar.show()
|
||||||
|
time_left_label.show()
|
||||||
|
quality_label.show()
|
||||||
|
reward_label.show()
|
||||||
set_status()
|
set_status()
|
||||||
|
|
||||||
|
var text_color = GameData.hex_green
|
||||||
|
if print_quality < 1.0:
|
||||||
|
text_color = GameData.hex_red
|
||||||
|
|
||||||
|
quality_label.text = 'Quality: [color=%s]%.0f%%[/color]' % [text_color, (print_quality * 100)]
|
||||||
|
reward_label.text = 'Reward: [color=%s]%.2f €[/color]' % [text_color, (selected_job.job_reward * print_quality)]
|
||||||
|
|
||||||
var total_time = selected_job.job_time / printer_data.printer_speed
|
var total_time = selected_job.job_time / printer_data.printer_speed
|
||||||
var progress = (total_time - time_left) / total_time
|
var progress = (total_time - time_left) / total_time
|
||||||
|
|
||||||
|
selected_filament.amount -= 0.5 * delta
|
||||||
time_left -= delta
|
time_left -= delta
|
||||||
progress_bar.value = progress
|
progress_bar.value = progress
|
||||||
time_left_label.text = 'Time left: %s' % calculate_time_left(time_left)
|
time_left_label.text = 'Time left: [color=%s]%s[/color]' % [GameData.hex_blue, calculate_time_left(time_left)]
|
||||||
|
|
||||||
if time_left <= 0:
|
if time_left <= 0:
|
||||||
PlayerData.give_money.emit(selected_job.job_reward)
|
var end_reward = selected_job.job_reward * print_quality
|
||||||
PlayerData.give_experience.emit(selected_job.job_experience)
|
var end_xp = selected_job.job_experience * print_quality
|
||||||
select_job.visible = true
|
PlayerData.give_money.emit(end_reward)
|
||||||
|
PlayerData.give_experience.emit(end_xp)
|
||||||
|
GameData.display_msg('Print completed! Got %.2f €' % end_reward, GameData.hex_green)
|
||||||
reset_status()
|
reset_status()
|
||||||
|
|
||||||
|
# Old print failure condition - 1st Fail, 2nd + 3rd Quality decrease
|
||||||
|
#if failure_points.has(roundf(progress_bar.value * 100)):
|
||||||
|
#if failure_points[0] == roundf(progress_bar.value * 100):
|
||||||
|
#if check_failure(roundf(progress_bar.value * 100)):
|
||||||
|
#print_failed = true
|
||||||
|
#reset_status()
|
||||||
|
#elif check_failure(roundf(progress_bar.value * 100)):
|
||||||
|
#print_quality -= 0.1
|
||||||
|
|
||||||
|
# New print failure condition - Only quality decrease
|
||||||
|
if failure_points.has(roundf(progress_bar.value * 100)):
|
||||||
|
if check_failure(roundf(progress_bar.value * 100)):
|
||||||
|
print_quality -= 0.1
|
||||||
|
|
||||||
func reset_status() -> void:
|
func reset_status() -> void:
|
||||||
is_printing = false
|
is_printing = false
|
||||||
_on_select_job_pressed()
|
|
||||||
set_status()
|
set_status()
|
||||||
time_left_label.visible = false
|
print_failed = false
|
||||||
progress_bar.visible = false
|
print_quality = 1.0
|
||||||
|
failure_points = []
|
||||||
|
time_left_label.hide()
|
||||||
|
quality_label.hide()
|
||||||
|
reward_label.hide()
|
||||||
|
progress_bar.hide()
|
||||||
progress_bar.value = 0
|
progress_bar.value = 0
|
||||||
time_left = 0
|
time_left = 0
|
||||||
|
select_filament.show()
|
||||||
select_job.disabled = false
|
select_job.disabled = false
|
||||||
|
select_job.show()
|
||||||
start_button.disabled = false
|
start_button.disabled = false
|
||||||
|
_on_select_job_pressed()
|
||||||
|
|
||||||
func set_status() -> void:
|
func set_status() -> void:
|
||||||
if is_printing:
|
var color_hex: String = GameData.hex_white
|
||||||
status_label.text = 'Status: Printing'
|
var status: String
|
||||||
|
if print_failed:
|
||||||
|
status = 'Failed'
|
||||||
|
color_hex = GameData.hex_red
|
||||||
|
GameData.display_msg('Print failed!',color_hex)
|
||||||
|
elif is_printing:
|
||||||
|
status = 'Printing'
|
||||||
|
color_hex = GameData.hex_blue
|
||||||
else:
|
else:
|
||||||
status_label.text = 'Status: Free'
|
status = 'Free'
|
||||||
|
color_hex = GameData.hex_green
|
||||||
|
|
||||||
|
status_label.text = 'Status: [color=%s]%s[/color]' % [color_hex, status]
|
||||||
|
|
||||||
|
func calculate_fail_thresholds() -> Array:
|
||||||
|
var failure_checkpoints: Array = []
|
||||||
|
var failure_range = roundf(100.0 / failure_point_amount)
|
||||||
|
|
||||||
|
for point in failure_point_amount:
|
||||||
|
var range_min = failure_checkpoints.size() * (failure_range + 1)
|
||||||
|
var range_max = failure_checkpoints.size() * (failure_range + 1) + failure_range
|
||||||
|
failure_checkpoints.append(roundf(randf_range(\
|
||||||
|
range_min, range_max)))
|
||||||
|
|
||||||
|
print('Failure points: ', failure_checkpoints)
|
||||||
|
return failure_checkpoints
|
||||||
|
|
||||||
|
func check_failure(value: float) -> bool:
|
||||||
|
if randf() >= PlayerData.failure_chance:
|
||||||
|
failure_points[failure_points.bsearch(value, true)] = 0
|
||||||
|
return false
|
||||||
|
else:
|
||||||
|
failure_points[failure_points.bsearch(value, true)] = 0
|
||||||
|
return true
|
||||||
|
|
||||||
func calculate_time_left(time) -> String:
|
func calculate_time_left(time) -> String:
|
||||||
var minutes: int = 0
|
var minutes: int = 0
|
||||||
|
|
||||||
if time >= 60:
|
if time >= 60:
|
||||||
while time >= 60:
|
while time >= 60:
|
||||||
minutes += 1
|
minutes += 1
|
||||||
|
|
@ -79,13 +166,42 @@ func calculate_time_left(time) -> String:
|
||||||
func _on_refresh_printer_dropdown() -> void:
|
func _on_refresh_printer_dropdown() -> void:
|
||||||
if is_printing:
|
if is_printing:
|
||||||
return
|
return
|
||||||
|
|
||||||
_on_select_job_pressed()
|
_on_select_job_pressed()
|
||||||
|
|
||||||
func _on_sell_button_pressed() -> void:
|
func _on_sell_button_pressed() -> void:
|
||||||
PlayerData.give_money.emit(printer_data.printer_price * PlayerData.sell_multiplier)
|
PlayerData.give_money.emit(printer_data.printer_price * PlayerData.sell_multiplier)
|
||||||
|
PlayerData.owned_printers -= 1
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|
||||||
|
func _on_select_filament_pressed() -> void:
|
||||||
|
select_filament.clear()
|
||||||
|
var current_filaments = GameData.inventory.get_children()
|
||||||
|
|
||||||
|
if current_filaments.is_empty():
|
||||||
|
select_filament.add_item("Out of filament")
|
||||||
|
loaded_filament_label.text = 'Loaded filament: None'
|
||||||
|
selected_filament = null
|
||||||
|
else:
|
||||||
|
for filament in current_filaments:
|
||||||
|
var data = filament.filament_data
|
||||||
|
var amount = filament.amount
|
||||||
|
|
||||||
|
var item_text = '%s | %.2f g' % [data.material, amount]
|
||||||
|
select_filament.add_item(item_text)
|
||||||
|
|
||||||
|
var current_index = select_filament.item_count - 1
|
||||||
|
select_filament.set_item_metadata(current_index, filament)
|
||||||
|
selected_filament = select_filament.get_item_metadata(0)
|
||||||
|
selected_job_index = 0
|
||||||
|
selected_filament.amount_changed.connect(_on_filament_amount_changed)
|
||||||
|
_on_filament_amount_changed(selected_filament.amount)
|
||||||
|
|
||||||
|
func _on_select_filament_item_selected(index: int) -> void:
|
||||||
|
selected_filament = select_filament.get_item_metadata(index)
|
||||||
|
selected_filament_index = index
|
||||||
|
selected_filament.amount_changed.connect(_on_filament_amount_changed)
|
||||||
|
_on_filament_amount_changed(selected_filament.amount)
|
||||||
|
|
||||||
func _on_select_job_pressed() -> void:
|
func _on_select_job_pressed() -> void:
|
||||||
select_job.clear()
|
select_job.clear()
|
||||||
if PlayerData.jobs.is_empty():
|
if PlayerData.jobs.is_empty():
|
||||||
|
|
@ -94,7 +210,8 @@ func _on_select_job_pressed() -> void:
|
||||||
else:
|
else:
|
||||||
start_button.disabled = false
|
start_button.disabled = false
|
||||||
for job in PlayerData.jobs:
|
for job in PlayerData.jobs:
|
||||||
var item_text = '%s (XP: %d | %d € | %s)' % [job.job_name, job.job_experience, job.job_reward, calculate_time_left(job.job_time / printer_data.printer_speed)]
|
var item_text = '%s (XP: %.2f | %.2f € | %s)' %\
|
||||||
|
[job.job_name, job.job_experience, job.job_reward, calculate_time_left(job.job_time / printer_data.printer_speed)]
|
||||||
select_job.add_item(item_text)
|
select_job.add_item(item_text)
|
||||||
|
|
||||||
var current_index = select_job.item_count - 1
|
var current_index = select_job.item_count - 1
|
||||||
|
|
@ -106,18 +223,25 @@ func _on_select_job_item_selected(index: int) -> void:
|
||||||
selected_job = select_job.get_item_metadata(index)
|
selected_job = select_job.get_item_metadata(index)
|
||||||
selected_job_index = index
|
selected_job_index = index
|
||||||
|
|
||||||
|
func _on_filament_amount_changed(new_amount: float) -> void:
|
||||||
|
loaded_filament_label.text = 'Loaded filament: [color=%s]%s | %.2f g[/color]' % [GameData.hex_blue, selected_filament.filament_data.material, new_amount]
|
||||||
|
|
||||||
func _on_start_button_pressed() -> void:
|
func _on_start_button_pressed() -> void:
|
||||||
if select_job.get_item_text(0) == "No jobs accepted":
|
if select_job.get_item_text(0) == "No jobs accepted":
|
||||||
return
|
return
|
||||||
|
if select_filament.get_item_text(0) == "Out of filament":
|
||||||
|
return
|
||||||
|
|
||||||
time_left = selected_job.job_time / printer_data.printer_speed
|
time_left = selected_job.job_time / printer_data.printer_speed
|
||||||
progress_bar.value = 0
|
progress_bar.value = 0
|
||||||
start_button.disabled = true
|
start_button.disabled = true
|
||||||
is_printing = true
|
is_printing = true
|
||||||
|
|
||||||
|
# Remove job from job selection dropdown
|
||||||
if PlayerData.jobs.size() == 1:
|
if PlayerData.jobs.size() == 1:
|
||||||
PlayerData.jobs.clear()
|
PlayerData.jobs.clear()
|
||||||
else:
|
else:
|
||||||
PlayerData.jobs.remove_at(selected_job_index)
|
PlayerData.jobs.remove_at(selected_job_index)
|
||||||
|
|
||||||
|
failure_points = calculate_fail_thresholds()
|
||||||
GameData.refresh_printer_dropdown.emit()
|
GameData.refresh_printer_dropdown.emit()
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,11 @@
|
||||||
|
|
||||||
[node name="Printer" type="PanelContainer" unique_id=1372437203]
|
[node name="Printer" type="PanelContainer" unique_id=1372437203]
|
||||||
custom_minimum_size = Vector2(0, 150)
|
custom_minimum_size = Vector2(0, 150)
|
||||||
offset_right = 271.0
|
anchors_preset = 15
|
||||||
offset_bottom = 182.0
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
script = ExtResource("1_dlbos")
|
script = ExtResource("1_dlbos")
|
||||||
|
|
||||||
|
|
@ -30,29 +33,68 @@ size_flags_horizontal = 3
|
||||||
theme_override_font_sizes/font_size = 30
|
theme_override_font_sizes/font_size = 30
|
||||||
text = "Printer #1"
|
text = "Printer #1"
|
||||||
|
|
||||||
[node name="StatusLabel" type="Label" parent="MarginContainer/MainArea/TopInfo" unique_id=2117616913]
|
[node name="StatusLabel" type="RichTextLabel" parent="MarginContainer/MainArea/TopInfo" unique_id=157586427]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
bbcode_enabled = true
|
||||||
text = "Status: Free"
|
text = "Status: Free"
|
||||||
horizontal_alignment = 2
|
horizontal_alignment = 2
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="PrinterModelLabel" type="Label" parent="MarginContainer/MainArea" unique_id=666140345]
|
[node name="Model" type="HBoxContainer" parent="MarginContainer/MainArea" unique_id=916690802]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="PrinterModelLabel" type="Label" parent="MarginContainer/MainArea/Model" unique_id=666140345]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
text = "Printer model"
|
text = "Printer model"
|
||||||
|
|
||||||
[node name="PrintInfo" type="VBoxContainer" parent="MarginContainer/MainArea" unique_id=1502076264]
|
[node name="PrintInfo" type="VBoxContainer" parent="MarginContainer/MainArea" unique_id=1502076264]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="FilamentLabel" type="Label" parent="MarginContainer/MainArea/PrintInfo" unique_id=181392172]
|
[node name="InfoRow1" type="HBoxContainer" parent="MarginContainer/MainArea/PrintInfo" unique_id=1561257387]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Material: PLA"
|
size_flags_vertical = 3
|
||||||
|
|
||||||
[node name="TimeLeftLabel" type="Label" parent="MarginContainer/MainArea/PrintInfo" unique_id=1516591173]
|
[node name="LoadedFilament" type="RichTextLabel" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=532233684]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "Loaded filament: XXX | XXX g"
|
||||||
|
|
||||||
|
[node name="QualityLabel" type="RichTextLabel" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=937206053]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "Print quality: ###%"
|
||||||
|
horizontal_alignment = 2
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=1388403149]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="InfoRow2" type="HBoxContainer" parent="MarginContainer/MainArea/PrintInfo" unique_id=719967546]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="TimeLeftLabel" type="RichTextLabel" parent="MarginContainer/MainArea/PrintInfo/InfoRow2" unique_id=948453921]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "Time left: ###s"
|
||||||
|
|
||||||
|
[node name="RewardLabel" type="RichTextLabel" parent="MarginContainer/MainArea/PrintInfo/InfoRow2" unique_id=700892606]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "Reward: ###€"
|
||||||
|
horizontal_alignment = 2
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="MarginContainer/MainArea/PrintInfo/InfoRow2" unique_id=1668802451]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Time left: 15.0"
|
|
||||||
|
|
||||||
[node name="ProgressBar" type="ProgressBar" parent="MarginContainer/MainArea/PrintInfo" unique_id=768246659]
|
[node name="ProgressBar" type="ProgressBar" parent="MarginContainer/MainArea/PrintInfo" unique_id=768246659]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
theme_override_styles/fill = ExtResource("2_dlbos")
|
||||||
max_value = 1.0
|
max_value = 1.0
|
||||||
|
|
||||||
[node name="Buttons" type="HBoxContainer" parent="MarginContainer/MainArea" unique_id=248340191]
|
[node name="Buttons" type="HBoxContainer" parent="MarginContainer/MainArea" unique_id=248340191]
|
||||||
|
|
@ -76,6 +118,11 @@ size_flags_horizontal = 3
|
||||||
theme_override_styles/hover = ExtResource("3_mmlst")
|
theme_override_styles/hover = ExtResource("3_mmlst")
|
||||||
text = "Sell printer"
|
text = "Sell printer"
|
||||||
|
|
||||||
|
[node name="SelectFilament" type="OptionButton" parent="MarginContainer/MainArea" unique_id=1562930238]
|
||||||
|
layout_mode = 2
|
||||||
|
item_count = 1
|
||||||
|
popup/item_0/id = 0
|
||||||
|
|
||||||
[node name="SelectJob" type="OptionButton" parent="MarginContainer/MainArea" unique_id=1500040832]
|
[node name="SelectJob" type="OptionButton" parent="MarginContainer/MainArea" unique_id=1500040832]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
|
|
@ -83,5 +130,7 @@ layout_mode = 2
|
||||||
|
|
||||||
[connection signal="pressed" from="MarginContainer/MainArea/Buttons/StartButton" to="." method="_on_start_button_pressed"]
|
[connection signal="pressed" from="MarginContainer/MainArea/Buttons/StartButton" to="." method="_on_start_button_pressed"]
|
||||||
[connection signal="pressed" from="MarginContainer/MainArea/Buttons/SellButton" to="." method="_on_sell_button_pressed"]
|
[connection signal="pressed" from="MarginContainer/MainArea/Buttons/SellButton" to="." method="_on_sell_button_pressed"]
|
||||||
|
[connection signal="item_selected" from="MarginContainer/MainArea/SelectFilament" to="." method="_on_select_filament_item_selected"]
|
||||||
|
[connection signal="pressed" from="MarginContainer/MainArea/SelectFilament" to="." method="_on_select_filament_pressed"]
|
||||||
[connection signal="item_selected" from="MarginContainer/MainArea/SelectJob" to="." method="_on_select_job_item_selected"]
|
[connection signal="item_selected" from="MarginContainer/MainArea/SelectJob" to="." method="_on_select_job_item_selected"]
|
||||||
[connection signal="pressed" from="MarginContainer/MainArea/SelectJob" to="." method="_on_select_job_pressed"]
|
[connection signal="pressed" from="MarginContainer/MainArea/SelectJob" to="." method="_on_select_job_pressed"]
|
||||||
|
|
|
||||||
34
Scenes/Shop/Filaments/shop_filament_card.gd
Normal file
34
Scenes/Shop/Filaments/shop_filament_card.gd
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
extends PanelContainer
|
||||||
|
|
||||||
|
signal buy_filament
|
||||||
|
|
||||||
|
var filament_data: FilamentData
|
||||||
|
@onready var filament_material: Label = %Material
|
||||||
|
@onready var description: Label = %Description
|
||||||
|
@onready var reward_multiplier: Label = %RewardMultiplier
|
||||||
|
@onready var xp_multiplier: Label = %ExperienceMultiplier
|
||||||
|
@onready var amount: Label = %Amount
|
||||||
|
@onready var price_tag: Label = %PriceTag
|
||||||
|
@onready var buy_button: Button = $Margin/Info/Price/BuyButton
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
PlayerData.money_changed.connect(_on_toggle_button)
|
||||||
|
|
||||||
|
func initialize_filament(data: FilamentData) -> void:
|
||||||
|
filament_data = data
|
||||||
|
filament_material.text = filament_data.material
|
||||||
|
description.text = filament_data.description
|
||||||
|
reward_multiplier.text = 'Reward multiplier: x%.1f' % filament_data.reward_multiplier
|
||||||
|
xp_multiplier.text = 'Experience multiplier: x%.1f' % filament_data.xp_multiplier
|
||||||
|
amount.text = 'Amount: %.0f g' % filament_data.amount
|
||||||
|
price_tag.text = 'Price: %.2f €' % filament_data.price
|
||||||
|
|
||||||
|
func _on_buy_button_pressed() -> void:
|
||||||
|
buy_filament.emit(self)
|
||||||
|
|
||||||
|
func _on_toggle_button(money) -> void:
|
||||||
|
if PlayerData.money >= filament_data.price:
|
||||||
|
buy_button.disabled = false
|
||||||
|
else:
|
||||||
|
buy_button.disabled = true
|
||||||
1
Scenes/Shop/Filaments/shop_filament_card.gd.uid
Normal file
1
Scenes/Shop/Filaments/shop_filament_card.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://o733qdkp8lxl
|
||||||
76
Scenes/Shop/Filaments/shop_filaments_card.tscn
Normal file
76
Scenes/Shop/Filaments/shop_filaments_card.tscn
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
[gd_scene format=3 uid="uid://csq76iufxrb4y"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://o733qdkp8lxl" path="res://Scenes/Shop/Filaments/shop_filament_card.gd" id="1_gtjvs"]
|
||||||
|
|
||||||
|
[node name="FilamentsCard" type="PanelContainer" unique_id=368185874]
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
script = ExtResource("1_gtjvs")
|
||||||
|
|
||||||
|
[node name="Margin" type="MarginContainer" parent="." unique_id=1163688479]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/margin_left = 10
|
||||||
|
theme_override_constants/margin_top = 10
|
||||||
|
theme_override_constants/margin_right = 10
|
||||||
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
|
[node name="Info" type="VBoxContainer" parent="Margin" unique_id=1453497579]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="Title" type="VBoxContainer" parent="Margin/Info" unique_id=1904589169]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="Material" type="Label" parent="Margin/Info/Title" unique_id=24143253]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
text = "LOL-CF"
|
||||||
|
|
||||||
|
[node name="Description" type="Label" parent="Margin/Info/Title" unique_id=870869096]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
text = "Filament description goes here"
|
||||||
|
|
||||||
|
[node name="Multipliers" type="HBoxContainer" parent="Margin/Info" unique_id=2026319482]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="RewardMultiplier" type="Label" parent="Margin/Info/Multipliers" unique_id=867010603]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
text = "Reward multiplier: x1.0"
|
||||||
|
|
||||||
|
[node name="ExperienceMultiplier" type="Label" parent="Margin/Info/Multipliers" unique_id=1033367043]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
text = "Experience multiplier: x1.0"
|
||||||
|
|
||||||
|
[node name="ProductInfo" type="HBoxContainer" parent="Margin/Info" unique_id=1243250288]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="Amount" type="Label" parent="Margin/Info/ProductInfo" unique_id=1356405418]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
text = "Amount: 123 g"
|
||||||
|
|
||||||
|
[node name="Price" type="HBoxContainer" parent="Margin/Info" unique_id=926000726]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="PriceTag" type="Label" parent="Margin/Info/Price" unique_id=881459224]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
text = "Price: 1.23 €"
|
||||||
|
|
||||||
|
[node name="BuyButton" type="Button" parent="Margin/Info/Price" unique_id=780730344]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
text = "Buy"
|
||||||
|
|
||||||
|
[connection signal="pressed" from="Margin/Info/Price/BuyButton" to="." method="_on_buy_button_pressed"]
|
||||||
28
Scenes/Shop/Printers/shop_filaments.gd
Normal file
28
Scenes/Shop/Printers/shop_filaments.gd
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
extends PanelContainer
|
||||||
|
|
||||||
|
signal filament_purchase_requested(filament_data: FilamentData)
|
||||||
|
|
||||||
|
@export var filaments_array: Array[FilamentData]
|
||||||
|
const SHOP_FILAMENTS_CARD = preload("uid://csq76iufxrb4y")
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
generate_filaments()
|
||||||
|
filament_purchase_requested.connect(GameData._on_shop_filament_purchase_req)
|
||||||
|
PlayerData.level_changed.connect(_on_level_changed)
|
||||||
|
|
||||||
|
func generate_filaments() -> void:
|
||||||
|
for child in %FilamentList.get_children():
|
||||||
|
child.queue_free()
|
||||||
|
for filament in filaments_array:
|
||||||
|
if PlayerData.level >= filament.level_req:
|
||||||
|
var new_filament = SHOP_FILAMENTS_CARD.instantiate()
|
||||||
|
%FilamentList.add_child(new_filament)
|
||||||
|
new_filament.initialize_filament(filament)
|
||||||
|
new_filament.buy_filament.connect(_on_buy_filament_pressed)
|
||||||
|
|
||||||
|
func _on_buy_filament_pressed(bought_filament) -> void:
|
||||||
|
filament_purchase_requested.emit(bought_filament.filament_data)
|
||||||
|
|
||||||
|
func _on_level_changed(_level) -> void:
|
||||||
|
generate_filaments()
|
||||||
1
Scenes/Shop/Printers/shop_filaments.gd.uid
Normal file
1
Scenes/Shop/Printers/shop_filaments.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bcowlm04qsgqc
|
||||||
|
|
@ -17,8 +17,8 @@ func initialize_printer(data: PrinterData) -> void:
|
||||||
printer_data = data
|
printer_data = data
|
||||||
printer_name.text = printer_data.printer_manufacturer
|
printer_name.text = printer_data.printer_manufacturer
|
||||||
printer_model.text = printer_data.printer_type
|
printer_model.text = printer_data.printer_type
|
||||||
printer_speed.text = 'Speed: %d/5' % printer_data.printer_speed
|
printer_speed.text = 'Speed: %d/5' % roundf(printer_data.printer_speed)
|
||||||
printer_quality.text = 'Quality: %d/5' % printer_data.printer_quality
|
printer_quality.text = 'Quality: %d/5' % roundf(printer_data.printer_quality)
|
||||||
printer_price.text = 'Price: %d €' % printer_data.printer_price
|
printer_price.text = 'Price: %d €' % printer_data.printer_price
|
||||||
|
|
||||||
if PlayerData.money >= printer_data.printer_price:
|
if PlayerData.money >= printer_data.printer_price:
|
||||||
|
|
@ -5,14 +5,17 @@ signal printer_purchase_requested(printer_data: PrinterData)
|
||||||
@export var printers_array: Array[PrinterData]
|
@export var printers_array: Array[PrinterData]
|
||||||
const PRINTER_SCENE = preload("uid://bdpqvwvwmaian")
|
const PRINTER_SCENE = preload("uid://bdpqvwvwmaian")
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
generate_printers()
|
generate_printers()
|
||||||
generate_printers()
|
|
||||||
|
|
||||||
printer_purchase_requested.connect(GameData._on_shop_printer_purchase_req)
|
printer_purchase_requested.connect(GameData._on_shop_printer_purchase_req)
|
||||||
|
PlayerData.level_changed.connect(_on_level_changed)
|
||||||
|
|
||||||
func generate_printers() -> void:
|
func generate_printers() -> void:
|
||||||
|
for child in %PrinterList.get_children():
|
||||||
|
child.queue_free()
|
||||||
for printer in printers_array:
|
for printer in printers_array:
|
||||||
|
if PlayerData.level >= printer.printer_level_req:
|
||||||
var new_printer = PRINTER_SCENE.instantiate()
|
var new_printer = PRINTER_SCENE.instantiate()
|
||||||
%PrinterList.add_child(new_printer)
|
%PrinterList.add_child(new_printer)
|
||||||
new_printer.initialize_printer(printer)
|
new_printer.initialize_printer(printer)
|
||||||
|
|
@ -20,3 +23,6 @@ func generate_printers() -> void:
|
||||||
|
|
||||||
func _buy_printer_pressed(bought_printer) -> void:
|
func _buy_printer_pressed(bought_printer) -> void:
|
||||||
printer_purchase_requested.emit(bought_printer.printer_data)
|
printer_purchase_requested.emit(bought_printer.printer_data)
|
||||||
|
|
||||||
|
func _on_level_changed(_level) -> void:
|
||||||
|
generate_printers()
|
||||||
|
|
@ -1,11 +1,14 @@
|
||||||
[gd_scene format=3 uid="uid://bdpqvwvwmaian"]
|
[gd_scene format=3 uid="uid://bdpqvwvwmaian"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://ttfk4n2fkifj" path="res://Scenes/Shop/Printers/printer_card.gd" id="1_tl8ce"]
|
[ext_resource type="Script" uid="uid://ttfk4n2fkifj" path="res://Scenes/Shop/Printers/shop_printer_card.gd" id="1_tl8ce"]
|
||||||
[ext_resource type="StyleBox" uid="uid://csahw36txnewl" path="res://Styles/btn_style_box_green_hover.tres" id="2_tl8ce"]
|
[ext_resource type="StyleBox" uid="uid://csahw36txnewl" path="res://Styles/btn_style_box_green_hover.tres" id="2_tl8ce"]
|
||||||
|
|
||||||
[node name="PrinterCard" type="PanelContainer" unique_id=1714388686]
|
[node name="PrinterCard" type="PanelContainer" unique_id=1714388686]
|
||||||
offset_right = 40.0
|
anchors_preset = 15
|
||||||
offset_bottom = 40.0
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
script = ExtResource("1_tl8ce")
|
script = ExtResource("1_tl8ce")
|
||||||
|
|
||||||
|
|
@ -1,13 +1,29 @@
|
||||||
extends MarginContainer
|
extends MarginContainer
|
||||||
|
|
||||||
|
@onready var printers_button: Button = $HBoxContainer/PrintersButton
|
||||||
|
@onready var filaments_button: Button = $HBoxContainer/FilamentsButton
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
%Printers.visible = true
|
%Printers.visible = true
|
||||||
%Filaments.visible = false
|
%Filaments.visible = false
|
||||||
|
disable_buttons("printers")
|
||||||
|
|
||||||
func _on_printers_button_pressed() -> void:
|
func _on_printers_button_pressed() -> void:
|
||||||
%Printers.visible = true
|
%Printers.visible = true
|
||||||
%Filaments.visible = false
|
%Filaments.visible = false
|
||||||
|
disable_buttons("printers")
|
||||||
|
|
||||||
func _on_filaments_button_pressed() -> void:
|
func _on_filaments_button_pressed() -> void:
|
||||||
%Printers.visible = false
|
%Printers.visible = false
|
||||||
%Filaments.visible = true
|
%Filaments.visible = true
|
||||||
|
disable_buttons("filaments")
|
||||||
|
|
||||||
|
func disable_buttons(tab: String) -> void:
|
||||||
|
printers_button.disabled = true
|
||||||
|
filaments_button.disabled = true
|
||||||
|
|
||||||
|
match tab:
|
||||||
|
"printers":
|
||||||
|
filaments_button.disabled = false
|
||||||
|
"filaments":
|
||||||
|
printers_button.disabled = false
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@ extends Control
|
||||||
|
|
||||||
@export var debug: bool = false
|
@export var debug: bool = false
|
||||||
|
|
||||||
@onready var debug_xp: Button = $VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugXP
|
@onready var debug_xp: Button = $GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugXP
|
||||||
@onready var debug_money: Button = $VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugMoney
|
@onready var debug_money: Button = $GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugMoney
|
||||||
@onready var debug_button: Button = $VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugButton
|
@onready var debug_button: Button = $GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugButton
|
||||||
@onready var jobs_tab_button: Button = $VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/JobsTabButton
|
@onready var jobs_tab_button: Button = $GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/JobsTabButton
|
||||||
|
|
||||||
const PRINTER = preload("uid://33ctlyrpibs3")
|
const PRINTER = preload("uid://33ctlyrpibs3")
|
||||||
|
|
||||||
|
|
@ -25,9 +25,13 @@ func _ready() -> void:
|
||||||
|
|
||||||
# --- Experience, Level and Money update ---
|
# --- Experience, Level and Money update ---
|
||||||
func _on_xp_changed(xp) -> void:
|
func _on_xp_changed(xp) -> void:
|
||||||
%Experience.value = xp
|
var target_xp = PlayerData.xp_required_for_level(PlayerData.level)
|
||||||
|
var required_xp_to_value = (float(PlayerData.xp) / target_xp) * 100
|
||||||
|
%Experience.value = required_xp_to_value
|
||||||
|
|
||||||
func _on_level_changed(level) -> void:
|
func _on_level_changed(level) -> void:
|
||||||
%Level.text = 'Level: %d' % level
|
%Level.text = 'Level: %d' % level
|
||||||
|
|
||||||
func _on_money_changed(money) -> void:
|
func _on_money_changed(money) -> void:
|
||||||
%Money.text = 'Money: %.2f €' % money
|
%Money.text = 'Money: %.2f €' % money
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,21 @@
|
||||||
[gd_scene format=3 uid="uid://d24rvu5c0gd1w"]
|
[gd_scene format=3 uid="uid://d24rvu5c0gd1w"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://d0sgvbphgssmi" path="res://Scenes/UI/ui.gd" id="1_vqjbf"]
|
[ext_resource type="Script" uid="uid://d0sgvbphgssmi" path="res://Scenes/UI/ui.gd" id="1_vqjbf"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://c4tdg221rvm53" path="res://Scenes/UI/ui_notification.tscn" id="2_s3gqk"]
|
||||||
|
[ext_resource type="Script" uid="uid://bcowlm04qsgqc" path="res://Scenes/Shop/Printers/shop_filaments.gd" id="9_mbl0m"]
|
||||||
|
[ext_resource type="Script" uid="uid://cim8peoxip2si" path="res://Resources/filament_data.gd" id="10_vy225"]
|
||||||
|
[ext_resource type="Resource" uid="uid://dvu3hbx3tn0nx" path="res://Resources/Filaments/filament_pla.tres" id="11_fy0us"]
|
||||||
|
[ext_resource type="Resource" uid="uid://vuby4u37cu42" path="res://Resources/Filaments/filament_petg.tres" id="12_fy0us"]
|
||||||
[ext_resource type="Script" uid="uid://q8cf21vq4ka6" path="res://Scenes/tab_switcher.gd" id="13_vqjbf"]
|
[ext_resource type="Script" uid="uid://q8cf21vq4ka6" path="res://Scenes/tab_switcher.gd" id="13_vqjbf"]
|
||||||
[ext_resource type="Script" uid="uid://cg2kskiky8iur" path="res://Scenes/Shop/shop_tab_switcher.gd" id="14_vqjbf"]
|
[ext_resource type="Script" uid="uid://cg2kskiky8iur" path="res://Scenes/Shop/shop_tab_switcher.gd" id="14_vqjbf"]
|
||||||
[ext_resource type="Script" uid="uid://d3g5e8wjfqy5i" path="res://Scenes/Shop/Printers/printers.gd" id="15_vqjbf"]
|
[ext_resource type="Script" uid="uid://d3g5e8wjfqy5i" path="res://Scenes/Shop/Printers/shop_printers.gd" id="15_vqjbf"]
|
||||||
[ext_resource type="Script" uid="uid://bed8wdnwod4wu" path="res://Resources/printer_data.gd" id="16_rdojl"]
|
[ext_resource type="Script" uid="uid://bed8wdnwod4wu" path="res://Resources/printer_data.gd" id="16_rdojl"]
|
||||||
[ext_resource type="Resource" uid="uid://bdis2u0tfvlch" path="res://Resources/Printers/printer_bambulab_A1_mini.tres" id="17_llrls"]
|
[ext_resource type="Resource" uid="uid://bdis2u0tfvlch" path="res://Resources/Printers/printer_bambulab_A1_mini.tres" id="17_llrls"]
|
||||||
[ext_resource type="Resource" uid="uid://b6x4k150ugskw" path="res://Resources/Printers/printer_creality_ender_3.tres" id="18_8rt22"]
|
[ext_resource type="Resource" uid="uid://b6x4k150ugskw" path="res://Resources/Printers/printer_creality_ender_3.tres" id="18_8rt22"]
|
||||||
[ext_resource type="Resource" uid="uid://b4v47rpo27kec" path="res://Resources/Printers/printer_prusa_mk4s.tres" id="19_1ohgd"]
|
[ext_resource type="Resource" uid="uid://b4v47rpo27kec" path="res://Resources/Printers/printer_prusa_mk4s.tres" id="19_1ohgd"]
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_7g6h4"]
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8fchy"]
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8fchy"]
|
||||||
bg_color = Color(0.3529412, 0.47843137, 0.7372549, 0.47058824)
|
bg_color = Color(0.3529412, 0.47843137, 0.7372549, 0.47058824)
|
||||||
corner_radius_top_left = 6
|
corner_radius_top_left = 6
|
||||||
|
|
@ -26,6 +33,9 @@ bg_color = Color(0.6, 0.6, 0.6, 0)
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qru7b"]
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qru7b"]
|
||||||
bg_color = Color(0.6, 0.6, 0.6, 0)
|
bg_color = Color(0.6, 0.6, 0.6, 0)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mmlst"]
|
||||||
|
bg_color = Color(0.6, 0.6, 0.6, 0)
|
||||||
|
|
||||||
[node name="UI" type="Control" unique_id=256887379]
|
[node name="UI" type="Control" unique_id=256887379]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
|
|
@ -35,7 +45,24 @@ grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
script = ExtResource("1_vqjbf")
|
script = ExtResource("1_vqjbf")
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=1634044894]
|
[node name="CPUParticles2D" type="CPUParticles2D" parent="." unique_id=61421642]
|
||||||
|
position = Vector2(568, 312)
|
||||||
|
amount = 60
|
||||||
|
lifetime = 8.0
|
||||||
|
preprocess = 8.0
|
||||||
|
speed_scale = 0.3
|
||||||
|
emission_shape = 3
|
||||||
|
emission_rect_extents = Vector2(1000, 600)
|
||||||
|
direction = Vector2(0, -1)
|
||||||
|
gravity = Vector2(0, 0)
|
||||||
|
initial_velocity_min = 20.0
|
||||||
|
initial_velocity_max = 50.0
|
||||||
|
scale_amount_min = 2.0
|
||||||
|
scale_amount_max = 5.0
|
||||||
|
color = Color(0.45585775, 0.45585775, 0.4558577, 1)
|
||||||
|
color_ramp = SubResource("Gradient_7g6h4")
|
||||||
|
|
||||||
|
[node name="GameArea" type="VBoxContainer" parent="." unique_id=1634044894]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
|
|
@ -43,56 +70,56 @@ anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="TopBar" type="PanelContainer" parent="VBoxContainer" unique_id=96075233]
|
[node name="TopBar" type="PanelContainer" parent="GameArea" unique_id=96075233]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/TopBar" unique_id=1068942919]
|
[node name="VBoxContainer" type="VBoxContainer" parent="GameArea/TopBar" unique_id=1068942919]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/TopBar/VBoxContainer" unique_id=1261087154]
|
[node name="MarginContainer" type="MarginContainer" parent="GameArea/TopBar/VBoxContainer" unique_id=1261087154]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_constants/margin_left = 10
|
theme_override_constants/margin_left = 10
|
||||||
theme_override_constants/margin_top = 10
|
theme_override_constants/margin_top = 10
|
||||||
theme_override_constants/margin_right = 10
|
theme_override_constants/margin_right = 10
|
||||||
theme_override_constants/margin_bottom = 10
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer" unique_id=487881719]
|
[node name="HBoxContainer" type="HBoxContainer" parent="GameArea/TopBar/VBoxContainer/MarginContainer" unique_id=487881719]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
alignment = 1
|
alignment = 1
|
||||||
|
|
||||||
[node name="Money" type="Label" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=2146628247]
|
[node name="Money" type="Label" parent="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=2146628247]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
text = "Money: 0 €"
|
text = "Money: 0 €"
|
||||||
|
|
||||||
[node name="DebugMoney" type="Button" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=601739475]
|
[node name="DebugMoney" type="Button" parent="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=601739475]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Give 100€"
|
text = "Give 100€"
|
||||||
|
|
||||||
[node name="DebugXP" type="Button" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=535993224]
|
[node name="DebugXP" type="Button" parent="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=535993224]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Give xp"
|
text = "Give xp"
|
||||||
|
|
||||||
[node name="Time" type="Label" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=1503956629]
|
[node name="Time" type="Label" parent="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=1503956629]
|
||||||
visible = false
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
text = "Time: 12:00"
|
text = "Time: 12:00"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="Level" type="Label" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=1016279160]
|
[node name="Level" type="Label" parent="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=1016279160]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
text = "Level: 1"
|
text = "Level: 1"
|
||||||
horizontal_alignment = 2
|
horizontal_alignment = 2
|
||||||
|
|
||||||
[node name="DebugButton" type="Button" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=255003152]
|
[node name="DebugButton" type="Button" parent="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=255003152]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Debug"
|
text = "Debug"
|
||||||
|
|
||||||
[node name="Experience" type="ProgressBar" parent="VBoxContainer/TopBar/VBoxContainer" unique_id=38033766]
|
[node name="Experience" type="ProgressBar" parent="GameArea/TopBar/VBoxContainer" unique_id=38033766]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
custom_minimum_size = Vector2(0, 5)
|
custom_minimum_size = Vector2(0, 5)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
@ -100,24 +127,24 @@ theme_override_styles/fill = SubResource("StyleBoxFlat_8fchy")
|
||||||
value = 65.27
|
value = 65.27
|
||||||
show_percentage = false
|
show_percentage = false
|
||||||
|
|
||||||
[node name="MainAreaMargin" type="MarginContainer" parent="VBoxContainer" unique_id=1858818142]
|
[node name="MainAreaMargin" type="MarginContainer" parent="GameArea" unique_id=1858818142]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
theme_override_constants/margin_top = 5
|
theme_override_constants/margin_top = 5
|
||||||
|
|
||||||
[node name="MainArea" type="HBoxContainer" parent="VBoxContainer/MainAreaMargin" unique_id=352001241]
|
[node name="MainArea" type="HBoxContainer" parent="GameArea/MainAreaMargin" unique_id=352001241]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
[node name="LeftColumn" type="VBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea" unique_id=497978034]
|
[node name="LeftColumn" type="VBoxContainer" parent="GameArea/MainAreaMargin/MainArea" unique_id=497978034]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
[node name="MainMargin" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/LeftColumn" unique_id=1390444828]
|
[node name="MainMargin" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/LeftColumn" unique_id=1390444828]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
[node name="Header" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/LeftColumn/MainMargin" unique_id=674103883]
|
[node name="Header" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/LeftColumn/MainMargin" unique_id=674103883]
|
||||||
visible = false
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_constants/margin_left = 10
|
theme_override_constants/margin_left = 10
|
||||||
|
|
@ -125,15 +152,15 @@ theme_override_constants/margin_top = 10
|
||||||
theme_override_constants/margin_right = 10
|
theme_override_constants/margin_right = 10
|
||||||
theme_override_constants/margin_bottom = 10
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="VBoxContainer/MainAreaMargin/MainArea/LeftColumn/MainMargin/Header" unique_id=1155403735]
|
[node name="Label" type="Label" parent="GameArea/MainAreaMargin/MainArea/LeftColumn/MainMargin/Header" unique_id=1155403735]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Printers"
|
text = "Printers"
|
||||||
|
|
||||||
[node name="PrinterScroll" type="ScrollContainer" parent="VBoxContainer/MainAreaMargin/MainArea/LeftColumn/MainMargin" unique_id=1351903470]
|
[node name="PrinterScroll" type="ScrollContainer" parent="GameArea/MainAreaMargin/MainArea/LeftColumn/MainMargin" unique_id=1351903470]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
horizontal_scroll_mode = 0
|
horizontal_scroll_mode = 0
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/LeftColumn/MainMargin/PrinterScroll" unique_id=134445001]
|
[node name="MarginContainer" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/LeftColumn/MainMargin/PrinterScroll" unique_id=134445001]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
@ -142,18 +169,21 @@ theme_override_constants/margin_top = 10
|
||||||
theme_override_constants/margin_right = 10
|
theme_override_constants/margin_right = 10
|
||||||
theme_override_constants/margin_bottom = 10
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
[node name="PrinterContainer" type="VBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea/LeftColumn/MainMargin/PrinterScroll/MarginContainer" unique_id=374703275]
|
[node name="PrinterContainer" type="VBoxContainer" parent="GameArea/MainAreaMargin/MainArea/LeftColumn/MainMargin/PrinterScroll/MarginContainer" unique_id=374703275]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
theme_override_constants/separation = 8
|
theme_override_constants/separation = 8
|
||||||
|
|
||||||
[node name="RightColumn" type="VBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea" unique_id=653054059]
|
[node name="Printer" parent="GameArea/MainAreaMargin/MainArea/LeftColumn/MainMargin/PrinterScroll/MarginContainer/PrinterContainer" unique_id=1372437203 instance_placeholder="res://Scenes/Printer/printer.tscn"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="RightColumn" type="VBoxContainer" parent="GameArea/MainAreaMargin/MainArea" unique_id=653054059]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
[node name="TabSwitcher" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn" unique_id=1366955734]
|
[node name="TabSwitcher" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn" unique_id=1366955734]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_constants/margin_left = 10
|
theme_override_constants/margin_left = 10
|
||||||
theme_override_constants/margin_top = 10
|
theme_override_constants/margin_top = 10
|
||||||
|
|
@ -161,41 +191,42 @@ theme_override_constants/margin_right = 10
|
||||||
theme_override_constants/margin_bottom = 10
|
theme_override_constants/margin_bottom = 10
|
||||||
script = ExtResource("13_vqjbf")
|
script = ExtResource("13_vqjbf")
|
||||||
|
|
||||||
[node name="TabButtons" type="HBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher" unique_id=454550378]
|
[node name="TabButtons" type="HBoxContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher" unique_id=454550378]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="JobsTabButton" type="Button" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons" unique_id=332022453]
|
[node name="JobsTabButton" type="Button" parent="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons" unique_id=332022453]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
text = "Jobs"
|
text = "Jobs"
|
||||||
|
|
||||||
[node name="ShopTabButton" type="Button" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons" unique_id=748682284]
|
[node name="ShopTabButton" type="Button" parent="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons" unique_id=748682284]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
text = "Shop"
|
text = "Shop"
|
||||||
|
|
||||||
[node name="MenuTabButton" type="Button" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons" unique_id=1414728414]
|
[node name="MenuTabButton" type="Button" parent="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons" unique_id=1414728414]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
text = "Menu"
|
text = "Menu"
|
||||||
|
|
||||||
[node name="MainMargin" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn" unique_id=562508461]
|
[node name="MainMargin" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn" unique_id=562508461]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
theme_override_constants/margin_left = 10
|
theme_override_constants/margin_left = 10
|
||||||
theme_override_constants/margin_right = 10
|
theme_override_constants/margin_right = 10
|
||||||
theme_override_constants/margin_bottom = 10
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
[node name="JobsTab" type="PanelContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin" unique_id=859027615]
|
[node name="JobsTab" type="PanelContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin" unique_id=859027615]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_cqvjp")
|
theme_override_styles/panel = SubResource("StyleBoxFlat_cqvjp")
|
||||||
|
|
||||||
[node name="JobScroll" type="ScrollContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/JobsTab" unique_id=1046443254]
|
[node name="JobScroll" type="ScrollContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/JobsTab" unique_id=1046443254]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
horizontal_scroll_mode = 0
|
horizontal_scroll_mode = 0
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/JobsTab/JobScroll" unique_id=708828708]
|
[node name="MarginContainer" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/JobsTab/JobScroll" unique_id=708828708]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
@ -204,23 +235,25 @@ theme_override_constants/margin_top = 10
|
||||||
theme_override_constants/margin_right = 10
|
theme_override_constants/margin_right = 10
|
||||||
theme_override_constants/margin_bottom = 10
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
[node name="JobContainer" type="VBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/JobsTab/JobScroll/MarginContainer" unique_id=1821891785]
|
[node name="JobContainer" type="VBoxContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/JobsTab/JobScroll/MarginContainer" unique_id=1821891785]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
theme_override_constants/separation = 8
|
theme_override_constants/separation = 8
|
||||||
|
|
||||||
[node name="ShopTab" type="PanelContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin" unique_id=23859514]
|
[node name="JobCard" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/JobsTab/JobScroll/MarginContainer/JobContainer" unique_id=1714388686 instance_placeholder="res://Scenes/Job/job_card.tscn"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="ShopTab" type="PanelContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin" unique_id=23859514]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
visible = false
|
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_vqjbf")
|
theme_override_styles/panel = SubResource("StyleBoxFlat_vqjbf")
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab" unique_id=1098619767]
|
[node name="VBoxContainer" type="VBoxContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab" unique_id=1098619767]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="ShopTabSwitcher" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=40136169]
|
[node name="ShopTabSwitcher" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=40136169]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_constants/margin_left = 10
|
theme_override_constants/margin_left = 10
|
||||||
theme_override_constants/margin_top = 10
|
theme_override_constants/margin_top = 10
|
||||||
|
|
@ -228,32 +261,33 @@ theme_override_constants/margin_right = 10
|
||||||
theme_override_constants/margin_bottom = 10
|
theme_override_constants/margin_bottom = 10
|
||||||
script = ExtResource("14_vqjbf")
|
script = ExtResource("14_vqjbf")
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" unique_id=1669205646]
|
[node name="HBoxContainer" type="HBoxContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" unique_id=1669205646]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="PrintersButton" type="Button" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer" unique_id=96323903]
|
[node name="PrintersButton" type="Button" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer" unique_id=96323903]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
text = "Printers"
|
text = "Printers"
|
||||||
|
|
||||||
[node name="FilamentsButton" type="Button" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer" unique_id=659653173]
|
[node name="FilamentsButton" type="Button" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer" unique_id=659653173]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
text = "Filaments"
|
text = "Filaments"
|
||||||
|
|
||||||
[node name="Printers" type="PanelContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=1896524960]
|
[node name="Printers" type="PanelContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=1896524960]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_qru7b")
|
theme_override_styles/panel = SubResource("StyleBoxFlat_qru7b")
|
||||||
script = ExtResource("15_vqjbf")
|
script = ExtResource("15_vqjbf")
|
||||||
printers_array = Array[ExtResource("16_rdojl")]([ExtResource("17_llrls"), ExtResource("18_8rt22"), ExtResource("19_1ohgd")])
|
printers_array = Array[ExtResource("16_rdojl")]([ExtResource("17_llrls"), ExtResource("18_8rt22"), ExtResource("19_1ohgd")])
|
||||||
|
|
||||||
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers" unique_id=1757920718]
|
[node name="ScrollContainer" type="ScrollContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers" unique_id=1757920718]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
horizontal_scroll_mode = 0
|
horizontal_scroll_mode = 0
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers/ScrollContainer" unique_id=64943590]
|
[node name="MarginContainer" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers/ScrollContainer" unique_id=64943590]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
@ -262,31 +296,64 @@ theme_override_constants/margin_top = 10
|
||||||
theme_override_constants/margin_right = 10
|
theme_override_constants/margin_right = 10
|
||||||
theme_override_constants/margin_bottom = 10
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
[node name="PrinterList" type="VBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers/ScrollContainer/MarginContainer" unique_id=474412195]
|
[node name="PrinterList" type="VBoxContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers/ScrollContainer/MarginContainer" unique_id=474412195]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
theme_override_constants/separation = 8
|
theme_override_constants/separation = 8
|
||||||
|
|
||||||
[node name="Filaments" type="PanelContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=1891341317]
|
[node name="Filaments" type="PanelContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=1891341317]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_override_styles/panel = SubResource("StyleBoxFlat_mmlst")
|
||||||
|
script = ExtResource("9_mbl0m")
|
||||||
|
filaments_array = Array[ExtResource("10_vy225")]([ExtResource("11_fy0us"), ExtResource("12_fy0us")])
|
||||||
|
|
||||||
[node name="MenuTab" type="PanelContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin" unique_id=526907583]
|
[node name="ScrollContainer" type="ScrollContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Filaments" unique_id=1087434821]
|
||||||
|
layout_mode = 2
|
||||||
|
horizontal_scroll_mode = 0
|
||||||
|
|
||||||
|
[node name="MarginContainer" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Filaments/ScrollContainer" unique_id=1350479691]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_override_constants/margin_left = 10
|
||||||
|
theme_override_constants/margin_top = 10
|
||||||
|
theme_override_constants/margin_right = 10
|
||||||
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
|
[node name="FilamentList" type="VBoxContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Filaments/ScrollContainer/MarginContainer" unique_id=1017092781]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/separation = 8
|
||||||
|
|
||||||
|
[node name="MenuTab" type="PanelContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin" unique_id=526907583]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
visible = false
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="UiNotification" parent="." unique_id=1468421214 instance=ExtResource("2_s3gqk")]
|
||||||
|
layout_mode = 0
|
||||||
|
anchors_preset = 0
|
||||||
|
anchor_right = 0.0
|
||||||
|
anchor_bottom = 0.0
|
||||||
|
offset_right = 1152.0
|
||||||
|
offset_bottom = 649.0
|
||||||
|
grow_horizontal = 1
|
||||||
|
grow_vertical = 1
|
||||||
|
|
||||||
[node name="JobSpawner" type="Timer" parent="." unique_id=1696213535]
|
[node name="JobSpawner" type="Timer" parent="." unique_id=1696213535]
|
||||||
autostart = true
|
autostart = true
|
||||||
|
|
||||||
[connection signal="pressed" from="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugMoney" to="." method="_on_debug_money_pressed"]
|
[node name="Inventory" type="Node" parent="." unique_id=459920508]
|
||||||
[connection signal="pressed" from="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugXP" to="." method="_on_debug_xp_pressed"]
|
unique_name_in_owner = true
|
||||||
[connection signal="pressed" from="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugButton" to="." method="_on_debug_button_pressed"]
|
|
||||||
[connection signal="pressed" from="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/JobsTabButton" to="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher" method="_on_jobs_tab_button_pressed"]
|
[connection signal="pressed" from="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugMoney" to="." method="_on_debug_money_pressed"]
|
||||||
[connection signal="pressed" from="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/ShopTabButton" to="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher" method="_on_shop_tab_button_pressed"]
|
[connection signal="pressed" from="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugXP" to="." method="_on_debug_xp_pressed"]
|
||||||
[connection signal="pressed" from="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/MenuTabButton" to="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher" method="_on_menu_tab_button_pressed"]
|
[connection signal="pressed" from="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugButton" to="." method="_on_debug_button_pressed"]
|
||||||
[connection signal="pressed" from="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer/PrintersButton" to="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" method="_on_printers_button_pressed"]
|
[connection signal="pressed" from="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/JobsTabButton" to="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher" method="_on_jobs_tab_button_pressed"]
|
||||||
[connection signal="pressed" from="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer/FilamentsButton" to="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" method="_on_filaments_button_pressed"]
|
[connection signal="pressed" from="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/ShopTabButton" to="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher" method="_on_shop_tab_button_pressed"]
|
||||||
[connection signal="printer_purchase_requested" from="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers" to="." method="_on_printers_printer_purchase_requested"]
|
[connection signal="pressed" from="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/MenuTabButton" to="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher" method="_on_menu_tab_button_pressed"]
|
||||||
[connection signal="timeout" from="JobSpawner" to="." method="_on_job_spawner_timeout"]
|
[connection signal="pressed" from="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer/PrintersButton" to="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" method="_on_printers_button_pressed"]
|
||||||
|
[connection signal="pressed" from="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer/FilamentsButton" to="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" method="_on_filaments_button_pressed"]
|
||||||
|
|
|
||||||
11
Scenes/UI/ui_notification.gd
Normal file
11
Scenes/UI/ui_notification.gd
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
extends Control
|
||||||
|
|
||||||
|
@onready var message_label: RichTextLabel = $Base/Margin/Message
|
||||||
|
@onready var animation_player: AnimationPlayer = $AnimationPlayer
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
GameData.notification_requested.connect(_on_notification_requested)
|
||||||
|
|
||||||
|
func _on_notification_requested(message: String, color: String) -> void:
|
||||||
|
message_label.text = '[color=%s]%s[/color]' % [color, message]
|
||||||
|
animation_player.play("show_notification")
|
||||||
1
Scenes/UI/ui_notification.gd.uid
Normal file
1
Scenes/UI/ui_notification.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://y3jtgv0vknvk
|
||||||
104
Scenes/UI/ui_notification.tscn
Normal file
104
Scenes/UI/ui_notification.tscn
Normal file
|
|
@ -0,0 +1,104 @@
|
||||||
|
[gd_scene format=3 uid="uid://c4tdg221rvm53"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://y3jtgv0vknvk" path="res://Scenes/UI/ui_notification.gd" id="1_7y7gh"]
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_8qs5e"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Base:position:y")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [-50.0]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Base:modulate:a")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [1.0]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_np30a"]
|
||||||
|
resource_name = "show_notification"
|
||||||
|
length = 3.0000000000000004
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Base:position:y")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.29999995),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [-50.0, 10.0]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Base:modulate:a")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 1.5, 3),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [1.0, 1.0, 0.0]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_7ag70"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_8qs5e"),
|
||||||
|
&"show_notification": SubResource("Animation_np30a")
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="UiNotification" type="Control" unique_id=1468421214]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
script = ExtResource("1_7y7gh")
|
||||||
|
|
||||||
|
[node name="Base" type="PanelContainer" parent="." unique_id=870318481]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 5
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -79.0
|
||||||
|
offset_top = -50.0
|
||||||
|
offset_right = 79.0
|
||||||
|
offset_bottom = -7.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
|
||||||
|
[node name="Margin" type="MarginContainer" parent="Base" unique_id=716680500]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/margin_left = 10
|
||||||
|
theme_override_constants/margin_top = 10
|
||||||
|
theme_override_constants/margin_right = 10
|
||||||
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
|
[node name="Message" type="RichTextLabel" parent="Base/Margin" unique_id=438265807]
|
||||||
|
layout_mode = 2
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "Example message"
|
||||||
|
fit_content = true
|
||||||
|
autowrap_mode = 0
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=152270752]
|
||||||
|
libraries/ = SubResource("AnimationLibrary_7ag70")
|
||||||
|
|
@ -1,21 +1,45 @@
|
||||||
extends MarginContainer
|
extends MarginContainer
|
||||||
|
|
||||||
|
@onready var jobs_tab_button: Button = $TabButtons/JobsTabButton
|
||||||
|
@onready var shop_tab_button: Button = $TabButtons/ShopTabButton
|
||||||
|
@onready var menu_tab_button: Button = $TabButtons/MenuTabButton
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
%JobsTab.visible = true
|
%JobsTab.visible = true
|
||||||
%ShopTab.visible = false
|
%ShopTab.visible = false
|
||||||
%MenuTab.visible = false
|
%MenuTab.visible = false
|
||||||
|
disable_buttons("jobs")
|
||||||
|
|
||||||
func _on_jobs_tab_button_pressed() -> void:
|
func _on_jobs_tab_button_pressed() -> void:
|
||||||
%JobsTab.visible = true
|
%JobsTab.visible = true
|
||||||
%ShopTab.visible = false
|
%ShopTab.visible = false
|
||||||
%MenuTab.visible = false
|
%MenuTab.visible = false
|
||||||
|
disable_buttons("jobs")
|
||||||
|
|
||||||
func _on_shop_tab_button_pressed() -> void:
|
func _on_shop_tab_button_pressed() -> void:
|
||||||
%JobsTab.visible = false
|
%JobsTab.visible = false
|
||||||
%ShopTab.visible = true
|
%ShopTab.visible = true
|
||||||
%MenuTab.visible = false
|
%MenuTab.visible = false
|
||||||
|
disable_buttons("shop")
|
||||||
|
|
||||||
func _on_menu_tab_button_pressed() -> void:
|
func _on_menu_tab_button_pressed() -> void:
|
||||||
%JobsTab.visible = false
|
%JobsTab.visible = false
|
||||||
%ShopTab.visible = false
|
%ShopTab.visible = false
|
||||||
%MenuTab.visible = true
|
%MenuTab.visible = true
|
||||||
|
disable_buttons("menu")
|
||||||
|
|
||||||
|
func disable_buttons(tab: String) -> void:
|
||||||
|
jobs_tab_button.disabled = true
|
||||||
|
shop_tab_button.disabled = true
|
||||||
|
menu_tab_button.disabled = true
|
||||||
|
|
||||||
|
match tab:
|
||||||
|
"jobs":
|
||||||
|
shop_tab_button.disabled = false
|
||||||
|
menu_tab_button.disabled = false
|
||||||
|
"shop":
|
||||||
|
jobs_tab_button.disabled = false
|
||||||
|
menu_tab_button.disabled = false
|
||||||
|
"menu":
|
||||||
|
jobs_tab_button.disabled = false
|
||||||
|
shop_tab_button.disabled = false
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,11 @@ name="Linux"
|
||||||
platform="Linux"
|
platform="Linux"
|
||||||
dedicated_server=false
|
dedicated_server=false
|
||||||
custom_features=""
|
custom_features=""
|
||||||
export_filter="all_resources"
|
export_filter="scenes"
|
||||||
|
export_files=PackedStringArray("res://Scenes/Map/Map.tscn", "res://Scenes/Map/map_tile.tscn")
|
||||||
include_filter=""
|
include_filter=""
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path="Releases/PrintingSim-v0.1"
|
export_path="Releases/PrintingSim-stable"
|
||||||
patches=PackedStringArray()
|
patches=PackedStringArray()
|
||||||
patch_delta_encoding=false
|
patch_delta_encoding=false
|
||||||
patch_delta_compression_level_zstd=19
|
patch_delta_compression_level_zstd=19
|
||||||
|
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2016-2023 The Godot Engine community
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,10 +0,0 @@
|
||||||
[configuration]
|
|
||||||
|
|
||||||
entry_symbol = "git_plugin_init"
|
|
||||||
compatibility_minimum = "4.2.0"
|
|
||||||
|
|
||||||
[libraries]
|
|
||||||
|
|
||||||
linux.editor.x86_64 = "linux/libgit_plugin.linux.editor.x86_64.so"
|
|
||||||
macos.editor = "macos/libgit_plugin.macos.editor.universal.dylib"
|
|
||||||
windows.editor.x86_64 = "windows/libgit_plugin.windows.editor.x86_64.dll"
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://b208shhnkfnh3
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,2 +0,0 @@
|
||||||
godot-mainpc: b7bb31ea02eee907534e614b3e9e34af74ce5bed
|
|
||||||
test
|
|
||||||
|
|
@ -20,11 +20,6 @@ config/icon="res://icon.svg"
|
||||||
PlayerData="*uid://5g1fp4otancm"
|
PlayerData="*uid://5g1fp4otancm"
|
||||||
GameData="*uid://d3abg1dpwrkmq"
|
GameData="*uid://d3abg1dpwrkmq"
|
||||||
|
|
||||||
[editor]
|
|
||||||
|
|
||||||
version_control/plugin_name="GitPlugin"
|
|
||||||
version_control/autoload_on_startup=true
|
|
||||||
|
|
||||||
[physics]
|
[physics]
|
||||||
|
|
||||||
3d/physics_engine="Jolt Physics"
|
3d/physics_engine="Jolt Physics"
|
||||||
|
|
@ -33,3 +28,4 @@ version_control/autoload_on_startup=true
|
||||||
|
|
||||||
rendering_device/driver.windows="d3d12"
|
rendering_device/driver.windows="d3d12"
|
||||||
renderer/rendering_method="mobile"
|
renderer/rendering_method="mobile"
|
||||||
|
environment/defaults/default_clear_color=Color(0, 0, 0, 1)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue