Browse Source

Merge pull request #439 from FungusGames/auto-saymenu-dialogs

Create SayDialog and MenuDialog is none exists yet
master
Chris Gregan 9 years ago
parent
commit
6cf2255467
  1. 35
      Assets/Fungus/Lua/Resources/Lua/fungus.txt
  2. 170
      Assets/Tests/Lua/FungusTests.unity

35
Assets/Fungus/Lua/Resources/Lua/fungus.txt

@ -161,13 +161,22 @@ function M.setsaydialog(saydialog)
M.sayoptions.saydialog = saydialog M.sayoptions.saydialog = saydialog
end end
-- Gets the active say dialog, or creates one if none exists yet
function M.getsaydialog()
if (M.sayoptions.saydialog == nil) then
local sd = unity.luautils.spawn("SayDialog").GetComponent("SayDialog")
M.setsaydialog(sd)
end
return M.sayoptions.saydialog
end
-- Set the active character on the Say Dialog -- Set the active character on the Say Dialog
-- character: A Fungus.Character component -- character: A Fungus.Character component
-- portrait: The name of a sprite in the character's portrait list -- portrait: The name of a sprite in the character's portrait list
function M.setcharacter(character, portrait) function M.setcharacter(character, portrait)
assert(character, "character must not be nil") assert(character, "character must not be nil")
assert(M.sayoptions.saydialog, "saydialog must not be nil") local sd = M.getsaydialog()
M.sayoptions.saydialog.SetCharacter(character) sd.SetCharacter(character)
-- Do substitution on character name -- Do substitution on character name
local subbed = fungus.sub(character.nameText) local subbed = fungus.sub(character.nameText)
@ -192,11 +201,11 @@ end
-- text: A string to write to the say dialog -- text: A string to write to the say dialog
-- voice: A voiceover audioclip to play -- voice: A voiceover audioclip to play
function M.say(text, voiceclip) function M.say(text, voiceclip)
assert(M.sayoptions.saydialog, "saydialog must not be nil") local sd = M.getsaydialog()
-- Do variable substitution before displaying text -- Do variable substitution before displaying text
local subbed = fungus.sub(text) local subbed = fungus.sub(text)
local e = M.sayoptions.saydialog.SayInternal(subbed, M.sayoptions.clearprevious, M.sayoptions.waitforinput, M.sayoptions.fadewhendone, M.sayoptions.stopvoiceover, voiceclip) local e = sd.SayInternal(subbed, M.sayoptions.clearprevious, M.sayoptions.waitforinput, M.sayoptions.fadewhendone, M.sayoptions.stopvoiceover, voiceclip)
fungus.runwait(e) fungus.runwait(e)
end end
@ -213,24 +222,34 @@ function M.setmenudialog(menudialog)
M.menuoptions.menudialog = menudialog M.menuoptions.menudialog = menudialog
end end
-- Gets the active menu dialog, or creates one if none exists yet
function M.getmenudialog()
if (M.menuoptions.menudialog == nil) then
local md = unity.luautils.spawn("MenuDialog").GetComponent("MenuDialog")
M.setmenudialog(md)
end
return M.menuoptions.menudialog
end
-- Display a menu button -- Display a menu button
-- text: text to display on the button -- text: text to display on the button
-- callback: function to call when this option is selected -- callback: function to call when this option is selected
-- interactive (optional): if false, displays the option as disabled -- interactive (optional): if false, displays the option as disabled
function M.menu(text, callback, interactive) function M.menu(text, callback, interactive)
assert(M.menuoptions.menudialog, "menudialog must not be nil") local md = M.getmenudialog()
-- Do variable substitution before displaying text -- Do variable substitution before displaying text
local subbed = fungus.sub(text) local subbed = fungus.sub(text)
M.menuoptions.menudialog.AddOption(subbed, interactive or true, unity.luaenvironment, callback) md.AddOption(subbed, interactive or true, unity.luaenvironment, callback)
end end
-- Display a timer during which the player has to choose an option. -- Display a timer during which the player has to choose an option.
-- duration: The length of time to display the timer. -- duration: The length of time to display the timer.
-- callback: Function to call if the timer expires before an option is selected. -- callback: Function to call if the timer expires before an option is selected.
function M.menutimer(duration, callback) function M.menutimer(duration, callback)
assert(M.menuoptions.menudialog, "menudialog must not be nil") local md = M.getmenudialog()
local e = M.menuoptions.menudialog.ShowTimer(duration, unity.luaenvironment, callback)
local e = md.ShowTimer(duration, unity.luaenvironment, callback)
fungus.runwait(e) fungus.runwait(e)
end end

170
Assets/Tests/Lua/FungusTests.unity

@ -880,7 +880,7 @@ MonoBehaviour:
variablesScrollPos: {x: 0, y: 0} variablesScrollPos: {x: 0, y: 0}
variablesExpanded: 1 variablesExpanded: 1
blockViewHeight: 400 blockViewHeight: 400
zoom: 0.90499437 zoom: 0.8889934
scrollViewRect: scrollViewRect:
serializedVersion: 2 serializedVersion: 2
x: -343 x: -343
@ -941,6 +941,57 @@ Transform:
m_Children: [] m_Children: []
m_Father: {fileID: 1641285458} m_Father: {fileID: 1641285458}
m_RootOrder: 3 m_RootOrder: 3
--- !u!1 &110417825
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 110417827}
- 114: {fileID: 110417826}
m_Layer: 0
m_Name: AutoDialogTest
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &110417826
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 110417825}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b1dba0b27b0864740a8720e920aa88c0, type: 3}
m_Name:
m_EditorClassIdentifier:
timeout: 5
ignored: 0
succeedAfterAllAssertionsAreExecuted: 0
expectException: 0
expectedExceptionList:
succeedWhenExceptionIsThrown: 0
includedPlatforms: -1
platformsToIgnore: []
dynamic: 0
dynamicTypeName:
--- !u!4 &110417827
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 110417825}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 828158146}
- {fileID: 375366500}
m_Father: {fileID: 0}
m_RootOrder: 13
--- !u!1001 &110499668 --- !u!1001 &110499668
Prefab: Prefab:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2183,6 +2234,65 @@ CanvasRenderer:
type: 2} type: 2}
m_PrefabInternal: {fileID: 0} m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 330161927} m_GameObject: {fileID: 330161927}
--- !u!1 &375366499
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 100640, guid: 49031c561e16d4fcf91c12153f8e0b25, type: 2}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 375366500}
- 114: {fileID: 375366502}
- 114: {fileID: 375366501}
m_Layer: 0
m_Name: LuaEnvironment
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &375366500
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 495584, guid: 49031c561e16d4fcf91c12153f8e0b25, type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 375366499}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 110417827}
m_RootOrder: 1
--- !u!114 &375366501
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11486636, guid: 49031c561e16d4fcf91c12153f8e0b25,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 375366499}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c10f0b861365b42b0928858f7b086ff3, type: 3}
m_Name:
m_EditorClassIdentifier:
stringTable: {fileID: 0}
activeLanguage: en
timeScale: -1
registerTypes:
- {fileID: 4900000, guid: 9c3ab7a98d51241bbb499643399fa761, type: 3}
--- !u!114 &375366502
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11493126, guid: 49031c561e16d4fcf91c12153f8e0b25,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 375366499}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ba19c26c1ba7243d2b57ebc4329cc7c6, type: 3}
m_Name:
m_EditorClassIdentifier:
remoteDebugger: 0
--- !u!1 &398057887 --- !u!1 &398057887
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -4242,6 +4352,64 @@ Transform:
- {fileID: 511430245} - {fileID: 511430245}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 4 m_RootOrder: 4
--- !u!1 &828158145
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 139298, guid: c356764ac08ce4af2806a601a4f1e6e9, type: 2}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 828158146}
- 114: {fileID: 828158147}
m_Layer: 0
m_Name: LuaScript
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &828158146
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 449874, guid: c356764ac08ce4af2806a601a4f1e6e9, type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 828158145}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 110417827}
m_RootOrder: 0
--- !u!114 &828158147
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11472914, guid: c356764ac08ce4af2806a601a4f1e6e9,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 828158145}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 446caeace65234baaacd52095d24f101, type: 3}
m_Name:
m_EditorClassIdentifier:
executeAfterTime: 1
repeatExecuteTime: 1
repeatEveryTime: 1
executeAfterFrames: 1
repeatExecuteFrame: 1
repeatEveryFrame: 1
hasFailed: 0
executeMethods: 2
luaEnvironment: {fileID: 0}
luaFile: {fileID: 0}
luaScript: "-- Test Say creating a SayDialog when none already exists\n\nfungus.sayoptions.waitforinput
= false\nfungus.say(\"test\")\n\ngo = unity.luautils.find(\"SayDialog\")\nfungus.assert(go
!= nil)\n\n-- Test Menu creating a MenuDialog when none already exists\nfunction
choose_a()\n fungus.pass()\nend\n\nfungus.menu(\"Option A\", choose_a)\n\nlocal
go = unity.luautils.find(\"OptionButton0\")\nfungus.assert(go != nil)\n\nlocal
button = go.GetComponent(\"Button\")\nfungus.assert(button != nil)\n\nbutton.onClick.Invoke()"
runAsCoroutine: 1
useFungusModule: 1
--- !u!1 &851680338 --- !u!1 &851680338
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

Loading…
Cancel
Save