예제 #1
0
        private void WallProperty_TextChanged(object sender, EventArgs e)
        {
            if (isLocked)
            {
                return;
            }
            TextBox textBox = (TextBox)sender;
            WClip   clip    = datafile.WClips[ElementNumber];
            double  value;

            char[] hack;
            if (double.TryParse(textBox.Text, out value))
            {
                switch (textBox.Tag)
                {
                case "1":
                    int totalTimeFix = (int)(value * 65536);
                    clip.PlayTime = new Fix(totalTimeFix);
                    break;

                case "2":
                    hack = textBox.Text.ToCharArray();
                    Array.Clear(clip.Filename, 0, 13);
                    Array.Copy(hack, clip.Filename, Math.Min(13, hack.Length));
                    break;
                }
            }
        }
예제 #2
0
        public void Update(int number, WClip clip, EditorHAMFile hamFile, PIGFile piggyFile, Palette palette)
        {
            isLocked              = true;
            wclipID               = number;
            this.clip             = clip;
            this.hamFile          = hamFile;
            this.palette          = palette;
            TotalTimeTextBox.Text = clip.PlayTime.ToString();
            UIUtil.SafeFillComboBox(OpenSoundComboBox, clip.OpenSound + 1);
            UIUtil.SafeFillComboBox(CloseSoundComboBox, clip.CloseSound + 1);
            FilenameTextBox.Text  = new string(clip.Filename);
            NumFramesTextBox.Text = clip.NumFrames.ToString();

            ExplodesCheckBox.Checked      = clip.Explodes;
            ShootableCheckBox.Checked     = clip.Blastable;
            OnPrimaryTMapCheckBox.Checked = clip.PrimaryTMap;
            HiddenCheckBox.Checked        = clip.SecretDoor;

            if (!transactionManager.TransactionInProgress)
            {
                FrameSpinner.Value = 0;
                UpdateWallFrame(0);
            }
            else
            {
                UpdateWallFrame((int)FrameSpinner.Value);
            }
            isLocked = false;
        }
예제 #3
0
        public void UpdateWClipPanel(int num)
        {
            WClip clip = datafile.WClips[num];

            wclipPanel.Update(num, clip, datafile, datafile.piggyFile, palette);

            txtElemName.Text = "<unnamed>";
        }
예제 #4
0
        private void WallFlag_CheckedChanged(object sender, EventArgs e)
        {
            if (isLocked)
            {
                return;
            }
            CheckBox checkBox = (CheckBox)sender;
            WClip    clip     = datafile.WClips[ElementNumber];
            int      bit      = int.Parse((string)checkBox.Tag);

            if ((clip.Flags & bit) != 0)
            {
                clip.Flags &= (short)~bit;
            }
            else
            {
                clip.Flags |= (short)bit;
            }
        }
예제 #5
0
        //---------------------------------------------------------------------
        // WALL UPDATORS
        //---------------------------------------------------------------------

        private void WallComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (isLocked)
            {
                return;
            }
            ComboBox comboBox = (ComboBox)sender;
            WClip    clip     = datafile.WClips[ElementNumber];

            switch (comboBox.Tag)
            {
            case "1":
                clip.OpenSound = (short)(comboBox.SelectedIndex - 1);
                break;

            case "2":
                clip.CloseSound = (short)(comboBox.SelectedIndex - 1);
                break;
            }
        }
예제 #6
0
        public override bool Apply()
        {
            lastTexture = datafile.Textures[deleteNum];
            lastValue   = datafile.TMapInfo[deleteNum];

            datafile.Textures.RemoveAt(deleteNum);
            datafile.TMapInfo.RemoveAt(deleteNum);

            references.Clear();

            if (datafile.Textures.Count != 0)
            {
                //Change every reference to the deleted element
                for (int i = 0; i < datafile.EClips.Count(); i++)
                {
                    EClip temp = datafile.EClips[i].Clone();
                    //Change references that exactly reference the object to -1
                    if (datafile.EClips[i].ChangingObjectTexture == deleteNum)
                    {
                        datafile.EClips[i].ChangingWallTexture = -1;
                        references.Add(new ChangedHAMReference(temp, datafile.EClips, i));
                    }

                    //Change references to further elements by subtracting one
                    else if (datafile.EClips[i].ChangingObjectTexture > deleteNum)
                    {
                        datafile.EClips[i].ChangingWallTexture--;
                        references.Add(new ChangedHAMReference(temp, datafile.EClips, i));
                    }
                }

                for (int i = 0; i < datafile.TMapInfo.Count(); i++)
                {
                    TMAPInfo temp = datafile.TMapInfo[i].Clone();
                    //Change references that exactly reference the object to -1
                    if (datafile.TMapInfo[i].DestroyedID == deleteNum)
                    {
                        datafile.TMapInfo[i].DestroyedID = -1;
                        references.Add(new ChangedHAMReference(temp, datafile.TMapInfo, i));
                    }

                    //Change references to further elements by subtracting one
                    else if (datafile.TMapInfo[i].DestroyedID > deleteNum)
                    {
                        datafile.TMapInfo[i].DestroyedID--;
                        references.Add(new ChangedHAMReference(temp, datafile.TMapInfo, i));
                    }
                }

                for (int i = 0; i < datafile.WClips.Count(); i++)
                {
                    WClip temp   = datafile.WClips[i].Clone();
                    bool  change = false;
                    //Change references that exactly reference the object to -1
                    for (int j = 0; j < datafile.WClips[i].NumFrames; j++)
                    {
                        if (datafile.WClips[i].Frames[j] == deleteNum)
                        {
                            datafile.WClips[i].Frames[j] = 0;
                            change = true;
                        }

                        //Change references to further elements by subtracting one
                        else if (datafile.WClips[i].Frames[j] > deleteNum)
                        {
                            datafile.WClips[i].Frames[j]--;
                            change = true;
                        }
                    }

                    if (change)
                    {
                        references.Add(new ChangedHAMReference(temp, datafile.WClips, i));
                    }
                }
            }
            return(true);
        }