This commit is contained in:
user 2025-02-05 06:33:48 +01:00
parent f6be664a26
commit ed099309fe
83 changed files with 1602 additions and 181 deletions

View File

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

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

After

Width:  |  Height:  |  Size: 220 KiB

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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)
if Input.is_action_just_pressed("jump") and is_on_floor():
self.velocity.y = delta * JUMP_VELOCITY
var i = Input.get_axis("move_left", "move_right")
if snapped(i, 1):
last_direction = Vector3(sign(i), 1, 1)
var t: Material = $MeshInstance3D.material_override
t.uv1_scale = last_direction
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):
self.last_direction = Vector3(sign(i), 1, 1)
var t: Material = $MeshInstance3D.material_override
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

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 473 KiB

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

View File

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

View File

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

View File

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

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

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

View File

@ -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": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

View File

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

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

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

View File

@ -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": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 KiB

View File

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

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 KiB

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

View File

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

Binary file not shown.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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