コード例 #1
0
        public void MergeIcons(DaxBlock srcIcon) /* icon_xx, could be implemented using alpha-blending */
        {
            for (var i = 0; i < srcIcon.Bpp; i++)
            {
                var a = ImageData[i];
                var b = srcIcon.ImageData[i];

                if (a == 16 && b == 16)
                {
                    ImageData[i] = 16;
                }
                else if (a == 16)
                {
                    ImageData[i] = b;
                }
                else if (b == 16)
                {
                    ImageData[i] = a;
                }
                else
                {
                    //TODO - not sure about this... more likely there should be a presedant, not just blending on the color code..
                    ImageData[i] = (byte)(a | b);
                }
            }
        }
コード例 #2
0
ファイル: ovr030.cs プロジェクト: gowantervo/coab
        // sub_7000A
        internal static void DrawMaybeOverlayed(DaxBlock dax_block, bool useOverlay, int rowY, int colX)
        {
            if (dax_block != null)
            {
                if (gbl.area_ptr.picture_fade > 0 || useOverlay == true)
                {
                    if (gbl.area_ptr.picture_fade > 0)
                    {
                        dax_block.Recolor(true, fadeNewColors, fadeOldColors);
                    }

                    seg040.OverlayBounded(dax_block, 0, 0, rowY - 1, colX - 1);
                    seg040.DrawOverlay();
                }
                else
                {
                    seg040.draw_picture(dax_block, rowY, colX, 0);
                }
            }
        }
コード例 #3
0
ファイル: seg040.cs プロジェクト: gowantervo/coab
        internal static void draw_clipped_picture(DaxBlock dax_block, int rowY, int colX, int index,
            int clipMinX, int clipMaxX, int clipMinY, int clipMaxY)
        {
            if (dax_block != null)
            {
                int offset = index * dax_block.bpp;

                int minY = rowY * 8;
                int maxY = minY + dax_block.height;

                int minX = colX * 8;
                int maxX = minX + (dax_block.width * 8);

                for (int pixY = minY; pixY < maxY; pixY++)
                {
                    for (int pixX = minX; pixX < maxX; pixX++)
                    {
                        if (pixX >= clipMinX && pixX < clipMaxX &&
                            pixY >= clipMinY && pixY < clipMaxY)
                        {
                            byte color = dax_block.data[offset];

                            if (color == color_no_draw)
                            { }
                            else if (color == color_re_color_from)
                            {
                                Display.SetPixel3(pixX, pixY, color_re_color_to);
                            }
                            else
                            {
                                Display.SetPixel3(pixX, pixY, color);
                            }
                        }

                        offset++;
                    }
                }

                Display.Update();
            }
        }
コード例 #4
0
ファイル: seg040.cs プロジェクト: gowantervo/coab
 internal static void draw_picture(DaxBlock dax_block, int rowY, int colX, int index)
 {
     draw_clipped_picture(dax_block, rowY, colX, index, 0, 320, 0, 200);
 }
コード例 #5
0
ファイル: seg040.cs プロジェクト: gowantervo/coab
 internal static void draw_combat_picture(DaxBlock dax_block, int rowY, int colX, int index)
 {
     draw_clipped_picture(dax_block, rowY, colX, index, 8, 176, 8, 176);
 }
コード例 #6
0
ファイル: seg040.cs プロジェクト: gowantervo/coab
 internal static void OverlayUnbounded(DaxBlock source, int arg_8, int itemIdex, int rowY, int colX)
 {
     draw_combat_picture(source, rowY + 1, colX + 1, itemIdex);
 }
コード例 #7
0
ファイル: seg040.cs プロジェクト: gowantervo/coab
        /* ega_01 */
        internal static void ega_backup(DaxBlock dax_block, int rowY, int colX)
        {
            if (dax_block != null)
            {
                int offset = 0;

                int minY = rowY * 8;
                int maxY = minY + dax_block.height;

                int minX = colX * 8;
                int maxX = minX + (dax_block.width * 8);

                for (int pixY = minY; pixY < maxY; pixY++)
                {
                    for (int pixX = minX; pixX < maxX; pixX++)
                    {
                        dax_block.data[offset] = Display.GetPixel(pixX, pixY);
                        offset++;
                    }
                }
            }
        }
コード例 #8
0
ファイル: DaxBlock.cs プロジェクト: gowantervo/coab
        /* icon_xx, could be implemented using alpha-blending */
        public void MergeIcons(DaxBlock srcIcon)
        {
            for (int i = 0; i < srcIcon.bpp; i++)
            {
                byte a = data[i];
                byte b = srcIcon.data[i];

                if (a == 16 && b == 16)
                {
                    data[i] = 16;
                }
                else if (a == 16)
                {
                    data[i] = b;
                }
                else if (b == 16)
                {
                    data[i] = a;
                }
                else
                {
                    //TODO - not sure about this... more likely there should be a presedant, not just blending on the color code..
                    data[i] = (byte)(a | b);
                }
            }
        }