classes for key and keycard to be able to add items depending on class

This commit is contained in:
SyntaX 2020-01-28 15:35:08 +01:00
parent b7a53651bb
commit ef7529332f
6 changed files with 52 additions and 17 deletions

View File

@ -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:

View File

@ -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):

View File

@ -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="."]

View File

@ -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()
queue_free()
func is_class(type): return type == "Key" or .is_class(type)
func get_class(): return "Key"

View File

@ -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()
queue_free()
func is_class(type): return type == "Keycard" or .is_class(type)
func get_class(): return "Keycard"

View File

@ -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": "",