Beispiel #1
0
        public IEnumerable <Act.Status> PutResources()
        {
            if (BuildRoom.MeetsBuildRequirements())
            {
                yield return(Act.Status.Success);
            }

            if (BuildRoom.ResourcesReservedFor == Agent)
            {
                Agent.Creature.Inventory.Remove(Resources, Inventory.RestockType.None);
                BuildRoom.AddResources(Resources);
                BuildRoom.ResourcesReservedFor = null;
            }
            yield return(Act.Status.Success);
        }
 public override IEnumerable <Status> Run()
 {
     if (BuildRoom == null || BuildRoom.IsBuilt || BuildRoom.VoxelOrders.Count == 0)
     {
         yield return(Status.Fail);
     }
     else
     {
         BuildRoom.AddResources(Resources);
         Creature.Inventory.Remove(Resources);
         Creature.Stats.NumRoomsBuilt++;
         Creature.AI.AddXP(10);
         yield return(Status.Success);
     }
 }
Beispiel #3
0
        public IEnumerable <Act.Status> PutResources()
        {
            if (BuildRoom.MeetsBuildRequirements())
            {
                yield return(Act.Status.Success);
            }

            if (BuildRoom.ResourcesReservedFor == Agent)
            {
                var resources = Agent.Blackboard.GetData <List <Resource> >("zone_resources");
                Agent.Creature.Inventory.Remove(resources, Inventory.RestockType.None);
                BuildRoom.AddResources(resources);
                BuildRoom.ResourcesReservedFor = null;
            }

            yield return(Act.Status.Success);
        }
Beispiel #4
0
        public IEnumerable <Status> WaitForResources()
        {
            if (BuildRoom.ResourcesReservedFor == Agent)
            {
                yield return(Act.Status.Success);

                yield break;
            }

            while (!BuildRoom.MeetsBuildRequirements())
            {
                if (BuildRoom.ResourcesReservedFor == null || BuildRoom.ResourcesReservedFor.IsDead)
                {
                    Agent.SetMessage("Failed to wait for resources.");
                    yield return(Act.Status.Fail);

                    yield break;
                }
                yield return(Act.Status.Running);
            }

            yield return(Act.Status.Success);
        }
    private void BuildRooms()
    {
        BuildRoom.Init(currentMap);
        roomsToSet = new List <Room>();

        startRoom = BuildRoom.Build(RoomType.START, "start" + currentMap.Floor);
        roomsToSet.Add(startRoom);

        if (Config.instance.RoomTestMode) // Test모드
        {
            Room testRoom = BuildRoom.Build(Config.instance.TestRoomType, Config.instance.TestRoomName);
            roomsToSet.Add(testRoom);
        }
        else  //아닐시 Map정보에 따라 빌드
        {
            for (int i = 0; i < currentMap.BattleRoomNum; i++)
            {
                Room battleRoom = BuildRoom.Build(RoomType.BATTLE);
                roomsToSet.Add(battleRoom);
            }
            for (int i = 0; i < currentMap.EventRoomNum; i++)
            {
                Room eventRoom = BuildRoom.Build(RoomType.EVENT);
                roomsToSet.Add(eventRoom);
            }
            if (currentMap.Boss)
            {
                Room bossRoom = BuildRoom.Build(RoomType.BOSS, "boss" + currentMap.Floor);
                roomsToSet.Add(bossRoom);
            }
            if (currentMap.End)
            {
                Room endRoom = BuildRoom.Build(RoomType.START, "end" + currentMap.Floor);
                roomsToSet.Add(endRoom);
            }
        }
    }
Beispiel #6
0
 private bool ValidResourceState()
 {
     return(BuildRoom.MeetsBuildRequirements() || (BuildRoom.ResourcesReservedFor != null));
 }