diff options
author | drumsetmonkey <abelleisle@roadrunner.com> | 2016-04-06 07:38:59 -0400 |
---|---|---|
committer | drumsetmonkey <abelleisle@roadrunner.com> | 2016-04-06 07:38:59 -0400 |
commit | 3ca4cca09ed9a2b1028928dea98f19bd26ab3b2c (patch) | |
tree | f8444f987be86181786859c2aabdd2d7eb2a5539 /src/world.cpp | |
parent | b2ea70a36ba2249383c9b5cb3c2c784c28311938 (diff) |
First world and style
Diffstat (limited to 'src/world.cpp')
-rw-r--r-- | src/world.cpp | 50 |
1 files changed, 38 insertions, 12 deletions
diff --git a/src/world.cpp b/src/world.cpp index bcd4f7a..625a33b 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -434,20 +434,20 @@ void World::draw(Player *p){ safeSetColorA( 255, 255, 255, weather == WorldWeather::Snowy ? 150 : 255 - worldShade * 4); glBegin( GL_QUADS ); - glTexCoord2i( 0, 0 ); glVertex2i( offset.x - SCREEN_WIDTH/2-5, SCREEN_HEIGHT ); - glTexCoord2i( 1, 0 ); glVertex2i( offset.x + SCREEN_WIDTH/2+5, SCREEN_HEIGHT ); - glTexCoord2i( 1, 1 ); glVertex2i( offset.x + SCREEN_WIDTH/2+5, 0 ); - glTexCoord2i( 0, 1 ); glVertex2i( offset.x - SCREEN_WIDTH/2-5, 0 ); + glTexCoord2i( 0, 0 ); glVertex2i( offset.x - SCREEN_WIDTH/2-5, offset.y + SCREEN_HEIGHT/2 ); + glTexCoord2i( 1, 0 ); glVertex2i( offset.x + SCREEN_WIDTH/2+5, offset.y + SCREEN_HEIGHT/2 ); + glTexCoord2i( 1, 1 ); glVertex2i( offset.x + SCREEN_WIDTH/2+5, offset.y - SCREEN_HEIGHT/2 ); + glTexCoord2i( 0, 1 ); glVertex2i( offset.x - SCREEN_WIDTH/2-5, offset.y - SCREEN_HEIGHT/2 ); glEnd(); bgTex->bindNext(); safeSetColorA( 255, 255, 255, worldShade * 4); glBegin( GL_QUADS ); - glTexCoord2i( 0, 0 ); glVertex2i( worldStart, SCREEN_HEIGHT ); - glTexCoord2i( 1, 0 ); glVertex2i( -worldStart, SCREEN_HEIGHT ); - glTexCoord2i( 1, 1 ); glVertex2i( -worldStart, 0 ); - glTexCoord2i( 0, 1 ); glVertex2i( worldStart, 0 ); + glTexCoord2i( 0, 0 ); glVertex2i( offset.x - SCREEN_WIDTH/2-5, offset.y + SCREEN_HEIGHT/2 ); + glTexCoord2i( 1, 0 ); glVertex2i( offset.x + SCREEN_WIDTH/2+5, offset.y + SCREEN_HEIGHT/2 ); + glTexCoord2i( 1, 1 ); glVertex2i( offset.x + SCREEN_WIDTH/2+5, offset.y - SCREEN_HEIGHT/2 ); + glTexCoord2i( 0, 1 ); glVertex2i( offset.x - SCREEN_WIDTH/2-5, offset.y - SCREEN_HEIGHT/2 ); glEnd(); glDisable( GL_TEXTURE_2D ); @@ -524,7 +524,15 @@ void World::draw(Player *p){ // draw particles and buildings - std::for_each( particles.begin(), particles.end(), [](Particles part) { if ( part.behind ) part.draw(); }); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, colorIndex); + + glUniform1i(glGetUniformLocation(shaderProgram, "sampler"), 0); + glUseProgram(shaderProgram); + + std::for_each( particles.begin(), particles.end(), [](Particles part) { if ( part.behind ) part.draw(); }); + + glUseProgram(0); for ( auto &b : build ) b->draw(); @@ -671,8 +679,17 @@ void World::draw(Player *p){ * Draw remaining entities. */ + + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, colorIndex); + + glUniform1i(glGetUniformLocation(shaderProgram, "sampler"), 0); + glUseProgram(shaderProgram); + std::for_each( particles.begin(), particles.end(), [](Particles part) { if ( !part.behind ) part.draw(); }); + glUseProgram(0); + for ( auto &n : npc ) n->draw(); @@ -1383,9 +1400,18 @@ draw( Player *p ) /* * Draw all entities. */ + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, colorIndex); - for ( auto &part : particles ) - part.draw(); + glUniform1i(glGetUniformLocation(shaderProgram, "sampler"), 0); + glUseProgram(shaderProgram); + + std::for_each( particles.begin(), particles.end(), [](Particles &part) { part.draw(); }); + + glUseProgram(0); + + /*for ( auto &part : particles ) + part.draw();*/ for ( auto &e : entity ) e->draw(); @@ -1542,7 +1568,7 @@ loadWorldFromXMLNoSave( std::string path ) { loadedRight = false; } } else - abort(); + abort(); } else if ( name == "style" ) { tmp->setStyle(wxml->StrAttribute("folder")); tmp->setBackground((WorldBGType)wxml->UnsignedAttribute("background")); |