feat: add gameplay enhancements and visual improvements
Backend: - Add weather system with 6 weather types and transition probabilities - Add day/night cycle (dawn, day, dusk, night) with phase modifiers - Add mood system for agents (happy, neutral, sad, anxious) - Add new commands: heal, talk, encourage, revive - Add agent social interaction system with relationships - Add casual mode with auto-revive and reduced decay rates Frontend (Web): - Add world state display (weather, time of day) - Add mood bar to agent cards - Add new action buttons for heal, encourage, talk, revive - Handle new event types from server Unity Client: - Add EnvironmentManager with dynamic sky gradient and island scene - Add WeatherEffects with rain, sun rays, fog, and heat particles - Add SceneBootstrap for automatic visual system initialization - Improve AgentVisual with better character sprites and animations - Add breathing and bobbing idle animations - Add character shadows - Improve UI panels with rounded corners and borders - Improve SpeechBubble with rounded corners and proper tail - Add support for all new server events and commands 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
95
unity-client/Assets/Scripts/Visual/SceneBootstrap.cs
Normal file
95
unity-client/Assets/Scripts/Visual/SceneBootstrap.cs
Normal file
@@ -0,0 +1,95 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace TheIsland.Visual
|
||||
{
|
||||
/// <summary>
|
||||
/// Bootstraps the scene with all visual components.
|
||||
/// Attach this to an empty GameObject in your scene to automatically
|
||||
/// create the environment, weather effects, and other visual systems.
|
||||
/// </summary>
|
||||
public class SceneBootstrap : MonoBehaviour
|
||||
{
|
||||
[Header("Auto-Create Components")]
|
||||
[SerializeField] private bool createEnvironment = true;
|
||||
[SerializeField] private bool createWeatherEffects = true;
|
||||
|
||||
[Header("Camera Settings")]
|
||||
[SerializeField] private bool configureCamera = true;
|
||||
[SerializeField] private Vector3 cameraPosition = new Vector3(0, 3, -8);
|
||||
[SerializeField] private Vector3 cameraRotation = new Vector3(15, 0, 0);
|
||||
[SerializeField] private float cameraFieldOfView = 60f;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
// Configure camera
|
||||
if (configureCamera)
|
||||
{
|
||||
ConfigureMainCamera();
|
||||
}
|
||||
|
||||
// Create environment
|
||||
if (createEnvironment && EnvironmentManager.Instance == null)
|
||||
{
|
||||
CreateEnvironmentManager();
|
||||
}
|
||||
|
||||
// Create weather effects
|
||||
if (createWeatherEffects && WeatherEffects.Instance == null)
|
||||
{
|
||||
CreateWeatherEffects();
|
||||
}
|
||||
|
||||
Debug.Log("[SceneBootstrap] Visual systems initialized");
|
||||
}
|
||||
|
||||
private void ConfigureMainCamera()
|
||||
{
|
||||
Camera mainCamera = Camera.main;
|
||||
if (mainCamera == null)
|
||||
{
|
||||
var camObj = new GameObject("Main Camera");
|
||||
mainCamera = camObj.AddComponent<Camera>();
|
||||
camObj.AddComponent<AudioListener>();
|
||||
camObj.tag = "MainCamera";
|
||||
}
|
||||
|
||||
mainCamera.transform.position = cameraPosition;
|
||||
mainCamera.transform.rotation = Quaternion.Euler(cameraRotation);
|
||||
mainCamera.fieldOfView = cameraFieldOfView;
|
||||
mainCamera.clearFlags = CameraClearFlags.SolidColor;
|
||||
mainCamera.backgroundColor = new Color(0.4f, 0.6f, 0.9f); // Fallback sky color
|
||||
|
||||
Debug.Log("[SceneBootstrap] Camera configured");
|
||||
}
|
||||
|
||||
private void CreateEnvironmentManager()
|
||||
{
|
||||
var envObj = new GameObject("EnvironmentManager");
|
||||
envObj.AddComponent<EnvironmentManager>();
|
||||
Debug.Log("[SceneBootstrap] EnvironmentManager created");
|
||||
}
|
||||
|
||||
private void CreateWeatherEffects()
|
||||
{
|
||||
var weatherObj = new GameObject("WeatherEffects");
|
||||
weatherObj.AddComponent<WeatherEffects>();
|
||||
Debug.Log("[SceneBootstrap] WeatherEffects created");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Call this to manually refresh all visual systems.
|
||||
/// </summary>
|
||||
public void RefreshVisuals()
|
||||
{
|
||||
if (EnvironmentManager.Instance != null)
|
||||
{
|
||||
EnvironmentManager.Instance.SetEnvironment("day", "Sunny");
|
||||
}
|
||||
|
||||
if (WeatherEffects.Instance != null)
|
||||
{
|
||||
WeatherEffects.Instance.SetWeather("Sunny");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user