7-21-25 @ 3:17 am
This commit is contained in:
@@ -5,13 +5,11 @@ using System.Linq;
|
||||
|
||||
public partial class Actor : Node2D
|
||||
{
|
||||
public bool _available = false, _hovered = false, _selected = false;
|
||||
public bool _available = false, _hovered = false;
|
||||
public int _health, _healthMax;
|
||||
public CollisionShape2D _startArea;
|
||||
public List<Cue> _cues = new();
|
||||
public Cue _selectedCue = null;
|
||||
public Cue _cue = null;
|
||||
public List<Ball> _balls = new();
|
||||
public List<Ball> _ballBag = new();
|
||||
public Ball _hoveredBall = null;
|
||||
public Ball _selectedBall = null;
|
||||
public Ball _heldBall = null;
|
||||
@@ -26,20 +24,22 @@ public partial class Actor : Node2D
|
||||
|
||||
newActor.GetNode<Sprite2D>("Sprite").Texture = GD.Load<Texture2D>("res://art/ness.png");
|
||||
|
||||
Ball newBall = Ball._Create(0);
|
||||
newActor._balls.Add(newBall);
|
||||
newBall = Ball._Create(0);
|
||||
newActor._balls.Add(newBall);
|
||||
CueBall newCueBall = CueBall._Create();
|
||||
newActor._balls.Add(newCueBall);
|
||||
|
||||
newCueBall = CueBall._Create();
|
||||
newActor._balls.Add(newCueBall);
|
||||
|
||||
for (int i = 0; i < 7; i++)
|
||||
{
|
||||
SupportBall newBall = SupportBall._Create(i+1);
|
||||
newActor._balls.Add(newBall);
|
||||
}
|
||||
|
||||
Cue newCue = Cue._Create();
|
||||
newActor.AddChild(newCue);
|
||||
newActor._cues.Add(newCue);
|
||||
for (int i = 0; i < newActor._cues.Count; i++)
|
||||
{
|
||||
newActor._cues[i].Shoot += newActor.OnCueShoot;
|
||||
}
|
||||
|
||||
newActor._ballBag = new(newActor._balls);
|
||||
newActor._cue = newCue;
|
||||
newActor._cue.Shoot += newActor.OnCueShoot;
|
||||
|
||||
newActor._health = 10;
|
||||
newActor._healthMax = newActor._health;
|
||||
@@ -53,132 +53,118 @@ public partial class Actor : Node2D
|
||||
|
||||
public override void _Process(double DELTA_)
|
||||
{
|
||||
if (_panel._hovered)
|
||||
{
|
||||
if (Input.IsActionJustReleased("left_click"))
|
||||
{
|
||||
_selected = true;
|
||||
}
|
||||
}
|
||||
if (_ballBag.Count > 0 && _selected)
|
||||
{
|
||||
if (_heldBall == null)
|
||||
{
|
||||
_heldBall = _ballBag[0];
|
||||
}
|
||||
else if (Input.IsActionJustPressed("scroll_up"))
|
||||
{
|
||||
_heldBall = _ballBag[(_ballBag.IndexOf(_heldBall) + 1) % _ballBag.Count];
|
||||
}
|
||||
else if (Input.IsActionJustPressed("scroll_down"))
|
||||
{
|
||||
_heldBall = _ballBag[(_ballBag.IndexOf(_heldBall) - 1) < 0 ? ^1 : (_ballBag.IndexOf(_heldBall) - 1)];
|
||||
}
|
||||
// if (_balls.Any(b => !b._placed))
|
||||
// {
|
||||
|
||||
Vector2 mousePosition = GetViewport().GetMousePosition();
|
||||
if (_tempBallSprite.Texture == null)
|
||||
{
|
||||
if (GetChildren().All(n => n != _tempBallSprite))
|
||||
{
|
||||
AddChild(_tempBallSprite);
|
||||
}
|
||||
_tempBallSprite.Texture = _heldBall.GetNode<Sprite2D>("Image").Texture;
|
||||
_tempBallSprite.ZIndex = 1;
|
||||
}
|
||||
if (_startArea == null)
|
||||
{
|
||||
_startArea = Globals.Instance._currentBattle.GetNode<Table>("Table").GetNode<Area2D>("PlayerStartArea").GetNode<CollisionShape2D>("CollisionShape2D");
|
||||
}
|
||||
|
||||
// Vector2 mousePosition = GetViewport().GetMousePosition();
|
||||
// if (_tempBallSprite.Texture == null)
|
||||
// {
|
||||
// if (GetChildren().All(n => n != _tempBallSprite))
|
||||
// {
|
||||
// AddChild(_tempBallSprite);
|
||||
// }
|
||||
// _tempBallSprite.Texture = _heldBall.GetNode<Sprite2D>("Image").Texture;
|
||||
// _tempBallSprite.ZIndex = 1;
|
||||
// }
|
||||
// if (_startArea == null)
|
||||
// {
|
||||
// _startArea = Globals.Instance._currentBattle.GetNode<Table>("Table").GetNode<Area2D>("PlayerStartArea").GetNode<CollisionShape2D>("CollisionShape2D");
|
||||
// }
|
||||
|
||||
_tempBallSprite.Position = mousePosition;
|
||||
if (_tempBallSprite.Position.X >= _startArea.GlobalPosition.X - ((RectangleShape2D)(_startArea.Shape)).Size.X / 2 && _tempBallSprite.Position.X <= _startArea.GlobalPosition.X + ((RectangleShape2D)(_startArea.Shape)).Size.X / 2 && _tempBallSprite.Position.Y >= _startArea.GlobalPosition.Y - ((RectangleShape2D)(_startArea.Shape)).Size.Y / 2 && _tempBallSprite.Position.Y <= _startArea.GlobalPosition.Y + ((RectangleShape2D)(_startArea.Shape)).Size.Y / 2)
|
||||
{
|
||||
if (Input.IsActionJustReleased("left_click"))
|
||||
{
|
||||
_heldBall.Place(_tempBallSprite.Position);
|
||||
int ballIndex = _ballBag.IndexOf(_heldBall);
|
||||
// _tempBallSprite.Position = mousePosition;
|
||||
// if (_tempBallSprite.Position.X >= _startArea.GlobalPosition.X - ((RectangleShape2D)(_startArea.Shape)).Size.X / 2 && _tempBallSprite.Position.X <= _startArea.GlobalPosition.X + ((RectangleShape2D)(_startArea.Shape)).Size.X / 2 && _tempBallSprite.Position.Y >= _startArea.GlobalPosition.Y - ((RectangleShape2D)(_startArea.Shape)).Size.Y / 2 && _tempBallSprite.Position.Y <= _startArea.GlobalPosition.Y + ((RectangleShape2D)(_startArea.Shape)).Size.Y / 2)
|
||||
// {
|
||||
// if (Input.IsActionJustReleased("left_click"))
|
||||
// {
|
||||
// _heldBall.Place(_tempBallSprite.Position);
|
||||
// int ballIndex = _ballReturn.IndexOf(_heldBall);
|
||||
|
||||
AddChild(_heldBall);
|
||||
// AddChild(_heldBall);
|
||||
|
||||
_ballBag.Remove(_heldBall);
|
||||
_tempBallSprite.Texture = null;
|
||||
if (_ballBag.Count > 0)
|
||||
{
|
||||
_heldBall = _ballBag[ballIndex - (ballIndex > _ballBag.Count ? 1 : 0)];
|
||||
}
|
||||
else
|
||||
{
|
||||
_heldBall = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < _balls.Count; i++)
|
||||
{
|
||||
if (_balls[i]._potted)
|
||||
{
|
||||
_balls[i]._potted = false;
|
||||
_balls[i].Sleeping = true;
|
||||
_ballBag.Add(_balls[i]);
|
||||
RemoveChild(_balls[i]);
|
||||
// _ballReturn.Remove(_heldBall);
|
||||
// _tempBallSprite.Texture = null;
|
||||
// if (_ballReturn.Count > 0)
|
||||
// {
|
||||
// _heldBall = _ballReturn[ballIndex - (ballIndex > _ballReturn.Count ? 1 : 0)];
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// _heldBall = null;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// for (int i = 0; i < _balls.Count; i++)
|
||||
// {
|
||||
// if (_balls[i]._potted)
|
||||
// {
|
||||
// _balls[i]._potted = false;
|
||||
// _balls[i].Sleeping = true;
|
||||
// _ballReturn.Add(_balls[i]);
|
||||
// RemoveChild(_balls[i]);
|
||||
|
||||
}
|
||||
}
|
||||
if (_balls.Any(b => b._hovered))
|
||||
{
|
||||
_hoveredBall = _balls.Single(b => b._hovered);
|
||||
}
|
||||
else
|
||||
{
|
||||
_hoveredBall = null;
|
||||
}
|
||||
// }
|
||||
// }
|
||||
// if (_balls.Any(b => b._hovered))
|
||||
// {
|
||||
// _hoveredBall = _balls.Single(b => b._hovered);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// _hoveredBall = null;
|
||||
// }
|
||||
|
||||
if (_selectedCue == null && _cues.Count > 0)
|
||||
{
|
||||
_selectedCue = _cues[0];
|
||||
}
|
||||
|
||||
if ((_selectedBall == null || _selectedBall != _hoveredBall) && (_hoveredBall?._available ?? false))
|
||||
{
|
||||
if (Input.IsActionJustReleased("left_click"))
|
||||
{
|
||||
_selectedBall = _hoveredBall;
|
||||
_selectedBall._selected = true;
|
||||
_selectedCue.Don(_selectedBall);
|
||||
}
|
||||
}
|
||||
else if (Input.IsActionJustReleased("right_click"))
|
||||
{
|
||||
_selectedBall._selected = false;
|
||||
_selectedBall = null;
|
||||
_selectedCue.Doff();
|
||||
}
|
||||
else if (_hoveredBall == null)
|
||||
{
|
||||
if (Input.IsActionJustReleased("left_click") && _selectedBall != null && _selectedCue._power == 0)
|
||||
{
|
||||
_selectedBall._selected = false;
|
||||
_selectedBall = null;
|
||||
_selectedCue.Doff();
|
||||
}
|
||||
}
|
||||
}
|
||||
// if ((_selectedBall == null || _selectedBall != _hoveredBall) && (_hoveredBall?._available ?? false))
|
||||
// {
|
||||
// if (Input.IsActionJustReleased("left_click"))
|
||||
// {
|
||||
// _selectedBall = _hoveredBall;
|
||||
// _selectedBall._selected = true;
|
||||
// _cue.Don(_selectedBall);
|
||||
// }
|
||||
// }
|
||||
// else if (Input.IsActionJustReleased("right_click"))
|
||||
// {
|
||||
// _selectedBall._selected = false;
|
||||
// _selectedBall = null;
|
||||
// _cue.Doff();
|
||||
// }
|
||||
// else if (_hoveredBall == null)
|
||||
// {
|
||||
// if (Input.IsActionJustReleased("left_click") && _selectedBall != null && _cue._power == 0)
|
||||
// {
|
||||
// _selectedBall._selected = false;
|
||||
// _selectedBall = null;
|
||||
// _cue.Doff();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
||||
//public void ResetCueBall()
|
||||
//{
|
||||
//_cueBall = Ball._Create("ball", 0, _startPosition);
|
||||
//_cueBall.SetName("CueBall");
|
||||
//AddChild(_cueBall);
|
||||
//Texture2D image = GD.Load<Texture2D>("res://art/cue_ball.png");
|
||||
//_cueBall.GetNode<Sprite2D>("Image").Texture = image;
|
||||
//_cueBall._placed = true;
|
||||
//_balls = GetTree().GetNodesInGroup("balls").Select(b => (Ball)b).ToList<Ball>();
|
||||
//}
|
||||
|
||||
|
||||
public void Start()
|
||||
{
|
||||
Panel ballReturn = _panel.GetNode<Panel>("BallReturn");
|
||||
GD.Print(ballReturn.Position);
|
||||
GD.Print(ballReturn.GlobalPosition);
|
||||
|
||||
for (int i = 0; i < _balls.Count; i++)
|
||||
{
|
||||
_balls[i].GetNode<CollisionShape2D>("Bounds").Disabled = true;
|
||||
_balls[i].Position = new Vector2(ballReturn.Size.X/2, 50 * (i + 1));
|
||||
|
||||
_panel.GetNode<Panel>("BallReturn").AddChild(_balls[i]);
|
||||
GD.Print(_balls[i].Position);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -189,7 +175,7 @@ public partial class Actor : Node2D
|
||||
_selectedBall.ApplyCentralImpulse(IMPULSE);
|
||||
_selectedBall._selected = false;
|
||||
_selectedBall = null;
|
||||
_selectedCue.Doff();
|
||||
_cue.Doff();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user