Elin Decompiled Documentation EA 23.321 Nightly Patch 1
Loading...
Searching...
No Matches
DramaActor.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.Reflection;
4using System.Text;
5
6public class DramaActor : EMono
7{
8 public static bool useGlitch;
9
10 public string id;
11
12 public Person owner;
13
15
16 private int choiceIdx;
17
19
20 public void Init(DramaSequence _sequence, string _id, Person _owner)
21 {
22 sequence = _sequence;
23 id = _id;
24 owner = _owner;
25 base.gameObject.SetActive(value: false);
26 }
27
28 public void Talk(string text, List<DramaChoice> choices, bool center, bool unknown)
29 {
30 Chara chara = owner.chara;
31 dialog.gameObject.SetActive(value: true);
32 dialog.textName.text = (unknown ? "???" : owner.GetDramaTitle());
33 if ((bool)dialog.portrait)
34 {
35 dialog.portrait.enableFull = sequence.fullPortrait;
37 }
38 if (!owner.HumanSpeak)
39 {
40 if (!text.StartsWith("("))
41 {
42 text = "(" + text + ")";
43 }
44 text = text.Replace("。)", ")");
45 }
46 text = ConvertAdv(text);
47 text = GameLang.ConvertDrama(text, owner.chara);
48 if (chara != null)
49 {
50 if (chara.HasElement(1232))
51 {
52 BackerContent.GakiConvert(ref text, "babu");
53 }
54 else
55 {
56 string text2 = chara.id;
57 if (!(text2 == "adv_gaki"))
58 {
59 if (text2 == "corgon")
60 {
61 BackerContent.GakiConvert(ref text, "mokyu");
62 }
63 }
64 else
65 {
66 BackerContent.GakiConvert(ref text);
67 }
68 }
69 }
70 text = text.Replace("((", "(").Replace("))", ")").Replace("((", "(")
71 .Replace("))", ")");
72 if ((bool)dialog.goAffinity)
73 {
74 dialog.layoutInterest.SetActive(chara != null);
75 dialog.textNoInterest.SetActive(chara == null);
76 bool flag = chara?.trait.ShowAdvRank ?? false;
77 if ((bool)dialog.transFav)
78 {
79 dialog.transFav.SetActive(chara?.knowFav ?? false);
80 }
81 if ((bool)dialog.transRank)
82 {
83 dialog.transRank.SetActive(flag);
84 if (flag)
85 {
86 dialog.textRank.text = "factionRank2".lang() + " " + chara.trait.GetAdvRankText() + " " + ((chara.GetInt(111) > 0) ? "advDefeated".lang(chara.GetInt(111).ToString() ?? "") : "");
87 }
88 }
89 if (chara != null)
90 {
91 dialog.textAffinity.text = ((chara.c_bossType != 0 || !chara.trait.CanChangeAffinity) ? " - " : (chara.affinity.Name + " (" + chara._affinity + ")"));
92 dialog.layoutInterest.DestroyChildren();
93 int num = chara.interest / 10 + 1;
94 if (chara.interest <= 0)
95 {
96 num = 0;
97 }
98 if (num > 10)
99 {
100 num = 10;
101 }
102 for (int i = 0; i < num; i++)
103 {
105 }
106 dialog.layoutInterest.RebuildLayout();
107 dialog.textNoInterest.SetActive(num <= 0);
108 if ((bool)dialog.textFav && chara.knowFav)
109 {
110 dialog.textFav.text = chara.GetFavCat().GetName().ToTitleCase() + Environment.NewLine + chara.GetFavFood().GetName().ToTitleCase();
111 }
112 }
113 else
114 {
115 dialog.textAffinity.text = "???";
116 dialog.textNoInterest.text = "???";
117 }
118 }
119 if ((bool)dialog.glitch)
120 {
121 dialog.glitch.enabled = useGlitch;
122 useGlitch = false;
123 }
124 dialog.SetText(text.ToTitleCase(), center);
126 choiceIdx = 1;
127 for (int j = 0; j < choices.Count; j++)
128 {
129 SetChoice(choices[j], j);
130 }
131 dialog.transChoices.RebuildLayout(recursive: true);
132 dialog.iconNext.SetActive(choiceIdx == 1);
135 EMono.core.actionsNextFrame.Add(delegate
136 {
138 });
139 }
140
141 private void SetChoice(DramaChoice item, int index)
142 {
143 item.index = index;
144 if ((!item.IF.IsEmpty() && !DramaOutcome.If(item, owner.chara)) || (item.activeCondition != null && !item.activeCondition()))
145 {
146 return;
147 }
148 DramaOutcome.idJump = null;
149 string text = item.text.TrimEnd(Environment.NewLine.ToCharArray());
150 text = ConvertAdv(text);
151 text = GameLang.ConvertDrama(text, owner.chara);
152 if (item.check != null && EMono.debug.logDice)
153 {
154 text = text + " (" + item.check.GetText(EMono.pc, owner.chara, inDialog: true) + ")";
155 }
156 Check check = null;
157 string idJump = item.idJump;
158 string idAction = item.idAction;
159 object[] PARAMS = null;
160 int? affinity = null;
161 if (!item.CHECK.IsEmpty())
162 {
163 string[] array = item.CHECK.Split('/');
164 string text2 = array[0];
165 if (!(text2 == "check"))
166 {
167 if (text2 == "affinity")
168 {
169 }
170 }
171 else
172 {
173 check = Check.Get(array[1]);
174 }
175 }
176 UIButton uIButton = dialog.AddChoice(item, text, delegate
177 {
178 base.gameObject.SetActive(value: false);
179 DramaChoice.lastChoice = item;
180 _ = check;
181 if (affinity.HasValue)
182 {
183 bool flag = true;
184 if (flag)
185 {
186 idJump = idJump.Split('/')[0];
187 }
188 else
189 {
190 idJump = idJump.Split('/')[1];
191 }
192 PARAMS = new object[1] { flag };
193 }
194 if (!idAction.IsEmpty())
195 {
196 MethodInfo method = typeof(DramaOutcome).GetMethod(sequence.id + "_" + idAction);
197 if (method != null)
198 {
199 method.Invoke(sequence.manager.outcome, PARAMS);
200 if (DramaOutcome.idJump != null)
201 {
202 sequence.Play(DramaOutcome.idJump);
203 return;
204 }
205 }
206 }
207 if (item.onClick != null)
208 {
209 item.onClick();
210 }
211 sequence.tempEvents.Clear();
212 if (item.onJump != null)
213 {
214 item.onJump();
215 }
216 else if (idJump.IsEmpty())
217 {
218 sequence.PlayNext();
219 }
220 else
221 {
222 sequence.Play(idJump);
223 }
224 });
225 if ((bool)uIButton.subText)
226 {
227 uIButton.subText.SetText(choiceIdx + ".");
228 }
229 if (!item.sound)
230 {
231 uIButton.soundClick = null;
232 }
233 if (item.onTooltip != null)
234 {
235 uIButton.SetTooltip(item.onTooltip);
236 }
237 if (item.forceHighlight)
238 {
239 uIButton.DoHighlightTransition();
240 item.forceHighlight = false;
241 }
242 choiceIdx++;
243 }
244
245 public string ConvertAdv(string text)
246 {
247 StringBuilder stringBuilder = new StringBuilder(text);
248 Religion currentReligion = LayerDrama.currentReligion;
249 if (currentReligion != null)
250 {
251 stringBuilder.Replace("#god_name", currentReligion.Name);
252 stringBuilder.Replace("#god_desc", "<i>" + currentReligion.source.GetDetail() + "</i>");
253 stringBuilder.Replace("#god_benefit", currentReligion.GetTextBenefit());
254 stringBuilder.Replace("#godtalk_worship", currentReligion.GetGodTalk("worship"));
255 }
256 return stringBuilder.ToString();
257 }
258}
if(!match.Success)
string Name
Definition: Affinity.cs:34
static void GakiConvert(ref string text, string idLang="zako")
List< Action > actionsNextFrame
Definition: BaseCore.cs:31
string id
Definition: Card.cs:36
int GetInt(string id, int? defaultInt=null)
Definition: Card.cs:2567
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6320
Definition: Chara.cs:10
SourceCategory.Row GetFavCat()
Definition: Chara.cs:8417
int _affinity
Definition: Chara.cs:307
new TraitChara trait
Definition: Chara.cs:509
bool knowFav
Definition: Chara.cs:417
int interest
Definition: Chara.cs:321
SourceThing.Row GetFavFood()
Definition: Chara.cs:8389
Affinity affinity
Definition: Chara.cs:318
Definition: Check.cs:5
static Check Get(string id, float dcMod=1f)
Definition: Check.cs:32
bool logDice
Definition: CoreDebug.cs:262
Text textNoInterest
Definition: DialogDrama.cs:15
GameObject iconNext
Definition: DialogDrama.cs:37
Transform moldInterest
Definition: DialogDrama.cs:45
void ClearChoice()
Definition: DialogDrama.cs:84
virtual void SetText(string detail="", bool center=false)
Definition: DialogDrama.cs:90
GameObject goAffinity
Definition: DialogDrama.cs:39
Portrait portrait
Definition: DialogDrama.cs:41
LayoutGroup layoutInterest
Definition: DialogDrama.cs:43
GameObject transRank
Definition: DialogDrama.cs:27
GameObject transFav
Definition: DialogDrama.cs:25
Transform transChoices
Definition: DialogDrama.cs:33
virtual UIButton AddChoice(DramaChoice choice, string text, Action func=null, bool deactivateOnChoice=true)
Definition: DialogDrama.cs:60
Glitch glitch
Definition: DialogDrama.cs:49
void SetChoice(DramaChoice item, int index)
Definition: DramaActor.cs:141
Person owner
Definition: DramaActor.cs:12
string ConvertAdv(string text)
Definition: DramaActor.cs:245
int choiceIdx
Definition: DramaActor.cs:16
void Init(DramaSequence _sequence, string _id, Person _owner)
Definition: DramaActor.cs:20
DialogDrama dialog
Definition: DramaActor.cs:18
void Talk(string text, List< DramaChoice > choices, bool center, bool unknown)
Definition: DramaActor.cs:28
static bool useGlitch
Definition: DramaActor.cs:8
string id
Definition: DramaActor.cs:10
DramaSequence sequence
Definition: DramaActor.cs:14
static bool If(DramaChoice item, Chara c)
DialogDrama dialog
List< DramaEvent > tempEvents
Definition: EMono.cs:4
static Core core
Definition: EMono.cs:5
static Chara pc
Definition: EMono.cs:13
static CoreDebug debug
Definition: EMono.cs:45
static string ConvertDrama(string text, Chara c=null)
Definition: GameLang.cs:21
static Religion currentReligion
Definition: LayerDrama.cs:8
Definition: Person.cs:6
string GetDramaTitle()
Definition: Person.cs:106
bool HumanSpeak
Definition: Person.cs:41
Chara chara
Definition: Person.cs:36
void SetPerson(Person p)
Definition: Portrait.cs:120
SourceReligion.Row source
Definition: Religion.cs:33
virtual string GetGodTalk(string idTalk)
Definition: Religion.cs:174
virtual string GetTextBenefit()
Definition: Religion.cs:107
virtual string Name
Definition: Religion.cs:30
virtual string GetAdvRankText()
Definition: TraitChara.cs:176
virtual bool ShowAdvRank
Definition: TraitChara.cs:96
virtual bool CanChangeAffinity
Definition: Trait.cs:581
UIText subText
Definition: UIButton.cs:104
static void TryHihlight()
Definition: UIButton.cs:768
void SetText(string s)
Definition: UIText.cs:163