예제 #1
0
 /// <summary>
 /// 自身をSingletonのインスタンスとして登録。既に別のインスタンスが存在する場合はfalseを返す。
 /// </summary>
 /// <returns></returns>
 private bool RegisterSingletonInstance()
 {
     if (!Instance)
     {
         Instance = this;
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #2
0
 public BuildingSystem(NestSystem host)
 {
     Host = host;
 }
예제 #3
0
        public static void LoadDefaultSaveUnitToCurrent(DefaultEnvironmentData defaultEnvironment = null)
        {
            var su = SaveUnit.GetEmptySaveUnit();

            //初期環境のセットアップ
            if (defaultEnvironment != null)
            {
                var structure = su.s_GameContext.s_NestData.Structure;
                structure.NestElements.AddRange(defaultEnvironment.GeneralPathRoads);

                //エサ備蓄
                su.s_GameContext.s_NestData.StoredFood = defaultEnvironment.StoredFood;

                //道
                var initialRoad = new IShapeRoadData()
                {
                    Position  = defaultEnvironment.InitialRoadPosition,
                    Direction = EnumRoadHVDirection.Vertical
                };
                structure.NestElements.Add(initialRoad);
                NestSystem.ParseNodePath(defaultEnvironment.InitialRoadBindNodePath, out string guid, out string name);
                structure.ElementEdges.Add(new NestPathElementEdgeData()
                {
                    ElementGuidA = initialRoad.Guid,
                    ElementGuidB = guid,
                    NodeNameA    = defaultEnvironment.InitialRoadNodeName,
                    NodeNameB    = name
                });

                //砂糖山
                var sugarStack = new MtSugarData()
                {
                    Position = defaultEnvironment.SugarStackPosition
                };
                structure.NestElements.Add(sugarStack);
                NestSystem.ParseNodePath(defaultEnvironment.SugarStackBindNodePath, out guid, out name);
                structure.ElementEdges.Add(new NestPathElementEdgeData()
                {
                    ElementGuidA = sugarStack.Guid,
                    ElementGuidB = guid,
                    NodeNameA    = defaultEnvironment.SugarStackNodeName,
                    NodeNameB    = name
                });

                //アリ
                var ants = su.s_GameContext.s_NestData.Ants;
                for (int i = 0; i < defaultEnvironment.BuilderAntCount; i++)
                {
                    ants.Add(new BuilderAntData());
                }
                for (int i = 0; i < defaultEnvironment.ErgateAntCount; i++)
                {
                    ants.Add(new ErgateAntData());
                }
                for (int i = 0; i < defaultEnvironment.UnemployedAntCount; i++)
                {
                    ants.Add(new UnemployedAntData());
                }
            }

            su.SetAsCurrent();
        }
예제 #4
0
 /// <summary>
 /// 女王部屋を取得します。ない場合はnullが返ります。
 /// </summary>
 /// <param name="nestSystem"></param>
 /// <returns></returns>
 public static QueenRoom GetQueenRoom(this NestSystem nestSystem)
 {
     return(nestSystem.NestElements.OfType <QueenRoom>().FirstOrDefault());
 }