Court is now in session

This commit is contained in:
2021-05-06 21:13:37 -07:00
parent fab12c4f6d
commit f3ffc93927
12 changed files with 148 additions and 23 deletions

View File

@ -10,6 +10,8 @@ holdemgame_t HOLDEM_GAME_STATE;
void holdemGameInit() {
int32_t lWidth, rWidth, height;
card_t card;
tilesetdiv_t *cardBack;
// Create the initial frame buffers
lWidth = HOLDEM_GAME_FRAME_LEFT_WIDTH, rWidth = HOLDEM_GAME_FRAME_RIGHT_WIDTH;
@ -19,9 +21,36 @@ void holdemGameInit() {
HOLDEM_GAME_STATE.quadLeft = quadCreate(0, 0, 0, 0, 0, lWidth, height, 1, 1);
HOLDEM_GAME_STATE.quadRight = quadCreate(0, 0, 0, 0, 0, rWidth, height, 1, 1);
//TESTING
HOLDEM_GAME_STATE.cube = cubeCreate(1, 1, 1);
HOLDEM_GAME_STATE.texture = assetTextureLoad("bruh.png");
// Kagami
HOLDEM_GAME_STATE.kagamiTexture = assetTextureLoad("kagami.png");
HOLDEM_GAME_STATE.kagamiTileset = tilesetCreate(3, 2,
HOLDEM_GAME_STATE.kagamiTexture->width,
HOLDEM_GAME_STATE.kagamiTexture->height,
0, 0, 0, 0
);
HOLDEM_GAME_STATE.kagamiQuad = quadCreate(0, 0, 0, 0, 0, 1, 1, 1, 1);
// Load Cards Texture
HOLDEM_GAME_STATE.cardTexture = assetTextureLoad("cards_normal.png");
HOLDEM_GAME_STATE.cardTileset = tilesetCreate(CARD_COUNT_PER_SUIT, 6,
HOLDEM_GAME_STATE.cardTexture->width, HOLDEM_GAME_STATE.cardTexture->height,
0, 0, 0, 0
);
// Cards Primitive
cardBack = HOLDEM_GAME_STATE.cardTileset->divisions+(
HOLDEM_GAME_STATE.cardTileset->columns * 4
);
HOLDEM_GAME_STATE.cardPrimitive = primitiveCreate(
QUAD_VERTICE_COUNT * 2, QUAD_INDICE_COUNT * 2
);
quadBuffer(HOLDEM_GAME_STATE.cardPrimitive, -HOLDEM_GAME_CARD_DEPTH,
-HOLDEM_GAME_CARD_WIDTH, -HOLDEM_GAME_CARD_HEIGHT,
cardBack->x0, cardBack->y1,
HOLDEM_GAME_CARD_WIDTH, HOLDEM_GAME_CARD_HEIGHT,
cardBack->x1, cardBack->y0,
QUAD_VERTICE_COUNT, QUAD_INDICE_COUNT
);
// Prepare match
holdemMatchInit(&HOLDEM_GAME_STATE.match);
@ -38,37 +67,49 @@ void holdemGameUpdate() {
frameBufferDispose(HOLDEM_GAME_STATE.frameRight);
HOLDEM_GAME_STATE.frameLeft = frameBufferCreate(lWidth, height);
HOLDEM_GAME_STATE.frameRight = frameBufferCreate(rWidth, height);
quadBuffer(HOLDEM_GAME_STATE.quadLeft, 0, 0, 0, 0, 0, lWidth, height, 1, 1, 0, 0);
quadBuffer(HOLDEM_GAME_STATE.quadRight, 0, 0, 0, 0, 0, rWidth, height, 1, 1, 0, 0);
quadBuffer(HOLDEM_GAME_STATE.quadLeft, 0,
0, 0, 0, 1,
lWidth, height, 1, 0,
0, 0
);
quadBuffer(HOLDEM_GAME_STATE.quadRight, 0,
0, 0, 0, 1,
rWidth, height, 1, 0,
0, 0
);
}
// Render things on the left frame buffer
glClearColor(0.3, 0, 0, 1);
frameBufferUse(HOLDEM_GAME_STATE.frameLeft, true);
cameraPerspective(&HOLDEM_GAME_STATE.cameraLeft, 75,
((float)lWidth/height), 0.25f, 100.0f
cameraPerspective(&HOLDEM_GAME_STATE.cameraLeft, 45,
((float)lWidth/height), 1.0f, 1000.0f
);
cameraLookAt(&HOLDEM_GAME_STATE.cameraLeft, 5, 5, 5, 0, 0, 0);
cameraLookAt(&HOLDEM_GAME_STATE.cameraLeft, 2, 2, 2, 0, 0, 0);
shaderUseCamera(GAME_STATE.shaderWorld, &HOLDEM_GAME_STATE.cameraLeft);
holdemRenderWorld();
// Render things on the right frame buffer
glClearColor(0.3, 0.3, 0, 1);
frameBufferUse(HOLDEM_GAME_STATE.frameRight, true);
cameraPerspective(&HOLDEM_GAME_STATE.cameraRight, 45,
((float)rWidth/height), 0.25f, 100.0f
);
cameraLookAt(&HOLDEM_GAME_STATE.cameraRight, 0, 5, 5, 0, 0, 0);
cameraLookAt(&HOLDEM_GAME_STATE.cameraRight, 0, 3, 3, 0, 0, 0);
shaderUseCamera(GAME_STATE.shaderWorld, &HOLDEM_GAME_STATE.cameraRight);
holdemRenderWorld();
// Finally, render the frame buffers to the back buffer.
glClearColor(0, 0, 0, 1);
frameBufferUse(NULL, true);
cameraOrtho(&GAME_STATE.cameraWorld, 0,
RENDER_STATE.width, RENDER_STATE.height, 1, 0, 1
);
cameraLookAt(&GAME_STATE.cameraWorld, 0, 0, 0.5f, 0, 0, 0);
shaderUseCamera(GAME_STATE.shaderWorld, &GAME_STATE.cameraWorld);
// L
shaderUsePosition(GAME_STATE.shaderWorld, 0, 0, 0, 0, 0, 0);
shaderUseTexture(GAME_STATE.shaderWorld, HOLDEM_GAME_STATE.frameLeft->texture);

View File

@ -14,6 +14,7 @@
#include "../../display/shader.h"
#include "../../display/camera.h"
#include "../../display/primitives/cube.h"
#include "../../display/tileset.h"
#include "../../display/primitives/quad.h"
#include "../../file/asset.h"

View File

@ -7,9 +7,53 @@
#include "holdemrender.h"
void holdemRenderPlayer(float x, float y, float z, float yaw) {
float w, h;
w = 1, h = (
(float)HOLDEM_GAME_STATE.kagamiTileset->divY /
(float)HOLDEM_GAME_STATE.kagamiTileset->divX
);
int i = (int32_t)(TIME_STATE.current*10)%HOLDEM_GAME_STATE.kagamiTileset->count;
quadBuffer(HOLDEM_GAME_STATE.kagamiQuad, 0,
-w/2, -h/2,
HOLDEM_GAME_STATE.kagamiTileset->divisions[i].x0,
HOLDEM_GAME_STATE.kagamiTileset->divisions[i].y1,
w/2, h/2,
HOLDEM_GAME_STATE.kagamiTileset->divisions[i].x1,
HOLDEM_GAME_STATE.kagamiTileset->divisions[i].y0,
0, 0
);
shaderUseTexture(GAME_STATE.shaderWorld, HOLDEM_GAME_STATE.kagamiTexture);
shaderUsePosition(GAME_STATE.shaderWorld, x, y, z, 0, mathDeg2Rad(yaw), 0);
primitiveDraw(HOLDEM_GAME_STATE.kagamiQuad, 0, -1);
}
void holdemRenderCard(card_t card,
float x, float y, float z, float pitch, float yaw, float roll
) {
tilesetdiv_t *cardFront = HOLDEM_GAME_STATE.cardTileset->divisions + card;
quadBuffer(HOLDEM_GAME_STATE.cardPrimitive, HOLDEM_GAME_CARD_DEPTH,
-HOLDEM_GAME_CARD_WIDTH, -HOLDEM_GAME_CARD_HEIGHT,
cardFront->x0, cardFront->y1,
HOLDEM_GAME_CARD_WIDTH, HOLDEM_GAME_CARD_HEIGHT,
cardFront->x1, cardFront->y0,
0, 0
);
shaderUseTexture(GAME_STATE.shaderWorld, HOLDEM_GAME_STATE.cardTexture);
shaderUsePosition(GAME_STATE.shaderWorld, x, y, z, pitch, yaw, roll);
primitiveDraw(HOLDEM_GAME_STATE.cardPrimitive, 0, -1);
}
void holdemRenderWorld() {
shaderUseTexture(GAME_STATE.shaderWorld, HOLDEM_GAME_STATE.texture);
shaderUsePosition(GAME_STATE.shaderWorld, 0, 0, 0, 0, 0, 0);
shaderUsePosition(GAME_STATE.shaderWorld, 0, 0, 0, TIME_STATE.current, TIME_STATE.current, 0);
primitiveDraw(HOLDEM_GAME_STATE.cube, 0, -1);
holdemRenderCard(CARD_HEARTS_QUEEN, 0, 0, 0, mathDeg2Rad(-90), 0, 0);
// Draw the players
holdemRenderPlayer(0, 0, -1, 0);
holdemRenderPlayer(-1, 0, -0, 90);
holdemRenderPlayer(-0.75, 0, 0.75, -45);
holdemRenderPlayer(0.75, 0, 0.75, 45);
holdemRenderPlayer(1, 0, 0, -90);
}

View File

@ -9,5 +9,11 @@
#include <dawn/dawn.h>
#include "../../../display/shader.h"
#include "../../../display/primitive.h"
#include "../../../display/primitives/quad.h"
#include "../../../util/math.h"
void holdemRenderPlayer(float x, float y, float z, float yaw);
void holdemRenderCard(card_t card,
float x, float y, float z, float pitch, float yaw, float roll
);
void holdemRenderWorld();