public GraphData() { RawEntranceCollection rawEntranceCollection = new RawEntranceCollection(); RawExitCollection rawExitCollection = new RawExitCollection(); RawItemLocationCollection rawItemLocationCollection = new RawItemLocationCollection(); RawItemEdgeCollection rawItemEdgeCollection = new RawItemEdgeCollection(); RawRoomEdgeCollection rawRoomEdgeCollection = new RawRoomEdgeCollection(); FillNodesAndEdges(rawEntranceCollection, rawExitCollection, rawItemLocationCollection, rawItemEdgeCollection, rawRoomEdgeCollection); }
void UpdateFromOptions(OptionFlags optionFlags, RawRoomEdgeCollection rawRoomEdgeCollection) { if (optionFlags.RandomizeEnemies && (optionFlags.RandomizeEnemiesType == RandomizeEnemiesType.Chaos || optionFlags.RandomizeEnemiesType == RandomizeEnemiesType.Insanity)) // TODO: what else? { foreach (var r in rawRoomEdgeCollection.RawRoomEdges.Where(x => x.requirements.Contains("Bow"))) { r.requirements = r.requirements.Replace(",Bow,", ""); r.requirements = r.requirements.Replace("Bow,", ""); r.requirements = r.requirements.Replace(",Bow", ""); r.requirements = r.requirements.Replace("Bow", ""); } } }
public GraphData(RomData romData, OptionFlags optionFlags, RomEntranceCollection romEntrances, RomExitCollection romExits, RomChestCollection romChests) { this.romData = romData; this.romEntrances = romEntrances; this.romExits = romExits; this.romChests = romChests; RawEntranceCollection rawEntranceCollection = new RawEntranceCollection(); RawExitCollection rawExitCollection = new RawExitCollection(); RawItemLocationCollection rawItemLocationCollection = new RawItemLocationCollection(); RawItemEdgeCollection rawItemEdgeCollection = new RawItemEdgeCollection(); RawRoomEdgeCollection rawRoomEdgeCollection = new RawRoomEdgeCollection(); romChests.LoadChests(rawItemLocationCollection); UpdateFromRom(rawEntranceCollection, rawExitCollection, rawItemLocationCollection, rawItemEdgeCollection); UpdateFromOptions(optionFlags, rawRoomEdgeCollection); FillNodesAndEdges(rawEntranceCollection, rawExitCollection, rawItemLocationCollection, rawItemEdgeCollection, rawRoomEdgeCollection); _rawItemLocationCollection = rawItemLocationCollection; }
void FillNodesAndEdges(RawEntranceCollection rawEntranceCollection, RawExitCollection rawExitCollection, RawItemLocationCollection rawItemLocationCollection, RawItemEdgeCollection rawItemEdges, RawRoomEdgeCollection rawRoomEdges) { _overworldNodes = new Data.OverworldNodes(); _roomNodes = new Data.RoomNodes(); _bossNodes = new Data.BossNodes(); _itemNodes = new Data.ItemLocations(rawItemLocationCollection); FillAllNodes(); _areaEdges = new Data.AreaEdges(_overworldNodes); _roomEdges = new Data.RoomEdges(_roomNodes, _overworldNodes, _bossNodes, rawRoomEdges); _itemEdges = new ItemEdges(this, rawItemEdges); _entranceEdges = new EntranceEdges(_overworldNodes, _roomNodes, rawEntranceCollection, rawItemLocationCollection); _exitEdges = new ExitEdges(_overworldNodes, _roomNodes, rawExitCollection); FillAllEdges(); }