init
This commit is contained in:
93
levels/world_state/control.gd
Executable file
93
levels/world_state/control.gd
Executable file
@@ -0,0 +1,93 @@
|
||||
class_name WorldState
|
||||
extends Control
|
||||
@export var animation_player:AnimationPlayer
|
||||
@export var tilemap:Level
|
||||
@export var item_list:ItemList
|
||||
@export var stats_label:Label
|
||||
@export var stats_ui:Control
|
||||
@export var array:Array[Array] = [
|
||||
["A1", "A2", "A3"],
|
||||
["B1", "B2", "B3"],
|
||||
["C1", "C2", "C3"],
|
||||
[]
|
||||
]
|
||||
var world:World
|
||||
|
||||
var current_cords:Vector2 = Vector2(0, 0)
|
||||
|
||||
func do_command(command:String, input:String) -> void:
|
||||
match command:
|
||||
"WALK":
|
||||
move(input)
|
||||
"TALK":
|
||||
pass
|
||||
"INVENTORY":
|
||||
pass
|
||||
"BATTLE":
|
||||
battle(input)
|
||||
|
||||
func start(current_world:World) -> void:
|
||||
world = current_world
|
||||
world.player.stats_changed.connect(update_stats)
|
||||
update_stats()
|
||||
|
||||
func battle(input:String) -> void:
|
||||
match input:
|
||||
"UP":
|
||||
interactable_obj_exists(world.player.global_position + Vector2(0, -10))
|
||||
"DOWN":
|
||||
interactable_obj_exists(world.player.global_position + Vector2(0, 10))
|
||||
"LEFT":
|
||||
interactable_obj_exists(world.player.global_position + Vector2(-10, 0))
|
||||
"RIGHT":
|
||||
interactable_obj_exists(world.player.global_position + Vector2(10, 0))
|
||||
|
||||
func move(input:String) -> void:
|
||||
match input:
|
||||
"UP":
|
||||
if is_walkable(Vector2(0, -10)):
|
||||
world.player.global_position.y -= 10
|
||||
"DOWN":
|
||||
if is_walkable(Vector2(0, 10)):
|
||||
world.player.global_position.y += 10
|
||||
"LEFT":
|
||||
if is_walkable(Vector2(-10, 0)):
|
||||
world.player.global_position.x -= 10
|
||||
"RIGHT":
|
||||
if is_walkable(Vector2(10, 0)):
|
||||
world.player.global_position.x += 10
|
||||
|
||||
func is_walkable(direction:Vector2) -> bool:
|
||||
var clicked_cell:Vector2i = tilemap.local_to_map(world.player.global_position + direction)
|
||||
var cell:TileData = tilemap.get_cell_tile_data(clicked_cell)
|
||||
if cell:
|
||||
return cell.get_custom_data("walkable")
|
||||
return false
|
||||
|
||||
func interactable_obj_exists(pos:Vector2) -> void:
|
||||
if tilemap.interactble_objects.has(pos):
|
||||
tilemap.interactble_objects[pos].use_object(world)
|
||||
tilemap.interactble_objects[pos].queue_free()
|
||||
tilemap.interactble_objects.erase(pos)
|
||||
|
||||
func _on_item_list_item_selected(index: int) -> void:
|
||||
world.line_edit.text = item_list.get_item_text(index).to_upper()
|
||||
world.line_edit.caret_column = 30
|
||||
item_list.deselect(index)
|
||||
item_list.release_focus()
|
||||
world.line_edit.grab_focus()
|
||||
|
||||
|
||||
func update_stats():
|
||||
while(stats_ui.size.y > 0):
|
||||
stats_ui.size.y -= 10
|
||||
await get_tree().create_timer(0.1).timeout
|
||||
|
||||
var stats:String = "Health: " + str(world.player.health) \
|
||||
+ "\nDamage: " + str(world.player.damage) \
|
||||
+ "\nSpeed: " + str(world.player.speed)
|
||||
stats_label.text = stats
|
||||
|
||||
while(stats_ui.size.y < 224.0):
|
||||
stats_ui.size.y += 10
|
||||
await get_tree().create_timer(0.1).timeout
|
||||
1
levels/world_state/control.gd.uid
Executable file
1
levels/world_state/control.gd.uid
Executable file
@@ -0,0 +1 @@
|
||||
uid://is3twd5fw4ay
|
||||
176
levels/world_state/control.tscn
Executable file
176
levels/world_state/control.tscn
Executable file
@@ -0,0 +1,176 @@
|
||||
[gd_scene load_steps=8 format=4 uid="uid://blbbmr2ap77jo"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://is3twd5fw4ay" path="res://levels/world_state/control.gd" id="1_0fbet"]
|
||||
[ext_resource type="PackedScene" uid="uid://bsnyy55qb2pyr" path="res://levels/template/level_template.tscn" id="2_gcbra"]
|
||||
[ext_resource type="TileSet" uid="uid://bfkalv0skoxy2" path="res://tileset.tres" id="2_qtu10"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ee4bf"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Label:visible_ratio")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Label:visible")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_qtu10"]
|
||||
resource_name = "new_animation"
|
||||
length = 0.5
|
||||
step = 0.1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Label:visible_ratio")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.5),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 1.0]
|
||||
}
|
||||
tracks/1/type = "method"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("AnimationPlayer")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0.5),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
"args": [&"flash", -1, 1.0, false],
|
||||
"method": &"play"
|
||||
}]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_uch48"]
|
||||
resource_name = "flash"
|
||||
loop_mode = 1
|
||||
step = 0.1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Label:visible")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.4, 1),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false, true]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_kbped"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_ee4bf"),
|
||||
&"appear": SubResource("Animation_qtu10"),
|
||||
&"flash": SubResource("Animation_uch48")
|
||||
}
|
||||
|
||||
[node name="WorldState" type="Control" node_paths=PackedStringArray("animation_player", "tilemap", "item_list", "stats_label", "stats_ui")]
|
||||
clip_contents = true
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_0fbet")
|
||||
animation_player = NodePath("AnimationPlayer")
|
||||
tilemap = NodePath("LevelTemplate")
|
||||
item_list = NodePath("Commands/ItemList")
|
||||
stats_label = NodePath("Stats/StatsLabel")
|
||||
stats_ui = NodePath("Stats")
|
||||
|
||||
[node name="LevelTemplate" parent="." instance=ExtResource("2_gcbra")]
|
||||
|
||||
[node name="UI" type="TileMapLayer" parent="."]
|
||||
texture_filter = 1
|
||||
tile_map_data = PackedByteArray("AAAAACgAAAANAAwAAAABACgAAAANAAwAAAACACgAAAANAAwAAAADACgAAAANAAwAAAAEACgAAAANAAwAAAAFACgAAAANAAwAAAAGACgAAAANAAwAAAAHACgAAAANAAwAAAAIACgAAAANAAwAAAAJACgAAAANAAwAAAAKACgAAAANAAwAAAALACgAAAANAAwAAAAMACgAAAANAAwAAAANACgAAAANAAwAAAAOACgAAAANAAwAAAAPACgAAAANAAwAAAAQACgAAAANAAwAAAARACgAAAANAAwAAAASACgAAAANAAwAAAATACgAAAANAAwAAAAUACgAAAANAAwAAAAVACgAAAANAAwAAAAWACgAAAANAAwAAAAXACgAAAANAAwAAAAYACgAAAANAAwAAAAZACgAAAANAAwAAAAaACgAAAANAAwAAAAbACgAAAANAAwAAAAcACgAAAANAAwAAAAdACgAAAANAAwAAAAeACgAAAANAAwAAAAfACgAAAANAAwAAAAgACgAAAANAAwAAAAhACgAAAANAAwAAAAiACgAAAANAAwAAAAjACgAAAANAAwAAAAkACgAAAANAAwAAAAlACgAAAANAAwAAAAmACgAAAANAAwAAAAnACgAAAANAAwAAAAoACgAAAANAAwAAAApACgAAAANAAwAAAAqACgAAAANAAwAAAArACgAAAANAAwAAAAsACgAAAANAAwAAAAtACgAAAANAAwAAAAuACgAAAANAAwAAAAvACgAAAANAAwAAAAwACgAAAANAAwAAAAxACgAAAANAAwAAAAyACgAAAANAAwAAAAzACgAAAANAAwAAAA0ACgAAAANAAwAAAA1ACgAAAANAAwAAAA2ACgAAAANAAwAAAA3ACgAAAANAAwAAAA4ACgAAAANAAwAAAA5ACgAAAANAAwAAAA6ACgAAAANAAwAAAA7ACgAAAANAAwAAAA8ACgAAAANAAwAAAA9ACgAAAANAAwAAAA+ACgAAAANAAwAAAA/ACgAAAANAAwAAABAACgAAAANAAwAAABBACgAAAANAAwAAABCACgAAAANAAwAAABDACgAAAANAAwAAABEACgAAAANAAwAAABFACgAAAAJAAsAAABFACcAAAAKAAsAAABFACYAAAAKAAsAAABFACUAAAAKAAsAAABFACQAAAAKAAsAAABFACMAAAAKAAsAAABFACIAAAAKAAsAAABFACEAAAAKAAsAAABFACAAAAAKAAsAAABFAB8AAAAKAAsAAABFAB4AAAAKAAsAAABFAB0AAAAKAAsAAABFABwAAAAKAAsAAABFABsAAAAKAAsAAABFABoAAAAKAAsAAABFABkAAAAKAAsAAABFABgAAAAKAAsAAABFABcAAAAKAAsAAABFABYAAAAKAAsAAABFABUAAAAKAAsAAABFABQAAAAKAAsAAABFABMAAAAKAAsAAABFABIAAAAKAAsAAABFABEAAAAKAAsAAABFABAAAAAKAAsAAABFAA8AAAAKAAsAAABFAA4AAAAKAAsAAABFAA0AAAAKAAsAAABFAAwAAAAKAAsAAABFAAsAAAAKAAsAAABFAAoAAAAKAAsAAABFAAkAAAAKAAsAAABFAAgAAAAKAAsAAABFAAcAAAAKAAsAAABFAAYAAAAKAAsAAABFAAUAAAAKAAsAAABFAAQAAAAKAAsAAABFAAMAAAAKAAsAAABFAAIAAAAKAAsAAABFAAEAAAAKAAsAAABFAAAAAAAKAAsAAABFACkAAAAKAAsAAABFACoAAAAKAAsAAABFACsAAAAKAAsAAABFACwAAAAKAAsAAABFAC0AAAAKAAsAAABFAC4AAAAKAAsAAABFAC8AAAAKAAsAAABFADAAAAAKAAsAAABFADEAAAAKAAsAAABFADIAAAAKAAsAAABFADMAAAAKAAsAAABFADQAAAAKAAsAAABFADUAAAAKAAsAAAANACkAAAADAAsAAAANACoAAAADAAsAAAANACsAAAADAAsAAAANACwAAAADAAsAAAANAC0AAAADAAsAAAANAC4AAAADAAsAAAANAC8AAAADAAsAAAANADAAAAADAAsAAAANADEAAAADAAsAAAANADIAAAADAAsAAAANADMAAAADAAsAAAANADQAAAADAAsAAAANADUAAAADAAsAAAA=")
|
||||
tile_set = ExtResource("2_qtu10")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_kbped")
|
||||
}
|
||||
|
||||
[node name="ColorRect3" type="ColorRect" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 10
|
||||
anchor_right = 1.0
|
||||
grow_horizontal = 2
|
||||
color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="Label" type="Label" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
offset_left = -243.0
|
||||
offset_right = 243.0
|
||||
offset_bottom = 48.0
|
||||
grow_horizontal = 2
|
||||
theme_override_colors/font_color = Color(1, 0, 0, 1)
|
||||
theme_override_font_sizes/font_size = 48
|
||||
text = "===== DANGER ====="
|
||||
visible_characters = 0
|
||||
visible_ratio = 0.0
|
||||
|
||||
[node name="Commands" type="Control" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 0
|
||||
offset_top = 408.0
|
||||
offset_right = 134.0
|
||||
offset_bottom = 540.0
|
||||
metadata/_edit_group_ = true
|
||||
|
||||
[node name="ItemList" type="ItemList" parent="Commands"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_colors/guide_color = Color(0.69803923, 0.69803923, 0.69803923, 1)
|
||||
item_count = 4
|
||||
item_0/text = "WALK UP"
|
||||
item_1/text = "WALK DOWN"
|
||||
item_2/text = "WALK RIGHT"
|
||||
item_3/text = "WALK LEFT"
|
||||
|
||||
[node name="Stats" type="Control" parent="."]
|
||||
clip_contents = true
|
||||
anchors_preset = 0
|
||||
offset_left = 138.0
|
||||
offset_top = 409.0
|
||||
offset_right = 251.0
|
||||
offset_bottom = 540.0
|
||||
pivot_offset = Vector2(0, 30)
|
||||
metadata/_edit_group_ = true
|
||||
|
||||
[node name="StatsLabel" type="Label" parent="Stats"]
|
||||
layout_mode = 1
|
||||
offset_right = 117.0
|
||||
offset_bottom = 131.0
|
||||
autowrap_mode = 1
|
||||
|
||||
[connection signal="item_selected" from="Commands/ItemList" to="." method="_on_item_list_item_selected"]
|
||||
Reference in New Issue
Block a user