/// <summary> /// Creates cutscene and fills actor list as specified in the data. /// </summary> /// <param name="name"></param> /// <param name="creature"></param> /// <returns></returns> public static Cutscene FromData(string name, Creature creature) { var result = new Cutscene(name, creature); var partyMembers = creature.Party.GetSortedMembers(); var dummy = new NPC(); foreach (var actorName in result.Data.Actors) { Creature actor = null; // Retrieve actor if (actorName.StartsWith("#")) { var actorData = AuraData.ActorDb.Find(actorName); if (actorData == null) Log.Warning("Unknown actor '{0}'.", actorName); else actor = new NPC(actorData); } else if (actorName == "me") { actor = creature; } else if (actorName == "leader") { actor = creature.Party.Leader; } else if (actorName.StartsWith("player")) { int idx; if (!int.TryParse(actorName.Substring("player".Length), out idx)) Log.Warning("Cutscene.FromData: Invalid party member actor name '{0}'.", actorName); else if (idx > partyMembers.Length - 1) Log.Warning("Cutscene.FromData: Index out of party member range '{0}/{1}'.", idx, partyMembers.Length); else actor = partyMembers[idx]; } else Log.Warning("Cutscene.FromData: Unknown kind of actor ({0}).", actorName); if (actor == null) actor = dummy; result.AddActor(actorName, actor); } return result; }
/// <summary> /// Creates cutscene and fills actor list as specified in the data. /// </summary> /// <param name="name"></param> /// <param name="creature"></param> /// <returns></returns> public static Cutscene FromData(string name, Creature creature) { var result = new Cutscene(name, creature); var partyMembers = creature.Party.GetSortedMembers(); var dummy = new NPC(); foreach (var actorName in result.Data.Actors) { Creature actor = null; // Retrieve actor if (actorName.StartsWith("#")) { var actorData = AuraData.ActorDb.Find(actorName); if (actorData == null) { Log.Warning("Unknown actor '{0}'.", actorName); } else { actor = new NPC(actorData); } } else if (actorName == "me") { actor = creature; } else if (actorName == "leader") { actor = creature.Party.Leader; } else if (actorName.StartsWith("player")) { int idx; if (!int.TryParse(actorName.Substring("player".Length), out idx)) { Log.Warning("Cutscene.FromData: Invalid party member actor name '{0}'.", actorName); } else if (idx > partyMembers.Length - 1) { Log.Warning("Cutscene.FromData: Index out of party member range '{0}/{1}'.", idx, partyMembers.Length); } else { actor = partyMembers[idx]; } } else { Log.Warning("Cutscene.FromData: Unknown kind of actor ({0}).", actorName); } if (actor == null) { actor = dummy; } result.AddActor(actorName, actor); } return(result); }