8-2-2025 @ 3:51 AM

This commit is contained in:
2025-08-02 03:51:34 -04:00
parent a8373726f9
commit 50e4f8fcb5
12 changed files with 348 additions and 86 deletions

View File

@@ -5,9 +5,21 @@ using System.Linq;
public partial class PlayerManager : Manager
{
public int _id = 0;
public List<Vector2I> _initialRackPositions =
[
new Vector2I(0, 1),
new Vector2I(1, 1),
new Vector2I(3, 1),
new Vector2I(4, 1),
new Vector2I(2, 2),
new Vector2I(4, 2),
new Vector2I(1, 3),
new Vector2I(2, 4)
];
public Ball _hoveredBall = null;
public PlaceholderBall _hoveredPlaceholderBall = null;
public PlaceholderBall _heldPlaceholderBall = null;
public BallSprite _hoveredBallSprite = null;
public BallSprite _heldBallSprite = null;
public Worker _hoveredWorker = null;
public ManagerPanel _managerPanel = null;
public Panel _ballReturn = null;
@@ -21,26 +33,43 @@ public partial class PlayerManager : Manager
_managerPanel.SetSprite(_imagePath);
_managerPanel.SetValue(_health);
_managerPanel.SetMax(_healthMax);
_ballReturn = _managerPanel.GetNode<Panel>("BallReturn");
GD.Print(_ballReturn.GlobalPosition);
Ball newBall;
newBall = _ballScene.Instantiate<Ball>();
newBall.SetSprite("res://art/cue_ball.png");
_balls.Add(0, newBall);
newBall._rackPosition = _initialRackPositions[0];
newBall._ownerId = _id;
_balls.Add(newBall);
BallSprite newBallSprite;
newBallSprite = _ballSpriteScene.Instantiate<BallSprite>();
newBallSprite.SetSprite("res://art/cue_ball.png");
newBallSprite._rackPosition = _initialRackPositions[0];
newBallSprite._ownerId = _id;
_ballSprites.Add(newBallSprite);
for (int i = 1; i <= 7; i++)
{
newBall = _ballScene.Instantiate<Ball>();
newBall.SetSprite("res://art/ball_" + i + ".png");
_balls.Add(i, newBall);
newBall._rackPosition = _initialRackPositions[i];
newBall._ownerId = _id;
_balls.Add(newBall);
newBallSprite = _ballSpriteScene.Instantiate<BallSprite>();
newBallSprite.SetSprite("res://art/ball_" + i + ".png");
newBallSprite._rackPosition = _initialRackPositions[i];
newBallSprite._ownerId = _id;
_ballSprites.Add(newBallSprite);
}
}
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 (_ready)
{
if ((_selectedBall == null || _selectedBall != _hoveredBall) && (_hoveredBall?._available ?? false))
@@ -70,16 +99,16 @@ public partial class PlayerManager : Manager
}
else
{
if (_heldPlaceholderBall != null)
if (_heldBallSprite != null)
{
Vector2 mousePosition = GetViewport().GetMousePosition();
_heldPlaceholderBall.Position = mousePosition;
_heldBallSprite.Position = mousePosition;
if (Input.IsActionJustReleased("left_click"))
{
int index = _placeholderBalls.Single(p => p.Value == _heldPlaceholderBall).Key;
PlaceBall(_balls[index], mousePosition);
_heldPlaceholderBall = null;
if (_balls.Where(b => b.Value._placed).ToList().Count >= _placeLimit)
Ball ball = _balls.Single(b => b._rackPosition == _heldBallSprite._rackPosition);
PlaceBall(ball, mousePosition);
_heldBallSprite = null;
if (_balls.Where(b => b._placed).ToList().Count >= _placeLimit)
{
_ready = true;
}
@@ -89,7 +118,7 @@ public partial class PlayerManager : Manager
{
if (Input.IsActionJustReleased("left_click"))
{
_heldPlaceholderBall = _hoveredPlaceholderBall;
_heldBallSprite = _hoveredBallSprite;
}
}
}
@@ -104,11 +133,14 @@ public partial class PlayerManager : Manager
public override void Start()
{
for (int i = 0; i < _placeholderBalls.Count; i++)
{
_placeholderBalls[i].Position = new Vector2(_ballReturn.GlobalPosition.X + _ballReturn.Size.X / 2, _ballReturn.GlobalPosition.Y + 50 * (i + 1));
_placeholderBalls[i].AddChild(_placeholderBalls[i]);
}
PotBall(_balls[0]);
// for (int i = 0; i < _ballSprites.Count; i++)
// {
// GD.Print(_ballSprites[i]._rackPosition);
// // _ballSprites[i].Position = new Vector2(_ballReturn.GlobalPosition.X + _ballReturn.Size.X / 2, _ballReturn.GlobalPosition.Y + 50 * (i + 1));
// // _ballSprites[i].AddChild(_ballSprites[i]);
// }
}
public void HoverBall(Ball BALL, bool HOVERED)
@@ -129,4 +161,37 @@ public partial class PlayerManager : Manager
}
}
public override void PlaceBall(Ball BALL, Vector2 POSITION)
{
base.PlaceBall(BALL, POSITION);
BallSprite ballSprite = _ballSprites.Single(s => s._rackPosition == BALL._rackPosition);
ballSprite._active = false;
if (GetChildren().Contains(ballSprite))
{
RemoveChild(ballSprite);
}
_managerPanel._returnCount = _balls.Where(b=>b._potted).ToList().Count;
}
public override void PotBall(Ball BALL)
{
base.PotBall(BALL);
BallSprite ballSprite = _ballSprites.Single(s => s._rackPosition == BALL._rackPosition);
int pottedCount = _managerPanel._returnCount;
GD.Print(_ballReturn.GlobalPosition);
ballSprite.Position = new Vector2(_ballReturn.GlobalPosition.X + _ballReturn.Size.X / 2, _ballReturn.GlobalPosition.Y + 50 * (pottedCount + 1));
ballSprite._active = true;
if (!GetChildren().Contains(ballSprite))
{
AddChild(ballSprite);
GD.Print(ballSprite.Position);
}
_managerPanel._returnCount = _balls.Where(b=>b._potted).ToList().Count;
}
}