コード例 #1
0
        public static void Register(RoomData roomData)
        {
            var room  = roomData.room;
            var wRoom = new WeightedRoom()
            {
                room = room,
                additionalPrerequisites = new DungeonPrerequisite[0],
                weight = roomData.weight == 0 ? GlobalRoomWeight : roomData.weight
            };

            switch (room.category)
            {
            case RoomCategory.SPECIAL:
                switch (room.subCategorySpecial)
                {
                case RoomSpecialSubCategory.STANDARD_SHOP:          //shops
                    StaticReferences.RoomTables["shop"].includedRooms.Add(wRoom);
                    break;

                case RoomSpecialSubCategory.WEIRD_SHOP:            //subshops
                    StaticReferences.subShopTable.InjectionData.Add(GetFlowModifier(roomData));
                    break;

                default:
                    StaticReferences.RoomTables["special"].includedRooms.Add(wRoom);
                    break;
                }
                break;

            case RoomCategory.SECRET:
                StaticReferences.RoomTables["secret"].includedRooms.Add(wRoom);
                break;

            case RoomCategory.BOSS:
                //TODO - Boss rooms
                break;

            default:
                var tilesetPrereqs = new List <DungeonPrerequisite>();
                foreach (var p in room.prerequisites)
                {
                    if (p.requireTileset)
                    {
                        StaticReferences.GetRoomTable(p.requiredTileset).includedRooms.Add(wRoom);
                        tilesetPrereqs.Add(p);
                    }
                }
                foreach (var p in tilesetPrereqs)
                {
                    room.prerequisites.Remove(p);
                }
                break;
            }
            //Tools.Print($"Registering {roomData.room.name} with weight {wRoom.weight} as {roomData.category}");
        }
コード例 #2
0
        public static List <ProceduralFlowModifierData> GetFlowModifier(RoomData roomData)
        {
            var room = roomData.room;
            List <ProceduralFlowModifierData> data = new List <ProceduralFlowModifierData>();
            var tilesetPrereqs = new List <DungeonPrerequisite>();

            foreach (var p in room.prerequisites)
            {
                if (p.requireTileset)
                {
                    data.Add(new ProceduralFlowModifierData()
                    {
                        annotation     = room.name,
                        placementRules = new List <ProceduralFlowModifierData.FlowModifierPlacementType>()
                        {
                            ProceduralFlowModifierData.FlowModifierPlacementType.END_OF_CHAIN,
                            ProceduralFlowModifierData.FlowModifierPlacementType.HUB_ADJACENT_NO_LINK,
                        },
                        exactRoom         = room,
                        selectionWeight   = roomData.weight,
                        chanceToSpawn     = 1,
                        prerequisites     = new DungeonPrerequisite[] { p }, //doesn't include all the other prereqs, pls fix
                        CanBeForcedSecret = true,
                    });
                }
            }

            RemoveTilesetPrereqs(room);
            if (data.Count == 0)
            {
                data.Add(new ProceduralFlowModifierData()
                {
                    annotation     = room.name,
                    placementRules = new List <ProceduralFlowModifierData.FlowModifierPlacementType>()
                    {
                        ProceduralFlowModifierData.FlowModifierPlacementType.END_OF_CHAIN,
                        ProceduralFlowModifierData.FlowModifierPlacementType.HUB_ADJACENT_NO_LINK,
                    },
                    exactRoom         = room,
                    selectionWeight   = roomData.weight,
                    chanceToSpawn     = 1,
                    prerequisites     = new DungeonPrerequisite[0], //doesn't include all the other prereqs, pls fix
                    CanBeForcedSecret = true,
                });
            }


            return(data);
        }
コード例 #3
0
        public static bool BelongsOnThisFloor(RoomData data, string dungeonName)
        {
            if (data.floors == null || data.floors.Length == 0)
            {
                return(true);
            }
            bool onThisFloor = false;

            foreach (var floor in data.floors)
            {
                if (floor.ToLower().Equals(dungeonName.ToLower()))
                {
                    onThisFloor = true; break;
                }
            }
            return(onThisFloor);
        }
コード例 #4
0
        public static ProceduralFlowModifierData GetFlowModifier(RoomData roomData)
        {
            ProceduralFlowModifierData flowData = new ProceduralFlowModifierData()
            {
                annotation     = roomData.room.name,
                placementRules = new List <ProceduralFlowModifierData.FlowModifierPlacementType>()
                {
                    ProceduralFlowModifierData.FlowModifierPlacementType.END_OF_CHAIN,
                    ProceduralFlowModifierData.FlowModifierPlacementType.HUB_ADJACENT_NO_LINK
                },
                exactRoom         = roomData.room,
                selectionWeight   = roomData.weight,
                chanceToSpawn     = 1,
                prerequisites     = roomData.room.prerequisites.ToArray(),
                CanBeForcedSecret = true,
            };

            return(flowData);
        }
コード例 #5
0
        public static void Register(RoomData roomData)
        {
            var room  = roomData.room;
            var wRoom = new WeightedRoom()
            {
                room = room,
                additionalPrerequisites = new DungeonPrerequisite[0],
                weight = roomData.weight
            };

            AssetBundle shared_auto_001 = ResourceManager.LoadAssetBundle("shared_auto_001");

            GameObject iconPrefab = RoomFactory.MinimapIconPrefab ?? (shared_auto_001.LoadAsset("assets/data/prefabs/room icons/minimap_boss_icon.prefab") as GameObject);

            //bool success = false;
            switch (room.category)
            {
            case RoomCategory.SPECIAL:
                switch (room.subCategorySpecial)
                {
                case RoomSpecialSubCategory.STANDARD_SHOP:          //shops
                    StaticReferences.RoomTables["shop"].includedRooms.Add(wRoom);
                    // Tools.Print($"Registering {roomData.room.name} with weight {wRoom.weight} as {roomData.category}:{roomData.specialSubCategory}");
                    //   success = true;
                    break;

                case RoomSpecialSubCategory.WEIRD_SHOP:            //subshops
                    StaticReferences.subShopTable.InjectionData.AddRange(GetFlowModifier(roomData));
                    /// Tools.Print($"Registering {roomData.room.name} with weight {wRoom.weight} as {roomData.category}:{roomData.specialSubCategory}");
                    // success = true;
                    break;

                default:
                    StaticReferences.RoomTables["special"].includedRooms.Add(wRoom);
                    //Tools.Print($"Registering {roomData.room.name} with weight {wRoom.weight} as {roomData.category}:{roomData.specialSubCategory}");
                    // success = true;
                    break;
                }
                break;

            case RoomCategory.SECRET:
                StaticReferences.RoomTables["secret"].includedRooms.Add(wRoom);
                //success = true;
                break;

            //===========================PUTS YOUR BOSS ROOMS IN THE POOLS DEFINED IN STATICREFERENCES ====================
            case RoomCategory.BOSS:
                switch (room.subCategoryBoss)
                {
                case RoomBossSubCategory.FLOOR_BOSS:
                    foreach (var p in room.prerequisites)
                    {
                        if (p.requiredTileset == GlobalDungeonData.ValidTilesets.CASTLEGEON)
                        {
                            StaticReferences.RoomTables["boss1"].includedRooms.Add(wRoom);
                            StaticReferences.RoomTables["boss2"].includedRooms.Add(wRoom);
                            StaticReferences.RoomTables["boss3"].includedRooms.Add(wRoom);
                        }
                        else if (p.requiredTileset == GlobalDungeonData.ValidTilesets.SEWERGEON)
                        {
                            StaticReferences.RoomTables["blobby"].includedRooms.Add(wRoom);
                        }
                        else if (p.requiredTileset == GlobalDungeonData.ValidTilesets.GUNGEON)
                        {
                            StaticReferences.RoomTables["gorgun"].includedRooms.Add(wRoom);
                            StaticReferences.RoomTables["beholster"].includedRooms.Add(wRoom);
                            StaticReferences.RoomTables["ammoconda"].includedRooms.Add(wRoom);
                        }
                        else if (p.requiredTileset == GlobalDungeonData.ValidTilesets.CATHEDRALGEON)
                        {
                            StaticReferences.RoomTables["oldking"].includedRooms.Add(wRoom);
                        }
                        else if (p.requiredTileset == GlobalDungeonData.ValidTilesets.MINEGEON)
                        {
                            StaticReferences.RoomTables["tank"].includedRooms.Add(wRoom);
                            StaticReferences.RoomTables["cannonballrog"].includedRooms.Add(wRoom);
                            StaticReferences.RoomTables["flayer"].includedRooms.Add(wRoom);
                        }
                        else if (p.requiredTileset == GlobalDungeonData.ValidTilesets.CATHEDRALGEON)
                        {
                            StaticReferences.RoomTables["pillars"].includedRooms.Add(wRoom);
                            StaticReferences.RoomTables["priest"].includedRooms.Add(wRoom);
                            StaticReferences.RoomTables["monger"].includedRooms.Add(wRoom);
                        }
                        else
                        {
                            //StaticReferences.RoomTables["doorlord"].includedRooms.Add(wRoom);
                        }
                    }
                    room.associatedMinimapIcon = iconPrefab;

                    break;

                case RoomBossSubCategory.MINI_BOSS:
                    StaticReferences.RoomTables["blockner"].includedRooms.Add(wRoom);
                    StaticReferences.RoomTables["shadeagunim"].includedRooms.Add(wRoom);
                    //StaticReferences.RoomTables["fuselier"].includedRooms.Add(wRoom);
                    room.associatedMinimapIcon = iconPrefab;
                    break;

                default:
                    //StaticReferences.RoomTables["doorlord"].includedRooms.Add(wRoom);
                    // room.associatedMinimapIcon = iconPrefab;
                    break;
                }
                break;

            //===============================================
            default:
                foreach (var p in room.prerequisites)
                {
                    if (p.requireTileset)
                    {
                        StaticReferences.GetRoomTable(p.requiredTileset).includedRooms.Add(wRoom);
                    }
                }
                //   success = true;
                break;
            }

            RemoveTilesetPrereqs(room);
        }
コード例 #6
0
        public static void RegisterForShrine(RoomData roomData)
        {
            var room  = roomData.room;
            var wRoom = new WeightedRoom()
            {
                room = room,
                additionalPrerequisites = new DungeonPrerequisite[0],
                weight = roomData.weight
            };
            //AssetBundle shared_auto_001 = ResourceManager.LoadAssetBundle("shared_auto_001");

            GameObject iconPrefab = (GameObject)BraveResources.Load("Global Prefabs/Minimap_Shrine_Icon", ".prefab");

            room.associatedMinimapIcon = iconPrefab;
            // bool success = false;
            switch (room.category)
            {
            case RoomCategory.SPECIAL:
                switch (room.subCategorySpecial)
                {
                case RoomSpecialSubCategory.STANDARD_SHOP:          //shops
                    StaticReferences.RoomTables["shop"].includedRooms.Add(wRoom);
                    // Tools.Print($"Registering {roomData.room.name} with weight {wRoom.weight} as {roomData.category}:{roomData.specialSubCategory}");
                    //    success = true;
                    break;

                case RoomSpecialSubCategory.WEIRD_SHOP:            //subshops
                    StaticReferences.subShopTable.InjectionData.AddRange(GetFlowModifier(roomData));
                    /// Tools.Print($"Registering {roomData.room.name} with weight {wRoom.weight} as {roomData.category}:{roomData.specialSubCategory}");
                    //    success = true;
                    break;

                default:
                    StaticReferences.RoomTables["special"].includedRooms.Add(wRoom);
                    //Tools.Print($"Registering {roomData.room.name} with weight {wRoom.weight} as {roomData.category}:{roomData.specialSubCategory}");
                    //  success = true;
                    break;
                }
                break;

            case RoomCategory.SECRET:
                StaticReferences.RoomTables["secret"].includedRooms.Add(wRoom);
                //success = true;
                break;

            case RoomCategory.BOSS:
                // TODO
                break;

            default:
                foreach (var p in room.prerequisites)
                {
                    if (p.requireTileset)
                    {
                        StaticReferences.GetRoomTable(p.requiredTileset).includedRooms.Add(wRoom);
                    }
                }
                // success = true;
                break;
            }
            //success = true;
            RemoveTilesetPrereqs(room);
        }