Court is now in session
This commit is contained in:
@ -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);
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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);
|
||||
}
|
@ -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();
|
Reference in New Issue
Block a user