using Godot; using System; public partial class Ball : RigidBody2D { [Signal] public delegate void OnHitEventHandler(); public bool _active = false, _placed = false, _potted = false, _available = false, _hovered = false, _selected = false, _aimed = false, _launched = false, _moving = false, _isCue = false; public float _moveThreshold = 5.0f; public Vector2 _newPosition = new Vector2(-1, -1); public static Ball _Create() { PackedScene scene = ResourceLoader.Load("res://Gameplay/ball.tscn"); Ball newBall = scene.Instantiate(); return newBall; } public override void _Ready() { } public override void _Process(double DELTA_) { if (LinearVelocity.Length() > 0 && LinearVelocity.Length() < _moveThreshold) { Sleeping = true; if (_moving) { _moving = false; if (_launched) { _launched = false; } } } else if (LinearVelocity.Length() >= _moveThreshold) { if (!_moving) { _moving = true; } } if (Globals.Instance._anyMovement) { if (_available) { _available = false; } } else { if (!_available) { _available = true; } } } public void Pot() { _placed = false; _potted = true; Sleeping = true; _moving = false; } public void SetSprite(string PATH) { GetNode("Image").Texture = GD.Load(PATH); } private void OnBodyEntered(Node2D TARGET) { } private void OnMouseEntered() { if (_active) { _hovered = true; } } private void OnMouseExited() { if (_active) { _hovered = false; } } //Processes public virtual void ProcessOnAdd() { } public virtual void ProcessOnBattleStart() { } public virtual void ProcessOnBattleEnd() { } public virtual void ProcessOnCollision() { } public virtual void ProcessOnCreation() { } public virtual void ProcessOnCritical() { } public virtual void ProcessOnDeath() { } public virtual void ProcessOnDefend() { } public virtual void ProcessOnExpiration() { } public virtual void ProcessOnLaunch() { } public virtual void ProcessOnMovement() { } public virtual void ProcessOnRemove() { } public virtual void ProcessOnSell() { } public virtual void ProcessOnStop() { } public virtual void ProcessOnTurnEnd() { } public virtual void ProcessOnTurnStart() { } }