Fixed critical oversight in timer management and implimented global timer system

This commit is contained in:
Jojackman1
2026-01-24 19:21:26 -07:00
parent f1ab5a352c
commit d806c69fb0
6 changed files with 50 additions and 159 deletions

View File

@@ -1,8 +1,8 @@
using Godot;
using System;
public partial class IQBasedEnemy : RigidBody2D
{
public partial class IQEnemy : RigidBody2D
{
// Misc
float GlobalTimer;
@@ -45,7 +45,6 @@ public partial class IQBasedEnemy : RigidBody2D
// Read and set stats
if (HasMeta("MaxHP")) MaxHP = (float)GetMeta("MaxHP");
// Set up ground detection
GetNode<Area2D>("GroundDetector").AreaEntered += OnGroundEntered;
GetNode<Area2D>("GroundDetector").AreaExited += OnGroundExited;
@@ -57,17 +56,21 @@ public partial class IQBasedEnemy : RigidBody2D
if (IQ >= 100) MaxHP += 20;
HP = MaxHP;
if (IQ >= 100 && HasMeta("RegenerationInterval")) RegenerationInterval *= 0.9f;
if (IQ >= 100 && HasMeta("RegenerationAmmount")) RegenerationAmmount *= 1.05f; // 5% increase
}
public override void _Process(double delta)
{
// Incriment Global Timer
GlobalTimer += (float)delta;
// Update Timer
GlobalTimer = GetTree().Root.GetNode<CommonData>("CommonData").GlobalTimer;
// Show current hp for testing purposes
if (HasMeta("CurrentHP")) SetMeta("CurrentHP", HP);
// Regenerate Health
if (AbilityRegenerate){
if (GlobalTimer % RegenerationInterval == 0) Regenerate(RegenerationAmmount);
if (GlobalTimer % RegenerationInterval == 0){Regenerate(RegenerationAmmount);}
}
}

View File

@@ -1,72 +1,72 @@
[gd_scene load_steps=22 format=3 uid="uid://eknn66u8gt26"]
[ext_resource type="Script" uid="uid://cy22d14qd0f48" path="res://Assets/Scenes/DEVSCENES/IQBasedEnemy.cs" id="1_a638n"]
[ext_resource type="Texture2D" uid="uid://c0pno0ac25r7i" path="res://Assets/Sprites/knight.png" id="2_xbll0"]
[ext_resource type="Script" uid="uid://cy22d14qd0f48" path="res://Assets/Scenes/DEVSCENES/IQEnemy.cs" id="1_p53ib"]
[ext_resource type="Texture2D" uid="uid://c0pno0ac25r7i" path="res://Assets/Sprites/knight.png" id="2_o0b1e"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bc7hl"]
[sub_resource type="AtlasTexture" id="AtlasTexture_a1e3t"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(0, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ef81u"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(32, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_4c3ag"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(64, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_1uahc"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(96, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_e5qiv"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(128, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_3xcl8"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(160, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_55x3b"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(192, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_f81eh"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(224, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_2ehdo"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(0, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_4wgw3"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(32, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_7bxlo"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(64, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_kwup2"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(96, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_p5lub"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(128, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_v4h3h"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(160, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_fpk85"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(192, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_hylxp"]
atlas = ExtResource("2_xbll0")
atlas = ExtResource("2_o0b1e")
region = Rect2(224, 96, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_rqn21"]
@@ -130,9 +130,11 @@ animations = [{
[node name="IQEnemy" type="RigidBody2D"]
collision_layer = 8
collision_mask = 3
script = ExtResource("1_a638n")
script = ExtResource("1_p53ib")
metadata/IQ = 20
metadata/MaxHP = 100.0
metadata/CurrentHP = 0.0
metadata/AbilityRegenerate = true
[node name="GroundDetector" type="Area2D" parent="."]
position = Vector2(1.1368684e-13, 10.999999)

File diff suppressed because one or more lines are too long

View File

@@ -6,6 +6,11 @@ public partial class CommonData : Node
{
public bool Muted = true;
// Game Information
public const float FPS = 90.0f; // Max game fps
public float GlobalTimer = 0.0f; // Seconds elapsed since game start
int NumFramesElapsed = 0;
// Level information
public string CurrentLevel;
@@ -38,6 +43,11 @@ public partial class CommonData : Node
public override void _Process(double delta)
{
// Frame Counter
NumFramesElapsed += 1;
GlobalTimer = NumFramesElapsed / FPS;
GlobalTimer = (float)Convert.ToDouble(GlobalTimer.ToString("0.##")); // Truncates seconds elapsed to hundreds place (0.00)
if (Input.IsActionJustPressed("quit_game"))
{
GetTree().Quit();

View File

@@ -13,6 +13,7 @@ config_version=5
config/name="fracturepoint"
run/main_scene="uid://bn5opy6atakg"
config/features=PackedStringArray("4.5", "C#", "GL Compatibility")
run/max_fps=90
config/icon="res://icon.svg"
[display]