Exemple #1
0
 private void StartFinishAnim()
 {
     Reset();
     bStartedFinishAnimation = true;
     magicCube = GameObject.FindGameObjectWithTag("MagicCube");
     MainGameLogic.SetCurrentActiveElement(MainGameLogic.CurrentActiveElement.FINISH_CANVAS);
 }
    private void OnMouseDrag()
    {
        if (!MainGameLogic.IsMainGame())
        {
            return;
        }
        if (!manager.IsPerformingAction())
        {
            if (startCubeTile == null || startFace == null)
            {
                startCubeTile = manager.QueryFirstCubeTile();
                startFace     = manager.QueryMagicCubeFace();

                if (startCubeTile != null && startFace != null)
                {
                    Vector3 temp = manager.GetWorldPos();
                    if (temp != Vector3.positiveInfinity)
                    {
                        mouseDragStartPos = temp;
                    }
                }
            }

            if (startCubeTile != null && startFace != null)
            {
                Vector3 temp = manager.GetWorldPos();
                if (!float.IsInfinity(temp.x))
                {
                    currentDragPos = temp;
                }
            }
        }
    }
Exemple #3
0
 /// <summary>
 /// Game menu RESTART functionalities
 /// </summary>
 /// YES BUTTON
 public void RestartYes()
 {
     MainGameLogic.GetMainCamera().GetComponent <MainMenuHandler>().StartGame();
     gameMenuCanvas.SetActive(false);
     confirmationCanvas.SetActive(false);
     MainGameLogic.SetCurrentActiveElement(MainGameLogic.CurrentActiveElement.MAIN_GAME);
 }
Exemple #4
0
 internal static void StartGame()
 {
     MainGameLogic.GetMainCamera().GetComponent <UIManager>().confirmationCanvas.SetActive(false);
     MainGameLogic.GetMainCamera().GetComponent <UIManager>().finishCanvas.SetActive(false);
     MainGameLogic.GetMainCamera().GetComponent <UIManager>().mainMenuCanvas.SetActive(true);
     MainGameLogic.GetMainCamera().GetComponent <UIManager>().gameMenuCanvas.SetActive(false);
     MainGameLogic.GetMainCamera().GetComponent <UIManager>().mainGameUI.SetActive(false);
 }
Exemple #5
0
 internal void OpenFinishCanvas()
 {
     if (MainGameLogic.GetMainCamera().GetComponent <CubeControl>().GetMagicCubeManager().IsCurrentActionDone())
     {
         finishCanvas.GetComponent <FinishCanvasHandler>().Init(CloseFinishCanvas, FinishRestart, FinishMainMenu);
         finishCanvas.SetActive(true);
         MainGameLogic.SetCurrentActiveElement(MainGameLogic.CurrentActiveElement.FINISH_CANVAS);
     }
 }
Exemple #6
0
 public void ChangeValue(float value)
 {
     sliderText.text = Mathf.RoundToInt(value).ToString();
     if (cubeSize != Mathf.RoundToInt(value))
     {
         MainGameLogic.GetMainCamera().GetComponent <CubeControl>().CreateMagicCube(Mathf.RoundToInt(cubeSizeSlider.value));
     }
     cubeSize = Mathf.RoundToInt(value);
 }
Exemple #7
0
 internal void OpenGameMenu()
 {
     if (MainGameLogic.GetMainCamera().GetComponent <CubeControl>().GetMagicCubeManager().IsCurrentActionDone())
     {
         gameMenuCanvas.GetComponent <GameMenuBehaviour>().Init(CloseGameMenu, ShowHideGameTimer, RestartGame, MainMenuGame);
         gameMenuCanvas.SetActive(true);
         MainGameLogic.SetCurrentActiveElement(MainGameLogic.CurrentActiveElement.GAME_MENU);
     }
 }
Exemple #8
0
    public void StartGame()
    {
        MainGameLogic.GetMainCamera().GetComponent <CubeControl>().CreateMagicCube(Mathf.RoundToInt(cubeSizeSlider.value));
        MainGameLogic.SetCurrentActiveElement(MainGameLogic.CurrentActiveElement.MAIN_GAME);
        MainGameLogic.LinkMagicCubeManagerAndUI(MainGameLogic.GetMainCamera().GetComponent <CubeControl>().GetMagicCubeManager(), MainGameLogic.GetMainCamera().GetComponent <UIManager>().GetMainGameUI());
        MainGameLogic.LinkMagicCubeManagerAndFinish(MainGameLogic.GetMainCamera().GetComponent <CubeControl>().GetMagicCubeManager(), MainGameLogic.GetMainCamera().GetComponent <UIManager>().GetFinishCanvas());

        MainGameLogic.GetMainCamera().GetComponent <UIManager>().MainMenuToGame();
        MainGameLogic.GetMainCamera().GetComponent <CubeControl>().GetMagicCubeManager().InitRandomMoves(2.7f);
    }
Exemple #9
0
 /// <summary>
 /// Finish MAIN MENU functionalities
 /// </summary>
 /// YES BUTTON
 public void FinishMainMenuYes()
 {
     finishCanvas.SetActive(false);
     confirmationCanvas.SetActive(false);
     gameMenuCanvas.SetActive(false);
     MainGameLogic.GetMainCamera().GetComponent <MainMenuHandler>().Reset();
     mainMenuCanvas.SetActive(true);
     mainGameUI.SetActive(false);
     MainGameLogic.SetCurrentActiveElement(MainGameLogic.CurrentActiveElement.MAIN_MENU);
 }
Exemple #10
0
 private void OnApplicationQuit()
 {
     if (MainGameLogic.IsMainGame() || MainGameLogic.IsGameMenu())
     {
         if (manager != null && !manager.IsPerformingAction())
         {
             manager.Save();
         }
     }
 }
Exemple #11
0
 /// <summary>
 /// Game menu MAIN MENU functionalities
 /// </summary>
 /// YES BUTTON
 public void MainMenuYes()
 {
     confirmationCanvas.SetActive(false);
     gameMenuCanvas.SetActive(false);
     MainGameLogic.GetMainCamera().GetComponent <CubeControl>().GetMagicCubeManager().Save();
     MainGameLogic.GetMainCamera().GetComponent <MainMenuHandler>().Reset();
     mainMenuCanvas.SetActive(true);
     mainGameUI.SetActive(false);
     MainGameLogic.SetCurrentActiveElement(MainGameLogic.CurrentActiveElement.MAIN_MENU);
 }
Exemple #12
0
    internal Collider QueryMagicCubeFace()
    {
        RaycastHit hit;
        Ray        ray       = MainGameLogic.GetMainCamera().ScreenPointToRay(Input.mousePosition);
        int        layerMask = LayerMask.GetMask("MainGameLayer");

        if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask))
        {
            return(hit.collider);
        }
        return(null);
    }
Exemple #13
0
    public GameObject QueryFirstCubeTile()
    {
        RaycastHit hit;
        Ray        ray       = MainGameLogic.GetMainCamera().ScreenPointToRay(Input.mousePosition);
        int        layerMask = LayerMask.GetMask("CubeTileLayer");

        if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask))
        {
            return(hit.transform.gameObject);
        }
        return(null);
    }
Exemple #14
0
 public void Serialize(MainGameLogic game)
 {
     try {
         BinaryFormatter formatter = new BinaryFormatter();
         using (Stream st = File.Create(@".\Saves\SaveGame.bin")) {
             formatter.Serialize(st, game);
         }
     }
     catch (Exception ex) {
         MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Exemple #15
0
    internal Vector3 GetWorldPos()
    {
        RaycastHit hit;
        Ray        ray       = MainGameLogic.GetMainCamera().ScreenPointToRay(Input.mousePosition);
        int        layerMask = LayerMask.GetMask("CubeTileLayer");

        if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask))
        {
            return(hit.point);
        }

        return(Vector3.positiveInfinity);
    }
Exemple #16
0
 public void Deserialize(ref MainGameLogic game)
 {
     game = new MainGameLogic();
     try {
         BinaryFormatter formatter = new BinaryFormatter();
         game = null;
         using (Stream st = File.OpenRead(@".\Saves\SaveGame.bin")) {
             game = (MainGameLogic)formatter.Deserialize(st);
         }
     }
     catch (Exception ex) {
         MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Exemple #17
0
    // Start is called before the first frame update
    void Start()
    {
        bContinueGameIsAvailable = CheckForLoadGameAvailable();
        if (!bContinueGameIsAvailable)
        {
            continueText.color = notAvailableColor;
        }
        else
        {
            continueText.color = availableColor;
        }
        continueButton.interactable = bContinueGameIsAvailable;
        ChangeValue(cubeSizeSlider.value);

        MainGameLogic.StartGame();
    }
Exemple #18
0
    public void LoadGame()
    {
        try
        {
            MagicCubeSaveData savedata = MainGameLogic.LoadGameSave();

            MainGameLogic.GetMainCamera().GetComponent <CubeControl>().CreateMagicCube(savedata.magicCubeSize);
            MainGameLogic.SetCurrentActiveElement(MainGameLogic.CurrentActiveElement.MAIN_GAME);
            MainGameLogic.LinkMagicCubeManagerAndUI(MainGameLogic.GetMainCamera().GetComponent <CubeControl>().GetMagicCubeManager(), MainGameLogic.GetMainCamera().GetComponent <UIManager>().GetMainGameUI());
            MainGameLogic.LinkMagicCubeManagerAndFinish(MainGameLogic.GetMainCamera().GetComponent <CubeControl>().GetMagicCubeManager(), MainGameLogic.GetMainCamera().GetComponent <UIManager>().GetFinishCanvas());
            MainGameLogic.GetMainCamera().GetComponent <CubeControl>().GetMagicCubeManager().LoadGame(savedata);

            MainGameLogic.GetMainCamera().GetComponent <UIManager>().MainMenuToGame();
        }
        catch (Exception e)
        {
            StartGame();
        }
    }
Exemple #19
0
    // Update is called once per frame
    void Update()
    {
        if (!MainGameLogic.IsMainGame())
        {
            return;
        }

        if (manager != null)
        {
            manager.Update();
        }

        if (Input.GetKeyDown(KeyCode.Home))
        {
            if (MainGameLogic.IsMainGame() || MainGameLogic.IsGameMenu())
            {
                manager.Save();
            }
        }
    }
Exemple #20
0
    // Update is called once per frame
    void Update()
    {
        if (!MainGameLogic.IsMainMenu())
        {
            return;
        }

        if (magicCube == null && GameObject.FindGameObjectWithTag("MagicCube") != null)
        {
            magicCube = GameObject.FindGameObjectWithTag("MagicCube");
        }

        if (magicCube != null)
        {
            if (magicCube.GetComponent <MagicCubeBehaviour>().getMagicCubeManager() != null)
            {
                MainGameLogic.GetMainCamera().transform.RotateAround(magicCube.GetComponent <MagicCubeBehaviour>().getMagicCubeManager().GetPivot(), new Vector3(0, 1, 1), Time.deltaTime * 30.0f);
            }
        }
    }
 // Update is called once per frame
 void Update()
 {
     if (!MainGameLogic.IsMainGame())
     {
         return;
     }
     if (Input.GetMouseButtonDown(0))
     {
         if (startCubeTile == null)
         {
             startCubeTile = manager.QueryFirstCubeTile();
             if (startCubeTile == null)
             {
                 if (MainGameLogic.GetMainCamera().GetComponent <CameraControl>() != null)
                 {
                     MainGameLogic.GetMainCamera().GetComponent <CameraControl>().InitRotation(transform.gameObject);
                 }
             }
             startCubeTile = null;
         }
     }
 }
Exemple #22
0
    public MagicCubeManager(GameObject cubeTileRef, int n, Vector3 pivot)
    {
        ownHolder = new GameObject("Magic Cube");
        ownHolder.transform.position = Vector3.zero;
        ownHolder.layer = 10;
        MagicCubeBehaviour behaviour = ownHolder.AddComponent <MagicCubeBehaviour>();

        behaviour.Init(this);
        ownHolder.tag = "MagicCube";

        actionList = new List <CubeAction>();

        this.cubeTileRef = cubeTileRef;
        magicCubeSize    = n;
        cubeTiles        = new List <GameObject>();
        mainPivot        = pivot;

        collectionHelper = new CubeCollectionHelper(0);
        GenerateCubeTiles();

        MainGameLogic.GetMainCamera().transform.position = new Vector3(mainPivot.x, mainPivot.y, MainGameLogic.GetMainCamera().GetComponent <CameraControl>().GetCurrentZoom());
        MainGameLogic.GetMainCamera().transform.rotation = new Quaternion();
    }
Exemple #23
0
    public void StartFinish(int time)
    {
        int minutes = time / 60;
        int seconds = time - minutes * 60;

        string minutesText = "";
        string secondsText = "";

        if (minutes < 10)
        {
            minutesText = "0" + minutes;
        }
        else
        {
            minutesText = minutes.ToString();
        }
        if (seconds < 10)
        {
            secondsText = "0" + seconds;
        }
        else
        {
            secondsText = seconds.ToString();
        }

        timeText.text = minutesText + ":" + secondsText;

        StartFinishAnim();
        MainGameLogic.GetMainCamera().GetComponent <UIManager>().OpenFinishCanvas();
        GetComponent <Canvas>().enabled = false;
        MainGameLogic.GetMainCamera().GetComponent <UIManager>().DisableMenuButton();

        //After finishing a game we delete the save file, no need for it anymore.
        //If we want to keep save games after finishing a game, I need to modify the save file
        //slightly to store whether the game has finished or not, to ensure equal states.
        MainGameLogic.DeleteSaveGame();
    }
Exemple #24
0
    // Update is called once per frame
    void Update()
    {
        if (MainGameLogic.IsFinish())
        {
            if (bStartedFinishAnimation)
            {
                float degrees = Time.deltaTime * 40.0f;
                MainGameLogic.GetMainCamera().transform.RotateAround(magicCube.GetComponent <MagicCubeBehaviour>().getMagicCubeManager().GetPivot(), MainGameLogic.GetMainCamera().transform.up, degrees);
                degreesTurned += degrees;

                cameraZoomTimePassed += Time.deltaTime;
                if (cameraZoomTimePassed > cameraZoomTimer)
                {
                    cameraZoomTimePassed = 0.0f;
                    MainGameLogic.GetMainCamera().GetComponent <CameraControl>().ZoomOut(Time.deltaTime * 2);
                }

                if (degreesTurned >= 360)
                {
                    FinishDialogue();
                }
            }
        }
    }
Exemple #25
0
    public void Update()
    {
        if (bProcessingRandomActions)
        {
            randomActionsTimePassed += Time.deltaTime;
            if (randomActionsTimePassed > randomActionTimer)
            {
                bProcessingRandomActions = false;
                return;
            }
            if (currentAction != null)
            {
                if (!currentAction.IsActionDone())
                {
                    currentAction.Update();
                }
                else
                {
                    currentAction = null;
                }
            }

            if (currentAction == null)
            {
                currentAction = generateRandomAction();
            }
            return;
        }

        if (currentAction != null)
        {
            if (!currentAction.IsActionDone())
            {
                currentAction.Update();
            }
            else
            {
                currentAction = null;

                //After a move is fully completed check whether the game is finished or not
                if (CheckIfGameIsFinished())
                {
                    FinishGame();
                }
            }
        }

        if (!bGameIsFinished)
        {
            timePassed += Time.deltaTime;
            if ((int)timePassed > seconds)
            {
                seconds = (int)timePassed;
                updateTime(seconds);
            }
        }
        bool bIsPinching = Input.touchCount >= 2;

        if (Input.GetMouseButtonDown(1) && !bIsPinching)
        {
            MainGameLogic.GetMainCamera().GetComponent <UIManager>().OpenGameMenu();
        }
    }
Exemple #26
0
 /// <summary>
 /// Game menu functionalities
 /// </summary>
 public void CloseGameMenu()
 {
     gameMenuCanvas.SetActive(false);
     MainGameLogic.SetCurrentActiveElement(MainGameLogic.CurrentActiveElement.MAIN_GAME);
 }
Exemple #27
0
 public MainWindow()
 {
     InitializeComponent();
     Logic = new MainGameLogic(this);
     MainGrid.Children.Add(new MainMenu(this));
 }
Exemple #28
0
    // Update is called once per frame
    void Update()
    {
        if (!MainGameLogic.IsMainGame())
        {
            return;
        }

        if (Input.touchCount == 2)
        {
            Touch touchZero = Input.GetTouch(0);
            Touch touchOne  = Input.GetTouch(1);

            Vector2 touchZeroPrevPos = touchZero.position - touchZero.deltaPosition;
            Vector2 touchOnePrevPos  = touchOne.position - touchOne.deltaPosition;

            float prevTouchDeltaMag = (touchZeroPrevPos - touchOnePrevPos).magnitude;
            float touchDeltaMag     = (touchZero.position - touchOne.position).magnitude;

            float deltaMagnitudeDiff = prevTouchDeltaMag - touchDeltaMag;

            if (deltaMagnitudeDiff < 0)
            {
                ZoomIn();
            }
            else if (deltaMagnitudeDiff > 0)
            {
                ZoomOut();
            }
        }

        if (bStartedRotation)
        {
            if (Input.GetMouseButtonUp(0))
            {
                Reset();
            }
        }
        if (bStartedRotation)
        {
            if (Input.touchCount == 2)
            {
                Reset();
            }

            Vector3 difference = startMousePos - Input.mousePosition;
            difference     = new Vector3(-difference.y, difference.x, 0);
            distanceMoved += Vector3.Distance(currentMousePos, Input.mousePosition);
            distanceMoved  = (startMousePos.x - Input.mousePosition.x) + (startMousePos.y - Input.mousePosition.y);
            if (distanceMoved > easeInDistance)
            {
                distanceMoved = easeInDistance;
            }
            else if (distanceMoved < -easeInDistance)
            {
                distanceMoved = -easeInDistance;
            }
            //Debug.Log(distanceMoved);

            currentMousePos = Input.mousePosition;

            float delta = 0.0f;
            if (Math.Abs(distanceMoved) < easeInDistance)
            {
                delta = Math.Abs(distanceMoved) / easeInDistance;
                delta = easeInCurve.Evaluate(delta);
            }
            else
            {
                delta = 1.0f;
            }
            float actualCameraMoveSpeed = delta * cameraSpeed;

            if (!bLockedAxis)
            {
                if (Math.Abs(difference.x) > easeInDistance / 4)
                {
                    bRotateX    = true;
                    bLockedAxis = true;
                }
                if (Math.Abs(difference.y) > easeInDistance / 4)
                {
                    bRotateY    = true;
                    bLockedAxis = true;
                }
            }

            if (bRotateX)
            {
                if (difference.x > 0)
                {
                    transform.RotateAround(rotationTarget.transform.position, -transform.right, Time.deltaTime * actualCameraMoveSpeed);
                }
                else
                {
                    transform.RotateAround(rotationTarget.transform.position, transform.right, Time.deltaTime * actualCameraMoveSpeed);
                }
            }
            else if (bRotateY)
            {
                if (difference.y > 0)
                {
                    transform.RotateAround(rotationTarget.transform.position, -transform.up, Time.deltaTime * actualCameraMoveSpeed);
                }
                else
                {
                    transform.RotateAround(rotationTarget.transform.position, transform.up, Time.deltaTime * actualCameraMoveSpeed);
                }
            }
        }
        else
        {
            float scroll = Input.GetAxis("Mouse ScrollWheel");
            if (scroll > 0f)
            {
                // scroll up
                ZoomIn();
            }
            else if (scroll < 0f)
            {
                // scroll down
                ZoomOut();
            }
        }
    }
Exemple #29
0
 /// <summary>
 /// Finish Canvas functionalities
 /// </summary>
 public void CloseFinishCanvas()
 {
     finishCanvas.SetActive(false);
     MainGameLogic.SetCurrentActiveElement(MainGameLogic.CurrentActiveElement.MAIN_GAME);
 }
Exemple #30
0
 public void FinishDialogue()
 {
     bStartedFinishAnimation         = false;
     GetComponent <Canvas>().enabled = true;
     MainGameLogic.GetMainCamera().GetComponent <UIManager>().EnableMenuButton();
 }