Пример #1
0
    public void Placement()
    {
        if (GameManager.instance.currentGameState != InGameStates.ShipBuilding)
        {
            return;
        }
        //Checks to see if we have enough credits or energy to place the room
        if ((FindObjectOfType <ShipStats>().Credits >= gameObject.GetComponent <RoomStats>().price[gameObject.GetComponent <RoomStats>().GetRoomLevel() - 1] &&
             FindObjectOfType <ShipStats>().Energy.z >= gameObject.GetComponent <RoomStats>().minPower[gameObject.GetComponent <RoomStats>().GetRoomLevel() - 1]) ||
            os.isEdited == true)
        {
            if (os.needsSpecificLocation == false) //Check spots normally
            {
                SpotChecker.instance.FillSpots(gameObject, os.rotAdjust);
            }
            else //check for specific spots as required by parent room
            {
                SpotChecker.instance.SpecificSpotCheck(gameObject, os.rotAdjust);
            }

            if (SpotChecker.cannotPlace == false) //Once spots are checked if cannotPlace = false/no room is placed there place room
            {
                AudioManager.instance.PlaySFX(Placements[Random.Range(0, Placements.Length)]);

                if (os.isEdited == false)
                {
                    gameObject.GetComponent <RoomStats>().AddRoomStats();
                }
                else
                {
                    os.isEdited = false;
                }

                //makes sure the room is on the lower layer so that the new rooms can be on top without flickering
                foreach (SpriteRenderer spriteRenderer in  gameObject.transform.GetChild(0).GetComponentsInChildren <SpriteRenderer>())
                {
                    spriteRenderer.sortingOrder -= 3;
                }

                //if (os.objectNum == 1) //if hydroponics adjust other sprites sorting order
                //{
                //    for (int i = 0; i < gameObject.transform.GetChild(0).gameObject.transform.childCount; i++)
                //    {
                //        gameObject.transform.GetChild(0).gameObject.transform.GetChild(1).gameObject.transform.GetChild(i).gameObject.GetComponent<SpriteRenderer>().sortingOrder -= 3;
                //    }
                //}

                hasPlaced = true;

                if (os.needsSpecificLocation == true)
                {
                    os.HighlightSpotsOff();
                }

                if (os.nextToRoom == true)
                {
                    os.RoomHighlightSpotsOff();
                }

                Cursor.visible = true;
                //HOVER UI does not happen when mouse is hidden
                //StartCoroutine(os.WaitToClickRoom());

                foreach (SpriteRenderer spriteRenderer in  gameObject.transform.GetChild(0).GetComponentsInChildren <SpriteRenderer>())
                {
                    spriteRenderer.color = ObjectScript.c;
                    gameObject.GetComponent <RoomStats>().levelIconObject.GetComponent <Image>().color = ObjectScript.c;
                }

                enabled = false;

                StartCoroutine(WaitToCallCheck());
            }

            else //If something is placed allow player to keep moving room
            {
                hasPlaced = false;
                TurnOnBeingDragged();
            }
        }

        else //If not enough credits or energy allow player to keep moving room
        {
            TurnOnBeingDragged();
        }
    }