diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/assets.c | 20 | ||||
-rw-r--r-- | src/assets.h | 10 | ||||
-rw-r--r-- | src/entities/antifaShip.c | 7 | ||||
-rw-r--r-- | src/entities/antifaShip.h | 1 | ||||
-rw-r--r-- | src/gameScreen.c | 18 | ||||
-rw-r--r-- | src/gameScreen.h | 1 |
6 files changed, 40 insertions, 17 deletions
diff --git a/src/assets.c b/src/assets.c index fd11707..cc6a7b0 100644 --- a/src/assets.c +++ b/src/assets.c @@ -3,7 +3,8 @@ const char textureAssetPaths[TEXTURE_ASSET_COUNT][ASSET_PATH_MAX] = { "/home/nathan/Documents/KillaFacsista/assets/icon.png", "/home/nathan/Documents/KillaFacsista/assets/icon128.png", - "/home/nathan/Documents/KillaFacsista/assets/icon64.png" + "/home/nathan/Documents/KillaFacsista/assets/icon64.png", + "/home/nathan/Documents/KillaFacsista/assets/gyroscope.png" }; const char modelAssetPaths[MODEL_ASSET_COUNT][ASSET_PATH_MAX] = { @@ -15,12 +16,25 @@ const char modelAssetPaths[MODEL_ASSET_COUNT][ASSET_PATH_MAX] = { "/home/nathan/Documents/KillaFacsista/assets/generale.obj", "/home/nathan/Documents/KillaFacsista/assets/mussolini.obj", "/home/nathan/Documents/KillaFacsista/assets/guidedMissile.obj", - "/home/nathan/Documents/KillaFacsista/assets/missile.obj" + "/home/nathan/Documents/KillaFacsista/assets/missile.obj", + "/home/nathan/Documents/KillaFacsista/assets/gyroscope.obj" }; +// Some models have textures and other stuff to be set. +void configModelAssets(Assets * assets) { + // Gyroscope + SetMaterialTexture( + &assets->models[GYROSCOPE_ASSET].materials[0], + MATERIAL_MAP_DIFFUSE, + assets->textures[GYROSCOPE_TEXTURE_ASSET] + ); +} + void LoadAssets(Assets * assets) { int i; + // Textures first because models can use textures. + // Textures. for (i = 0; i < TEXTURE_ASSET_COUNT; ++i) assets->textures[i] = LoadTexture(textureAssetPaths[i]); @@ -29,6 +43,8 @@ void LoadAssets(Assets * assets) { for (i = 0; i < MODEL_ASSET_COUNT; ++i) assets->models[i] = LoadModel(modelAssetPaths[i]); + configModelAssets(assets); + TraceLog(LOG_INFO, "Assets loaded"); } diff --git a/src/assets.h b/src/assets.h index ed842a6..beeb672 100644 --- a/src/assets.h +++ b/src/assets.h @@ -5,8 +5,8 @@ #define ASSET_PATH_MAX 255 -#define TEXTURE_ASSET_COUNT 3 -#define MODEL_ASSET_COUNT 9 +#define TEXTURE_ASSET_COUNT 4 +#define MODEL_ASSET_COUNT 10 // Paths to assets. extern const char textureAssetPaths[TEXTURE_ASSET_COUNT][ASSET_PATH_MAX]; @@ -18,7 +18,8 @@ typedef int32_t AssetId; enum { ICON_ASSET, ICON128_ASSET, - ICON64_ASSET + ICON64_ASSET, + GYROSCOPE_TEXTURE_ASSET, }; // Model asset ids. @@ -31,7 +32,8 @@ enum { GENERALE_ASSET, MUSSOLINI_ASSET, GUIDED_MISSILE_ASSET, - MISSILE_ASSET + MISSILE_ASSET, + GYROSCOPE_ASSET }; typedef struct Assets { diff --git a/src/entities/antifaShip.c b/src/entities/antifaShip.c index fb307fb..bd64545 100644 --- a/src/entities/antifaShip.c +++ b/src/entities/antifaShip.c @@ -29,6 +29,7 @@ void initAntifaShip(Entity * entity, Game * game) { AntifaShip * data = (AntifaShip*)entity->data; data->lastMouse = GetMousePosition(); data->forwardSpeed = 0.0; + data->shouldInitMousePosition = true; } void closeAntifaShip(Entity * entity) { @@ -77,6 +78,12 @@ void controlAntifaShipJoystick(Game * game, Entity * entity) { void controlAntifaShipKeyboardAndMouse(Game * game, Entity * entity) { AntifaShip * data = (AntifaShip*)entity->data; + // Resets mouse on init. + if (data->shouldInitMousePosition) { + data->shouldInitMousePosition = false; + SetMousePosition(0, 0); + } + // Get mouse values. Vector2 mouse = GetMousePosition(); float speed = GetMouseWheelMove(); diff --git a/src/entities/antifaShip.h b/src/entities/antifaShip.h index 06ef094..e9c78bd 100644 --- a/src/entities/antifaShip.h +++ b/src/entities/antifaShip.h @@ -9,6 +9,7 @@ typedef struct AntifaShip { Vector2 lastMouse; float forwardSpeed; + bool shouldInitMousePosition; } AntifaShip; void initAntifaShip(Entity * entity, Game * game); diff --git a/src/gameScreen.c b/src/gameScreen.c index 7849af3..96e14ca 100644 --- a/src/gameScreen.c +++ b/src/gameScreen.c @@ -2,7 +2,7 @@ #include "game.h" #include "world.h" #include "bullets.h" -#include <raylib.h> +#include "assets.h" void initGameScreenGui(GameScreen * gameScreen) { float width = GetScreenWidth(); @@ -14,7 +14,6 @@ void initGameScreenGui(GameScreen * gameScreen) { gameScreen->gyroscopePosition = (Vector2){ (width / 2.0) - (GYROSCOPE_TEXTURE_SIZE / 2.0), height / 1.8 - }; } @@ -25,7 +24,7 @@ void initGameScreen(GameScreen * gameScreen) { gameScreen->gyroscopeCamaera = (Camera3D){ .fovy = 45, .projection = CAMERA_PERSPECTIVE, - .position = (Vector3){0.0, 0.0, -3.0}, + .position = (Vector3){0.0, 0.0, 3.0}, .target = Vector3Zero(), .up = (Vector3){0.0, 1.0, 0.0} }; @@ -34,15 +33,10 @@ void initGameScreen(GameScreen * gameScreen) { GYROSCOPE_TEXTURE_SIZE, GYROSCOPE_TEXTURE_SIZE ); - - // Load model. - Mesh mesh = GenMeshSphere(1.0, 8, 8); - gameScreen->gyroscopeModel = LoadModelFromMesh(mesh); } void freeGameScreen(GameScreen * gameScreen) { UnloadRenderTexture(gameScreen->gyroscopeTexture); - UnloadModel(gameScreen->gyroscopeModel); } void drawCrossHair(float size, float thick, Color color) { @@ -70,14 +64,18 @@ void drawGyroscope(Game * game) { Entity * player = getEntityFromWorld(game->world, 0); Vector2 gyroscopePosition = gameScreen->gyroscopePosition; + // Get texture and model. + Texture2D texture = game->assets.textures[GYROSCOPE_TEXTURE_ASSET]; + Model model = game->assets.models[GYROSCOPE_ASSET]; + // Draw this mother fucker. BeginTextureMode(gameScreen->gyroscopeTexture); ClearBackground(BLACK); BeginMode3D(gameScreen->gyroscopeCamaera); // Set transform and draw. - gameScreen->gyroscopeModel.transform = QuaternionToMatrix(QuaternionInvert(player->rotation)); - DrawModelWires(gameScreen->gyroscopeModel, Vector3Zero(), 1, BLUE); + model.transform = QuaternionToMatrix(player->rotation); + DrawModel(model, Vector3Zero(), 1, WHITE); EndMode3D(); EndTextureMode(); diff --git a/src/gameScreen.h b/src/gameScreen.h index c0169c6..20872b3 100644 --- a/src/gameScreen.h +++ b/src/gameScreen.h @@ -13,7 +13,6 @@ typedef struct GameScreen { Vector2 gyroscopePosition; Camera3D gyroscopeCamaera; RenderTexture gyroscopeTexture; - Model gyroscopeModel; } GameScreen; void initGameScreen(GameScreen * gameScreen); |