messag here
This commit is contained in:
1 parent
ae5d43d74e
commit
e4a6130947
18 files changed
+363
-33
No files matched your search
@@ -2,6 +2,9 @@ extends Node2D
|
||||
|
||||
signal destroySignal(body)
|
||||
signal levelChangeSignal(level)
|
||||
signal damagePlayerSignal(damageTotal, playerHealthTotal)
|
||||
signal killPlayerSignal
|
||||
signal timechangesignal(currenttimeavailable)
|
||||
|
||||
var levels = ["res://Scenes/game.tscn","res://Scenes/level 2.tscn","res://Scenes/level3.tscn"]
|
||||
var currentLevel = 0
|
||||
@@ -15,9 +18,14 @@ var playerCurrentHealth:int = 100
|
||||
#enemies
|
||||
var enemiesDict = {}
|
||||
|
||||
var enemy:CharacterStats
|
||||
var player:CharacterStats
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
get_window().grab_focus()
|
||||
enemy = load("res://Scripts/rscs/slime_stats.tres")
|
||||
player = load("res://Scripts/rscs/player_sats.tres")
|
||||
add_child(timer)
|
||||
timer.wait_time = 1
|
||||
timer.one_shot = false
|
||||
@@ -27,6 +35,7 @@ func _ready() -> void:
|
||||
func secondCounter()->void:
|
||||
print("tick")
|
||||
timeAvailable-=1
|
||||
timechangesignal.emit(timeAvailable)
|
||||
if timeAvailable <=0:
|
||||
print ("you loose!")
|
||||
levelChangeSignal.emit(levels[currentLevel])
|
||||
@@ -34,7 +43,7 @@ func secondCounter()->void:
|
||||
|
||||
func reset() -> void:
|
||||
timeAvailable = timers[currentLevel]
|
||||
playerCurrentHealth = 100
|
||||
playerCurrentHealth = player.starting_health
|
||||
|
||||
get_window().grab_focus()
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
@@ -60,16 +69,21 @@ func _on_slime_damage(_body, slime)->void:
|
||||
print ("GC knows slime doing damage")
|
||||
print("doing damage: "+str(enemiesDict[slime]["damage"]))
|
||||
playerCurrentHealth -= enemiesDict[slime]["damage"]
|
||||
#send a custom signal about damage
|
||||
damagePlayerSignal.emit(enemiesDict[slime]["damage"], playerCurrentHealth)
|
||||
if playerCurrentHealth <=0:
|
||||
print ("U ded")
|
||||
levelChangeSignal.emit(levels[currentLevel])
|
||||
killPlayerSignal.emit()
|
||||
|
||||
|
||||
func addEnemyToLevel(slime)->void:
|
||||
#give each enemy some health and damage
|
||||
var randamage = randi_range(1,20)
|
||||
|
||||
var enemyStat = {
|
||||
"health": 50,
|
||||
"damage": 30+randamage
|
||||
}
|
||||
"health": enemy.starting_health,
|
||||
"damage": enemy.meleeDamage+randamage
|
||||
}
|
||||
enemiesDict[slime]=enemyStat
|
||||
func respawn()->void:
|
||||
levelChangeSignal.emit(levels[currentLevel])
|
||||
+18
-2
@@ -7,16 +7,19 @@ const JUMP_VELOCITY = -400.0
|
||||
@onready var left_spawn: Marker2D = $LeftSpawn
|
||||
@onready var player_graphic: AnimatedSprite2D = $PlayerGraphic
|
||||
|
||||
signal deathAnimationComplete
|
||||
|
||||
var direction
|
||||
enum FaceDirection{LEFT,RIGHT}
|
||||
var facing:FaceDirection = FaceDirection.RIGHT
|
||||
enum PlayerState{IDLE,RUNNING,JUMPING,FALLING}
|
||||
enum PlayerState{IDLE,RUNNING,JUMPING,FALLING,HURT,DEAD}
|
||||
var current_player_state:PlayerState = PlayerState.IDLE
|
||||
var upjump:bool = false
|
||||
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
handle_input()
|
||||
if not current_player_state == PlayerState.HURT:
|
||||
handle_input()
|
||||
|
||||
handle_state()
|
||||
handle_animation()
|
||||
@@ -88,6 +91,10 @@ func handle_animation()->void:
|
||||
player_graphic.play("jump")
|
||||
PlayerState.FALLING:
|
||||
player_graphic.play("fall")
|
||||
PlayerState.HURT:
|
||||
player_graphic.play("Hurt")
|
||||
PlayerState.DEAD:
|
||||
player_graphic.play("dead")
|
||||
|
||||
|
||||
|
||||
@@ -95,3 +102,12 @@ func _on_animation_finished() -> void:
|
||||
match current_player_state:
|
||||
PlayerState.JUMPING:
|
||||
upjump = false
|
||||
PlayerState.HURT:
|
||||
current_player_state = PlayerState.IDLE
|
||||
PlayerState.DEAD:
|
||||
deathAnimationComplete.emit()
|
||||
func takeDamage(_damage,_remainingHealth)->void:
|
||||
print("Players knows damage"+str(_damage))
|
||||
current_player_state = PlayerState.HURT
|
||||
func die()->void:
|
||||
current_player_state = PlayerState.DEAD
|
||||
@@ -0,0 +1,8 @@
|
||||
class_name CharacterStats extends Resource
|
||||
|
||||
@export var health:int = 100
|
||||
@export var max_health:int = 120
|
||||
@export var starting_health = 100
|
||||
|
||||
@export var meleeDamage:int = 10
|
||||
@export var rangeDamage:int = 5
|
||||
@@ -0,0 +1 @@
|
||||
uid://btjirk5r5r50v
|
||||
@@ -0,0 +1,8 @@
|
||||
[gd_resource type="Resource" script_class="CharacterStats" format=3 uid="uid://cobe3kt6pn1wb"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://btjirk5r5r50v" path="res://Scripts/rscs/character_stats.gd" id="1_jiogy"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_jiogy")
|
||||
health = 110
|
||||
metadata/_custom_type_script = "uid://btjirk5r5r50v"
|
||||
@@ -0,0 +1,11 @@
|
||||
[gd_resource type="Resource" script_class="CharacterStats" format=3 uid="uid://c0xhd2g03rcls"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://btjirk5r5r50v" path="res://Scripts/rscs/character_stats.gd" id="1_38j4j"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_38j4j")
|
||||
health = 40
|
||||
max_health = 45
|
||||
starting_health = 40
|
||||
rangeDamage = 0
|
||||
metadata/_custom_type_script = "uid://btjirk5r5r50v"
|
||||
@@ -3,12 +3,19 @@ class_name SceneManager extends Node2D
|
||||
@onready var crates: Node2D = $"../Crates"
|
||||
var grenade = preload("res://Scenes/grenade.tscn")
|
||||
@onready var enemies: Node2D = $"../Enemies"
|
||||
@onready var player = $"../Player"
|
||||
@onready var control = $"../CanvasLayer/Control"
|
||||
|
||||
func _ready() -> void:
|
||||
GameController.reset()
|
||||
print("Scene manager is ready!")
|
||||
GameController.destroySignal.connect(destroy)
|
||||
GameController.levelChangeSignal.connect(changeScene)
|
||||
GameController.damagePlayerSignal.connect(player.takeDamage)
|
||||
GameController.damagePlayerSignal.connect((control.updatehealth))
|
||||
GameController.timechangesignal.connect(control.updatetime)
|
||||
GameController.killPlayerSignal.connect(player.die)
|
||||
player.deathAnimationComplete.connect(GameController.respawn)
|
||||
buildLevel()
|
||||
|
||||
func destroy(body)->void:
|
||||
|
||||
+4
-1
@@ -15,13 +15,16 @@ func _process(delta: float) -> void:
|
||||
if rightcast.is_colliding() and not rightcast.get_collider() is Player:
|
||||
direction = -1
|
||||
slime_graphic.flip_h = true
|
||||
|
||||
if left_cast.is_colliding() and not left_cast.get_collider() is Player:
|
||||
direction = 1
|
||||
slime_graphic.flip_h = false
|
||||
|
||||
if not right_down_cast.is_colliding():
|
||||
direction = -1
|
||||
slime_graphic.flip_h = true
|
||||
if not left_cast.is_colliding():
|
||||
|
||||
if not left_down_cast.is_colliding():
|
||||
direction = +1
|
||||
slime_graphic.flip_h = false
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
extends Control
|
||||
@onready var health = $VBoxContainer/HBoxContainer/MarginContainer/hEALTH
|
||||
@onready var time = $VBoxContainer/HBoxContainer/MarginContainer2/TIME
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
health.text = "boombastic"
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
pass
|
||||
func updatehealth(_damage,_health)->void:
|
||||
health.text = "Health"+str(_health)
|
||||
func updatetime (timeavailable)->void:
|
||||
time.text = str(timeavailable)
|
||||
@@ -0,0 +1 @@
|
||||
uid://dlajwbi28mo3c
|
||||
Reference in new issue
Block a user