using Godot; using System; using System.Collections.Generic; using Core; using Models; public partial class CampusController : Node2D { private Control _taskContainer; private Control _logContainer; private Button _taskToggle; private Button _logToggle; [Export] public PackedScene StudentScene { get; set; } [Export] public int StudentCount { get; set; } = 5; [Export] public float CoverageStep { get; set; } = 48.0f; [Export] public int MaxCoveragePoints { get; set; } = 200; [Export] public string BehaviorConfigPath { get; set; } = "res://resources/definitions/campus_behavior.json"; [Export] public int RandomSeed { get; set; } = 0; [Export] public int AssignedTaskChancePercent { get; set; } = 60; private NavigationRegion2D _navigationRegion; private Node2D _studentsRoot; private readonly List _coveragePoints = new(); private readonly List _behaviorAgents = new(); private readonly CampusBehaviorWorld _behaviorWorld = new(); private readonly CampusLocationRegistry _locationRegistry = new(); private CampusBehaviorConfig _behaviorConfig; private GameContentDatabase _contentDatabase; private List _archetypeIds = new(); private List _roleIds = new(); private List _traitIds = new(); private List _disciplineIds = new(); private Random _random; private bool _spawnPending = true; private bool _navBakePending = false; private bool _navBakeReady = false; private Rid _navBakeMap = new(); private uint _navBakeIterationId = 0; // Called when the node enters the scene tree for the first time. public override void _Ready() { _taskContainer = GetNode("Task"); _logContainer = GetNode("Log"); // Path to buttons based on scene structure _taskToggle = GetNode