7-11-25 7:00pm
This commit is contained in:
203
Gameplay/Ball.cs
203
Gameplay/Ball.cs
@@ -3,207 +3,4 @@ using System;
|
||||
|
||||
public partial class Ball : RigidBody2D
|
||||
{
|
||||
[Signal]
|
||||
public delegate void HoverEventHandler(bool tf = true);
|
||||
[Signal]
|
||||
public delegate void SelectEventHandler(bool tf = true);
|
||||
[Signal]
|
||||
public delegate void AimEventHandler(bool tf = true);
|
||||
[Signal]
|
||||
public delegate void LaunchEventHandler(bool tf = true);
|
||||
[Signal]
|
||||
public delegate void MoveEventHandler(bool tf = true);
|
||||
[Signal]
|
||||
public delegate void BumpMarbleEventHandler(Ball ball);
|
||||
[Signal]
|
||||
public delegate void DefenseDownEventHandler(int damage);
|
||||
|
||||
public bool _holding, _placed, _hovered, _selected, _aimed, _launched, _moving;
|
||||
public int _defense, _defenseMax, _speed;
|
||||
public Vector2 _force, _velocity, _screenSize;
|
||||
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_holding = false;
|
||||
_placed = false;
|
||||
_hovered = false;
|
||||
_selected = false;
|
||||
_aimed = false;
|
||||
_launched = false;
|
||||
_moving = false;
|
||||
_defense = 10;
|
||||
_defenseMax = _defense;
|
||||
_speed = 400;
|
||||
_force = new Vector2(0,0);
|
||||
_velocity = new Vector2(0,0);
|
||||
_screenSize = GetViewportRect().Size;
|
||||
|
||||
Hide();
|
||||
}
|
||||
|
||||
public override void _PhysicsProcess(double delta) //THIS IS LIKE THE UPDATE FUNCTION
|
||||
{
|
||||
Rotation = 0;
|
||||
if (_placed)
|
||||
{
|
||||
TrySelect();
|
||||
TryAim();
|
||||
TryLaunch();
|
||||
TryMovement(delta);
|
||||
}
|
||||
else if (_holding)
|
||||
{
|
||||
//GetNode<CollisionShape2D>("Bounds").Disabled = true;
|
||||
Vector2 mousePosition = GetGlobalMousePosition();
|
||||
if (Input.IsActionJustReleased("left_click"))
|
||||
{
|
||||
Start(mousePosition);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void DefenseChange(int change)
|
||||
{
|
||||
_defense += change;
|
||||
if (_defense < 0)
|
||||
{
|
||||
EmitSignal(SignalName.DefenseDown); // 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>("Bounds").Disabled = false;
|
||||
}
|
||||
|
||||
public void TryAim()
|
||||
{
|
||||
if (_selected && Input.IsActionPressed("left_click") && ! _hovered && !_aimed)
|
||||
{
|
||||
_aimed = true;
|
||||
EmitSignal(SignalName.Aim);
|
||||
}
|
||||
|
||||
if (_aimed)
|
||||
{
|
||||
Vector2 mousePosition = GetGlobalMousePosition();
|
||||
_force = Position - mousePosition;
|
||||
|
||||
if (!Input.IsActionPressed("left_click"))
|
||||
{
|
||||
if (!_hovered)
|
||||
{
|
||||
_launched = true;
|
||||
EmitSignal(SignalName.Select, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
_aimed = false;
|
||||
EmitSignal(SignalName.Aim, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void TryLaunch()
|
||||
{
|
||||
if (_aimed && Input.IsActionJustReleased("left_click"))
|
||||
{
|
||||
_selected = false;
|
||||
EmitSignal(SignalName.Select, false);
|
||||
|
||||
_aimed = false;
|
||||
EmitSignal(SignalName.Aim, false);
|
||||
|
||||
_launched = true;
|
||||
EmitSignal(SignalName.Launch);
|
||||
|
||||
ApplyCentralForce(_force * _speed);
|
||||
_force = Vector2.Zero;
|
||||
}
|
||||
}
|
||||
|
||||
public void TryMovement(double delta)
|
||||
{
|
||||
if (LinearVelocity.Length() > 0 && !Sleeping)
|
||||
{
|
||||
if (!_moving)
|
||||
{
|
||||
_moving = true;
|
||||
EmitSignal(SignalName.Move);
|
||||
}
|
||||
}
|
||||
if (_moving)
|
||||
{
|
||||
//Vector2 Scroll = -LinearVelocity / 100;
|
||||
//
|
||||
//Sprite2D sprite = (Sprite2D)GetNode("Texture");
|
||||
//ShaderMaterial material = (ShaderMaterial)sprite.Material;
|
||||
//
|
||||
//float CurrentScrollX = (float)material.GetShaderParameter("scroll_x");
|
||||
//material.SetShaderParameter("scroll_x", (CurrentScrollX + Scroll.X * (float)delta) % 1.0f);
|
||||
//
|
||||
//float CurrentScrollY = (float)material.GetShaderParameter("scroll_y");
|
||||
//material.SetShaderParameter("scroll_y", (CurrentScrollY + Scroll.Y * (float)delta) % 1.0f);
|
||||
|
||||
|
||||
if (Sleeping)
|
||||
{
|
||||
_launched = false;
|
||||
_moving = false;
|
||||
EmitSignal(SignalName.Move, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void TrySelect()
|
||||
{
|
||||
if ( _hovered)
|
||||
{
|
||||
if (Input.IsActionJustPressed("left_click") && !_selected)
|
||||
{
|
||||
_selected = true;
|
||||
EmitSignal(SignalName.Select);
|
||||
}
|
||||
}
|
||||
|
||||
if (_selected)
|
||||
{
|
||||
if (!_hovered)
|
||||
{
|
||||
if (Input.IsActionJustPressed("left_click") && _selected)
|
||||
{
|
||||
_selected = false;
|
||||
EmitSignal(SignalName.Select, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnMouseEntered()
|
||||
{
|
||||
_hovered = true;
|
||||
EmitSignal(SignalName.Hover);
|
||||
}
|
||||
|
||||
private void OnMouseExited()
|
||||
{
|
||||
_hovered = false;
|
||||
EmitSignal(SignalName.Hover, false);
|
||||
}
|
||||
|
||||
private void OnBodyEntered(Node2D body)
|
||||
{
|
||||
if (body.GetType() == typeof(Ball))
|
||||
{
|
||||
EmitSignal(SignalName.BumpMarble, (Ball)body);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user