aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile2
-rw-r--r--src/entities.cpp23
-rw-r--r--src/gameplay.cpp8
-rw-r--r--src/world.cpp34
4 files changed, 60 insertions, 7 deletions
diff --git a/src/Makefile b/src/Makefile
index a243846..972edcb 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,4 +1,4 @@
-LIBS = -lGL -lSDL2main -lSDL2 -lSDL2_image -lSDL2_mixer -lfreetype
+LIBS = -lGL -lSDL2 -lSDL2_image -lSDL2_mixer -lfreetype
FLAGS = -m32 -std=c++11 -I../include -I../include/freetype2
diff --git a/src/entities.cpp b/src/entities.cpp
index 0320b60..a8e9bfb 100644
--- a/src/entities.cpp
+++ b/src/entities.cpp
@@ -6,6 +6,8 @@ extern unsigned int loops;
extern World *currentWorld;
+extern Player *player;
+
void Entity::spawn(float x, float y){ //spawns the entity you pass to it based off of coords and global entity settings
loc.x = x;
loc.y = y;
@@ -89,6 +91,18 @@ Mob::Mob(int sub){
inv = new Inventory(NPC_INV_SIZE);
}
+Object::Object(int id):ID(id){
+ type = OBJECTT;
+ alive = true;
+ near = false;
+ width = HLINE * 8;
+ height = HLINE * 8;
+
+ maxHealth = health = 1;
+ tex = new Texturec(1, "assets/items/ITEM_SWORD.png");
+}
+
+
void Entity::draw(void){ //draws the entities
glPushMatrix();
if(type==NPCT){
@@ -161,6 +175,8 @@ void Entity::draw(void){ //draws the entities
default:
break;
}
+ }else if(type == OBJECTT){
+ tex->bind(0);
}else{
tex->bind(0);
}
@@ -278,6 +294,11 @@ void NPC::interact(){ //have the npc's interact back to the player
}
}
+void Object::interact(){
+ this->alive = false;
+ player->inv->addItem((ITEM_ID)(ID), (char)1);
+}
+
/*
* This spawns the structures
*
@@ -358,4 +379,4 @@ void Mob::wander(int timeRun){
default:
break;
}
-}
+} \ No newline at end of file
diff --git a/src/gameplay.cpp b/src/gameplay.cpp
index 4e67bb8..fcc501c 100644
--- a/src/gameplay.cpp
+++ b/src/gameplay.cpp
@@ -5,7 +5,6 @@
extern World *currentWorld;
extern Player *player;
-
extern void mainLoop(void);
void waitForDialog(void){
@@ -52,7 +51,6 @@ void initEverything(void){
/*
* World creation:
*/
-
World *test=new World();
World *playerSpawnHill=new World();
@@ -109,8 +107,10 @@ void initEverything(void){
* Spawn a mob.
*/
- currentWorld->addMob(MS_RABBIT,200,100);
- currentWorld->addMob(MS_BIRD,-500,500);
+ test->addMob(MS_RABBIT,200,100);
+ test->addMob(MS_BIRD,-500,500);
+
+ currentWorld->addObject(2, 500,200);
/*
* Link all the entities that were just created to the initial world, and setup a test AI function.
diff --git a/src/world.cpp b/src/world.cpp
index 9d41623..7b1580a 100644
--- a/src/world.cpp
+++ b/src/world.cpp
@@ -286,7 +286,9 @@ LOOP2:
/*
* Draw the layer up until the grass portion, which is done later.
*/
-
+ /*
+ * TODO: CLYNE CHANGE THE NAME OF THIS
+ */
bool hey=false;
glBegin(GL_QUADS);
for(i=is;i<ie-GEN_INC;i++){
@@ -372,6 +374,13 @@ LOOP2:
m->draw();
m->loc.y-=(yoff-DRAW_Y_OFFSET);
}
+ for(auto &o : current->object){
+ if(o->alive){
+ o->loc.y+=(yoff-DRAW_Y_OFFSET);
+ o->draw();
+ o->loc.y-=(yoff-DRAW_Y_OFFSET);
+ }
+ }
/*
* If we're drawing the closest/last world, handle and draw the player.
@@ -549,6 +558,18 @@ void World::addStructure(_TYPE t,float x,float y,World *outside,World *inside){
entity.push_back(build.back());
}
+/*template<class T>
+void World::getEntityLocation(std::vector<T*>&vecBuf, unsigned int n){
+ T bufVar = vecBuf.at(n);
+ unsigned int i = 0;
+ for(auto &e : entity){
+ if(entity.at(i) == bufVar){
+ entity.erase(entity.begin()+i);
+ }
+ i++;
+ }
+}*/
+
void World::addMob(int t,float x,float y){
mob.push_back(new Mob(t));
mob.back()->spawn(x,y);
@@ -563,6 +584,17 @@ void World::addNPC(float x,float y){
entity.push_back(npc.back());
}
+void World::addObject(int i, float x, float y){
+ object.push_back(new Object(i));
+ object.back()->spawn(x,y);
+
+ entity.push_back(object.back());
+}
+
+/*void World::removeObject(Object i){
+ object.delete(i);
+}*/
+
/*
* The rest of these functions are explained well enough in world.h ;)
*/