Beispiel #1
0
        private PositionCheck CreatePosition(int X, int Y)
        {
            PositionCheck temp = new PositionCheck();

            temp.position  = new IntVec(X, Y);
            temp.isChecked = false;
            return(temp);
        }
Beispiel #2
0
        private PositionCheck CreatePosition(IntVec position)
        {
            PositionCheck temp = new PositionCheck();

            temp.position  = position;
            temp.isChecked = false;
            return(temp);
        }
        public static void PrintSnakeFood(Queue <Position> snake, bool generateNewFoodPlace)
        {
            if (generateNewFoodPlace)
            {
SpawnTheFoodAgain:

                foodPosition = new Position(rnd.Next(GlobalConstants.MinimumRowSize, GlobalConstants.MaximumRowSize),
                                            rnd.Next(GlobalConstants.MinimumColumnSize, GlobalConstants.MaximumColumnlSize));

                bool spotIsValid = PositionCheck.CheckIfFoodSpawnedOnAValidSpot(snake, foodPosition);
                if (!spotIsValid)
                {
                    goto SpawnTheFoodAgain;
                }
            }

            Console.SetCursorPosition(foodPosition.Col, foodPosition.Row);
            Console.Write(GlobalConstants.SnakeFood);
        }
        public static bool UpdateTheSnake(Queue <Position> snake, Position newHeadPosition)
        {
            Position head    = snake.Last();
            Position newHead = new Position(head.Row + newHeadPosition.Row, head.Col + newHeadPosition.Col);

            PositionCheck.CheckIfSnakeCollidesIntoItself(snake, newHead);
            PositionCheck.CheckIfSnakeCollidesIntoAWall(newHead);

            bool snakeAteFood = PositionCheck.CheckIfTheSnakeHadSomeFood(newHead);

            if (!snakeAteFood)
            {
                snake.Dequeue();
            }
            else
            {
                ConsoleDelayControl.FastenUpTheConsoleIfSnakeAteFood();
            }

            snake.Enqueue(newHead);

            return(snakeAteFood);
        }
        public static void Main()
        {
PlayAgain:

            //creating the first snake in the upper left corner with len of 5
            snake = new Queue <Position>();
            snake = GlobalConstants.InitializeTheSnake();

            //setting the cursor to invisible so the game looks better
            Console.CursorVisible = false;
            Console.BufferHeight  = Console.WindowHeight;

            PrintItems.PrintTheSnakeOnTheConsole(snake);

            Position nextDirection = AvaliableDirections.GetNeededPosition(ConsoleKey.RightArrow);
            Position oldDirection  = AvaliableDirections.GetNeededPosition(ConsoleKey.RightArrow);

            while (true)
            {
                if (Console.KeyAvailable)
                {
                    ConsoleKeyInfo currMovement = Console.ReadKey();

                    nextDirection = AvaliableDirections.GetNeededPosition(currMovement);

                    bool moveIsNotValid = PositionCheck.CheckIfTheMoveIsValid(nextDirection, oldDirection);

                    if (moveIsNotValid)
                    {
                        nextDirection = oldDirection.ToPosition();
                    }

                    oldDirection = nextDirection.ToPosition();
                }

                Console.Clear();

                bool snakeAteTheFood;
                try
                {
                    snakeAteTheFood = SnakeUpdate.UpdateTheSnake(snake, nextDirection);
                }
                catch (GameOver goe)
                {
                    PrintItems.PrintFinalMessage(goe.Message, snake);

                    goto End;
                }

                HighScoreMenager.UpdateTheCurrentScore(snake);
                PrintItems.ScoreTracker();
                PrintItems.PrintTheSnakeOnTheConsole(snake);
                PrintItems.PrintSnakeFood(snake, snakeAteTheFood);

                Thread.Sleep(ConsoleDelayControl.consoleDelay);
            }

End:

            HighScoreMenager.CheckIfThereIsANewHighscoreAndUpdate();

            bool wantsToPlayAgain = PrintItems.AnotherGameQuestion();

            if (wantsToPlayAgain)
            {
                goto PlayAgain;
            }
        }
    // Update is called once per frame
    void Update()
    {
        Movement();
        PullOutPhone();
        Vault();

        if (Input.GetKey(KeyCode.Alpha9))
        {
            test.SetActive(true);
        }

        //Save
        if (Input.GetKeyDown(KeyCode.L))
        {
            DataLoader.Instance.SaveBuildingDataToJson();
            UnityEditor.AssetDatabase.Refresh();
        }

        //MiniMap
        if (Input.GetKeyDown(KeyCode.M))
        {
            DMMap.instance.SetFullscreen(!DMMap.instance.fullscreen);
        }
        ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));

        if (Physics.Raycast(mainCam.transform.position, mainCam.transform.forward, out hit, raycastRange, layer8n10))
        {
            if (hit.collider.gameObject.name == "ForSaleSign")
            {
                hello = hit.collider.transform.root.gameObject;
                if (!inMenu)
                {
                    interactPopup.SetActive(true);
                }
                saleSign      = hit.collider.gameObject;
                spawnPosition = saleSign.GetComponent <GetPositionToSpawnBuilding>().GetPosition();
                if (Input.GetKeyDown(KeyCode.F))
                {
                    inMenu = true;
                    TakePlayerControlAway();
                    buildingCanvas.SetActive(true);
                    if (inMenu)
                    {
                        interactPopup.SetActive(false);
                    }
                }
            }
            string objectTag = hit.transform.tag;

            switch (objectTag)
            {
            case "Vaultable":
                vaultFile = hit.collider.gameObject.name;
                pc        = hit.collider.gameObject.GetComponent <PositionCheck>();
                pc.VaultPositionCheck();
                behindVaultPos = GameObject.Find(vaultFile + "/BehindVaultPoint");
                frontVaultPos  = GameObject.Find(vaultFile + "/FrontVaultPoint");

                vaultPopup.SetActive(true);
                if (PositionCheck.isPlayerBehind)
                {
                    startPos = behindVaultPos.transform.position;
                }
                else
                {
                    startPos = frontVaultPos.transform.position;
                }

                if (Input.GetKey(KeyCode.Space))
                {
                    transform.position = startPos;
                    vaultableWall      = hit.collider;
                    vaulting           = true;
                    GameObject.Find("Main Camera").GetComponent <MouseLook>().enabled = false;
                    Vector3 lookPos = new Vector3(vaultableWall.transform.position.x, transform.position.y, vaultableWall.transform.position.z);
                    player.transform.LookAt(lookPos);
                    playerHasInput = false;
                }
                break;

            case "Chair":
                sitPopup.SetActive(true);
                if (Input.GetKeyDown(KeyCode.F))
                {
                    playerHasInput = false;
                    sitAnimation.Play("chairSit");
                    isSitting = true;
                }
                break;

            case "Mule":
                mulePopup.SetActive(true);
                muleCollider = hit.collider;
                if (Input.GetKeyDown(KeyCode.F))
                {
                    muleCollider.enabled = false;
                    TakePlayerControlAway();
                    StartCoroutine(MuleDialog());
                }
                break;

            case "Spotter":
                interactPopup.SetActive(true);
                spotterCollider = hit.collider;
                if (Input.GetKeyDown(KeyCode.F))
                {
                    spotterCollider.enabled = false;
                    TakePlayerControlAway();
                    spotterTitle.SetActive(true);
                    if (AttackController.selectedDistrict)
                    {
                        spotterJobsAttack.SetActive(true);
                    }
                    else
                    {
                        spotterJobs.SetActive(true);
                    }
                }
                break;

            case "Hitman":
                interactPopup.SetActive(true);
                hitmanCollider = hit.collider;
                if (Input.GetKeyDown(KeyCode.F))
                {
                    hitmanCollider.enabled = false;
                    TakePlayerControlAway();
                    hitmanSentence.SetActive(true);
                    hitmanJobs.SetActive(true);
                }

                break;

            case "Computer":
                if (isSitting)
                {
                    interactPopup.SetActive(true);
                    compCollider = hit.collider;
                    if (Input.GetKeyDown(KeyCode.F))
                    {
                        compCollider.enabled = false;
                        TakePlayerControlAway();
                        OpenListing();
                    }
                }
                break;

            case "Door":
                interactPopup.SetActive(true);

                if (Input.GetKeyDown(KeyCode.F))
                {
                    doorAnim = hit.collider.GetComponent <Animator>();
                    doorOpen = !doorOpen;
                    doorAnim.SetBool("isOpen", doorOpen);
                    if (doorOpen)
                    {
                        timer += Time.deltaTime;
                    }
                    else
                    {
                        timer = 0f;
                    }
                }
                break;

            default:
                break;
            }
        }
        else if (vaultPopup.activeInHierarchy)
        {
            vaultPopup.SetActive(false);
        }
        else if (sitPopup.activeInHierarchy)
        {
            sitPopup.SetActive(false);
        }
        else if (pickupPopup.activeInHierarchy)
        {
            pickupPopup.SetActive(false);
        }
        else if (mulePopup.activeInHierarchy)
        {
            mulePopup.SetActive(false);
        }
        else if (interactPopup.activeInHierarchy)
        {
            interactPopup.SetActive(false);
        }
        if (isSitting)
        {
            if (Input.GetKeyDown(KeyCode.Space))
            {
                isSitting = false;
                sitAnimation.Play("chairStand");
                playerHasInput = true;
            }
        }
        if (doorOpen)
        {
            timer += Time.deltaTime;
        }
        if (timer >= timerLimit)
        {
            doorOpen = false;
            doorAnim.SetBool("isOpen", doorOpen);
            timer = 0f;
        }
    }
Beispiel #7
0
 private PositionCheck CreatePosition(int X, int Y)
 {
     PositionCheck temp = new PositionCheck();
     temp.position = new IntVec(X,Y);
     temp.isChecked = false;
     return temp;
 }
Beispiel #8
0
 private PositionCheck CreatePosition(IntVec position)
 {
     PositionCheck temp = new PositionCheck();
     temp.position = position;
     temp.isChecked = false;
     return temp;
 }