コード例 #1
0
        public override void paint(Surface display, bool focused, Point offset)
        {
            tia.ClockCatchUp();
            tia.ForceScanDraw();

            ColorBK.Fill(tia.ChromaBK);
            ColorPF.Fill(tia.ChromaPF);
            ColorP0.Fill(tia.ChromaP0);
            ColorP1.Fill(tia.ChromaP1);

            PosBLt.Text = Convert.ToString(tia.m_BLPos);
            PosP0t.Text = Convert.ToString(tia.m_P0Pos);
            PosM0t.Text = Convert.ToString(tia.m_M0Pos);
            PosP1t.Text = Convert.ToString(tia.m_P1Pos);
            PosM1t.Text = Convert.ToString(tia.m_M1Pos);
            HPost.Text  = Convert.ToString(tia.m_hPos);
            VPost.Text  = Convert.ToString(tia.m_vPos);

            string modes = "";

            if (tia.m_RefPF)
            {
                modes = "Reflected  ";
            }
            if ((tia.m_DrawMode & (int)TIA.playfieldModes.PF_SCORE) != 0)
            {
                modes += "Score  ";
            }
            if ((tia.m_DrawMode & (int)TIA.playfieldModes.PF_PRI) != 0)
            {
                modes += "Priority";
            }

            PFModes.Text = modes;

            if (tia.m_EnaBL)
            {
                GRBL.Fill(Color.FromArgb(255, 255, 255));
            }
            else
            {
                GRBL.Fill(Color.FromArgb(0, 0, 0));
            }

            if (tia.m_EnaM0)
            {
                GRM0.Fill(Color.FromArgb(255, 255, 255));
            }
            else
            {
                GRM0.Fill(Color.FromArgb(0, 0, 0));
            }

            if (tia.m_EnaM1)
            {
                GRM1.Fill(Color.FromArgb(255, 255, 255));
            }
            else
            {
                GRM1.Fill(Color.FromArgb(0, 0, 0));
            }

            if (tia.m_EnaBLDel)
            {
                GRBLA.Fill(Color.FromArgb(255, 255, 255));
            }
            else
            {
                GRBLA.Fill(Color.FromArgb(0, 0, 0));
            }

            if (tia.m_VDelP0)
            {
                P0Del.Text = "X";
            }
            else
            {
                P0Del.Text = "";
            }

            if (tia.m_VDelP1)
            {
                P1Del.Text = "X";
            }
            else
            {
                P1Del.Text = "";
            }

            if (tia.m_VDelP0)
            {
                BLDel.Text = "X";
            }
            else
            {
                BLDel.Text = "";
            }

            moveBL.Text = Convert.ToString(-tia.m_MoveBL);
            moveP0.Text = Convert.ToString(-tia.m_MoveP0);
            moveM0.Text = Convert.ToString(-tia.m_MoveM0);
            moveP1.Text = Convert.ToString(-tia.m_MoveP1);
            moveM1.Text = Convert.ToString(-tia.m_MoveM1);

            base.paint(display, focused, offset);

            Rectangle client = ClientRect;

            client.X += offset.X;
            client.Y += offset.Y;

            foreach (int i in matrixIcons.Keys)
            {
                Point p = matrixIcons[i];

                if (tia.m_Collisions[i] != 0)
                {
                    DisplaySettings.checkMatrix.Blit(matrix, p);
                }
                else
                {
                    DisplaySettings.uncheckMatrix.Blit(matrix, p);
                }
            }

            for (int i = 0; i < 160; i++)
            {
                Rectangle r = new Rectangle(136 + i * 2, 0, 2, 2);
                ScanLine.Fill(r, tia.GetColor(true, i));
                r.Y += 2;
                ScanLine.Fill(r, tia.GetColor(false, i));
            }

            GRPF.Fill(Color.Black);
            GRP0.Fill(Color.Black);
            GRP1.Fill(Color.Black);
            GRP0A.Fill(Color.Black);
            GRP1A.Fill(Color.Black);

            FillSurface(GRP0, tia.m_P0Grp);
            FillSurface(GRP1, tia.m_P1Grp);
            FillSurface(GRP0A, tia.m_P0GrpDel);
            FillSurface(GRP1A, tia.m_P1GrpDel);

            Rectangle rect = new Rectangle(0, 0, 16, 16);

            for (int i = 0; i < 4; i++)
            {
                if ((tia.m_PF0Grp & (0x10 << i)) != 0)
                {
                    GRPF.Fill(rect, Color.White);
                }
                rect.X += 16;
            }
            for (int i = 0; i < 8; i++)
            {
                if ((tia.m_PF1Grp & (0x80 >> i)) != 0)
                {
                    GRPF.Fill(rect, Color.White);
                }
                rect.X += 16;
            }
            for (int i = 0; i < 8; i++)
            {
                if ((tia.m_PF2Grp & (0x01 << i)) != 0)
                {
                    GRPF.Fill(rect, Color.White);
                }
                rect.X += 16;
            }


            DisplaySettings.BLPos.Blit(display, new Point(8 + (68 + tia.m_BLPos) * 2 + client.X, client.Y));
            DisplaySettings.M0Pos.Blit(display, new Point(8 + (68 + tia.m_M0Pos) * 2 + client.X, client.Y));
            DisplaySettings.M1Pos.Blit(display, new Point(8 + (68 + tia.m_M1Pos) * 2 + client.X, client.Y));
            DisplaySettings.P0Pos.Blit(display, new Point(8 + (68 + tia.m_P0Pos) * 2 + client.X, client.Y));
            DisplaySettings.P1Pos.Blit(display, new Point(8 + (68 + tia.m_P1Pos) * 2 + client.X, client.Y));
            DisplaySettings.HPos.Blit(display, new Point(8 + (68 + tia.m_hPos) * 2 + client.X, client.Y + 20));
        }