Tuesday, 16 September 2025 12:26:13
This commit is contained in:
@@ -9,12 +9,12 @@ public partial class Manager : Node2D
|
||||
public bool _dead, _ready, _moving;
|
||||
public int _ballsMoving = 0, _health = 10, _healthMax, _speed = 5;
|
||||
public string _imagePath;
|
||||
public Vector2 _deskPosition;
|
||||
public List<Vector2> _movements = new();
|
||||
public CollisionShape2D _startArea;
|
||||
public ManagerPanel _managerPanel = null;
|
||||
public Sprite2D _image;
|
||||
public Desk _desk = null;
|
||||
public Cell _cell;
|
||||
public List<Cell> _moves = new();
|
||||
public Manager _opponent;
|
||||
public List<Worker> _workers = new();
|
||||
public Node _workerNode;
|
||||
@@ -31,11 +31,11 @@ public partial class Manager : Node2D
|
||||
// _managerPanel = GetNode<ManagerPanel>("Panel");
|
||||
_desk = GetNode<Desk>("Desk");
|
||||
_desk.Setup(15, 20);
|
||||
|
||||
_deskPosition = new Vector2(1, 1);
|
||||
_cell = _desk.GetCellFromAddress(1, 1);
|
||||
|
||||
// _movements.Insert(0, _deskPosition);
|
||||
_image = GetNode<Sprite2D>("Image");
|
||||
_image.GlobalPosition = _desk.GetPositionFromAddress(1, 1);
|
||||
_image.GlobalPosition = _cell.GlobalPosition;
|
||||
|
||||
// _managerPanel.SetManager(this);
|
||||
for (int i = 0; i < Globals.Instance._random.Next(3, 6); i++)
|
||||
@@ -53,12 +53,13 @@ public partial class Manager : Node2D
|
||||
public void AddWorker(Worker NEWWORKER)
|
||||
{
|
||||
Worker newWorker = NEWWORKER ?? Globals.Instance._workerScene.Instantiate<Worker>();
|
||||
newWorker._deskPosition = new Vector2(1, 1);
|
||||
newWorker.Position = _desk.GetPositionFromAddress(1, 1);
|
||||
newWorker._cell = _desk.GetCellFromAddress(1, 1);
|
||||
newWorker.Position = newWorker._cell.GlobalPosition;
|
||||
newWorker._manager = this;
|
||||
_workers.Add(newWorker);
|
||||
_workerNode.AddChild(newWorker);
|
||||
newWorker.SetHovered += SetHoveredWorker;
|
||||
|
||||
// newWorker.SetHovered += SetHoveredWorker;
|
||||
}
|
||||
|
||||
public void ChainMovement()
|
||||
@@ -83,66 +84,70 @@ public partial class Manager : Node2D
|
||||
|
||||
if (direction != Vector2.Zero)
|
||||
{
|
||||
Vector2 newPostion = _desk.GetPositionFromAddress((int)(_deskPosition.Y + direction.Y), (int)(_deskPosition.X + direction.X));
|
||||
if (newPostion != new Vector2(-1, -1))
|
||||
GD.Print(_cell._row + (int)direction.Y, _cell._column + (int)direction.X);
|
||||
Cell newCell = _desk.GetCellFromAddress(_cell._row + (int)direction.Y, _cell._column + (int)direction.X);
|
||||
if (newCell != null)
|
||||
{
|
||||
if (_movements.Count > 0)
|
||||
GD.Print(_cell._row, _cell._column);
|
||||
if (_moves.Count > 0)
|
||||
{
|
||||
for (int i = 0; i < _workers.Count && i < _movements.Count; i++)
|
||||
for (int i = 0; i < _workers.Count && i < _moves.Count; i++)
|
||||
{
|
||||
_workers[i]._deskPosition = _movements[i];
|
||||
_workers[i].GlobalPosition = _desk.GetPositionFromAddress((int)_movements[i].Y, (int)_movements[i].X);
|
||||
_workers[i]._cell = _moves[i];
|
||||
_workers[i].GlobalPosition = _workers[i]._cell.GlobalPosition;
|
||||
}
|
||||
}
|
||||
_deskPosition += direction;
|
||||
_movements.Insert(0, _deskPosition);
|
||||
_image.GlobalPosition = newPostion;
|
||||
_cell = newCell;
|
||||
_moves.Insert(0, newCell);
|
||||
_image.GlobalPosition = _cell.GlobalPosition;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ChainSelection()
|
||||
{
|
||||
if (_heldWorker != null)
|
||||
{
|
||||
_heldWorker.GlobalPosition = GetGlobalMousePosition();
|
||||
if (_hoveredWorker != null && _heldWorker != _hoveredWorker)
|
||||
{
|
||||
SwapPositions(_heldWorker, _hoveredWorker);
|
||||
_hoveredWorker._hovered = false;
|
||||
_hoveredWorker = null;
|
||||
}
|
||||
if (Input.IsActionJustReleased("left_click"))
|
||||
{
|
||||
_heldWorker.GlobalPosition = _desk.GetPositionFromAddress((int)_heldWorker._deskPosition.Y, (int)_heldWorker._deskPosition.X);
|
||||
_heldWorker._held = false;
|
||||
_heldWorker = null;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_selectedWorker != null)
|
||||
{
|
||||
if (Input.IsActionPressed("left_click") && (GetGlobalMousePosition() - _selectedWorker._chainPosition).Length() > 5)
|
||||
{
|
||||
// if (_heldWorker != null)
|
||||
// {
|
||||
// _heldWorker.GlobalPosition = GetGlobalMousePosition();
|
||||
// if (_hoveredWorker != null && _heldWorker != _hoveredWorker)
|
||||
// {
|
||||
// SwapPositions(_heldWorker, _hoveredWorker);
|
||||
// _hoveredWorker._hovered = false;
|
||||
// _hoveredWorker = null;
|
||||
// }
|
||||
// if (Input.IsActionJustReleased("left_click"))
|
||||
// {
|
||||
// _heldWorker.GlobalPosition = _desk.GetPositionFromAddress((int)_heldWorker._deskPosition.Y, (int)_heldWorker._deskPosition.X);
|
||||
// _heldWorker._held = false;
|
||||
// _heldWorker = null;
|
||||
// _hoveredWorker._hovered = false;
|
||||
// _hoveredWorker = null;
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (_selectedWorker != null)
|
||||
// {
|
||||
// if (Input.IsActionPressed("left_click") && (GetGlobalMousePosition() - _selectedWorker._chainPosition).Length() > 5)
|
||||
// {
|
||||
|
||||
_heldWorker = _selectedWorker;
|
||||
_heldWorker._held = true;
|
||||
_heldWorker._selected = false;
|
||||
_selectedWorker = null;
|
||||
}
|
||||
}
|
||||
if (_hoveredWorker != null)
|
||||
{
|
||||
if (Input.IsActionJustPressed("left_click"))
|
||||
{
|
||||
_selectedWorker = _hoveredWorker;
|
||||
_selectedWorker._selected = true;
|
||||
_selectedWorker._hovered = false;
|
||||
_hoveredWorker = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
// _heldWorker = _selectedWorker;
|
||||
// _heldWorker._held = true;
|
||||
// _heldWorker._selected = false;
|
||||
// _selectedWorker = null;
|
||||
// }
|
||||
// }
|
||||
// if (_hoveredWorker != null)
|
||||
// {
|
||||
// if (Input.IsActionJustPressed("left_click"))
|
||||
// {
|
||||
// _selectedWorker = _hoveredWorker;
|
||||
// _selectedWorker._selected = true;
|
||||
// _selectedWorker._hovered = false;
|
||||
// _hoveredWorker = null;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
public void ChangeHealth(int CHANGE)
|
||||
@@ -169,20 +174,6 @@ public partial class Manager : Node2D
|
||||
// _workers[0].GlobalPosition = _desk.GetPositionFromAddress(1, 1);
|
||||
// }
|
||||
|
||||
public void SwapPositions(Worker A, Worker B)
|
||||
{
|
||||
Vector2 deskPositionA = A._deskPosition, deskPositionB = B._deskPosition;
|
||||
|
||||
B.GlobalPosition = _desk.GetPositionFromAddress((int)deskPositionA.Y, (int)deskPositionA.X);
|
||||
A._deskPosition = deskPositionB;
|
||||
B._deskPosition = deskPositionA;
|
||||
|
||||
int indexA = _workers.IndexOf(A), indexB = _workers.IndexOf(B);
|
||||
Worker C = A;
|
||||
_workers[indexA] = B;
|
||||
_workers[indexB] = C;
|
||||
}
|
||||
|
||||
private void SetHoveredWorker(Worker HOVEREDWORKER)
|
||||
{
|
||||
if (HOVEREDWORKER._hovered)
|
||||
|
||||
Reference in New Issue
Block a user