From ef7529332fd22a851ba936d8ece35123afa3b609 Mon Sep 17 00:00:00 2001 From: SyntaX Date: Tue, 28 Jan 2020 15:35:08 +0100 Subject: [PATCH 1/2] classes for key and keycard to be able to add items depending on class --- Characters/Player/Player.gd | 2 +- Characters/Player/UI/UI.gd | 29 ++++++++++++++++++-------- Characters/Player/UI/UI.tscn | 4 ++-- Level/Interactables/Key/Key.gd | 12 ++++++++--- Level/Interactables/Keycard/Keycard.gd | 10 +++++++-- project.godot | 12 +++++++++++ 6 files changed, 52 insertions(+), 17 deletions(-) diff --git a/Characters/Player/Player.gd b/Characters/Player/Player.gd index d94ca77..3883cc0 100644 --- a/Characters/Player/Player.gd +++ b/Characters/Player/Player.gd @@ -195,7 +195,7 @@ func check_interact(): if Input.is_action_just_pressed("interact"): collider.do_interact(self) if collider.is_in_group("Collectibles"): - _inventory.add_item(collider.name) + _inventory.add_item(collider) _prev_look = null # remove after taken _labelInteract.hide() else: diff --git a/Characters/Player/UI/UI.gd b/Characters/Player/UI/UI.gd index de0bf77..eb34a5a 100644 --- a/Characters/Player/UI/UI.gd +++ b/Characters/Player/UI/UI.gd @@ -8,7 +8,10 @@ var _dayTime: ProgressBar var _dayTimeVisual: TextureRect onready var _keyTexture = load("res://Resources/Models/key/key.png") -onready var _cardTexture = load("res://Resources/Models/keycard/keycard.png") +var _cardTexture = { + 1: preload("res://Resources/Models/keycard/lvl1_keycard.png"), + 2: preload("res://Resources/Models/keycard/lvl2_keycard.png") +} # Called when the node enters the scene tree for the first time. func _ready(): @@ -24,18 +27,26 @@ func _ready(): _dayTime.max_value = Daytime.get_max() -func add_item (name): - Logger.info("Adding item \"" + name + "\" to inventory") - var text - if name == "Key": - text = _keyTexture - elif name == "Keycard": - text = _cardTexture +func add_item (object): + Logger.info("Adding item \"" + object.name + "\" with class \"" + String(object.get_class()) + "\" to inventory") + var texture + if object is Key: + Logger.info("key") + texture = _keyTexture + elif object is Keycard: + Logger.info("keycard") + var lvl = (object as Keycard).card_lvl + if _cardTexture.has(lvl) == false: + Logger.info("no keycard model for lvl: " + String(lvl)) + return + + texture = _cardTexture[lvl] else: + Logger.info("no texture found for: " + object.name) return var rect = TextureRect.new() - rect.texture = text + rect.texture = texture _container.add_child(rect) func _process(_delta): diff --git a/Characters/Player/UI/UI.tscn b/Characters/Player/UI/UI.tscn index 02ea1b1..1b8f2bf 100644 --- a/Characters/Player/UI/UI.tscn +++ b/Characters/Player/UI/UI.tscn @@ -52,9 +52,9 @@ anchor_left = 1.0 anchor_top = 0.5 anchor_right = 1.0 anchor_bottom = 0.5 -margin_left = -151.0 +margin_left = -146.0 margin_top = -258.5 -margin_right = -12.0 +margin_right = -7.0 margin_bottom = 258.5 [node name="PillLevel" type="Label" parent="."] diff --git a/Level/Interactables/Key/Key.gd b/Level/Interactables/Key/Key.gd index 8109923..fe82ee8 100644 --- a/Level/Interactables/Key/Key.gd +++ b/Level/Interactables/Key/Key.gd @@ -1,4 +1,5 @@ -extends StaticBody +extends StaticBody +class_name Key export(int) var key_id @@ -6,6 +7,11 @@ onready var outline = get_node("KeyMesh/Outline") as MeshInstance func do_interact(var player): - # TODO: move to global inventory player.key_chain.append(key_id) - queue_free() \ No newline at end of file + queue_free() + + +func is_class(type): return type == "Key" or .is_class(type) + + +func get_class(): return "Key" \ No newline at end of file diff --git a/Level/Interactables/Keycard/Keycard.gd b/Level/Interactables/Keycard/Keycard.gd index a2c3b00..a973c06 100644 --- a/Level/Interactables/Keycard/Keycard.gd +++ b/Level/Interactables/Keycard/Keycard.gd @@ -1,4 +1,5 @@ extends StaticBody +class_name Keycard export(int) var card_lvl @@ -6,7 +7,12 @@ onready var outline = get_node("KeycardMesh/Outline") as MeshInstance func do_interact(var player): - # TODO: move to global inventory if card_lvl > player.keycard_lvl: player.keycard_lvl = card_lvl - queue_free() \ No newline at end of file + queue_free() + + +func is_class(type): return type == "Keycard" or .is_class(type) + + +func get_class(): return "Keycard" \ No newline at end of file diff --git a/project.godot b/project.godot index cf57a99..7533e1c 100644 --- a/project.godot +++ b/project.godot @@ -29,6 +29,16 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://Util/gs-logger-3.1-R3/gs_logger/layouts/html_layout.gd" }, { +"base": "StaticBody", +"class": "Key", +"language": "GDScript", +"path": "res://Level/Interactables/Key/Key.gd" +}, { +"base": "StaticBody", +"class": "Keycard", +"language": "GDScript", +"path": "res://Level/Interactables/Keycard/Keycard.gd" +}, { "base": "Reference", "class": "Layout", "language": "GDScript", @@ -54,6 +64,8 @@ _global_script_class_icons={ "ConsoleAppender": "", "FileAppender": "", "HtmlLayout": "", +"Key": "", +"Keycard": "", "Layout": "", "Message": "", "NPC": "", From b5689a5511e082f889ecbe692b4d2b0316d579ab Mon Sep 17 00:00:00 2001 From: SyntaX Date: Tue, 28 Jan 2020 15:52:57 +0100 Subject: [PATCH 2/2] pillometer texture change depending on pill level --- Characters/Meldewesen/Meldewesen.gd | 2 +- Characters/Player/UI/UI.gd | 20 ++++++++--- Resources/Textures/pillLevel_danger.png | Bin 0 -> 345 bytes .../Textures/pillLevel_danger.png.import | 34 ++++++++++++++++++ Resources/Textures/pillLevel_fill.png | Bin 378 -> 360 bytes project.godot | 2 +- 6 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 Resources/Textures/pillLevel_danger.png create mode 100644 Resources/Textures/pillLevel_danger.png.import diff --git a/Characters/Meldewesen/Meldewesen.gd b/Characters/Meldewesen/Meldewesen.gd index 20be35e..756c6d8 100644 --- a/Characters/Meldewesen/Meldewesen.gd +++ b/Characters/Meldewesen/Meldewesen.gd @@ -1,7 +1,7 @@ extends NPC -export(int) var _player_follow_pill_level = 3 +export(int) var _player_follow_pill_level = Pills.LEVELS.MEDIUM onready var visibility_cone_mesh = get_node("Visibility/VisibilityCone") diff --git a/Characters/Player/UI/UI.gd b/Characters/Player/UI/UI.gd index eb34a5a..1aa1232 100644 --- a/Characters/Player/UI/UI.gd +++ b/Characters/Player/UI/UI.gd @@ -7,12 +7,15 @@ var _labelDayTime: Label var _dayTime: ProgressBar var _dayTimeVisual: TextureRect -onready var _keyTexture = load("res://Resources/Models/key/key.png") +onready var _keyTexture = preload("res://Resources/Models/key/key.png") var _cardTexture = { 1: preload("res://Resources/Models/keycard/lvl1_keycard.png"), 2: preload("res://Resources/Models/keycard/lvl2_keycard.png") } +onready var _pillFill = preload("res://Resources/Textures/pillLevel_fill.png") +onready var _pillDanger = preload("res://Resources/Textures/pillLevel_danger.png") + # Called when the node enters the scene tree for the first time. func _ready(): _container = get_node("InventoryContainer") @@ -50,11 +53,18 @@ func add_item (object): _container.add_child(rect) func _process(_delta): - _labelPillLevel.text = "curLevel: " + String(Pills.get_level()) - _pillLevel.value = Pills.get_level() - var val = int(Daytime.get_time()) + # pill level + var val = Pills.get_level() + _labelPillLevel.text = "curLevel: " + String(val) + _pillLevel.value = val + if val < Pills.LEVELS.MEDIUM: + _pillLevel.set_progress_texture(_pillDanger) + elif _pillLevel.get_progress_texture() != _pillFill: + _pillLevel.set_progress_texture(_pillFill) + + # day time + val = int(Daytime.get_time()) #_labelDayTime.text = "dayTime: " + String(val) + " - %02d:%02d" % [val/60%24, val%60] _dayTime.value = val - _dayTimeVisual.rect_rotation = ((val/_dayTime.max_value) * 180) - 90 \ No newline at end of file diff --git a/Resources/Textures/pillLevel_danger.png b/Resources/Textures/pillLevel_danger.png new file mode 100644 index 0000000000000000000000000000000000000000..475849d6e92a9984a5bafa5c6400eb5651207306 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^KY&<+gAGVtes8Va~60+7Bet#3xY6XeMfZ-Y0yA>}M}q+2Hf}8w(SsOcN&h`uD}A zNWE2UwP)KxZ!_*o-4(y;UAxr!?b|+wr9XK6_;c&+ZA|;}EUs4E+j=y**1aS??}zSO z-(Ahl292bl4f_tn8!u>>fAQv$h20a~60+7Bet#3xY6XeMs9~UM zUlyOvp1D`&*Vp5ZHr=|W`M`7C>HCkj{{Hz#@9;{$yH`biMDM?O-)_fh=LaYAxZgco zZN2~c!&u+w5^eJy@9fFv9til5h}LL+_;0=7m9_!XTHjqIf@;qmPS<0){Dg<^APW|> c(d#F(qP(f?$CmjsfdRqb>FVdQ&MBb@0EJMA-v9sr literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^KY&<+gAGVtes8V#hp1) zyhgxk=AkB*IeQ+prgSa+b>VGp595?B!gl&|2ET1ve*`}%ymND()X&rdlFx3unr`uqLuQ@Zg8&~=(3=YfVsEm97yg*) zyZY;axBh%{UO(^_Z`?29zQ9?gk*|=&>WJVA0VGa_L7u#&X5k0vjRC1Ze=>Nw`njxg HN@xNAQrM69 diff --git a/project.godot b/project.godot index 7533e1c..b7ad24a 100644 --- a/project.godot +++ b/project.godot @@ -75,7 +75,7 @@ _global_script_class_icons={ [application] config/name="retrace" -run/main_scene="res://Level/World.tscn" +run/main_scene="res://Level/OutsideWorld.tscn" config/icon="res://icon.png" [autoload]