function foo() tree() .node("p1", Quaternion(), Vector3(0, 0, -200)) .entity("b1", "residental-house1.glb") .endnode() .node("p2", Quaternion(), Vector3(0, 0, -150)) .entity("residental-house1.glb") .endnode() .node("p3", Quaternion(), Vector3(0, 0, -100)) .entity("residental-house1.glb") .endnode() .node("p4", Quaternion(), Vector3(0, 0, -50)) .entity("residental-house1.glb") .endnode() .node("p5", Quaternion(), Vector3(0, 0, 50)) .entity("residental-house1.glb") .endnode() .node("p6", Quaternion(), Vector3(0, 0, 100)) .entity("residental-house1.glb") .endnode() .node("p7", Quaternion(), Vector3(0, 0, 150)) .entity("residental-house2.glb") .endnode() .node("p8", Quaternion(), Vector3(0, 0, 200)) .entity("residental-house3.glb") .endnode() for x = -1000, 1000, 50 do for z = -1000, 1000, 50 do if not ((x >-100 and x < 100) and (z > -100 and z < 100)) then tree() .node("p00" .. tostring(x * 1000 + z), Quaternion(), Vector3(x, 0, z)) .entity("residental-house2.glb") .endnode() end end end v = Vector3(0, 1, 2) end --[[ narration = { position = 1, narration_start = { "The party was hot, girls were sexy the wine, beer and whisky were in \ enormous numbers. It was anniversary since you set sail with your friends. \ The sea was calm and everything promised you another great night.", "The whole year with your friends on your ship over vast seas of the world in decay was almost over.\ It was so good year full of adventure, romance, indecency and luxury.", "Your trusted friends decided that you have too much, they have too much of you and you owe them a lot.", "They found you drunk in your room and moved to the deck and used ropes to \ restrain you and attach a bucket of stones or something else heavy to your body.", "After a few hours passed two strong people pulled you to the side and \ dropped you into the sea. Last thing you heard before you hit the water was happy laugher..." }, progress = function(this) if #this.narration_start < this.position then return "" end local ret = this.narration_start[this.position] this.position = this.position + 1 return ret end, } ]]-- local narrator = require('narrator.narrator') -- Parse a book from the Ink file. local book = narrator.parse_file('stories.game') -- Init a story from the book local story = narrator.init_story(book) -- Begin the story story:begin() function dump(o) if type(o) == 'table' then local s = '{ ' for k,v in pairs(o) do if type(k) ~= 'number' then k = '"'..k..'"' end s = s .. '['..k..'] = ' .. dump(v) .. ',' end return s .. '} ' else return tostring(o) end end function _narration() local ret = "" local choices = {} if story:can_continue() then local paragraphs = story:continue() for _, paragraph in ipairs(paragraphs) do local text = paragraph.text if paragraph.tags then text = text .. ' #' .. table.concat(paragraph.tags, ' #') end ret = ret .. text end if story:can_choose() then local ch = story:get_choices() for i, choice in ipairs(ch) do table.insert(choices, choice.text) print(i, dump(choice)) end end end if (#choices > 0) then print("choices!!!") narrate(ret, choices) else narrate(ret) end end setup_handler(function(event) print(event) if event == "startup" then main_menu() elseif event == "narration_progress" then _narration() elseif event == "narration_answered" then local answer = narration_get_answer() story:choose(answer) _narration() elseif event == "new_game" then local ret = "" story = narrator.init_story(book) story:begin() _narration() end end)