7-29-25 @ 2:57am
This commit is contained in:
124
Gameplay/Ball.cs
124
Gameplay/Ball.cs
@@ -1,10 +1,19 @@
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Runtime;
|
||||
|
||||
public partial class Ball : RigidBody2D
|
||||
{
|
||||
|
||||
[Signal]
|
||||
public delegate void OnHitEventHandler();
|
||||
public delegate void OnCollisionEventHandler(Ball TARGET);
|
||||
[Signal]
|
||||
public delegate void OnLaunchEventHandler();
|
||||
[Signal]
|
||||
public delegate void OnMovementEventHandler();
|
||||
[Signal]
|
||||
public delegate void OnStopEventHandler();
|
||||
|
||||
public bool _active = false, _placed = false, _potted = false, _available = false, _hovered = false, _selected = false, _aimed = false, _launched = false, _moving = false, _isCue = false;
|
||||
public float _moveThreshold = 5.0f;
|
||||
public Vector2 _newPosition = new Vector2(-1, -1);
|
||||
@@ -18,13 +27,11 @@ public partial class Ball : RigidBody2D
|
||||
return newBall;
|
||||
}
|
||||
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
public override void _Process(double DELTA_)
|
||||
{
|
||||
if (LinearVelocity.Length() > 0 && LinearVelocity.Length() < _moveThreshold)
|
||||
@@ -32,6 +39,7 @@ public partial class Ball : RigidBody2D
|
||||
Sleeping = true;
|
||||
if (_moving)
|
||||
{
|
||||
ProcessOnStop();
|
||||
_moving = false;
|
||||
if (_launched)
|
||||
{
|
||||
@@ -41,6 +49,7 @@ public partial class Ball : RigidBody2D
|
||||
}
|
||||
else if (LinearVelocity.Length() >= _moveThreshold)
|
||||
{
|
||||
ProcessOnMovement();
|
||||
if (!_moving)
|
||||
{
|
||||
_moving = true;
|
||||
@@ -63,11 +72,17 @@ public partial class Ball : RigidBody2D
|
||||
}
|
||||
}
|
||||
|
||||
public void Launch()
|
||||
{
|
||||
ProcessOnLaunch();
|
||||
}
|
||||
|
||||
public void Pot()
|
||||
{
|
||||
Sleeping = true;
|
||||
_active = false;
|
||||
_placed = false;
|
||||
_potted = true;
|
||||
Sleeping = true;
|
||||
_moving = false;
|
||||
}
|
||||
|
||||
@@ -78,7 +93,11 @@ public partial class Ball : RigidBody2D
|
||||
|
||||
private void OnBodyEntered(Node2D TARGET)
|
||||
{
|
||||
|
||||
if (TARGET is Ball)
|
||||
{
|
||||
Ball target = (Ball)TARGET;
|
||||
ProcessOnCollision(target);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnMouseEntered()
|
||||
@@ -99,85 +118,86 @@ public partial class Ball : RigidBody2D
|
||||
|
||||
|
||||
//Processes
|
||||
public virtual void ProcessOnAdd()
|
||||
{
|
||||
// public virtual void ProcessOnAdd()
|
||||
// {
|
||||
|
||||
// }
|
||||
|
||||
// public virtual void ProcessOnBattleStart()
|
||||
// {
|
||||
|
||||
// }
|
||||
|
||||
// public virtual void ProcessOnBattleEnd()
|
||||
// {
|
||||
|
||||
// }
|
||||
|
||||
public virtual void ProcessOnCollision(Ball TARGET)
|
||||
{
|
||||
EmitSignal(SignalName.OnCollision, TARGET);
|
||||
}
|
||||
|
||||
public virtual void ProcessOnBattleStart()
|
||||
{
|
||||
// public virtual void ProcessOnCreation()
|
||||
// {
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
public virtual void ProcessOnBattleEnd()
|
||||
{
|
||||
// public virtual void ProcessOnCritical()
|
||||
// {
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
public virtual void ProcessOnCollision()
|
||||
{
|
||||
// public virtual void ProcessOnDeath()
|
||||
// {
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
public virtual void ProcessOnCreation()
|
||||
{
|
||||
// public virtual void ProcessOnDefend()
|
||||
// {
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
public virtual void ProcessOnCritical()
|
||||
{
|
||||
// public virtual void ProcessOnExpiration()
|
||||
// {
|
||||
|
||||
}
|
||||
|
||||
public virtual void ProcessOnDeath()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public virtual void ProcessOnDefend()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public virtual void ProcessOnExpiration()
|
||||
{
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
public virtual void ProcessOnLaunch()
|
||||
{
|
||||
|
||||
_launched = true;
|
||||
EmitSignal(SignalName.OnLaunch);
|
||||
}
|
||||
|
||||
public virtual void ProcessOnMovement()
|
||||
{
|
||||
|
||||
EmitSignal(SignalName.OnMovement);
|
||||
}
|
||||
|
||||
public virtual void ProcessOnRemove()
|
||||
{
|
||||
// public virtual void ProcessOnRemove()
|
||||
// {
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
public virtual void ProcessOnSell()
|
||||
{
|
||||
// public virtual void ProcessOnSell()
|
||||
// {
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
public virtual void ProcessOnStop()
|
||||
{
|
||||
|
||||
EmitSignal(SignalName.OnStop);
|
||||
}
|
||||
|
||||
public virtual void ProcessOnTurnEnd()
|
||||
{
|
||||
// public virtual void ProcessOnTurnEnd()
|
||||
// {
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
public virtual void ProcessOnTurnStart()
|
||||
{
|
||||
// public virtual void ProcessOnTurnStart()
|
||||
// {
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -8,41 +8,43 @@ public partial class Battle : Node
|
||||
|
||||
public bool _current;
|
||||
public Vector2 _startPosition = new Vector2(890, 340);
|
||||
public Manager _player;
|
||||
public Manager _computer;
|
||||
public Manager _turn;
|
||||
public List<Sprite2D> _potted = new();
|
||||
public List<Ball> _balls = new();
|
||||
public Table _table;
|
||||
|
||||
public static Battle _Create()
|
||||
{
|
||||
PackedScene scene = ResourceLoader.Load<PackedScene>("res://Gameplay/battle.tscn");
|
||||
Battle newBattle = scene.Instantiate<Battle>();
|
||||
// public static Battle _Create()
|
||||
// {
|
||||
// PackedScene scene = ResourceLoader.Load<PackedScene>("res://Gameplay/battle.tscn");
|
||||
// Battle newBattle = scene.Instantiate<Battle>();
|
||||
|
||||
Manager newManager = Manager._Create();
|
||||
newBattle._player = newManager;
|
||||
newBattle.AddChild(newManager);
|
||||
// Manager newPlayerManager = Manager._Create();
|
||||
// newBattle._player = newPlayerManager;
|
||||
// newBattle.AddChild(newPlayerManager);
|
||||
|
||||
Table newTable = Table._Create();
|
||||
newTable.Position = Globals.Instance._screenCenter;
|
||||
newBattle._table = newTable;
|
||||
// Manager newComputerManager = Manager._Create();
|
||||
// newBattle._player = newComputerManager;
|
||||
// newBattle.AddChild(newComputerManager);
|
||||
|
||||
List<Area2D> pockets = newBattle._table.GetChildren()
|
||||
.Where(n => n.GetName().ToString().ToLower().Contains("pocket"))
|
||||
.Select(n => (Area2D)n)
|
||||
.ToList<Area2D>();
|
||||
for (int i = 0; i < pockets.Count; i++)
|
||||
{
|
||||
pockets[i].BodyEntered += newBattle.PotBall;
|
||||
}
|
||||
newBattle.AddChild(newTable);
|
||||
|
||||
return newBattle;
|
||||
}
|
||||
// Table newTable = Table._Create();
|
||||
// newTable.Position = Globals.Instance._screenCenter;
|
||||
// newBattle._table = newTable;
|
||||
|
||||
// List<Area2D> pockets = newBattle._table.GetChildren()
|
||||
// .Where(n => n.GetName().ToString().ToLower().Contains("pocket"))
|
||||
// .Select(n => (Area2D)n)
|
||||
// .ToList<Area2D>();
|
||||
// for (int i = 0; i < pockets.Count; i++)
|
||||
// {
|
||||
// pockets[i].BodyEntered += newBattle.PotBall;
|
||||
// }
|
||||
// newBattle.AddChild(newTable);
|
||||
|
||||
// return newBattle;
|
||||
// }
|
||||
public override void _Ready()
|
||||
{
|
||||
Start();
|
||||
|
||||
}
|
||||
|
||||
public override void _Process(double DELTA_)
|
||||
@@ -100,31 +102,31 @@ public partial class Battle : Node
|
||||
}
|
||||
}
|
||||
|
||||
public void PotBall(Node2D BODY)
|
||||
{
|
||||
if (BODY is Ball)
|
||||
{
|
||||
Ball ball = (Ball)BODY;
|
||||
if (ball.GetParentOrNull<Manager>() == _player)
|
||||
{
|
||||
_player.PotWorker(ball.GetParent<Worker>());
|
||||
}
|
||||
else
|
||||
{
|
||||
ball.Pot();
|
||||
_balls.Remove(ball);
|
||||
RemoveChild(ball);
|
||||
ball.QueueFree();
|
||||
}
|
||||
}
|
||||
}
|
||||
// public void PotBall(Node2D BODY)
|
||||
// {
|
||||
// if (BODY is Ball)
|
||||
// {
|
||||
// Ball ball = (Ball)BODY;
|
||||
// if (ball.GetParentOrNull<Manager>() == _player)
|
||||
// {
|
||||
// // _player.PotWorker(ball.GetParent<Worker>());
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// ball.Pot();
|
||||
// _balls.Remove(ball);
|
||||
// RemoveChild(ball);
|
||||
// ball.QueueFree();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
public void Start()
|
||||
{
|
||||
_current = true;
|
||||
GenerateBalls();
|
||||
Globals.Instance._currentBattle = this;
|
||||
_player.Start();
|
||||
// _current = true;
|
||||
// // GenerateBalls();
|
||||
// Globals.Instance._currentBattle = this;
|
||||
// _player.Start();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -11,14 +11,14 @@ public partial class Cue : Sprite2D
|
||||
Vector2 _direction;
|
||||
public ProgressBar _progressBar;
|
||||
|
||||
public static Cue _Create()
|
||||
{
|
||||
PackedScene scene = ResourceLoader.Load<PackedScene>("res://Gameplay/cue.tscn");
|
||||
Cue newCue = scene.Instantiate<Cue>();
|
||||
Texture2D image = GD.Load<Texture2D>("res://art/cue.png");
|
||||
newCue.Texture = image;
|
||||
return newCue;
|
||||
}
|
||||
// public static Cue _Create()
|
||||
// {
|
||||
// PackedScene scene = ResourceLoader.Load<PackedScene>("res://Gameplay/cue.tscn");
|
||||
// Cue newCue = scene.Instantiate<Cue>();
|
||||
// Texture2D image = GD.Load<Texture2D>("res://art/cue.png");
|
||||
// newCue.Texture = image;
|
||||
// return newCue;
|
||||
// }
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
|
||||
@@ -3,13 +3,22 @@ using System;
|
||||
|
||||
public partial class Main : Node
|
||||
{
|
||||
public Battle _currentBattle;
|
||||
public Manager _player;
|
||||
public Manager _computer;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
Globals.Instance._screenSize = GetViewport().GetVisibleRect().Size;
|
||||
Globals.Instance._screenCenter = new Vector2(Globals.Instance._screenSize.X / 2, Globals.Instance._screenSize.Y / 2);
|
||||
Battle newBattle = Battle._Create();
|
||||
Globals.Instance._currentBattle = newBattle;
|
||||
AddChild(newBattle);
|
||||
// Battle newBattle = Battle._Create();
|
||||
_currentBattle = GetNode<Battle>("Battle");
|
||||
_player = GetNode<Manager>("Player");
|
||||
_computer = GetNode<Manager>("Computer");
|
||||
// AddChild(newBattle);
|
||||
_currentBattle.Start();
|
||||
_player.Start();
|
||||
_computer.Start();
|
||||
}
|
||||
|
||||
public override void _Process(double DELTA_)
|
||||
|
||||
@@ -13,31 +13,45 @@ public partial class Manager : Node
|
||||
public Worker _hoveredWorker = null;
|
||||
public Worker _selectedWorker = null;
|
||||
public Worker _heldWorker = null;
|
||||
public ManagerPanel _managerPanel = null;
|
||||
public Panel _ballReturn = null;
|
||||
|
||||
public static Manager _Create()
|
||||
{
|
||||
PackedScene scene = ResourceLoader.Load<PackedScene>("res://Gameplay/manager.tscn");
|
||||
Manager newManager = scene.Instantiate<Manager>();
|
||||
// public static Manager _Create()
|
||||
// {
|
||||
// PackedScene scene = ResourceLoader.Load<PackedScene>("res://Gameplay/manager.tscn");
|
||||
// Manager newManager = scene.Instantiate<Manager>();
|
||||
|
||||
Worker newWorker = Worker._Create();
|
||||
newWorker.GetNode<Ball>("Ball").SetSprite("res://art/cue_ball.png");
|
||||
newWorker.GetNode<TempBall>("TempBall").SetSprite("res://art/cue_ball.png");
|
||||
// newWorker.ChangeBallPosition(new Vector2(100, 100));
|
||||
newManager._lead = newWorker;
|
||||
newManager._team.Add(newWorker);
|
||||
newManager.AddChild(newWorker);
|
||||
|
||||
newManager._health = 10;
|
||||
newManager._healthMax = newManager._health;
|
||||
// Worker newWorker = Worker._Create();
|
||||
|
||||
// newWorker.GetNode<Ball>("Ball").SetSprite("res://art/cue_ball.png");
|
||||
// newWorker.GetNode<TempBall>("TempBall").SetSprite("res://art/cue_ball.png");
|
||||
|
||||
// newManager._lead = newWorker;
|
||||
// newManager._team.Add(newWorker);
|
||||
// newManager.AddChild(newWorker);
|
||||
|
||||
|
||||
// return newManager;
|
||||
// }
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_managerPanel = GetNode<ManagerPanel>("Panel");
|
||||
_ballReturn = _managerPanel.GetNode<Panel>("BallReturn");
|
||||
_health = 10;
|
||||
_healthMax = _health;
|
||||
_managerPanel.SetSprite("res://art/ness.png");
|
||||
_managerPanel.SetMax(_healthMax);
|
||||
_managerPanel.SetValue(_health);
|
||||
_cue = GetNode<Cue>("Cue");
|
||||
}
|
||||
|
||||
newManager.GetNode<ManagerPanel>("Panel").SetSprite("res://art/ness.png");
|
||||
newManager.GetNode<ManagerPanel>("Panel").SetMax(newManager._healthMax);
|
||||
newManager.GetNode<ManagerPanel>("Panel").SetValue(newManager._health);
|
||||
return newManager;
|
||||
}
|
||||
|
||||
public override void _Process(double DELTA_)
|
||||
{
|
||||
// Panel ballReturn = GetNode<ManagerPanel>("Panel").GetNode<Panel>("BallReturn");
|
||||
// WORKER.ChangeBallPosition(new Vector2(ballReturn.GlobalPosition.X + ballReturn.Size.X / 2, ballReturn.GlobalPosition.Y + 50));
|
||||
|
||||
if (_team.Any(w => w._hovered))
|
||||
{
|
||||
_hoveredWorker = _team.Single(w => w._hovered);
|
||||
@@ -49,7 +63,31 @@ public partial class Manager : Node
|
||||
|
||||
if (_ready)
|
||||
{
|
||||
|
||||
if ((_selectedWorker == null || _selectedWorker != _hoveredWorker) && (_hoveredWorker?._available ?? false))
|
||||
{
|
||||
if (Input.IsActionJustReleased("left_click"))
|
||||
{
|
||||
_selectedWorker = _hoveredWorker;
|
||||
_selectedWorker._selected = true;
|
||||
GD.Print(_selectedWorker._ball);
|
||||
_cue.Don(_selectedWorker._ball.Position);
|
||||
}
|
||||
}
|
||||
else if (Input.IsActionJustReleased("right_click"))
|
||||
{
|
||||
_selectedWorker._selected = false;
|
||||
_selectedWorker = null;
|
||||
_cue.Doff();
|
||||
}
|
||||
else if (_hoveredWorker == null)
|
||||
{
|
||||
if (Input.IsActionJustReleased("left_click") && _selectedWorker != null && _cue._power == 0)
|
||||
{
|
||||
_selectedWorker._selected = false;
|
||||
_selectedWorker = null;
|
||||
_cue.Doff();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -79,73 +117,6 @@ public partial class Manager : Node
|
||||
}
|
||||
}
|
||||
|
||||
// if (!Globals.Instance._anyMovement)
|
||||
// {
|
||||
// if (_team.Any(w => w._hovered))
|
||||
// {
|
||||
// _hoveredWorker = _team.Single(w => w._hovered);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// _hoveredWorker = null;
|
||||
// }
|
||||
|
||||
// if (!_ready)
|
||||
// {
|
||||
// if (_heldWorker == null)
|
||||
// {
|
||||
// if (Input.IsActionJustReleased("left_click"))
|
||||
// {
|
||||
// if (!_hoveredWorker._placed)
|
||||
// {
|
||||
// _heldWorker = _hoveredWorker;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Vector2 mousePosition = GetViewport().GetMousePosition();
|
||||
// _heldWorker.Position = mousePosition;
|
||||
// if (Input.IsActionJustReleased("left_click"))
|
||||
// {
|
||||
// PlaceWorker(_heldWorker, mousePosition);
|
||||
// _heldWorker = null;
|
||||
// if (_team.Where(w => w._placed).ToList().Count >= _team.Count)
|
||||
// {
|
||||
// _ready = true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if ((_selectedWorker == null || _selectedWorker != _hoveredWorker) && (_hoveredWorker?._available ?? false))
|
||||
// {
|
||||
// if (Input.IsActionJustReleased("left_click"))
|
||||
// {
|
||||
// _selectedWorker = _hoveredWorker;
|
||||
// _selectedWorker._selected = true;
|
||||
// _cue.Don(_selectedWorker.GetNode<Ball>("Ball").Position);
|
||||
// }
|
||||
// }
|
||||
// else if (Input.IsActionJustReleased("right_click"))
|
||||
// {
|
||||
// _selectedWorker._selected = false;
|
||||
// _selectedWorker = null;
|
||||
// _cue.Doff();
|
||||
// }
|
||||
// else if (_hoveredWorker == null)
|
||||
// {
|
||||
// if (Input.IsActionJustReleased("left_click") && _selectedWorker != null && _cue._power == 0)
|
||||
// {
|
||||
// _selectedWorker._selected = false;
|
||||
// _selectedWorker = null;
|
||||
// _cue.Doff();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
public void ChangeHealth(int CHANGE)
|
||||
@@ -173,22 +144,6 @@ public partial class Manager : Node
|
||||
// AddChild(WORKER);
|
||||
// }
|
||||
|
||||
public void PlaceWorker(Worker WORKER, Vector2 POSITION)
|
||||
{
|
||||
WORKER._placed = true;
|
||||
WORKER._potted = false;
|
||||
WORKER.ChangeBallPosition(POSITION);
|
||||
WORKER.GetNode<CollisionShape2D>("Bounds").Disabled = false;
|
||||
}
|
||||
|
||||
public void PotWorker(Worker WORKER)
|
||||
{
|
||||
Panel ballReturn = GetNode<ManagerPanel>("Panel").GetNode<Panel>("BallReturn");
|
||||
WORKER.PotBall();
|
||||
WORKER.ChangeBallPosition(new Vector2(ballReturn.GlobalPosition.X + ballReturn.Size.X / 2, ballReturn.GlobalPosition.Y + 50));
|
||||
_ready = false;
|
||||
}
|
||||
|
||||
public void SetSprite(string PATH)
|
||||
{
|
||||
GetNode<Sprite2D>("Image").Texture = GD.Load<Texture2D>(PATH);
|
||||
@@ -196,20 +151,11 @@ public partial class Manager : Node
|
||||
|
||||
public void Start()
|
||||
{
|
||||
Panel ballReturn = GetNode<ManagerPanel>("Panel").GetNode<Panel>("BallReturn");
|
||||
|
||||
for (int i = 0; i < _team.Count; i++)
|
||||
{
|
||||
_team[i]._ball.GetNode<CollisionShape2D>("Bounds").Disabled = true;
|
||||
if (_team[i].GetNodeOrNull<Ball>("Ball") != null)
|
||||
{
|
||||
_team[i].RemoveChild(_team[i]._ball);
|
||||
}
|
||||
_team[i].AddChild(_team[i]._tempBall);
|
||||
_team[i]._tempBall.Position = new Vector2(ballReturn.GlobalPosition.X + ballReturn.Size.X / 2, ballReturn.GlobalPosition.Y + 50 * (i + 1));
|
||||
// _team[i].Position = new Vector2(ballReturn.GlobalPosition.X + ballReturn.Size.X / 2, ballReturn.GlobalPosition.Y + 50 * (i + 1));
|
||||
_team[i]._tempBall.Position = new Vector2(_ballReturn.GlobalPosition.X + _ballReturn.Size.X / 2, _ballReturn.GlobalPosition.Y + 50 * (i + 1));
|
||||
_team[i].TempBallShow();
|
||||
|
||||
// AddChild(_team[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,7 +165,7 @@ public partial class Manager : Node
|
||||
{
|
||||
_selectedWorker.GetNode<Ball>("Ball").ApplyCentralImpulse(IMPULSE);
|
||||
_selectedWorker._selected = false;
|
||||
_selectedWorker._launched = true;
|
||||
_selectedWorker.Launch();
|
||||
_selectedWorker = null;
|
||||
_cue.Doff();
|
||||
}
|
||||
|
||||
7
Gameplay/Procables.cs
Normal file
7
Gameplay/Procables.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class Procables : Node
|
||||
{
|
||||
|
||||
}
|
||||
1
Gameplay/Procables.cs.uid
Normal file
1
Gameplay/Procables.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://d1sbv0yepmvrf
|
||||
@@ -10,7 +10,7 @@ public partial class TempBall : Area2D
|
||||
GetNode<Sprite2D>("Image").Texture = GD.Load<Texture2D>(PATH);
|
||||
}
|
||||
|
||||
private void OnMouseEntered()
|
||||
private void OnMouseEntered()
|
||||
{
|
||||
if (_active)
|
||||
{
|
||||
|
||||
@@ -10,36 +10,43 @@ public partial class Worker : Node2D
|
||||
public int _defense = 5, _defenseMax = 5;
|
||||
public CollisionShape2D _startArea;
|
||||
public TempBall _tempBall;
|
||||
public Ball _ball;
|
||||
public Ball _ball;
|
||||
|
||||
public static Worker _Create()
|
||||
{
|
||||
PackedScene scene = ResourceLoader.Load<PackedScene>("res://Gameplay/worker.tscn");
|
||||
Worker newWorker = scene.Instantiate<Worker>();
|
||||
return newWorker;
|
||||
}
|
||||
// public static Worker _Create()
|
||||
// {
|
||||
// PackedScene scene = ResourceLoader.Load<PackedScene>("res://Gameplay/worker.tscn");
|
||||
// Worker newWorker = scene.Instantiate<Worker>();
|
||||
// return newWorker;
|
||||
// }
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_ball = GetNode<Ball>("Ball");
|
||||
_tempBall = GetNode<TempBall>("TempBall");
|
||||
|
||||
|
||||
RemoveChild(_ball);
|
||||
RemoveChild(_tempBall);
|
||||
}
|
||||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
_hovered = _ball._hovered || _tempBall._hovered;
|
||||
}
|
||||
|
||||
public virtual void ChangeBallPosition(Vector2 NEWPOSITION)
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
RemoveChild(_ball);
|
||||
_ball.Position = NEWPOSITION;
|
||||
AddChild(_ball);
|
||||
_hovered = (_ball._active && _ball._hovered) || (_tempBall._active && _tempBall._hovered);
|
||||
if (_launched)
|
||||
{
|
||||
if (!_ball._launched)
|
||||
{
|
||||
_launched = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// public virtual void ChangeBallPosition(Vector2 NEWPOSITION)
|
||||
// {
|
||||
// RemoveChild(_ball);
|
||||
// _ball.Position = NEWPOSITION;
|
||||
// AddChild(_ball);
|
||||
// }
|
||||
|
||||
public virtual void ChangeDefense(int CHANGE)
|
||||
{
|
||||
_defense += CHANGE;
|
||||
@@ -47,14 +54,16 @@ public partial class Worker : Node2D
|
||||
if (_defense < 0)
|
||||
{
|
||||
EmitSignal(SignalName.DamageOverflow, _defense);
|
||||
if (!_isLead)
|
||||
{
|
||||
PotBall();
|
||||
}
|
||||
_defense = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public void Launch()
|
||||
{
|
||||
_launched = true;
|
||||
_ball.Launch();
|
||||
}
|
||||
|
||||
public void SetSprite(string PATH)
|
||||
{
|
||||
GetNode<Sprite2D>("Image").Texture = GD.Load<Texture2D>(PATH);
|
||||
@@ -62,25 +71,55 @@ public partial class Worker : Node2D
|
||||
|
||||
public void PlaceBall(Vector2 POSITION)
|
||||
{
|
||||
_available = true;
|
||||
_placed = true;
|
||||
_potted = false;
|
||||
_ball.Position = POSITION;
|
||||
_ball._active = true;
|
||||
_ball._placed = true;
|
||||
_ball._potted = false;
|
||||
_ball._active = true;
|
||||
|
||||
AddChild(_ball);
|
||||
TempBallHide();
|
||||
}
|
||||
|
||||
public void PotBall()
|
||||
{
|
||||
_ball.Pot();
|
||||
_available = false;
|
||||
_placed = false;
|
||||
_potted = true;
|
||||
_ball.Sleeping = true;
|
||||
_ball._moving = false;
|
||||
_ball._active = false;
|
||||
_ball._placed = false;
|
||||
_ball._potted = true;
|
||||
_ball._active = false;
|
||||
|
||||
RemoveChild(_ball);
|
||||
TempBallShow();
|
||||
}
|
||||
|
||||
public void OnBallHit()
|
||||
public void TempBallHide()
|
||||
{
|
||||
// if (!_launched)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
// Ball target = (Ball)TARGET;
|
||||
// target.ChangeDefense(-1);
|
||||
// ChangeDefense(-6);
|
||||
// GD.Print("Defense: " + _defense);
|
||||
_tempBall._active = false;
|
||||
RemoveChild(_tempBall);
|
||||
}
|
||||
|
||||
public void TempBallShow()
|
||||
{
|
||||
_tempBall._active = true;
|
||||
AddChild(_tempBall);
|
||||
}
|
||||
|
||||
// Processes
|
||||
public virtual void ProcessOnCollision(Ball TARGET)
|
||||
{
|
||||
Worker TARGETWORKER = TARGET.GetParent<Worker>();
|
||||
if (_launched)
|
||||
{
|
||||
TARGETWORKER.ChangeDefense(-3);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://5ymxo45j4ryt"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://5ymxo45j4ryt"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://0c1u4l8lu07h" path="res://Gameplay/Battle.cs" id="1_i431l"]
|
||||
[ext_resource type="PackedScene" uid="uid://dsprg4uahkylm" path="res://Gameplay/table.tscn" id="2_fkh6t"]
|
||||
|
||||
[node name="Battle" type="Node" groups=["battles"]]
|
||||
script = ExtResource("1_i431l")
|
||||
|
||||
[node name="Table" parent="." instance=ExtResource("2_fkh6t")]
|
||||
position = Vector2(960, 540)
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://yqtgkxjjexag"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://yqtgkxjjexag"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://v6ovq4snxruc" path="res://Gameplay/Main.cs" id="1_0xm2m"]
|
||||
[ext_resource type="PackedScene" uid="uid://5ymxo45j4ryt" path="res://Gameplay/battle.tscn" id="2_7rujl"]
|
||||
[ext_resource type="PackedScene" uid="uid://cdaxqopr35lll" path="res://Gameplay/manager.tscn" id="3_vkc8e"]
|
||||
|
||||
[node name="Main" type="Node"]
|
||||
script = ExtResource("1_0xm2m")
|
||||
|
||||
[node name="Battle" parent="." instance=ExtResource("2_7rujl")]
|
||||
|
||||
[node name="Computer" parent="." instance=ExtResource("3_vkc8e")]
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("3_vkc8e")]
|
||||
|
||||
@@ -138,97 +138,13 @@ theme_override_styles/panel = SubResource("StyleBoxFlat_j2own")
|
||||
layout_mode = 0
|
||||
offset_left = 50.0
|
||||
offset_top = 50.0
|
||||
offset_right = 150.0
|
||||
offset_bottom = 150.0
|
||||
offset_right = 100.0
|
||||
offset_bottom = 100.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_058dj")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="Desk/DeskOrnament1"]
|
||||
position = Vector2(50, 50)
|
||||
scale = Vector2(1.5, 1.5)
|
||||
|
||||
[node name="DeskOrnament2" type="Panel" parent="Desk"]
|
||||
layout_mode = 0
|
||||
offset_left = 50.0
|
||||
offset_top = 200.0
|
||||
offset_right = 150.0
|
||||
offset_bottom = 300.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_058dj")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="Desk/DeskOrnament2"]
|
||||
position = Vector2(50, 50)
|
||||
scale = Vector2(1.5, 1.5)
|
||||
|
||||
[node name="DeskOrnament3" type="Panel" parent="Desk"]
|
||||
layout_mode = 0
|
||||
offset_left = 50.0
|
||||
offset_top = 350.0
|
||||
offset_right = 150.0
|
||||
offset_bottom = 450.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_058dj")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="Desk/DeskOrnament3"]
|
||||
position = Vector2(50, 50)
|
||||
scale = Vector2(1.5, 1.5)
|
||||
|
||||
[node name="DeskOrnament4" type="Panel" parent="Desk"]
|
||||
layout_mode = 0
|
||||
offset_left = 50.0
|
||||
offset_top = 500.0
|
||||
offset_right = 150.0
|
||||
offset_bottom = 600.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_058dj")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="Desk/DeskOrnament4"]
|
||||
position = Vector2(50, 50)
|
||||
scale = Vector2(1.5, 1.5)
|
||||
|
||||
[node name="DeskOrnament5" type="Panel" parent="Desk"]
|
||||
layout_mode = 0
|
||||
offset_left = 300.0
|
||||
offset_top = 50.0
|
||||
offset_right = 400.0
|
||||
offset_bottom = 150.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_058dj")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="Desk/DeskOrnament5"]
|
||||
position = Vector2(50, 50)
|
||||
scale = Vector2(1.5, 1.5)
|
||||
|
||||
[node name="DeskOrnament6" type="Panel" parent="Desk"]
|
||||
layout_mode = 0
|
||||
offset_left = 300.0
|
||||
offset_top = 200.0
|
||||
offset_right = 400.0
|
||||
offset_bottom = 300.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_058dj")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="Desk/DeskOrnament6"]
|
||||
position = Vector2(50, 50)
|
||||
scale = Vector2(1.5, 1.5)
|
||||
|
||||
[node name="DeskOrnament7" type="Panel" parent="Desk"]
|
||||
layout_mode = 0
|
||||
offset_left = 300.0
|
||||
offset_top = 350.0
|
||||
offset_right = 400.0
|
||||
offset_bottom = 450.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_058dj")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="Desk/DeskOrnament7"]
|
||||
position = Vector2(50, 50)
|
||||
scale = Vector2(1.5, 1.5)
|
||||
|
||||
[node name="DeskOrnament8" type="Panel" parent="Desk"]
|
||||
layout_mode = 0
|
||||
offset_left = 300.0
|
||||
offset_top = 500.0
|
||||
offset_right = 400.0
|
||||
offset_bottom = 600.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_058dj")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="Desk/DeskOrnament8"]
|
||||
position = Vector2(50, 50)
|
||||
scale = Vector2(1.5, 1.5)
|
||||
|
||||
[connection signal="mouse_entered" from="." to="." method="OnMouseEntered"]
|
||||
[connection signal="mouse_exited" from="." to="." method="OnMouseExited"]
|
||||
|
||||
6
Gameplay/procables.tscn
Normal file
6
Gameplay/procables.tscn
Normal file
@@ -0,0 +1,6 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://dkyt6eqw502aa"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d1sbv0yepmvrf" path="res://Gameplay/Procables.cs" id="1_rwcmg"]
|
||||
|
||||
[node name="Procables" type="Node"]
|
||||
script = ExtResource("1_rwcmg")
|
||||
@@ -6,6 +6,7 @@
|
||||
radius = 18.0
|
||||
|
||||
[node name="TempBall" type="Area2D"]
|
||||
z_index = 2
|
||||
script = ExtResource("1_y0oty")
|
||||
|
||||
[node name="Image" type="Sprite2D" parent="."]
|
||||
|
||||
@@ -14,4 +14,4 @@ visible = false
|
||||
|
||||
[node name="TempBall" parent="." instance=ExtResource("3_4poc8")]
|
||||
|
||||
[connection signal="OnHit" from="Ball" to="." method="OnHit"]
|
||||
[connection signal="OnCollision" from="Ball" to="." method="ProcessOnCollision"]
|
||||
|
||||
7
Proc.cs
Normal file
7
Proc.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class Proc : Node
|
||||
{
|
||||
|
||||
}
|
||||
1
Proc.cs.uid
Normal file
1
Proc.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://blyqty3080pjv
|
||||
Reference in New Issue
Block a user