7-31-25 @ 3:05AM
This commit is contained in:
132
Gameplay/PlayerManager.cs
Normal file
132
Gameplay/PlayerManager.cs
Normal file
@@ -0,0 +1,132 @@
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
public partial class PlayerManager : Manager
|
||||
{
|
||||
public Ball _hoveredBall = null;
|
||||
public PlaceholderBall _hoveredPlaceholderBall = null;
|
||||
public PlaceholderBall _heldPlaceholderBall = null;
|
||||
public Worker _hoveredWorker = null;
|
||||
public ManagerPanel _managerPanel = null;
|
||||
public Panel _ballReturn = null;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
SetSprite("res://art/ness.png");
|
||||
|
||||
_managerPanel = GetNode<ManagerPanel>("Panel");
|
||||
_managerPanel.SetPosition(new Vector2(100, 150));
|
||||
_managerPanel.SetSprite(_imagePath);
|
||||
_managerPanel.SetValue(_health);
|
||||
_managerPanel.SetMax(_healthMax);
|
||||
|
||||
Ball newBall;
|
||||
newBall = _ballScene.Instantiate<Ball>();
|
||||
newBall.SetSprite("res://art/cue_ball.png");
|
||||
_balls.Add(0, newBall);
|
||||
|
||||
for (int i = 1; i <= 7; i++)
|
||||
{
|
||||
newBall = _ballScene.Instantiate<Ball>();
|
||||
newBall.SetSprite("res://art/ball_" + i + ".png");
|
||||
_balls.Add(i, newBall);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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))
|
||||
{
|
||||
if (Input.IsActionJustReleased("left_click"))
|
||||
{
|
||||
_selectedBall = _hoveredBall;
|
||||
_selectedBall._selected = true;
|
||||
_cue.Don(_selectedBall.Position);
|
||||
}
|
||||
}
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_heldPlaceholderBall != null)
|
||||
{
|
||||
Vector2 mousePosition = GetViewport().GetMousePosition();
|
||||
_heldPlaceholderBall.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)
|
||||
{
|
||||
_ready = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Input.IsActionJustReleased("left_click"))
|
||||
{
|
||||
_heldPlaceholderBall = _hoveredPlaceholderBall;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public override void ChangeHealth(int CHANGE)
|
||||
{
|
||||
base.ChangeHealth(CHANGE);
|
||||
GetNode<ManagerPanel>("Panel").SetValue(_health);
|
||||
}
|
||||
|
||||
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]);
|
||||
}
|
||||
}
|
||||
|
||||
public void HoverBall(Ball BALL, bool HOVERED)
|
||||
{
|
||||
if (HOVERED)
|
||||
{
|
||||
if (_hoveredBall == null)
|
||||
{
|
||||
_hoveredBall = BALL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_hoveredBall == BALL)
|
||||
{
|
||||
_hoveredBall = null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user