aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/entities.hpp2
-rw-r--r--include/world.hpp4
-rw-r--r--src/entities.cpp6
-rw-r--r--src/world.cpp47
-rw-r--r--xml/!town.xml6
-rw-r--r--xml/bobshouse.xml2
6 files changed, 37 insertions, 30 deletions
diff --git a/include/entities.hpp b/include/entities.hpp
index 49598bd..945e8c8 100644
--- a/include/entities.hpp
+++ b/include/entities.hpp
@@ -343,6 +343,8 @@ public:
std::string inside;
std::string textureLoc;
+ GLuint insideTex;
+
Structures();
~Structures();
diff --git a/include/world.hpp b/include/world.hpp
index 7dccf1b..dc07267 100644
--- a/include/world.hpp
+++ b/include/world.hpp
@@ -17,8 +17,7 @@
* in World::setBackground() to select the appropriate images.
*/
enum class WorldBGType : unsigned int {
- Forest = 0, /**< A forest theme. */
- WoodHouse /**< An indoor wooden house theme. */
+ Forest = 0 /**< A forest theme. */
};
/**
@@ -199,6 +198,7 @@ private:
public:
float HouseWidth;
+ GLuint houseTex;
inline bool isIndoor(void) const
{ return m_Indoor; }
diff --git a/src/entities.cpp b/src/entities.cpp
index 6b9c3fe..e005df5 100644
--- a/src/entities.cpp
+++ b/src/entities.cpp
@@ -163,7 +163,7 @@ void PlayerSystem::receive(const KeyDownEvent &kde)
} else if (kc == getControl(4)) {
p->speed = .5;
} else if (kc == getControl(5)) {
- static int heyOhLetsGo = 0;
+ /*static int heyOhLetsGo = 0;
//edown = true;
@@ -179,7 +179,7 @@ void PlayerSystem::receive(const KeyDownEvent &kde)
// enable action ui
ui::action::enable();
- }
+ }*/
}
} else if (kc == SDLK_DELETE) {
game::endGame();
@@ -500,6 +500,8 @@ void Structures::createFromXML(XMLElement *e, World *w)
textureLoc = e->StrAttribute("texture");
+ insideTex = Texture::loadTexture(e->StrAttribute("insideTexture"));
+
spawn(static_cast<BUILD_SUB>(e->UnsignedAttribute("type")),
e->QueryFloatAttribute("spawnx", &spawnx) == XML_NO_ERROR ? spawnx : (randGet() % w->getTheWidth() / 2.0f),
100);
diff --git a/src/world.cpp b/src/world.cpp
index 816b280..ef9969f 100644
--- a/src/world.cpp
+++ b/src/world.cpp
@@ -77,16 +77,20 @@ std::string currentXML;
static std::vector<WorldSwitchInfo> arenaNest;
// pathnames of images for world themes
-static const std::string bgPaths[] = {
- "bg.png", // Daytime background
- "bgn.png", // Nighttime background
- "bgFarMountain.png", // Furthest layer
- "forestTileFar.png", // Furthest away Tree Layer
- "forestTileBack.png", // Closer layer
- "forestTileMid.png", // Near layer
- "forestTileFront.png", // Closest layer
- "dirt.png", // Dirt
- "grass.png", // Grass
+using StyleList = std::array<std::string, 9>;
+
+static const std::vector<StyleList> bgPaths = {
+ { // Forest
+ "bg.png", // daytime background
+ "bgn.png", // nighttime background
+ "bgFarMountain.png", // layer 1 (furthest)
+ "forestTileFar.png", // layer 2
+ "forestTileBack.png", // layer 3
+ "forestTileMid.png", // layer 4
+ "forestTileFront.png", // layer 5 (closest)
+ "dirt.png", // ground texture
+ "grass.png" // grass (ground-top) texture
+ }
};
// pathnames of structure textures
@@ -614,6 +618,7 @@ WorldSwitchInfo World::goInsideStructure(Player *p)
delete[] buf;
tmp = dynamic_cast<Structures *>(*d)->insideWorld;
+ tmp->houseTex = dynamic_cast<Structures *>(*d)->insideTex;
return std::make_pair(tmp, vec2 {0, 100});
}
@@ -637,7 +642,7 @@ WorldSwitchInfo World::goInsideStructure(Player *p)
}
if (b == nullptr)*/
- return std::make_pair(this, vec2 {0, 0});
+ return std::make_pair(currentWorld, vec2 {0, 100});
//return std::make_pair(tmp, vec2 {b->loc.x + (b->width / 2), 0});
}
@@ -1416,16 +1421,14 @@ void WorldSystem::render(void)
bg_tex.clear();
if (world->isIndoor() && i == 3) {
- static const GLuint tex = Texture::loadTexture(world->styleFolder + "insideWoodHouse.png");
- static const auto dimm = Texture::imageDim(world->styleFolder + "insideWoodHouse.png");
- glBindTexture(GL_TEXTURE_2D, tex);
+ glBindTexture(GL_TEXTURE_2D, world->houseTex);
bg_items.emplace_back(worldStart, GROUND_HEIGHT_MINIMUM, 7-(i*.1));
bg_items.emplace_back(worldStart + world->HouseWidth, GROUND_HEIGHT_MINIMUM, 7-(i*.1));
- bg_items.emplace_back(worldStart + world->HouseWidth, GROUND_HEIGHT_MINIMUM + dimm.y, 7-(i*.1));
+ bg_items.emplace_back(worldStart + world->HouseWidth, GROUND_HEIGHT_MINIMUM + dim.y, 7-(i*.1));
- bg_items.emplace_back(worldStart + world->HouseWidth, GROUND_HEIGHT_MINIMUM + dimm.y, 7-(i*.1));
- bg_items.emplace_back(worldStart, GROUND_HEIGHT_MINIMUM + dimm.y, 7-(i*.1));
+ bg_items.emplace_back(worldStart + world->HouseWidth, GROUND_HEIGHT_MINIMUM + dim.y, 7-(i*.1));
+ bg_items.emplace_back(worldStart, GROUND_HEIGHT_MINIMUM + dim.y, 7-(i*.1));
bg_items.emplace_back(worldStart, GROUND_HEIGHT_MINIMUM, 7-(i*.1));
} else {
for (int j = worldStart; j <= -worldStart; j += dim.x) {
@@ -1594,10 +1597,10 @@ void WorldSystem::setWorld(World *w)
bgFiles.clear();
- for (int i = 0; i < 9; i++) {
- int idx = /*((int)w->bgType * 9) +*/ i;
- bgFiles.push_back(w->styleFolder + bgPaths[idx]);
- }
+ const auto& files = bgPaths[(int)w->bgType];
+
+ for (const auto& f : files)
+ bgFiles.push_back(w->styleFolder + f);
bgTex = TextureIterator(bgFiles);
}
@@ -1639,7 +1642,7 @@ void WorldSystem::enterWorld(World *w)
void WorldSystem::leaveWorld(void)
{
- world = outside;
+ world = currentWorld = outside;
}
void WorldSystem::singleDetect(Entity *e, entityx::TimeDelta dt)
diff --git a/xml/!town.xml b/xml/!town.xml
index 9d0838b..2d110e8 100644
--- a/xml/!town.xml
+++ b/xml/!town.xml
@@ -4,10 +4,10 @@
<generation width="1600"/>
<time>6000</time>
<spawnx>-300</spawnx>
- <npc name="Sanc" hasDialog="true" health="1" x="23.971899" y="59.998001" dindex="9999"/>
- <npc name="Bob" hasDialog="true" spawnx="30" health="1" x="308.18121" y="60.597992" dindex="0"/>
+ <npc name="Sanc" hasDialog="true" health="1" x="-324.26083" y="70.398842" dindex="9999"/>
+ <npc name="Bob" hasDialog="true" spawnx="30" health="1" x="151.69295" y="71.5989" dindex="0"/>
<structure type="1" spawnx="300" alive="1"/>
- <structure inside="bobshouse.xml" type="1" spawnx="10" alive="1"/>
+ <structure inside="bobshouse.xml" insideTexture="assets/style/classic/bg/insideWoodHouse.png" type="1" spawnx="10" alive="1"/>
<chest alive="1"/>
</World>
diff --git a/xml/bobshouse.xml b/xml/bobshouse.xml
index 43644ca..f13d5ff 100644
--- a/xml/bobshouse.xml
+++ b/xml/bobshouse.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<IndoorWorld>
- <style background="1" bgm="assets/music/theme_jazz.wav" folder="assets/style/classic/"/>
+ <style background="0" bgm="assets/music/theme_jazz.wav" folder="assets/style/classic/"/>
<house width="800" />
<generation width="1600" />
<link outside="town.xml"/>