Grid base
This commit is contained in:
parent
76284d80b9
commit
0432d6932c
11 changed files with 81 additions and 14 deletions
20
assets/map
Normal file
20
assets/map
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
######### #########
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# P #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
|
||||
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
######### #########
|
||||
BIN
assets/sprites/wall.png
Normal file
BIN
assets/sprites/wall.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 134 B |
|
|
@ -2,4 +2,3 @@
|
|||
-lraylib
|
||||
-lstdc++
|
||||
-lm
|
||||
-v
|
||||
|
|
|
|||
5
makefile
5
makefile
|
|
@ -1,9 +1,10 @@
|
|||
CFLAGS=$(shell cat compiler_flags.txt)
|
||||
CP=clang
|
||||
CFLAGS=$(shell cat compiler_flags.txt | tr '\n' ' ')
|
||||
FILES=$(wildcard src/*.cpp)
|
||||
|
||||
build/raylib-test-linux.x86_64 : $(FILES)
|
||||
mkdir -p build
|
||||
clang $(FILES) $(CFLAGS) -o build/raylib-test-linux.x86_64
|
||||
$(CP) $(FILES) $(CFLAGS) -o build/raylib-test-linux.x86_64
|
||||
|
||||
|
||||
clean :
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
// Pacman definitions
|
||||
|
||||
|
||||
Rectangle Pacman::getTextureRect(){
|
||||
Rectangle Pacman::getTextureRect() const{
|
||||
Rectangle result;
|
||||
result.x = 0;
|
||||
result.y = facing*16;
|
||||
|
|
@ -53,7 +53,7 @@ void Pacman::tick() {
|
|||
}
|
||||
}
|
||||
|
||||
void Pacman::draw() {
|
||||
void Pacman::draw() const {
|
||||
// Drawing
|
||||
DrawTextureRec(this->texture, this->getTextureRect(), this->position, WHITE);
|
||||
}
|
||||
|
|
@ -72,7 +72,7 @@ void Wall::ready() {
|
|||
// Set neigbors depending on state
|
||||
}
|
||||
|
||||
void Wall::draw() {
|
||||
void Wall::draw() const {
|
||||
// Draw based on neighbors
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,9 +8,11 @@ class Entity{
|
|||
public:
|
||||
virtual ~Entity(){}
|
||||
|
||||
Vector2 position;
|
||||
|
||||
virtual void ready() {}
|
||||
virtual void process() {}
|
||||
virtual void draw() {}
|
||||
virtual void draw() const {}
|
||||
virtual void tick() {}
|
||||
};
|
||||
|
||||
|
|
@ -19,16 +21,15 @@ class Pacman : public Entity{
|
|||
const int speed = 16;
|
||||
private:
|
||||
Texture2D texture;
|
||||
Vector2 position;
|
||||
int facing;
|
||||
|
||||
Rectangle getTextureRect();
|
||||
Rectangle getTextureRect() const;
|
||||
public:
|
||||
Pacman();
|
||||
Pacman(Vector2 position);
|
||||
~Pacman();
|
||||
void tick() override;
|
||||
void draw() override;
|
||||
void draw() const override;
|
||||
};
|
||||
|
||||
class Wall : public Entity {
|
||||
|
|
@ -38,7 +39,7 @@ class Wall : public Entity {
|
|||
Wall();
|
||||
~Wall();
|
||||
void ready() override;
|
||||
void draw() override;
|
||||
void draw() const override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -35,3 +35,7 @@ int main() {
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void load_map(const char * path){
|
||||
|
||||
}
|
||||
|
|
|
|||
8
src/maploader.cpp
Normal file
8
src/maploader.cpp
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#include "maploader.h"
|
||||
#include <fstream>
|
||||
#include "world.h"
|
||||
|
||||
void loadmap() {
|
||||
|
||||
}
|
||||
|
||||
6
src/maploader.h
Normal file
6
src/maploader.h
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef MAPLOADER_H
|
||||
#define MAPLOADER_H
|
||||
|
||||
void loadmap();
|
||||
|
||||
#endif
|
||||
|
|
@ -21,6 +21,8 @@ void World::setup(){
|
|||
void World::process(){
|
||||
this->clock += GetFrameTime();
|
||||
|
||||
this->update_grid();
|
||||
|
||||
for(int i = 0; i < this->entities.size(); i++) {
|
||||
this->entities[i]->process();
|
||||
if (this->clock>=this->seconds_per_tick) {
|
||||
|
|
@ -33,12 +35,31 @@ void World::process(){
|
|||
}
|
||||
}
|
||||
|
||||
void World::draw() {
|
||||
void World::draw() const {
|
||||
for(int i = 0; i < this->entities.size(); i++) {
|
||||
this->entities[i]->draw();
|
||||
}
|
||||
}
|
||||
|
||||
int indexify_position(Vector2 vector){
|
||||
return (int)(vector.x / 16.0) + GRID_COLUMNS * (int)(vector.y / 16.0);
|
||||
}
|
||||
|
||||
void World::update_grid() {
|
||||
for(int i = 0; i < GRID_CAPACITY; i++)
|
||||
this->grid[i] = nullptr;
|
||||
|
||||
for(int i = 0; i < this->entities.size(); i++)
|
||||
{
|
||||
int indexified_position = indexify_position(this->entities[i]->position);
|
||||
if (indexified_position < 0 || indexified_position >= GRID_CAPACITY)
|
||||
continue;
|
||||
grid[indexified_position] = this->entities[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
World create_world_with(float seconds_per_tick){
|
||||
World result = World();
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,10 @@
|
|||
#include "components.h"
|
||||
#include <vector>
|
||||
|
||||
const int GRID_ROWS = 20;
|
||||
const int GRID_COLUMNS = 20;
|
||||
const int GRID_CAPACITY = GRID_COLUMNS*GRID_ROWS;
|
||||
|
||||
/// Class that holds information about game world
|
||||
class World {
|
||||
public:
|
||||
|
|
@ -11,6 +15,7 @@ class World {
|
|||
~World();
|
||||
|
||||
std::vector<Entity*> entities; /// Main subjects of game world.
|
||||
Entity* grid[GRID_CAPACITY]; /// Grid representation
|
||||
float seconds_per_tick; /// Internal clock speed
|
||||
|
||||
void setup(); /// Sets up game world.
|
||||
|
|
@ -19,14 +24,16 @@ class World {
|
|||
void process(); /// Should be called every frame. Calls
|
||||
/// process() on every entity
|
||||
|
||||
void draw(); /// Should be called at the end of frame.
|
||||
void draw() const; /// Should be called at the end of frame.
|
||||
/// Calls draw() on every entity
|
||||
private:
|
||||
float clock;
|
||||
void update_grid();
|
||||
};
|
||||
|
||||
static World world; /// World singleton
|
||||
|
||||
World create_world_with(float seconds_per_tick);
|
||||
int indexify_position(Vector2 vector);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue