1
0

Implement BGCLIP

This commit is contained in:
otya128
2016-12-10 22:04:55 +09:00
parent 7991e406a0
commit 78a81529c9
2 changed files with 26 additions and 5 deletions

View File

@@ -29,6 +29,7 @@ class BG
bool show; bool show;
int chipWidth = 16; int chipWidth = 16;
int chipHeight = 16; int chipHeight = 16;
int display;
this(PetitComputer pc) this(PetitComputer pc)
{ {
chip[] = BGChip(0); chip[] = BGChip(0);
@@ -40,7 +41,7 @@ class BG
r = 0; r = 0;
show = true; show = true;
} }
void render(float disw, float dish) void render(int display, float disw, float dish)
{ {
if (!show) if (!show)
return; return;
@@ -49,6 +50,7 @@ class BG
dish /= 2; dish /= 2;
float z = offsetz; float z = offsetz;
glColor3f(1.0, 1.0, 1.0); glColor3f(1.0, 1.0, 1.0);
petitcom.chRenderingDisplay(display, clipx, clipx, clipx2 - clipx + 1, clipy2 - clipy + 1);
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
glLoadIdentity(); glLoadIdentity();
@@ -118,6 +120,15 @@ class BG
} }
void clip(int x, int y, int x2, int y2) void clip(int x, int y, int x2, int y2)
{ {
import std.algorithm : swap;
if (x > x2)
{
swap(x, x2);
}
if (y > y2)
{
swap(y, y2);
}
this.clipx = x; this.clipx = x;
this.clipy = y; this.clipy = y;
this.clipx2 = x2; this.clipx2 = x2;
@@ -127,8 +138,8 @@ class BG
{ {
this.clipx = 0; this.clipx = 0;
this.clipy = 0; this.clipy = 0;
this.clipx2 = 400; this.clipx2 = petitcom.currentDisplay.rect[display].w - 1;
this.clipy2 = 240; this.clipy2 = petitcom.currentDisplay.rect[display].h - 1;
} }
void home(int x, int y) void home(int x, int y)
{ {

View File

@@ -415,6 +415,16 @@ class PetitComputer
} }
displaynum = 0; displaynum = 0;
console.changeDisplay(currentDisplay); console.changeDisplay(currentDisplay);
for(int i = 0; i < bgmax; i++)
{
this.bg[i].display = 0;
this.bg[i].clip;
}
for(int i = bgmax; i < this.bg.length; i++)
{
this.bg[i].display = 1;
this.bg[i].clip;
}
for (int i = cast(int)currentDisplay.rect.length - 1; i >= 0; i--) for (int i = cast(int)currentDisplay.rect.length - 1; i >= 0; i--)
{ {
display(i); display(i);
@@ -647,7 +657,7 @@ class PetitComputer
chRenderingDisplay(0); chRenderingDisplay(0);
for(int i = 0; i < bgmax; i++) for(int i = 0; i < bgmax; i++)
{ {
bg[i].render(currentDisplay.rect[0].w, currentDisplay.rect[0].h); bg[i].render(0, currentDisplay.rect[0].w, currentDisplay.rect[0].h);
} }
} }
if(currentDisplay.rect.length > 1 && BGvisibles[1]) if(currentDisplay.rect.length > 1 && BGvisibles[1])
@@ -655,7 +665,7 @@ class PetitComputer
chRenderingDisplay(1); chRenderingDisplay(1);
for(int i = bgmax; i < bg.length; i++) for(int i = bgmax; i < bg.length; i++)
{ {
bg[i].render(currentDisplay.rect[1].w, currentDisplay.rect[1].h); bg[i].render(1, currentDisplay.rect[1].w, currentDisplay.rect[1].h);
} }
} }
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);