|
|
|
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<BuildingComponent>();
|
|
|
|
if (bc != null)
|
|
|
|
{
|
|
|
|
foreach (var buildingInfo in bc.Children.Values)
|
|
|
|
{
|
|
|
|
unitProto.Buildings.Add(((Building)buildingInfo).ToMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
PeopleComponent pc = unit.GetComponent<PeopleComponent>();
|
|
|
|
if (pc != null)
|
|
|
|
{
|
|
|
|
foreach (var p in pc.Children.Values)
|
|
|
|
{
|
|
|
|
unitProto.PeopleList.Add(((People)p).ToMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ResourcePointComponent rc = unit.GetComponent<ResourcePointComponent>();
|
|
|
|
if (rc != null)
|
|
|
|
{
|
|
|
|
foreach (var n in rc.Children.Values)
|
|
|
|
{
|
|
|
|
unitProto.ResourceList.Add(((ResourcePoint)n).ToMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
StoreComponent sc = unit.GetComponent<StoreComponent>();
|
|
|
|
if (sc != null)
|
|
|
|
{
|
|
|
|
foreach (var v in sc.Children.Values)
|
|
|
|
{
|
|
|
|
unitProto.Store.Add(((Item)v).ToMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
GatherComponent gc = unit.GetComponent<GatherComponent>();
|
|
|
|
if (gc != null)
|
|
|
|
{
|
|
|
|
foreach (var v in gc.Children.Values)
|
|
|
|
{
|
|
|
|
unitProto.GatherList.Add(((Gather)v).ToMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
ConstructComponent constructComponent = unit.GetComponent<ConstructComponent>();
|
|
|
|
if (constructComponent != null)
|
|
|
|
{
|
|
|
|
foreach (var v in constructComponent.Children.Values)
|
|
|
|
{
|
|
|
|
unitProto.ConstructList.Add(((Construct)v).ToMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
SynthesisComponent synthesisComponent = unit.GetComponent<SynthesisComponent>();
|
|
|
|
if (synthesisComponent != null)
|
|
|
|
{
|
|
|
|
foreach (var v in synthesisComponent.Children.Values)
|
|
|
|
{
|
|
|
|
unitProto.SynthesisList.Add(((Synthesis)v).ToMessage());
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
MenuComponent menuComponent= unit.GetComponent<MenuComponent>();
|
|
|
|
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<MonsterGroupComponent>();
|
|
|
|
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<int> Ks, List<long> 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});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|