start on a tile render queue
This commit is contained in:
parent
a30af87485
commit
8cebf1d3f2
38
game.c
38
game.c
|
@ -102,6 +102,7 @@ void buildArena() {
|
||||||
}
|
}
|
||||||
|
|
||||||
int rabbitPosition[2] = { 60, 60 };
|
int rabbitPosition[2] = { 60, 60 };
|
||||||
|
int oldRabbitPosition[2] = { 60, 60 };
|
||||||
int rabbitLimits[2][2] = {
|
int rabbitLimits[2][2] = {
|
||||||
{ 20, 20 },
|
{ 20, 20 },
|
||||||
{ 180, 180 }
|
{ 180, 180 }
|
||||||
|
@ -115,6 +116,7 @@ signed char rabbitVelocity[2] = { 0, 0 };
|
||||||
|
|
||||||
struct MouseStatus mouseStatus;
|
struct MouseStatus mouseStatus;
|
||||||
char mousePosition[2] = { 0, 0 };
|
char mousePosition[2] = { 0, 0 };
|
||||||
|
char oldMousePosition[2] = { 0, 0 };
|
||||||
|
|
||||||
void setupRabbitDrawing() {
|
void setupRabbitDrawing() {
|
||||||
rabbit.x = rabbitPosition[0];
|
rabbit.x = rabbitPosition[0];
|
||||||
|
@ -163,6 +165,7 @@ void handleRabbitMovement() {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 2; ++i) {
|
for (i = 0; i < 2; ++i) {
|
||||||
|
oldRabbitPosition[i] = rabbitPosition[i];
|
||||||
rabbitPosition[i] += (rabbitVelocity[i] / 5);
|
rabbitPosition[i] += (rabbitVelocity[i] / 5);
|
||||||
|
|
||||||
if (rabbitPosition[i] < rabbitLimits[0][i]) {
|
if (rabbitPosition[i] < rabbitLimits[0][i]) {
|
||||||
|
@ -187,36 +190,36 @@ void handleRabbitMovement() {
|
||||||
|
|
||||||
struct SpriteBounds bounds;
|
struct SpriteBounds bounds;
|
||||||
|
|
||||||
|
char tileRenderQueue[400];
|
||||||
|
|
||||||
void drawOnlyArena() {
|
void drawOnlyArena() {
|
||||||
int leftTileX, rightTileX,
|
int leftTileX, rightTileX,
|
||||||
topTileY, bottomTileY;
|
topTileY, bottomTileY;
|
||||||
|
|
||||||
|
char buffer[20];
|
||||||
|
|
||||||
leftTileX = bounds.left / TILE_SIZE;
|
leftTileX = bounds.left / TILE_SIZE;
|
||||||
rightTileX = bounds.right / TILE_SIZE;
|
rightTileX = bounds.right / TILE_SIZE;
|
||||||
topTileY = bounds.top / TILE_SIZE;
|
topTileY = bounds.top / TILE_SIZE;
|
||||||
bottomTileY = bounds.bottom / TILE_SIZE;
|
bottomTileY = bounds.bottom / TILE_SIZE;
|
||||||
|
|
||||||
renderArenaTile(leftTileX, topTileY);
|
renderArenaTile(leftTileX, topTileY);
|
||||||
if (leftTileX != rightTileX) {
|
renderArenaTile(rightTileX, topTileY);
|
||||||
renderArenaTile(rightTileX, topTileY);
|
renderArenaTile(rightTileX, bottomTileY);
|
||||||
if (topTileY != bottomTileY) {
|
renderArenaTile(leftTileX, bottomTileY);
|
||||||
renderArenaTile(rightTileX, bottomTileY);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (topTileY != bottomTileY) {
|
|
||||||
renderArenaTile(leftTileX, bottomTileY);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawOnlyMouseArena() {
|
void drawOnlyMouseArena() {
|
||||||
|
mouse.x = oldMousePosition[0];
|
||||||
|
mouse.y = oldMousePosition[1];
|
||||||
getSpriteBounds(&mouse, &bounds);
|
getSpriteBounds(&mouse, &bounds);
|
||||||
|
|
||||||
drawOnlyArena();
|
drawOnlyArena();
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawOnlyRabbitArena() {
|
void drawOnlyRabbitArena() {
|
||||||
|
rabbit.x = oldRabbitPosition[0];
|
||||||
|
rabbit.y = oldRabbitPosition[1];
|
||||||
getSpriteBounds(&rabbit, &bounds);
|
getSpriteBounds(&rabbit, &bounds);
|
||||||
|
|
||||||
drawOnlyArena();
|
drawOnlyArena();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,6 +240,9 @@ void calculateTargetAngle() {
|
||||||
distanceX = sin(angle * DEG2RAD) * MOUSE_DISTANCE;
|
distanceX = sin(angle * DEG2RAD) * MOUSE_DISTANCE;
|
||||||
distanceY = -cos(angle * DEG2RAD) * MOUSE_DISTANCE;
|
distanceY = -cos(angle * DEG2RAD) * MOUSE_DISTANCE;
|
||||||
|
|
||||||
|
oldMousePosition[0] = mousePosition[0];
|
||||||
|
oldMousePosition[1] = mousePosition[1];
|
||||||
|
|
||||||
mousePosition[0] = rabbitPosition[0] + distanceX;
|
mousePosition[0] = rabbitPosition[0] + distanceX;
|
||||||
mousePosition[1] = rabbitPosition[1] + distanceY;
|
mousePosition[1] = rabbitPosition[1] + distanceY;
|
||||||
}
|
}
|
||||||
|
@ -271,18 +277,20 @@ int main(void) {
|
||||||
handleRabbitMovement();
|
handleRabbitMovement();
|
||||||
calculateTargetAngle();
|
calculateTargetAngle();
|
||||||
|
|
||||||
waitStartVbl();
|
|
||||||
|
|
||||||
setupRabbitDrawing();
|
|
||||||
setupMouseDrawing();
|
|
||||||
drawOnlyRabbitArena();
|
drawOnlyRabbitArena();
|
||||||
drawOnlyMouseArena();
|
drawOnlyMouseArena();
|
||||||
|
setupRabbitDrawing();
|
||||||
|
setupMouseDrawing();
|
||||||
renderRabbit();
|
renderRabbit();
|
||||||
renderMouse();
|
renderMouse();
|
||||||
|
|
||||||
|
waitStartVbl();
|
||||||
|
|
||||||
copyDrawBufferToDisplay();
|
copyDrawBufferToDisplay();
|
||||||
|
|
||||||
waitEndVbl();
|
waitEndVbl();
|
||||||
|
|
||||||
|
|
||||||
if (mouseStatus.leftButtonDown) { keepRunning = 0; }
|
if (mouseStatus.leftButtonDown) { keepRunning = 0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue