Skip to content

Commit

Permalink
add base system + clean up
Browse files Browse the repository at this point in the history
  • Loading branch information
myin142 committed Oct 31, 2023
1 parent 1d9f739 commit 314f8dc
Show file tree
Hide file tree
Showing 67 changed files with 386 additions and 141 deletions.
23 changes: 0 additions & 23 deletions .github/workflows/web.yml

This file was deleted.

2 changes: 1 addition & 1 deletion godot/.gutconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"selected": "",
"should_exit": true,
"should_maximize": true,
"suffix": "Test.gd",
"suffix": "_test.gd",
"tests": [],
"unit_test_name": ""
}
6 changes: 0 additions & 6 deletions godot/addons/base-system/save/README.md

This file was deleted.

2 changes: 1 addition & 1 deletion godot/project.godot
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ config/icon="res://icon.svg"

[autoload]

Env="*res://addons/debug/Env.gd"
Env="*res://src/env/Env.gd"
SceneManager="*res://addons/scene-manager/SceneManager.tscn"

[debug]
Expand Down
85 changes: 0 additions & 85 deletions godot/shared/effect/Effect.gd

This file was deleted.

6 changes: 0 additions & 6 deletions godot/shared/effect/FadeEffect.gd

This file was deleted.

10 changes: 0 additions & 10 deletions godot/shared/effect/PositionEffect.gd

This file was deleted.

File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
class_name FrameFreeze
extends Node

func freeze(time_scale: float, duration: float):
@export var time_scale := 0.05
@export var duration := 0.5

func freeze():
Engine.time_scale = time_scale
await get_tree().create_timer(duration * time_scale).timeout
Engine.time_scale = 1
7 changes: 7 additions & 0 deletions godot/src/base-system/FreeOnEnterArea2D.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
extends Area2D

@export var node: Node

func _ready():
area_entered.connect(func(_a): node.queue_free())
body_entered.connect(func(_a): node.queue_free())
8 changes: 8 additions & 0 deletions godot/src/base-system/FreeOnExit.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class_name FreeOnExit
extends VisibleOnScreenNotifier2D

@export var node: Node

func _ready():
if node:
screen_exited.connect(func(): node.queue_free())
5 changes: 5 additions & 0 deletions godot/src/base-system/FreeOnFinish.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class_name FreeOnFinish
extends AnimatedSprite2D

func _ready():
animation_finished.connect(func(): queue_free())
File renamed without changes.
14 changes: 14 additions & 0 deletions godot/src/base-system/OneShotParticles2D.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class_name OneShotParticles
extends GPUParticles2D

signal finished()

@export var wait_time := -1.0
@onready var time := lifetime if wait_time < 0 else wait_time

func _ready():
emitting = true
get_tree().create_timer(time).timeout.connect(func():
finished.emit()
queue_free()
)
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://blurtq1v44gav"]

[ext_resource type="Script" path="res://addons/base-system/menu/RemapButton.gd" id="1"]
[ext_resource type="Script" path="res://src/base-system/menu/RemapButton.gd" id="1"]

[node name="RemapButton" type="Button"]
anchors_preset = 15
Expand Down
File renamed without changes.
7 changes: 7 additions & 0 deletions godot/src/base-system/move/BulletController.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class_name BulletController
extends CharacterController

@export var dir := Vector2.RIGHT

func get_motion():
return dir
5 changes: 5 additions & 0 deletions godot/src/base-system/move/CharacterController.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class_name CharacterController
extends Node2D

func get_motion():
return Vector2.ZERO
7 changes: 7 additions & 0 deletions godot/src/base-system/move/TargetController.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class_name TargetController
extends CharacterController

@export var node: Node2D

func get_motion():
return global_position.direction_to(node.global_position)
24 changes: 24 additions & 0 deletions godot/src/base-system/move/TopDownMove2D.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
extends Node

@export var ctrl: CharacterController
@export var speed_value: ValueProvider
@export var speed := 300
@export var accel := 900

@export var debug := false

var _logger := Logger.new("TopDownMove2D")

func move(velocity: Vector2, delta: float):
var motion = Vector2.ZERO
if ctrl:
motion = ctrl.get_motion()

if debug:
_logger.debug("Moving to %s" % motion)

var s = _get_speed()
return velocity.move_toward(motion * s, accel * delta)

func _get_speed():
return speed_value.get_value() if speed_value else speed
9 changes: 9 additions & 0 deletions godot/src/base-system/move/TopDownPlayerController.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class_name TopDownPlayerController
extends CharacterController

@export var input: PlayerInput

func get_motion():
var motion_x = input.get_action_strength("move_right") - input.get_action_strength("move_left")
var motion_y = input.get_action_strength("move_down") - input.get_action_strength("move_up")
return Vector2(motion_x, motion_y)
11 changes: 11 additions & 0 deletions godot/src/base-system/rpg/DelayedDamage.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class_name DelayedDamage
extends Timer

@export var health: Health
@export var damage := 1

func _ready():
timeout.connect(func():
if health:
health.hurt(damage)
)
17 changes: 17 additions & 0 deletions godot/src/base-system/rpg/HitBox.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
class_name HitBox
extends Area2D

@export var damage := 1
@export var damage_value: NumberValue
@export var knockback_force := 0

func _ready():
area_entered.connect(func(area):
if area is HurtBox:
_do_damage(area)
)

func _do_damage(area: HurtBox):
var dmg = damage_value.get_value() if damage_value else damage
var knockback_dir = global_position.direction_to(area.global_position)
return area.damage(dmg, knockback_dir * knockback_force)
19 changes: 19 additions & 0 deletions godot/src/base-system/rpg/HitFlash2D.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
class_name HitFlash2D
extends Node

@export var time := 0.1
@export var node: Node2D

func flash():
if node and node.material:
var mat = node.material as ShaderMaterial
_set_hit_flash(mat, true)
await get_tree().create_timer(time).timeout
_set_hit_flash(mat, false)

func reset():
if node:
_set_hit_flash(node.material, false)

func _set_hit_flash(mat: ShaderMaterial, enable: bool):
pass
34 changes: 34 additions & 0 deletions godot/src/base-system/rpg/Hurtbox.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
class_name HurtBox
extends Area2D

@export var health: Health
@export var hit_sound: AudioStreamPlayer
@export var frame_freeze: FrameFreeze
@export var hit_flash: HitFlash2D

@export var invincible_time := 0.0

signal hit(dmg)
signal knockback(dir)

var invincible := false

func damage(dmg: int, knockback_force: Vector2):
if invincible:
return false

invincible = true
hit.emit(dmg)
if knockback_force:
knockback.emit(knockback_force)

if health:
health.hurt(dmg)
if hit_sound:
hit_sound.play()
if hit_flash:
hit_flash.flash()
if frame_freeze and not health.is_dead():
frame_freeze.freeze()

get_tree().create_timer(invincible_time).timeout.connect(func(): invincible = false)
File renamed without changes.
34 changes: 34 additions & 0 deletions godot/src/base-system/rpg/health.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
class_name Health
extends Node

signal health_changed(hp)
signal zero_health()

@export var max_health_value: ValueProvider
@export var max_health := 1
@onready var health := max_health : set = _set_health

func hurt(dmg: int):
self.health -= dmg

func heal(amount: int):
self.health += amount

func _get_max_health():
return max_health_value.get_value() if max_health_value else max_health

func _set_health(v: int):
health = clamp(v, 0, max_health)
health_changed.emit(health)

if is_dead():
zero_health.emit()

func is_full_health():
return health == max_health

func is_dead():
return health <= 0

func get_health_percent():
return float(health) / float(max_health)
Loading

0 comments on commit 314f8dc

Please sign in to comment.