public Entity AddQuestTask(QuestAction newAction, string newType, string newInfo, string newDescription, string newHint) { var component = _questTaskComponentPool.Count > 0 ? _questTaskComponentPool.Pop() : new QuestTaskComponent(); component.action = newAction; component.type = newType; component.info = newInfo; component.description = newDescription; component.hint = newHint; return AddComponent(MetaGameComponentIds.QuestTask, component); }
public Entity ReplaceQuestTask(QuestAction newAction, string newType, string newInfo, string newDescription, string newHint) { var previousComponent = hasQuestTask ? questTask : null; var component = _questTaskComponentPool.Count > 0 ? _questTaskComponentPool.Pop() : new QuestTaskComponent(); component.action = newAction; component.type = newType; component.info = newInfo; component.description = newDescription; component.hint = newHint; ReplaceComponent(MetaGameComponentIds.QuestTask, component); if (previousComponent != null) { _questTaskComponentPool.Push(previousComponent); } return this; }
static void LoadQuest(ref Quest currentQuest) { ParseMode parseMode = ParseMode.None; QuestAction currentQuestAction = null; TextAsset asset = Resources.Load (currentQuest.file) as TextAsset; string[] questData = asset.text.Split ('\n'); parseMode = ParseMode.Quest; foreach (string line in questData) { if (line.Contains("<QuestEvent>")){ parseMode = ParseMode.QuestAction; if (currentQuest != null && currentQuestAction != null){ currentQuest.actionList.Add(currentQuestAction); } currentQuestAction = new QuestAction(); } if (line.Contains("<End>")){ if (currentQuest != null && currentQuestAction != null){ currentQuest.actionList.Add(currentQuestAction); } } switch (parseMode){ case ParseMode.Quest: if (line.Contains(":")){ string[] parts = line.Split(':'); if (line.Contains ("completion")){ currentQuest.requiredAmount = int.Parse (parts[1]); } if (line.Contains("name")){ currentQuest.questName = parts[1]; } if (line.Contains ("startdesc")){ int start = line.IndexOf('"') + 1; string desc = line.Substring (start, line.LastIndexOf('"') - start).Replace("\\n", System.Environment.NewLine) ; currentQuest.questDesc = desc; } if (line.Contains ("finishdesc")){ int start = line.IndexOf('"') + 1; string desc = line.Substring (start, line.LastIndexOf('"') - start).Replace("\\n", System.Environment.NewLine) ; currentQuest.finishDesc = desc; } if (line.Contains ("questarea")){ currentQuest.questArea = int.Parse (parts[1]); } if (line.Contains ("rewards:")){ int start = line.IndexOf('"') + 1; string desc = line.Substring (start, line.LastIndexOf('"') - start).Replace("\\n", System.Environment.NewLine) ; currentQuest.rewards = desc; } } break; case ParseMode.QuestAction: if (line.Contains(":")){ string[] parts = line.Split(':'); if (line.Contains("x:")){ currentQuestAction.loc.x = int.Parse(parts[1]); } if (line.Contains("y:")){ currentQuestAction.loc.y = int.Parse(parts[1]); } if (line.Contains("desc")){ currentQuestAction.desc = parts[1]; } if (line.Contains ("completion")){ currentQuestAction.completionAmount = int.Parse (parts[1]); } if (line.Contains("cost")){ currentQuestAction.staminaCost = int.Parse (parts[1]); } } break; } } }
public QuestAction(QuestAction qa) { this.actionType = qa.actionType; this.actionVariables = new List <string>(qa.actionVariables); this.isCounterAction = qa.isCounterAction; }
public void SetButton2(QuestAction action) { _button2.SetCaption(action.Message); _buttonCallback2 = action.Handler; }
public void Handle(Packet iPacket) { QuestAction action = (QuestAction)iPacket.ReadByte(); ushort questID = iPacket.ReadUShort(); if (!DataProvider.Quests.Contains(questID)) { return; } Quest quest = DataProvider.Quests[questID]; int npcId; switch (action) { case QuestAction.RestoreLostItem: // TODO: Validate. { int quantity = iPacket.ReadInt(); int itemID = iPacket.ReadInt(); quantity -= this.Parent.Items.Available(itemID); Item item = new Item(itemID, (short)quantity); this.Parent.Items.Add(item); } break; case QuestAction.Start: { npcId = iPacket.ReadInt(); this.Start(quest, npcId); } break; case QuestAction.Complete: { npcId = iPacket.ReadInt(); iPacket.ReadInt(); // NOTE: Unknown int selection = iPacket.Remaining >= 4 ? iPacket.ReadInt() : 0; this.Complete(quest, selection); } break; case QuestAction.Forfeit: { this.Forfeit(quest.MapleID); } break; case QuestAction.ScriptStart: case QuestAction.ScriptEnd: { npcId = iPacket.ReadInt(); Npc npc = null; foreach (Npc loopNpc in this.Parent.Map.Npcs) { if (loopNpc.MapleID == npcId) { npc = loopNpc; break; } } if (npc == null) { return; } this.Parent.Converse(npc, quest); } break; } }
public void AddActionShape(QuestAction action, Shape shape) { ActionsAndShapes.Add(action, shape); AddShape(shape); }
private static string EndStatePresentation(QuestAction action) => "End state";
private static string WaitSomeTimePresentation(QuestAction action) => $"Wait {action.Properties["time"]} seconds";
private static string SkipFramePresentation(QuestAction action) => "Skip frame";
private static string NotParsedPresentation(QuestAction action) => action.Source;
public static string GetPresentation(QuestAction action) => presenters.ContainsKey(action.Type) ? presenters[action.Type](action) : "<some code>";