using Godot; using System; using System.Collections.Generic; using System.Linq; public partial class Battle : Node { public bool _current; public Vector2 _startPosition = new Vector2(890, 340); public Manager _turn; public List _potted = new(); public List _balls = new(); public Table _table; // public static Battle _Create() // { // PackedScene scene = ResourceLoader.Load("res://Gameplay/battle.tscn"); // Battle newBattle = scene.Instantiate(); // Manager newPlayerManager = Manager._Create(); // newBattle._player = newPlayerManager; // newBattle.AddChild(newPlayerManager); // Manager newComputerManager = Manager._Create(); // newBattle._player = newComputerManager; // newBattle.AddChild(newComputerManager); // Table newTable = Table._Create(); // newTable.Position = Globals.Instance._screenCenter; // newBattle._table = newTable; // List pockets = newBattle._table.GetChildren() // .Where(n => n.GetName().ToString().ToLower().Contains("pocket")) // .Select(n => (Area2D)n) // .ToList(); // for (int i = 0; i < pockets.Count; i++) // { // pockets[i].BodyEntered += newBattle.PotBall; // } // newBattle.AddChild(newTable); // return newBattle; // } public override void _Ready() { } public override void _Process(double DELTA_) { CheckMovement(); } public void GenerateBalls() { int count = 1; int columns = 0; int diameter = 36; Table table = GetNode("Table"); for (int i = 0; i < 5; i++) { for (int j = 0; j <= columns; j++) { Vector2 position = new Vector2(table.GlobalPosition.X - (i * (diameter / 2)) + (j * (diameter)), table.GlobalPosition.Y - table.Texture.GetSize().Y / 4 - (i * diameter)); Ball ball = Ball._Create(); ball.Position = position; ball._placed = true; ball._potted = false; ball.GetNode("Bounds").Disabled = false; ball.SetSprite("res://art/ball_"+count+".png"); _balls.Add(ball); AddChild(ball); count += 1; } columns += 1; } } public void CheckMovement() { bool movementCheck = _balls.Any(b => b._moving); if (movementCheck) { if (!Globals.Instance._anyMovement) { Globals.Instance._anyMovement = true; //EmitSignal(SignalName.DetectMovement, true); } } else { if (Globals.Instance._anyMovement) { Globals.Instance._anyMovement = false; //EmitSignal(SignalName.DetectMovement, false); } } } // public void PotBall(Node2D BODY) // { // if (BODY is Ball) // { // Ball ball = (Ball)BODY; // if (ball.GetParentOrNull() == _player) // { // // _player.PotWorker(ball.GetParent()); // } // else // { // ball.Pot(); // _balls.Remove(ball); // RemoveChild(ball); // ball.QueueFree(); // } // } // } public void Start() { // _current = true; // // GenerateBalls(); // Globals.Instance._currentBattle = this; // _player.Start(); } }