user 2 years ago
parent
commit
dcc690b34d
  1. 3
      CMakeLists.txt
  2. 26
      src/draw.cpp
  3. 19
      src/game.cpp
  4. 31
      src/game.h
  5. 15
      src/main.cpp

3
CMakeLists.txt

@ -3,6 +3,9 @@ cmake_minimum_required(VERSION 3.10) @@ -3,6 +3,9 @@ cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 17)
add_compile_options(-g -fsanitize=address)
add_link_options(-g -fsanitize=address)
# set the project name
project(2huwu)

26
src/draw.cpp

@ -4,13 +4,21 @@ @@ -4,13 +4,21 @@
#include "game.h"
#include "draw.h"
void
draw_background(struct game_state &gs)
{
DrawGrid(10, 1.0f);
}
void
draw_player(struct game_state &gs, int player)
{
auto p = gs.players.at(player);
DrawCircleV(Vector2 {p.pos.x, p.pos.y}, 50, MAROON);
auto &p = gs.players.at(player);
DrawCube(p.pos, 2.0f, 2.0f, 2.0f, RED);
DrawCubeWires(p.pos, 2.0f, 2.0f, 2.0f, MAROON);
//DrawCircleV(Vector2 {p.pos.x, p.pos.y}, 50, MAROON);
}
@ -18,15 +26,21 @@ void @@ -18,15 +26,21 @@ void
draw(struct game_state &gs)
{
BeginDrawing();
ClearBackground(RAYWHITE);
DrawText("move the ball with arrow keys", 10, 10, 20, DARKGRAY);
for (int i = 0; i < gs.players.size(); i++) {
draw_player(gs, i);
}
BeginMode3D(gs.camera);
draw_background(gs);
for (int i = 0; i < gs.players.size(); i++) {
draw_player(gs, i);
}
EndMode3D();
EndDrawing();
}

19
src/game.cpp

@ -2,11 +2,30 @@ @@ -2,11 +2,30 @@
#include "game.h"
#include <raylib.h>
void load_assets (struct game_state &gs) {
};
void update_camera(struct game_state &gs) {
if (gs.camera_on >= 0) {
gs.camera.target = gs.players.at((int)gs.camera_on).pos;
gs.camera.position = gs.players.at((int)gs.camera_on).pos;
gs.camera.position.z = 100;
}
}
void step(struct game_state &gs) {
update_camera(gs);
//process_events(gs);
}
assets_collection::assets_collection()
{
// load assets
}

31
src/game.h

@ -1,6 +1,8 @@ @@ -1,6 +1,8 @@
#pragma once
#include <string>
#include <unordered_map>
#include <raylib.h>
#include <vector>
#include <deque>
@ -29,9 +31,38 @@ struct bullet { @@ -29,9 +31,38 @@ struct bullet {
enum pattern_type pattern;
};
enum camera_target {
FREE = -1,
PLAYER = 0,
};
struct assets_collection {
std::unordered_map<std::string, Texture2D> textures {};
std::unordered_map<std::string, Music> music {};
std::unordered_map<std::string, Sound> sfx {};
assets_collection();
};
struct game_state {
std::vector<player> players;
std::vector<bullet> bullets;
std::deque<IOEVENT> events;
Camera3D camera = {0};
enum camera_target camera_on;
struct assets_collection assets {};
game_state() {
camera.position = (Vector3){ 0.0f, 0.0f, 0.0f };
camera.target = (Vector3){ 0.0f, 0.0f, 200.0f };
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };
camera.fovy = 45.0f;
camera.projection = CAMERA_PERSPECTIVE;
camera_on = PLAYER;
}
};
void step(struct game_state &gs);

15
src/main.cpp

@ -12,11 +12,10 @@ int main(void) @@ -12,11 +12,10 @@ int main(void)
const int screenWidth = 800;
const int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - keyboard input");
raylib::Vector2 ballPosition = { (float)screenWidth/2, (float)screenHeight/2 };
raylib::Vector2 vel = { 0.0f, 0.0f };
raylib::Vector3 ballPosition = { 0,0,200 };
raylib::Vector3 vel = { 0.0f, 0.0f, 0.0f };
raylib::Vector2 accel = { 1.0f, 1.0f };
accel *= 1.5f;
float decel = 0.85f;
@ -25,13 +24,10 @@ int main(void) @@ -25,13 +24,10 @@ int main(void)
while (!WindowShouldClose())
{
// Update
//----------------------------------------------------------------------------------
if (IsKeyDown(KEY_RIGHT)) vel.x += accel.x;
if (IsKeyDown(KEY_LEFT)) vel.x -= accel.x;
if (IsKeyDown(KEY_UP)) vel.y -= accel.y;
if (IsKeyDown(KEY_DOWN)) vel.y += accel.y;
//----------------------------------------------------------------------------------
vel *= decel;
@ -40,14 +36,11 @@ int main(void) @@ -40,14 +36,11 @@ int main(void)
gs.players[0].pos.x = ballPosition.x;
gs.players[0].pos.y = ballPosition.y;
step(gs);
draw(gs);
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
CloseWindow();
return 0;
}

Loading…
Cancel
Save