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/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..1aa1232 100644 --- a/Characters/Player/UI/UI.gd +++ b/Characters/Player/UI/UI.gd @@ -7,8 +7,14 @@ var _labelDayTime: Label 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") +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(): @@ -24,26 +30,41 @@ 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): - _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/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/Resources/Textures/pillLevel_danger.png b/Resources/Textures/pillLevel_danger.png new file mode 100644 index 0000000..475849d Binary files /dev/null and b/Resources/Textures/pillLevel_danger.png differ diff --git a/Resources/Textures/pillLevel_danger.png.import b/Resources/Textures/pillLevel_danger.png.import new file mode 100644 index 0000000..39215b0 --- /dev/null +++ b/Resources/Textures/pillLevel_danger.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/pillLevel_danger.png-3f16593e6f8ad54ee32d61800bfb0c9f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Resources/Textures/pillLevel_danger.png" +dest_files=[ "res://.import/pillLevel_danger.png-3f16593e6f8ad54ee32d61800bfb0c9f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/Resources/Textures/pillLevel_fill.png b/Resources/Textures/pillLevel_fill.png index 7078d3d..b60afdc 100644 Binary files a/Resources/Textures/pillLevel_fill.png and b/Resources/Textures/pillLevel_fill.png differ diff --git a/project.godot b/project.godot index cf57a99..b7ad24a 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": "", @@ -63,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]