aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/entities.cpp27
-rw-r--r--src/ui.cpp19
-rw-r--r--src/world.cpp22
3 files changed, 51 insertions, 17 deletions
diff --git a/src/entities.cpp b/src/entities.cpp
index b4c34d9..01b379b 100644
--- a/src/entities.cpp
+++ b/src/entities.cpp
@@ -19,7 +19,8 @@ std::string sTexLoc[] = { "assets/townhall.png",
"assets/house1.png",
"assets/house1.png",
"assets/fountain1.png",
- "assets/lampPost1.png"};
+ "assets/lampPost1.png",
+ "assets/brazzier.png"};
void getRandomName(Entity *e){
unsigned int tempNum,max=0;
@@ -453,9 +454,6 @@ unsigned int Structures::spawn(BUILD_SUB sub, float x, float y, World *oi){
alive = true;
bsubtype = sub;
- int s = -1;
- s = sub;
-
inWorld = oi;
/*
@@ -471,9 +469,15 @@ unsigned int Structures::spawn(BUILD_SUB sub, float x, float y, World *oi){
"assets/lampPost1.png")*/;
unsigned int tempN = (getRand() % 5 + 2);
- switch(s){
+ switch(sub){
+ case TOWN_HALL:
+ tex = new Texturec(1, sTexLoc[sub].c_str());
+ width = 50 * HLINE;
+ height = 40 * HLINE;
+
+ break;
case HOUSE:
- tex = new Texturec(1, sTexLoc[s].c_str());
+ tex = new Texturec(1, sTexLoc[sub].c_str());
width = 50 * HLINE;
height = 40 * HLINE;
for(unsigned int i = 0;i < tempN;i++){
@@ -484,20 +488,25 @@ unsigned int Structures::spawn(BUILD_SUB sub, float x, float y, World *oi){
*/
oi->addNPC(loc.x + i * HLINE ,100);
-
}
break;
case FOUNTAIN:
- tex = new Texturec(1, sTexLoc[s].c_str());
+ tex = new Texturec(1, sTexLoc[sub].c_str());
width = 50 * HLINE;
height = 40 * HLINE;
break;
case LAMP_POST:
- tex = new Texturec(1, sTexLoc[s].c_str());
+ tex = new Texturec(1, sTexLoc[sub].c_str());
width = 10 * HLINE;
height = 40 * HLINE;
oi->addLight({x+SCREEN_WIDTH/2,y+30*HLINE},{1.0f,1.0f,1.0f});
break;
+ case FIRE_PIT:
+ tex = new Texturec(1, sTexLoc[sub].c_str());
+ width = 12 * HLINE;
+ height = 12 * HLINE;
+ oi->addLight({x+SCREEN_WIDTH/2,y},{1.0f,1.0f,1.0f});
+ break;
default:
break;
}
diff --git a/src/ui.cpp b/src/ui.cpp
index 616eb82..4670220 100644
--- a/src/ui.cpp
+++ b/src/ui.cpp
@@ -826,6 +826,25 @@ DONE:
case SDLK_g:
//currentWorld->addStructure(LAMP_POST, player->loc.x, player->loc.y, currentWorld);
break;
+ case SDLK_h:
+ //currentWorld->addStructure(TOWN_HALL, player->loc.x, player->loc.y, currentWorld);
+ break;
+ case SDLK_j:
+ //currentWorld->addStructure(FOUNTAIN, player->loc.x, player->loc.y, currentWorld);
+ break;
+ case SDLK_v:
+ //currentWorld->addVillage(player->loc.x, player->loc.y, 5, 10, 100, currentWorld);
+ break;
+ case SDLK_b:
+ currentWorld->addStructure(FIRE_PIT, player->loc.x, player->loc.y, NULL);
+ break;
+ case SDLK_F12:
+ std::cout << "Took screenshot" << std::endl;
+ // Make the BYTE array, factor of 3 because it's RBG.
+ static GLubyte* pixels = new GLubyte[ 3 * SCREEN_WIDTH * SCREEN_HEIGHT];
+ glReadPixels(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, GL_RGB, GL_UNSIGNED_BYTE, pixels);
+
+ break;
default:
break;
}
diff --git a/src/world.cpp b/src/world.cpp
index 3d7027d..6ee7255 100644
--- a/src/world.cpp
+++ b/src/world.cpp
@@ -229,9 +229,12 @@ void World::deleteEntities(void){
entity.pop_back();
}
while(!particles.empty()){
- delete particles.back();
+ //delete particles.back();
particles.pop_back();
}
+ while(!light.empty()){
+ light.pop_back();
+ }
}
World::~World(void){
@@ -421,7 +424,7 @@ void World::update(Player *p,unsigned int delta){
else if(e->vel.x > 0)e->left = false;
}
}
-
+
for(unsigned int i=0;i<particles.size();i++){
if(particles[i]->kill(deltaTime)){
delete particles[i];
@@ -654,7 +657,8 @@ LOOP2:
* Draw structures. We draw structures behind the dirt/grass so that the building's
* corners don't stick out.
*/
-
+
+ for(auto &part : particles){if(part->behind)part->draw();}
for(auto &b : current->build){
b->draw();
}
@@ -778,7 +782,7 @@ LOOP2:
/*
* Draw non-structure entities.
*/
- for(auto &part : particles){part->draw();}
+ for(auto &part : particles){if(!part->behind)part->draw();}
for(auto &n : current->npc){
n->loc.y+=(yoff-DRAW_Y_OFFSET);
n->draw();
@@ -1045,7 +1049,7 @@ LOOOOP:
part->velx = 0;
part->canMove = false;
}else{
- if(part->vely > -2)part->vely-=.003 * deltaTime;
+ if(part->gravity && part->vely > -2)part->vely-=.003 * deltaTime;
}
what++;
}what=0;
@@ -1122,9 +1126,11 @@ void World::addParticle(float x, float y, float w, float h, float vx, float vy,
}
void World::addLight(vec2 loc, Color color){
- light.push_back(Light());
- light.back().loc = loc;
- light.back().color = color;
+ if(light.size() < 64){
+ light.push_back(Light());
+ light.back().loc = loc;
+ light.back().color = color;
+ }
}
/*void World::removeObject(Object i){