From 45b7c791954e6d12278b6228196ac1b5573db513 Mon Sep 17 00:00:00 2001 From: chrisgregan Date: Tue, 26 Aug 2014 17:13:34 +0100 Subject: [PATCH] Pick character from drop down list --- Assets/Fungus/Dialog/Commands/Say.cs | 5 +-- Assets/Fungus/Dialog/Editor/SayEditor.cs | 8 ++--- .../Fungus/Dialog/Scripts/DialogController.cs | 15 +++++--- .../Editor/FungusCommandEditor.cs | 32 ++++++++++++++++++ Assets/Shuttle/NewDialog.unity | Bin 57012 -> 58844 bytes 5 files changed, 48 insertions(+), 12 deletions(-) diff --git a/Assets/Fungus/Dialog/Commands/Say.cs b/Assets/Fungus/Dialog/Commands/Say.cs index c738d4e5..50f939d1 100644 --- a/Assets/Fungus/Dialog/Commands/Say.cs +++ b/Assets/Fungus/Dialog/Commands/Say.cs @@ -46,10 +46,7 @@ namespace Fungus.Script dialogController.ShowDialog(true); - if (character != null) - { - dialogController.SetCharacter(character); - } + dialogController.SetCharacter(character); if (options.Count > 0) { diff --git a/Assets/Fungus/Dialog/Editor/SayEditor.cs b/Assets/Fungus/Dialog/Editor/SayEditor.cs index facc843e..f8174e0c 100644 --- a/Assets/Fungus/Dialog/Editor/SayEditor.cs +++ b/Assets/Fungus/Dialog/Editor/SayEditor.cs @@ -21,15 +21,15 @@ namespace Fungus.Script EditorGUI.BeginChangeCheck(); + Character character = FungusCommandEditor.ObjectField(new GUIContent("Character", "Character to display in dialog"), + new GUIContent(""), + t.character); + EditorGUILayout.PrefixLabel(new GUIContent("Say Text", "Text to display in dialog")); GUIStyle sayStyle = new GUIStyle(EditorStyles.textArea); sayStyle.wordWrap = true; string text = EditorGUILayout.TextArea(t.storyText, sayStyle, GUILayout.MinHeight(30)); - Character character = EditorGUILayout.ObjectField(new GUIContent("Character", "Character to display in dialog"), - t.character, - typeof(Character), true) as Character; - bool displayOnce = EditorGUILayout.Toggle(new GUIContent("Display Once", "Display this text once and never show it again."), t.displayOnce); if (EditorGUI.EndChangeCheck()) diff --git a/Assets/Fungus/Dialog/Scripts/DialogController.cs b/Assets/Fungus/Dialog/Scripts/DialogController.cs index b17b52cd..6446c6e7 100644 --- a/Assets/Fungus/Dialog/Scripts/DialogController.cs +++ b/Assets/Fungus/Dialog/Scripts/DialogController.cs @@ -44,11 +44,18 @@ namespace Fungus.Script { if (character == null) { - return; + if (leftImage != null) + leftImage.enabled = false; + if (rightImage != null) + rightImage.enabled = false; + if (nameText != null) + nameText.text = ""; + } + else + { + SetCharacterImage(character.characterImage, character.dialogSide); + SetCharacterName(character.name, character.characterColor); } - - SetCharacterImage(character.characterImage, character.dialogSide); - SetCharacterName(character.name, character.characterColor); } public void SetCharacterImage(Sprite image, DialogSide side) diff --git a/Assets/Fungus/FungusScript/Editor/FungusCommandEditor.cs b/Assets/Fungus/FungusScript/Editor/FungusCommandEditor.cs index d9739e8a..cce7aaec 100644 --- a/Assets/Fungus/FungusScript/Editor/FungusCommandEditor.cs +++ b/Assets/Fungus/FungusScript/Editor/FungusCommandEditor.cs @@ -168,6 +168,38 @@ namespace Fungus.Script } return copy as T; } + + static public T ObjectField(GUIContent label, GUIContent nullLabel, T selectedObject) where T : MonoBehaviour + { + List objectNames = new List(); + + int selectedIndex = 0; + objectNames.Add(nullLabel); + T[] objects = GameObject.FindObjectsOfType(); + for (int i = 0; i < objects.Length; ++i) + { + objectNames.Add(new GUIContent(objects[i].name)); + + if (selectedObject == objects[i]) + { + selectedIndex = i + 1; + } + } + + T result; + + selectedIndex = EditorGUILayout.Popup(label, selectedIndex, objectNames.ToArray()); + if (selectedIndex == 0) + { + result = null; // Null option + } + else + { + result = objects[selectedIndex - 1]; + } + + return result; + } } } diff --git a/Assets/Shuttle/NewDialog.unity b/Assets/Shuttle/NewDialog.unity index 7917e9baf25f1a94a11a2397db7b1a213ee55a35..3eb876d0ce69709a0a1a2c31b8e932b287255b93 100644 GIT binary patch delta 2775 zcmZwIdr(wW90%}o*#%ZmT-*hAk;g?47C~N$G3Fak#z9?;QEJdc*{uS;a?&}PQ|xW*V8hWl1r*~GL-X&EarpJD$F4GqNr`e}o8+(G*yy)eMK8N z0NSZfk=(&SdU6D(NcZfQbP}12f^b_BmJRCYL~$VPviw53%qdbv+$9cr>GkLWVbsdX zii*dM1pfzhWYVG1Q-!K#O9{ zlH=KvnKHz9|8Zzfpz0(O zjkbl6ajAit#aJQLTYEtC)h4@{8muWoh?E%@6+r%RDbhYG0&ma-O8#R{3-nx)m9}Ot zqxYr+j$B()xu(9zQCGt-MMH^Hnj0@9QS~s9IuL|$SO_{k7;Ex|v)pE+-V!r4*}{bs zZ^=|TZWD#^6lyimEn7HkTxuk1a-@*%&CTHL2$?i6B~Hkqp7~Z16NBhjvPqcW4LBet zgpOf|iQa1fpE=4NXBH;$_N1lb{#+;2Qr^zvfHX^9&`ww>o|R4rCJtw;1f~S@0jvSm40|ZImwSJ4s9^+S8&!4l zU~X6w%!B^DQRV|JA-)J7$dzZq%3%gS#_r2D2UcZdtO}Ju-kB+Yd0^_GFVF1>XQA4e z>4nw73Q%`Yu6xA^JONZsYah%qim}g8@Sa@oM_vxb%iWc2^BYHEEGEY4Vam*GfwjQY z)Bi3nXQrMnOjFI;m*7UuAWR+ljNad3EMbf}Rjtm1HHT5$mnIi-)C0&xjxC(AI#sM6 zIzCNkg;lFs_y}f+(8l#KtOcf?%odozqK&Abq$|+|<4e?~40Hp~4O9=b5oWadmVmOP z-h{Ql)I+@0u{XIBre0FFVPYg>tI)|Ed4li2+_K5bES)Xc|5GL#t=%xiuyPn*drHU8 z!}>>4>2A|h^sNqaTTIk!H%vXl+hHu4v2AFxSlRl_0vo=) z>H#=lZWun;Pg-~hCdM*W2)iZM9o&0&UKLE;`+b-Pre1{)U^$}iZM&59`ViOvtU-gy z(wrat&4NLgI+z8p<#F0z?67{AI+(LreG6xd(QeRlux^-dgL((!V&{SOcS-;!7yL4_X-7N{)(lgPn9YY7ljQ-s1%)FWO9y9$d!Aj)^tFTBP%2&;!FBi6y{QW?vE{Ui6Ghqc4_t{jlfJ1YKv!!c;J~*qfwjdo}>5Zxe4*`Eb zLG^S=u;L8uEF6aIfvG>>M_}z)+8OMCi4(LP4@ZA2ulixjq3*omMrrE4k%IC3@)*YbsZl*4EIDuE|pSff9dmwi&Z< zf_Tp<-Y7pv`GLxR-h&obUVlzyWtq0Vo}bNh_&};jhkQ|&FYqb7@#|;PPAxIfi@niQ z)n@P&ifW&z_eZ9rKQc*Ab9;j$y2A4wbj>@-?5A=cbX}Z@yy-kiC0{4#M)1=_iJ_0S zbXEA>JV}qb+Q@xiI88iOL|2a{2*LFDXgu$N+K(Ef=3~V=Z+|>y>GsKPT`Hd=PyGS> z`+j_s{P*hqO|yJ=%70rf{eE^Ls_Uu!tX_&bSLla_;pk2;)pd94q=E}C_$gtxXBT?I kZqL5(f7oX(?eO;&uovb&wLsIA#6YFMQwM(G=bL{20l=d9`~Uy| delta 2408 zcmY+_e@v8h90&04bN7J958?1myn{PF7fNhq3KP2~twYGhhm!KQYYu3FfU zLQ%Q8`RNC9F41yvrRFGG5&gj?^`84Kop$ zB|2a0q}+TLZLe#j?y^++GJmE}K)%@&HOw^kD7#(QOy zB-1I$Cir-3p@gyu3xrbgcx=>KqJPLyUKzfd(B`CC#XN?LCxYf1((^A@Z8*~tE!znJd$tz@mT3uScJF9`w4 za@yz`YRl=azgU2d7(V~2S|u!!%9smwRgHZuX<0GYW|Xxt2sW9@qO1YPkBi60!1^@CI`R2|nsCMa z^;rt61EzIe32RDctR1GP@i=S(#wYl<+IJOf*>uJ%CdTfo_5>`L$r!(VQ&Z8zN`k;) zpnldrJ#{|&GEBcS7hoYPV?lJDR1^LT>w?w6w1r%RO~77<-Ba6Lf;DB~-s@~{(p!Uh zju~|Ru&rW-al=34H8#ffqPe!YAHjNHA((auG1#PyJV$I%J7dkL(ROM1g&TRDF#W`; zU>4$n2X3aHD^FW?!RVb)JS=Zt;XluYU{~Ech^K<`t!XHQ}U?h zm@S%bJkbZJX@j*QgLa~8-CtKT$*^Ip8rB5kcT7hvUjN|6V4DiG2bZ`ZXLx5AzsTBS{T?RGF>d|tEkfNg*n4OvsIdn&4wF!> zNko*j11D7EtLD)Gvlb>AHlWPo9asRy>+uZY@h+?vrhg}^@1?zLDKf5j4J-!ZD^}E4 z3v+m*#uZlsrMboxhj?e0e#JE~1?ECB?Yq*Hy`!1=7<&Vzt=J4}gDryHQZIxE8;0?R z_g7TKB%rs1v8BM9swKmkVEWa~a(%FE1Qyl};(&Qejknwh>w$Hmo%R@WU;)2z($T)E z-8)0T4qd{2*kzc0yJXm=GUF}`z&hC6jYEjFrUT;tx!=`1{;#(#^ZjG-W*RMY1~5-L!vw~;xJF=-^~2?jQ?Gv z-%oAj9g@eY81q)q$e@b?r$uT#-43=;@2JI5w5!&fj>a3p(u=Qb+tIvjXSk7frry)_ z>HJ5G7kDE|AFY#zN9)ZP%wnjKU1!G3)IMqzOmuQEpB!gP`=O hT-azbOnCC*z9h;WFQz|-lH}oEbEav9{u@_J{{zkSn%MvV