/// <summary> /// 获取用于展示的地块信息 /// </summary> /// <param name="player"></param> /// <returns></returns> public virtual object GetInfo(GamePlayer player) { var relativeCoordinate = Coordinate.ToRelative(player); var data = JObject.FromObject( new { Coordinate = relativeCoordinate, Terrain = Terrain == null ? null : Terrain.GetInfo(), TraficNetwork = TraficNetwork == null ? null : TraficNetwork.GetInfo(), Building = Building == null ? null : Building.GetInfo(), Resources, IsMine = Owner == player.Guid, Nearly = relativeCoordinate.NearlyCoordinates(), }); if (Acting == null) { data["Actions"] = JArray.FromObject(GetActions(player).Select(item => item.GetInfo())); } else { data["Action"] = JObject.FromObject(Acting.GetInfo()); } return(data); }
/// <summary> /// 对地块执行例行检查,处理例行事项 /// </summary> public override void Check(DateTime now) { lock ( SyncRoot ) { Collect(); if (Acting != null) { Acting.Check(now); } if (Terrain != null) { Terrain.Check(now); } if (TraficNetwork != null) { TraficNetwork.Check(now); } if (Building != null) { Building.Check(now); } foreach (var item in GetUnits()) { item.Check(now); } SaveActing(); } }