Adding all the files
BIN
Action RPG Resources.zip
Normal file
BIN
Action RPG Resources/.DS_Store
vendored
Normal file
BIN
Action RPG Resources/Effects/EnemyDeathEffect.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
Action RPG Resources/Effects/GrassEffect.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
Action RPG Resources/Effects/HitEffect.png
Normal file
After Width: | Height: | Size: 363 B |
BIN
Action RPG Resources/Enemies/Bat.png
Normal file
After Width: | Height: | Size: 627 B |
BIN
Action RPG Resources/Music and Sounds/EnemyDie.wav
Normal file
BIN
Action RPG Resources/Music and Sounds/Evade.wav
Normal file
BIN
Action RPG Resources/Music and Sounds/Hit.wav
Normal file
BIN
Action RPG Resources/Music and Sounds/Hurt.wav
Normal file
BIN
Action RPG Resources/Music and Sounds/Menu Move.wav
Normal file
BIN
Action RPG Resources/Music and Sounds/Menu Select.wav
Normal file
BIN
Action RPG Resources/Music and Sounds/Music.mp3
Normal file
BIN
Action RPG Resources/Music and Sounds/Pause.wav
Normal file
BIN
Action RPG Resources/Music and Sounds/Swipe.wav
Normal file
BIN
Action RPG Resources/Music and Sounds/Unpause.wav
Normal file
BIN
Action RPG Resources/Player/Player.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
Action RPG Resources/Shadows/LargeShadow.png
Normal file
After Width: | Height: | Size: 161 B |
BIN
Action RPG Resources/Shadows/MediumShadow.png
Normal file
After Width: | Height: | Size: 123 B |
BIN
Action RPG Resources/Shadows/SmallShadow.png
Normal file
After Width: | Height: | Size: 110 B |
BIN
Action RPG Resources/UI/HeartUIEmpty.png
Normal file
After Width: | Height: | Size: 139 B |
BIN
Action RPG Resources/UI/HeartUIFull.png
Normal file
After Width: | Height: | Size: 244 B |
BIN
Action RPG Resources/World/Bush.png
Normal file
After Width: | Height: | Size: 673 B |
BIN
Action RPG Resources/World/CliffTileset.png
Normal file
After Width: | Height: | Size: 7.2 KiB |
BIN
Action RPG Resources/World/DirtTileset.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
Action RPG Resources/World/Grass.png
Normal file
After Width: | Height: | Size: 380 B |
BIN
Action RPG Resources/World/GrassBackground.png
Normal file
After Width: | Height: | Size: 1022 B |
BIN
Action RPG Resources/World/Tree.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
ActionRPG-HeartBeast/.DS_Store
vendored
Normal file
BIN
ActionRPG-HeartBeast/Effects/EnemyDeathEffect.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
35
ActionRPG-HeartBeast/Effects/EnemyDeathEffect.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/EnemyDeathEffect.png-b5f2aceef00ffbc3c194806ee7af6666.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Effects/EnemyDeathEffect.png"
|
||||||
|
dest_files=[ "res://.import/EnemyDeathEffect.png-b5f2aceef00ffbc3c194806ee7af6666.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/Effects/GrassEffect.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
35
ActionRPG-HeartBeast/Effects/GrassEffect.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/GrassEffect.png-e13c4c94a67cb5ef9b389379ed46bf17.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Effects/GrassEffect.png"
|
||||||
|
dest_files=[ "res://.import/GrassEffect.png-e13c4c94a67cb5ef9b389379ed46bf17.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/Effects/HitEffect.png
Normal file
After Width: | Height: | Size: 363 B |
35
ActionRPG-HeartBeast/Effects/HitEffect.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/HitEffect.png-4a350a9d7635dd7543954c4499aead9c.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Effects/HitEffect.png"
|
||||||
|
dest_files=[ "res://.import/HitEffect.png-4a350a9d7635dd7543954c4499aead9c.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/Enemies/Bat.png
Normal file
After Width: | Height: | Size: 627 B |
35
ActionRPG-HeartBeast/Enemies/Bat.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/Bat.png-38405154cd5b8ff1c5e2fcf1cef1c3e6.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Enemies/Bat.png"
|
||||||
|
dest_files=[ "res://.import/Bat.png-38405154cd5b8ff1c5e2fcf1cef1c3e6.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/Music and Sounds/EnemyDie.wav
Normal file
23
ActionRPG-HeartBeast/Music and Sounds/EnemyDie.wav.import
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamSample"
|
||||||
|
path="res://.import/EnemyDie.wav-a486c87c5ffce10facfdaf6e118ee22d.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Music and Sounds/EnemyDie.wav"
|
||||||
|
dest_files=[ "res://.import/EnemyDie.wav-a486c87c5ffce10facfdaf6e118ee22d.sample" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
BIN
ActionRPG-HeartBeast/Music and Sounds/Evade.wav
Normal file
23
ActionRPG-HeartBeast/Music and Sounds/Evade.wav.import
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamSample"
|
||||||
|
path="res://.import/Evade.wav-cd612618661f05b5e39dccebc8901a0b.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Music and Sounds/Evade.wav"
|
||||||
|
dest_files=[ "res://.import/Evade.wav-cd612618661f05b5e39dccebc8901a0b.sample" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
BIN
ActionRPG-HeartBeast/Music and Sounds/Hit.wav
Normal file
23
ActionRPG-HeartBeast/Music and Sounds/Hit.wav.import
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamSample"
|
||||||
|
path="res://.import/Hit.wav-0fa8d06aa64f0c3d5cf8be50a2076760.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Music and Sounds/Hit.wav"
|
||||||
|
dest_files=[ "res://.import/Hit.wav-0fa8d06aa64f0c3d5cf8be50a2076760.sample" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
BIN
ActionRPG-HeartBeast/Music and Sounds/Hurt.wav
Normal file
23
ActionRPG-HeartBeast/Music and Sounds/Hurt.wav.import
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamSample"
|
||||||
|
path="res://.import/Hurt.wav-9a8feff0886efa16ed78b7703de45922.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Music and Sounds/Hurt.wav"
|
||||||
|
dest_files=[ "res://.import/Hurt.wav-9a8feff0886efa16ed78b7703de45922.sample" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
BIN
ActionRPG-HeartBeast/Music and Sounds/Menu Move.wav
Normal file
23
ActionRPG-HeartBeast/Music and Sounds/Menu Move.wav.import
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamSample"
|
||||||
|
path="res://.import/Menu Move.wav-d97a887eeb77e9f82d0179618aff26aa.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Music and Sounds/Menu Move.wav"
|
||||||
|
dest_files=[ "res://.import/Menu Move.wav-d97a887eeb77e9f82d0179618aff26aa.sample" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
BIN
ActionRPG-HeartBeast/Music and Sounds/Menu Select.wav
Normal file
23
ActionRPG-HeartBeast/Music and Sounds/Menu Select.wav.import
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamSample"
|
||||||
|
path="res://.import/Menu Select.wav-cf35ab6ee2afc13096e6bf584e78dcaf.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Music and Sounds/Menu Select.wav"
|
||||||
|
dest_files=[ "res://.import/Menu Select.wav-cf35ab6ee2afc13096e6bf584e78dcaf.sample" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
BIN
ActionRPG-HeartBeast/Music and Sounds/Music.mp3
Normal file
15
ActionRPG-HeartBeast/Music and Sounds/Music.mp3.import
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="mp3"
|
||||||
|
type="AudioStreamMP3"
|
||||||
|
path="res://.import/Music.mp3-fbb50ed95d66ff7af78edb9c3a8f7b4d.mp3str"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Music and Sounds/Music.mp3"
|
||||||
|
dest_files=[ "res://.import/Music.mp3-fbb50ed95d66ff7af78edb9c3a8f7b4d.mp3str" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=true
|
||||||
|
loop_offset=0
|
BIN
ActionRPG-HeartBeast/Music and Sounds/Pause.wav
Normal file
23
ActionRPG-HeartBeast/Music and Sounds/Pause.wav.import
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamSample"
|
||||||
|
path="res://.import/Pause.wav-2283faeb42b74e3f6e4809669cc9a8ab.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Music and Sounds/Pause.wav"
|
||||||
|
dest_files=[ "res://.import/Pause.wav-2283faeb42b74e3f6e4809669cc9a8ab.sample" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
BIN
ActionRPG-HeartBeast/Music and Sounds/Swipe.wav
Normal file
23
ActionRPG-HeartBeast/Music and Sounds/Swipe.wav.import
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamSample"
|
||||||
|
path="res://.import/Swipe.wav-1b0f341b1727da219872e70c921da651.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Music and Sounds/Swipe.wav"
|
||||||
|
dest_files=[ "res://.import/Swipe.wav-1b0f341b1727da219872e70c921da651.sample" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
BIN
ActionRPG-HeartBeast/Music and Sounds/Unpause.wav
Normal file
23
ActionRPG-HeartBeast/Music and Sounds/Unpause.wav.import
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamSample"
|
||||||
|
path="res://.import/Unpause.wav-804d58e6ee88c8f6467ca3b5bea5857f.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Music and Sounds/Unpause.wav"
|
||||||
|
dest_files=[ "res://.import/Unpause.wav-804d58e6ee88c8f6467ca3b5bea5857f.sample" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
69
ActionRPG-HeartBeast/Player/Player.gd
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
extends KinematicBody2D
|
||||||
|
|
||||||
|
var velocity = Vector2.ZERO
|
||||||
|
var input_vector = Vector2.ZERO
|
||||||
|
|
||||||
|
const ACCELERATION = 500
|
||||||
|
const MAX_SPEED = 80
|
||||||
|
const FRICTION = 500
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MOVE,
|
||||||
|
ROLL,
|
||||||
|
ATTACK
|
||||||
|
}
|
||||||
|
|
||||||
|
var state = MOVE
|
||||||
|
|
||||||
|
onready var animationPlayer = $AnimationPlayer
|
||||||
|
onready var animationTree = $AnimationTree
|
||||||
|
onready var animationState = animationTree.get("parameters/playback")
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
animationTree.active = true
|
||||||
|
|
||||||
|
func _physics_process(delta):
|
||||||
|
match state:
|
||||||
|
MOVE:
|
||||||
|
move_state(delta)
|
||||||
|
|
||||||
|
ROLL:
|
||||||
|
pass
|
||||||
|
|
||||||
|
ATTACK:
|
||||||
|
attack_state(delta)
|
||||||
|
|
||||||
|
func move_state(delta):
|
||||||
|
input_vector.x = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
|
||||||
|
input_vector.y = Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up")
|
||||||
|
input_vector = input_vector.normalized()
|
||||||
|
if input_vector != Vector2.ZERO:
|
||||||
|
animationTree.set("parameters/Idle/blend_position", input_vector)
|
||||||
|
animationTree.set("parameters/Run/blend_position", input_vector)
|
||||||
|
animationState.travel("Run")
|
||||||
|
velocity = velocity.move_toward(input_vector * MAX_SPEED, ACCELERATION * delta)
|
||||||
|
else:
|
||||||
|
#animationPlayer.play("IdleRight")
|
||||||
|
animationState.travel("Idle")
|
||||||
|
velocity = velocity.move_toward(Vector2.ZERO, FRICTION * delta)
|
||||||
|
|
||||||
|
velocity = move_and_slide(velocity)
|
||||||
|
|
||||||
|
if Input.is_action_just_pressed("attack"):
|
||||||
|
state = ATTACK
|
||||||
|
|
||||||
|
func attack_state(delta):
|
||||||
|
#velocity = Vector2.ZERO
|
||||||
|
animationTree.set("parameters/Attack/blend_position", input_vector)
|
||||||
|
animationState.travel("Attack")
|
||||||
|
velocity = Vector2.ZERO
|
||||||
|
#velocity = velocity.move_toward(Vector2.ZERO, FRICTION*delta)
|
||||||
|
#velocity = move_and_slide(velocity)
|
||||||
|
|
||||||
|
|
||||||
|
func attack_aninimation_finished():
|
||||||
|
state = MOVE
|
||||||
|
|
||||||
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
|
#func _process(delta):
|
||||||
|
# pass
|
BIN
ActionRPG-HeartBeast/Player/Player.png
Normal file
After Width: | Height: | Size: 16 KiB |
35
ActionRPG-HeartBeast/Player/Player.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/Player.png-3d0801c65bdfc563657cfa304115f1c7.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Player/Player.png"
|
||||||
|
dest_files=[ "res://.import/Player.png-3d0801c65bdfc563657cfa304115f1c7.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
413
ActionRPG-HeartBeast/Player/Player.tscn
Normal file
@ -0,0 +1,413 @@
|
|||||||
|
[gd_scene load_steps=40 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://Player/Player.gd" type="Script" id=1]
|
||||||
|
[ext_resource path="res://Player/Player.png" type="Texture" id=2]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape2D" id=1]
|
||||||
|
radius = 4.0
|
||||||
|
height = 4.0
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=27]
|
||||||
|
resource_name = "AttackDown"
|
||||||
|
length = 0.4
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ),
|
||||||
|
"transitions": PoolRealArray( 1, 1, 1, 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ 36, 37, 38, 39 ]
|
||||||
|
}
|
||||||
|
tracks/1/type = "method"
|
||||||
|
tracks/1/path = NodePath(".")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PoolRealArray( 0.4 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"values": [ {
|
||||||
|
"args": [ ],
|
||||||
|
"method": "attack_aninimation_finished"
|
||||||
|
} ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=28]
|
||||||
|
resource_name = "AttackLeft"
|
||||||
|
length = 0.4
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ),
|
||||||
|
"transitions": PoolRealArray( 1, 1, 1, 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ 32, 33, 34, 35 ]
|
||||||
|
}
|
||||||
|
tracks/1/type = "method"
|
||||||
|
tracks/1/path = NodePath(".")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PoolRealArray( 0.4 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"values": [ {
|
||||||
|
"args": [ ],
|
||||||
|
"method": "attack_aninimation_finished"
|
||||||
|
} ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=29]
|
||||||
|
resource_name = "AttackRight"
|
||||||
|
length = 0.4
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ),
|
||||||
|
"transitions": PoolRealArray( 1, 1, 1, 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ 24, 25, 26, 27 ]
|
||||||
|
}
|
||||||
|
tracks/1/type = "method"
|
||||||
|
tracks/1/path = NodePath(".")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PoolRealArray( 0.4 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"values": [ {
|
||||||
|
"args": [ ],
|
||||||
|
"method": "attack_aninimation_finished"
|
||||||
|
} ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=30]
|
||||||
|
resource_name = "AttackUp"
|
||||||
|
length = 0.4
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ),
|
||||||
|
"transitions": PoolRealArray( 1, 1, 1, 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ 28, 29, 30, 31 ]
|
||||||
|
}
|
||||||
|
tracks/1/type = "method"
|
||||||
|
tracks/1/path = NodePath(".")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PoolRealArray( 0.4 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"values": [ {
|
||||||
|
"args": [ ],
|
||||||
|
"method": "attack_aninimation_finished"
|
||||||
|
} ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=9]
|
||||||
|
resource_name = "IdleDown"
|
||||||
|
length = 0.1
|
||||||
|
loop = true
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ 18 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=10]
|
||||||
|
resource_name = "IdleLeft"
|
||||||
|
length = 0.1
|
||||||
|
loop = true
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ 12 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=7]
|
||||||
|
resource_name = "IdleRight"
|
||||||
|
length = 0.1
|
||||||
|
loop = true
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0.1 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ 0 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=8]
|
||||||
|
resource_name = "IdleUp"
|
||||||
|
length = 0.1
|
||||||
|
loop = true
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ 6 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=2]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"update": 0,
|
||||||
|
"values": [ 0 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=6]
|
||||||
|
resource_name = "RunDown"
|
||||||
|
length = 0.6
|
||||||
|
loop = true
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5 ),
|
||||||
|
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ 19, 19, 21, 22, 23, 18 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=4]
|
||||||
|
resource_name = "RunLeft"
|
||||||
|
length = 0.6
|
||||||
|
loop = true
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5 ),
|
||||||
|
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ 13, 14, 15, 16, 17, 12 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=3]
|
||||||
|
resource_name = "RunRight"
|
||||||
|
length = 0.6
|
||||||
|
loop = true
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5 ),
|
||||||
|
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ 1, 2, 3, 4, 5, 0 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=5]
|
||||||
|
resource_name = "RunUp"
|
||||||
|
length = 0.6
|
||||||
|
loop = true
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5 ),
|
||||||
|
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ 7, 8, 9, 10, 11, 7 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id=31]
|
||||||
|
animation = "AttackLeft"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id=32]
|
||||||
|
animation = "AttackDown"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id=33]
|
||||||
|
animation = "AttackRight"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id=34]
|
||||||
|
animation = "AttackUp"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeBlendSpace2D" id=35]
|
||||||
|
blend_point_0/node = SubResource( 31 )
|
||||||
|
blend_point_0/pos = Vector2( -1, 0 )
|
||||||
|
blend_point_1/node = SubResource( 32 )
|
||||||
|
blend_point_1/pos = Vector2( 0, 1.1 )
|
||||||
|
blend_point_2/node = SubResource( 33 )
|
||||||
|
blend_point_2/pos = Vector2( 1, 0 )
|
||||||
|
blend_point_3/node = SubResource( 34 )
|
||||||
|
blend_point_3/pos = Vector2( 0, -1.1 )
|
||||||
|
min_space = Vector2( -1, -1.1 )
|
||||||
|
max_space = Vector2( 1, 1.1 )
|
||||||
|
blend_mode = 1
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id=11]
|
||||||
|
animation = "IdleLeft"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id=12]
|
||||||
|
animation = "IdleDown"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id=13]
|
||||||
|
animation = "IdleRight"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id=14]
|
||||||
|
animation = "IdleUp"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeBlendSpace2D" id=15]
|
||||||
|
blend_point_0/node = SubResource( 11 )
|
||||||
|
blend_point_0/pos = Vector2( -1, 0 )
|
||||||
|
blend_point_1/node = SubResource( 12 )
|
||||||
|
blend_point_1/pos = Vector2( 0, 1.1 )
|
||||||
|
blend_point_2/node = SubResource( 13 )
|
||||||
|
blend_point_2/pos = Vector2( 1, 0 )
|
||||||
|
blend_point_3/node = SubResource( 14 )
|
||||||
|
blend_point_3/pos = Vector2( 0, -1.1 )
|
||||||
|
min_space = Vector2( -1, -1.1 )
|
||||||
|
max_space = Vector2( 1, 1.1 )
|
||||||
|
blend_mode = 1
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id=20]
|
||||||
|
animation = "RunLeft"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id=21]
|
||||||
|
animation = "RunDown"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id=22]
|
||||||
|
animation = "RunRight"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id=23]
|
||||||
|
animation = "RunUp"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeBlendSpace2D" id=24]
|
||||||
|
blend_point_0/node = SubResource( 20 )
|
||||||
|
blend_point_0/pos = Vector2( -1, 0 )
|
||||||
|
blend_point_1/node = SubResource( 21 )
|
||||||
|
blend_point_1/pos = Vector2( 0, 1.1 )
|
||||||
|
blend_point_2/node = SubResource( 22 )
|
||||||
|
blend_point_2/pos = Vector2( 1, 0 )
|
||||||
|
blend_point_3/node = SubResource( 23 )
|
||||||
|
blend_point_3/pos = Vector2( 0, -1.1 )
|
||||||
|
min_space = Vector2( -1, -1.1 )
|
||||||
|
max_space = Vector2( 1, 1.1 )
|
||||||
|
blend_mode = 1
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachineTransition" id=25]
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachineTransition" id=26]
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachineTransition" id=36]
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachineTransition" id=37]
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachineTransition" id=38]
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachineTransition" id=39]
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachine" id=18]
|
||||||
|
states/Attack/node = SubResource( 35 )
|
||||||
|
states/Attack/position = Vector2( 321.375, 203.5 )
|
||||||
|
states/Idle/node = SubResource( 15 )
|
||||||
|
states/Idle/position = Vector2( 323.5, 96.2812 )
|
||||||
|
states/Run/node = SubResource( 24 )
|
||||||
|
states/Run/position = Vector2( 509.5, 96.5 )
|
||||||
|
transitions = [ "Run", "Idle", SubResource( 25 ), "Idle", "Run", SubResource( 26 ), "Idle", "Attack", SubResource( 36 ), "Attack", "Idle", SubResource( 37 ), "Attack", "Run", SubResource( 38 ), "Run", "Attack", SubResource( 39 ) ]
|
||||||
|
start_node = "Idle"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachinePlayback" id=19]
|
||||||
|
|
||||||
|
[node name="Player" type="KinematicBody2D"]
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
|
[node name="Sprite" type="Sprite" parent="."]
|
||||||
|
position = Vector2( 0, -9 )
|
||||||
|
texture = ExtResource( 2 )
|
||||||
|
hframes = 60
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
|
rotation = -1.5708
|
||||||
|
shape = SubResource( 1 )
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||||
|
anims/AttackDown = SubResource( 27 )
|
||||||
|
anims/AttackLeft = SubResource( 28 )
|
||||||
|
anims/AttackRight = SubResource( 29 )
|
||||||
|
anims/AttackUp = SubResource( 30 )
|
||||||
|
anims/IdleDown = SubResource( 9 )
|
||||||
|
anims/IdleLeft = SubResource( 10 )
|
||||||
|
anims/IdleRight = SubResource( 7 )
|
||||||
|
anims/IdleUp = SubResource( 8 )
|
||||||
|
anims/RESET = SubResource( 2 )
|
||||||
|
anims/RunDown = SubResource( 6 )
|
||||||
|
anims/RunLeft = SubResource( 4 )
|
||||||
|
anims/RunRight = SubResource( 3 )
|
||||||
|
anims/RunUp = SubResource( 5 )
|
||||||
|
|
||||||
|
[node name="AnimationTree" type="AnimationTree" parent="."]
|
||||||
|
tree_root = SubResource( 18 )
|
||||||
|
anim_player = NodePath("../AnimationPlayer")
|
||||||
|
parameters/playback = SubResource( 19 )
|
||||||
|
parameters/Attack/blend_position = Vector2( 0, 0 )
|
||||||
|
parameters/Idle/blend_position = Vector2( 0, 0 )
|
||||||
|
parameters/Run/blend_position = Vector2( 0, 0 )
|
BIN
ActionRPG-HeartBeast/Shadows/LargeShadow.png
Normal file
After Width: | Height: | Size: 161 B |
35
ActionRPG-HeartBeast/Shadows/LargeShadow.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/LargeShadow.png-f9f465d3bd6a830d0053dcccc744b5ab.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Shadows/LargeShadow.png"
|
||||||
|
dest_files=[ "res://.import/LargeShadow.png-f9f465d3bd6a830d0053dcccc744b5ab.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/Shadows/MediumShadow.png
Normal file
After Width: | Height: | Size: 123 B |
35
ActionRPG-HeartBeast/Shadows/MediumShadow.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/MediumShadow.png-a006169ce9c485f0f94bc7dc3bc8473f.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Shadows/MediumShadow.png"
|
||||||
|
dest_files=[ "res://.import/MediumShadow.png-a006169ce9c485f0f94bc7dc3bc8473f.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/Shadows/SmallShadow.png
Normal file
After Width: | Height: | Size: 110 B |
35
ActionRPG-HeartBeast/Shadows/SmallShadow.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/SmallShadow.png-5e32714e38d94da2c1b597c947bda29e.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Shadows/SmallShadow.png"
|
||||||
|
dest_files=[ "res://.import/SmallShadow.png-5e32714e38d94da2c1b597c947bda29e.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/UI/HeartUIEmpty.png
Normal file
After Width: | Height: | Size: 139 B |
35
ActionRPG-HeartBeast/UI/HeartUIEmpty.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/HeartUIEmpty.png-417b0a6fe975644d9dba3671413f10e5.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://UI/HeartUIEmpty.png"
|
||||||
|
dest_files=[ "res://.import/HeartUIEmpty.png-417b0a6fe975644d9dba3671413f10e5.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/UI/HeartUIFull.png
Normal file
After Width: | Height: | Size: 244 B |
35
ActionRPG-HeartBeast/UI/HeartUIFull.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/HeartUIFull.png-e9d9ebbeee52aaa00895457d920c0f53.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://UI/HeartUIFull.png"
|
||||||
|
dest_files=[ "res://.import/HeartUIFull.png-e9d9ebbeee52aaa00895457d920c0f53.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
557
ActionRPG-HeartBeast/World.tscn
Normal file
@ -0,0 +1,557 @@
|
|||||||
|
[gd_scene load_steps=59 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://World/Bush.tscn" type="PackedScene" id=1]
|
||||||
|
[ext_resource path="res://Player/Player.tscn" type="PackedScene" id=2]
|
||||||
|
[ext_resource path="res://World/GrassBackground.png" type="Texture" id=3]
|
||||||
|
[ext_resource path="res://World/DirtTileset.png" type="Texture" id=4]
|
||||||
|
[ext_resource path="res://World/CliffTileset.png" type="Texture" id=5]
|
||||||
|
|
||||||
|
[sub_resource type="TileSet" id=1]
|
||||||
|
0/name = "DirtTileset.png 0"
|
||||||
|
0/texture = ExtResource( 4 )
|
||||||
|
0/tex_offset = Vector2( 0, 0 )
|
||||||
|
0/modulate = Color( 1, 1, 1, 1 )
|
||||||
|
0/region = Rect2( 0, 0, 176, 80 )
|
||||||
|
0/tile_mode = 1
|
||||||
|
0/autotile/bitmask_mode = 1
|
||||||
|
0/autotile/bitmask_flags = [ Vector2( 0, 0 ), 432, Vector2( 0, 1 ), 438, Vector2( 0, 2 ), 54, Vector2( 0, 3 ), 48, Vector2( 1, 0 ), 504, Vector2( 1, 1 ), 511, Vector2( 1, 2 ), 63, Vector2( 1, 3 ), 56, Vector2( 2, 0 ), 216, Vector2( 2, 1 ), 219, Vector2( 2, 2 ), 27, Vector2( 2, 3 ), 24, Vector2( 3, 0 ), 144, Vector2( 3, 1 ), 146, Vector2( 3, 2 ), 18, Vector2( 3, 3 ), 16, Vector2( 4, 0 ), 176, Vector2( 4, 1 ), 182, Vector2( 4, 2 ), 434, Vector2( 4, 3 ), 50, Vector2( 4, 4 ), 178, Vector2( 5, 0 ), 248, Vector2( 5, 1 ), 255, Vector2( 5, 2 ), 507, Vector2( 5, 3 ), 59, Vector2( 5, 4 ), 251, Vector2( 6, 0 ), 440, Vector2( 6, 1 ), 447, Vector2( 6, 2 ), 510, Vector2( 6, 3 ), 62, Vector2( 6, 4 ), 446, Vector2( 7, 0 ), 152, Vector2( 7, 1 ), 155, Vector2( 7, 2 ), 218, Vector2( 7, 3 ), 26, Vector2( 7, 4 ), 154, Vector2( 8, 0 ), 184, Vector2( 8, 1 ), 191, Vector2( 8, 2 ), 506, Vector2( 8, 3 ), 58, Vector2( 8, 4 ), 186, Vector2( 9, 0 ), 443, Vector2( 9, 1 ), 254, Vector2( 9, 2 ), 442, Vector2( 9, 3 ), 190, Vector2( 10, 2 ), 250, Vector2( 10, 3 ), 187 ]
|
||||||
|
0/autotile/icon_coordinate = Vector2( 3, 3 )
|
||||||
|
0/autotile/tile_size = Vector2( 16, 16 )
|
||||||
|
0/autotile/spacing = 0
|
||||||
|
0/autotile/occluder_map = [ ]
|
||||||
|
0/autotile/navpoly_map = [ ]
|
||||||
|
0/autotile/priority_map = [ ]
|
||||||
|
0/autotile/z_index_map = [ ]
|
||||||
|
0/occluder_offset = Vector2( 0, 0 )
|
||||||
|
0/navigation_offset = Vector2( 0, 0 )
|
||||||
|
0/shape_offset = Vector2( 0, 0 )
|
||||||
|
0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
0/shape_one_way = false
|
||||||
|
0/shape_one_way_margin = 0.0
|
||||||
|
0/shapes = [ ]
|
||||||
|
0/z_index = 0
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=3]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=4]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=5]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=6]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=7]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=8]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=9]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=10]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=11]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=12]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=13]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=14]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=15]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=16]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=17]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=18]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=19]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=20]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=21]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=22]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=23]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=24]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=25]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=26]
|
||||||
|
points = PoolVector2Array( 0, 32, 32, 32, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=27]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=28]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=29]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=30]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=31]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=32]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=33]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=34]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=35]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=36]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=37]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=38]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=39]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=40]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=41]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=42]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=43]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=44]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=45]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=46]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=47]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=48]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=49]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=50]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=51]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=52]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="ConvexPolygonShape2D" id=53]
|
||||||
|
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
|
||||||
|
|
||||||
|
[sub_resource type="TileSet" id=2]
|
||||||
|
0/name = "CliffTileset.png 0"
|
||||||
|
0/texture = ExtResource( 5 )
|
||||||
|
0/tex_offset = Vector2( 0, 0 )
|
||||||
|
0/modulate = Color( 1, 1, 1, 1 )
|
||||||
|
0/region = Rect2( 0, 0, 352, 160 )
|
||||||
|
0/tile_mode = 1
|
||||||
|
0/autotile/bitmask_mode = 1
|
||||||
|
0/autotile/bitmask_flags = [ Vector2( 0, 0 ), 432, Vector2( 0, 1 ), 438, Vector2( 0, 2 ), 54, Vector2( 0, 3 ), 48, Vector2( 1, 0 ), 504, Vector2( 1, 1 ), 511, Vector2( 1, 2 ), 63, Vector2( 1, 3 ), 56, Vector2( 2, 0 ), 216, Vector2( 2, 1 ), 219, Vector2( 2, 2 ), 27, Vector2( 2, 3 ), 24, Vector2( 3, 0 ), 144, Vector2( 3, 1 ), 146, Vector2( 3, 2 ), 18, Vector2( 3, 3 ), 16, Vector2( 4, 0 ), 176, Vector2( 4, 1 ), 182, Vector2( 4, 2 ), 434, Vector2( 4, 3 ), 50, Vector2( 4, 4 ), 178, Vector2( 5, 0 ), 248, Vector2( 5, 1 ), 255, Vector2( 5, 2 ), 507, Vector2( 5, 3 ), 59, Vector2( 5, 4 ), 251, Vector2( 6, 0 ), 440, Vector2( 6, 1 ), 447, Vector2( 6, 2 ), 510, Vector2( 6, 3 ), 62, Vector2( 6, 4 ), 446, Vector2( 7, 0 ), 152, Vector2( 7, 1 ), 155, Vector2( 7, 2 ), 218, Vector2( 7, 3 ), 26, Vector2( 7, 4 ), 154, Vector2( 8, 0 ), 184, Vector2( 8, 1 ), 191, Vector2( 8, 2 ), 506, Vector2( 8, 3 ), 58, Vector2( 8, 4 ), 186, Vector2( 9, 0 ), 443, Vector2( 9, 1 ), 254, Vector2( 9, 2 ), 442, Vector2( 9, 3 ), 190, Vector2( 10, 2 ), 250, Vector2( 10, 3 ), 187 ]
|
||||||
|
0/autotile/icon_coordinate = Vector2( 3, 3 )
|
||||||
|
0/autotile/tile_size = Vector2( 32, 32 )
|
||||||
|
0/autotile/spacing = 0
|
||||||
|
0/autotile/occluder_map = [ ]
|
||||||
|
0/autotile/navpoly_map = [ ]
|
||||||
|
0/autotile/priority_map = [ ]
|
||||||
|
0/autotile/z_index_map = [ ]
|
||||||
|
0/occluder_offset = Vector2( 0, 0 )
|
||||||
|
0/navigation_offset = Vector2( 0, 0 )
|
||||||
|
0/shape_offset = Vector2( 0, 0 )
|
||||||
|
0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
0/shape = SubResource( 3 )
|
||||||
|
0/shape_one_way = false
|
||||||
|
0/shape_one_way_margin = 1.0
|
||||||
|
0/shapes = [ {
|
||||||
|
"autotile_coord": Vector2( 0, 0 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 3 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 1, 0 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 4 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 2, 0 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 5 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 3, 0 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 6 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 4, 0 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 7 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 5, 0 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 8 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 6, 0 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 9 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 7, 0 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 10 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 8, 0 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 11 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 9, 0 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 12 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 0, 1 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 13 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 1, 1 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 14 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 2, 1 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 15 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 3, 1 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 16 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 4, 1 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 17 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 5, 1 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 18 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 6, 1 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 19 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 7, 1 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 20 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 8, 1 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 21 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 9, 1 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 22 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 0, 2 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 23 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 0, 2 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 24 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 1, 2 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 25 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 2, 2 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 26 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 2, 2 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 27 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 3, 2 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 28 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 4, 2 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 29 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 5, 2 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 30 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 6, 2 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 31 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 7, 2 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 32 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 8, 2 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 33 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 9, 2 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 34 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 10, 2 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 35 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 0, 3 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 36 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 1, 3 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 37 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 2, 3 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 38 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 3, 3 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 39 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 4, 3 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 40 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 5, 3 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 41 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 6, 3 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 42 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 7, 3 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 43 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 8, 3 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 44 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 9, 3 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 45 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 10, 3 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 46 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 4, 4 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 47 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 5, 4 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 48 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 5, 4 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 49 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 6, 4 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 50 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 7, 4 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 51 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 7, 4 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 52 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
}, {
|
||||||
|
"autotile_coord": Vector2( 8, 4 ),
|
||||||
|
"one_way": false,
|
||||||
|
"one_way_margin": 1.0,
|
||||||
|
"shape": SubResource( 53 ),
|
||||||
|
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||||
|
} ]
|
||||||
|
0/z_index = 0
|
||||||
|
|
||||||
|
[node name="World" type="Node2D"]
|
||||||
|
|
||||||
|
[node name="Background" type="Sprite" parent="."]
|
||||||
|
position = Vector2( 160, 90 )
|
||||||
|
texture = ExtResource( 3 )
|
||||||
|
region_enabled = true
|
||||||
|
region_rect = Rect2( 0, 0, 320, 180 )
|
||||||
|
|
||||||
|
[node name="DirtPathTileMap" type="TileMap" parent="."]
|
||||||
|
tile_set = SubResource( 1 )
|
||||||
|
cell_size = Vector2( 16, 16 )
|
||||||
|
format = 1
|
||||||
|
tile_data = PoolIntArray( 9, 0, 0, 10, 0, 2, 65545, 0, 65536, 65546, 0, 65538, 65552, 0, 196608, 65553, 0, 7, 131081, 0, 65536, 131082, 0, 65538, 131089, 0, 65539, 196616, 0, 0, 196617, 0, 131078, 196618, 0, 131077, 196619, 0, 2, 196624, 0, 0, 196625, 0, 131080, 196626, 0, 1, 196627, 0, 2, 262148, 0, 0, 262149, 0, 1, 262150, 0, 1, 262151, 0, 1, 262152, 0, 131078, 262153, 0, 65537, 262154, 0, 65537, 262155, 0, 131077, 262156, 0, 2, 262160, 0, 65536, 262161, 0, 65537, 262162, 0, 65537, 262163, 0, 131077, 262164, 0, 2, 327680, 0, 0, 327681, 0, 1, 327682, 0, 1, 327683, 0, 1, 327684, 0, 65545, 327685, 0, 131073, 327686, 0, 131073, 327687, 0, 131073, 327688, 0, 131073, 327689, 0, 65542, 327690, 0, 65537, 327691, 0, 65537, 327692, 0, 131077, 327693, 0, 1, 327694, 0, 1, 327695, 0, 1, 327696, 0, 131078, 327697, 0, 65541, 327698, 0, 131073, 327699, 0, 131073, 327700, 0, 131074, 393216, 0, 131072, 393217, 0, 131073, 393218, 0, 131073, 393219, 0, 131073, 393220, 0, 131074, 393225, 0, 131072, 393226, 0, 65542, 393227, 0, 65537, 393228, 0, 65537, 393229, 0, 65537, 393230, 0, 65537, 393231, 0, 65537, 393232, 0, 65541, 393233, 0, 131074, 458762, 0, 131072, 458763, 0, 131073, 458764, 0, 131073, 458765, 0, 131073, 458766, 0, 131073, 458767, 0, 131073, 458768, 0, 131074, 720903, 0, 196611 )
|
||||||
|
|
||||||
|
[node name="DirtCliffTileMap" type="TileMap" parent="."]
|
||||||
|
tile_set = SubResource( 2 )
|
||||||
|
cell_size = Vector2( 32, 32 )
|
||||||
|
format = 1
|
||||||
|
tile_data = PoolIntArray( 0, 0, 4, 1, 0, 196609, 2, 0, 196609, 3, 0, 196610, 7, 0, 196608, 8, 0, 196609, 9, 0, 7, 65536, 0, 131075, 65545, 0, 131075, 196611, 0, 3, 196617, 0, 3, 262144, 0, 0, 262145, 0, 1, 262146, 0, 1, 262147, 0, 131079, 262152, 0, 196608, 262153, 0, 262151, 327680, 0, 131072, 327681, 0, 131073, 327682, 0, 131073, 327683, 0, 131074, 327689, 0, 131075 )
|
||||||
|
|
||||||
|
[node name="YSort" type="YSort" parent="."]
|
||||||
|
|
||||||
|
[node name="Player" parent="YSort" instance=ExtResource( 2 )]
|
||||||
|
position = Vector2( 88, 64 )
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_group_": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="Bush" parent="YSort" instance=ExtResource( 1 )]
|
||||||
|
position = Vector2( 56, 56 )
|
||||||
|
|
||||||
|
[node name="Bush2" parent="YSort" instance=ExtResource( 1 )]
|
||||||
|
position = Vector2( 184, 136 )
|
||||||
|
|
||||||
|
[node name="Bush3" parent="YSort" instance=ExtResource( 1 )]
|
||||||
|
position = Vector2( 192, 56 )
|
||||||
|
|
||||||
|
[node name="Bush4" parent="YSort" instance=ExtResource( 1 )]
|
||||||
|
position = Vector2( 240, 152 )
|
BIN
ActionRPG-HeartBeast/World/Bush.png
Normal file
After Width: | Height: | Size: 673 B |
35
ActionRPG-HeartBeast/World/Bush.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/Bush.png-d93cca107fd3c67cf3a69a32232496ae.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://World/Bush.png"
|
||||||
|
dest_files=[ "res://.import/Bush.png-d93cca107fd3c67cf3a69a32232496ae.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
17
ActionRPG-HeartBeast/World/Bush.tscn
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
[gd_scene load_steps=3 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://World/Bush.png" type="Texture" id=1]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape2D" id=1]
|
||||||
|
radius = 7.99998
|
||||||
|
height = 12.0
|
||||||
|
|
||||||
|
[node name="Bush" type="StaticBody2D"]
|
||||||
|
|
||||||
|
[node name="Sprite" type="Sprite" parent="."]
|
||||||
|
texture = ExtResource( 1 )
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
|
position = Vector2( 0, 2.294 )
|
||||||
|
rotation = -1.57079
|
||||||
|
shape = SubResource( 1 )
|
BIN
ActionRPG-HeartBeast/World/CliffTileset.png
Normal file
After Width: | Height: | Size: 7.2 KiB |
35
ActionRPG-HeartBeast/World/CliffTileset.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/CliffTileset.png-beb1369a7815e4e7ee0afe974b2636cf.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://World/CliffTileset.png"
|
||||||
|
dest_files=[ "res://.import/CliffTileset.png-beb1369a7815e4e7ee0afe974b2636cf.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/World/DirtTileset.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
35
ActionRPG-HeartBeast/World/DirtTileset.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/DirtTileset.png-4e52e2a032d2a3147ded644a2054b3ec.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://World/DirtTileset.png"
|
||||||
|
dest_files=[ "res://.import/DirtTileset.png-4e52e2a032d2a3147ded644a2054b3ec.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/World/Grass.png
Normal file
After Width: | Height: | Size: 380 B |
35
ActionRPG-HeartBeast/World/Grass.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/Grass.png-c8db04a845a94a62395b8fc264a498a7.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://World/Grass.png"
|
||||||
|
dest_files=[ "res://.import/Grass.png-c8db04a845a94a62395b8fc264a498a7.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/World/GrassBackground.png
Normal file
After Width: | Height: | Size: 1022 B |
35
ActionRPG-HeartBeast/World/GrassBackground.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/GrassBackground.png-97f32375e80ccfc9d4addd18e4430882.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://World/GrassBackground.png"
|
||||||
|
dest_files=[ "res://.import/GrassBackground.png-97f32375e80ccfc9d4addd18e4430882.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=1
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/World/Tree.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
35
ActionRPG-HeartBeast/World/Tree.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/Tree.png-14ac646b55f931abf82a3d71f0acdb7a.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://World/Tree.png"
|
||||||
|
dest_files=[ "res://.import/Tree.png-14ac646b55f931abf82a3d71f0acdb7a.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/build/.DS_Store
vendored
Normal file
BIN
ActionRPG-HeartBeast/build/web/ActionRPG-web.zip
Normal file
BIN
ActionRPG-HeartBeast/build/web/index.apple-touch-icon.png
Normal file
After Width: | Height: | Size: 18 KiB |
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/index.apple-touch-icon.png-21031f526f7942c8019a62913b80e091.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://build/web/index.apple-touch-icon.png"
|
||||||
|
dest_files=[ "res://.import/index.apple-touch-icon.png-21031f526f7942c8019a62913b80e091.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
211
ActionRPG-HeartBeast/build/web/index.audio.worklet.js
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
/**************************************************************************/
|
||||||
|
/* audio.worklet.js */
|
||||||
|
/**************************************************************************/
|
||||||
|
/* This file is part of: */
|
||||||
|
/* GODOT ENGINE */
|
||||||
|
/* https://godotengine.org */
|
||||||
|
/**************************************************************************/
|
||||||
|
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
|
||||||
|
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
|
||||||
|
/* */
|
||||||
|
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||||
|
/* a copy of this software and associated documentation files (the */
|
||||||
|
/* "Software"), to deal in the Software without restriction, including */
|
||||||
|
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||||
|
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||||
|
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||||
|
/* the following conditions: */
|
||||||
|
/* */
|
||||||
|
/* The above copyright notice and this permission notice shall be */
|
||||||
|
/* included in all copies or substantial portions of the Software. */
|
||||||
|
/* */
|
||||||
|
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||||
|
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||||
|
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
|
||||||
|
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||||
|
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||||
|
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||||
|
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
|
/**************************************************************************/
|
||||||
|
|
||||||
|
class RingBuffer {
|
||||||
|
constructor(p_buffer, p_state, p_threads) {
|
||||||
|
this.buffer = p_buffer;
|
||||||
|
this.avail = p_state;
|
||||||
|
this.threads = p_threads;
|
||||||
|
this.rpos = 0;
|
||||||
|
this.wpos = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
data_left() {
|
||||||
|
return this.threads ? Atomics.load(this.avail, 0) : this.avail;
|
||||||
|
}
|
||||||
|
|
||||||
|
space_left() {
|
||||||
|
return this.buffer.length - this.data_left();
|
||||||
|
}
|
||||||
|
|
||||||
|
read(output) {
|
||||||
|
const size = this.buffer.length;
|
||||||
|
let from = 0;
|
||||||
|
let to_write = output.length;
|
||||||
|
if (this.rpos + to_write > size) {
|
||||||
|
const high = size - this.rpos;
|
||||||
|
output.set(this.buffer.subarray(this.rpos, size));
|
||||||
|
from = high;
|
||||||
|
to_write -= high;
|
||||||
|
this.rpos = 0;
|
||||||
|
}
|
||||||
|
if (to_write) {
|
||||||
|
output.set(this.buffer.subarray(this.rpos, this.rpos + to_write), from);
|
||||||
|
}
|
||||||
|
this.rpos += to_write;
|
||||||
|
if (this.threads) {
|
||||||
|
Atomics.add(this.avail, 0, -output.length);
|
||||||
|
Atomics.notify(this.avail, 0);
|
||||||
|
} else {
|
||||||
|
this.avail -= output.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
write(p_buffer) {
|
||||||
|
const to_write = p_buffer.length;
|
||||||
|
const mw = this.buffer.length - this.wpos;
|
||||||
|
if (mw >= to_write) {
|
||||||
|
this.buffer.set(p_buffer, this.wpos);
|
||||||
|
this.wpos += to_write;
|
||||||
|
if (mw === to_write) {
|
||||||
|
this.wpos = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const high = p_buffer.subarray(0, mw);
|
||||||
|
const low = p_buffer.subarray(mw);
|
||||||
|
this.buffer.set(high, this.wpos);
|
||||||
|
this.buffer.set(low);
|
||||||
|
this.wpos = low.length;
|
||||||
|
}
|
||||||
|
if (this.threads) {
|
||||||
|
Atomics.add(this.avail, 0, to_write);
|
||||||
|
Atomics.notify(this.avail, 0);
|
||||||
|
} else {
|
||||||
|
this.avail += to_write;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class GodotProcessor extends AudioWorkletProcessor {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.threads = false;
|
||||||
|
this.running = true;
|
||||||
|
this.lock = null;
|
||||||
|
this.notifier = null;
|
||||||
|
this.output = null;
|
||||||
|
this.output_buffer = new Float32Array();
|
||||||
|
this.input = null;
|
||||||
|
this.input_buffer = new Float32Array();
|
||||||
|
this.port.onmessage = (event) => {
|
||||||
|
const cmd = event.data['cmd'];
|
||||||
|
const data = event.data['data'];
|
||||||
|
this.parse_message(cmd, data);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
process_notify() {
|
||||||
|
if (this.notifier) {
|
||||||
|
Atomics.add(this.notifier, 0, 1);
|
||||||
|
Atomics.notify(this.notifier, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
parse_message(p_cmd, p_data) {
|
||||||
|
if (p_cmd === 'start' && p_data) {
|
||||||
|
const state = p_data[0];
|
||||||
|
let idx = 0;
|
||||||
|
this.threads = true;
|
||||||
|
this.lock = state.subarray(idx, ++idx);
|
||||||
|
this.notifier = state.subarray(idx, ++idx);
|
||||||
|
const avail_in = state.subarray(idx, ++idx);
|
||||||
|
const avail_out = state.subarray(idx, ++idx);
|
||||||
|
this.input = new RingBuffer(p_data[1], avail_in, true);
|
||||||
|
this.output = new RingBuffer(p_data[2], avail_out, true);
|
||||||
|
} else if (p_cmd === 'stop') {
|
||||||
|
this.running = false;
|
||||||
|
this.output = null;
|
||||||
|
this.input = null;
|
||||||
|
} else if (p_cmd === 'start_nothreads') {
|
||||||
|
this.output = new RingBuffer(p_data[0], p_data[0].length, false);
|
||||||
|
} else if (p_cmd === 'chunk') {
|
||||||
|
this.output.write(p_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static array_has_data(arr) {
|
||||||
|
return arr.length && arr[0].length && arr[0][0].length;
|
||||||
|
}
|
||||||
|
|
||||||
|
process(inputs, outputs, parameters) {
|
||||||
|
if (!this.running) {
|
||||||
|
return false; // Stop processing.
|
||||||
|
}
|
||||||
|
if (this.output === null) {
|
||||||
|
return true; // Not ready yet, keep processing.
|
||||||
|
}
|
||||||
|
const process_input = GodotProcessor.array_has_data(inputs);
|
||||||
|
if (process_input) {
|
||||||
|
const input = inputs[0];
|
||||||
|
const chunk = input[0].length * input.length;
|
||||||
|
if (this.input_buffer.length !== chunk) {
|
||||||
|
this.input_buffer = new Float32Array(chunk);
|
||||||
|
}
|
||||||
|
if (!this.threads) {
|
||||||
|
GodotProcessor.write_input(this.input_buffer, input);
|
||||||
|
this.port.postMessage({ 'cmd': 'input', 'data': this.input_buffer });
|
||||||
|
} else if (this.input.space_left() >= chunk) {
|
||||||
|
GodotProcessor.write_input(this.input_buffer, input);
|
||||||
|
this.input.write(this.input_buffer);
|
||||||
|
} else {
|
||||||
|
this.port.postMessage('Input buffer is full! Skipping input frame.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const process_output = GodotProcessor.array_has_data(outputs);
|
||||||
|
if (process_output) {
|
||||||
|
const output = outputs[0];
|
||||||
|
const chunk = output[0].length * output.length;
|
||||||
|
if (this.output_buffer.length !== chunk) {
|
||||||
|
this.output_buffer = new Float32Array(chunk);
|
||||||
|
}
|
||||||
|
if (this.output.data_left() >= chunk) {
|
||||||
|
this.output.read(this.output_buffer);
|
||||||
|
GodotProcessor.write_output(output, this.output_buffer);
|
||||||
|
if (!this.threads) {
|
||||||
|
this.port.postMessage({ 'cmd': 'read', 'data': chunk });
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.port.postMessage('Output buffer has not enough frames! Skipping output frame.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.process_notify();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static write_output(dest, source) {
|
||||||
|
const channels = dest.length;
|
||||||
|
for (let ch = 0; ch < channels; ch++) {
|
||||||
|
for (let sample = 0; sample < dest[ch].length; sample++) {
|
||||||
|
dest[ch][sample] = source[sample * channels + ch];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static write_input(dest, source) {
|
||||||
|
const channels = source.length;
|
||||||
|
for (let ch = 0; ch < channels; ch++) {
|
||||||
|
for (let sample = 0; sample < source[ch].length; sample++) {
|
||||||
|
dest[sample * channels + ch] = source[ch][sample];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
registerProcessor('godot-processor', GodotProcessor);
|
248
ActionRPG-HeartBeast/build/web/index.html
Normal file
@ -0,0 +1,248 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns='http://www.w3.org/1999/xhtml' lang='' xml:lang=''>
|
||||||
|
<head>
|
||||||
|
<meta charset='utf-8' />
|
||||||
|
<meta name='viewport' content='width=device-width, user-scalable=no' />
|
||||||
|
<title>ActionRPG-HeartBeast</title>
|
||||||
|
<style type='text/css'>
|
||||||
|
|
||||||
|
body {
|
||||||
|
touch-action: none;
|
||||||
|
margin: 0;
|
||||||
|
border: 0 none;
|
||||||
|
padding: 0;
|
||||||
|
text-align: center;
|
||||||
|
background-color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
#canvas {
|
||||||
|
display: block;
|
||||||
|
margin: 0;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#canvas:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.godot {
|
||||||
|
font-family: 'Noto Sans', 'Droid Sans', Arial, sans-serif;
|
||||||
|
color: #e0e0e0;
|
||||||
|
background-color: #3b3943;
|
||||||
|
background-image: linear-gradient(to bottom, #403e48, #35333c);
|
||||||
|
border: 1px solid #45434e;
|
||||||
|
box-shadow: 0 0 1px 1px #2f2d35;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Status display
|
||||||
|
* ============== */
|
||||||
|
|
||||||
|
#status {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
/* don't consume click events - make children visible explicitly */
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
#status-progress {
|
||||||
|
width: 366px;
|
||||||
|
height: 7px;
|
||||||
|
background-color: #38363A;
|
||||||
|
border: 1px solid #444246;
|
||||||
|
padding: 1px;
|
||||||
|
box-shadow: 0 0 2px 1px #1B1C22;
|
||||||
|
border-radius: 2px;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (orientation:portrait) {
|
||||||
|
#status-progress {
|
||||||
|
width: 61.8%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#status-progress-inner {
|
||||||
|
height: 100%;
|
||||||
|
width: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
transition: width 0.5s linear;
|
||||||
|
background-color: #202020;
|
||||||
|
border: 1px solid #222223;
|
||||||
|
box-shadow: 0 0 1px 1px #27282E;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#status-indeterminate {
|
||||||
|
height: 42px;
|
||||||
|
visibility: visible;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
#status-indeterminate > div {
|
||||||
|
width: 4.5px;
|
||||||
|
height: 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 9px 3px 0 3px;
|
||||||
|
border-color: #2b2b2b transparent transparent transparent;
|
||||||
|
transform-origin: center 21px;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
#status-indeterminate > div:nth-child(1) { transform: rotate( 22.5deg); }
|
||||||
|
#status-indeterminate > div:nth-child(2) { transform: rotate( 67.5deg); }
|
||||||
|
#status-indeterminate > div:nth-child(3) { transform: rotate(112.5deg); }
|
||||||
|
#status-indeterminate > div:nth-child(4) { transform: rotate(157.5deg); }
|
||||||
|
#status-indeterminate > div:nth-child(5) { transform: rotate(202.5deg); }
|
||||||
|
#status-indeterminate > div:nth-child(6) { transform: rotate(247.5deg); }
|
||||||
|
#status-indeterminate > div:nth-child(7) { transform: rotate(292.5deg); }
|
||||||
|
#status-indeterminate > div:nth-child(8) { transform: rotate(337.5deg); }
|
||||||
|
|
||||||
|
#status-notice {
|
||||||
|
margin: 0 100px;
|
||||||
|
line-height: 1.3;
|
||||||
|
visibility: visible;
|
||||||
|
padding: 4px 6px;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<link id='-gd-engine-icon' rel='icon' type='image/png' href='index.icon.png' />
|
||||||
|
<link rel='apple-touch-icon' href='index.apple-touch-icon.png'/>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<canvas id='canvas'>
|
||||||
|
HTML5 canvas appears to be unsupported in the current browser.<br />
|
||||||
|
Please try updating or use a different browser.
|
||||||
|
</canvas>
|
||||||
|
<div id='status'>
|
||||||
|
<div id='status-progress' style='display: none;' oncontextmenu='event.preventDefault();'><div id ='status-progress-inner'></div></div>
|
||||||
|
<div id='status-indeterminate' style='display: none;' oncontextmenu='event.preventDefault();'>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
</div>
|
||||||
|
<div id='status-notice' class='godot' style='display: none;'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript' src='index.js'></script>
|
||||||
|
<script type='text/javascript'>//<![CDATA[
|
||||||
|
|
||||||
|
const GODOT_CONFIG = {"args":[],"canvasResizePolicy":2,"executable":"index","experimentalVK":false,"fileSizes":{"index.pck":2249584,"index.wasm":13790961},"focusCanvas":true,"gdnativeLibs":[]};
|
||||||
|
var engine = new Engine(GODOT_CONFIG);
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
const INDETERMINATE_STATUS_STEP_MS = 100;
|
||||||
|
var statusProgress = document.getElementById('status-progress');
|
||||||
|
var statusProgressInner = document.getElementById('status-progress-inner');
|
||||||
|
var statusIndeterminate = document.getElementById('status-indeterminate');
|
||||||
|
var statusNotice = document.getElementById('status-notice');
|
||||||
|
|
||||||
|
var initializing = true;
|
||||||
|
var statusMode = 'hidden';
|
||||||
|
|
||||||
|
var animationCallbacks = [];
|
||||||
|
function animate(time) {
|
||||||
|
animationCallbacks.forEach(callback => callback(time));
|
||||||
|
requestAnimationFrame(animate);
|
||||||
|
}
|
||||||
|
requestAnimationFrame(animate);
|
||||||
|
|
||||||
|
function setStatusMode(mode) {
|
||||||
|
|
||||||
|
if (statusMode === mode || !initializing)
|
||||||
|
return;
|
||||||
|
[statusProgress, statusIndeterminate, statusNotice].forEach(elem => {
|
||||||
|
elem.style.display = 'none';
|
||||||
|
});
|
||||||
|
animationCallbacks = animationCallbacks.filter(function(value) {
|
||||||
|
return (value != animateStatusIndeterminate);
|
||||||
|
});
|
||||||
|
switch (mode) {
|
||||||
|
case 'progress':
|
||||||
|
statusProgress.style.display = 'block';
|
||||||
|
break;
|
||||||
|
case 'indeterminate':
|
||||||
|
statusIndeterminate.style.display = 'block';
|
||||||
|
animationCallbacks.push(animateStatusIndeterminate);
|
||||||
|
break;
|
||||||
|
case 'notice':
|
||||||
|
statusNotice.style.display = 'block';
|
||||||
|
break;
|
||||||
|
case 'hidden':
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new Error('Invalid status mode');
|
||||||
|
}
|
||||||
|
statusMode = mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function animateStatusIndeterminate(ms) {
|
||||||
|
var i = Math.floor(ms / INDETERMINATE_STATUS_STEP_MS % 8);
|
||||||
|
if (statusIndeterminate.children[i].style.borderTopColor == '') {
|
||||||
|
Array.prototype.slice.call(statusIndeterminate.children).forEach(child => {
|
||||||
|
child.style.borderTopColor = '';
|
||||||
|
});
|
||||||
|
statusIndeterminate.children[i].style.borderTopColor = '#dfdfdf';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setStatusNotice(text) {
|
||||||
|
while (statusNotice.lastChild) {
|
||||||
|
statusNotice.removeChild(statusNotice.lastChild);
|
||||||
|
}
|
||||||
|
var lines = text.split('\n');
|
||||||
|
lines.forEach((line) => {
|
||||||
|
statusNotice.appendChild(document.createTextNode(line));
|
||||||
|
statusNotice.appendChild(document.createElement('br'));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
function displayFailureNotice(err) {
|
||||||
|
var msg = err.message || err;
|
||||||
|
console.error(msg);
|
||||||
|
setStatusNotice(msg);
|
||||||
|
setStatusMode('notice');
|
||||||
|
initializing = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!Engine.isWebGLAvailable()) {
|
||||||
|
displayFailureNotice('WebGL not available');
|
||||||
|
} else {
|
||||||
|
setStatusMode('indeterminate');
|
||||||
|
engine.startGame({
|
||||||
|
'onProgress': function (current, total) {
|
||||||
|
if (total > 0) {
|
||||||
|
statusProgressInner.style.width = current/total * 100 + '%';
|
||||||
|
setStatusMode('progress');
|
||||||
|
if (current === total) {
|
||||||
|
// wait for progress bar animation
|
||||||
|
setTimeout(() => {
|
||||||
|
setStatusMode('indeterminate');
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
setStatusMode('indeterminate');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}).then(() => {
|
||||||
|
setStatusMode('hidden');
|
||||||
|
initializing = false;
|
||||||
|
}, displayFailureNotice);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
//]]></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
BIN
ActionRPG-HeartBeast/build/web/index.icon.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
35
ActionRPG-HeartBeast/build/web/index.icon.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/index.icon.png-a9d2f4f7433eeddc29dad75f5e7f8710.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://build/web/index.icon.png"
|
||||||
|
dest_files=[ "res://.import/index.icon.png-a9d2f4f7433eeddc29dad75f5e7f8710.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
796
ActionRPG-HeartBeast/build/web/index.js
Normal file
BIN
ActionRPG-HeartBeast/build/web/index.pck
Normal file
BIN
ActionRPG-HeartBeast/build/web/index.png
Normal file
After Width: | Height: | Size: 21 KiB |
35
ActionRPG-HeartBeast/build/web/index.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/index.png-7e97af7272d6fa0065ffc53e96463470.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://build/web/index.png"
|
||||||
|
dest_files=[ "res://.import/index.png-7e97af7272d6fa0065ffc53e96463470.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
ActionRPG-HeartBeast/build/web/index.wasm
Normal file
7
ActionRPG-HeartBeast/default_env.tres
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[gd_resource type="Environment" load_steps=2 format=2]
|
||||||
|
|
||||||
|
[sub_resource type="ProceduralSky" id=1]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
background_mode = 2
|
||||||
|
background_sky = SubResource( 1 )
|