Exemplo n.º 1
0
        override public float Run()
        {
            if (_parameter == null)
            {
                ACDebug.LogWarning("Cannot set parameter value since it cannot be found!");
                return(0f);
            }

            if (setParamMethod == SetParamMethod.CopiedFromGlobalVariable)
            {
                GVar gVar = GlobalVariables.GetVariable(globalVariableID);
                if (gVar != null)
                {
                    if (_parameter.parameterType == ParameterType.Boolean ||
                        _parameter.parameterType == ParameterType.Integer)
                    {
                        _parameter.intValue = gVar.val;
                    }
                    else if (_parameter.parameterType == ParameterType.Float)
                    {
                        _parameter.floatValue = gVar.floatVal;
                    }
                    else if (_parameter.parameterType == ParameterType.Vector3)
                    {
                        _parameter.vector3Value = gVar.vector3Val;
                    }
                    else if (_parameter.parameterType == ParameterType.String)
                    {
                        _parameter.stringValue = GlobalVariables.GetStringValue(globalVariableID, true, Options.GetLanguage());
                    }
                }
            }
            else if (setParamMethod == SetParamMethod.EnteredHere)
            {
                if (_parameter.parameterType == ParameterType.Boolean ||
                    _parameter.parameterType == ParameterType.Integer ||
                    _parameter.parameterType == ParameterType.GlobalVariable ||
                    _parameter.parameterType == ParameterType.LocalVariable ||
                    _parameter.parameterType == ParameterType.InventoryItem)
                {
                    _parameter.intValue = intValue;
                }
                else if (_parameter.parameterType == ParameterType.Float)
                {
                    _parameter.floatValue = floatValue;
                }
                else if (_parameter.parameterType == ParameterType.String)
                {
                    _parameter.stringValue = stringValue;
                }
                else if (_parameter.parameterType == ParameterType.GameObject)
                {
                    _parameter.gameObject = gameobjectValue;
                    _parameter.intValue   = gameObjectConstantID;
                }
                else if (_parameter.parameterType == ParameterType.UnityObject)
                {
                    _parameter.objectValue = unityObjectValue;
                }
                else if (_parameter.parameterType == ParameterType.Vector3)
                {
                    _parameter.vector3Value = vector3Value;
                }
            }
            else if (setParamMethod == SetParamMethod.Random)
            {
                if (_parameter.parameterType == ParameterType.Boolean)
                {
                    _parameter.intValue = Random.Range(0, 2);
                }
                else if (_parameter.parameterType == ParameterType.Integer)
                {
                    _parameter.intValue = Random.Range(intValue, intValueMax + 1);
                }
                else if (_parameter.parameterType == ParameterType.Float)
                {
                    _parameter.floatValue = Random.Range(floatValue, floatValueMax);
                }
                else
                {
                    ACDebug.LogWarning("Parameters of type '" + _parameter.parameterType + "' cannot be set randomly.");
                }
            }
            else if (setParamMethod == SetParamMethod.CopiedFromParameter)
            {
                if (_parameterToCopy == null)
                {
                    ACDebug.LogWarning("Cannot copy parameter value since it cannot be found!");
                    return(0f);
                }

                _parameter.CopyValues(_parameterToCopy);
            }

            return(0f);
        }
Exemplo n.º 2
0
        /**
         * <summary>Performs what should happen when the element is clicked on.</summary>
         * <param name = "_menu">The element's parent Menu</param>
         * <param name = "_slot">Ignored by this subclass</param>
         * <param name = "_mouseState">The state of the mouse button</param>
         */
        public override void ProcessClick(AC.Menu _menu, int _slot, MouseState _mouseState)
        {
            if (!_menu.IsClickable())
            {
                return;
            }

            base.ProcessClick(_menu, _slot, _mouseState);

                        #if UNITY_5_3_OR_NEWER
            if (uiDropdown != null)
            {
                selected = uiDropdown.value;
            }
            else
            {
                selected++;
                if (selected > optionsArray.Count - 1)
                {
                    selected = 0;
                }
            }
                        #else
            selected++;
            if (selected > optionsArray.Count - 1)
            {
                selected = 0;
            }
                        #endif

            if (cycleType == AC_CycleType.Language)
            {
                if (selected == 0 && KickStarter.speechManager.ignoreOriginalText && KickStarter.runtimeLanguages.Languages.Count > 1)
                {
                    // Ignore original text by skipping to first language
                    selected = 1;
                }
                Options.SetLanguage(selected);
            }
            else if (cycleType == AC_CycleType.Variable)
            {
                if (varID >= 0)
                {
                    GVar var = GlobalVariables.GetVariable(varID);
                    if (var.type == VariableType.Integer)
                    {
                        var.val = selected;
                        var.Upload();
                    }
                }
            }

            if (cycleType == AC_CycleType.CustomScript)
            {
                MenuSystem.OnElementClick(_menu, this, _slot, (int)_mouseState);
            }

            if (actionListOnClick)
            {
                AdvGame.RunActionListAsset(actionListOnClick);
            }
        }
        override public float Run()
        {
            if (!KickStarter.settingsManager.useProfiles)
            {
                ACDebug.LogWarning("Save game profiles are not enabled - please set in Settings Manager to use this Action.");
                return(0f);
            }

            string newProfileLabel = "";

            if ((manageProfileType == ManageProfileType.CreateProfile && useCustomLabel) || manageProfileType == ManageProfileType.RenameProfile)
            {
                GVar gVar = GlobalVariables.GetVariable(varID);
                if (gVar != null)
                {
                    newProfileLabel = gVar.textVal;
                }
                else
                {
                    ACDebug.LogWarning("Could not " + manageProfileType.ToString() + " - no variable found.");
                    return(0f);
                }
            }

            if (manageProfileType == ManageProfileType.CreateProfile)
            {
                KickStarter.options.CreateProfile(newProfileLabel);
            }
            else if (manageProfileType == ManageProfileType.DeleteProfile ||
                     manageProfileType == ManageProfileType.RenameProfile ||
                     manageProfileType == ManageProfileType.SwitchActiveProfile)
            {
                if (deleteProfileType == DeleteProfileType.ActiveProfile)
                {
                    if (manageProfileType == ManageProfileType.DeleteProfile)
                    {
                        KickStarter.saveSystem.DeleteProfile();
                    }
                    else if (manageProfileType == ManageProfileType.RenameProfile)
                    {
                        KickStarter.options.RenameProfile(newProfileLabel);
                    }
                    return(0f);
                }
                else if (deleteProfileType == DeleteProfileType.SetProfileID)
                {
                    int profileID = Mathf.Max(0, profileIndex);

                    if (manageProfileType == ManageProfileType.DeleteProfile)
                    {
                        KickStarter.saveSystem.DeleteProfileID(profileID);
                    }
                    else if (manageProfileType == ManageProfileType.RenameProfile)
                    {
                        KickStarter.options.RenameProfileID(newProfileLabel, profileID);
                    }
                    else if (manageProfileType == ManageProfileType.SwitchActiveProfile)
                    {
                        Options.SwitchProfileID(profileID);
                    }
                }
                else if (deleteProfileType == DeleteProfileType.SetSlotIndex ||
                         deleteProfileType == DeleteProfileType.SlotIndexFromVariable)
                {
                    int i = Mathf.Max(0, profileIndex);

                    if (deleteProfileType == DeleteProfileType.SlotIndexFromVariable)
                    {
                        GVar gVar = GlobalVariables.GetVariable(slotVarID);
                        if (gVar != null)
                        {
                            i = gVar.val;
                        }
                        else
                        {
                            ACDebug.LogWarning("Could not " + manageProfileType.ToString() + " - no variable found.");
                            return(0f);
                        }
                    }

                    bool includeActive = true;
                    if (menuName != "" && elementName != "")
                    {
                        MenuElement menuElement = PlayerMenus.GetElementWithName(menuName, elementName);
                        if (menuElement != null && menuElement is MenuProfilesList)
                        {
                            MenuProfilesList menuProfilesList = (MenuProfilesList)menuElement;

                            if (menuProfilesList.fixedOption)
                            {
                                ACDebug.LogWarning("Cannot refer to ProfilesLst " + elementName + " in Menu " + menuName + ", as it lists a fixed profile ID only!");
                                return(0f);
                            }

                            i            += menuProfilesList.GetOffset();
                            includeActive = menuProfilesList.showActive;
                        }
                        else
                        {
                            ACDebug.LogWarning("Cannot find ProfilesList element '" + elementName + "' in Menu '" + menuName + "'.");
                        }
                    }
                    else
                    {
                        ACDebug.LogWarning("No ProfilesList element referenced when trying to delete profile slot " + i.ToString());
                    }

                    if (manageProfileType == ManageProfileType.DeleteProfile)
                    {
                        KickStarter.saveSystem.DeleteProfile(i, includeActive);
                    }
                    else if (manageProfileType == ManageProfileType.RenameProfile)
                    {
                        KickStarter.options.RenameProfile(newProfileLabel, i, includeActive);
                    }
                    else if (manageProfileType == ManageProfileType.SwitchActiveProfile)
                    {
                        KickStarter.options.SwitchProfile(i, includeActive);
                    }
                }
            }

            return(0f);
        }
Exemplo n.º 4
0
        override public float Run()
        {
            if (teleporter && obToMove)
            {
                Vector3    position = teleporter.transform.position;
                Quaternion rotation = teleporter.transform.rotation;

                if (positionRelativeTo == PositionRelativeTo.RelativeToActiveCamera)
                {
                    Transform mainCam = KickStarter.mainCamera.transform;

                    float right   = teleporter.transform.position.x;
                    float up      = teleporter.transform.position.y;
                    float forward = teleporter.transform.position.z;

                    position              = mainCam.position + (mainCam.forward * forward) + (mainCam.right * right) + (mainCam.up * up);
                    rotation.eulerAngles += mainCam.transform.rotation.eulerAngles;
                }
                else if (positionRelativeTo == PositionRelativeTo.RelativeToPlayer && !isPlayer)
                {
                    if (KickStarter.player)
                    {
                        Transform playerTranform = KickStarter.player.transform;

                        float right   = teleporter.transform.position.x;
                        float up      = teleporter.transform.position.y;
                        float forward = teleporter.transform.position.z;

                        position              = playerTranform.position + (playerTranform.forward * forward) + (playerTranform.right * right) + (playerTranform.up * up);
                        rotation.eulerAngles += playerTranform.rotation.eulerAngles;
                    }
                }
                else if (positionRelativeTo == PositionRelativeTo.RelativeToGameObject)
                {
                    if (relativeGameObject != null)
                    {
                        Transform relativeTransform = relativeGameObject.transform;

                        float right   = teleporter.transform.position.x;
                        float up      = teleporter.transform.position.y;
                        float forward = teleporter.transform.position.z;

                        position              = relativeTransform.position + (relativeTransform.forward * forward) + (relativeTransform.right * right) + (relativeTransform.up * up);
                        rotation.eulerAngles += relativeTransform.rotation.eulerAngles;
                    }
                }
                else if (positionRelativeTo == PositionRelativeTo.EnteredValue)
                {
                    position += relativeVector;
                }
                else if (positionRelativeTo == PositionRelativeTo.VectorVariable)
                {
                    if (variableLocation == VariableLocation.Global)
                    {
                        position += GlobalVariables.GetVector3Value(vectorVarID);
                    }
                    else if (variableLocation == VariableLocation.Local && !isAssetFile)
                    {
                        position += LocalVariables.GetVector3Value(vectorVarID);
                    }
                }

                if (copyRotation)
                {
                    obToMove.transform.rotation = rotation;

                    if (obToMove.GetComponent <Char>())
                    {
                        // Is a character, so set the lookDirection, otherwise will revert back to old rotation
                        obToMove.GetComponent <Char>().SetLookDirection(teleporter.transform.forward, true);
                        obToMove.GetComponent <Char>().Halt();
                    }
                }

                if (obToMove.GetComponent <Char>())
                {
                    obToMove.GetComponent <Char>().Teleport(position, recalculateActivePathFind);
                }
                else
                {
                    obToMove.transform.position = position;
                }

                if (isPlayer && snapCamera)
                {
                    if (KickStarter.mainCamera != null && KickStarter.mainCamera.attachedCamera != null && KickStarter.mainCamera.attachedCamera.targetIsPlayer)
                    {
                        KickStarter.mainCamera.attachedCamera.MoveCameraInstant();
                    }
                }
            }

            return(0f);
        }
        public override ActionEnd End(List <Action> actions)
        {
            int actualNumber = 0;

            if (saveCheck == SaveCheck.NumberOfSaveGames)
            {
                actualNumber = KickStarter.saveSystem.GetNumSaves(includeAutoSaves);
            }
            else if (saveCheck == SaveCheck.NumberOfProfiles)
            {
                actualNumber = KickStarter.options.GetNumProfiles();
            }
            else if (saveCheck == SaveCheck.IsSlotEmpty)
            {
                return(ProcessResult(!SaveSystem.DoesSaveExist(intValue, intValue, !checkByElementIndex), actions));
            }
            else if (saveCheck == SaveCheck.DoesProfileExist)
            {
                if (checkByElementIndex)
                {
                    int  i             = Mathf.Max(0, intValue);
                    bool includeActive = true;
                    if (menuName != "" && elementName != "")
                    {
                        MenuElement menuElement = PlayerMenus.GetElementWithName(menuName, elementName);
                        if (menuElement != null && menuElement is MenuProfilesList)
                        {
                            MenuProfilesList menuProfilesList = (MenuProfilesList)menuElement;

                            if (menuProfilesList.fixedOption)
                            {
                                LogWarning("Cannot refer to ProfilesList " + elementName + " in Menu " + menuName + ", as it lists a fixed profile ID only!");
                                return(ProcessResult(false, actions));
                            }

                            i            += menuProfilesList.GetOffset();
                            includeActive = menuProfilesList.showActive;
                        }
                        else
                        {
                            LogWarning("Cannot find ProfilesList element '" + elementName + "' in Menu '" + menuName + "'.");
                        }
                    }
                    else
                    {
                        LogWarning("No ProfilesList element referenced when trying to delete profile slot " + i.ToString());
                    }

                    bool result = KickStarter.options.DoesProfileExist(i, includeActive);
                    return(ProcessResult(result, actions));
                }
                else
                {
                    // intValue is the profile ID
                    bool result = Options.DoesProfileIDExist(intValue);
                    return(ProcessResult(result, actions));
                }
            }
            else if (saveCheck == SaveCheck.DoesProfileNameExist)
            {
                bool result = false;

                GVar gVar = GlobalVariables.GetVariable(profileVarID);
                if (gVar != null)
                {
                    string profileName = gVar.textVal;
                    result = KickStarter.options.DoesProfileExist(profileName);
                }
                else
                {
                    LogWarning("Could not check for profile name - no variable found.");
                }

                return(ProcessResult(result, actions));
            }
            else if (saveCheck == SaveCheck.IsSavingPossible)
            {
                return(ProcessResult(!PlayerMenus.IsSavingLocked(this), actions));
            }

            return(ProcessResult(CheckCondition(actualNumber), actions));
        }
        /**
         * Updates the label's text buffer.  This is normally done internally at runtime, but can be called manually to update it in Edit mode.
         */
        public void UpdateLabelText(int languageNumber = 0)
        {
            string _oldLabel = newLabel;

            switch (labelType)
            {
            case AC_LabelType.Normal:
                newLabel = TranslateLabel(label, languageNumber);
                break;

            case AC_LabelType.Hotspot:
                string _newLabel = string.Empty;

                if (showPendingWhileMovingToHotspot &&
                    KickStarter.playerInteraction.GetHotspotMovingTo() != null &&
                    KickStarter.playerCursor.GetSelectedCursorID() == -1 &&
                    KickStarter.runtimeInventory.SelectedItem == null)
                {
                    _newLabel = KickStarter.playerInteraction.MovingToHotspotLabel;
                }

                if (string.IsNullOrEmpty(_newLabel))
                {
                    _newLabel = KickStarter.playerMenus.GetHotspotLabel();
                }

                if (!string.IsNullOrEmpty(_newLabel) || updateIfEmpty)
                {
                    newLabel = _newLabel;
                }
                break;

            case AC_LabelType.GlobalVariable:
                GVar variable = GlobalVariables.GetVariable(variableID);
                if (variable != null)
                {
                    newLabel = variable.GetValue(languageNumber);
                }
                else
                {
                    ACDebug.LogWarning("Label element '" + title + "' cannot display Global Variable " + variableID + " as it does not exist!");
                }
                break;

            case AC_LabelType.ActiveSaveProfile:
                newLabel = KickStarter.options.GetProfileName();
                break;

            case AC_LabelType.InventoryProperty:
                newLabel = string.Empty;
                if (inventoryPropertyType == InventoryPropertyType.SelectedItem)
                {
                    newLabel = GetPropertyDisplayValue(languageNumber, KickStarter.runtimeInventory.SelectedItem);
                }
                else if (inventoryPropertyType == InventoryPropertyType.LastClickedItem)
                {
                    newLabel = GetPropertyDisplayValue(languageNumber, KickStarter.runtimeInventory.lastClickedItem);
                }
                else if (inventoryPropertyType == InventoryPropertyType.MouseOverItem)
                {
                    newLabel = GetPropertyDisplayValue(languageNumber, KickStarter.runtimeInventory.hoverItem);
                }
                break;

            case AC_LabelType.DialogueLine:
            case AC_LabelType.DialogueSpeaker:
                if (parentMenu != null && parentMenu.IsFadingOut())
                {
                    return;
                }

                UpdateSpeechLink();

                if (labelType == AC_LabelType.DialogueLine)
                {
                    if (speech != null)
                    {
                        string line = speech.displayText;
                        if (line != string.Empty || updateIfEmpty)
                        {
                            newLabel = line;
                        }

                        if (useCharacterColour)
                        {
                            speechColour = speech.GetColour();
                            if (uiText)
                            {
                                uiText.color = speechColour;
                            }
                        }
                    }
                    else if (!KickStarter.speechManager.keepTextInBuffer)
                    {
                        newLabel = string.Empty;
                    }
                }
                else if (labelType == AC_LabelType.DialogueSpeaker)
                {
                    if (speech != null)
                    {
                        string line = speech.GetSpeaker(languageNumber);

                        if (line != string.Empty || updateIfEmpty || speech.GetSpeakingCharacter() == null)
                        {
                            newLabel = line;
                        }
                    }
                    else if (!KickStarter.speechManager.keepTextInBuffer)
                    {
                        newLabel = string.Empty;
                    }
                }
                break;

            case AC_LabelType.DocumentTitle:
                if (Document != null)
                {
                    newLabel = KickStarter.runtimeLanguages.GetTranslation(Document.title,
                                                                           Document.titleLineID,
                                                                           languageNumber);
                }
                break;
            }

            if (newLabel != _oldLabel && sizeType == AC_SizeType.Automatic && parentMenu != null && parentMenu.menuSource == MenuSource.AdventureCreator)
            {
                parentMenu.Recalculate();
            }
        }
Exemplo n.º 7
0
        public override void AssignValues(List <ActionParameter> parameters)
        {
            GameObject      invPrefab = null;
            ActionParameter parameter = GetParameterWithID(parameters, parameterID);

            if (parameter != null && parameter.parameterType == ParameterType.InventoryItem)
            {
                InvItem invItem = KickStarter.inventoryManager.GetItem(parameter.intValue);
                if (invItem != null)
                {
                    invPrefab = invItem.linkedPrefab;
                }
            }

            if (invAction == InvAction.Add || invAction == InvAction.Replace)
            {
                if (invPrefab != null)
                {
                    _gameObject = invPrefab;
                }
                else
                {
                    _gameObject = AssignFile(parameters, parameterID, 0, gameObject);
                }

                if (invAction == InvAction.Replace)
                {
                    replaceGameObject = AssignFile(parameters, replaceParameterID, replaceConstantID, replaceGameObject);
                }
                else if (invAction == InvAction.Add)
                {
                    relativeGameObject = AssignFile(parameters, relativeGameObjectParameterID, relativeGameObjectID, relativeGameObject);
                }
            }
            else if (invAction == InvAction.Remove)
            {
                if (invPrefab != null)
                {
                    ConstantID invPrefabConstantID = invPrefab.GetComponent <ConstantID>();
                    if (invPrefabConstantID != null && invPrefabConstantID.constantID != 0)
                    {
                        _gameObject = AssignFile(invPrefabConstantID.constantID, _gameObject);
                    }
                    else
                    {
                        LogWarning("Cannot locate scene instance of prefab " + invPrefab + " as it has no Constant ID number");
                    }
                }
                else
                {
                    _gameObject = AssignFile(parameters, parameterID, constantID, gameObject);
                }
            }

            relativeVector = AssignVector3(parameters, relativeVectorParameterID, relativeVector);

            if (invAction == InvAction.Add && positionRelativeTo == PositionRelativeTo.VectorVariable)
            {
                runtimeVariable = null;
                switch (variableLocation)
                {
                case VariableLocation.Global:
                    vectorVarID     = AssignVariableID(parameters, vectorVarParameterID, vectorVarID);
                    runtimeVariable = GlobalVariables.GetVariable(vectorVarID, true);
                    break;

                case VariableLocation.Local:
                    if (!isAssetFile)
                    {
                        vectorVarID     = AssignVariableID(parameters, vectorVarParameterID, vectorVarID);
                        runtimeVariable = LocalVariables.GetVariable(vectorVarID, localVariables);
                    }
                    break;

                case VariableLocation.Component:
                    Variables runtimeVariables = AssignFile <Variables> (variablesConstantID, variables);
                    if (runtimeVariables != null)
                    {
                        runtimeVariable = runtimeVariables.GetVariable(vectorVarID);
                    }
                    runtimeVariable = AssignVariable(parameters, vectorVarParameterID, runtimeVariable);
                    break;
                }
            }

            runtimeSpawnedObjectParameter = null;
            if (invAction == InvAction.Add)
            {
                runtimeSpawnedObjectParameter = GetParameterWithID(parameters, spawnedObjectParameterID);
                if (runtimeSpawnedObjectParameter != null && runtimeSpawnedObjectParameter.parameterType != ParameterType.GameObject)
                {
                    runtimeSpawnedObjectParameter = null;
                }
            }
        }
Exemplo n.º 8
0
        override public float Run()
        {
            if ((saveHandling == SaveHandling.LoadGame || saveHandling == SaveHandling.ContinueFromLastSave) && doSelectiveLoad)
            {
                KickStarter.saveSystem.SetSelectiveLoadOptions(selectiveLoad);
            }

            string newSaveLabel = "";

            if (customLabel && ((updateLabel && saveHandling == SaveHandling.OverwriteExistingSave) || saveHandling == AC.SaveHandling.SaveNewGame))
            {
                if (selectSaveType != SelectSaveType.Autosave)
                {
                    GVar gVar = GlobalVariables.GetVariable(varID);
                    if (gVar != null)
                    {
                        //newSaveLabel = gVar.textVal;
                        newSaveLabel = gVar.GetValue(Options.GetLanguage());
                    }
                    else
                    {
                        ACDebug.LogWarning("Could not " + saveHandling.ToString() + " - no variable found.");
                        return(0f);
                    }
                }
            }

            int i = Mathf.Max(0, saveIndex);

            if (saveHandling == SaveHandling.ContinueFromLastSave)
            {
                SaveSystem.ContinueGame();
                return(0f);
            }

            if (saveHandling == SaveHandling.LoadGame || saveHandling == SaveHandling.OverwriteExistingSave)
            {
                if (selectSaveType == SelectSaveType.Autosave)
                {
                    if (saveHandling == SaveHandling.LoadGame)
                    {
                        SaveSystem.LoadAutoSave();
                        return(0f);
                    }
                    else
                    {
                        if (!PlayerMenus.IsSavingLocked(this))
                        {
                            SaveSystem.SaveAutoSave();
                        }
                        else
                        {
                            ACDebug.LogWarning("Cannot save at this time - either blocking ActionLists, a Converation is active, or saving has been manually locked.");
                        }
                        return(0f);
                    }
                }
                else if (selectSaveType == SelectSaveType.SlotIndexFromVariable)
                {
                    GVar gVar = GlobalVariables.GetVariable(slotVarID);
                    if (gVar != null)
                    {
                        i = gVar.val;
                    }
                    else
                    {
                        ACDebug.LogWarning("Could not get save slot index - no variable found.");
                        return(0f);
                    }
                }
            }

            if (menuName != "" && elementName != "")
            {
                MenuElement menuElement = PlayerMenus.GetElementWithName(menuName, elementName);
                if (menuElement != null && menuElement is MenuSavesList)
                {
                    MenuSavesList menuSavesList = (MenuSavesList)menuElement;
                    i += menuSavesList.GetOffset();
                }
                else
                {
                    ACDebug.LogWarning("Cannot find ProfilesList element '" + elementName + "' in Menu '" + menuName + "'.");
                }
            }
            else
            {
                ACDebug.LogWarning("No SavesList element referenced when trying to find slot slot " + i.ToString());
            }

            if (saveHandling == SaveHandling.LoadGame)
            {
                SaveSystem.LoadGame(i, -1, false);
            }
            else if (saveHandling == SaveHandling.OverwriteExistingSave || saveHandling == SaveHandling.SaveNewGame)
            {
                if (!PlayerMenus.IsSavingLocked(this))
                {
                    if (saveHandling == SaveHandling.OverwriteExistingSave)
                    {
                        SaveSystem.SaveGame(i, -1, false, updateLabel, newSaveLabel);
                    }
                    else if (saveHandling == SaveHandling.SaveNewGame)
                    {
                        SaveSystem.SaveNewGame(updateLabel, newSaveLabel);
                    }
                }
                else
                {
                    ACDebug.LogWarning("Cannot save at this time - either blocking ActionLists, a Converation is active, or saving has been manually locked.");
                }
            }
            return(0f);
        }
Exemplo n.º 9
0
        public override void AssignValues(List <ActionParameter> parameters)
        {
            if (invAction == InvAction.Add || invAction == InvAction.Replace)
            {
                _gameObject = AssignFile(parameters, parameterID, 0, gameObject);

                if (invAction == InvAction.Replace)
                {
                    replaceGameObject = AssignFile(parameters, replaceParameterID, replaceConstantID, replaceGameObject);
                }
                else if (invAction == InvAction.Add)
                {
                    relativeGameObject = AssignFile(parameters, relativeGameObjectParameterID, relativeGameObjectID, relativeGameObject);
                }
            }
            else if (invAction == InvAction.Remove)
            {
                _gameObject = AssignFile(parameters, parameterID, constantID, gameObject);
            }

            relativeVector = AssignVector3(parameters, relativeVectorParameterID, relativeVector);

            if (invAction == InvAction.Add && positionRelativeTo == PositionRelativeTo.VectorVariable)
            {
                runtimeVariable = null;
                switch (variableLocation)
                {
                case VariableLocation.Global:
                    vectorVarID     = AssignVariableID(parameters, vectorVarParameterID, vectorVarID);
                    runtimeVariable = GlobalVariables.GetVariable(vectorVarID, true);
                    break;

                case VariableLocation.Local:
                    if (!isAssetFile)
                    {
                        vectorVarID     = AssignVariableID(parameters, vectorVarParameterID, vectorVarID);
                        runtimeVariable = LocalVariables.GetVariable(vectorVarID, localVariables);
                    }
                    break;

                case VariableLocation.Component:
                    Variables runtimeVariables = AssignFile <Variables> (variablesConstantID, variables);
                    if (runtimeVariables != null)
                    {
                        runtimeVariable = runtimeVariables.GetVariable(vectorVarID);
                    }
                    runtimeVariable = AssignVariable(parameters, vectorVarParameterID, runtimeVariable);
                    break;
                }
            }

            runtimeSpawnedObjectParameter = null;
            if (invAction == InvAction.Add)
            {
                runtimeSpawnedObjectParameter = GetParameterWithID(parameters, spawnedObjectParameterID);
                if (runtimeSpawnedObjectParameter != null && runtimeSpawnedObjectParameter.parameterType != ParameterType.GameObject)
                {
                    runtimeSpawnedObjectParameter = null;
                }
            }
        }
Exemplo n.º 10
0
        override public void AssignValues(List <ActionParameter> parameters)
        {
            if (isPlayer)
            {
                if (KickStarter.player != null)
                {
                    runtimeLinkedProp = KickStarter.player.GetComponent <Moveable>();

                    if (runtimeLinkedProp == null)
                    {
                        ACDebug.LogWarning("The player " + KickStarter.player + " requires a Moveable component to be moved with the 'Object: Transform' Action.", KickStarter.player);
                    }
                }
                else
                {
                    runtimeLinkedProp = null;
                }
            }
            else
            {
                runtimeLinkedProp = AssignFile <Moveable> (parameters, parameterID, constantID, linkedProp);
            }

            runtimeMarker  = AssignFile <Marker> (parameters, markerParameterID, markerID, marker);
            transitionTime = AssignFloat(parameters, transitionTimeParameterID, transitionTime);
            newVector      = AssignVector3(parameters, newVectorParameterID, newVector);

            if (!(transformType == TransformType.CopyMarker ||
                  (transformType == TransformType.Translate && toBy == ToBy.To) ||
                  (transformType == TransformType.Rotate && toBy == ToBy.To)))
            {
                inWorldSpace = false;
            }

            runtimeVariable = null;
            if (transformType != TransformType.CopyMarker && setVectorMethod == SetVectorMethod.FromVector3Variable)
            {
                switch (variableLocation)
                {
                case VariableLocation.Global:
                    vectorVarID     = AssignVariableID(parameters, vectorVarParameterID, vectorVarID);
                    runtimeVariable = GlobalVariables.GetVariable(vectorVarID, true);
                    break;

                case VariableLocation.Local:
                    if (!isAssetFile)
                    {
                        vectorVarID     = AssignVariableID(parameters, vectorVarParameterID, vectorVarID);
                        runtimeVariable = LocalVariables.GetVariable(vectorVarID, localVariables);
                    }
                    break;

                case VariableLocation.Component:
                    Variables runtimeVariables = AssignFile <Variables> (variablesConstantID, variables);
                    if (runtimeVariables != null)
                    {
                        runtimeVariable = runtimeVariables.GetVariable(vectorVarID);
                    }
                    runtimeVariable = AssignVariable(parameters, vectorVarParameterID, runtimeVariable);
                    break;
                }
            }
        }
Exemplo n.º 11
0
        override public float Run()
        {
            if (_gameObject == null)
            {
                return(0f);
            }

            if (invAction == InvAction.Add)
            {
                // Instantiate

                GameObject oldOb = AssignFile(constantID, _gameObject);
                if (_gameObject.activeInHierarchy || (oldOb != null && oldOb.activeInHierarchy))
                {
                    RememberTransform rememberTransform = oldOb.GetComponent <RememberTransform>();

                    if (rememberTransform != null && rememberTransform.saveScenePresence && rememberTransform.linkedPrefabID != 0)
                    {
                        // Bypass this check
                    }
                    else
                    {
                        ACDebug.LogWarning(gameObject.name + " won't be instantiated, as it is already present in the scene.");
                        return(0f);
                    }
                }

                Vector3    position = _gameObject.transform.position;
                Quaternion rotation = _gameObject.transform.rotation;

                if (positionRelativeTo != PositionRelativeTo.Nothing)
                {
                    float forward = _gameObject.transform.position.z;
                    float right   = _gameObject.transform.position.x;
                    float up      = _gameObject.transform.position.y;

                    if (positionRelativeTo == PositionRelativeTo.RelativeToActiveCamera)
                    {
                        Transform mainCam = KickStarter.mainCamera.transform;
                        position              = mainCam.position + (mainCam.forward * forward) + (mainCam.right * right) + (mainCam.up * up);
                        rotation.eulerAngles += mainCam.transform.rotation.eulerAngles;
                    }
                    else if (positionRelativeTo == PositionRelativeTo.RelativeToPlayer)
                    {
                        if (KickStarter.player)
                        {
                            Transform playerTranform = KickStarter.player.transform;
                            position              = playerTranform.position + (playerTranform.forward * forward) + (playerTranform.right * right) + (playerTranform.up * up);
                            rotation.eulerAngles += playerTranform.rotation.eulerAngles;
                        }
                    }
                    else if (positionRelativeTo == PositionRelativeTo.RelativeToGameObject)
                    {
                        if (relativeGameObject != null)
                        {
                            Transform relativeTransform = relativeGameObject.transform;
                            position              = relativeTransform.position + (relativeTransform.forward * forward) + (relativeTransform.right * right) + (relativeTransform.up * up);
                            rotation.eulerAngles += relativeTransform.rotation.eulerAngles;
                        }
                    }
                    else if (positionRelativeTo == PositionRelativeTo.EnteredValue)
                    {
                        position += relativeVector;
                    }
                    else if (positionRelativeTo == PositionRelativeTo.VectorVariable)
                    {
                        if (variableLocation == VariableLocation.Global)
                        {
                            position += GlobalVariables.GetVector3Value(vectorVarID);
                        }
                        else if (variableLocation == VariableLocation.Local && !isAssetFile)
                        {
                            position += LocalVariables.GetVector3Value(vectorVarID);
                        }
                    }
                }

                GameObject newObject = (GameObject)Instantiate(_gameObject, position, rotation);
                newObject.name = _gameObject.name;

                if (newObject.GetComponent <RememberTransform>())
                {
                    newObject.GetComponent <RememberTransform>().OnSpawn();
                }

                KickStarter.stateHandler.IgnoreNavMeshCollisions();
            }
            else if (invAction == InvAction.Remove)
            {
                // Delete
                KickStarter.sceneChanger.ScheduleForDeletion(_gameObject);
            }
            else if (invAction == InvAction.Replace)
            {
                if (replaceGameObject == null)
                {
                    ACDebug.LogWarning("Cannot perform swap because the object to remove was not found in the scene.");
                    return(0f);
                }

                Vector3    position = replaceGameObject.transform.position;
                Quaternion rotation = replaceGameObject.transform.rotation;

                GameObject oldOb = AssignFile(constantID, _gameObject);
                if (gameObject.activeInHierarchy || (oldOb != null && oldOb.activeInHierarchy))
                {
                    ACDebug.Log(gameObject.name + " won't be instantiated, as it is already present in the scene.");
                    return(0f);
                }

                KickStarter.sceneChanger.ScheduleForDeletion(replaceGameObject);

                GameObject newObject = (GameObject)Instantiate(_gameObject, position, rotation);
                newObject.name = _gameObject.name;
                KickStarter.stateHandler.IgnoreNavMeshCollisions();
            }

            return(0f);
        }
Exemplo n.º 12
0
        public override float Run()
        {
            string newSaveLabel = string.Empty;

            if (manageSaveType == ManageSaveType.RenameSave)
            {
                GVar gVar = GlobalVariables.GetVariable(varID);
                if (gVar != null)
                {
                    newSaveLabel = gVar.TextValue;
                }
                else
                {
                    LogWarning("Could not " + manageSaveType.ToString() + " - no variable found.");
                    return(0f);
                }
            }

            int i = Mathf.Max(0, saveIndex);

            if (selectSaveType == SelectSaveType.SlotIndexFromVariable)
            {
                GVar gVar = GlobalVariables.GetVariable(slotVarID);
                if (gVar != null)
                {
                    i = gVar.IntegerValue;
                }
                else
                {
                    LogWarning("Could not rename save - no variable found.");
                    return(0f);
                }
            }
            else if (selectSaveType == SelectSaveType.Autosave)
            {
                if (manageSaveType == ManageSaveType.DeleteSave)
                {
                    SaveSystem.DeleteSave(0);
                }
                else if (manageSaveType == ManageSaveType.RenameSave)
                {
                    LogWarning("The Autosave file cannot be renamed.");
                    return(0f);
                }
            }

            if (selectSaveType != SelectSaveType.Autosave && selectSaveType != SelectSaveType.SetSaveID)
            {
                if (!string.IsNullOrEmpty(menuName) && !string.IsNullOrEmpty(elementName))
                {
                    MenuElement menuElement = PlayerMenus.GetElementWithName(menuName, elementName);
                    if (menuElement != null && menuElement is MenuSavesList)
                    {
                        MenuSavesList menuSavesList = (MenuSavesList)menuElement;
                        i += menuSavesList.GetOffset();
                    }
                    else
                    {
                        LogWarning("Cannot find SavesList element '" + elementName + "' in Menu '" + menuName + "'.");
                    }
                }
                else
                {
                    LogWarning("No SavesList element referenced when trying to find save slot " + i.ToString());
                }
            }

            if (manageSaveType == ManageSaveType.DeleteSave)
            {
                if (selectSaveType == SelectSaveType.SetSaveID)
                {
                    SaveSystem.DeleteSave(i);
                }
                else
                {
                    KickStarter.saveSystem.DeleteSave(i, -1, false);
                }
            }
            else if (manageSaveType == ManageSaveType.RenameSave)
            {
                if (selectSaveType == SelectSaveType.SetSaveID)
                {
                    KickStarter.saveSystem.RenameSaveByID(newSaveLabel, i);
                }
                else
                {
                    KickStarter.saveSystem.RenameSave(newSaveLabel, i);
                }
            }

            return(0f);
        }
Exemplo n.º 13
0
        /**
         * <summary>Performs all calculations necessary to display the element.</summary>
         * <param name = "_slot">Ignored by this subclass</param>
         * <param name = "languageNumber">The index number of the language to display text in</param>
         * <param name = "isActive">If True, then the element will be drawn as though highlighted</param>
         */
        public override void PreDisplay(int _slot, int languageNumber, bool isActive)
        {
            if (Application.isPlaying)
            {
                if (labelType == AC_LabelType.Hotspot)
                {
                    string _newLabel = "";
                    if (invItem != null)
                    {
                        _newLabel = invItem.GetFullLabel(languageNumber);
                    }
                    else if (hotspot != null)
                    {
                        _newLabel = hotspot.GetFullLabel(languageNumber);
                    }
                    else if (!showPendingWhileMovingToHotspot && KickStarter.settingsManager.interactionMethod == AC_InteractionMethod.ChooseInteractionThenHotspot && KickStarter.playerInteraction.GetHotspotMovingTo() != null && KickStarter.playerCursor.GetSelectedCursorID() == -1)
                    {
                        _newLabel = KickStarter.playerInteraction.MovingToHotspotLabel;
                    }
                    else
                    {
                        _newLabel = KickStarter.playerMenus.GetHotspotLabel();
                    }

                    if (_newLabel != "" || updateIfEmpty)
                    {
                        newLabel = _newLabel;
                    }
                }
                else if (labelType == AC_LabelType.Normal)
                {
                    newLabel = TranslateLabel(label, languageNumber);
                }
                else if (labelType == AC_LabelType.GlobalVariable)
                {
                    GVar variable = GlobalVariables.GetVariable(variableID);
                    if (variable != null)
                    {
                        newLabel = variable.GetValue(languageNumber);
                    }
                    else
                    {
                        ACDebug.LogWarning("Label element '" + title + "' cannot display Global Variable " + variableID + " as it does not exist!");
                    }
                }
                else if (labelType == AC_LabelType.ActiveSaveProfile)
                {
                    newLabel = KickStarter.options.GetProfileName();
                }
                else if (labelType == AC_LabelType.InventoryProperty)
                {
                    newLabel = "";

                    if (inventoryPropertyType == InventoryPropertyType.SelectedItem)
                    {
                        newLabel = GetPropertyDisplayValue(languageNumber, KickStarter.runtimeInventory.SelectedItem);
                    }
                    else if (inventoryPropertyType == InventoryPropertyType.LastClickedItem)
                    {
                        newLabel = GetPropertyDisplayValue(languageNumber, KickStarter.runtimeInventory.lastClickedItem);
                    }
                    else if (inventoryPropertyType == InventoryPropertyType.MouseOverItem)
                    {
                        newLabel = GetPropertyDisplayValue(languageNumber, KickStarter.runtimeInventory.hoverItem);
                    }
                }
                else if (labelType == AC_LabelType.DialogueLine || labelType == AC_LabelType.DialogueSpeaker)
                {
                    if (linkedMenu != null && linkedMenu.IsFadingOut())
                    {
                        return;
                    }

                    UpdateSpeechLink();

                    if (labelType == AC_LabelType.DialogueLine)
                    {
                        if (speech != null)
                        {
                            string line = speech.displayText;
                            if (line != "" || updateIfEmpty)
                            {
                                newLabel = line;
                            }

                            if (useCharacterColour)
                            {
                                speechColour = speech.GetColour();
                                if (uiText)
                                {
                                    uiText.color = speechColour;
                                }
                            }
                        }
                        else if (!KickStarter.speechManager.keepTextInBuffer)
                        {
                            newLabel = "";
                        }
                    }
                    else if (labelType == AC_LabelType.DialogueSpeaker)
                    {
                        if (speech != null)
                        {
                            string line = speech.GetSpeaker(languageNumber);

                            if (line != "" || updateIfEmpty || speech.GetSpeakingCharacter() == null)
                            {
                                newLabel = line;
                            }
                        }
                        else if (!KickStarter.speechManager.keepTextInBuffer)
                        {
                            newLabel = "";
                        }
                    }
                }
            }
            else
            {
                newLabel = label;
            }

            newLabel = AdvGame.ConvertTokens(newLabel, languageNumber);

            if (uiText != null && Application.isPlaying)
            {
                uiText.text = newLabel;
                UpdateUIElement(uiText);
            }
        }
Exemplo n.º 14
0
        private void RunToTime(float _time, bool isSkipping)
        {
            if (transformType == TransformType.CopyMarker)
            {
                if (marker)
                {
                    linkedProp.Move(marker, moveMethod, inWorldSpace, _time, timeCurve);
                }
            }
            else
            {
                Vector3 targetVector = Vector3.zero;

                if (setVectorMethod == SetVectorMethod.FromVector3Variable)
                {
                    if (variableLocation == VariableLocation.Global)
                    {
                        targetVector = GlobalVariables.GetVector3Value(vectorVarID);
                    }
                    else if (variableLocation == VariableLocation.Local && !isAssetFile)
                    {
                        targetVector = LocalVariables.GetVector3Value(vectorVarID);
                    }
                }
                else if (setVectorMethod == SetVectorMethod.EnteredHere)
                {
                    targetVector = newVector;
                }

                if (transformType == TransformType.Translate)
                {
                    if (toBy == ToBy.By)
                    {
                        targetVector = SetRelativeTarget(targetVector, isSkipping, linkedProp.transform.localPosition);
                    }
                }
                else if (transformType == TransformType.Rotate)
                {
                    if (toBy == ToBy.By)
                    {
                        int numZeros = 0;
                        if (targetVector.x == 0f)
                        {
                            numZeros++;
                        }
                        if (targetVector.y == 0f)
                        {
                            numZeros++;
                        }
                        if (targetVector.z == 0f)
                        {
                            numZeros++;
                        }

                        if (numZeros == 2)
                        {
                            targetVector = SetRelativeTarget(targetVector, isSkipping, linkedProp.transform.eulerAngles);
                        }
                        else
                        {
                            Quaternion currentRotation = linkedProp.transform.localRotation;
                            linkedProp.transform.Rotate(targetVector, Space.World);
                            targetVector = linkedProp.transform.localEulerAngles;
                            linkedProp.transform.localRotation = currentRotation;
                        }
                    }
                }
                else if (transformType == TransformType.Scale)
                {
                    if (toBy == ToBy.By)
                    {
                        targetVector = SetRelativeTarget(targetVector, isSkipping, linkedProp.transform.localScale);
                    }
                }

                if (transformType == TransformType.Rotate)
                {
                    linkedProp.Move(targetVector, moveMethod, inWorldSpace, _time, transformType, doEulerRotation, timeCurve, clearExisting);
                }
                else
                {
                    linkedProp.Move(targetVector, moveMethod, inWorldSpace, _time, transformType, false, timeCurve, clearExisting);
                }
            }
        }
Exemplo n.º 15
0
        /**
         * <summary>Performs all calculations necessary to display the element.</summary>
         * <param name = "_slot">Ignored by this subclass</param>
         * <param name = "languageNumber">The index number of the language to display text in</param>
         * <param name = "isActive">If True, then the element will be drawn as though highlighted</param>
         */
        public override void PreDisplay(int _slot, int languageNumber, bool isActive)
        {
            if (Application.isPlaying)
            {
                if (labelType == AC_LabelType.Hotspot)
                {
                    string _newLabel = "";
                    if (invItem != null)
                    {
                        _newLabel = invItem.GetFullLabel(languageNumber);
                    }
                    else if (hotspot != null)
                    {
                        _newLabel = hotspot.GetFullLabel(languageNumber);
                    }
                    else
                    {
                        _newLabel = KickStarter.playerMenus.GetHotspotLabel();
                    }

                    if (_newLabel != "" || updateIfEmpty)
                    {
                        newLabel = _newLabel;
                    }
                }
                else if (labelType == AC_LabelType.Normal)
                {
                    newLabel = TranslateLabel(label, languageNumber);
                }
                else if (labelType == AC_LabelType.GlobalVariable)
                {
                    newLabel = GlobalVariables.GetVariable(variableID).GetValue(languageNumber);
                }
                else if (labelType == AC_LabelType.ActiveSaveProfile)
                {
                    newLabel = KickStarter.options.GetProfileName();
                }
                else if (labelType == AC_LabelType.InventoryProperty)
                {
                    newLabel = "";

                    if (inventoryPropertyType == InventoryPropertyType.SelectedItem)
                    {
                        newLabel = GetPropertyDisplayValue(languageNumber, KickStarter.runtimeInventory.selectedItem);
                    }
                    else if (inventoryPropertyType == InventoryPropertyType.LastClickedItem)
                    {
                        newLabel = GetPropertyDisplayValue(languageNumber, KickStarter.runtimeInventory.lastClickedItem);
                    }
                    else if (inventoryPropertyType == InventoryPropertyType.MouseOverItem)
                    {
                        newLabel = GetPropertyDisplayValue(languageNumber, KickStarter.runtimeInventory.hoverItem);
                    }
                }
                else if (labelType == AC_LabelType.DialogueLine || labelType == AC_LabelType.DialogueSpeaker)
                {
                    if (linkedMenu != null && linkedMenu.IsFadingOut())
                    {
                        return;
                    }

                    UpdateSpeechLink();

                    if (labelType == AC_LabelType.DialogueLine)
                    {
                        if (speech != null)
                        {
                            string line = speech.displayText;
                            if (line != "" || updateIfEmpty)
                            {
                                newLabel = line;
                            }

                            if (useCharacterColour)
                            {
                                speechColour = speech.GetColour();
                                if (uiText)
                                {
                                    uiText.color = speechColour;
                                }
                            }
                        }
                        else if (!KickStarter.speechManager.keepTextInBuffer)
                        {
                            newLabel = "";
                        }
                    }
                    else if (labelType == AC_LabelType.DialogueSpeaker)
                    {
                        if (speech != null)
                        {
                            string line = speech.GetSpeaker(languageNumber);

                            if (line != "" || updateIfEmpty || speech.GetSpeakingCharacter() == null)
                            {
                                newLabel = line;
                            }
                        }
                        else if (!KickStarter.speechManager.keepTextInBuffer)
                        {
                            newLabel = "";
                        }
                    }
                }
            }
            else
            {
                newLabel = label;
            }

            newLabel = AdvGame.ConvertTokens(newLabel, languageNumber);

            if (uiText != null && Application.isPlaying)
            {
                uiText.text = newLabel;
                UpdateUIElement(uiText);
            }
        }
Exemplo n.º 16
0
        override public float Run()
        {
            string newSaveLabel = "";

            if (manageSaveType == ManageSaveType.RenameSave)
            {
                GVar gVar = GlobalVariables.GetVariable(varID);
                if (gVar != null)
                {
                    newSaveLabel = gVar.textVal;
                }
                else
                {
                    ACDebug.LogWarning("Could not " + manageSaveType.ToString() + " - no variable found.");
                    return(0f);
                }
            }

            int i = Mathf.Max(0, saveIndex);

            if (selectSaveType == SelectSaveType.SlotIndexFromVariable)
            {
                GVar gVar = GlobalVariables.GetVariable(slotVarID);
                if (gVar != null)
                {
                    i = gVar.val;
                }
                else
                {
                    ACDebug.LogWarning("Could not rename save - no variable found.");
                    return(0f);
                }
            }

            if (menuName != "" && elementName != "")
            {
                MenuElement menuElement = PlayerMenus.GetElementWithName(menuName, elementName);
                if (menuElement != null && menuElement is MenuSavesList)
                {
                    MenuSavesList menuSavesList = (MenuSavesList)menuElement;
                    i += menuSavesList.GetOffset();
                }
                else
                {
                    ACDebug.LogWarning("Cannot find SavesList element '" + elementName + "' in Menu '" + menuName + "'.");
                }
            }
            else
            {
                ACDebug.LogWarning("No SavesList element referenced when trying to find save slot " + i.ToString());
            }

            if (manageSaveType == ManageSaveType.DeleteSave)
            {
                KickStarter.saveSystem.DeleteSave(i, -1, false);
            }
            else if (manageSaveType == ManageSaveType.RenameSave)
            {
                KickStarter.saveSystem.RenameSave(newSaveLabel, i);
            }

            return(0f);
        }
        protected void PerformSaveOrLoad()
        {
            ClearAllEvents();

            if (saveHandling == SaveHandling.ContinueFromLastSave || saveHandling == SaveHandling.LoadGame)
            {
                EventManager.OnFinishLoading += OnFinishLoading;
                EventManager.OnFailLoading   += OnFail;
            }
            else if (saveHandling == SaveHandling.OverwriteExistingSave || saveHandling == SaveHandling.SaveNewGame)
            {
                EventManager.OnFinishSaving += OnFinishSaving;
                EventManager.OnFailSaving   += OnFail;
            }

            if ((saveHandling == SaveHandling.LoadGame || saveHandling == SaveHandling.ContinueFromLastSave) && doSelectiveLoad)
            {
                KickStarter.saveSystem.SetSelectiveLoadOptions(selectiveLoad);
            }

            string newSaveLabel = "";

            if (customLabel && ((updateLabel && saveHandling == SaveHandling.OverwriteExistingSave) || saveHandling == AC.SaveHandling.SaveNewGame))
            {
                if (selectSaveType != SelectSaveType.Autosave)
                {
                    GVar gVar = GlobalVariables.GetVariable(varID);
                    if (gVar != null)
                    {
                        newSaveLabel = gVar.GetValue(Options.GetLanguage());
                    }
                    else
                    {
                        LogWarning("Could not " + saveHandling.ToString() + " - no variable found.");
                        return;
                    }
                }
            }

            int i = Mathf.Max(0, saveIndex);

            if (saveHandling == SaveHandling.ContinueFromLastSave)
            {
                SaveSystem.ContinueGame();
                return;
            }

            if (saveHandling == SaveHandling.LoadGame || saveHandling == SaveHandling.OverwriteExistingSave)
            {
                if (selectSaveType == SelectSaveType.Autosave)
                {
                    if (saveHandling == SaveHandling.LoadGame)
                    {
                        SaveSystem.LoadAutoSave();
                        return;
                    }
                    else
                    {
                        if (PlayerMenus.IsSavingLocked(this, true))
                        {
                            OnComplete();
                        }
                        else
                        {
                            SaveSystem.SaveAutoSave();
                        }
                        return;
                    }
                }
                else if (selectSaveType == SelectSaveType.SlotIndexFromVariable)
                {
                    GVar gVar = GlobalVariables.GetVariable(slotVarID);
                    if (gVar != null)
                    {
                        i = gVar.val;
                    }
                    else
                    {
                        LogWarning("Could not get save slot index - no variable found.");
                        return;
                    }
                }
            }

            if (!string.IsNullOrEmpty(menuName) && !string.IsNullOrEmpty(elementName))
            {
                MenuElement menuElement = PlayerMenus.GetElementWithName(menuName, elementName);
                if (menuElement != null && menuElement is MenuSavesList)
                {
                    MenuSavesList menuSavesList = (MenuSavesList)menuElement;
                    i += menuSavesList.GetOffset();
                }
                else
                {
                    LogWarning("Cannot find ProfilesList element '" + elementName + "' in Menu '" + menuName + "'.");
                }
            }
            else
            {
                LogWarning("No SavesList element referenced when trying to find slot slot " + i.ToString());
            }

            if (saveHandling == SaveHandling.LoadGame)
            {
                SaveSystem.LoadGame(i, -1, false);
            }
            else if (saveHandling == SaveHandling.OverwriteExistingSave || saveHandling == SaveHandling.SaveNewGame)
            {
                if (PlayerMenus.IsSavingLocked(this, true))
                {
                    OnComplete();
                }
                else
                {
                    if (saveHandling == SaveHandling.OverwriteExistingSave)
                    {
                        SaveSystem.SaveGame(i, -1, false, updateLabel, newSaveLabel);
                    }
                    else if (saveHandling == SaveHandling.SaveNewGame)
                    {
                        SaveSystem.SaveNewGame(updateLabel, newSaveLabel);
                    }
                }
            }
        }
        override public ActionEnd End(List <Action> actions)
        {
            if (numSockets <= 0)
            {
                ACDebug.LogWarning("Could not compute Random check because no values were possible!");
                return(GenerateStopActionEnd());
            }

            if (!saveToVariable)
            {
                int value = ownVarValue;
                ownVarValue++;
                if (ownVarValue >= numSockets)
                {
                    if (doLoop)
                    {
                        ownVarValue = 0;
                    }
                    else
                    {
                        ownVarValue = numSockets - 1;
                    }
                }

                return(ProcessResult(value, actions));
            }

            if (variableID == -1)
            {
                return(GenerateStopActionEnd());
            }

            GVar var = null;

            if (location == VariableLocation.Local && !isAssetFile)
            {
                var = LocalVariables.GetVariable(variableID);
            }
            else
            {
                var = GlobalVariables.GetVariable(variableID);
            }

            if (var != null)
            {
                if (var.type == VariableType.Integer)
                {
                    var.Download();
                    if (var.val < 1)
                    {
                        var.val = 1;
                    }
                    int originalValue = var.val - 1;
                    var.val++;
                    if (var.val > numSockets)
                    {
                        if (doLoop)
                        {
                            var.val = 1;
                        }
                        else
                        {
                            var.val = numSockets;
                        }
                    }
                    var.Upload();
                    return(ProcessResult(originalValue, actions));
                }
                else
                {
                    ACDebug.LogWarning("'Variable: Run sequence' Action is referencing a Variable that does not exist or is not an Integer!");
                }
            }

            return(GenerateStopActionEnd());
        }
Exemplo n.º 19
0
        private void UpdateValue()
        {
            if (uiSlider == null)
            {
                visualAmount = Mathf.Clamp(visualAmount, 0f, 1f);

                // Limit by steps
                if (numberOfSteps > 0)
                {
                    visualAmount = Mathf.Round(visualAmount * numberOfSteps) / numberOfSteps;
                }

                amount = (visualAmount * (maxValue - minValue)) + minValue;
            }
            else
            {
                amount = visualAmount;
            }

            if (sliderType == AC_SliderType.Speech || sliderType == AC_SliderType.SFX || sliderType == AC_SliderType.Music)
            {
                if (Options.optionsData != null)
                {
                    if (sliderType == AC_SliderType.Speech)
                    {
                        KickStarter.options.SetVolume(SoundType.Speech, amount);
                    }
                    else if (sliderType == AC_SliderType.Music)
                    {
                        KickStarter.options.SetVolume(SoundType.Music, amount);
                    }
                    else if (sliderType == AC_SliderType.SFX)
                    {
                        KickStarter.options.SetVolume(SoundType.SFX, amount);
                    }

                                        #if UNITY_5 || UNITY_2017_1_OR_NEWER
                    if (sliderType == AC_SliderType.Speech)
                    {
                        AdvGame.SetMixerVolume(KickStarter.settingsManager.speechMixerGroup, KickStarter.settingsManager.speechAttentuationParameter, amount);
                    }
                    else if (sliderType == AC_SliderType.Music)
                    {
                        AdvGame.SetMixerVolume(KickStarter.settingsManager.musicMixerGroup, KickStarter.settingsManager.musicAttentuationParameter, amount);
                    }
                    else if (sliderType == AC_SliderType.SFX)
                    {
                        AdvGame.SetMixerVolume(KickStarter.settingsManager.sfxMixerGroup, KickStarter.settingsManager.sfxAttentuationParameter, amount);
                    }
                                        #endif
                }
                else
                {
                    ACDebug.LogWarning("Could not find Options data!");
                }
            }
            else if (sliderType == AC_SliderType.FloatVariable)
            {
                if (varID >= 0)
                {
                    GVar var = GlobalVariables.GetVariable(varID);
                    if (var.type == VariableType.Float)
                    {
                        var.SetFloatValue(amount);
                    }
                }
            }

            if (!KickStarter.actionListAssetManager.IsListRunning(actionListOnChange))
            {
                AdvGame.RunActionListAsset(actionListOnChange);
            }
        }
Exemplo n.º 20
0
        private void UpdateValue()
        {
            if (uiSlider == null)
            {
                visualAmount = Mathf.Clamp(visualAmount, 0f, 1f);

                // Limit by steps
                if (numberOfSteps > 0)
                {
                    float valueSeparation = 1f / (float)numberOfSteps;
                    float nearestValue    = 0f;
                    while (nearestValue < visualAmount)
                    {
                        nearestValue += valueSeparation;
                    }

                    // Now larger than amount, so which is closer?
                    float lowerNearest = nearestValue - valueSeparation;
                    if (visualAmount - lowerNearest > nearestValue - amount)
                    {
                        visualAmount = nearestValue;
                    }
                    else
                    {
                        visualAmount = lowerNearest;
                    }
                }

                amount = (visualAmount * (maxValue - minValue)) + minValue;
            }
            else
            {
                amount = visualAmount;
            }

            if (sliderType == AC_SliderType.Speech || sliderType == AC_SliderType.SFX || sliderType == AC_SliderType.Music)
            {
                if (Options.optionsData != null)
                {
                    if (sliderType == AC_SliderType.Speech)
                    {
                        Options.optionsData.speechVolume = amount;
                        KickStarter.options.SetVolume(SoundType.SFX);
                    }
                    else if (sliderType == AC_SliderType.Music)
                    {
                        Options.optionsData.musicVolume = amount;
                        KickStarter.options.SetVolume(SoundType.Music);
                    }
                    else if (sliderType == AC_SliderType.SFX)
                    {
                        Options.optionsData.sfxVolume = amount;
                        KickStarter.options.SetVolume(SoundType.SFX);
                    }

                                        #if UNITY_5
                    if (sliderType == AC_SliderType.Speech)
                    {
                        AdvGame.SetMixerVolume(KickStarter.settingsManager.speechMixerGroup, KickStarter.settingsManager.speechAttentuationParameter, amount);
                    }
                    else if (sliderType == AC_SliderType.Music)
                    {
                        AdvGame.SetMixerVolume(KickStarter.settingsManager.musicMixerGroup, KickStarter.settingsManager.musicAttentuationParameter, amount);
                    }
                    else if (sliderType == AC_SliderType.SFX)
                    {
                        AdvGame.SetMixerVolume(KickStarter.settingsManager.sfxMixerGroup, KickStarter.settingsManager.sfxAttentuationParameter, amount);
                    }
                                        #endif

                    Options.SavePrefs();
                }
                else
                {
                    ACDebug.LogWarning("Could not find Options data!");
                }
            }
            else if (sliderType == AC_SliderType.FloatVariable)
            {
                if (varID >= 0)
                {
                    GVar var = GlobalVariables.GetVariable(varID);
                    if (var.type == VariableType.Float)
                    {
                        var.SetFloatValue(amount);
                    }
                }
            }

            if (!KickStarter.actionListManager.IsListRunning(actionListOnChange))
            {
                AdvGame.RunActionListAsset(actionListOnChange);
            }
        }