public void startRotatingForward()
    {
        // disable battery restrictions when in tutorial
        if (tutorialOn || BatterySystem.GetPower() > 0)
        {
            if (!tutorialOn)
            {
                BatterySystem.SubPower(1);
            }
            numXClicks++;
            RotateBehavior rotateBehavior = objectToRotate.GetComponent <RotateBehavior>();
            if (!rotateBehavior.rotating())
            {
                //rotate
                rotateBehavior.setRotatingForward(true);
                float targetRotation = rotateBehavior.getTargetRotation();

                objectToRotate.transform.Rotate(-targetRotation, 0, 0);
                rotateBehavior.setEndRotation(objectToRotate.transform.rotation);
                objectToRotate.transform.Rotate(targetRotation, 0, 0);
            }

            timerStart = true;
        }
    }
Exemple #2
0
    // Applies all options from the saved file to the locally created variables.
    public static void Load()
    {
        // Make sure all the strings for conversations are loaded.
        ConversationsDB.LoadConversationsFromFiles();

        if (File.Exists(WhereIsData()))
        {
            // Prepare for data IO.
            BinaryFormatter bf   = new BinaryFormatter();
            FileStream      file = File.Open(WhereIsData(), FileMode.Open);

            // Deserialize the data.
            SaveContainer data = (SaveContainer)bf.Deserialize(file);
            file.Close();

            //! Fields go here.
            ConversationTrigger.tokens = new HashSet <string>(data.tokens);

            // Read inventory-related tokens.
            InventoryController.ConvertTokensToInventory();
            BatterySystem.TokensToPower();

            Debug.Log("Loaded all options successfully.");
        }
        else
        {
            // No file exists? We should make the default one!
            Debug.Log("No save found, creating default file.");
            Save();
        }
    }
    public IEnumerator Rotate(float x, float y, float z)
    {
        // disable fuse button during rotation to let rotation complete before attachment
        fuseButton.interactable = false;

        // Integration for battery power.
        if (!controlsDisabled && !rotating)
        {
            BatterySystem.SubPower(1);
        }

        // Can only start rotating if not already rotating. Prevents bugs with part movement.
        if (!rotating)
        {
            // Set rotate flag and start rotating.
            // Flag is reset every frame to ensure the check only runs at the end of all queued rotations.
            rotating = true;
            for (int i = 0; i < 30; i++)
            {
                toRotate.transform.Rotate(x / 30f, y / 30f, z / 30f, Space.World);
                rotating = true;
                yield return(null);
            }
            rotating = false;
            yield return(null);             // Wait a frame to see if another active rotation resets this flag to true.

            if (!rotating)
            {
                StartCoroutine(CheckRotation());
            }
        }
    }
Exemple #4
0
    IEnumerator Rotate(float x, float y, float z)
    {
        // Integration for battery power.
        if (!tutorialOn)
        {
            BatterySystem.SubPower(1);
        }

        // Set rotate flag and start rotating.
        // Flag is reset every frame to ensure the check only runs at the end of all queued rotations.
        rotating = true;
        for (int i = 0; i < 45; i++)
        {
            toRotate.transform.Rotate(x / 45f, y / 45f, z / 45f, Space.World);
            rotating = true;
            yield return(null);
        }
        rotating = false;
        yield return(null);             // Wait a frame to see if another active rotation resets this flag to true.

        if (!rotating)
        {
            StartCoroutine(CheckRotation());
        }
    }
 // Checks battery, returns whether this rotation can happen. If it cannot, shows error.
 // This method will likely be deprecated now that battery power is controlled by rotation counter and timer
 bool CheckBattery()
 {
     // Check if we're in the standard game mode and have no power.
     if (BatterySystem.GetPower() == 0 && !controlsDisabled && !FuseEvent.runningJustConstructionMode)
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
Exemple #6
0
 // Need this somewhere for the restart stuff.
 // DEMO MODE ONLY
 // TODO: Disable for full game version
 public static void RestartGame()
 {
     Debug.Log("Restarting!");
     //System.IO.File.Delete(Application.persistentDataPath + "/Save.dat");	// Delete save.
     LoadUtils.loadedScenes.Clear();                                   // Clear loaded scenes to account for all scene conditions.
     ConversationTrigger.tokens.Clear();                               // Clear tokens for sanity.
     items.Clear();                                                    // Clear items for safety.
     BatterySystem.SetPower(10);                                       // Reset power.
     levelName = "";
     Destroy(GameObject.FindGameObjectWithTag("FullPlayer"));          // Must make sure the old player is properly deleted...
     UnityEngine.SceneManagement.SceneManager.LoadScene("SimpleMenu"); // Reload, finally.
 }
Exemple #7
0
    void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Player")
        {
            AudioSource.PlayClipAtPoint(pickupClip, transform.position);
            SimpleData.WriteStringToFile("pickups.txt", Time.time + ",PICKUP," + pickupName);
            switch (type)
            {
            case PickupType.Item:
                // Add the item and update the tokens.
                InventoryController.Add(this, 1);
                InventoryController.ConvertInventoryToTokens();
                // Object still needs to exist for the icon to work.
                // Silly, but let's just shove it into a corner and forget about it.
                // Also parents to the scene manager object so it rejects deletion as much as possible.
                transform.position = new Vector3(-1000f, -1000f, -1000f);
                LoadUtils.IconParenter(this.gameObject);
                break;

            case PickupType.Battery:
                BatterySystem.AddPower(2);
                BatterySystem.PowerToTokens();
                RespawnBattery();
                break;

            case PickupType.Clue:
                CluePopulator.AddClue(pickupName, clueSprite);
                ConversationTrigger.AddToken("clue_" + pickupName);
                Destroy(gameObject);
                break;
            }
            if (autoDelete)
            {
                ConversationTrigger.AddToken("autodelete_" + pickupName);
            }
        }
    }
Exemple #8
0
    void Update()
    {
        // Restarting game while in construction mode.
        // DEMO MODE ONLY.
        if (Input.GetKey(KeyCode.T) && Input.GetKey(KeyCode.R))
        {
            InventoryController.RestartGame();
        }


        // LookAts.
        Vector3 lookToward = mainCamera.transform.position;

        // X
        xGizmo.transform.LookAt(new Vector3(xGizmo.transform.position.x, lookToward.y, lookToward.z));
        Vector3 xTemp = xGizmo.transform.localEulerAngles;

        xTemp.z = 90;
        xGizmo.transform.localEulerAngles = xTemp;

        // Y
        yGizmo.transform.LookAt(new Vector3(lookToward.x, xGizmo.transform.position.y, lookToward.z));

        // Z
        zGizmo.transform.LookAt(new Vector3(lookToward.x, lookToward.y, xGizmo.transform.position.z));
        Vector3 zTemp = zGizmo.transform.localEulerAngles;

        zTemp.z = 90;
        zGizmo.transform.localEulerAngles = zTemp;


        // Raycasts.
        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit hitInfo = new RaycastHit();
            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hitInfo) && (tutorialOn || BatterySystem.GetPower() > 0))
            {
                //Debug.Log(hitInfo.transform.name);
                switch (hitInfo.transform.name)
                {
                case "XUp":
                    xRots++;
                    if (Mathf.Approximately(xGizmo.transform.localEulerAngles.y, 180f))
                    {
                        StartCoroutine(Rotate(90f, 0f, 0f));
                    }
                    else
                    {
                        StartCoroutine(Rotate(-90f, 0f, 0f));
                    }
                    break;

                case "XDown":
                    xRots++;
                    if (Mathf.Approximately(xGizmo.transform.localEulerAngles.y, 180f))
                    {
                        StartCoroutine(Rotate(-90f, 0f, 0f));
                    }
                    else
                    {
                        StartCoroutine(Rotate(90f, 0f, 0f));
                    }
                    break;

                case "YLeft":
                    yRots++;
                    StartCoroutine(Rotate(0f, 90f, 0f));
                    break;

                case "YRight":
                    yRots++;
                    StartCoroutine(Rotate(0f, -90f, 0f));
                    break;

                case "ZUp":
                    zRots++;
                    if (Mathf.Approximately(zGizmo.transform.localEulerAngles.y, 270f))
                    {
                        StartCoroutine(Rotate(0f, 0f, -90f));
                    }
                    else
                    {
                        StartCoroutine(Rotate(0f, 0f, 90f));
                    }
                    break;

                case "ZDown":
                    zRots++;
                    if (Mathf.Approximately(zGizmo.transform.localEulerAngles.y, 270f))
                    {
                        StartCoroutine(Rotate(0f, 0f, 90f));
                    }
                    else
                    {
                        StartCoroutine(Rotate(0f, 0f, -90f));
                    }
                    break;

                default:
                    break;
                }
            }
        }
    }