Esempio n. 1
0
        private int CompileLevels()
        {

            Level l = new Level();
            Rom.ProtectionMode = RomWriteProtection.LevelData;
            foreach (LevelInfo li in ProjectController.LevelManager.Levels)
            {
                l.Load(li);
                levelAddressTable.Add(levelIndexTable[l.Guid], levelDataPointer);
                levelDataPointer = WriteLevel(l, levelDataPointer, li.Name);
                if (levelDataPointer >= 0xFC000)
                    return -1;
            }

            int bank, address, lastLevelPointer = levelDataPointer;

            Rom.ProtectionMode = RomWriteProtection.LevelPointers;
            foreach (var index in levelAddressTable.Keys)
            {
                levelDataPointer = levelAddressTable[index];
                bank = (byte)((levelDataPointer - 0x10) / 0x2000);
                address = (levelDataPointer - 0x10 - (bank * 0x2000) + 0xA000);
                Rom[0x24010 + (index * 4)] = (byte)bank;
                Rom[0x24011 + (index * 4)] = (byte)(address & 0x00FF);
                Rom[0x24012 + (index * 4)] = (byte)((address & 0xFF00) >> 8);
                Rom[0x24013 + (index * 4)] = (byte)levelTypeTable[index];
            }
            return lastLevelPointer;
        }
Esempio n. 2
0
        private int CompileLevels()
        {
            Level l = new Level();

            Rom.ProtectionMode = RomWriteProtection.LevelData;
            foreach (LevelInfo li in ProjectController.LevelManager.Levels)
            {
                l.Load(li);
                levelAddressTable.Add(levelIndexTable[l.Guid], levelDataPointer);
                levelDataPointer = WriteLevel(l, levelDataPointer, li.Name);
                if (levelDataPointer >= 0xFC000)
                {
                    return(-1);
                }
            }

            int bank, address, lastLevelPointer = levelDataPointer;

            Rom.ProtectionMode = RomWriteProtection.LevelPointers;
            foreach (var index in levelAddressTable.Keys)
            {
                levelDataPointer           = levelAddressTable[index];
                bank                       = (byte)((levelDataPointer - 0x10) / 0x2000);
                address                    = (levelDataPointer - 0x10 - (bank * 0x2000) + 0xA000);
                Rom[0x24010 + (index * 4)] = (byte)bank;
                Rom[0x24011 + (index * 4)] = (byte)(address & 0x00FF);
                Rom[0x24012 + (index * 4)] = (byte)((address & 0xFF00) >> 8);
                Rom[0x24013 + (index * 4)] = (byte)levelTypeTable[index];
            }
            return(lastLevelPointer);
        }
Esempio n. 3
0
        private void button1_Click(object sender, EventArgs e)
        {
            StringBuilder output = new System.Text.StringBuilder();
            Dictionary<BlockProperty, List<string>> powerupProperty = new Dictionary<BlockProperty, List<string>>();
            powerupProperty[BlockProperty.FireFlower] = new List<string>();
            powerupProperty[BlockProperty.SuperLeaf] = new List<string>();
            powerupProperty[BlockProperty.FrogSuit] = new List<string>();
            powerupProperty[BlockProperty.KoopaSuit] = new List<string>();
            powerupProperty[BlockProperty.SledgeSuit] = new List<string>();
            powerupProperty[BlockProperty.IceFlower] = new List<string>();
            powerupProperty[BlockProperty.FireFoxSuit] = new List<string>();
            powerupProperty[BlockProperty.BooSuit] = new List<string>();
            powerupProperty[BlockProperty.NinjaSuit] = new List<string>();
            foreach (LevelInfo info in ProjectController.LevelManager.Levels)
            {
                Level level = new Level();
                level.Load(info);
                BlockDefinition definition = ProjectController.BlockManager.GetDefiniton(level.Type);

                for (int x = 0; x < level.Width; x++)
                {
                    for (int y = 0; y < level.Height; y++)
                    {
                        BlockProperty bp = definition[level.LevelData[x, y]].BlockProperty;
                        if (powerupProperty.ContainsKey(bp))
                        {
                            if (!powerupProperty[bp].Contains(info.Name))
                            {
                                powerupProperty[bp].Add(info.Name);
                            }
                        }

                    }
                }
            }

            foreach (BlockProperty key in powerupProperty.Keys)
            {
                output.Append(key.ToString() + "(" + powerupProperty[key].Count + "): ");
                foreach (string s in powerupProperty[key])
                {
                    output.Append(s + ", ");
                }
                output.Append("\r\n\r\n\r\n");
            }

            Output.Text = output.ToString();
        }
Esempio n. 4
0
        private void button2_Click(object sender, EventArgs e)
        {
            StringBuilder builder = new StringBuilder();
            foreach (LevelInfo info in ProjectController.LevelManager.Levels)
            {
                Level l = new Level();
                l.Load(info);
                if (l.SpriteData.Contains(CurrentSprite))
                {
                    builder.AppendLine(info.Name);
                }
            }

            MessageBox.Show(builder.ToString());
        }
Esempio n. 5
0
        public static void ImportLevel()
        {
            OpenFileDialog OFD = new OpenFileDialog();
            OFD.DefaultExt = "lvl";
            DialogResult result = OFD.ShowDialog();
            OFD.Dispose();

            if (result == DialogResult.OK)
            {
                Level level = new Level();
                level.Load(OFD.FileName);
                LevelInfo li = new LevelInfo();
                li.LevelGuid = level.Guid;
                li.WorldGuid = ProjectController.WorldManager.Worlds[0].WorldGuid;
                li.Name = "Imported Level";
                li.LevelType = level.Type;
                if (!ProjectController.LevelManager.AddLevel(li))
                {
                    MessageBox.Show("Could not import level. Make sure the level does not already exist.");
                }
                else
                {
                    level.Save();
                }
            }
        }
Esempio n. 6
0
        public static void EditLevel(LevelInfo li)
        {
            if (editorTable.ContainsKey(li.LevelGuid))
            {
                editorTable[li.LevelGuid].Activate();
                return;
            }

            Level l = new Level();
            l.Load(li);
            LevelEditor le = new LevelEditor();
            le.MdiParent = MainWindow;
            le.EditLevel(l);
            le.FormClosed += new FormClosedEventHandler(le_FormClosed);
            le.Activated += new EventHandler(le_Activated);
            ActiveEditor = le;
            editorTable.Add(li.LevelGuid, le);
            MainWindow.HideProjectview();
        }