diff --git a/assets/characters/coco/coco.tscn b/assets/characters/coco/coco.tscn index f3534ac..0c6839b 100644 --- a/assets/characters/coco/coco.tscn +++ b/assets/characters/coco/coco.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=3 uid="uid://boywgcl7f5ci6"] +[gd_scene load_steps=18 format=3 uid="uid://boywgcl7f5ci6"] [ext_resource type="Script" path="res://assets/characters/player.gd" id="1_bvkmh"] [ext_resource type="Script" path="res://src/viewport.gd" id="3_d52t1"] @@ -6,8 +6,12 @@ [ext_resource type="SpineSkeletonFileResource" uid="uid://c3twn8iltvcj0" path="res://assets/characters/coco/coco_bandicoot.skel" id="4_m8s0r"] [ext_resource type="Script" path="res://src/spine_sprite.gd" id="5_migwh"] [ext_resource type="Script" path="res://assets/characters/coco/states/idle.gd" id="6_0vw3v"] +[ext_resource type="Script" path="res://assets/characters/coco/states/move.gd" id="7_p4lpb"] +[ext_resource type="Script" path="res://assets/characters/coco/states/jump.gd" id="8_1523y"] +[ext_resource type="Script" path="res://assets/characters/coco/states/fall.gd" id="9_t8gpm"] +[ext_resource type="Script" path="res://assets/characters/coco/states/pause.gd" id="10_qwrnp"] -[sub_resource type="ViewportTexture" id="ViewportTexture_xbknf"] +[sub_resource type="ViewportTexture" id="ViewportTexture_05y88"] viewport_path = NodePath("MeshInstance3D/SubViewport") [sub_resource type="ShaderMaterial" id="ShaderMaterial_fy03b"] @@ -18,7 +22,7 @@ transparency = 1 shading_mode = 0 diffuse_mode = 3 specular_mode = 1 -albedo_texture = SubResource("ViewportTexture_xbknf") +albedo_texture = SubResource("ViewportTexture_05y88") billboard_mode = 1 [sub_resource type="QuadMesh" id="QuadMesh_iwcmf"] @@ -82,18 +86,32 @@ transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) shape = SubResource("CylinderShape3D_cbp6h") [node name="LimboHSM" type="LimboHSM" parent="."] +unique_name_in_owner = true -[node name="Idle" type="LimboState" parent="LimboHSM"] +[node name="Idle" type="LimboState" parent="LimboHSM" node_paths=PackedStringArray("sprite")] script = ExtResource("6_0vw3v") +sprite = NodePath("../../MeshInstance3D/SubViewport/SpineSprite") -[node name="Move" type="LimboState" parent="LimboHSM"] +[node name="Move" type="LimboState" parent="LimboHSM" node_paths=PackedStringArray("sprite")] +script = ExtResource("7_p4lpb") +sprite = NodePath("../../MeshInstance3D/SubViewport/SpineSprite") -[node name="Jump" type="LimboState" parent="LimboHSM"] +[node name="Jump" type="LimboState" parent="LimboHSM" node_paths=PackedStringArray("sprite")] +script = ExtResource("8_1523y") +sprite = NodePath("../../MeshInstance3D/SubViewport/SpineSprite") -[node name="Fall" type="LimboState" parent="LimboHSM"] +[node name="Fall" type="LimboState" parent="LimboHSM" node_paths=PackedStringArray("sprite")] +script = ExtResource("9_t8gpm") +sprite = NodePath("../../MeshInstance3D/SubViewport/SpineSprite") -[node name="Attack" type="LimboState" parent="LimboHSM"] +[node name="Run" type="LimboState" parent="LimboHSM"] -[node name="AirAttack" type="LimboState" parent="LimboHSM"] +[node name="Pause" type="LimboState" parent="LimboHSM" node_paths=PackedStringArray("sprite")] +script = ExtResource("10_qwrnp") +sprite = NodePath("../../MeshInstance3D/SubViewport/SpineSprite") + +[node name="Spin" type="LimboState" parent="LimboHSM"] + +[node name="AirSpin" type="LimboState" parent="LimboHSM"] [node name="Crouch" type="LimboState" parent="LimboHSM"] diff --git a/assets/characters/coco/coco_bandicoot.atlas b/assets/characters/coco/coco_bandicoot.atlas index bb05c52..6478d85 100644 --- a/assets/characters/coco/coco_bandicoot.atlas +++ b/assets/characters/coco/coco_bandicoot.atlas @@ -1,42 +1,54 @@ coco_bandicoot.png -size:523,522 +size:522,812 filter:Linear,Linear scale:0.5 accessories.png -bounds:442,162,47,57 +bounds:202,62,47,57 coco_arm_back_1 -bounds:111,4,99,173 +bounds:419,637,99,173 offsets:0,0,100,173 -rotate:90 coco_arm_front_1 -bounds:286,41,88,198 -rotate:90 +bounds:253,77,88,198 coco_body_1 -bounds:220,131,135,212 -offsets:0,0,139,212 -coco_eyebrows_1 -bounds:286,11,89,28 -coco_eyewhite_1 -bounds:2,2,107,104 -offsets:2,0,109,104 -coco_hand_back_1 -bounds:442,221,61,59 -coco_hand_front_1 -bounds:442,282,79,61 -coco_head_1 -bounds:220,345,222,175 -coco_leg_back_1 -bounds:126,105,92,415 -coco_leg_front_1 -bounds:2,108,122,412 -coco_ponytail_1 -bounds:357,135,83,208 -coco_pupil_back_1 -bounds:220,115,14,27 +bounds:2,121,135,229 +offsets:0,0,139,229 rotate:90 +coco_eyebrows_1 +bounds:410,495,89,31 +coco_eyewhite_1 +bounds:416,528,107,104 +offsets:2,0,109,104 +rotate:90 +coco_hand_back_1 +bounds:431,122,61,59 +coco_hand_front_1 +bounds:347,483,79,61 +rotate:90 +coco_head_1 +bounds:345,183,222,175 +rotate:90 +coco_laptop_1 +bounds:2,2,198,117 +coco_leg_back_1 +bounds:2,718,92,415 +rotate:90 +coco_leg_front_1 +bounds:2,594,122,412 +rotate:90 +coco_ponytail_1 +bounds:253,277,90,188 +coco_pupil_back_1 +bounds:503,499,14,27 coco_pupil_front_1 -bounds:377,11,28,62 +bounds:347,564,28,62 rotate:90 flower.png -bounds:444,366,154,74 +bounds:347,407,154,74 +makeup_shotgun +bounds:2,467,343,125 +makeup_shotgun_fx_0 +bounds:343,105,76,86 +rotate:90 +makeup_shotgun_fx_1 +bounds:2,258,207,249 rotate:90 diff --git a/assets/characters/coco/coco_bandicoot.png b/assets/characters/coco/coco_bandicoot.png index a97fd71..06c6fdf 100644 Binary files a/assets/characters/coco/coco_bandicoot.png and b/assets/characters/coco/coco_bandicoot.png differ diff --git a/assets/characters/coco/coco_bandicoot.skel b/assets/characters/coco/coco_bandicoot.skel index caafc2d..5be48f2 100644 Binary files a/assets/characters/coco/coco_bandicoot.skel and b/assets/characters/coco/coco_bandicoot.skel differ diff --git a/assets/characters/coco/npc_coco.tscn b/assets/characters/coco/npc_coco.tscn index a644f81..f292240 100644 --- a/assets/characters/coco/npc_coco.tscn +++ b/assets/characters/coco/npc_coco.tscn @@ -4,7 +4,7 @@ [ext_resource type="SpineSkeletonDataResource" uid="uid://dn5wtcrr40ahd" path="res://assets/characters/coco/coco.tres" id="2_8ur8k"] [ext_resource type="Script" path="res://src/spine_sprite.gd" id="3_m02kv"] -[sub_resource type="ViewportTexture" id="ViewportTexture_8u2jr"] +[sub_resource type="ViewportTexture" id="ViewportTexture_ofb5q"] viewport_path = NodePath("MeshInstance3D/SubViewport") [sub_resource type="ShaderMaterial" id="ShaderMaterial_5xxpu"] @@ -15,7 +15,7 @@ transparency = 1 shading_mode = 0 diffuse_mode = 3 specular_mode = 1 -albedo_texture = SubResource("ViewportTexture_8u2jr") +albedo_texture = SubResource("ViewportTexture_ofb5q") billboard_mode = 1 [sub_resource type="QuadMesh" id="QuadMesh_iwcmf"] diff --git a/assets/characters/coco/states/fall.gd b/assets/characters/coco/states/fall.gd new file mode 100644 index 0000000..b65d16d --- /dev/null +++ b/assets/characters/coco/states/fall.gd @@ -0,0 +1,12 @@ +extends LimboState + +@export var sprite: SpineSprite + +func _enter() -> void: + Messagebus.COCO_STATE.emit(self.name) + agent.velocity.y = agent.JUMP_VELOCITY + var a = sprite.get_animation_state() + if a: a.set_animation("fall", true, 0) + +func _update(delta) -> void: + pass diff --git a/assets/characters/coco/states/idle.gd b/assets/characters/coco/states/idle.gd index 0254cd1..0d96d46 100644 --- a/assets/characters/coco/states/idle.gd +++ b/assets/characters/coco/states/idle.gd @@ -1,15 +1,25 @@ extends LimboState -@export var animation_player: Node -@export var animation: SpineAnimationTrack +@export var sprite: SpineSprite func _enter() -> void: - print("pretending to enter animation state") + Messagebus.COCO_STATE.emit(self.name) + var a = sprite.get_animation_state() + if a: a.set_animation("idle", true, 0) + if agent.armed: + a.add_animation("holding/shotgun", false, 1) + +func _update(delta) -> void: + var a: Player = agent + a.apply_movement(delta) + if a.velocity.x != 0 or a.velocity.z != 0: + get_root().dispatch("to_move") + if Input.is_action_pressed("Pause"): + get_root().dispatch("to_pause") + agent.check_jump_input(delta) -# Called when the node enters the scene tree for the first time. func _ready() -> void: pass # Replace with function body. -# Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: pass diff --git a/assets/characters/coco/states/jump.gd b/assets/characters/coco/states/jump.gd new file mode 100644 index 0000000..31d106f --- /dev/null +++ b/assets/characters/coco/states/jump.gd @@ -0,0 +1,22 @@ +extends LimboState + +@export var sprite: SpineSprite + +func _enter() -> void: + Messagebus.COCO_STATE.emit(self.name) + var a = sprite.get_animation_state() + if a: a.set_animation("jump", false, 0) + + +func _update(delta) -> void: + #if agent.velocity.y < 0 and !agent.is_on_floor(): + #get_root().dispatch("to_fall") + if agent.is_on_floor(): + get_root().dispatch("to_move") + agent.apply_movement(delta) + +func _ready() -> void: + pass # Replace with function body. + +func _process(delta: float) -> void: + pass diff --git a/assets/characters/coco/states/move.gd b/assets/characters/coco/states/move.gd new file mode 100644 index 0000000..7f4be60 --- /dev/null +++ b/assets/characters/coco/states/move.gd @@ -0,0 +1,22 @@ +extends LimboState + +@export var sprite: SpineSprite + +func _enter() -> void: + Messagebus.COCO_STATE.emit(self.name) + var a = sprite.get_animation_state() + if a: a.set_animation("move", true, 0) + if true: + a.set_animation("holding/shotgun", false, 1) + +func _ready() -> void: + pass # Replace with function body. + +func _update(delta) -> void: + agent.apply_movement(delta) + if agent.velocity.x == 0 and agent.velocity.z == 0: + get_root().dispatch("to_idle") + agent.check_jump_input(delta) + +func _process(delta: float) -> void: + pass diff --git a/assets/characters/coco/states/pause.gd b/assets/characters/coco/states/pause.gd new file mode 100644 index 0000000..8d4f7a5 --- /dev/null +++ b/assets/characters/coco/states/pause.gd @@ -0,0 +1,22 @@ +extends LimboState + +@export var sprite: SpineSprite + +func _enter() -> void: + sprite.animation_event.connect(emit_show_laptop) + var a = sprite.get_animation_state() + if agent.can_pause: + a.set_empty_animation(0, 0.4) + a.set_animation("holding/laptop", false, 1) + #Messagebus.PAUSE.emit(true) + + +func emit_show_laptop(sprite: SpineSprite, animation_state: SpineAnimationState, track_entry: SpineTrackEntry, event: SpineEvent): + print("spine event"+str(event)) + var event_name = event.get_data().get_event_name() + if event_name == "show_laptop": + Messagebus.LAPTOP.emit(true) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass diff --git a/assets/characters/player.gd b/assets/characters/player.gd index b53bd47..5e27d0c 100644 --- a/assets/characters/player.gd +++ b/assets/characters/player.gd @@ -1,27 +1,50 @@ extends CharacterBody3D +class_name Player const SPEED = 150.0 const RUN_SPEED = 400.0 const JUMP_VELOCITY = 200 -# -#@export var state_machine: LimboHSM -## States -#@onready var idle_state: LimboState = $LimboHSM/Idle - +@export var state_machine: LimboHSM +@onready var idle_state: LimboState = $LimboHSM/Idle +@onready var move_state: LimboState = $LimboHSM/Move +@onready var jump_state: LimboState = $LimboHSM/Jump +@onready var fall_state: LimboState = $LimboHSM/Fall +@onready var pause_state: LimboState = $LimboHSM/Pause +var movement_input = Vector3.ZERO var last_direction:= Vector3.ONE @onready var camera: Camera3D = $Camera3D -# -#func _ready(): - #_initialize_state_machine() -# -#func _initialize_state_machine(): - #state_machine.initial_state = idle_state - #state_machine.initialize(self) - #state_machine.set_active(true) - # -func _physics_process(delta: float) -> void: + +var armed = false +var can_pause = true + +func _ready(): + state_machine = $LimboHSM + _initialize_state_machine() + GDRx.on_physics_step()\ + .subscribe(check_buffered_jump).dispose_with(self) + GDRx.on_physics_step()\ + .subscribe(check_coyote_jump).dispose_with(self) + GDRx.on_physics_step()\ + .subscribe(handle_jump).dispose_with(self) + GDRx.on_physics_step()\ + .subscribe(handle_move).dispose_with(self) + +func _initialize_state_machine(): + state_machine.add_transition(idle_state, move_state, "to_move") + state_machine.add_transition(move_state, idle_state, "to_idle") + state_machine.add_transition(move_state, jump_state, "to_jump") + state_machine.add_transition(idle_state, jump_state, "to_jump") + state_machine.add_transition(jump_state, fall_state, "to_fall") + state_machine.add_transition(state_machine.ANYSTATE, pause_state, "to_pause") + + state_machine.initial_state = idle_state + state_machine.initialize(self) + state_machine.set_active(true) + + +func apply_movement(delta: float) -> void: # Add the gravity. if not is_on_floor(): velocity += get_gravity() * delta @@ -29,18 +52,88 @@ func _physics_process(delta: float) -> void: self.velocity.x = delta * k * Input.get_axis("move_left", "move_right") self.velocity.z = delta * k * Input.get_axis("move_forward", "move_back") + if Input.is_key_pressed(KEY_E): + var s: SpineSprite = $MeshInstance3D/SubViewport/SpineSprite + var a = s.get_animation_state() + a.set_animation("holding/shoot", false, 3) + shoot_gun() + armed = !armed Messagebus.DEBUG_XYZ.emit(self.global_transform.origin) + move_and_slide() + +func shoot_gun(): + var space_state = get_world_3d().direct_space_state + # use global coordinates, not local to node + var start = self.to_global(Vector3(0, 0, 0)) + var end = self.to_global(Vector3(50, 0, 0)) * sign(last_direction.x) + line(start, end, Color.BLACK, 4) + var query = PhysicsRayQueryParameters3D.create(start, end) + query.exclude = [self] + var result = space_state.intersect_ray(query) + print(result) + +func line(pos1: Vector3, pos2: Vector3, color = Color.BLACK, persist_ms = 0): + var mesh_instance := MeshInstance3D.new() + var immediate_mesh := ImmediateMesh.new() + var material := ORMMaterial3D.new() + + mesh_instance.mesh = immediate_mesh + mesh_instance.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF + + immediate_mesh.surface_begin(Mesh.PRIMITIVE_LINES, material) + immediate_mesh.surface_add_vertex(pos1) + immediate_mesh.surface_add_vertex(pos1-Vector3(0,0,0.2)) + immediate_mesh.surface_add_vertex(pos2) + immediate_mesh.surface_add_vertex(pos2-Vector3(0,0,0.2)) + immediate_mesh.surface_end() + + material.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED + material.albedo_color = color + + return await final_cleanup(mesh_instance, persist_ms) + + +func final_cleanup(mesh_instance: MeshInstance3D, persist_ms: float): + get_tree().get_root().add_child(mesh_instance) + if persist_ms == 1: + await get_tree().physics_frame + mesh_instance.queue_free() + elif persist_ms > 0: + await get_tree().create_timer(persist_ms).timeout + mesh_instance.queue_free() + else: + return mesh_instance + +func apply_jump() -> void: + pass + #move_and_slide() + +func check_coyote_jump(delta) -> void: + pass + +func check_buffered_jump(delta) -> void: + pass + +func handle_jump(delta) -> void: + pass + +func handle_move(delta) -> void: + pass + +func check_jump_input(delta) -> void: + check_coyote_jump(delta) + check_buffered_jump(delta) if Input.is_action_just_pressed("jump") and is_on_floor(): + state_machine.dispatch("to_jump") self.velocity.y = delta * JUMP_VELOCITY + +func _physics_process(delta: float) -> void: var i = Input.get_axis("move_left", "move_right") if snapped(i, 1): - last_direction = Vector3(sign(i), 1, 1) + self.last_direction = Vector3(sign(i), 1, 1) var t: Material = $MeshInstance3D.material_override - t.uv1_scale = last_direction - - move_and_slide() - + t.uv1_scale = self.last_direction # handle camera camera.position.x = lerp(camera.position.x, position.x, 0.08) camera.position.y = lerp(camera.position.y, position.y, 0.08) + 0.07 diff --git a/assets/characters/tawna/tawna.atlas b/assets/characters/tawna/tawna.atlas index a9e7f59..66f0c57 100644 --- a/assets/characters/tawna/tawna.atlas +++ b/assets/characters/tawna/tawna.atlas @@ -1,6 +1,6 @@ tawna.png -size:505,1156 +size:248,580 filter:Linear,Linear scale:0.5 tawna -bounds:2,2,501,1152 +bounds:2,2,244,576 diff --git a/assets/characters/tawna/tawna.png b/assets/characters/tawna/tawna.png index 64045e8..72f294d 100644 Binary files a/assets/characters/tawna/tawna.png and b/assets/characters/tawna/tawna.png differ diff --git a/assets/characters/tawna/tawna.skel b/assets/characters/tawna/tawna.skel index 82c9217..f52cd5f 100644 Binary files a/assets/characters/tawna/tawna.skel and b/assets/characters/tawna/tawna.skel differ diff --git a/assets/characters/tawna/tawna.tscn b/assets/characters/tawna/tawna.tscn index 3b20711..df74d82 100644 --- a/assets/characters/tawna/tawna.tscn +++ b/assets/characters/tawna/tawna.tscn @@ -33,7 +33,7 @@ max_value = 200.0 _data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.56535, 83.9717), 420.727, 420.727, 0, 0, Vector2(0.729483, 200), 0.0, 0.0, 0, 0] point_count = 3 -[sub_resource type="ViewportTexture" id="ViewportTexture_7i7n4"] +[sub_resource type="ViewportTexture" id="ViewportTexture_cdclm"] viewport_path = NodePath("MeshInstance3D/SubViewport") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_a31vv"] @@ -41,7 +41,7 @@ transparency = 1 shading_mode = 0 diffuse_mode = 3 specular_mode = 1 -albedo_texture = SubResource("ViewportTexture_7i7n4") +albedo_texture = SubResource("ViewportTexture_cdclm") billboard_mode = 1 [sub_resource type="QuadMesh" id="QuadMesh_iwcmf"] @@ -105,7 +105,8 @@ canvas_cull_mask = 4294966273 size = Vector2i(3671, 3671) [node name="SpineSprite" type="SpineSprite" parent="MeshInstance3D/SubViewport"] -position = Vector2(1358, 0) +position = Vector2(1827, 2016) +scale = Vector2(2, 2) skeleton_data_res = SubResource("SpineSkeletonDataResource_ufcij") meshes = true preview_skin = "default" diff --git a/assets/levels/maps/debug1.tscn b/assets/levels/maps/debug1.tscn index bf2583a..f272060 100644 --- a/assets/levels/maps/debug1.tscn +++ b/assets/levels/maps/debug1.tscn @@ -71,14 +71,14 @@ data = PackedVector3Array(5, 0, 5, -5, 0, 5, 5, 0, -5, -5, 0, 5, -5, 0, -5, 5, 0 vertices = PackedVector3Array(1.56663, 0.279793, -3.25, 1.56663, 0.279793, -2.75, 2.31663, 0.279793, -2.5, 4.31663, 0.279793, -3.25, 2.31663, 0.279793, -1.5, 1.56663, 0.279793, 2.5, 8.31663, 0.279793, 2.5, 8.31663, 0.279793, -4.5, 1.56663, 0.279793, -1.25, 4.31663, 0.279793, -4.5, 0.81663, 0.279793, -2.5, -5.68337, 0.279793, -3.25, 0.81663, 0.279793, -1.5, -5.68337, 0.279793, 2.5) polygons = [PackedInt32Array(1, 0, 2), PackedInt32Array(2, 0, 3), PackedInt32Array(4, 3, 5), PackedInt32Array(5, 3, 6), PackedInt32Array(6, 3, 7), PackedInt32Array(4, 2, 3), PackedInt32Array(5, 8, 4), PackedInt32Array(3, 9, 7), PackedInt32Array(1, 10, 0), PackedInt32Array(0, 10, 11), PackedInt32Array(8, 5, 12), PackedInt32Array(12, 5, 13), PackedInt32Array(12, 13, 11), PackedInt32Array(11, 10, 12)] -[sub_resource type="ViewportTexture" id="ViewportTexture_lyeeo"] +[sub_resource type="ViewportTexture" id="ViewportTexture_cn41h"] viewport_path = NodePath("NavigationRegion3D/MeshInstance3D/SubViewport") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mdr1l"] transparency = 2 alpha_scissor_threshold = 0.5 alpha_antialiasing_mode = 0 -albedo_texture = SubResource("ViewportTexture_lyeeo") +albedo_texture = SubResource("ViewportTexture_cn41h") metallic_specular = 0.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_lrfyr"] diff --git a/assets/main.tscn b/assets/main.tscn index 2095240..f02595b 100644 --- a/assets/main.tscn +++ b/assets/main.tscn @@ -12,6 +12,7 @@ [ext_resource type="Script" path="res://src/canvas_layer.gd" id="10_x3yev"] [node name="Main" type="Node"] +process_mode = 3 script = ExtResource("1_l1pcn") test = 101 @@ -35,6 +36,7 @@ script = ExtResource("5_4aaix") script = ExtResource("6_oxtdj") [node name="LevelManager" type="Node" parent="."] +process_mode = 1 script = ExtResource("6_xklu3") [node name="CameraManager" type="Node" parent="."] diff --git a/assets/spine/coco-walk/coco.spine b/assets/spine/coco-walk/coco.spine index 9fa1979..c9702e4 100644 Binary files a/assets/spine/coco-walk/coco.spine and b/assets/spine/coco-walk/coco.spine differ diff --git a/assets/spine/coco-walk/images/Copy of coco_arm_front_1.png b/assets/spine/coco-walk/images/Copy of coco_arm_front_1.png new file mode 100644 index 0000000..4b26390 Binary files /dev/null and b/assets/spine/coco-walk/images/Copy of coco_arm_front_1.png differ diff --git a/assets/spine/coco-walk/images/Copy of coco_arm_front_1.png.import b/assets/spine/coco-walk/images/Copy of coco_arm_front_1.png.import new file mode 100644 index 0000000..1c84d2d --- /dev/null +++ b/assets/spine/coco-walk/images/Copy of coco_arm_front_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtk2iidlc7i0a" +path="res://.godot/imported/Copy of coco_arm_front_1.png-5926d54fd8d331028e1d23f32e01ae22.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/coco-walk/images/Copy of coco_arm_front_1.png" +dest_files=["res://.godot/imported/Copy of coco_arm_front_1.png-5926d54fd8d331028e1d23f32e01ae22.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/coco-walk/images/accessories.png.png b/assets/spine/coco-walk/images/accessories.png.png index 64a1221..5c96066 100644 Binary files a/assets/spine/coco-walk/images/accessories.png.png and b/assets/spine/coco-walk/images/accessories.png.png differ diff --git a/assets/spine/coco-walk/images/coco_body_1.png b/assets/spine/coco-walk/images/coco_body_1.png index 8220407..29ea047 100644 Binary files a/assets/spine/coco-walk/images/coco_body_1.png and b/assets/spine/coco-walk/images/coco_body_1.png differ diff --git a/assets/spine/coco-walk/images/coco_body_2.png b/assets/spine/coco-walk/images/coco_body_2.png new file mode 100644 index 0000000..97eba48 Binary files /dev/null and b/assets/spine/coco-walk/images/coco_body_2.png differ diff --git a/assets/spine/coco-walk/images/coco_body_2.png.import b/assets/spine/coco-walk/images/coco_body_2.png.import new file mode 100644 index 0000000..83feecc --- /dev/null +++ b/assets/spine/coco-walk/images/coco_body_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dalxlvqrv3xku" +path="res://.godot/imported/coco_body_2.png-08930752ff81f991009d83c86bef5d51.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/coco-walk/images/coco_body_2.png" +dest_files=["res://.godot/imported/coco_body_2.png-08930752ff81f991009d83c86bef5d51.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/coco-walk/images/coco_eyebrows_1.png b/assets/spine/coco-walk/images/coco_eyebrows_1.png index eeadecf..b499801 100644 Binary files a/assets/spine/coco-walk/images/coco_eyebrows_1.png and b/assets/spine/coco-walk/images/coco_eyebrows_1.png differ diff --git a/assets/spine/coco-walk/images/coco_head_1.png b/assets/spine/coco-walk/images/coco_head_1.png index ae16500..32cd6b1 100644 Binary files a/assets/spine/coco-walk/images/coco_head_1.png and b/assets/spine/coco-walk/images/coco_head_1.png differ diff --git a/assets/spine/coco-walk/images/coco_head_2.png b/assets/spine/coco-walk/images/coco_head_2.png new file mode 100644 index 0000000..cc9e775 Binary files /dev/null and b/assets/spine/coco-walk/images/coco_head_2.png differ diff --git a/assets/spine/coco-walk/images/coco_head_2.png.import b/assets/spine/coco-walk/images/coco_head_2.png.import new file mode 100644 index 0000000..84e4623 --- /dev/null +++ b/assets/spine/coco-walk/images/coco_head_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bew858jkcyd8a" +path="res://.godot/imported/coco_head_2.png-fcf8c73db8028f0695e327ce3f17e227.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/coco-walk/images/coco_head_2.png" +dest_files=["res://.godot/imported/coco_head_2.png-fcf8c73db8028f0695e327ce3f17e227.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/coco-walk/images/coco_laptop_1.png b/assets/spine/coco-walk/images/coco_laptop_1.png new file mode 100644 index 0000000..2cdf50f Binary files /dev/null and b/assets/spine/coco-walk/images/coco_laptop_1.png differ diff --git a/assets/spine/coco-walk/images/coco_laptop_1.png.import b/assets/spine/coco-walk/images/coco_laptop_1.png.import new file mode 100644 index 0000000..87bef18 --- /dev/null +++ b/assets/spine/coco-walk/images/coco_laptop_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b34tqsmac3h5y" +path="res://.godot/imported/coco_laptop_1.png-fc0162ea4bfdc11b72bad2bf80a71225.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/coco-walk/images/coco_laptop_1.png" +dest_files=["res://.godot/imported/coco_laptop_1.png-fc0162ea4bfdc11b72bad2bf80a71225.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/coco-walk/images/coco_leg_back_2.png b/assets/spine/coco-walk/images/coco_leg_back_2.png new file mode 100644 index 0000000..aaf67f3 Binary files /dev/null and b/assets/spine/coco-walk/images/coco_leg_back_2.png differ diff --git a/assets/spine/coco-walk/images/coco_leg_back_2.png.import b/assets/spine/coco-walk/images/coco_leg_back_2.png.import new file mode 100644 index 0000000..d6136a3 --- /dev/null +++ b/assets/spine/coco-walk/images/coco_leg_back_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbda31eli61mt" +path="res://.godot/imported/coco_leg_back_2.png-e2c8d576243cf02a82c3944da9749514.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/coco-walk/images/coco_leg_back_2.png" +dest_files=["res://.godot/imported/coco_leg_back_2.png-e2c8d576243cf02a82c3944da9749514.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/coco-walk/images/coco_leg_front_2.png b/assets/spine/coco-walk/images/coco_leg_front_2.png new file mode 100644 index 0000000..5abb3d4 Binary files /dev/null and b/assets/spine/coco-walk/images/coco_leg_front_2.png differ diff --git a/assets/spine/coco-walk/images/coco_leg_front_2.png.import b/assets/spine/coco-walk/images/coco_leg_front_2.png.import new file mode 100644 index 0000000..9d969c8 --- /dev/null +++ b/assets/spine/coco-walk/images/coco_leg_front_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dkvst4vvr44te" +path="res://.godot/imported/coco_leg_front_2.png-0443a34e668f5a3fa97cf22ee2e8d4df.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/coco-walk/images/coco_leg_front_2.png" +dest_files=["res://.godot/imported/coco_leg_front_2.png-0443a34e668f5a3fa97cf22ee2e8d4df.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/coco-walk/images/coco_ponytail_1.png b/assets/spine/coco-walk/images/coco_ponytail_1.png index 379c95b..8e09a60 100644 Binary files a/assets/spine/coco-walk/images/coco_ponytail_1.png and b/assets/spine/coco-walk/images/coco_ponytail_1.png differ diff --git a/assets/spine/coco-walk/images/makeup_shotgun.png b/assets/spine/coco-walk/images/makeup_shotgun.png new file mode 100644 index 0000000..97961c5 Binary files /dev/null and b/assets/spine/coco-walk/images/makeup_shotgun.png differ diff --git a/assets/spine/coco-walk/images/makeup_shotgun.png.import b/assets/spine/coco-walk/images/makeup_shotgun.png.import new file mode 100644 index 0000000..9701584 --- /dev/null +++ b/assets/spine/coco-walk/images/makeup_shotgun.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://daa4nh3vyyu4f" +path="res://.godot/imported/makeup_shotgun.png-ed09e1ad06d001e6ab56a822536fe663.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/coco-walk/images/makeup_shotgun.png" +dest_files=["res://.godot/imported/makeup_shotgun.png-ed09e1ad06d001e6ab56a822536fe663.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/coco-walk/images/makeup_shotgun_fx_0.png b/assets/spine/coco-walk/images/makeup_shotgun_fx_0.png new file mode 100644 index 0000000..04e14e4 Binary files /dev/null and b/assets/spine/coco-walk/images/makeup_shotgun_fx_0.png differ diff --git a/assets/spine/coco-walk/images/makeup_shotgun_fx_0.png.import b/assets/spine/coco-walk/images/makeup_shotgun_fx_0.png.import new file mode 100644 index 0000000..93439ed --- /dev/null +++ b/assets/spine/coco-walk/images/makeup_shotgun_fx_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c728m6vxxhr5l" +path="res://.godot/imported/makeup_shotgun_fx_0.png-ba24f917faf9c3b0162b7d53b829f3da.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/coco-walk/images/makeup_shotgun_fx_0.png" +dest_files=["res://.godot/imported/makeup_shotgun_fx_0.png-ba24f917faf9c3b0162b7d53b829f3da.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/coco-walk/images/makeup_shotgun_fx_1.png b/assets/spine/coco-walk/images/makeup_shotgun_fx_1.png new file mode 100644 index 0000000..5658291 Binary files /dev/null and b/assets/spine/coco-walk/images/makeup_shotgun_fx_1.png differ diff --git a/assets/spine/coco-walk/images/makeup_shotgun_fx_1.png.import b/assets/spine/coco-walk/images/makeup_shotgun_fx_1.png.import new file mode 100644 index 0000000..a49c35b --- /dev/null +++ b/assets/spine/coco-walk/images/makeup_shotgun_fx_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwurne0py6y33" +path="res://.godot/imported/makeup_shotgun_fx_1.png-b97eb4dd49b3856c1ff98fd3509cb8b0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/coco-walk/images/makeup_shotgun_fx_1.png" +dest_files=["res://.godot/imported/makeup_shotgun_fx_1.png-b97eb4dd49b3856c1ff98fd3509cb8b0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/coco-walk/images/spine.json b/assets/spine/coco-walk/images/spine.json index cc89db2..3274be0 100644 --- a/assets/spine/coco-walk/images/spine.json +++ b/assets/spine/coco-walk/images/spine.json @@ -10,8 +10,8 @@ "name": "test", "parent": "root", "length": 0, - "x": 242.5, - "y": 1265.4999999999995 + "x": 179.5000000000009, + "y": 1334.4999999999995 } ], "slots": [ @@ -33,12 +33,24 @@ "attachment": "coco_leg_back_1", "blend": "normal" }, + { + "name": "coco_leg_back_2", + "bone": "root", + "attachment": "coco_leg_back_2", + "blend": "normal" + }, { "name": "coco_body_1", "bone": "root", "attachment": "coco_body_1", "blend": "normal" }, + { + "name": "coco_body_2", + "bone": "root", + "attachment": "coco_body_2", + "blend": "normal" + }, { "name": "coco_hand_back_1", "bone": "root", @@ -51,6 +63,18 @@ "attachment": "coco_arm_front_1", "blend": "normal" }, + { + "name": "coco_leg_front_2", + "bone": "root", + "attachment": "coco_leg_front_2", + "blend": "normal" + }, + { + "name": "Copy of coco_arm_front_1", + "bone": "root", + "attachment": "Copy of coco_arm_front_1", + "blend": "normal" + }, { "name": "coco_hand_front_1", "bone": "root", @@ -63,6 +87,30 @@ "attachment": "coco_ponytail_1", "blend": "normal" }, + { + "name": "makeup_shotgun", + "bone": "root", + "attachment": "makeup_shotgun", + "blend": "normal" + }, + { + "name": "makeup_shotgun_fx_0", + "bone": "root", + "attachment": "makeup_shotgun_fx_0", + "blend": "normal" + }, + { + "name": "makeup_shotgun_fx_1", + "bone": "root", + "attachment": "makeup_shotgun_fx_1", + "blend": "normal" + }, + { + "name": "coco_laptop_1", + "bone": "root", + "attachment": "coco_laptop_1", + "blend": "normal" + }, { "name": "coco_eyewhite_1", "bone": "root", @@ -87,6 +135,12 @@ "attachment": "coco_head_1", "blend": "normal" }, + { + "name": "coco_head_2", + "bone": "root", + "attachment": "coco_head_2", + "blend": "normal" + }, { "name": "test", "bone": "test", @@ -98,116 +152,188 @@ "default": { "coco_arm_back_1": { "coco_arm_back_1": { - "x": 106.0, - "y": 747.0, + "x": 43.0, + "y": 787.0, "width": 200, "height": 346 } }, "coco_leg_front_1": { "coco_leg_front_1": { - "x": -101.0, - "y": 270.0, + "x": -164.0, + "y": 310.0, "width": 244, "height": 824 } }, "coco_leg_back_1": { "coco_leg_back_1": { - "x": 72.0, - "y": 280.5, + "x": 9.0, + "y": 320.5, "width": 184, "height": 829 } }, + "coco_leg_back_2": { + "coco_leg_back_2": { + "x": 428.5, + "y": 345.5, + "width": 175, + "height": 783 + } + }, "coco_body_1": { "coco_body_1": { - "x": -29.0, - "y": 730.5, + "x": -92.0, + "y": 788.0, + "width": 278, + "height": 458 + } + }, + "coco_body_2": { + "coco_body_2": { + "x": 528.0, + "y": 790.5, "width": 278, "height": 423 } }, "coco_hand_back_1": { "coco_hand_back_1": { - "x": 213.5, - "y": 591.0, + "x": 150.5, + "y": 631.0, "width": 121, "height": 118 } }, "coco_arm_front_1": { "coco_arm_front_1": { - "x": -195.5, - "y": 732.0, + "x": -258.5, + "y": 772.0, "width": 175, "height": 396 } }, + "coco_leg_front_2": { + "coco_leg_front_2": { + "x": 869.5, + "y": 339.0, + "width": 847, + "height": 760 + } + }, + "Copy of coco_arm_front_1": { + "Copy of coco_arm_front_1": { + "x": 641.5, + "y": 753.5, + "width": 245, + "height": 419 + } + }, "coco_hand_front_1": { "coco_hand_front_1": { - "x": -270.5, - "y": 548.0, + "x": -333.5, + "y": 588.0, "width": 157, "height": 122 } }, "coco_ponytail_1": { "coco_ponytail_1": { - "x": -385.0, - "y": 1426.0, - "width": 166, - "height": 416 + "x": -561.0, + "y": 1485.5, + "width": 180, + "height": 375 + } + }, + "makeup_shotgun": { + "makeup_shotgun": { + "x": 403.5, + "y": 1760.0, + "width": 685, + "height": 250 + } + }, + "makeup_shotgun_fx_0": { + "makeup_shotgun_fx_0": { + "x": 867.5, + "y": 1838.5, + "width": 151, + "height": 171 + } + }, + "makeup_shotgun_fx_1": { + "makeup_shotgun_fx_1": { + "x": 1298.0, + "y": 1847.0, + "width": 414, + "height": 498 + } + }, + "coco_laptop_1": { + "coco_laptop_1": { + "x": 927.0, + "y": 1504.5, + "width": 396, + "height": 233 } }, "coco_eyewhite_1": { "coco_eyewhite_1": { - "x": -14.0, - "y": 1076.0, + "x": -77.0, + "y": 1116.0, "width": 218, "height": 208 } }, "coco_pupil_back_1": { "coco_pupil_back_1": { - "x": 37.5, - "y": 1047.0, + "x": -25.5, + "y": 1087.0, "width": 27, "height": 54 } }, "coco_pupil_front_1": { "coco_pupil_front_1": { - "x": -35.5, - "y": 1022.0, + "x": -98.5, + "y": 1062.0, "width": 55, "height": 124 } }, "coco_head_1": { "coco_head_1": { - "x": 9.5, - "y": 1090.5, + "x": -53.5, + "y": 1130.5, "width": 443, "height": 349 } }, + "coco_head_2": { + "coco_head_2": { + "x": 529.5, + "y": 1136.5, + "width": 411, + "height": 361 + } + }, "test": { "coco_eyebrows_1": { "x": -234.0, - "y": -133.0, + "y": -159.0, "width": 177, - "height": 55 + "height": 61 }, "accessories.png": { - "x": 125.5, - "y": -98.0, + "x": -121.5, + "y": 133.0, "width": 94, "height": 113 }, "flower.png": { "x": 168.5, - "y": 87.0, + "y": 58.0, "width": 308, "height": 147 } diff --git a/assets/spine/menu/images/Paint Layer 2.png b/assets/spine/menu/images/Paint Layer 2.png new file mode 100644 index 0000000..fe9f144 Binary files /dev/null and b/assets/spine/menu/images/Paint Layer 2.png differ diff --git a/assets/spine/menu/images/Paint Layer 2.png.import b/assets/spine/menu/images/Paint Layer 2.png.import new file mode 100644 index 0000000..167a28b --- /dev/null +++ b/assets/spine/menu/images/Paint Layer 2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1cpwkt3c3ote" +path="res://.godot/imported/Paint Layer 2.png-c35a357f49dc209385fae2819edf8b58.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/menu/images/Paint Layer 2.png" +dest_files=["res://.godot/imported/Paint Layer 2.png-c35a357f49dc209385fae2819edf8b58.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/menu/images/hand.png b/assets/spine/menu/images/hand.png new file mode 100644 index 0000000..e7296b4 Binary files /dev/null and b/assets/spine/menu/images/hand.png differ diff --git a/assets/spine/menu/images/hand.png.import b/assets/spine/menu/images/hand.png.import new file mode 100644 index 0000000..2f0c7c7 --- /dev/null +++ b/assets/spine/menu/images/hand.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://be8xujh4bijbf" +path="res://.godot/imported/hand.png-6af6f0867f65a84e5c3ba9536ec71f50.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/menu/images/hand.png" +dest_files=["res://.godot/imported/hand.png-6af6f0867f65a84e5c3ba9536ec71f50.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/menu/images/inv_screen.png b/assets/spine/menu/images/inv_screen.png new file mode 100644 index 0000000..d7f77e4 Binary files /dev/null and b/assets/spine/menu/images/inv_screen.png differ diff --git a/assets/spine/menu/images/inv_screen.png.import b/assets/spine/menu/images/inv_screen.png.import new file mode 100644 index 0000000..b0b0f90 --- /dev/null +++ b/assets/spine/menu/images/inv_screen.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dayktnhj5oaqg" +path="res://.godot/imported/inv_screen.png-42600d6fffc14f704c343b178450af56.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/menu/images/inv_screen.png" +dest_files=["res://.godot/imported/inv_screen.png-42600d6fffc14f704c343b178450af56.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/menu/images/journal_screen.png b/assets/spine/menu/images/journal_screen.png new file mode 100644 index 0000000..acc3bc8 Binary files /dev/null and b/assets/spine/menu/images/journal_screen.png differ diff --git a/assets/spine/menu/images/journal_screen.png.import b/assets/spine/menu/images/journal_screen.png.import new file mode 100644 index 0000000..fe478c3 --- /dev/null +++ b/assets/spine/menu/images/journal_screen.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bkwgroj1wf15q" +path="res://.godot/imported/journal_screen.png-9179f4e44a8c1aa6e251ac1447c4aa80.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/menu/images/journal_screen.png" +dest_files=["res://.godot/imported/journal_screen.png-9179f4e44a8c1aa6e251ac1447c4aa80.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/menu/images/laptop.png b/assets/spine/menu/images/laptop.png new file mode 100644 index 0000000..77d49cb Binary files /dev/null and b/assets/spine/menu/images/laptop.png differ diff --git a/assets/spine/menu/images/laptop.png.import b/assets/spine/menu/images/laptop.png.import new file mode 100644 index 0000000..40aefbc --- /dev/null +++ b/assets/spine/menu/images/laptop.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnfw43vfvgjfo" +path="res://.godot/imported/laptop.png-539b91d8263f66e2366aedc7afab93f4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/menu/images/laptop.png" +dest_files=["res://.godot/imported/laptop.png-539b91d8263f66e2366aedc7afab93f4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/menu/images/menu_screen.png b/assets/spine/menu/images/menu_screen.png new file mode 100644 index 0000000..e047fd6 Binary files /dev/null and b/assets/spine/menu/images/menu_screen.png differ diff --git a/assets/spine/menu/images/menu_screen.png.import b/assets/spine/menu/images/menu_screen.png.import new file mode 100644 index 0000000..0f3e599 --- /dev/null +++ b/assets/spine/menu/images/menu_screen.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwcq0b2xs4frm" +path="res://.godot/imported/menu_screen.png-62927edcc4dfcc13ab17ad3a9e335ea4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/menu/images/menu_screen.png" +dest_files=["res://.godot/imported/menu_screen.png-62927edcc4dfcc13ab17ad3a9e335ea4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/menu/images/pointer.png b/assets/spine/menu/images/pointer.png new file mode 100644 index 0000000..36312dc Binary files /dev/null and b/assets/spine/menu/images/pointer.png differ diff --git a/assets/spine/menu/images/pointer.png.import b/assets/spine/menu/images/pointer.png.import new file mode 100644 index 0000000..b0194bf --- /dev/null +++ b/assets/spine/menu/images/pointer.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cbn6tah6kf3jc" +path="res://.godot/imported/pointer.png-4c58a57bd1fd0b4cf01b8bf522542c9b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/menu/images/pointer.png" +dest_files=["res://.godot/imported/pointer.png-4c58a57bd1fd0b4cf01b8bf522542c9b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/menu/images/spine.json b/assets/spine/menu/images/spine.json new file mode 100644 index 0000000..54f5e95 --- /dev/null +++ b/assets/spine/menu/images/spine.json @@ -0,0 +1,129 @@ +{ + "skeleton": { + "images": "/home/user/Projects/Games/Test/assets/spine/menu/images/" + }, + "bones": [ + { + "name": "root" + } + ], + "slots": [ + { + "name": "Paint Layer 2", + "bone": "root", + "attachment": "Paint Layer 2", + "blend": "normal" + }, + { + "name": "journal_screen", + "bone": "root", + "attachment": "journal_screen", + "blend": "normal" + }, + { + "name": "menu_screen", + "bone": "root", + "attachment": "menu_screen", + "blend": "normal" + }, + { + "name": "stats_screen", + "bone": "root", + "attachment": "stats_screen", + "blend": "normal" + }, + { + "name": "inv_screen", + "bone": "root", + "attachment": "inv_screen", + "blend": "normal" + }, + { + "name": "laptop", + "bone": "root", + "attachment": "laptop", + "blend": "normal" + }, + { + "name": "hand", + "bone": "root", + "attachment": "hand", + "blend": "normal" + }, + { + "name": "pointer", + "bone": "root", + "attachment": "pointer", + "blend": "normal" + } + ], + "skins": { + "default": { + "Paint Layer 2": { + "Paint Layer 2": { + "x": -4.0, + "y": 533.0, + "width": 1128, + "height": 974 + } + }, + "journal_screen": { + "journal_screen": { + "x": 5.5, + "y": 560.0, + "width": 1029, + "height": 800 + } + }, + "menu_screen": { + "menu_screen": { + "x": 5.5, + "y": 560.0, + "width": 1029, + "height": 800 + } + }, + "stats_screen": { + "stats_screen": { + "x": 6.5, + "y": 560.0, + "width": 1027, + "height": 800 + } + }, + "inv_screen": { + "inv_screen": { + "x": 5.5, + "y": 560.0, + "width": 1029, + "height": 800 + } + }, + "laptop": { + "laptop": { + "x": 11.5, + "y": 423.0, + "width": 1477, + "height": 1274 + } + }, + "hand": { + "hand": { + "x": 424.0, + "y": -131.5, + "width": 472, + "height": 249 + } + }, + "pointer": { + "pointer": { + "x": -336.5, + "y": 916.0, + "width": 95, + "height": 88 + } + } + } + }, + "animations": {} +} \ No newline at end of file diff --git a/assets/spine/menu/images/stats_screen.png b/assets/spine/menu/images/stats_screen.png new file mode 100644 index 0000000..5d51496 Binary files /dev/null and b/assets/spine/menu/images/stats_screen.png differ diff --git a/assets/spine/menu/images/stats_screen.png.import b/assets/spine/menu/images/stats_screen.png.import new file mode 100644 index 0000000..d1e4aca --- /dev/null +++ b/assets/spine/menu/images/stats_screen.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpw2brxlsumv6" +path="res://.godot/imported/stats_screen.png-302aca7bfa2eea78da137d33367ee802.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/menu/images/stats_screen.png" +dest_files=["res://.godot/imported/stats_screen.png-302aca7bfa2eea78da137d33367ee802.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/menu/menu.spine b/assets/spine/menu/menu.spine new file mode 100644 index 0000000..7987422 Binary files /dev/null and b/assets/spine/menu/menu.spine differ diff --git a/assets/spine/tawna/hairpin.png b/assets/spine/tawna/hairpin.png new file mode 100644 index 0000000..7fc5d1c Binary files /dev/null and b/assets/spine/tawna/hairpin.png differ diff --git a/assets/spine/tawna/hairpin.png.import b/assets/spine/tawna/hairpin.png.import new file mode 100644 index 0000000..a5da205 --- /dev/null +++ b/assets/spine/tawna/hairpin.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cuvo5xehbgfpo" +path="res://.godot/imported/hairpin.png-d317e6ed5bffcd982f5b071c30cd3f0f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/tawna/hairpin.png" +dest_files=["res://.godot/imported/hairpin.png-d317e6ed5bffcd982f5b071c30cd3f0f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/tawna/spine.json b/assets/spine/tawna/spine.json new file mode 100644 index 0000000..3004078 --- /dev/null +++ b/assets/spine/tawna/spine.json @@ -0,0 +1,59 @@ +{ + "skeleton": { + "images": "/home/user/Projects/Games/Test/assets/spine/tawna/" + }, + "bones": [ + { + "name": "root" + } + ], + "slots": [ + { + "name": "hairpin", + "bone": "root", + "attachment": "hairpin", + "blend": "normal" + }, + { + "name": "tawna", + "bone": "root", + "attachment": "tawna", + "blend": "normal" + }, + { + "name": "tawna2", + "bone": "root", + "attachment": "tawna2", + "blend": "normal" + } + ], + "skins": { + "default": { + "hairpin": { + "hairpin": { + "x": 3667.36, + "y": -2791.74, + "width": 94, + "height": 113 + } + }, + "tawna": { + "tawna": { + "x": 3424.86, + "y": -3257.24, + "width": 487, + "height": 1152 + } + }, + "tawna2": { + "tawna2": { + "x": 3424.86, + "y": -3257.24, + "width": 487, + "height": 1152 + } + } + } + }, + "animations": {} +} \ No newline at end of file diff --git a/assets/spine/tawna/tawna.png b/assets/spine/tawna/tawna.png new file mode 100644 index 0000000..a81d38a Binary files /dev/null and b/assets/spine/tawna/tawna.png differ diff --git a/assets/spine/tawna/tawna.png.import b/assets/spine/tawna/tawna.png.import new file mode 100644 index 0000000..64bc467 --- /dev/null +++ b/assets/spine/tawna/tawna.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djs2larjanlvv" +path="res://.godot/imported/tawna.png-1d74aecd9c905845687936a1f88f0c4f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/tawna/tawna.png" +dest_files=["res://.godot/imported/tawna.png-1d74aecd9c905845687936a1f88f0c4f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/spine/tawna/tawna.spine b/assets/spine/tawna/tawna.spine new file mode 100644 index 0000000..01edfa0 Binary files /dev/null and b/assets/spine/tawna/tawna.spine differ diff --git a/assets/spine/tawna/tawna2.png b/assets/spine/tawna/tawna2.png new file mode 100644 index 0000000..6492479 Binary files /dev/null and b/assets/spine/tawna/tawna2.png differ diff --git a/assets/spine/tawna/tawna2.png.import b/assets/spine/tawna/tawna2.png.import new file mode 100644 index 0000000..a7f0415 --- /dev/null +++ b/assets/spine/tawna/tawna2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmqeoeh8sgisa" +path="res://.godot/imported/tawna2.png-36c7cd5d1e0c89767b6e48c5667f0d64.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spine/tawna/tawna2.png" +dest_files=["res://.godot/imported/tawna2.png-36c7cd5d1e0c89767b6e48c5667f0d64.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/ui/main_ui.gd b/assets/ui/main_ui.gd index b62c901..586b535 100644 --- a/assets/ui/main_ui.gd +++ b/assets/ui/main_ui.gd @@ -1,8 +1,16 @@ extends CanvasLayer +@onready var sprite: SpineSprite = $LaptopMenu/Control/SpineSprite + func _ready() -> void: GDRx.from_signal(Messagebus.DEBUG_XYZ).subscribe(display_xy).dispose_with(self) GDRx.from_signal(Messagebus.CHANGE_SCENE).subscribe(display_map).dispose_with(self) + GDRx.from_signal(Messagebus.COCO_STATE).subscribe(display_state).dispose_with(self) + +func display_state(name: String) -> void: + var coco_state = "Idle" + var state_label = $Control/MarginContainer/BoxContainer/VBoxContainer/StateLabel + state_label.text = "State:"+name #$FlipPage.set_shader_parameter("scale", Vector3(100,100,100)) diff --git a/assets/ui/main_ui.tscn b/assets/ui/main_ui.tscn index 1e30b3d..a12be47 100644 --- a/assets/ui/main_ui.tscn +++ b/assets/ui/main_ui.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=7 format=3 uid="uid://sq6kut2r2bqx"] +[gd_scene load_steps=8 format=3 uid="uid://sq6kut2r2bqx"] [ext_resource type="FontFile" uid="uid://bsp54mgll6mvy" path="res://assets/ui/FOT-PopJoyStd-B.otf" id="1_7sq06"] [ext_resource type="Script" path="res://assets/ui/main_ui.gd" id="1_ca2yl"] [ext_resource type="Shader" path="res://assets/ui/main_ui.gdshader" id="2_jrexl"] +[ext_resource type="PackedScene" uid="uid://cei6ecg57ja35" path="res://assets/ui/menu/laptop_menu.tscn" id="2_wklhg"] [ext_resource type="Shader" path="res://assets/characters/player_outline.gdshader" id="3_g5bqj"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_x68ve"] @@ -33,6 +34,12 @@ shader_parameter/Alpha = 1.0 [node name="MainUi" type="CanvasLayer"] script = ExtResource("1_ca2yl") +[node name="LaptopMenu" parent="." instance=ExtResource("2_wklhg")] +offset_left = 261.0 +offset_top = -61.0 +offset_right = 157.0 +offset_bottom = 143.0 + [node name="Transition" type="ColorRect" parent="."] material = SubResource("ShaderMaterial_x68ve") offset_right = 1949.0 @@ -81,6 +88,12 @@ layout_mode = 2 size_flags_horizontal = 2 size_flags_vertical = 8 +[node name="StateLabel" type="Label" parent="Control/MarginContainer/BoxContainer/VBoxContainer"] +layout_mode = 2 +theme_override_fonts/font = ExtResource("1_7sq06") +theme_override_font_sizes/font_size = 40 +text = "State: Unknown" + [node name="XYZLabel" type="Label" parent="Control/MarginContainer/BoxContainer/VBoxContainer"] layout_mode = 2 theme_override_fonts/font = ExtResource("1_7sq06") @@ -94,3 +107,7 @@ layout_mode = 2 theme_override_fonts/font = ExtResource("1_7sq06") theme_override_font_sizes/font_size = 40 text = "Map: debug1" + +[node name="LimboHSM" type="LimboHSM" parent="."] + +[node name="LimboState" type="LimboState" parent="LimboHSM"] diff --git a/assets/ui/menu/laptop_menu.atlas b/assets/ui/menu/laptop_menu.atlas new file mode 100644 index 0000000..efc6034 --- /dev/null +++ b/assets/ui/menu/laptop_menu.atlas @@ -0,0 +1,24 @@ +laptop_menu.png +size:1684,1043 +filter:Linear,Linear +scale:0.5 +Paint Layer 2 +bounds:743,477,564,487 +rotate:90 +hand +bounds:518,166,236,125 +rotate:90 +inv_screen +bounds:743,75,515,400 +journal_screen +bounds:1232,526,515,400 +rotate:90 +laptop +bounds:2,404,739,637 +menu_screen +bounds:1282,9,515,400 +rotate:90 +pointer +bounds:1232,480,48,44 +stats_screen +bounds:2,2,514,400 diff --git a/assets/ui/menu/laptop_menu.atlas.import b/assets/ui/menu/laptop_menu.atlas.import new file mode 100644 index 0000000..5665a2c --- /dev/null +++ b/assets/ui/menu/laptop_menu.atlas.import @@ -0,0 +1,15 @@ +[remap] + +importer="spine.atlas" +type="SpineAtlasResource" +uid="uid://i8of4ot88vfe" +path="res://.godot/imported/laptop_menu.atlas-af472bcf3fb58545990289cf0c991153.spatlas" + +[deps] + +source_file="res://assets/ui/menu/laptop_menu.atlas" +dest_files=["res://.godot/imported/laptop_menu.atlas-af472bcf3fb58545990289cf0c991153.spatlas"] + +[params] + +normal_map_prefix="n" diff --git a/assets/ui/menu/laptop_menu.gd b/assets/ui/menu/laptop_menu.gd new file mode 100644 index 0000000..21da4e6 --- /dev/null +++ b/assets/ui/menu/laptop_menu.gd @@ -0,0 +1,40 @@ +extends Control + +@onready var spine_sprite: SpineSprite = $Control/SpineSprite +var anim_state: SpineAnimationState +var last_menu: String = "stats" +var options = { + "stats": {}, + "inv": {}, + "journal": {}, + "menu": {}, +} + +func _ready() -> void: + anim_state = spine_sprite.get_animation_state() + anim_state.set_animation("pointer", true, 4) + anim_state.set_animation("typing", true, 3) + + Messagebus.LAPTOP.connect(maybe_show_laptop) + +func maybe_show_laptop(show: bool): + var a = spine_sprite.get_animation_state() + if self.is_visible_in_tree(): + self.hide() + a.set_animation("hide", false, 0) + else: + self.show() + a.set_animation("show", false, 0) + + + # +#func _process(delta: float) -> void: + #if Input.is_action_pressed("Pause"): + #print("enter laptop state here") + #if self.is_visible_in_tree(): + #self.hide() + #anim_state.set_animation("hide", false, 0) + #else: + #self.show() + #anim_state.set_animation("show", false, 0) + # diff --git a/assets/ui/menu/laptop_menu.png b/assets/ui/menu/laptop_menu.png new file mode 100644 index 0000000..1bcb66b Binary files /dev/null and b/assets/ui/menu/laptop_menu.png differ diff --git a/assets/ui/menu/laptop_menu.png.import b/assets/ui/menu/laptop_menu.png.import new file mode 100644 index 0000000..8989695 --- /dev/null +++ b/assets/ui/menu/laptop_menu.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b40bk8khjimro" +path="res://.godot/imported/laptop_menu.png-85ef6a041aef7f90db2ac657dd9888cf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/ui/menu/laptop_menu.png" +dest_files=["res://.godot/imported/laptop_menu.png-85ef6a041aef7f90db2ac657dd9888cf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/ui/menu/laptop_menu.skel b/assets/ui/menu/laptop_menu.skel new file mode 100644 index 0000000..3d0e9ff Binary files /dev/null and b/assets/ui/menu/laptop_menu.skel differ diff --git a/assets/ui/menu/laptop_menu.skel.import b/assets/ui/menu/laptop_menu.skel.import new file mode 100644 index 0000000..77c2cbd --- /dev/null +++ b/assets/ui/menu/laptop_menu.skel.import @@ -0,0 +1,14 @@ +[remap] + +importer="spine.skel" +type="SpineSkeletonFileResource" +uid="uid://cadv3ufdyphe6" +path="res://.godot/imported/laptop_menu.skel-ef2460c46b9880fbf0b3a932a675a6d7.spskel" + +[deps] + +source_file="res://assets/ui/menu/laptop_menu.skel" +dest_files=["res://.godot/imported/laptop_menu.skel-ef2460c46b9880fbf0b3a932a675a6d7.spskel"] + +[params] + diff --git a/assets/ui/menu/laptop_menu.tscn b/assets/ui/menu/laptop_menu.tscn new file mode 100644 index 0000000..63f9354 --- /dev/null +++ b/assets/ui/menu/laptop_menu.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=5 format=3 uid="uid://cei6ecg57ja35"] + +[ext_resource type="SpineAtlasResource" uid="uid://i8of4ot88vfe" path="res://assets/ui/menu/laptop_menu.atlas" id="1_cjg4b"] +[ext_resource type="Script" path="res://assets/ui/menu/laptop_menu.gd" id="1_lw7wl"] +[ext_resource type="SpineSkeletonFileResource" uid="uid://cadv3ufdyphe6" path="res://assets/ui/menu/laptop_menu.skel" id="2_1tqrt"] + +[sub_resource type="SpineSkeletonDataResource" id="SpineSkeletonDataResource_0o7ph"] +atlas_res = ExtResource("1_cjg4b") +skeleton_file_res = ExtResource("2_1tqrt") + +[node name="LaptopMenu" type="Control"] +visible = false +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_lw7wl") + +[node name="Control" type="Control" parent="."] +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="SpineSprite" type="SpineSprite" parent="Control"] +unique_name_in_owner = true +position = Vector2(744.783, 1151) +scale = Vector2(0.888371, 0.88837) +skeleton_data_res = SubResource("SpineSkeletonDataResource_0o7ph") +preview_skin = "Default" +preview_animation = "-- Empty --" +preview_frame = false +preview_time = 0.0 diff --git a/demo/agents/scripts/agent_base.gd b/demo/agents/scripts/agent_base.gd index e17a0e2..d70820e 100644 --- a/demo/agents/scripts/agent_base.gd +++ b/demo/agents/scripts/agent_base.gd @@ -34,128 +34,128 @@ var _moved_this_frame: bool = false func _ready() -> void: - health.damaged.connect(_damaged) - health.death.connect(die) + health.damaged.connect(_damaged) + health.death.connect(die) func _physics_process(_delta: float) -> void: - _post_physics_process.call_deferred() + _post_physics_process.call_deferred() func _post_physics_process() -> void: - if not _moved_this_frame: - velocity = lerp(velocity, Vector2.ZERO, 0.5) - _moved_this_frame = false + if not _moved_this_frame: + velocity = lerp(velocity, Vector2.ZERO, 0.5) + _moved_this_frame = false func move(p_velocity: Vector2) -> void: - velocity = lerp(velocity, p_velocity, 0.2) - move_and_slide() - _moved_this_frame = true + velocity = lerp(velocity, p_velocity, 0.2) + move_and_slide() + _moved_this_frame = true ## Update agent's facing in the velocity direction. func update_facing() -> void: - _frames_since_facing_update += 1 - if _frames_since_facing_update > 3: - face_dir(velocity.x) + _frames_since_facing_update += 1 + if _frames_since_facing_update > 3: + face_dir(velocity.x) ## Face specified direction. func face_dir(dir: float) -> void: - if dir > 0.0 and root.scale.x < 0.0: - root.scale.x = 1.0; - _frames_since_facing_update = 0 - if dir < 0.0 and root.scale.x > 0.0: - root.scale.x = -1.0; - _frames_since_facing_update = 0 + if dir > 0.0 and root.scale.x < 0.0: + root.scale.x = 1.0; + _frames_since_facing_update = 0 + if dir < 0.0 and root.scale.x > 0.0: + root.scale.x = -1.0; + _frames_since_facing_update = 0 ## Returns 1.0 when agent is facing right. ## Returns -1.0 when agent is facing left. func get_facing() -> float: - return signf(root.scale.x) + return signf(root.scale.x) func throw_ninja_star() -> void: - var ninja_star := NinjaStar.instantiate() - ninja_star.dir = get_facing() - get_parent().add_child(ninja_star) - ninja_star.global_position = global_position + Vector2.RIGHT * 100.0 * get_facing() + var ninja_star := NinjaStar.instantiate() + ninja_star.dir = get_facing() + get_parent().add_child(ninja_star) + ninja_star.global_position = global_position + Vector2.RIGHT * 100.0 * get_facing() func spit_fire() -> void: - var fireball := Fireball.instantiate() - fireball.dir = get_facing() - get_parent().add_child(fireball) - fireball.global_position = global_position + Vector2.RIGHT * 100.0 * get_facing() + var fireball := Fireball.instantiate() + fireball.dir = get_facing() + get_parent().add_child(fireball) + fireball.global_position = global_position + Vector2.RIGHT * 100.0 * get_facing() func summon_minion(p_position: Vector2) -> void: - var minion: CharacterBody2D = load(MINION_RESOURCE).instantiate() - get_parent().add_child(minion) - minion.position = p_position - minion.play_summoning_effect() - summon_count += 1 - minion.death.connect(func(): summon_count -= 1) + var minion: CharacterBody2D = load(MINION_RESOURCE).instantiate() + get_parent().add_child(minion) + minion.position = p_position + minion.play_summoning_effect() + summon_count += 1 + minion.death.connect(func(): summon_count -= 1) -## Method is used when this agent is summoned from the dungeons of the castle AaaAaaAAAAAaaAAaaaaaa +## Method is used when this agent is summoned from the dungeons of the castle func play_summoning_effect() -> void: - summoning_effect.emitting = true + summoning_effect.emitting = true ## Is specified position inside the arena (not inside an obstacle)? func is_good_position(p_position: Vector2) -> bool: - var space_state := get_world_2d().direct_space_state - var params := PhysicsPointQueryParameters2D.new() - params.position = p_position - params.collision_mask = 1 # Obstacle layer has value 1 - var collision := space_state.intersect_point(params) - return collision.is_empty() + var space_state := get_world_2d().direct_space_state + var params := PhysicsPointQueryParameters2D.new() + params.position = p_position + params.collision_mask = 1 # Obstacle layer has value 1 + var collision := space_state.intersect_point(params) + return collision.is_empty() ## When agent is damaged... func _damaged(_amount: float, knockback: Vector2) -> void: - apply_knockback(knockback) - animation_player.play(&"hurt") - var btplayer := get_node_or_null(^"BTPlayer") as BTPlayer - if btplayer: - btplayer.set_active(false) - var hsm := get_node_or_null(^"LimboHSM") - if hsm: - hsm.set_active(false) - await animation_player.animation_finished - if btplayer and not _is_dead: - btplayer.restart() - if hsm and not _is_dead: - hsm.set_active(true) + apply_knockback(knockback) + animation_player.play(&"hurt") + var btplayer := get_node_or_null(^"BTPlayer") as BTPlayer + if btplayer: + btplayer.set_active(false) + var hsm := get_node_or_null(^"LimboHSM") + if hsm: + hsm.set_active(false) + await animation_player.animation_finished + if btplayer and not _is_dead: + btplayer.restart() + if hsm and not _is_dead: + hsm.set_active(true) ## Push agent in the knockback direction for the specified number of physics frames. func apply_knockback(knockback: Vector2, frames: int = 10) -> void: - if knockback.is_zero_approx(): - return - for i in range(frames): - move(knockback) - await get_tree().physics_frame + if knockback.is_zero_approx(): + return + for i in range(frames): + move(knockback) + await get_tree().physics_frame func die() -> void: - if _is_dead: - return - death.emit() - _is_dead = true - root.process_mode = Node.PROCESS_MODE_DISABLED - animation_player.play(&"death") - collision_shape_2d.set_deferred(&"disabled", true) + if _is_dead: + return + death.emit() + _is_dead = true + root.process_mode = Node.PROCESS_MODE_DISABLED + animation_player.play(&"death") + collision_shape_2d.set_deferred(&"disabled", true) - for child in get_children(): - if child is BTPlayer or child is LimboHSM: - child.set_active(false) + for child in get_children(): + if child is BTPlayer or child is LimboHSM: + child.set_active(false) - if get_tree(): - await get_tree().create_timer(10.0).timeout - queue_free() + if get_tree(): + await get_tree().create_timer(10.0).timeout + queue_free() func get_health() -> Health: - return health + return health diff --git a/project.godot b/project.godot index 85eba8f..3a3b2f1 100644 --- a/project.godot +++ b/project.godot @@ -103,6 +103,11 @@ zoom_out={ , Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":16,"position":Vector2(261, 10),"global_position":Vector2(275, 80),"factor":1.0,"button_index":5,"canceled":false,"pressed":true,"double_click":false,"script":null) ] } +Pause={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} [input_devices] diff --git a/src/main.gd b/src/main.gd index bdbcc92..91803a7 100644 --- a/src/main.gd +++ b/src/main.gd @@ -1,11 +1,31 @@ extends Node @export var test := 100 +var paused = false func _ready() -> void: GDRx.start_periodic_timer(1.0) \ .subscribe(func(i): print("Tick: ", i)) \ .dispose_with(self) - + GDRx.on_input_as_observable(self) \ + .filter(is_pause_event) \ + .filter(can_pause) \ + .throttle_first(1) \ + .subscribe(handle_pause) \ + .dispose_with(self) + +func is_pause_event(event): + if event is InputEventKey: + #print(event) + return event.is_action("Pause") + +func can_pause(event): + return false + +func handle_pause(event): + paused = !paused + print("PAUSE: "+str(paused)) + get_tree().paused = paused + func move() -> void: pass diff --git a/src/messagebus.gd b/src/messagebus.gd index 48da7e2..254afc4 100644 --- a/src/messagebus.gd +++ b/src/messagebus.gd @@ -3,3 +3,5 @@ extends Node signal CHANGE_SCENE(scene: String) signal DEBUG_XYZ(origin: Vector3) signal DEBUG_MAP(name: String) +signal COCO_STATE(name: String) +signal LAPTOP(show: bool) diff --git a/src/spine_sprite.gd b/src/spine_sprite.gd index 25b9c69..18b5ec2 100644 --- a/src/spine_sprite.gd +++ b/src/spine_sprite.gd @@ -5,7 +5,7 @@ extends SpineSprite func _ready() -> void: var a = get_animation_state() if a: - a.set_animation("idle", true, 0) + a.set_animation("animation", true, 0) a.set_time_scale(time_scale) func _process(delta: float) -> void: