private void CreateNewAnimation() { if (CalculateUsedFrames() >= 255) { // Can't create new animation if there isn't enough space ////BeginMiscUIUpdate(); ////cboAnimation.SelectedIndex = cboAnimation.Items.Count - 2; ////EndMiscUIUpdate(); // do nothing } else { int newIndex = SelectedLevelData.Animations.Count; // Update data ChrAnimationFrame newFrame = new ChrAnimationFrame(); newFrame.FrameTime = 0x10; ChrAnimationTable newAnimation = new ChrAnimationTable(); newAnimation.Frames.Add(newFrame); SelectedLevelData.Animations.Add(newAnimation); // Update UI BeginMiscUIUpdate(); cboAnimation.Items.Insert(newIndex, GetAnimationListItemName(newIndex, newAnimation)); cboAnimation.SelectedIndex = newIndex; EndMiscUIUpdate(); UpdateUI(updateMode.Animation); } }
private static string GetAnimationListItemName(int i, ChrAnimationTable animation) { bool isDefaultAnimation = i == 0; string name = i.ToString() + " - " + animation.Name; if (isDefaultAnimation && string.IsNullOrEmpty(animation.Name)) { name += "(default)"; } return(name); }
private ChrAnimationLevelData CreateDefaultAnimationsForLevel(LevelIndex level) { var defaultData = new ChrAnimationLevelData(level); var defaultTable = new ChrAnimationTable(); var defaultFrame = new ChrAnimationFrame(); defaultTable.Frames.Add(defaultFrame); defaultData.Animations.Add(defaultTable); //if (level == LevelIndex.None) { // TitleChrAnimationTable = defaultData; //} else { // Levels[level].ChrAnimation = defaultData; //} return(defaultData); }
private void cboAnimation_SelectedIndexChanged(object sender, EventArgs e) { selectedAnimationIndex = cboAnimation.SelectedIndex; if (!IsUpdatingUI && cboAnimation.SelectedIndex >= 0) { if (cboAnimation.SelectedItem == NewAnimationComboboxItem) { if (CalculateUsedFrames() >= 255) { // Can't create new animation if there isn't enough space BeginMiscUIUpdate(); cboAnimation.SelectedIndex = cboAnimation.Items.Count - 2; EndMiscUIUpdate(); } else { int newIndex = SelectedLevelData.Animations.Count; // Update data ChrAnimationFrame newFrame = new ChrAnimationFrame(); newFrame.FrameTime = 0x10; ChrAnimationTable newAnimation = new ChrAnimationTable(); newAnimation.Frames.Add(newFrame); SelectedLevelData.Animations.Add(newAnimation); // Update UI BeginMiscUIUpdate(); cboAnimation.Items.Insert(newIndex, GetAnimationListItemName(newIndex, newAnimation)); cboAnimation.SelectedIndex = newIndex; EndMiscUIUpdate(); UpdateUI(updateMode.Animation); } } UpdateUI(updateMode.Animation); } }
private PatternTable LoadBgPatternTable_ChrAnimation(bool linear, ChrAnimationTable anim) { //PatternTable pt = new PatternTable(linear); var frame = anim.Frames[0]; var bank0Offset = Level.Rom.Format.ChrRomOffset + Mmc3.ChrBankSize * frame.Bank0; var bank1Offset = Level.Rom.Format.ChrRomOffset + Mmc3.ChrBankSize * frame.Bank1; var bank2Offset = Level.Rom.Format.ChrRomOffset + Mmc3.ChrBankSize * frame.Bank2; var bank3Offset = Level.Rom.Format.ChrRomOffset + Mmc3.ChrBankSize * frame.Bank3; PatternTable pt = new PatternTable(linear); try { pt.BeginWrite(); pt.LoadTiles(Level.Rom.data, bank0Offset, 0x00, 0x40); pt.LoadTiles(Level.Rom.data, bank1Offset, 0x40, 0x40); pt.LoadTiles(Level.Rom.data, bank2Offset, 0x80, 0x40); pt.LoadTiles(Level.Rom.data, bank3Offset, 0xC0, 0x40); return(pt); } finally { pt.EndWrite(); } }