private Dictionary <MapDataFile, BaseTile[, ]> ParseMapData() { Dictionary <MapDataFile, BaseTile[, ]> dataDict = new Dictionary <MapDataFile, BaseTile[, ]>(); foreach (MapDataFile mapDataFile in MapDataFiles) { BaseTile[,] mapData = new BaseTile[MapDataFile.MapWidth, MapDataFile.MapHeight]; mapDataFile.Stream.Seek(MapDataFile.MapDataOffset, SeekOrigin.Begin); for (int y = 0; y < MapDataFile.MapHeight; y++) { for (int x = 0; x < MapDataFile.MapWidth; x++) { int offset = (int)mapDataFile.Stream.Position; MapDataFile.TileTypes typeId = (MapDataFile.TileTypes)mapDataFile.Stream.ReadByte(); if (MapDataFile.TileTypeClassMapping.ContainsKey(typeId)) { mapData[x, y] = (BaseTile)Activator.CreateInstance(MapDataFile.TileTypeClassMapping[typeId], new object[] { this, mapDataFile, offset, new Point(x, y), (PropertyChangedEventHandler)GameDataPropertyChanged }); } else { mapData[x, y] = new BaseTile(this, mapDataFile, offset, new Point(x, y), GameDataPropertyChanged); } } } dataDict.Add(mapDataFile, mapData); } return(dataDict); }
public BaseTile(BaseTile originalTile, MapDataFile.TileTypes newTileType) { GameDataManager = originalTile.GameDataManager; MapDataFile = originalTile.MapDataFile; Offset = originalTile.Offset; Coordinates = originalTile.Coordinates; PropertyChanged = originalTile.PropertyChanged; Data = originalTile.Data; Data[0] = (byte)(tileType = newTileType); Load(); }
public BaseTile(GameDataManager gameDataManager, MapDataFile mapDataFile, int offset, Point coordinates, PropertyChangedEventHandler propertyChanged = null) { GameDataManager = gameDataManager; MapDataFile = mapDataFile; Offset = offset; Coordinates = coordinates; PropertyChanged = propertyChanged; MapDataFile.Stream.Seek(Offset, SeekOrigin.Begin); Data = new byte[16]; MapDataFile.Stream.Read(Data, 0, Data.Length); tileType = (MapDataFile.TileTypes)Data[0]; Load(); }
public BaseTile(GameDataManager gameDataManager, MapDataFile mapDataFile, int offset, Point coordinates, PropertyChangedEventHandler propertyChanged = null) { this.GameDataManager = gameDataManager; this.MapDataFile = mapDataFile; this.Offset = offset; this.Coordinates = coordinates; this.PropertyChanged = propertyChanged; this.MapDataFile.Stream.Seek(this.Offset, SeekOrigin.Begin); this.Data = new byte[16]; this.MapDataFile.Stream.Read(this.Data, 0, this.Data.Length); this.tileType = (MapDataFile.TileTypes) this.Data[0]; Load(); }
public FloorTile(BaseTile originalTile, MapDataFile.TileTypes newTileType) : base(originalTile, newTileType) { }
public void ResetTileType() { TileType = (dynamic)originalValues["TileType"]; }
public TreasureChestTile(BaseTile originalTile, MapDataFile.TileTypes newTileType) : base(originalTile, newTileType) { }
public StairsTile(BaseTile originalTile, MapDataFile.TileTypes newTileType) : base(originalTile, newTileType) { }
public void GameDataPropertyChanged(object sender, PropertyChangedEventArgs e) { if (sender is BaseParser || sender is EtrianString) { if (sender is BaseParser) { changedParsedData = ParsedData.Where(x => x.HasChanged).ToList(); } changedMessageFiles = MessageFiles.Where(x => x.Tables.Any(y => (y is MessageTable) && (y as MessageTable).HasChanges)).ToList(); } if (sender is BaseTile) { changedMapTileData.Clear(); foreach (KeyValuePair <MapDataFile, BaseTile[, ]> pair in MapTileData) { for (int y = 0; y < MapDataFile.MapHeight; y++) { for (int x = 0; x < MapDataFile.MapWidth; x++) { if (pair.Value[x, y].HasChanged) { MapDataFile.TileTypes typeId = pair.Value[x, y].TileType; if (MapDataFile.TileTypeClassMapping.ContainsKey(typeId)) { pair.Value[x, y] = (BaseTile)Activator.CreateInstance(MapDataFile.TileTypeClassMapping[typeId], new object[] { pair.Value[x, y], typeId }); } else { pair.Value[x, y] = new BaseTile(pair.Value[x, y], typeId); } changedMapTileData.Add(pair.Value[x, y]); } } } } } if (sender is EncounterParser) { GenerateOtherDictionaries(); } if (sender.GetProperty(e.PropertyName) is string) { if (sender is BaseItemParser) { BaseItemParser parser = (sender as BaseItemParser); ItemNames[parser.ItemNumber] = parser.Name; ItemDescriptions[parser.ItemNumber] = parser.Description; SetMessageString(ItemNameFile, 0, parser.ItemNumber - 1, parser.Name); SetMessageString(ItemInfoFile, 0, parser.ItemNumber - 1, parser.Description); } if (sender is EnemyDataParser) { EnemyDataParser parser = (sender as EnemyDataParser); EnemyNames[parser.EnemyNumber] = parser.Name; EnemyDescriptions[parser.EnemyNumber] = parser.Description; SetMessageString(EnemyNameFile, 0, parser.EnemyNumber - 1, parser.Name); SetMessageString(EnemyInfoFile, 0, parser.EnemyNumber - 1, parser.Description); GenerateOtherDictionaries(); } if (sender is PlayerSkillReqParser) { PlayerSkillReqParser parser = (sender as PlayerSkillReqParser); PlayerSkillNames[parser.SkillNumber] = parser.Name; PlayerSkillShortDescriptions[parser.SkillNumber] = parser.ShortDescription; PlayerSkillDescriptions[parser.SkillNumber] = parser.Description; SetMessageString(PlayerSkillNameFile, 0, parser.SkillNumber - 1, parser.Name); SetMessageString(CampSkillExeInfoFile, 0, parser.SkillNumber - 1, parser.ShortDescription); SetMessageString(CampSkillInfoFile, 0, parser.SkillNumber - 1, parser.Description); } } GameDataPropertyChangedEvent?.Invoke(sender, e); }
public void ResetTileType() { this.TileType = (dynamic)this.originalValues["TileType"]; }
public TransporterTile(BaseTile originalTile, MapDataFile.TileTypes newTileType) : base(originalTile, newTileType) { }