private void PrepareTutorial(int x, Person Pers) { Dialogue Tutor1 = new Dialogue(); // var fname = (x==1) ? Dialog_Names.Tutorial1 : Dialog_Names.Tutorial0; var fname = Dialog_Names.Tutorial0 + x; // string[] str = Massive.GetDialogStrings (fname); // Tutor1.PrepMonolog (Strana.Ruler, Pers, str, null); DialogueInfo dInfo = Massive.GetDialogueInfo(fname); Tutor1.PrepNSDialog(Strana.Ruler, Pers, dInfo, () => { DefaultReplikaChoice(Pers); }); Dialogue[] Tutor = { Tutor1 }; Sujet.PrepSubStory("Tutor" + x.ToString(), (int)StoryMode.tutor, Tutor, true); }
// новая версия с DialogInfo public Dialogue PrepNSDialog(Person p1, Person p2, DialogueInfo d, Action DefaultCond) { // Dialogue D = new Dialogue (); // больше не нужно, т.к. это метод самого диалога, который уже создали раньше Phrase ph; D_PInit(p1, p2); for (int i = 0; i < d.list.Count; i++) { ph = new Phrase(); ph.Ph_Init(DefaultCond, p2, d.list[i], false, false, false, null); D_AddPhrase(ph); } D_Settings(d.links, d.choices, d.decisions, d.finals); return(this); }
private void PrepareCounsil() { Dialogue Counsil1 = new Dialogue(); var Pers = Strana.Government.PrimeMinister.GetHolder(); DialogueInfo dInfo = Massive.GetDialogueInfo(Dialog_Names.Counsil); // for (int i = 0; i < d.links.Length; i++) // Debug.Log(d.links[i][0] + " " + d.links[i][1] + " " + d.links[i][2]); Counsil1.PrepNSDialog(Strana.Ruler, Pers, dInfo, () => { DefaultReplikaChoice(Pers); }); SetAct(Counsil1, 8, null, () => { Debug.Log("Эtо конееееец!!!"); }); SetAct(Counsil1, 14, () => { ReplikaChoiceState(3, 4, 5); }, null); Dialogue[] Counsil = { Counsil1 }; Sujet.PrepSubStory("Counsil" + WeeksNumber(), (int)StoryMode.counsil, Counsil, true); }
public DialogueInfo GetDialogueInfo(Dialog_Names name) { string[] textarray = GetDialogStringsFromFile(DialogsFilenames[(int)name]); List <string[]> list = ExtractStringsToList(textarray); List <int> choices = new List <int>(), decisions = new List <int>(), finals = new List <int>(); int x; string s; Debug.Log("здесь чтоли падает?"); for (int i = 0; i < textarray.Length; i++) { s = textarray[i].TrimStart(); if (!String.IsNullOrEmpty(s) && isDigit(s[0])) { x = GetNumberFromString(s); Debug.Log(x); if (!String.IsNullOrEmpty(s = CutStr(s, x))) { if (isFinal(s[0])) { finals.Add(x); } if (isDecision(s[0])) { decisions.Add(x); } if (isChoice(s[0])) { choices.Add(x); } } } } // Debug.Log(finals[0] + " " + choices[0] + " " + choices[1] + " " +decisions[0]); Debug.Log("вроде нет"); int[][] links = GetLinksFromTA(textarray); DialogueInfo d = new DialogueInfo(list, links, choices.ToArray(), decisions.ToArray(), finals.ToArray()); return(d); }
// делаем как бы главный квест, заряжаем два диалога и стартовое условие private void PrepareMainQuest() { Dialogue quest1 = new Dialogue(), quest2 = new Dialogue(), quest3 = new Dialogue(); var Pers1 = Strana.Government.PrimeMinister.GetHolder(); var Pers2 = Strana.Government.Voevoda.GetHolder(); var Pers3 = Strana.Government.Spymaster.GetHolder(); DialogueInfo dInfo = Massive.GetDialogueInfo(Dialog_Names.PMQuest1); quest1.PrepNSDialog(Strana.Ruler, Pers1, dInfo, () => { DefaultReplikaChoice(Pers1); }); dInfo = Massive.GetDialogueInfo(Dialog_Names.PMQuest2); quest2.PrepNSDialog(Strana.Ruler, Pers2, dInfo, () => { DefaultReplikaChoice(Pers2); }); dInfo = Massive.GetDialogueInfo(Dialog_Names.PMQuest3); quest3.PrepNSDialog(Strana.Ruler, Pers3, dInfo, () => { DefaultReplikaChoice(Pers3); }); Dialogue[] PMQuest = { quest1, quest2, quest3 }; SubStory sub = Sujet.PrepSubStory("PMQuest", (int)StoryMode.events, PMQuest, false); sub.StageCondition[0] = SetCond(() => { SubStoryIsReady = (WeeksNumber() == StartingWeek + 1) ? true: false; }); sub.StageCondition[1] = SetCond(() => { SubStoryIsReady = (WeeksNumber() == StartingWeek + 2) ? true: false; }); sub.StageCondition[2] = SetCond(() => { SubStoryIsReady = (WeeksNumber() == StartingWeek + 3) ? true: false; }); }
private void PrepareAudience(Person Guest) { Dialogue Audience1 = new Dialogue(); DialogueInfo dInfo = new DialogueInfo(); // считываем диалог из соответствующего файла List <string[]> list = Massive.GetDialogStringsList(Dialog_Names.Audience); // готовим матриwу переходов внутри диалога // сделал первым, потом стал забивать эту инфу прямо в диалог и считывать уже по-другому, см. counsil int[][] links = { new int[] { 1, 1, 2 }, new int[] { 1, 2, 3 }, new int[] { 1, 3, 4 }, new int[] { 1, 4, 4 }, new int[] { 1, 5, 33 }, new int[] { 1, 6, 32 }, new int[] { 1, 7, 7 }, new int[] { 1, 8, 8 }, new int[] { 9, 1, 47 }, new int[] { 9, 2, 34 }, new int[] { 9, 3, 35 }, new int[] { 9, 4, 36 }, new int[] { 13, 0, 14 }, new int[] { 9, 5, 38 }, new int[] { 9, 6, 39 }, new int[] { 9, 7, 40 }, new int[] { 9, 8, 27 }, new int[] { 18, 1, 41 }, new int[] { 18, 2, 42 }, new int[] { 18, 3, 43 }, new int[] { 18, 4, 44 }, new int[] { 18, 5, 45 }, new int[] { 18, 6, 46 }, new int[] { 18, 7, 27 }, new int[] { 22, 1, 23 }, new int[] { 22, 2, 23 }, new int[] { 22, 3, 27 }, new int[] { 24, 1, 48 }, new int[] { 24, 2, 49 }, new int[] { 24, 3, 50 }, new int[] { 24, 5, 51 }, new int[] { 24, 6, 27 }, new int[] { 27, 1, 1 }, new int[] { 27, 2, 28 }, new int[] { 2, 0, 9 }, new int[] { 3, 0, 18 }, new int[] { 4, 0, 27 }, new int[] { 5, 0, 27 }, new int[] { 6, 0, 27 }, new int[] { 7, 0, 24 }, new int[] { 10, 0, 9 }, new int[] { 11, 0, 9 }, new int[] { 12, 0, 9 }, new int[] { 14, 0, 9 }, new int[] { 15, 0, 9 }, new int[] { 16, 0, 9 }, new int[] { 17, 0, 9 }, new int[] { 19, 0, 27 }, new int[] { 20, 0, 27 }, new int[] { 23, 0, 27 }, new int[] { 25, 0, 24 }, new int[] { 26, 0, 24 }, new int[] { 21, 1, 52 }, new int[] { 21, 2, 53 }, new int[] { 21, 3, 54 }, new int[] { 21, 4, 55 }, new int[] { 21, 5, 31 }, new int[] { 29, 0, 24 }, new int[] { 30, 0, 24 }, new int[] { 31, 0, 27 }, new int[] { 32, 0, 21 }, new int[] { 24, 4, 56 } }; int[] choices = new int[] { 1, 9, 18, 21, 22, 24, 27 }, decisions = new int[] { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56 }, finals = new int[] { 8, 28 }; // Audience1.PrepNSDialog (Strana.Ruler, Guest, list, () => { DefaultReplikaChoice (Guest); }, links, choices, decisions, finals); dInfo.list = list; dInfo.links = links; dInfo.choices = choices; dInfo.decisions = decisions; dInfo.finals = finals; Audience1.PrepNSDialog(Strana.Ruler, Guest, dInfo, () => { DefaultReplikaChoice(Guest); }); SetAct(Audience1, 8, null, () => { Debug.Log("Эtо конееееец!!!"); }); SetAct(Audience1, 28, null, () => { Debug.Log("Эtо конееееец!!!"); }); { SetAct(Audience1, 33, () => { ReplikaChoiceNeed(Guest, 5, 6); }, null); SetAct(Audience1, 34, () => { ReplikaChoiceNeutralMood(Guest, 11, 10); }, null); SetAct(Audience1, 35, () => { ReplikaChoiceNeutralMood(Guest, 12, 10); }, null); SetAct(Audience1, 36, () => { ReplikaChoiceNeutralMood(Guest, 13, 10); }, null); SetAct(Audience1, 37, () => { ReplikaChoiceNeutralMood(Guest, 14, 10); }, null); // намеренно поставил для вопроса об отношениях нет = да, чтобы потом сработал сам вопрос SetAct(Audience1, 38, () => { ReplikaChoiceNeutralMood(Guest, 15, 15); }, null); SetAct(Audience1, 39, () => { ReplikaChoiceNeutralMood(Guest, 16, 10); }, null); SetAct(Audience1, 40, () => { ReplikaChoiceNeutralMood(Guest, 17, 10); }, null); SetAct(Audience1, 41, () => { ReplikaChoiceNeutralMood(Guest, 22, 20); }, () => { MadeOffer(Guest, OfferRewards.drink); }); SetAct(Audience1, 42, () => { ReplikaChoiceNeutralMood(Guest, 19, 20); }, () => { MadeOffer(Guest, OfferRewards.honor); }); SetAct(Audience1, 43, () => { ReplikaChoiceNeutralMood(Guest, 19, 20); }, () => { MadeOffer(Guest, OfferRewards.gold); }); SetAct(Audience1, 44, () => { ReplikaChoiceNeutralMood(Guest, 19, 20); }, () => { MadeOffer(Guest, OfferRewards.holding); }); SetAct(Audience1, 45, () => { ReplikaChoiceNeutralMood(Guest, 19, 20); }, () => { MadeOffer(Guest, OfferRewards.titul); }); SetAct(Audience1, 46, () => { ReplikaChoiceNeutralMood(Guest, 19, 20); }, null); // для вопроса о происхождении пока нет ответа, так что да = нет SetAct(Audience1, 47, () => { ReplikaChoiceGoodMood(Guest, 10, 10); }, null); SetAct(Audience1, 48, () => { ReplikaChoiceNeutralMood(Guest, 25, 26); }, () => { LaySanctions(Guest, Sanctions.ponos); }); SetAct(Audience1, 49, () => { ReplikaChoiceNeutralMood(Guest, 25, 26); }, () => { LaySanctions(Guest, Sanctions.gold); }); SetAct(Audience1, 50, () => { ReplikaChoiceNeutralMood(Guest, 25, 26); }, () => { LaySanctions(Guest, Sanctions.holding); }); SetAct(Audience1, 51, () => { ReplikaChoiceNeutralMood(Guest, 25, 26); }, () => { LaySanctions(Guest, Sanctions.arrest); }); SetAct(Audience1, 56, () => { ReplikaChoiceNeutralMood(Guest, 25, 26); }, () => { LaySanctions(Guest, Sanctions.titul); }); SetAct(Audience1, 52, () => { ReplikaChoiceGoodMood(Guest, 29, 30); }, null); SetAct(Audience1, 53, () => { ReplikaChoiceGoodMood(Guest, 29, 30); }, null); SetAct(Audience1, 54, () => { ReplikaChoiceGoodMood(Guest, 29, 30); }, null); SetAct(Audience1, 55, () => { ReplikaChoiceGoodMood(Guest, 29, 30); }, null); SetAct(Audience1, 11, () => { ReplikaChoiceReligion(Guest); }, null); SetAct(Audience1, 12, () => { ReplikaChoicePolitic(Guest); }, null); SetAct(Audience1, 13, () => { ReplikaChoiceDost(Guest); }, () => { ReplikaRevealStat(Guest); }); SetAct(Audience1, 14, () => { ReplikaChoiceNedost(Guest); }, () => { ReplikaRevealStat(Guest); }); SetAct(Audience1, 15, () => { ReplikaChoiceRelation(Guest); }, null); SetAct(Audience1, 16, () => { ReplikaChoicePosition(Guest); }, null); SetAct(Audience1, 17, () => { ReplikaChoiceCounsil(Guest); }, null); SetAct(Audience1, 19, null, () => { AcceptOffer(Guest); }); SetAct(Audience1, 20, null, () => { RefuseOffer(Guest); }); SetAct(Audience1, 25, null, () => { AcceptSanction(Guest); }); SetAct(Audience1, 26, null, () => { RefuseSanction(Guest); }); } Dialogue[] Audience = { Audience1 }; Sujet.PrepSubStory("Audience of " + Guest.Name, (int)StoryMode.audience, Audience, true); }