added loca 2
This commit is contained in:
1 parent
01be8852c6
commit
8191db025f
3 files changed
+133
-9
No files matched your search
+33
-2
@@ -24,6 +24,7 @@ namespace ZL
|
||||
: renderer(iRenderer)
|
||||
, inventory(iInventory)
|
||||
, locationId(locId)
|
||||
, roofObjectKey("")
|
||||
{
|
||||
|
||||
}
|
||||
@@ -228,7 +229,7 @@ void Location::setup()
|
||||
std::vector<ModelAsset> models = {
|
||||
{"resources/out/AzsBase001.txt", "resources/ghost_avatar.png", {0.0f, 2.0f, 0.0f}, 2.0f},
|
||||
{"resources/out/AzsRoof001.txt", "resources/ghost_avatar.png", {0.0f, 2.0f, 0.0f}, 2.0f},
|
||||
{"resources/out/floor001.txt", "resources/ghost_avatar.png", {0.0f, 2.0f, 0.0f}, 2.0f},
|
||||
{"resources/out/floor001.txt", "resources/ghost_avatar.png", {0.0f, -1.97f, 0.0f}, 2.0f},
|
||||
{"resources/out/roof001.txt", "resources/ghost_avatar.png", {0.0f, 2.0f, 0.0f}, 2.0f},
|
||||
{"resources/out/Walls001.txt", "resources/ghost_avatar.png", {0.0f, 2.0f, 0.0f}, 2.0f},
|
||||
{"resources/out/Price001.txt", "resources/w/blue.png", {0.0f, 1.0f, 5.0f}, 2.0f}
|
||||
@@ -242,7 +243,16 @@ void Location::setup()
|
||||
obj.mesh.data.Move(m.position);
|
||||
obj.mesh.RefreshVBO();
|
||||
obj.texture = std::make_shared<Texture>(CreateTextureDataFromPng(m.texPath, CONST_ZIP_FILE));
|
||||
gameObjects["forest_model_" + std::to_string(i)] = std::move(obj);
|
||||
//gameObjects["forest_model_" + std::to_string(i)] = std::move(obj);
|
||||
roofHideZones.clear();
|
||||
roofHideZones.emplace_back(Eigen::Vector2f(-9.3f, -5.0f), Eigen::Vector2f(2.5f, 1.7f));
|
||||
if (i == 3) {
|
||||
gameObjects["roof"] = std::move(obj);
|
||||
roofObjectKey = "roof";
|
||||
}
|
||||
else {
|
||||
gameObjects["forest_model_" + std::to_string(i)] = std::move(obj);
|
||||
}
|
||||
}
|
||||
|
||||
auto playerTexture = std::make_shared<Texture>(CreateTextureDataFromPng("resources/w/gg/IMG_20260413_182354_992.png", CONST_ZIP_FILE));
|
||||
@@ -516,6 +526,9 @@ void Location::setup()
|
||||
renderer.DrawVertexRenderStruct(roomMesh);
|
||||
|
||||
for (auto& [name, gameObj] : gameObjects) {
|
||||
if (name == roofObjectKey && !roofVisible) {
|
||||
continue;
|
||||
}
|
||||
glBindTexture(GL_TEXTURE_2D, gameObj.texture->getTexID());
|
||||
renderer.DrawVertexRenderStruct(gameObj.mesh);
|
||||
}
|
||||
@@ -594,6 +607,9 @@ void Location::setup()
|
||||
renderer.DrawVertexRenderStruct(roomMesh);
|
||||
|
||||
for (auto& [name, gameObj] : gameObjects) {
|
||||
if (name == roofObjectKey && !roofVisible) {
|
||||
continue;
|
||||
}
|
||||
renderer.DrawVertexRenderStruct(gameObj.mesh);
|
||||
}
|
||||
|
||||
@@ -680,6 +696,9 @@ void Location::setup()
|
||||
|
||||
CheckGlError(__FILE__, __LINE__);
|
||||
for (auto& [name, gameObj] : gameObjects) {
|
||||
if (name == roofObjectKey && !roofVisible) {
|
||||
continue;
|
||||
}
|
||||
glBindTexture(GL_TEXTURE_2D, gameObj.texture->getTexID());
|
||||
renderer.DrawVertexRenderStruct(gameObj.mesh);
|
||||
}
|
||||
@@ -725,6 +744,18 @@ void Location::setup()
|
||||
if (player) {
|
||||
player->update(delta);
|
||||
dialogueSystem.update(static_cast<int>(delta), player->position);
|
||||
if (!roofObjectKey.empty()) {
|
||||
bool insideAnyZone = false;
|
||||
const Eigen::Vector2f playerPos2d(player->position.x(), player->position.z());
|
||||
for (const auto& zone : roofHideZones) {
|
||||
if (zone.contains(playerPos2d)) {
|
||||
insideAnyZone = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
const float maxHeightForHide = 3.0f;
|
||||
roofVisible = !(insideAnyZone && player->position.y() < maxHeightForHide);
|
||||
}
|
||||
}
|
||||
for (auto& npc : npcs) npc->update(delta);
|
||||
|
||||
|
||||
@@ -82,6 +82,9 @@ namespace ZL
|
||||
|
||||
private:
|
||||
std::string locationId;
|
||||
std::string roofObjectKey;
|
||||
bool roofVisible = true;
|
||||
std::vector<Eigen::AlignedBox<float, 2>> roofHideZones;
|
||||
};
|
||||
|
||||
} // namespace ZL
|
||||
Reference in new issue
Block a user