aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/assets.c20
-rw-r--r--src/assets.h10
-rw-r--r--src/entities/antifaShip.c7
-rw-r--r--src/entities/antifaShip.h1
-rw-r--r--src/gameScreen.c18
-rw-r--r--src/gameScreen.h1
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);