public virtual void PrewarmAfterCreate() { BasePrecondition basePrecondition = ParsePrecondition(m_preconditionString); if (basePrecondition != null && basePrecondition is PartyCheckPrecondition && !(this is SetEnabledInteraction)) { Int32 requiredTokenID = ((PartyCheckPrecondition)basePrecondition).RequiredTokenID; if (requiredTokenID > 0) { LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.ANNOUNCE_NEEDED_TOKEN, new TokenEventArgs(requiredTokenID)); } } }
public virtual void Execute() { m_precondition = ParsePrecondition(m_preconditionString); if (m_precondition != null) { m_stateMachine.ChangeState(1); LegacyLogic.Instance.EventManager.RegisterEvent(EEventType.PRECONDITION_EVALUATED, new EventHandler(Validate)); m_precondition.Trigger(); } else { StartExecution(); } }
private void UpdateName(InteractiveObject p_interactiveObject) { Boolean flag = false; IEnumerable <InteractiveObjectTooltipStaticData> iterator = StaticDataHandler.GetIterator <InteractiveObjectTooltipStaticData>(EDataType.INTERACTIVE_OBJECT_TOOLTIPS); KeyCode keyCode = KeyConfigManager.KeyBindings[EHotkeyType.INTERACT].Key1; if (keyCode == KeyCode.None) { keyCode = KeyConfigManager.KeyBindings[EHotkeyType.INTERACT].AltKey1; } String text = m_actionColorHex + "[" + LocaManager.GetText("OPTIONS_INPUT_KEYNAME_" + keyCode.ToString().ToUpper()) + "][-]"; if (!String.IsNullOrEmpty(p_interactiveObject.Prefab)) { String directoryName = Path.GetDirectoryName(p_interactiveObject.Prefab); foreach (InteractiveObjectTooltipStaticData interactiveObjectTooltipStaticData in iterator) { if (interactiveObjectTooltipStaticData.PrefabFolder == directoryName || interactiveObjectTooltipStaticData.PrefabFolder == p_interactiveObject.Prefab) { m_label.text = LocaManager.GetText(interactiveObjectTooltipStaticData.LocaKey, text); flag = true; break; } } } if (p_interactiveObject is Button) { if (!flag) { m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_BUTTON", text); } return; } if (p_interactiveObject is Lever) { if (!flag) { m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_LEVER", text); } return; } if (!(p_interactiveObject is Barrel)) { if (p_interactiveObject is Container) { Container container = p_interactiveObject as Container; if (!container.IsEmpty()) { if (!flag) { m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_CONTAINER", text); } } else { foreach (SpawnCommand spawnCommand in container.Commands) { if (spawnCommand.Type == EInteraction.CHANGE_ATTRIBUTE) { m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_CONTAINER", text); return; } } m_label.text = String.Empty; } return; } if (p_interactiveObject is Door) { if (LegacyLogic.Instance.WorldManager.Party.SelectedInteractiveObject == null || p_interactiveObject.IsSecret) { m_label.text = String.Empty; return; } if (((Door)p_interactiveObject).State == EInteractiveObjectState.DOOR_OPEN) { m_label.text = String.Empty; } else { m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_DOOR", text); } return; } else { if (p_interactiveObject is Sign) { if (!flag) { m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_SIGN", text); } return; } if (p_interactiveObject is Entrance) { if (flag) { return; } Entrance entrance = (Entrance)p_interactiveObject; String text2 = entrance.MinimapTooltipLocaKey; if (!String.IsNullOrEmpty(text2)) { text2 = LocaManager.GetText(entrance.MinimapTooltipLocaKey); m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_ENTRANCE", text, text2); return; } text2 = null; foreach (SpawnCommand spawnCommand2 in entrance.Commands) { if (spawnCommand2.Type == EInteraction.USE_ENTRANCE) { String[] array = spawnCommand2.Extra.Split(new Char[] { ',' }); text2 = array[0].Replace(".xml", String.Empty); break; } } if (text2 != null) { GridInfo gridInfo = LegacyLogic.Instance.MapLoader.FindGridInfo(text2); if (gridInfo != null) { text2 = LocaManager.GetText(gridInfo.LocationLocaName); if (LegacyLogic.Instance.MapLoader.Grid.Type == EMapType.DUNGEON) { text2 = text2.Replace("@", ", "); } else if (text2.LastIndexOf('@') != -1) { text2 = text2.Remove(text2.LastIndexOf('@')); } m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_ENTRANCE", text, text2); return; } Debug.LogError("Grid Info not found " + text2); } } else if (p_interactiveObject is NpcContainer) { NpcContainer npcContainer = (NpcContainer)p_interactiveObject; if (!npcContainer.IsEnabled) { m_label.text = String.Empty; return; } String minimapTooltipLocaKey = npcContainer.MinimapTooltipLocaKey; if (!String.IsNullOrEmpty(npcContainer.IndoorScene)) { if (!String.IsNullOrEmpty(minimapTooltipLocaKey)) { String text3 = LocaManager.GetText(minimapTooltipLocaKey); m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_BUILDING_DEFAULT", text, text3); return; } foreach (InteractiveObjectTooltipStaticData interactiveObjectTooltipStaticData2 in iterator) { if (interactiveObjectTooltipStaticData2.PrefabFolder == npcContainer.IndoorScene) { m_label.text = LocaManager.GetText(interactiveObjectTooltipStaticData2.LocaKey, text); return; } } m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_INDOOR_CONTEXT", text); return; } else { if (!npcContainer.Npcs[0].IsEnabled) { m_label.text = String.Empty; return; } foreach (SpawnCommand spawnCommand3 in npcContainer.Commands) { if (spawnCommand3.Type == EInteraction.START_DEFINED_DIALOG && !String.IsNullOrEmpty(spawnCommand3.Precondition) && spawnCommand3.Precondition.StartsWith("PARTY_CHECK")) { BasePrecondition basePrecondition = BaseInteraction.ParsePrecondition(spawnCommand3.Precondition); if (basePrecondition is PartyCheckPrecondition && !((PartyCheckPrecondition)basePrecondition).Evaluate()) { m_label.text = String.Empty; return; } } } if (flag) { return; } if (!String.IsNullOrEmpty(minimapTooltipLocaKey)) { m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_NPC", text, minimapTooltipLocaKey); return; } if (npcContainer.Npcs[0].StaticID != 224 && npcContainer.Npcs[0].StaticID != 225) { String text4 = LocaManager.GetText(npcContainer.Npcs[0].StaticData.NameKey); m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_NPC", text, text4); return; } } } else if (p_interactiveObject is RechargingObject) { RechargingObject rechargingObject = (RechargingObject)p_interactiveObject; if (rechargingObject.IsFountain()) { m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_FOUNTAIN", text); } else if (rechargingObject.IsCrystal()) { m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_CRYSTAL", text); } else { m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_STATUE", text); } return; } m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_FALLBACK", text); } return; } Barrel barrel = p_interactiveObject as Barrel; if (barrel.State == EInteractiveObjectState.BARREL_EMPTY) { m_label.text = String.Empty; return; } if (barrel.State == EInteractiveObjectState.BARREL_OPEN) { m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_FALLBACK", text); return; } m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_BARREL", text); }
protected internal static BasePrecondition ParsePrecondition(String p_precondition) { if (p_precondition == "NONE" || p_precondition == String.Empty) { return(null); } String[] array = p_precondition.Split(new Char[] { ',' }); if (array[0] == "NONE") { return(null); } BasePrecondition basePrecondition = null; String maintext = String.Empty; String successText = String.Empty; String failText = String.Empty; String text = String.Empty; EPotionTarget attribute = EPotionTarget.NONE; Int32 requiredValue = 0; EPreconditionDecision epreconditionDecision = (EPreconditionDecision)Enum.Parse(typeof(EPreconditionDecision), array[1]); maintext = array[2]; if (epreconditionDecision == EPreconditionDecision.TEXT_INPUT && array.Length > 5) { text = array[5]; } if (epreconditionDecision == EPreconditionDecision.WHO_WILL && array.Length > 5) { attribute = (EPotionTarget)Enum.Parse(typeof(EPotionTarget), array[5]); requiredValue = Convert.ToInt32(array[6]); } if (array[0] == "PLAIN") { basePrecondition = new PlainPrecondition(); } else { successText = array[3]; failText = array[4]; } if (array[0] == "SELECT_CHARACTER") { basePrecondition = new SelectCharacterPrecondition(); } if (array[0] == "TEST") { if (array.Length != 7) { throw new FormatException(String.Concat(new Object[] { "Could not parse precondition params ", p_precondition, " because it contains ", array.Length, " arguments instead of ", 7 })); } basePrecondition = new TestPrecondition { Attribute = attribute, RequiredValue = requiredValue, SuccessText = successText, FailText = failText }; } if (array[0] == "CHALLENGE") { if (array.Length != 8 && array.Length != 7) { throw new FormatException(String.Concat(new Object[] { "Could not parse precondition params ", p_precondition, " because it contains ", array.Length, " arguments instead of ", 8 })); } if (array.Length == 8) { basePrecondition = new ChallengePrecondition { Attribute = attribute, RequiredValue = requiredValue, SuccessText = successText, FailText = failText, Damage = Convert.ToInt32(array[7]) }; } else { basePrecondition = new ChallengePrecondition { Attribute = attribute, RequiredValue = requiredValue, SuccessText = successText, FailText = failText, Damage = 0 }; } } if (array[0] == "SECRET_CHALLENGE") { if (array.Length != 8) { throw new FormatException(String.Concat(new Object[] { "Could not parse precondition params ", p_precondition, " because it contains ", array.Length, " arguments instead of ", 8 })); } basePrecondition = new SecretChallengePrecondition { Attribute = attribute, RequiredValue = requiredValue, SuccessText = successText, FailText = failText, Damage = Convert.ToInt32(array[7]) }; } if (array[0] == "DISARM_TRAP") { if (array.Length != 7) { throw new FormatException(String.Concat(new Object[] { "Could not parse precondition params ", p_precondition, " because it contains ", array.Length, " arguments instead of ", 7 })); } basePrecondition = new DisarmTrapPrecondition { Attribute = attribute, RequiredValue = requiredValue, SuccessText = successText, FailText = failText }; } if (array[0] == "INPUT") { if (array.Length != 6) { throw new FormatException(String.Concat(new Object[] { "Could not parse precondition params ", p_precondition, " because it contains ", array.Length, " arguments instead of ", 6 })); } basePrecondition = new InputPrecondition { WantedInput = text, SuccessText = successText, FailText = failText }; } if (array[0] == "UNLOCK_KEY") { if (array.Length != 6) { throw new FormatException(String.Concat(new Object[] { "Could not parse precondition params ", p_precondition, " because it contains ", array.Length, " arguments instead of ", 6 })); } Int32 wantedPrivilege = 0; if (text != String.Empty) { wantedPrivilege = Int32.Parse(text, CultureInfo.InvariantCulture.NumberFormat); } basePrecondition = new UnlockKeyPrecondition { WantedPrivilege = wantedPrivilege, SuccessText = successText, FailText = failText }; } if (array[0] == "PARTY_CHECK") { if (array.Length != 13 && array.Length != 10 && array.Length != 9 && array.Length != 8) { throw new FormatException(String.Concat(new Object[] { "Could not parse precondition params ", p_precondition, " because it contains ", array.Length, " arguments instead of ", 13 })); } if (array.Length > 5) { basePrecondition = new PartyCheckPrecondition { SuccessText = successText, FailText = failText, RequiredTokenID = Convert.ToInt32(array[5]), RequiredBlessingID = Convert.ToInt32(array[6]), RequiredActiveQuestStepID = Convert.ToInt32(array[7]) }; if (array.Length > 8) { ((PartyCheckPrecondition)basePrecondition).RequiredFinishedQuestStepID = Convert.ToInt32(array[8]); } if (array.Length > 9) { ((PartyCheckPrecondition)basePrecondition).RequiredHirelingID = Convert.ToInt32(array[9]); } if (array.Length > 12) { ((PartyCheckPrecondition)basePrecondition).RequiredInactiveQuestStepID = Convert.ToInt32(array[10]); ((PartyCheckPrecondition)basePrecondition).WithoutHirelingID = Convert.ToInt32(array[11]); ((PartyCheckPrecondition)basePrecondition).WithoutTokenID = Convert.ToInt32(array[12]); } } else { basePrecondition = new PartyCheckPrecondition { SuccessText = successText, FailText = failText }; } } basePrecondition.Decision = epreconditionDecision; basePrecondition.Maintext = maintext; return(basePrecondition); }
public PreconditionGUIEventArgs(BasePrecondition p_condition) { m_condition = p_condition; }