Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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();
            }
        }