7-31-25 @ 3:05AM
This commit is contained in:
@@ -3,126 +3,35 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
/// TODO alter code to player vs computer to account for differing logic
|
||||
public partial class Manager : Node
|
||||
{
|
||||
public bool _dead, _ready;
|
||||
public int _health, _healthMax;
|
||||
public int _health = 10, _healthMax, _placeLimit = 8;
|
||||
public string _imagePath;
|
||||
public Cue _cue;
|
||||
public Worker _lead;
|
||||
public List<Worker> _team = new();
|
||||
public Worker _hoveredWorker = null;
|
||||
public Worker _selectedWorker = null;
|
||||
public Worker _heldWorker = null;
|
||||
public ManagerPanel _managerPanel = null;
|
||||
public Panel _ballReturn = null;
|
||||
public Dictionary<int, Worker> _workers = new();
|
||||
public Dictionary<int, Ball> _balls = new();
|
||||
public Dictionary<int, PlaceholderBall> _placeholderBalls = new();
|
||||
public Ball _selectedBall = null;
|
||||
public CollisionShape2D _startArea;
|
||||
|
||||
|
||||
// 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");
|
||||
|
||||
// newManager._lead = newWorker;
|
||||
// newManager._team.Add(newWorker);
|
||||
// newManager.AddChild(newWorker);
|
||||
public PackedScene _ballScene = ResourceLoader.Load<PackedScene>("res://Gameplay/ball.tscn");
|
||||
public PackedScene _placeholdeBallScene = ResourceLoader.Load<PackedScene>("res://Gameplay/ball.tscn");
|
||||
public PackedScene _cueScene = ResourceLoader.Load<PackedScene>("res://Gameplay/cue.tscn");
|
||||
public PackedScene _workerScene = ResourceLoader.Load<PackedScene>("res://Gameplay/worker.tscn");
|
||||
|
||||
|
||||
// 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");
|
||||
}
|
||||
|
||||
|
||||
public override void _Process(double DELTA_)
|
||||
public override void _Ready()
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
else
|
||||
{
|
||||
_hoveredWorker = null;
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
if (_heldWorker == null)
|
||||
{
|
||||
if (Input.IsActionJustReleased("left_click"))
|
||||
{
|
||||
if (!_hoveredWorker._placed)
|
||||
{
|
||||
_heldWorker = _hoveredWorker;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Vector2 mousePosition = GetViewport().GetMousePosition();
|
||||
_heldWorker._tempBall.Position = mousePosition;
|
||||
if (Input.IsActionJustReleased("left_click"))
|
||||
{
|
||||
_heldWorker.PlaceBall(mousePosition);
|
||||
_heldWorker = null;
|
||||
if (_team.Where(w => w._placed).ToList().Count >= _team.Count)
|
||||
{
|
||||
_ready = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_healthMax = _health;
|
||||
_cue = GetNode<Cue>("Cue");
|
||||
}
|
||||
|
||||
public void ChangeHealth(int CHANGE)
|
||||
public virtual void ChangeHealth(int CHANGE)
|
||||
{
|
||||
_health += CHANGE;
|
||||
GD.Print("Health: " + _health);
|
||||
_health = Math.Min(_health, _healthMax);
|
||||
|
||||
if (_health < 0)
|
||||
@@ -130,43 +39,56 @@ public partial class Manager : Node
|
||||
_dead = true;
|
||||
_health = 0;
|
||||
}
|
||||
GetNode<ManagerPanel>("Panel").SetValue(_health);
|
||||
}
|
||||
|
||||
// public void ReturnWorker(Worker WORKER)
|
||||
// {
|
||||
// Panel ballReturn = GetNode<ManagerPanel>("Panel").GetNode<Panel>("BallReturn");
|
||||
// int ballsInReturn = _team.Where(b => !b._placed).ToList().Count;
|
||||
public void PlaceBall(Ball BALL, Vector2 POSITION)
|
||||
{
|
||||
|
||||
BALL._available = true;
|
||||
BALL.Position = POSITION;
|
||||
BALL._active = true;
|
||||
BALL._placed = true;
|
||||
BALL._potted = false;
|
||||
BALL._active = true;
|
||||
AddChild(BALL);
|
||||
|
||||
// WORKER.GetNode<Ball>("Ball").Position = ;
|
||||
// WORKER.GetNode<Ball>("Ball").GetNode<CollisionShape2D>("Bounds").Disabled = true;
|
||||
// _placeholderBalls[BALLNUMBER]._active = false;
|
||||
// RemoveChild(_placeholderBalls[BALLNUMBER]);
|
||||
}
|
||||
|
||||
// AddChild(WORKER);
|
||||
// }
|
||||
public void PotBall(Ball BALL)
|
||||
{
|
||||
BALL.Sleeping = true;
|
||||
BALL._available = false;
|
||||
BALL._moving = false;
|
||||
BALL._active = false;
|
||||
BALL._placed = false;
|
||||
BALL._potted = true;
|
||||
BALL._active = false;
|
||||
RemoveChild(BALL);
|
||||
|
||||
// _placeholderBalls[BALLNUMBER]._active = true;
|
||||
// AddChild(_placeholderBalls[BALLNUMBER]);
|
||||
}
|
||||
|
||||
public void SetSprite(string PATH)
|
||||
{
|
||||
GetNode<Sprite2D>("Image").Texture = GD.Load<Texture2D>(PATH);
|
||||
_imagePath = PATH;
|
||||
}
|
||||
|
||||
public void Start()
|
||||
public virtual void Start()
|
||||
{
|
||||
for (int i = 0; i < _team.Count; i++)
|
||||
{
|
||||
_team[i]._tempBall.Position = new Vector2(_ballReturn.GlobalPosition.X + _ballReturn.Size.X / 2, _ballReturn.GlobalPosition.Y + 50 * (i + 1));
|
||||
_team[i].TempBallShow();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void OnCueShoot(Vector2 IMPULSE)
|
||||
{
|
||||
if (_selectedWorker != null && _selectedWorker._placed)
|
||||
if (_selectedBall != null && _selectedBall._placed)
|
||||
{
|
||||
_selectedWorker.GetNode<Ball>("Ball").ApplyCentralImpulse(IMPULSE);
|
||||
_selectedWorker._selected = false;
|
||||
_selectedWorker.Launch();
|
||||
_selectedWorker = null;
|
||||
_selectedBall.GetNode<Ball>("Ball").ApplyCentralImpulse(IMPULSE);
|
||||
_selectedBall._selected = false;
|
||||
_selectedBall.Launch();
|
||||
_selectedBall = null;
|
||||
_cue.Doff();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user