Stash work

This commit is contained in:
Michal Pikulski
2025-12-02 23:56:13 +01:00
parent bb8d600af2
commit d5ab69d944
100 changed files with 10105 additions and 124 deletions

View File

@@ -0,0 +1,111 @@
using System.Collections;
using Core;
using Core.Lifecycle;
using Minigames.FortFight.Core;
using Minigames.FortFight.Data;
using UnityEngine;
namespace Minigames.FortFight.AI
{
/// <summary>
/// AI controller for the PigMan opponent.
/// Phase 1: Stubbed implementation - just simulates taking a turn.
/// Phase 4: Full implementation with trajectory calculation and target selection.
/// </summary>
public class FortFightAIController : ManagedBehaviour
{
[Header("AI Settings (Stubbed)")]
[SerializeField] private float aiThinkTime = 1.5f; // Time AI "thinks" before acting
private TurnManager turnManager;
private bool isThinking = false;
#region Initialization
/// <summary>
/// Initialize the AI controller
/// </summary>
public void Initialize()
{
// Get reference to turn manager
turnManager = FindFirstObjectByType<TurnManager>();
if (turnManager == null)
{
Logging.Error("[FortFightAIController] TurnManager not found!");
return;
}
// Subscribe to turn events
turnManager.OnTurnStarted += OnTurnStarted;
Logging.Debug("[FortFightAIController] AI initialized");
}
#endregion
#region Turn Handling
/// <summary>
/// Called when a new turn starts
/// </summary>
private void OnTurnStarted(PlayerData currentPlayer, TurnState turnState)
{
// Only act if it's AI's turn
if (turnState == TurnState.AITurn && !isThinking)
{
StartCoroutine(ExecuteAITurn());
}
}
/// <summary>
/// Execute the AI's turn (stubbed for Phase 1)
/// </summary>
private IEnumerator ExecuteAITurn()
{
isThinking = true;
Logging.Debug($"[FortFightAIController] AI is thinking... (for {aiThinkTime}s)");
// Simulate AI "thinking"
yield return new WaitForSeconds(aiThinkTime);
// STUBBED: Perform AI action
Logging.Debug("[FortFightAIController] AI takes action! (STUBBED - no actual projectile fired yet)");
// End AI turn
isThinking = false;
if (turnManager != null)
{
turnManager.EndTurn();
}
}
#endregion
#region Cleanup
internal override void OnManagedDestroy()
{
base.OnManagedDestroy();
if (turnManager != null)
{
turnManager.OnTurnStarted -= OnTurnStarted;
}
}
#endregion
#region Future Implementation (Phase 4)
// TODO Phase 4: Implement ballistic trajectory calculation
// TODO Phase 4: Implement target selection logic
// TODO Phase 4: Implement shot deviation system
// TODO Phase 4: Implement ammunition selection
#endregion
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: d82cbd88db94eec4ba7c19ef60b9fbbc