public SinglePlayerForm()
 {
     InitializeComponent();
     LevelDataHax   = new LevelDataHax(TCPGecko.Instance(), MemoryUtils.Offset);
     EnvironmentHax = new EnvironmentHax(TCPGecko.Instance(), MemoryUtils.Offset);
     UpgradesHax    = new UpgradesHax(TCPGecko.Instance(), MemoryUtils.Offset);
 }
        private void resetAllButton_Click(object sender, EventArgs e)
        {
            var result = MessageBox.Show(Strings.SINGLE_PLAYER_RESET_TITLE, Strings.SINGLE_PLAYER_RESET_TEXT,
                                         MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2);

            if (result == DialogResult.Yes)
            {
                // Reset environment flags
                clearEnvironmentButton_Click(null, null);

                // Reset levels
                LevelDataHax.ClearLevelData();
                ReloadListView();

                // reset power eggs
                powerEggsBox.Value = 0;

                // Reset upgrades
                heroShotBox.SelectedIndex  = 0;
                inkTankBox.SelectedIndex   = 0;
                splatBombBox.SelectedIndex = 0;
                burstBombBox.SelectedIndex = 0;
                seekerBox.SelectedIndex    = 0;

                // Apply levels, upgrades, and power eggs
                OKButton_Click(null, null);

                // Reset single player flags in the Inkopolis progress bits
                ProgressFlags progressFlags = new ProgressFlags(TCPGecko.Instance(), MemoryUtils.Offset);
                progressFlags.HeroSuit           = false; // octo valley intro
                progressFlags.GreatZapfish       = false; // great zapfish returned
                progressFlags.CuttlefishPostGame = false; // credits block available
                progressFlags.Apply();
            }
        }
        private void addButton_Click(object sender, EventArgs e)
        {
            var editLevelDataForm = new EditLevelDataForm(LevelDataHax);

            editLevelDataForm.ShowDialog(this);

            if (editLevelDataForm.LevelData != null)
            {
                LevelDataHax.AddLevelData(editLevelDataForm.LevelData);
                ReloadListView();
            }
        }
        private void OKButton_Click(object sender, EventArgs e)
        {
            LevelDataHax.FillSaveSlots();
            // poke power eggs
            UpgradesHax.SetPowerEggs(Convert.ToUInt32(powerEggsBox.Value));
            // poke upgrades
            UpgradesHax.SetHeroShot(Convert.ToUInt32(heroShotBox.SelectedIndex));
            UpgradesHax.SetInkTank(Convert.ToUInt32(inkTankBox.SelectedIndex));
            UpgradesHax.SetSplatBomb(Convert.ToUInt32(splatBombBox.SelectedIndex));

            // for these upgrades, 0xFFFFFFFF = locked // uint.MaxValue = 0xFFFFFFFF
            UpgradesHax.SetBurstBomb(burstBombBox.SelectedIndex == 0
                ? uint.MaxValue
                : Convert.ToUInt32(burstBombBox.SelectedIndex - 1));
            UpgradesHax.SetSeeker(seekerBox.SelectedIndex == 0
                ? uint.MaxValue
                : Convert.ToUInt32(seekerBox.SelectedIndex - 1));
        }
        public EditLevelDataForm(LevelDataHax levelDatahHax, LevelData levelData)
            : this(levelDatahHax)
        {
            LevelData = levelData;

            if (LevelData.LevelNumber >= 0x65) // boss stages are 0x65 and up
            {
                levelBox.SelectedIndex = Convert.ToInt32(LevelData.LevelNumber - 0x65);
            }
            else
            {
                levelBox.SelectedIndex = Convert.ToInt32(LevelData.LevelNumber + 0x4);
            }

            // disable the level box
            levelBox.Enabled = false;

            // 0x1 is skipped in clearState
            clearStateBox.SelectedIndex = Convert.ToInt32(LevelData.ClearState - (LevelData.ClearState != 0 ? 1 : 0));
            scrollBox.Checked           = LevelData.Scroll;
        }
        private void SinglePlayerForm_Load(object sender, EventArgs e)
        {
            LevelDataHax.LoadLevelData();
            // load the list view
            ReloadListView();

            // load power eggs
            powerEggsBox.Value = UpgradesHax.GetPowerEggs();

            // load upgrades
            heroShotBox.SelectedIndex  = Convert.ToInt32(UpgradesHax.GetHeroShot());
            inkTankBox.SelectedIndex   = Convert.ToInt32(UpgradesHax.GetInkTank());
            splatBombBox.SelectedIndex = Convert.ToInt32(UpgradesHax.GetSplatBomb());

            // for these upgrades, 0xFFFFFFFF = locked
            var burstBomb = UpgradesHax.GetBurstBomb();

            burstBombBox.SelectedIndex = burstBomb == uint.MaxValue ? 0 : Convert.ToInt32(burstBomb + 1);

            var seeker = UpgradesHax.GetSeeker();

            seekerBox.SelectedIndex = seeker == uint.MaxValue ? 0 : Convert.ToInt32(seeker + 1);
        }
 public EditLevelDataForm(LevelDataHax levelDatahHax)
 {
     InitializeComponent();
     _levelDatahHax = levelDatahHax;
 }
 private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
 {
     LevelDataHax.RemoveLevelData(levelDataView.SelectedIndices[0]);
     ReloadListView();
 }
        private void editToolStripMenuItem_Click(object sender, EventArgs e)
        {
            new EditLevelDataForm(LevelDataHax, LevelDataHax.GetLevelData(levelDataView.SelectedIndices[0])).ShowDialog(this);

            ReloadListView();
        }