Exemplo n.º 1
0
        private void BaseCoatButton_Click(object sender, EventArgs e)
        {
            for (uint j = 29; j >= 1 && j <= 29; j--) //Shift all mem back one
            {
                Vertex.OriginalVertexMem[j] = Vertex.OriginalVertexMem[j - 1];
            }
            Vertex.OriginalVertexMem[0] = new UInt32[Vertex.CurrentVertexList.Length][]; //Set up new undo level with all combos
            for (uint i = 0; i < Vertex.CurrentVertexList.Length; i++)
            {
                Vertex.OriginalVertexMem[0][i] = new UInt32[2];
                uint currentVTX = Vertex.CurrentVertexList[i];
                Vertex.OriginalVertexMem[0][i][0] = currentVTX + 12;
                var BinAndAddr = BinManager.AttainCorrectBin(currentVTX);
                Vertex.OriginalVertexMem[0][i][1] = BinAndAddr.Item1.ReadFourBytes(BinAndAddr.Item2 + 12); //Initial RGBA
            }
            byte   R      = (byte)Math.Round(RedNum.Value * ((decimal)Brightness.Value / 100));
            byte   G      = (byte)Math.Round(GreenNum.Value * ((decimal)Brightness.Value / 100));
            byte   B      = (byte)Math.Round(BlueNum.Value * ((decimal)Brightness.Value / 100));
            byte   A      = (byte)AlphaNum.Value;
            UInt32 colour = (uint)((R << 24) | (G << 16) | (B << 8) | A);

            for (int i = 0; i < Vertex.CurrentVertexList.Length; i++)
            {
                var BinAndAddr = BinManager.AttainCorrectBin(Vertex.CurrentVertexList[i]);
                BinManager.SetVertRGBA(BinAndAddr.Item1, BinAndAddr.Item2, colour, AlphaOnlyCheckbox.Checked);
            }
        }
Exemplo n.º 2
0
        void RenderPanel_KeyDown(object sender, KeyEventArgs e)
        {
            keystate = Keyboard.GetState();
            switch (e.KeyCode)
            {
            case Keys.Z:
                if (!keystate[Key.ControlLeft] || Vertex.OriginalVertexMem[0] == null)
                {
                    break;
                }
                for (int j = 29; j > 0; j--)
                {
                    Vertex.EditedVertexMem[j] = Vertex.EditedVertexMem[j - 1];
                }                                                                                               //shift all mem back one (make room for redo)
                Vertex.EditedVertexMem[0] = new UInt32[Vertex.OriginalVertexMem[0].Length][];
                for (int i = 0; i < Vertex.EditedVertexMem[0].Length; i++)
                {
                    Vertex.EditedVertexMem[0][i] = new UInt32[2];
                }                                                                                                               //set new space to this undo
                for (uint i = 0; i < Vertex.OriginalVertexMem[0].Length; i++)
                {
                    uint OriginalVTXValue = Vertex.OriginalVertexMem[0][i][0];
                    Vertex.EditedVertexMem[0][i][0] = OriginalVTXValue;
                    var BinAndAddr = BinManager.AttainCorrectBin(OriginalVTXValue);
                    Vertex.EditedVertexMem[0][i][1] = BinAndAddr.Item1.ReadFourBytes(BinAndAddr.Item2);     //Write @ addr this colour for all addr+rgba in collection
                }
                for (uint i = 0; i < Vertex.OriginalVertexMem[0].Length; i++)
                {
                    var BinAndAddr = BinManager.AttainCorrectBin(Vertex.OriginalVertexMem[0][i][0]);
                    BinAndAddr.Item1.WriteFourBytes(BinAndAddr.Item2, Vertex.OriginalVertexMem[0][i][1]);     //Write @ addr this colour for all addr+rgba in collection
                }
                for (uint i = 0; i < 29; i++)
                {
                    Vertex.OriginalVertexMem[i] = Vertex.OriginalVertexMem[i + 1];
                }                                                                                                    //Shift all mem forward one (forget the undo)
                break;

            case Keys.Y:
                if (!keystate[Key.ControlLeft] || Vertex.EditedVertexMem[0] == null)
                {
                    break;
                }
                for (int j = 29; j > 0; j--)
                {
                    Vertex.OriginalVertexMem[j] = Vertex.OriginalVertexMem[j - 1];
                }                                                                                                   //Shift all mem back one (make room for undo)
                Vertex.OriginalVertexMem[0] = new UInt32[Vertex.EditedVertexMem[0].Length][];
                for (int i = 0; i < Vertex.OriginalVertexMem[0].Length; i++)
                {
                    Vertex.OriginalVertexMem[0][i] = new UInt32[2];
                }                                                                                                                   //set new space to this undo
                for (uint i = 0; i < Vertex.EditedVertexMem[0].Length; i++)
                {
                    uint EditedVTXAddr = Vertex.EditedVertexMem[0][i][0];
                    Vertex.OriginalVertexMem[0][i][0] = EditedVTXAddr;
                    var BinAndAddr = BinManager.AttainCorrectBin(EditedVTXAddr);
                    Vertex.OriginalVertexMem[0][i][1] = BinAndAddr.Item1.ReadFourBytes(BinAndAddr.Item2);     //Write @ addr this colour for all addr+rgba in collection
                }
                for (uint i = 0; i < Vertex.EditedVertexMem[0].Length; i++)
                {
                    var BinAndAddr = BinManager.AttainCorrectBin(Vertex.EditedVertexMem[0][i][0]);
                    BinAndAddr.Item1.WriteFourBytes(BinAndAddr.Item2, Vertex.EditedVertexMem[0][i][1]);     //Write @ addr this colour for all addr+rgba in collection
                }
                for (uint i = 0; i < 29; i++)
                {
                    Vertex.EditedVertexMem[i] = Vertex.EditedVertexMem[i + 1];
                }                                                                                                //Shift all mem forward one (forget the redo)
                break;

            case Keys.S:
                if (!keystate[Key.ControlLeft] || BinNullCheck())
                {
                    break;
                }
                Cursor.Current = Cursors.WaitCursor;
                File.WriteAllBytes(currentMainBinPath, BinManager.MainBin.getCurrentBin());     //Ctrl+S to save
                if (!AlphaBinNullCheck())
                {
                    File.WriteAllBytes(currentMainBinPath, BinManager.MainBin.getCurrentBin());                         //Ctrl+S to save
                }
                StatusLabel.Text = "ROM Saved to " + currentMainBinPath;
                Cursor.Current   = Cursors.Default;
                break;

            case Keys.O:
                if (!keystate[Key.ControlLeft])
                {
                    break;
                }
                if (!keystate[Key.LShift])
                {
                    OpenMainBin(sender, e);                            //Ctrl+O to open
                }
                else if (!BinNullCheck())
                {
                    OpenAlphaBin(sender, e);                          //if ctrl shift is held, it will open alpha bin
                }
                break;

            case Keys.R:
                if (!keystate[Key.ControlLeft] || BinNullCheck())
                {
                    break;
                }
                ReloadMainBin();     //Ctrl+O to open
                if (!AlphaBinNullCheck())
                {
                    ReloadAlphaBin();
                }
                break;
            }
        }