using System.Collections.Generic; using UnityEngine; namespace ET { [FriendClass(typeof(Unit))] public static class UnitHelper { public static UnitProto CreateUnitProto(Unit unit) { UnitProto unitProto = new UnitProto(); unitProto.Id = unit.Id; unitProto.Food = unit.Food; unitProto.Water = unit.Water; unitProto.SilverTael = unit.SilverTael; unitProto.GoldIngot = unit.GoldIngot; unitProto.Season = unit.Season; unitProto.GameTime = unit.GameTime; unitProto.Prosperity = unit.Prosperity; unitProto.Name = unit.Name; unitProto.Scale = unit.Scale; unitProto.Day = unit.Day; unitProto.EventSeed = unit.EventSeed; unitProto.EventNames = unit.EventNames; BuildingComponent bc = unit.GetComponent(); if (bc != null) { foreach (var buildingInfo in bc.Children.Values) { unitProto.Buildings.Add(((Building)buildingInfo).ToMessage()); } } PeopleComponent pc = unit.GetComponent(); if (pc != null) { foreach (var p in pc.Children.Values) { unitProto.PeopleList.Add(((People)p).ToMessage()); } } ResourcePointComponent rc = unit.GetComponent(); if (rc != null) { foreach (var n in rc.Children.Values) { unitProto.ResourceList.Add(((ResourcePoint)n).ToMessage()); } } StoreComponent sc = unit.GetComponent(); if (sc != null) { foreach (var v in sc.Children.Values) { unitProto.Store.Add(((Item)v).ToMessage()); } } GatherComponent gc = unit.GetComponent(); if (gc != null) { foreach (var v in gc.Children.Values) { unitProto.GatherList.Add(((Gather)v).ToMessage()); } } ConstructComponent constructComponent = unit.GetComponent(); if (constructComponent != null) { foreach (var v in constructComponent.Children.Values) { unitProto.ConstructList.Add(((Construct)v).ToMessage()); } } SynthesisComponent synthesisComponent = unit.GetComponent(); if (synthesisComponent != null) { foreach (var v in synthesisComponent.Children.Values) { unitProto.SynthesisList.Add(((Synthesis)v).ToMessage()); } } MenuComponent menuComponent= unit.GetComponent(); if (menuComponent != null) { foreach (var v in menuComponent.Children.Values) { unitProto.MenuList.Add(((Menu)v).ToMessage()); } } foreach (var pair in unit.FighterDic) { unitProto.FighterList.Add(pair.Key); unitProto.FighterList.Add(pair.Value); } MonsterGroupComponent monsterGroupComponent = unit.GetComponent(); if (monsterGroupComponent != null) { foreach (var v in monsterGroupComponent.Children.Values) { unitProto.MonsterGroupList.Add(((MonsterGroup)v).ToMessage()); } } return unitProto; } // 获取看见unit的玩家,主要用于广播 public static void NoticeUnitAdd(Unit unit, Unit sendUnit) { M2C_CreateUnits createUnits = new M2C_CreateUnits(); createUnits.Units.Add(CreateUnitProto(sendUnit)); MessageHelper.SendToClient(unit, createUnits); } public static void NoticeUnitRemove(Unit unit, Unit sendUnit) { M2C_RemoveUnits removeUnits = new M2C_RemoveUnits(); removeUnits.Units.Add(sendUnit.Id); MessageHelper.SendToClient(unit, removeUnits); } public static async ETTask InitUnit(Unit unit, bool isNew) { //new player init if (isNew) { } //unit.UpdateTime = TimeHelper.ServerNow()/1000; await ETTask.CompletedTask; } public static void NofityUpdateValley(Unit unit, List Ks, List Vs) { MessageHelper.SendToClient(unit,new M2C_NotifyUpdateValley(){Ks = Ks,Vs = Vs}); } public static void NotifyWeatherStart(Unit unit, int cfgId) { MessageHelper.SendToClient(unit,new M2C_NtfWeatherStart(){WeatherCfgId = cfgId}); } public static void NotifyWeatherEnd(Unit unit, int cfgId) { MessageHelper.SendToClient(unit,new M2C_NtfWeatherEnd(){WeatherCfgId = cfgId}); } } }