using System; using Newtonsoft.Json; using UnityEngine; [Serializable] public class ResourceInfo { public string resource_name; public int capacity; public float speed_factor; public int? breakdown_interval; public int? repair_time; } [Serializable] public class ResourceStatus { public string resource_name; public int requesters; public int claimers; public int available; public int capacity; public int original_capacity; public float utilization; public float occupancy; public int broken_units; public float speed_factor; } public class SimulationModelResource : SimulationModel { ResourceInfo info; ResourceStatus currentStatus; private void Message_Initialized(ResourceInfo data) { this.info = data; this.gameObject.SetActive(false); } private void Message_Status_Updted(ResourceStatus data) { this.currentStatus = data; SetBubble($"{data.claimers}/{data.original_capacity}"); } public override void GetData(string data) { var message = JsonConvert.DeserializeObject(data); switch (message._event) { case "resource_initialized": Message_Initialized(message.data.ToObject()); return; case "resource_status_update": Message_Status_Updted(message.data.ToObject()); return; default: return; } } public override void SetBubble(object data) { string msg = data.ToString(); if (currentBubble == null) { // »ý¼º currentBubble = Instantiate(bubbleUIPrefab, FindAnyObjectByType().transform); currentBubble.target = DataBubbleSocket; currentBubble.worldOffset = new Vector3(0, 2.0f, 0); // Çʿ信 µû¶ó Á¶Àý } // ÅØ½ºÆ® °»½Å currentBubble.SetMessage(msg); } }