Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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();
            }
        }