7-9-25 6:00pm7-9-25 6:00pm7-9-25 6:00pm7-9-25 6:00pm7-9-25 6:00pm7-9-25

6:00pm7-9-25 6:00pm7-9-25 6:00pm7-9-25 6:00pm
This commit is contained in:
2025-07-09 18:00:42 -04:00
parent 00c0cfcff7
commit 1c1266fd25
27 changed files with 319 additions and 189 deletions

View File

@@ -6,63 +6,77 @@ public partial class Marble : RigidBody2D
// Don't forget to rebuild the project so the editor knows about the new signal.
[Signal]
public delegate void HitEventHandler();
public delegate void HoverEventHandler(bool tf = true);
[Signal]
public delegate void HoverEventHandler();
public delegate void SelectEventHandler(bool tf = true);
[Signal]
public delegate void HoverFalseEventHandler();
public delegate void AimEventHandler(bool tf = true);
[Signal]
public delegate void SelectEventHandler();
public delegate void LaunchEventHandler(bool tf = true);
[Signal]
public delegate void SelectFalseEventHandler();
public delegate void MoveEventHandler(bool tf = true);
[Signal]
public delegate void AimEventHandler();
public delegate void BumpMarbleEventHandler(Marble marble);
[Signal]
public delegate void AimFalseEventHandler();
[Signal]
public delegate void LaunchEventHandler();
[Signal]
public delegate void MoveEventHandler();
[Signal]
public delegate void StopEventHandler();
public delegate void DefenseDownEventHandler(int damage);
[Export]
public int Speed { get; set; } = 400; // How fast the player will move (pixels/sec).
public bool Hovered = false, Selected = false, Aimed = false, Launched = false, Moving = false;
public bool Holding = false, Placed = false, Hovered = false, Selected = false, Aimed = false, Launched = false, Moving = false;
[Export]
public int Defense = 10, Speed = 400;
[Export]
public Vector2 Force = Vector2.Zero, Velocity = Vector2.Zero;
[Export]
public Vector2 ScreenSize; // Size of the game window.
public int _defenseMax;
public override void _Ready()
{
ScreenSize = GetViewportRect().Size;
_defenseMax = Defense;
//Hide();
}
public override void _PhysicsProcess(double delta) //THIS IS LIKE THE UPDATE FUNCTION
{
TrySelect();
TryAim();
TryLaunch();
TryMovement(delta);
if (Placed)
{
TrySelect();
TryAim();
TryLaunch();
TryMovement(delta);
}
else if (Holding)
{
GetNode<CollisionShape2D>("Bounds").Disabled = true;
Position = GetGlobalMousePosition();
if (Input.IsActionJustReleased("left_click"))
{
Start(Position);
}
}
}
public void ProcessOnBump(Node2D body)
public void DefenseChange(int change)
{
GD.Print(body);
}
public void ProcessOnMovement()
{
Defense += change;
if (Defense < 0)
{
EmitSignal(SignalName.DefenseDown, Defense); // transfer damage over 0 to player
Defense = 0; // set defense back to 0
}
}
public void Start(Vector2 position)
{
Holding = false;
Placed = true;
Position = position;
Show();
GetNode<CollisionShape2D>("CollisionShape2D").Disabled = false;
GetNode<CollisionShape2D>("Bounds").Disabled = false;
}
public void TryAim()
@@ -77,18 +91,19 @@ public partial class Marble : RigidBody2D
{
Vector2 mousePosition = GetGlobalMousePosition();
Force = Position - mousePosition;
//Rotation = Force.Angle() - 180; // if i want to implement this i need to work out the shader to accept rotation
if (!Input.IsActionPressed("left_click"))
{
if (!Hovered)
{
Launched = true;
EmitSignal(SignalName.SelectFalse);
EmitSignal(SignalName.Select, false);
}
else
{
Aimed = false;
EmitSignal(SignalName.AimFalse);
EmitSignal(SignalName.Aim, false);
}
}
}
@@ -99,10 +114,10 @@ public partial class Marble : RigidBody2D
if (Aimed && Input.IsActionJustReleased("left_click"))
{
Selected = false;
EmitSignal(SignalName.SelectFalse);
EmitSignal(SignalName.Select, false);
Aimed = false;
EmitSignal(SignalName.AimFalse);
EmitSignal(SignalName.Aim, false);
Launched = true;
EmitSignal(SignalName.Launch);
@@ -124,12 +139,10 @@ public partial class Marble : RigidBody2D
}
}
if (Moving)
{
ProcessOnMovement();
{
Vector2 Scroll = -LinearVelocity / 100;
Sprite2D sprite = (Sprite2D)GetNode("Sprite2D");
Sprite2D sprite = (Sprite2D)GetNode("Texture");
ShaderMaterial material = (ShaderMaterial)sprite.Material;
float CurrentScrollX = (float)material.GetShaderParameter("scroll_x");
@@ -140,8 +153,9 @@ public partial class Marble : RigidBody2D
if (Sleeping)
{
Launched = false;
Moving = false;
EmitSignal(SignalName.Stop);
EmitSignal(SignalName.Move, false);
}
}
}
@@ -164,7 +178,7 @@ public partial class Marble : RigidBody2D
if (Input.IsActionJustPressed("left_click") && Selected)
{
Selected = false;
EmitSignal(SignalName.SelectFalse);
EmitSignal(SignalName.Select, false);
}
}
}
@@ -179,16 +193,14 @@ public partial class Marble : RigidBody2D
private void OnMouseExited()
{
Hovered = false;
EmitSignal(SignalName.HoverFalse);
EmitSignal(SignalName.Hover, false);
}
private void OnBodyEntered(Node2D body)
{
if (body.GetType() == typeof(Marble))
{
Marble marble = (Marble)body;
ProcessOnBump(marble);
marble.ProcessOnBump(this);
EmitSignal(SignalName.BumpMarble, (Marble)body);
}
}
}