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}"); }
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); }
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); }
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); }
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); }
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); }