public static void reloadLevelParamsData() { levelData.Clear(); doorsData.Clear(); for (int i = 0; i < LEVELS_COUNT; i++) { levelData.Add(LevelData.readFromFile(Globals.romdata, i)); } for (int i = 0; i < DOORS_COUNT; i++) { doorsData.Add(DoorData.readFromFile(Globals.romdata, i)); } }
public static DoorData readFromFile(byte[] romdata, int no) { DoorData res = new DoorData(); res.objId = romdata[DoorRecBaseOffset + 72 + no]; res.backId = romdata[DoorRecBaseOffset + 96 + no]; res.palId = romdata[DoorRecBaseOffset + 120 + no]; res.palId2 = romdata[DoorRecBaseOffset + 144 + no]; res.palBlink = romdata[DoorRecBaseOffset + 168 + no]; res.startLoc = romdata[DoorRecBaseOffset + 0 + no]; res.scrX = romdata[DoorRecBaseOffset + 48 + no]; res.scrY = romdata[DoorRecBaseOffset + 24 + no]; res.playerX = romdata[DoorRecBaseOffset + 193 + no]; res.playerY = romdata[DoorRecBaseOffset + 217 + no]; return res; }
bool saveToFile() { var romFname = OpenFile.FileName; int no = cbLevel.SelectedIndex; if (no == -1) { return(false); } bool isLevel = no < GlobalsCad.LEVELS_COUNT; if (isLevel) { LevelData ld = GlobalsCad.levelData[no]; ld.backId = indexToId89(cbBackGfx.SelectedIndex); ld.objId = indexToId89(cbObjGfx.SelectedIndex); ld.palId = cbPalleteNo.SelectedIndex; ld.palId2 = cbPallete2No.SelectedIndex; ld.palBlink = cbPalBlinkByte.SelectedIndex; ld.startLoc = cbStartLoc.SelectedIndex; ld.musicNo = cbMusicNo.SelectedIndex; ld.bigBlockId = cbBigBlocks.SelectedIndex; ld.setWidth(cbLayoutWidth.SelectedIndex + 1); ld.setHeight(cbLayoutHeight.SelectedIndex + 1); ld.saveToFile(Globals.romdata, no); } else { no -= GlobalsCad.LEVELS_COUNT; DoorData ld = GlobalsCad.doorsData[no]; ld.backId = indexToId89(cbBackGfx.SelectedIndex); ld.objId = indexToId89(cbObjGfx.SelectedIndex); ld.palId = cbPalleteNo.SelectedIndex; ld.palId2 = cbPallete2No.SelectedIndex; ld.palBlink = cbPalBlinkByte.SelectedIndex; ld.startLoc = cbStartLoc.SelectedIndex; ld.scrX = cbScrX.SelectedIndex; ld.scrY = cbScrY.SelectedIndex; ld.playerX = cbPlayerX.SelectedIndex; ld.playerY = cbPlayerY.SelectedIndex; ld.saveToFile(Globals.romdata, no); } dirty = !Globals.flushToFile(); return(!dirty); }
static public DoorData readFromFile(byte[] romdata, int no) { DoorData res = new DoorData(); res.objId = romdata[DoorRecBaseOffset + 72 + no]; res.backId = romdata[DoorRecBaseOffset + 96 + no]; res.palId = romdata[DoorRecBaseOffset + 120 + no]; res.palId2 = romdata[DoorRecBaseOffset + 144 + no]; res.palBlink = romdata[DoorRecBaseOffset + 168 + no]; res.startLoc = romdata[DoorRecBaseOffset + 0 + no]; res.scrX = romdata[DoorRecBaseOffset + 48 + no]; res.scrY = romdata[DoorRecBaseOffset + 24 + no]; res.playerX = romdata[DoorRecBaseOffset + 193 + no]; res.playerY = romdata[DoorRecBaseOffset + 217 + no]; return(res); }
public static void reloadLevelParamsData() { LevelData.LoadOffsetsFromConfig(); DoorData.LoadOffsetsFromConfig(); levelData.Clear(); doorsData.Clear(); for (int i = 0; i < levelsCount; i++) { levelData.Add(LevelData.readFromFile(Globals.romdata, i)); } for (int i = 0; i < doorsCount; i++) { doorsData.Add(DoorData.readFromFile(Globals.romdata, i)); } }
private void cbLevel_SelectedIndexChanged(object sender, EventArgs e) { //TODO: refactor this block to separate method if (dirty) { DialogResult dr = MessageBox.Show("Level was changed. Do you want to save current level?", "Save", MessageBoxButtons.YesNoCancel); if (dr == DialogResult.Cancel) { returnCbLevelIndex(); return; } else if (dr == DialogResult.Yes) { if (!saveToFile()) { returnCbLevelIndex(); return; } } else { dirty = false; } } int no = cbLevel.SelectedIndex; curActiveLevel = no; if (no == -1) { return; } bool isLevel = no < GlobalsCad.LEVELS_COUNT; if (isLevel) { LevelData ld = GlobalsCad.levelData[no]; cbBackGfx.SelectedIndex = id89toIndex(ld.backId); cbObjGfx.SelectedIndex = id89toIndex(ld.objId); cbPalleteNo.SelectedIndex = ld.palId; cbPallete2No.SelectedIndex = ld.palId2; cbPalBlinkByte.SelectedIndex = ld.palBlink; cbStartLoc.SelectedIndex = ld.startLoc; cbLayoutWidth.SelectedIndex = ld.getWidth() - 1; cbLayoutHeight.SelectedIndex = ld.getHeight() - 1; cbLayoutAddr.Text = String.Format("{0:X}", ld.layoutAddr); cbScrollAddr.Text = String.Format("{0:X}", ld.scrollAddr); cbDirsAddr.Text = String.Format("{0:X}", ld.dirsAddr); lbLayoutAddress.Text = String.Format("{0:X}", ld.getActualLayoutAddr()); lbScrollAddr.Text = String.Format("{0:X}", ld.getActualScrollAddr()); lbDirsAddr.Text = String.Format("{0:X}", ld.getActualDirsAddr()); cbBigBlocks.SelectedIndex = ld.bigBlockId; cbMusicNo.SelectedIndex = ld.musicNo; cbScrX.Enabled = false; cbScrY.Enabled = false; cbPlayerX.Enabled = false; cbPlayerY.Enabled = false; cbLayoutWidth.Enabled = true; cbLayoutHeight.Enabled = true; //cbScrollAddr.Enabled = true; //cbLayoutAddr.Enabled = true; //cbDirsAddr.Enabled = true; cbBigBlocks.Enabled = true; cbMusicNo.Enabled = true; } else { no -= GlobalsCad.LEVELS_COUNT; DoorData ld = GlobalsCad.doorsData[no]; cbBackGfx.SelectedIndex = id89toIndex(ld.backId); cbObjGfx.SelectedIndex = id89toIndex(ld.objId); cbPalleteNo.SelectedIndex = ld.palId; cbPallete2No.SelectedIndex = ld.palId2; cbPalBlinkByte.SelectedIndex = ld.palBlink; cbStartLoc.SelectedIndex = ld.startLoc; cbScrX.SelectedIndex = ld.scrX; cbScrY.SelectedIndex = ld.scrY; cbPlayerX.SelectedIndex = ld.playerX; cbPlayerY.SelectedIndex = ld.playerY; cbScrX.Enabled = true; cbScrY.Enabled = true; cbPlayerX.Enabled = true; cbPlayerY.Enabled = true; cbLayoutWidth.Enabled = false; cbLayoutHeight.Enabled = false; //cbScrollAddr.Enabled = false; //cbLayoutAddr.Enabled = false; //cbDirsAddr.Enabled = false; cbBigBlocks.Enabled = false; cbMusicNo.Enabled = false; } lbl1.Enabled = isLevel; lbl2.Enabled = isLevel; lbl3.Enabled = isLevel; lbl4.Enabled = isLevel; lbl5.Enabled = isLevel; lbl6.Enabled = isLevel; lbl7.Enabled = isLevel; lbd1.Enabled = !isLevel; lbd2.Enabled = !isLevel; lbd3.Enabled = !isLevel; lbd4.Enabled = !isLevel; dirty = false; }
private void loadLevelData() { LevelData.LoadOffsetsFromConfig(); DoorData.LoadOffsetsFromConfig(); GlobalsCad.reloadLevelParamsData(); }