public override bool CheckCondition() { int actualSceneNumber = 0; if (KickStarter.settingsManager == null || KickStarter.settingsManager.playerSwitching == PlayerSwitching.DoNotAllow) { runtimePlayerID = -1; } if (runtimePlayerID >= 0) { PlayerData playerData = KickStarter.saveSystem.GetPlayerData(runtimePlayerID); if (playerData != null) { if (sceneToCheck == SceneToCheck.Previous) { actualSceneNumber = playerData.previousScene; } else { actualSceneNumber = playerData.currentScene; } ChooseSceneByPlayerSwitching csbps = (ChooseSceneByPlayerSwitching)chooseSceneByPlayerSwitching; if (csbps == ChooseSceneByPlayerSwitching.CurrentMain) { return(actualSceneNumber == SceneChanger.CurrentSceneIndex); } chooseSceneBy = (ChooseSceneBy)chooseSceneByPlayerSwitching; } else { LogWarning("Could not find scene data for Player ID = " + playerID); } } else { if (sceneToCheck == SceneToCheck.Previous) { actualSceneNumber = KickStarter.sceneChanger.PreviousSceneIndex; } else { actualSceneNumber = SceneChanger.CurrentSceneIndex; } } if (actualSceneNumber == -1 && sceneToCheck == SceneToCheck.Previous) { LogWarning("The " + sceneToCheck + " scene's Build Index is currently " + actualSceneNumber + " - is this the game's first scene?"); return(false); } string actualSceneName = KickStarter.sceneChanger.IndexToName(actualSceneNumber); if (intCondition == IntCondition.EqualTo) { if (chooseSceneBy == ChooseSceneBy.Name && actualSceneName == AdvGame.ConvertTokens(sceneName)) { return(true); } if (chooseSceneBy == ChooseSceneBy.Number && actualSceneNumber == sceneNumber) { return(true); } } else if (intCondition == IntCondition.NotEqualTo) { if (chooseSceneBy == ChooseSceneBy.Name && actualSceneName != AdvGame.ConvertTokens(sceneName)) { return(true); } if (chooseSceneBy == ChooseSceneBy.Number && actualSceneNumber != sceneNumber) { return(true); } } return(false); }
public override void ShowGUI(List <ActionParameter> parameters) { bool showPlayerOptions = false; if (KickStarter.settingsManager != null && KickStarter.settingsManager.playerSwitching == PlayerSwitching.Allow) { playerParameterID = ChooseParameterGUI("Player:", parameters, playerParameterID, ParameterType.Integer); if (playerParameterID < 0) { playerID = ChoosePlayerGUI(playerID, true); showPlayerOptions = (playerID >= 0); } else { showPlayerOptions = true; } } if (showPlayerOptions) { sceneToCheck = (SceneToCheck)EditorGUILayout.EnumPopup("Check type:", sceneToCheck); if (chooseSceneByPlayerSwitching == -1) { chooseSceneByPlayerSwitching = (int)chooseSceneBy; } ChooseSceneByPlayerSwitching csbps = (ChooseSceneByPlayerSwitching)chooseSceneByPlayerSwitching; csbps = (ChooseSceneByPlayerSwitching)EditorGUILayout.EnumPopup("Choose scene by:", csbps); chooseSceneByPlayerSwitching = (int)csbps; chooseSceneBy = (ChooseSceneBy)chooseSceneByPlayerSwitching; EditorGUILayout.BeginHorizontal(); switch (csbps) { case ChooseSceneByPlayerSwitching.Name: EditorGUILayout.LabelField("Scene name is:", GUILayout.Width(100f)); intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition); sceneNameParameterID = ChooseParameterGUI(string.Empty, parameters, sceneNameParameterID, ParameterType.String); if (sceneNameParameterID < 0) { sceneName = EditorGUILayout.TextField(sceneName); } break; case ChooseSceneByPlayerSwitching.Number: EditorGUILayout.LabelField("Scene number is:", GUILayout.Width(100f)); intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition); sceneNumberParameterID = ChooseParameterGUI(string.Empty, parameters, sceneNumberParameterID, ParameterType.Integer); if (sceneNumberParameterID < 0) { sceneNumber = EditorGUILayout.IntField(sceneNumber); } break; default: break; } EditorGUILayout.EndHorizontal(); } else { sceneToCheck = (SceneToCheck)EditorGUILayout.EnumPopup("Check type:", sceneToCheck); chooseSceneBy = (ChooseSceneBy)EditorGUILayout.EnumPopup("Choose scene by:", chooseSceneBy); EditorGUILayout.BeginHorizontal(); switch (chooseSceneBy) { case ChooseSceneBy.Name: EditorGUILayout.LabelField("Scene name is:", GUILayout.Width(100f)); intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition); sceneNameParameterID = ChooseParameterGUI(string.Empty, parameters, sceneNameParameterID, ParameterType.String); if (sceneNameParameterID < 0) { sceneName = EditorGUILayout.TextField(sceneName); } break; case ChooseSceneBy.Number: EditorGUILayout.LabelField("Scene number is:", GUILayout.Width(100f)); intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition); sceneNumberParameterID = ChooseParameterGUI(string.Empty, parameters, sceneNumberParameterID, ParameterType.Integer); if (sceneNumberParameterID < 0) { sceneNumber = EditorGUILayout.IntField(sceneNumber); } break; default: break; } EditorGUILayout.EndHorizontal(); } }