updated script and added back button
This commit is contained in:
parent
08cb7c85a1
commit
1e6f6d14fb
@ -97,7 +97,12 @@
|
||||
{
|
||||
"Name": "NextArrow",
|
||||
"Type": 0,
|
||||
"URL": "https://i.imgur.com/MztSQis.png"
|
||||
"URL": "https://steamusercontent-a.akamaihd.net/ugc/2450610458480705484/35E3F293D0CC3F4852F528259CFBC742772DEA15/"
|
||||
},
|
||||
{
|
||||
"Name": "PreviousArrow",
|
||||
"Type": 0,
|
||||
"URL": "https://steamusercontent-a.akamaihd.net/ugc/2450610458480705628/FE3FD9F32E8704BEB7DD6327225D9D8244115A48/"
|
||||
},
|
||||
{
|
||||
"Name": "Exit",
|
||||
|
@ -31,7 +31,7 @@ tourCardTemplate = {
|
||||
attributes = {
|
||||
id = "tourNarratorImageRight",
|
||||
active = false,
|
||||
height = 125,
|
||||
height = 120,
|
||||
width = 80,
|
||||
rectAlignment = "UpperRight",
|
||||
offsetXY = "80 0"
|
||||
@ -78,6 +78,17 @@ tourCardTemplate = {
|
||||
image = "NextArrow"
|
||||
}
|
||||
},
|
||||
{
|
||||
tag = "Image",
|
||||
attributes = {
|
||||
id = "tourPrevious",
|
||||
height = 45,
|
||||
width = 45,
|
||||
rectAlignment = "LowerCenter",
|
||||
offsetXY = "80 -45",
|
||||
image = "PreviousArrow"
|
||||
}
|
||||
},
|
||||
{
|
||||
tag = "Image",
|
||||
attributes = {
|
||||
|
@ -12,6 +12,7 @@ do
|
||||
local BUBBLE_ID = "tourSpeechBubble"
|
||||
local TEXT_ID = "tourText"
|
||||
local NEXT_BUTTON_ID = "tourNext"
|
||||
local PREVIOUS_BUTTON_ID = "tourPrevious"
|
||||
local STOP_BUTTON_ID = "tourStop"
|
||||
|
||||
-- Table centerpoint for the camera hook object. Camera handling is a bit erratic so it doesn't
|
||||
@ -83,7 +84,7 @@ do
|
||||
|
||||
-- Shows the next card in the tour script. This method is exposed (rather than being part of
|
||||
-- internal) because the XMLUI callbacks expect the method to be on the object directly.
|
||||
---@param player tts__Player object to show the next card for, provided by XMLUI callback
|
||||
---@param player tts__Player Player to show the next card for, provided by XMLUI callback
|
||||
function nextCard(player)
|
||||
internal.hideCard(player.color)
|
||||
Wait.time(function()
|
||||
@ -96,6 +97,17 @@ do
|
||||
end, 0.3)
|
||||
end
|
||||
|
||||
-- Shows the previous card in the tour script. This method is exposed (rather than being part of
|
||||
-- internal) because the XMLUI callbacks expect the method to be on the object directly.
|
||||
---@param player tts__Player Player to show the previous card for, provided by XMLUI callback
|
||||
function previousCard(player)
|
||||
internal.hideCard(player.color)
|
||||
Wait.time(function()
|
||||
tourState[player.color].currentCardIndex = tourState[player.color].currentCardIndex - 1
|
||||
internal.showCurrentCard(player.color)
|
||||
end, 0.3)
|
||||
end
|
||||
|
||||
-- Ends the tour and cleans up the camera. This method is exposed (rather than being part of
|
||||
-- internal) because the XMLUI callbacks expect the method to be on the object directly.
|
||||
---@param player tts__Player object to end the tour for, provided by XMLUI callback
|
||||
@ -181,6 +193,7 @@ do
|
||||
Global.UI.setAttribute(internal.getUiId(CARD_ID, playerColor), "anchorMin", SCREEN_POSITIONS[cardPos])
|
||||
Global.UI.setAttribute(internal.getUiId(CARD_ID, playerColor), "anchorMax", SCREEN_POSITIONS[cardPos])
|
||||
Global.UI.setAttribute(internal.getUiId(NEXT_BUTTON_ID, playerColor), "active", index < #TOUR_SCRIPT)
|
||||
Global.UI.setAttribute(internal.getUiId(PREVIOUS_BUTTON_ID, playerColor), "active", index > 1)
|
||||
|
||||
-- Adjust images so the narrator is on the left or right, as defined by the card
|
||||
if TOUR_SCRIPT[index].speakerSide == "right" then
|
||||
@ -189,6 +202,7 @@ do
|
||||
Global.UI.setAttribute(internal.getUiId(BUBBLE_ID, playerColor), "rotation", "0 180 0")
|
||||
Global.UI.setAttribute(internal.getUiId(TEXT_ID, playerColor), "offsetXY", "-15 -15")
|
||||
Global.UI.setAttribute(internal.getUiId(NEXT_BUTTON_ID, playerColor), "offsetXY", "-35 -45")
|
||||
Global.UI.setAttribute(internal.getUiId(PREVIOUS_BUTTON_ID, playerColor), "offsetXY", "50 -45")
|
||||
Global.UI.setAttribute(internal.getUiId(STOP_BUTTON_ID, playerColor), "offsetXY", "5 -45")
|
||||
else
|
||||
Global.UI.setAttribute(internal.getUiId(LEFT_NARRATOR_ID, playerColor), "active", true)
|
||||
@ -196,6 +210,7 @@ do
|
||||
Global.UI.setAttribute(internal.getUiId(BUBBLE_ID, playerColor), "rotation", "0 0 0")
|
||||
Global.UI.setAttribute(internal.getUiId(TEXT_ID, playerColor), "offsetXY", "15 -15")
|
||||
Global.UI.setAttribute(internal.getUiId(NEXT_BUTTON_ID, playerColor), "offsetXY", "-5 -45")
|
||||
Global.UI.setAttribute(internal.getUiId(PREVIOUS_BUTTON_ID, playerColor), "offsetXY", "80 -45")
|
||||
Global.UI.setAttribute(internal.getUiId(STOP_BUTTON_ID, playerColor), "offsetXY", "35 -45")
|
||||
end
|
||||
end
|
||||
@ -258,8 +273,10 @@ do
|
||||
tourCardTemplate.children[4].attributes.id = internal.getUiId(TEXT_ID, playerColor)
|
||||
tourCardTemplate.children[5].attributes.id = internal.getUiId(NEXT_BUTTON_ID, playerColor)
|
||||
tourCardTemplate.children[5].attributes.onClick = self.getGUID() .. "/nextCard"
|
||||
tourCardTemplate.children[6].attributes.id = internal.getUiId(STOP_BUTTON_ID, playerColor)
|
||||
tourCardTemplate.children[6].attributes.onClick = self.getGUID() .. "/stopTour"
|
||||
tourCardTemplate.children[6].attributes.id = internal.getUiId(PREVIOUS_BUTTON_ID, playerColor)
|
||||
tourCardTemplate.children[6].attributes.onClick = self.getGUID() .. "/previousCard"
|
||||
tourCardTemplate.children[7].attributes.id = internal.getUiId(STOP_BUTTON_ID, playerColor)
|
||||
tourCardTemplate.children[7].attributes.onClick = self.getGUID() .. "/stopTour"
|
||||
internal.setDeepVisibility(tourCardTemplate, playerColor)
|
||||
|
||||
local globalXml = Global.UI.getXmlTable()
|
||||
|
@ -1,28 +1,29 @@
|
||||
-- Script for the SCED tour. Documentation and definitions to come.
|
||||
-- Script for the SCED tour. Documentation and definitions to come.
|
||||
|
||||
TOUR_SCRIPT = {
|
||||
{
|
||||
narrator = "Roland",
|
||||
text = "Despite my best efforts, looks like you found us. You may live to regret that. As long as you're here though we might as well show you around.\n\nUse the arrow to move forward, and if the horrors get to be too much you can quit whenever you like. Ready to get started?",
|
||||
text = "Despite my best efforts, looks like you found us. You may live to regret that. As long as you're here though we might as well show you around.\n\nUse the arrow to move forward, and if the horrors get to be too much you can quit whenever you like. Ready to get started?",
|
||||
position = "center"
|
||||
},
|
||||
{
|
||||
narrator = "Darrell",
|
||||
text = "Cameras can be tricky things. Best you leave handling it to the professionals during the tour. Don't try to move the camera until the tour is complete.\n\nOnce we're done, remember you can use the 'p' key to switch back to third-person mode, and the spacebar to reset the position.",
|
||||
text = "Cameras can be tricky things. Best you leave handling it to the professionals during the tour. Don't try to move the camera until the tour is complete.\n\nOnce we're done, remember you can use the 'p' key to switch back to third-person mode, and the spacebar to reset the position.",
|
||||
position = "center",
|
||||
speakerSide = "right"
|
||||
},
|
||||
{
|
||||
narrator = "Daisy",
|
||||
text = "If you're new to the game, the library here has everything you'll need. A little research can go a long way, and looking into old newspapers for the weird and unusual can yield some surprisingly helpful information.\n\nI put a few right there that might prove enlightening.",
|
||||
text = "If you're new to the game, the library here has everything you'll need. A little research can go a long way, and this place is a great start to look for help understanding the intricacies of rules.\n\nI put a few documents right there that might prove enlightening.",
|
||||
objReferenceData = { owner = "Mythos", type = "RulesReference" },
|
||||
distanceFromObj = 20,
|
||||
position = "west",
|
||||
speakerSide = "right"
|
||||
speakerSide = "right",
|
||||
skipCentering = true
|
||||
},
|
||||
{
|
||||
narrator = "Mandy",
|
||||
text = "To survive what's coming you'll need a deck. If it's safely hidden away on ArkhamDB you can load it here, and even find the newest version after an upgrade without changing the ID.\n\nNo need to publish all your decks, use 'Private' and you can see it. Just make sure to select 'Make your decks public' in ArkhamDB.",
|
||||
text = "To survive what's coming you'll need a deck. If it's safely hidden away on ArkhamDB you can load it here, and even find the newest version after an upgrade without changing the ID.\n\nNo need to publish all your decks, use 'Private' and you can see it. Just make sure to select 'Make your decks public' in ArkhamDB.",
|
||||
objReferenceData = { owner = "Mythos", type = "DeckImporter" },
|
||||
distanceFromObj = -5,
|
||||
position = "northwest",
|
||||
@ -30,15 +31,16 @@ TOUR_SCRIPT = {
|
||||
},
|
||||
{
|
||||
narrator = "Daniela",
|
||||
text = "I prefer the hands-on approach to building things, if you do too you can build a deck yourself.\n\nAll the cards you could ever need are here, laid out like a disassembled engine. Place the cards on the table, copy them for your deck, and you'll be ready for anything.",
|
||||
text = "I prefer the hands-on approach to building things, if you do too you can build a deck yourself.\n\nAll the cards you could ever need are here, laid out like a disassembled engine. Place the cards on the table, copy them for your deck, and you'll be ready for anything.",
|
||||
objReferenceData = { owner = "Mythos", type = "PlayerCardPanel" },
|
||||
distanceFromObj = -7,
|
||||
position = "south",
|
||||
speakerSide = "right"
|
||||
speakerSide = "right",
|
||||
skipCentering = true
|
||||
},
|
||||
{
|
||||
narrator = "Finn",
|
||||
text = "Ready to face the unknown? We've smuggled shocking revelations and devious enemies from all over the world. Download the campaign you want to play, then Place it on the table to see the scenarios.\n\nJust remember - if it turns out to be too much for you, I was never here.",
|
||||
text = "Ready to face the unknown? We've smuggled shocking revelations and devious enemies from all over the world. Download the campaign you want to play, then 'Place' it on the table to see the scenarios.\n\nJust remember - if it turns out to be too much for you, I was never here.",
|
||||
objReferenceData = { owner = "Mythos", type = "CampaignThePathToCarcosa" },
|
||||
distanceFromObj = 20,
|
||||
position = "northwest",
|
||||
@ -46,31 +48,31 @@ TOUR_SCRIPT = {
|
||||
},
|
||||
{
|
||||
narrator = "Diana",
|
||||
text = "These symbols on the bottom right are a repository of arcane knowledge, containing all the official content to download plus some deviously creative works from fans. One should beware those who seem too fond of the darkness, but you cannot deny the quality of their efforts.\n\nDon't see anything here? Only promoted players can access these.",
|
||||
text = "These symbols on the bottom right are a repository of arcane knowledge, containing all the official content to download plus some deviously creative works from fans. One should beware those who seem too fond of the darkness, but you cannot deny the quality of their efforts.\n\nDon't see anything here? Only promoted players can access these.",
|
||||
position = "southeast"
|
||||
},
|
||||
{
|
||||
narrator = "Winifred",
|
||||
text = "No good aviator would fly a plane she didn't know and hadn't tweaked a bit herself. The gear icon contains settings to customize your play experience, from alternate ways to track your clues to a variety of helpers to streamline the game.\n\nEverything here is optional, but who doesn't want to go as fast as they can? Just remember that all settings affect all players, so strap in and trust your pilot!",
|
||||
text = "No good aviator would fly a plane she didn't know and hadn't tweaked a bit herself. The gear icon contains settings to customize your play experience, from alternate ways to track your clues to a variety of helpers to streamline the game.\n\nEverything here is optional, but who doesn't want to go as fast as they can? Just remember that all settings affect all players, so strap in and trust your pilot!",
|
||||
position = "southeast"
|
||||
},
|
||||
{
|
||||
narrator = "Amina",
|
||||
text = "This is the Mythos area. Encounter cards, acts, and agenda will all be placed here while the large map below is where you will be exploring - be sure to set the number of investigators!\n\nYou can count doom on the agenda by clicking the large counter, and the smaller will automatically count doom tokens on the table. The chaos bag is in that book over on the right, and you can add or remove tokens from it whenever you need.",
|
||||
text = "This is the Mythos area. Encounter cards, acts, and agenda will all be placed here while the large map below is where you will be exploring - be sure to set the number of investigators!\n\nYou can count doom on the agenda by clicking the large counter, and the smaller will automatically count doom tokens on the table. The chaos bag is in that book over on the right, and you can add or remove tokens from it whenever you need.",
|
||||
showPos = { x = -2.85, y = 0, z = 0.55 },
|
||||
position = "north",
|
||||
speakerSide = "right"
|
||||
},
|
||||
{
|
||||
narrator = "Gloria",
|
||||
text = "The evils that lurk in this world are out there, creeping ever closer. When they find you, this will easily draw a card from the encounter deck. The deck will even reshuffle itself when needed, for the enemies we face are unending.",
|
||||
text = "The evils that lurk in this world are out there, creeping ever closer. When they find you, this will easily draw a card from the encounter deck.\n\nThe deck will even reshuffle itself when needed, for the enemies we face are unending.",
|
||||
showPos = { x = -35, y = -20, z = 28 },
|
||||
position = "west",
|
||||
skipCentering = true
|
||||
},
|
||||
{
|
||||
narrator = "Jacqueline",
|
||||
text = "When the ire of fate finds you and the chaos looms, this large button will draw a chaos token. Click it again to return the token to the bag.\n\nWhether a vision of the future or a curse from the opponents we face, if you need additional tokens a right-click will draw more. I wish you luck, but have a vision of red tentacles reaching for you...",
|
||||
text = "When the ire of fate finds you and the chaos looms, this large button will draw a chaos token. Click it again to return the token to the bag.\n\nWhether a vision of the future or a curse from the opponents we face, if you need additional tokens a right-click will draw more. I wish you luck, but have a vision of red tentacles reaching for you...",
|
||||
showPos = { x = -35, y = -20, z = 4.25 },
|
||||
position = "north",
|
||||
skipCentering = true,
|
||||
@ -78,7 +80,7 @@ TOUR_SCRIPT = {
|
||||
},
|
||||
{
|
||||
narrator = "Kohaku",
|
||||
text = "Folklorists, immersed in the rich narratives of blessings and curses, explore the essence of human beliefs. You can use this tool to control the amount of bless and curse tokens in the chaos bag. It will also display the amount in the bag (+ sealed on cards) for you. Remember to remove bless / curse tokens with this after resolving them.",
|
||||
text = "Folklorists, immersed in the rich narratives of blessings and curses, explore the essence of human beliefs. You can use this tool to control the amount of bless and curse tokens in the chaos bag. It will also display the amount in the bag (+ sealed on cards) for you. Remember to remove bless / curse tokens with this after resolving them.",
|
||||
objReferenceData = { owner = "Mythos", type = "BlessCurseManager" },
|
||||
position = "belowcenter",
|
||||
skipCentering = true,
|
||||
@ -86,7 +88,7 @@ TOUR_SCRIPT = {
|
||||
},
|
||||
{
|
||||
narrator = "Preston",
|
||||
text = "I can afford to buy what I need, but for those less well-off we've provided an endless pool of tokens to track your game. Simply drag one out of the pools here.\n\nResources are my favorite of course, but damage and horror are as inevitable as taxes. I leave those to my bookkeeper though. Those tokens can work like counters, use the number keys to change the value.",
|
||||
text = "I can afford to buy what I need, but for those less well-off we've provided an endless pool of tokens to track your game. Simply drag one out of the pools here.\n\nResources are my favorite of course, but damage and horror are as inevitable as taxes. I leave those to my bookkeeper though. Those tokens can work like counters, use the number keys to change the value. Damage and horror tokens may also be clicked in the middle.",
|
||||
objReferenceData = { owner = "Mythos", type = "ResourceTokenBag" },
|
||||
position = "north",
|
||||
skipCentering = true,
|
||||
@ -94,7 +96,7 @@ TOUR_SCRIPT = {
|
||||
},
|
||||
{
|
||||
narrator = "Norman",
|
||||
text = "That's the end of the tour, but there's much more to discover if you look in the right places. Some cards have helpers on the right-click menu, and every new version adds new content and functions.\n\nDon't be afraid to explore, and best of luck out there! We'll all need it...",
|
||||
text = "That's the end of the tour, but there's much more to discover if you look in the right places. Some cards have helpers on the right-click menu, and every new version adds new content and functions.\n\nDon't be afraid to explore, and best of luck out there! We'll all need it...",
|
||||
position = "center",
|
||||
speakerSide = "right"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user