commit a4d2648f498246b0638833e4a4c733d92c4dc6f8 Author: hecht Date: Fri Apr 28 23:10:32 2023 +0200 Initial commit diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4709183 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Godot 4+ specific ignores +.godot/ diff --git a/Background.gd b/Background.gd new file mode 100644 index 0000000..30da2b3 --- /dev/null +++ b/Background.gd @@ -0,0 +1,14 @@ +extends AnimationPlayer + + +# Called when the node enters the scene tree for the first time. +func _ready(): + play("default") + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + pass + + +func _on_animation_finished(_anim_name): + play("default") diff --git a/CountDownLabel.gd b/CountDownLabel.gd new file mode 100644 index 0000000..51c5086 --- /dev/null +++ b/CountDownLabel.gd @@ -0,0 +1,20 @@ +extends Label + + +var _counter : int = 10 + +# Called when the node enters the scene tree for the first time. +func _ready(): + _counter = 10 + +func init(value:int): + _counter = value + set_text("%d" % _counter) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + pass + +func _on_next_round(): + _counter -= 1 + set_text("%d" % _counter) diff --git a/DamageLabel.gd b/DamageLabel.gd new file mode 100644 index 0000000..a84363a --- /dev/null +++ b/DamageLabel.gd @@ -0,0 +1,28 @@ +extends Node2D + +@onready var _damage_animation = $AnimationPlayer +@onready var _damage_label = $Label + +# Called when the node enters the scene tree for the first time. +func _ready(): + visible = false + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + pass + +func show_damage(amount:int): + visible = true + _damage_label.visible = false + _damage_label.set_text("%d" % amount) + _damage_animation.play("Pop-Up", -1, 2.5) + +func _on_animation_finished(anim_name): + if anim_name == "Pop-Up": + _damage_label.visible = true + _damage_animation.play("Show", -1, 2.0) + elif anim_name == "Show": + _damage_label.visible = false + _damage_animation.play("Fade-Out", -1, 2.5) + else: + visible = false diff --git a/DamageLabel.tscn b/DamageLabel.tscn new file mode 100644 index 0000000..4b177e7 --- /dev/null +++ b/DamageLabel.tscn @@ -0,0 +1,102 @@ +[gd_scene load_steps=9 format=3 uid="uid://blhw157wwm02k"] + +[ext_resource type="Script" path="res://DamageLabel.gd" id="1_bkmpf"] +[ext_resource type="Texture2D" uid="uid://lrlnbd1xfm00" path="res://assets/Sprites/DamageBubble.png" id="1_hhymi"] + +[sub_resource type="Animation" id="Animation_su23q"] +resource_name = "Pop-Up" +length = 0.3 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [0, 1, 2] +} + +[sub_resource type="Animation" id="Animation_dlbp2"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} + +[sub_resource type="Animation" id="Animation_a8shb"] +resource_name = "Show" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 1, +"values": [2, 2, 2, 2, 2] +} + +[sub_resource type="Animation" id="Animation_o4lh5"] +resource_name = "Fade-Out" +length = 0.3 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [2, 1, 0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_iir0v"] +_data = { +"Fade-Out": SubResource("Animation_o4lh5"), +"Pop-Up": SubResource("Animation_su23q"), +"RESET": SubResource("Animation_dlbp2"), +"Show": SubResource("Animation_a8shb") +} + +[sub_resource type="LabelSettings" id="LabelSettings_ofpea"] +font_color = Color(0.882353, 0, 0.0431373, 1) + +[node name="DamageLabel" type="Node2D"] +script = ExtResource("1_bkmpf") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("1_hhymi") +hframes = 3 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_iir0v") +} + +[node name="Label" type="Label" parent="."] +offset_left = -19.0 +offset_top = -12.0 +offset_right = 21.0 +offset_bottom = 14.0 +text = "99" +label_settings = SubResource("LabelSettings_ofpea") +horizontal_alignment = 1 +vertical_alignment = 1 + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_finished"] diff --git a/Fighter.gd b/Fighter.gd new file mode 100644 index 0000000..c2e57ca --- /dev/null +++ b/Fighter.gd @@ -0,0 +1,103 @@ +extends Node2D + +signal deal_damage(amount:int) +signal health_changed(old_value, new_value) +signal stamina_changed(old_value, new_value) +signal actions_done + +@onready var _animation_player = $AnimationPlayer +@onready var _animation_sprite = $Sprite2D +@onready var _animation_damage_label = $DamageLabel + +@export +var orientation:int = 1 +@export +var health:int = 100 +@export +var stamina:int = 100 +@export +var descriptor:String = "Foo" + + +var _actions = [] +var _action_queue = [] +var _health = 0 +var _stamina = 0 + +# Public methods +func init(actions): + _actions = actions.duplicate(true) + _health = health + _stamina = stamina + health_changed.emit(_health, _health) + stamina_changed.emit(_stamina, _stamina) + +func is_animation_idle() -> bool: + return !_animation_player.is_playing() && _action_queue.is_empty() + +func is_animation_done() -> bool: + return is_animation_idle() && _actions.is_empty() + +# Called when the node enters the scene tree for the first time. +func _ready(): + _animation_sprite.flip_h = orientation + _animation_player.play("RESET") + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + pass + +func _take_damage(amount : int): + var old_health = _health + _health -= amount + if _animation_player.is_playing(): + print_debug("%s -> %s: _take_damage -> skip current animation %s!" % [Time.get_ticks_msec(), descriptor,_animation_player.current_animation]) + _animation_player.stop() + + print_debug("%s -> %s: _take_damage -> play HIT animation!" % [Time.get_ticks_msec(), descriptor]) + _animation_player.play("Hit") + _animation_damage_label.show_damage(amount) + + health_changed.emit(old_health, _health) + +func _alter_stamina(amount : int): + if _stamina <= stamina: + var old_stamina = _stamina + _stamina = min(stamina, _stamina + amount) + stamina_changed.emit(old_stamina, _stamina) + +func _on_next_round(): + print_debug("%s -> %s: _on_next_round" % [Time.get_ticks_msec(), descriptor]) + if !_actions.is_empty(): + _alter_stamina(5) + _action_queue = _actions.pop_front() + _schedule_next_action() + +func _schedule_next_action(): + if _animation_player.is_playing(): + return + + if _action_queue.is_empty(): + _animation_sprite.frame = 0 + actions_done.emit() + return + + var action : String = _action_queue.pop_front() + _animation_player.play(action) + print_debug("%s -> %s: _schedule_next_action -> plays %s!" % [Time.get_ticks_msec(), descriptor, action]) + + if action.begins_with("Attack1"): + deal_damage.emit(5) + _alter_stamina(-10) + elif action.begins_with("Attack2"): + deal_damage.emit(15) + _alter_stamina(-20) + + +func _on_animation_finished(anim_name): + print_debug("%s -> %s: _on_animation_finished -> %s!" % [Time.get_ticks_msec(), descriptor, anim_name]) + _schedule_next_action() + + +func _on_animation_started(anim_name): + print_debug("%s -> %s: _on_animation_started -> %s!" % [Time.get_ticks_msec(), descriptor, anim_name]) diff --git a/Fighter.tscn b/Fighter.tscn new file mode 100644 index 0000000..019073a --- /dev/null +++ b/Fighter.tscn @@ -0,0 +1,243 @@ +[gd_scene load_steps=17 format=3 uid="uid://di8on8rry21wa"] + +[ext_resource type="Script" path="res://Fighter.gd" id="1_k2s5v"] +[ext_resource type="Texture2D" uid="uid://cgshiy0fb84fy" path="res://assets/Sprites/red hood itch free Copy-Sheet.png" id="2_y8862"] +[ext_resource type="PackedScene" uid="uid://blhw157wwm02k" path="res://DamageLabel.tscn" id="3_nllc3"] + +[sub_resource type="Animation" id="Animation_uyuin"] +resource_name = "Attack1" +length = 0.6 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 1, +"values": [57, 58, 59, 60, 61] +} + +[sub_resource type="Animation" id="Animation_wa17f"] +resource_name = "Attack1.2" +length = 0.6 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [62, 63, 64, 65, 66, 67] +} + +[sub_resource type="Animation" id="Animation_663x5"] +resource_name = "Attack1.3" +length = 1.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79] +} + +[sub_resource type="Animation" id="Animation_dwteb"] +resource_name = "Attack2.1" +length = 0.9 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [80, 81, 82, 83, 84, 85, 86, 87, 88] +} + +[sub_resource type="Animation" id="Animation_qpk3d"] +resource_name = "Attack2.2" +length = 1.4 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102] +} + +[sub_resource type="Animation" id="Animation_c0pf4"] +resource_name = "Attack2.3" +length = 1.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119] +} + +[sub_resource type="Animation" id="Animation_3lxjh"] +resource_name = "Hit" +length = 0.6 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [121, 122, 123, 124, 125, 126] +} + +[sub_resource type="Animation" id="Animation_q3ojn"] +resource_name = "New" +length = 1.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50] +} + +[sub_resource type="Animation" id="Animation_hs612"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} + +[sub_resource type="Animation" id="Animation_o3s7g"] +resource_name = "Test" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [25, 26, 27, 28, 29, 30, 31, 32, 33] +} + +[sub_resource type="Animation" id="Animation_nqpts"] +resource_name = "Slide" +length = 0.4 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [52, 53, 54, 55] +} + +[sub_resource type="Animation" id="Animation_2ytur"] +resource_name = "Walk" +length = 2.4 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_jbrqc"] +_data = { +"Attack1.1": SubResource("Animation_uyuin"), +"Attack1.2": SubResource("Animation_wa17f"), +"Attack1.3": SubResource("Animation_663x5"), +"Attack2.1": SubResource("Animation_dwteb"), +"Attack2.2": SubResource("Animation_qpk3d"), +"Attack2.3": SubResource("Animation_c0pf4"), +"Hit": SubResource("Animation_3lxjh"), +"Jump": SubResource("Animation_q3ojn"), +"RESET": SubResource("Animation_hs612"), +"Shoot": SubResource("Animation_o3s7g"), +"Slide": SubResource("Animation_nqpts"), +"Walk": SubResource("Animation_2ytur") +} + +[node name="Fighter" type="Node2D"] +scale = Vector2(2, 2) +script = ExtResource("1_k2s5v") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2_y8862") +hframes = 12 +vframes = 11 +metadata/_aseprite_wizard_config_ = { +"layer": "", +"o_ex_p": "", +"o_folder": "", +"o_name": "", +"only_visible": false, +"op_exp": false, +"player": "LhsPlayer/AnimationPlayer", +"source": "res://assets/Sprites/red hood itch free.aseprite" +} + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +speed_scale = 1.5 +libraries = { +"": SubResource("AnimationLibrary_jbrqc") +} + +[node name="DamageLabel" parent="." instance=ExtResource("3_nllc3")] +position = Vector2(-9, -5) +scale = Vector2(0.6, 0.6) + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_finished"] +[connection signal="animation_started" from="AnimationPlayer" to="." method="_on_animation_started"] diff --git a/FpsLabel.gd b/FpsLabel.gd new file mode 100644 index 0000000..1dbddaa --- /dev/null +++ b/FpsLabel.gd @@ -0,0 +1,10 @@ +extends Label + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + set_text("FPS %d" % Engine.get_frames_per_second()) diff --git a/HpBar.gd b/HpBar.gd new file mode 100644 index 0000000..b53f493 --- /dev/null +++ b/HpBar.gd @@ -0,0 +1,14 @@ +extends TextureProgressBar + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + pass + +func _on_value_changed(_old_value, new_value): + value = new_value diff --git a/UserLabel.gd b/UserLabel.gd new file mode 100644 index 0000000..ac52337 --- /dev/null +++ b/UserLabel.gd @@ -0,0 +1,23 @@ +extends Label + + +# Called when the node enters the scene tree for the first time. +func _ready(): + var arguments = {} + for argument in OS.get_cmdline_user_args(): + if argument.find("=") > -1: + var key_value = argument.split("=") + arguments[key_value[0].lstrip("--")] = key_value[1] + else: + # Options without an argument will be present in the dictionary, + # with the value set to an empty string. + arguments[argument.lstrip("--")] = "" + + if "session" in arguments.keys(): + set_text("Session " + arguments["session"]) + else: + set_text("Session ") + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + pass diff --git a/assets/Splash/splash_4.jpg b/assets/Splash/splash_4.jpg new file mode 100644 index 0000000..e9f581e Binary files /dev/null and b/assets/Splash/splash_4.jpg differ diff --git a/assets/Splash/splash_4.jpg.import b/assets/Splash/splash_4.jpg.import new file mode 100644 index 0000000..8d20dc4 --- /dev/null +++ b/assets/Splash/splash_4.jpg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6egobfwy3suu" +path="res://.godot/imported/splash_4.jpg-aec6432bf92c00447c7f41b7edbf4db8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Splash/splash_4.jpg" +dest_files=["res://.godot/imported/splash_4.jpg-aec6432bf92c00447c7f41b7edbf4db8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Splash/splash_4.png b/assets/Splash/splash_4.png new file mode 100644 index 0000000..825d4cb Binary files /dev/null and b/assets/Splash/splash_4.png differ diff --git a/assets/Splash/splash_4.png.import b/assets/Splash/splash_4.png.import new file mode 100644 index 0000000..2c7db0b --- /dev/null +++ b/assets/Splash/splash_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cc3tklklixv04" +path="res://.godot/imported/splash_4.png-8c13a423662c2f2de9a069f431ee769c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Splash/splash_4.png" +dest_files=["res://.godot/imported/splash_4.png-8c13a423662c2f2de9a069f431ee769c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Splash/splash_b.jpg b/assets/Splash/splash_b.jpg new file mode 100644 index 0000000..5275217 Binary files /dev/null and b/assets/Splash/splash_b.jpg differ diff --git a/assets/Splash/splash_b.jpg.import b/assets/Splash/splash_b.jpg.import new file mode 100644 index 0000000..0403528 --- /dev/null +++ b/assets/Splash/splash_b.jpg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c7wuoc8qbhlrw" +path="res://.godot/imported/splash_b.jpg-49881c0a1ab8503770503d63a24b311c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Splash/splash_b.jpg" +dest_files=["res://.godot/imported/splash_b.jpg-49881c0a1ab8503770503d63a24b311c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Splash/splash_b.png b/assets/Splash/splash_b.png new file mode 100644 index 0000000..1b2927a Binary files /dev/null and b/assets/Splash/splash_b.png differ diff --git a/assets/Splash/splash_b.png.import b/assets/Splash/splash_b.png.import new file mode 100644 index 0000000..dcbaa79 --- /dev/null +++ b/assets/Splash/splash_b.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://yl2w2pc0bk3w" +path="res://.godot/imported/splash_b.png-7cb64c9adf080b0c59f3e146533b3b46.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Splash/splash_b.png" +dest_files=["res://.godot/imported/splash_b.png-7cb64c9adf080b0c59f3e146533b3b46.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Sprites/086-OtcZb45.png b/assets/Sprites/086-OtcZb45.png new file mode 100644 index 0000000..6da80af Binary files /dev/null and b/assets/Sprites/086-OtcZb45.png differ diff --git a/assets/Sprites/086-OtcZb45.png.import b/assets/Sprites/086-OtcZb45.png.import new file mode 100644 index 0000000..b5f3373 --- /dev/null +++ b/assets/Sprites/086-OtcZb45.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddsu16o54xyph" +path="res://.godot/imported/086-OtcZb45.png-10a7249bfbc9e07e65d4f6672a54f1d7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Sprites/086-OtcZb45.png" +dest_files=["res://.godot/imported/086-OtcZb45.png-10a7249bfbc9e07e65d4f6672a54f1d7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Sprites/DamageBubble.png b/assets/Sprites/DamageBubble.png new file mode 100644 index 0000000..179a042 Binary files /dev/null and b/assets/Sprites/DamageBubble.png differ diff --git a/assets/Sprites/DamageBubble.png.import b/assets/Sprites/DamageBubble.png.import new file mode 100644 index 0000000..c436a37 --- /dev/null +++ b/assets/Sprites/DamageBubble.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://lrlnbd1xfm00" +path="res://.godot/imported/DamageBubble.png-5b2fd810d7bf38b4b76f5cb33e22d0a4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Sprites/DamageBubble.png" +dest_files=["res://.godot/imported/DamageBubble.png-5b2fd810d7bf38b4b76f5cb33e22d0a4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Sprites/DragonBall-Xenoverse-Arena.png b/assets/Sprites/DragonBall-Xenoverse-Arena.png new file mode 100644 index 0000000..fed2bef Binary files /dev/null and b/assets/Sprites/DragonBall-Xenoverse-Arena.png differ diff --git a/assets/Sprites/DragonBall-Xenoverse-Arena.png.import b/assets/Sprites/DragonBall-Xenoverse-Arena.png.import new file mode 100644 index 0000000..7c35bca --- /dev/null +++ b/assets/Sprites/DragonBall-Xenoverse-Arena.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxl54clixbbhy" +path="res://.godot/imported/DragonBall-Xenoverse-Arena.png-928e4be9a916840f77aafddf89bc8456.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Sprites/DragonBall-Xenoverse-Arena.png" +dest_files=["res://.godot/imported/DragonBall-Xenoverse-Arena.png-928e4be9a916840f77aafddf89bc8456.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Sprites/idle sheet-Sheet.png b/assets/Sprites/idle sheet-Sheet.png new file mode 100644 index 0000000..cd2e389 Binary files /dev/null and b/assets/Sprites/idle sheet-Sheet.png differ diff --git a/assets/Sprites/idle sheet-Sheet.png.import b/assets/Sprites/idle sheet-Sheet.png.import new file mode 100644 index 0000000..72fae0c --- /dev/null +++ b/assets/Sprites/idle sheet-Sheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmo6obx17vqtk" +path="res://.godot/imported/idle sheet-Sheet.png-8f9e4b284c9de16530e5a3c1ab340fde.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Sprites/idle sheet-Sheet.png" +dest_files=["res://.godot/imported/idle sheet-Sheet.png-8f9e4b284c9de16530e5a3c1ab340fde.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Sprites/itch hurt 2 sheet-Sheet.png b/assets/Sprites/itch hurt 2 sheet-Sheet.png new file mode 100644 index 0000000..950c486 Binary files /dev/null and b/assets/Sprites/itch hurt 2 sheet-Sheet.png differ diff --git a/assets/Sprites/itch hurt 2 sheet-Sheet.png.import b/assets/Sprites/itch hurt 2 sheet-Sheet.png.import new file mode 100644 index 0000000..6a21817 --- /dev/null +++ b/assets/Sprites/itch hurt 2 sheet-Sheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dty6tvry0a7h6" +path="res://.godot/imported/itch hurt 2 sheet-Sheet.png-01a49a03e6f26544033a74b56a7ac285.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Sprites/itch hurt 2 sheet-Sheet.png" +dest_files=["res://.godot/imported/itch hurt 2 sheet-Sheet.png-01a49a03e6f26544033a74b56a7ac285.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Sprites/itch jump sheet-Sheet.png b/assets/Sprites/itch jump sheet-Sheet.png new file mode 100644 index 0000000..f320ca2 Binary files /dev/null and b/assets/Sprites/itch jump sheet-Sheet.png differ diff --git a/assets/Sprites/itch jump sheet-Sheet.png.import b/assets/Sprites/itch jump sheet-Sheet.png.import new file mode 100644 index 0000000..323fc56 --- /dev/null +++ b/assets/Sprites/itch jump sheet-Sheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://v6d20ena7j2" +path="res://.godot/imported/itch jump sheet-Sheet.png-dd35a8a8b5290dbab37d65339baae842.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Sprites/itch jump sheet-Sheet.png" +dest_files=["res://.godot/imported/itch jump sheet-Sheet.png-dd35a8a8b5290dbab37d65339baae842.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Sprites/itch light atk sheet-Sheet.png b/assets/Sprites/itch light atk sheet-Sheet.png new file mode 100644 index 0000000..36c44c1 Binary files /dev/null and b/assets/Sprites/itch light atk sheet-Sheet.png differ diff --git a/assets/Sprites/itch light atk sheet-Sheet.png.import b/assets/Sprites/itch light atk sheet-Sheet.png.import new file mode 100644 index 0000000..c563422 --- /dev/null +++ b/assets/Sprites/itch light atk sheet-Sheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://br8p7qgpesh04" +path="res://.godot/imported/itch light atk sheet-Sheet.png-8d2a77a467254821003790058b233a9a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Sprites/itch light atk sheet-Sheet.png" +dest_files=["res://.godot/imported/itch light atk sheet-Sheet.png-8d2a77a467254821003790058b233a9a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Sprites/itch run-Sheet sheet.png b/assets/Sprites/itch run-Sheet sheet.png new file mode 100644 index 0000000..0c5d991 Binary files /dev/null and b/assets/Sprites/itch run-Sheet sheet.png differ diff --git a/assets/Sprites/itch run-Sheet sheet.png.import b/assets/Sprites/itch run-Sheet sheet.png.import new file mode 100644 index 0000000..6eac9d5 --- /dev/null +++ b/assets/Sprites/itch run-Sheet sheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://demg154icj560" +path="res://.godot/imported/itch run-Sheet sheet.png-cfb83702c160655e7e28942cdcc1689d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Sprites/itch run-Sheet sheet.png" +dest_files=["res://.godot/imported/itch run-Sheet sheet.png-cfb83702c160655e7e28942cdcc1689d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Sprites/red hood itch free Copy-Sheet.png b/assets/Sprites/red hood itch free Copy-Sheet.png new file mode 100644 index 0000000..3f7b5a2 Binary files /dev/null and b/assets/Sprites/red hood itch free Copy-Sheet.png differ diff --git a/assets/Sprites/red hood itch free Copy-Sheet.png.import b/assets/Sprites/red hood itch free Copy-Sheet.png.import new file mode 100644 index 0000000..7ca2576 --- /dev/null +++ b/assets/Sprites/red hood itch free Copy-Sheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cgshiy0fb84fy" +path="res://.godot/imported/red hood itch free Copy-Sheet.png-f6242d37aa139ebe89862e871759371c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Sprites/red hood itch free Copy-Sheet.png" +dest_files=["res://.godot/imported/red hood itch free Copy-Sheet.png-f6242d37aa139ebe89862e871759371c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Sprites/red hood itch free.aseprite b/assets/Sprites/red hood itch free.aseprite new file mode 100644 index 0000000..ac2cf0a Binary files /dev/null and b/assets/Sprites/red hood itch free.aseprite differ diff --git a/assets/Sprites/run turnaround-Sheet.png b/assets/Sprites/run turnaround-Sheet.png new file mode 100644 index 0000000..f27e8e5 Binary files /dev/null and b/assets/Sprites/run turnaround-Sheet.png differ diff --git a/assets/Sprites/run turnaround-Sheet.png.import b/assets/Sprites/run turnaround-Sheet.png.import new file mode 100644 index 0000000..356effe --- /dev/null +++ b/assets/Sprites/run turnaround-Sheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c3c1iopiabxli" +path="res://.godot/imported/run turnaround-Sheet.png-281f7718fac02664775bf7b0c40b151f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Sprites/run turnaround-Sheet.png" +dest_files=["res://.godot/imported/run turnaround-Sheet.png-281f7718fac02664775bf7b0c40b151f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Sprites/texture-bar-outer-0001.png b/assets/Sprites/texture-bar-outer-0001.png new file mode 100644 index 0000000..4df7ab1 Binary files /dev/null and b/assets/Sprites/texture-bar-outer-0001.png differ diff --git a/assets/Sprites/texture-bar-outer-0001.png.import b/assets/Sprites/texture-bar-outer-0001.png.import new file mode 100644 index 0000000..a7f4b4b --- /dev/null +++ b/assets/Sprites/texture-bar-outer-0001.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bg5m7faciqihv" +path="res://.godot/imported/texture-bar-outer-0001.png-8c20adbbb2e6b6603404c387a943e9e6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Sprites/texture-bar-outer-0001.png" +dest_files=["res://.godot/imported/texture-bar-outer-0001.png-8c20adbbb2e6b6603404c387a943e9e6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Sprites/texture-bar-progress-0001.png b/assets/Sprites/texture-bar-progress-0001.png new file mode 100644 index 0000000..c237b70 Binary files /dev/null and b/assets/Sprites/texture-bar-progress-0001.png differ diff --git a/assets/Sprites/texture-bar-progress-0001.png.import b/assets/Sprites/texture-bar-progress-0001.png.import new file mode 100644 index 0000000..bcf64b0 --- /dev/null +++ b/assets/Sprites/texture-bar-progress-0001.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6aahxuqcgcnp" +path="res://.godot/imported/texture-bar-progress-0001.png-93114ae57f8896829549d513faa7abd9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Sprites/texture-bar-progress-0001.png" +dest_files=["res://.godot/imported/texture-bar-progress-0001.png-93114ae57f8896829549d513faa7abd9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/Sprites/wall slide-Sheet.png b/assets/Sprites/wall slide-Sheet.png new file mode 100644 index 0000000..2b19aed Binary files /dev/null and b/assets/Sprites/wall slide-Sheet.png differ diff --git a/assets/Sprites/wall slide-Sheet.png.import b/assets/Sprites/wall slide-Sheet.png.import new file mode 100644 index 0000000..7c8519e --- /dev/null +++ b/assets/Sprites/wall slide-Sheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b36nhtg8vabjd" +path="res://.godot/imported/wall slide-Sheet.png-e42eb86df80b96ec1239d7e728c0ca4d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Sprites/wall slide-Sheet.png" +dest_files=["res://.godot/imported/wall slide-Sheet.png-e42eb86df80b96ec1239d7e728c0ca4d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/doc/Refs.md b/doc/Refs.md new file mode 100644 index 0000000..bf19b22 --- /dev/null +++ b/doc/Refs.md @@ -0,0 +1,3 @@ +# Links + +https://overmental.com/content/fighting-game-backgrounds-without-fighters-are-surprisingly-beautiful-7668/5 diff --git a/doc/fight_report.md b/doc/fight_report.md new file mode 100644 index 0000000..162feb1 --- /dev/null +++ b/doc/fight_report.md @@ -0,0 +1,19 @@ +# Introduction + +The `Match-Report` is a textual representation of a fight between two opponents. + +## Terminology + +### Match + +A `Match` can be best described as a competition between two opponents. A `Match` ends when one of the competitors is declared the `winner`. + +### Round + +### Tick + +One `Round` consists out of 60 `Ticks` that mostly correlates to the 60s duration (but this is not a hard requirement). +Within a `Tick` one of the competitors can perform an `Action`. +With `Combos` it is possible that one competitor can perform multiple `Action`s within the same tick. + +### Action diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..ce6f64e --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,39 @@ +[preset.0] + +name="AnimeDemo" +platform="Web" +runnable=true +dedicated_server=false +custom_features="" +export_filter="scenes" +export_files=PackedStringArray("res://fight.tscn", "res://Fighter.tscn") +include_filter="" +exclude_filter="" +export_path="../../build/Animegame-Client/Web/index.html" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false +script_encryption_key="" + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +variant/extensions_support=false +vram_texture_compression/for_desktop=true +vram_texture_compression/for_mobile=false +html/export_icon=true +html/custom_html_shell="" +html/head_include="" +html/canvas_resize_policy=2 +html/focus_canvas_on_start=true +html/experimental_virtual_keyboard=false +progressive_web_app/enabled=false +progressive_web_app/offline_page="" +progressive_web_app/display=1 +progressive_web_app/orientation=0 +progressive_web_app/icon_144x144="" +progressive_web_app/icon_180x180="" +progressive_web_app/icon_512x512="" +progressive_web_app/background_color=Color(0, 0, 0, 1) diff --git a/fight.gd b/fight.gd new file mode 100644 index 0000000..4b88cdd --- /dev/null +++ b/fight.gd @@ -0,0 +1,64 @@ +extends Node2D + +@onready var _lhs_fighter = $LhsFighter +@onready var _rhs_fighter = $RhsFighter +@onready var _timer = $Timer +@onready var _round_label = $CountdownLabel + +signal next_round + +var _lhs_figher_ready = false +var _rhs_figher_ready = false + +var fight_script = { + "lhs": [ + [], + ["Attack1.1", "Attack1.2", "Attack1.3"], + [], + [], + ["Attack2.1", "Attack2.2", "Attack2.3"], + [], + [], + ], + "rhs": [ + [], + [], + [], + ["Attack1.1", "Attack1.2"], + [], + ["Attack2.1"], + [], + ] +} + +# Called when the node enters the scene tree for the first time. +func _ready(): + _reset() + _timer.start() + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + if _lhs_fighter.is_animation_done() && _rhs_fighter.is_animation_done() && Input.is_anything_pressed(): + _reset() + +func _reset(): + _lhs_fighter.init(fight_script["lhs"]) + _rhs_fighter.init(fight_script["rhs"]) + _round_label.init(len(fight_script["lhs"] + 1)) + _lhs_figher_ready = true + _rhs_figher_ready = true + +func _on_timer_timeout(): + print_debug("%s -> Fight: _lhs_figher_ready -> %s && %s && %s && %s!" % [Time.get_ticks_msec(), _lhs_figher_ready, _rhs_figher_ready, _lhs_fighter.is_animation_idle(),_rhs_fighter.is_animation_idle()]) + if _lhs_figher_ready && _rhs_figher_ready && _lhs_fighter.is_animation_idle() && _rhs_fighter.is_animation_idle(): + _lhs_figher_ready = false + _rhs_figher_ready = false + + print_debug("") + next_round.emit() + +func _on_lhs_fighter_actions_done(): + _lhs_figher_ready = true + +func _on_rhs_fighter_actions_done(): + _rhs_figher_ready = true diff --git a/fight.tscn b/fight.tscn new file mode 100644 index 0000000..385a4e0 --- /dev/null +++ b/fight.tscn @@ -0,0 +1,199 @@ +[gd_scene load_steps=14 format=3 uid="uid://c6k2qn8l56rf5"] + +[ext_resource type="PackedScene" uid="uid://di8on8rry21wa" path="res://Fighter.tscn" id="1_1yg04"] +[ext_resource type="Script" path="res://fight.gd" id="1_3edp6"] +[ext_resource type="Texture2D" uid="uid://ddsu16o54xyph" path="res://assets/Sprites/086-OtcZb45.png" id="2_h40sr"] +[ext_resource type="Script" path="res://Background.gd" id="3_dsftl"] +[ext_resource type="Script" path="res://FpsLabel.gd" id="3_xkxlv"] +[ext_resource type="Script" path="res://UserLabel.gd" id="4_beyjo"] +[ext_resource type="Texture2D" uid="uid://c6aahxuqcgcnp" path="res://assets/Sprites/texture-bar-progress-0001.png" id="5_fa5wd"] +[ext_resource type="Texture2D" uid="uid://bg5m7faciqihv" path="res://assets/Sprites/texture-bar-outer-0001.png" id="6_gxbv2"] +[ext_resource type="Script" path="res://HpBar.gd" id="7_po066"] +[ext_resource type="Script" path="res://CountDownLabel.gd" id="8_nagyd"] + +[sub_resource type="Animation" id="Animation_cemsf"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} + +[sub_resource type="Animation" id="Animation_nj0ai"] +resource_name = "default" +length = 1.6 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_bjoup"] +_data = { +"RESET": SubResource("Animation_cemsf"), +"default": SubResource("Animation_nj0ai") +} + +[node name="Node2D" type="Node2D"] +script = ExtResource("1_3edp6") + +[node name="Background" type="Node2D" parent="."] + +[node name="Sprite2D" type="Sprite2D" parent="Background"] +position = Vector2(320.5, 241.5) +scale = Vector2(1.15156, 1.31793) +texture = ExtResource("2_h40sr") +hframes = 4 +vframes = 4 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Background"] +root_node = NodePath("../Sprite2D") +libraries = { +"": SubResource("AnimationLibrary_bjoup") +} +script = ExtResource("3_dsftl") + +[node name="TextureRect" type="TextureRect" parent="Background"] +offset_right = 1600.0 +offset_bottom = 1197.0 +scale = Vector2(0.4, 0.4) + +[node name="LhsFighter" parent="." instance=ExtResource("1_1yg04")] +position = Vector2(192, 352) +descriptor = "LHS" + +[node name="RhsFighter" parent="." instance=ExtResource("1_1yg04")] +position = Vector2(462, 353) +orientation = 0 +descriptor = "RHS" + +[node name="Timer" type="Timer" parent="."] + +[node name="FpsLabel" type="Label" parent="."] +offset_right = 38.0 +offset_bottom = 23.0 +text = "FPS:" +script = ExtResource("3_xkxlv") + +[node name="SessionLabel" type="Label" parent="."] +offset_left = 290.0 +offset_right = 394.0 +offset_bottom = 23.0 +script = ExtResource("4_beyjo") + +[node name="LhsHp" type="TextureProgressBar" parent="."] +offset_left = 5.0 +offset_top = 25.0 +offset_right = 305.0 +offset_bottom = 50.0 +value = 80.0 +nine_patch_stretch = true +stretch_margin_left = 3 +stretch_margin_top = 3 +stretch_margin_right = 3 +stretch_margin_bottom = 3 +texture_under = ExtResource("5_fa5wd") +texture_over = ExtResource("6_gxbv2") +texture_progress = ExtResource("5_fa5wd") +tint_under = Color(0.411765, 0, 0, 1) +tint_over = Color(0, 0, 0, 1) +tint_progress = Color(1, 0, 0, 1) +script = ExtResource("7_po066") + +[node name="LhsStamina" type="TextureProgressBar" parent="."] +offset_left = 5.0 +offset_top = 51.0 +offset_right = 265.0 +offset_bottom = 61.0 +value = 80.0 +nine_patch_stretch = true +stretch_margin_left = 3 +stretch_margin_top = 3 +stretch_margin_right = 3 +stretch_margin_bottom = 3 +texture_under = ExtResource("5_fa5wd") +texture_over = ExtResource("6_gxbv2") +texture_progress = ExtResource("5_fa5wd") +tint_under = Color(0.411765, 0.411765, 0, 1) +tint_over = Color(0, 0, 0, 1) +tint_progress = Color(1, 1, 0, 1) +script = ExtResource("7_po066") + +[node name="RhsHp" type="TextureProgressBar" parent="."] +offset_left = 333.0 +offset_top = 25.0 +offset_right = 633.0 +offset_bottom = 50.0 +value = 80.0 +fill_mode = 1 +nine_patch_stretch = true +stretch_margin_left = 3 +stretch_margin_top = 3 +stretch_margin_right = 3 +stretch_margin_bottom = 3 +texture_under = ExtResource("5_fa5wd") +texture_over = ExtResource("6_gxbv2") +texture_progress = ExtResource("5_fa5wd") +tint_under = Color(0.411765, 0, 0, 1) +tint_over = Color(0, 0, 0, 1) +tint_progress = Color(1, 0, 0, 1) +script = ExtResource("7_po066") + +[node name="RhsStamina" type="TextureProgressBar" parent="."] +offset_left = 373.0 +offset_top = 51.0 +offset_right = 633.0 +offset_bottom = 61.0 +value = 80.0 +fill_mode = 1 +nine_patch_stretch = true +stretch_margin_left = 3 +stretch_margin_top = 3 +stretch_margin_right = 3 +stretch_margin_bottom = 3 +texture_under = ExtResource("5_fa5wd") +texture_over = ExtResource("6_gxbv2") +texture_progress = ExtResource("5_fa5wd") +tint_under = Color(0.411765, 0.411765, 0, 1) +tint_over = Color(0, 0, 0, 1) +tint_progress = Color(1, 1, 0, 1) +script = ExtResource("7_po066") + +[node name="CountdownLabel" type="Label" parent="."] +offset_left = 307.0 +offset_top = 26.0 +offset_right = 331.0 +offset_bottom = 49.0 +text = "10" +horizontal_alignment = 1 +vertical_alignment = 1 +clip_text = true +script = ExtResource("8_nagyd") + +[connection signal="next_round" from="." to="LhsFighter" method="_on_next_round"] +[connection signal="next_round" from="." to="RhsFighter" method="_on_next_round"] +[connection signal="next_round" from="." to="CountdownLabel" method="_on_next_round"] +[connection signal="animation_finished" from="Background/AnimationPlayer" to="Background/AnimationPlayer" method="_on_animation_finished"] +[connection signal="actions_done" from="LhsFighter" to="." method="_on_lhs_fighter_actions_done"] +[connection signal="deal_damage" from="LhsFighter" to="RhsFighter" method="_take_damage"] +[connection signal="health_changed" from="LhsFighter" to="LhsHp" method="_on_value_changed"] +[connection signal="stamina_changed" from="LhsFighter" to="LhsStamina" method="_on_value_changed"] +[connection signal="actions_done" from="RhsFighter" to="." method="_on_rhs_fighter_actions_done"] +[connection signal="deal_damage" from="RhsFighter" to="LhsFighter" method="_take_damage"] +[connection signal="health_changed" from="RhsFighter" to="RhsHp" method="_on_value_changed"] +[connection signal="stamina_changed" from="RhsFighter" to="RhsStamina" method="_on_value_changed"] +[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..adc26df --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..fd8b837 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0asgq1x7b3fv" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..ee634b2 --- /dev/null +++ b/project.godot @@ -0,0 +1,27 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Animegame-Client" +run/main_scene="res://fight.tscn" +config/features=PackedStringArray("4.0", "GL Compatibility") +boot_splash/image="res://assets/Splash/splash_b.png" +config/icon="res://icon.svg" + +[display] + +window/size/viewport_width=640 +window/size/viewport_height=480 + +[rendering] + +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility"