Fixing dialogues

This commit is contained in:
Vladislav Khorev committed 2026-07-05 14:48:46 +03:00
1 parent 8a6366098c
commit 2d8f80b675
11 files changed
+3633 -6454

No files matched your search

@@ -1,5 +1,395 @@
{
"objects": [
{
"name": "WashingMachine002",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": 7.432074069976807,
"boundsMaxY": 1.0,
"boundsMaxZ": -21.8901309967041,
"boundsMinX": 6.740968227386475,
"boundsMinY": 0.0,
"boundsMinZ": -22.65306282043457,
"interactionPositionX": 7.092249870300293,
"interactionPositionY": 0.0,
"interactionPositionZ": -21.688047409057617,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_washing_machine1_click"
},
{
"name": "Dryer002",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": 8.28981876373291,
"boundsMaxY": 1.0,
"boundsMaxZ": -18.923171997070313,
"boundsMinX": 7.680607795715332,
"boundsMinY": 0.0,
"boundsMinZ": -20.80185890197754,
"interactionPositionX": 7.519911766052246,
"interactionPositionY": 0.0,
"interactionPositionZ": -19.9647274017334,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_dryer1_click"
},
{
"name": "Toilet001",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": 4.4593305587768555,
"boundsMaxY": 1.0,
"boundsMaxZ": -11.48042106628418,
"boundsMinX": 3.2783970832824707,
"boundsMinY": 0.0,
"boundsMinZ": -12.36163330078125,
"interactionPositionX": 3.0549540519714355,
"interactionPositionY": 0.0,
"interactionPositionZ": -11.968530654907227,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_toilet_click"
},
{
"name": "Sink002",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": 5.51751184463501,
"boundsMaxY": 1.0,
"boundsMaxZ": -17.208547592163086,
"boundsMinX": 4.764839172363281,
"boundsMinY": 0.0,
"boundsMinZ": -17.795103073120117,
"interactionPositionX": 5.151419639587402,
"interactionPositionY": 0.0,
"interactionPositionZ": -17.978452682495117,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_sink1_click"
},
{
"name": "Sink003",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": 3.7351462841033936,
"boundsMaxY": 1.0,
"boundsMaxZ": -17.302574157714844,
"boundsMinX": 3.01029372215271,
"boundsMinY": 0.0,
"boundsMinZ": -17.781177520751953,
"interactionPositionX": 3.375365734100342,
"interactionPositionY": 0.0,
"interactionPositionZ": -17.981727600097656,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_sink1_click"
},
{
"name": "Sink004",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": -2.2296533584594727,
"boundsMaxY": 1.0,
"boundsMaxZ": -17.227062225341797,
"boundsMinX": -2.9436182975769043,
"boundsMinY": 0.0,
"boundsMinZ": -17.77179527282715,
"interactionPositionX": -2.59865665435791,
"interactionPositionY": 0.0,
"interactionPositionZ": -17.93155860900879,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_sink1_click"
},
{
"name": "Sink005",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": 4.416268825531006,
"boundsMaxY": 1.0,
"boundsMaxZ": -12.791759490966797,
"boundsMinX": 3.920942783355713,
"boundsMinY": 0.0,
"boundsMinZ": -13.564033508300781,
"interactionPositionX": 3.7146787643432617,
"interactionPositionY": 0.0,
"interactionPositionZ": -13.194132804870605,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_sink1_click"
},
{
"name": "Shower001",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": 2.3768115043640137,
"boundsMaxY": 2.0,
"boundsMaxZ": -11.50362777709961,
"boundsMinX": 1.2427451610565186,
"boundsMinY": 0.0,
"boundsMinZ": -12.714797973632813,
"interactionPositionX": 2.584789991378784,
"interactionPositionY": 0.0,
"interactionPositionZ": -12.181373596191406,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_shower_click"
},
{
"name": "Freezer001",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": 8.604349136352539,
"boundsMaxY": 2.0,
"boundsMaxZ": -11.518025398254395,
"boundsMinX": 7.797623634338379,
"boundsMinY": 0.0,
"boundsMinZ": -12.408218383789063,
"interactionPositionX": 8.222862243652344,
"interactionPositionY": 0.0,
"interactionPositionZ": -12.581172943115234,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_freezer_click"
},
{
"name": "Boombox001",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": 5.2904534339904785,
"boundsMaxY": 1.1,
"boundsMaxZ": -11.849668502807617,
"boundsMinX": 4.911247253417969,
"boundsMinY": 0.5,
"boundsMinZ": -12.062947273254395,
"interactionPositionX": 5.848934173583984,
"interactionPositionY": 0.0,
"interactionPositionZ": -12.907997131347656,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_boombox_click"
},
{
"name": "WashingMachine001",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": 3.410832643508911,
"boundsMaxY": 1.0,
"boundsMaxZ": -21.889999389648438,
"boundsMinX": 2.6974430084228516,
"boundsMinY": 0.0,
"boundsMinZ": -22.696657180786133,
"interactionPositionX": 3.0979061126708984,
"interactionPositionY": 0.0,
"interactionPositionZ": -21.774076461791992,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_washing_machine1_click"
},
{
"name": "Shelf001",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": 5.773579120635986,
"boundsMaxY": 2.0,
"boundsMaxZ": -16.239931106567383,
"boundsMinX": 4.579720497131348,
"boundsMinY": 0.0,
"boundsMinZ": -16.925704956054688,
"interactionPositionX": 5.092929363250732,
"interactionPositionY": 0.0,
"interactionPositionZ": -16.110231399536133,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_shelf_click"
},
{
"name": "Stove001",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": -4.006306171417236,
"boundsMaxY": 1.0,
"boundsMaxZ": -17.279170989990234,
"boundsMinX": -5.884621620178223,
"boundsMinY": 0.0,
"boundsMinZ": -17.987342834472656,
"interactionPositionX": -4.4686360359191895,
"interactionPositionY": 0.0,
"interactionPositionZ": -18.25413703918457,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_stove1_click"
},
{
"name": "Dryer001",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": 6.05394983291626,
"boundsMaxY": 1.0,
"boundsMaxZ": -21.59303092956543,
"boundsMinX": 4.126986980438232,
"boundsMinY": 0.0,
"boundsMinZ": -22.24971580505371,
"interactionPositionX": 5.124067783355713,
"interactionPositionY": 0.0,
"interactionPositionZ": -21.41361427307129,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_dryer1_click"
},
{
"name": "Sink001",
"texturePath": "resources/transparent.png",
"meshPath": "resources/w/Cube_001.txt.bin",
"castShadowNight": false,
"castShadow": false,
"rotationX": 0.0,
"rotationY": 0.0,
"rotationZ": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"positionZ": 0.0,
"boundsMaxX": 7.173610687255859,
"boundsMaxY": 1.0,
"boundsMaxZ": -17.20107650756836,
"boundsMinX": 6.502869606018066,
"boundsMinY": 0.0,
"boundsMinZ": -17.762712478637695,
"interactionPositionX": 6.807286262512207,
"interactionPositionY": 0.0,
"interactionPositionZ": -17.994768142700195,
"approachRadius": 0.6,
"scale": 1.0,
"interactionRadius": 0.3,
"activateFunction": "on_sink1_click"
},
{
"name": "Door_Room_1_1_0_Leaf_001",
"texturePath": "resources/w/dorm2/interior_door_tex003.png",
File diff suppressed because it is too large. Load diff
Binary file not shown.
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+41 -1
View File
@@ -14,6 +14,7 @@ journal_picked_up = false
function on_npc_interact(npc_index)
if npc_index == 0 then
--[[
local player_alik_aware = game_api.getIntValue("alik_aware")
local player_container_aware = game_api.getIntValue("player_container_aware")
if player_container_aware == 1 then
@@ -23,7 +24,9 @@ function on_npc_interact(npc_index)
game_api.setIntValue("player_container_aware", 1)
else
game_api.start_dialogue("dialog_alik001")
end
end]]
game_api.start_dialogue("dialog_alik002")
end
end
@@ -240,6 +243,43 @@ function on_aiperi_dialog_over()
game_api.close_phone()
end
function on_freezer_click()
game_api.start_dialogue("dialog_freezer001")
end
function on_boombox_click()
game_api.start_dialogue("dialog_boombox001")
end
function on_washing_machine1_click()
game_api.start_dialogue("dialog_washing_machine001")
end
function on_shelf_click()
game_api.start_dialogue("dialog_shelf001")
end
function on_stove1_click()
game_api.start_dialogue("dialog_stove001")
end
function on_dryer1_click()
game_api.start_dialogue("dialog_dryer001")
end
function on_sink1_click()
game_api.start_dialogue("dialog_wash001")
end
function on_shower_click()
game_api.start_dialogue("dialog_shower001")
end
function on_toilet_click()
game_api.start_dialogue("dialog_toilet001")
end
game_api.set_location_callbacks(
function()
print("Enter location dorm")
+1 -3
View File
@@ -498,7 +498,7 @@ namespace ZL
params_dorm.gameObjectsJsonPath = "resources/config2/gameobjects_dorm_new_x.json";
params_dorm.npcsJsonPath = "resources/config2/npcs_dorm.json";
params_dorm.dialoguesJsonPath = "resources/dialogue/dorm_dialogues.json";
params_dorm.dialoguesJsonPath = "resources/dialogue/dorm_dialogues003.json";
/*
params_dorm.navigationJsonPaths = {
@@ -519,7 +519,6 @@ namespace ZL
"resources/navigation/dorm3_all_open.txt", //5
};
/*
params_dorm.navigationJsonPaths = {
"resources/navigation/dorm0_large.json",
@@ -536,7 +535,6 @@ namespace ZL
params_dorm.interactiveObjectsJsonPath = "resources/config2/interactive_objects_dorm_x.json";
params_dorm.playerPosition = Eigen::Vector3f(6.76345, 0, -14.6022);
gameState.locations["location_dorm"] = std::make_shared<Location>(renderer, gameState.inventory);
gameState.locations["location_dorm"]->setup(params_dorm, &gameState.questJournal);
gameState.locations["location_dorm"]->scriptEngine.setGlobalStore(&gameState.globalInts);
+6 -4
View File
@@ -20,6 +20,7 @@ bool DialogueOverlay::init(Renderer& renderer, const std::string& zipFile) {
textboxTexture = renderer.textureManager.LoadFromPng("resources/dialogue/textbox_bg.png", zipFile);
textboxChoiceTexture = renderer.textureManager.LoadFromPng("resources/dialogue/DialogChoice001.png", zipFile);
textboxChoicePortraitTexture = renderer.textureManager.LoadFromPng("resources/dialogue/DialogChoicePortrait001.png", zipFile);
choiceMainTexture = renderer.textureManager.LoadFromPng("resources/dialogue/ChoiceNormal001.png", zipFile);
choiceOptionalTexture = renderer.textureManager.LoadFromPng("resources/dialogue/ChoiceNormal001.png", zipFile);
@@ -156,10 +157,11 @@ void DialogueOverlay::drawLandscape(Renderer& renderer, const PresentationModel&
if (model.mode == PresentationMode::Choice) {
const float choiceStartY = 270.f-35;
const float choiceHeight = 121.f*0.9;
const float choiceSpacing = -30.f;
const float choiceWidth = 913.f * 0.9;
float choiceStartY = 400.f - (choiceHeight + choiceSpacing) * (model.choices.size());
if (choiceQuads.size() < model.choices.size()) {
choiceQuads.resize(model.choices.size());
@@ -213,8 +215,8 @@ void DialogueOverlay::drawPortrait(Renderer& renderer, const PresentationModel&
const float H = Environment::projectionHeight;
// Panel: DialogChoice001.png scaled to full screen width, aspect ratio preserved.
const float texAspect = static_cast<float>(textboxChoiceTexture->getWidth())
/ static_cast<float>(textboxChoiceTexture->getHeight());
const float texAspect = static_cast<float>(textboxChoicePortraitTexture->getWidth())
/ static_cast<float>(textboxChoicePortraitTexture->getHeight());
const float panelW = W;
const float panelH = panelW / texAspect;
const float clipAtBottom = 18.f;
@@ -259,7 +261,7 @@ void DialogueOverlay::drawPortrait(Renderer& renderer, const PresentationModel&
renderer.LoadIdentity();
renderer.RenderUniform1f("uAlpha", 1.0f);
glBindTexture(GL_TEXTURE_2D, textboxChoiceTexture->getTexID());
glBindTexture(GL_TEXTURE_2D, textboxChoicePortraitTexture->getTexID());
renderer.DrawVertexRenderStruct(portraitPanelQuad.mesh);
if (model.portraitPath != "resources/dialogue/portrait_phone.png")
+1
View File
@@ -28,6 +28,7 @@ private:
std::shared_ptr<Texture> textboxTexture;
std::shared_ptr<Texture> textboxChoiceTexture;
std::shared_ptr<Texture> textboxChoicePortraitTexture;
std::shared_ptr<Texture> choiceMainTexture;
std::shared_ptr<Texture> choiceOptionalTexture;