Exemplo n.º 1
0
 private void Awake()
 {
     tr           = GetComponent <Transform>();
     playerData   = GameObject.Find("PlayerMgr").GetComponent <PlayerData>();
     buildingData = GetComponent <BuildingData>();
     buildingType = GetComponent <BuildingData>().ebuildingType;
 }
Exemplo n.º 2
0
    /// <summary>
    /// Create a building.
    /// </summary>
    /// <param name="timeRequiredInBuilding">Time required in seconds for the character in this building to complete it's action</param>
    /// <param name="capacity">Max building capacity</param>
    public Buildings(GameController gameController, float timeRequiredInBuilding, int capacity, GameObject gameObject, eBuildingType buildingType)
    {
        mAttributes = new BuildingInfoData.BuildingAttributes();
        mMeta       = new BuildingInfoData.BuildingMeta();

        _TimeRequiredInBuilding = timeRequiredInBuilding;
        _Capacity = capacity;

        _GameObject = gameObject;
        _GameObject.transform.position = GetRandomPosition();
        mPosition = _GameObject.transform.position;
        mRotation = new Vector3(0.0f, Random.Range(30.0f, 60.0f), 0.0f);
        _GameObject.transform.Rotate(mRotation);

        _BuildingType = buildingType;
    }
Exemplo n.º 3
0
    public Buildings GetNearestBuildingOfType(Vector3 toPosition, eBuildingType buildingType)
    {
        float            distance          = float.MaxValue;
        int              index             = 0;
        List <Buildings> filteredBuildings = mBuildings.FindAll(b => b._BuildingType == buildingType);

        for (int i = 0; i < filteredBuildings.Count; i++)
        {
            if (distance > Vector3.Distance(mBuildings[i]._GameObject.transform.position, toPosition))
            {
                index = i;
            }
        }

        return(filteredBuildings[index]);
    }
Exemplo n.º 4
0
    public void firstBase()
    {
        // 최초 생성
        tileMapSize = tileSizeXY / 4 - 1;

        pointX = 0 + tileMapSize;
        pointZ = 0 + tileMapSize;

        tmepListGo = tileList[(pointZ + pointX * (tileSizeXY / 2))].listGo;
        _centerBase.SetActive(true);

        tempBuilding   = _centerBase;
        buildingData   = tempBuilding.GetComponent <BuildingData>();
        tempBuildSizeX = buildingData.sizeX;
        tempBuildSizeZ = buildingData.sizeZ;
        tempBuilding.transform.position = tmepListGo.transform.position;

        if (isBuildingCheck(tempBuildSizeX, tempBuildSizeZ, buildingData.ebuildingType))
        {
            tempBuilding.GetComponent <BuildingData>().setTileXZ(pointX, pointZ);
            buildingType = tempBuilding.GetComponent <BuildingData>().ebuildingType;

            playerData.currGold          -= (int)buildingData._buyPrice;
            tmepListGo.transform.rotation = tempBuilding.transform.rotation;

            GameObject tempBuildingInst = Instantiate(tempBuilding, tmepListGo.transform.position, tmepListGo.transform.rotation, transform);
            _centerBase.SetActive(false);

            tempBuildingInst.GetComponent <BuildingSys>().isOrigin = false;

            setBuildingCheck(tempBuildSizeX, tempBuildSizeZ);
        }
        else
        {
            Debug.Log("무언가 있습니다.");
            isBase = true;
        }

        isBase = true;
    }
Exemplo n.º 5
0
    bool isBuildingCheck(int sizeX, int sizeZ, eBuildingType buildingType)
    {
        bool isTempChaeck = true;

        switch (buildingType)
        {
        case eBuildingType.WINDMILL:
            int tempFramPoint = 0;
            for (int x = -sizeX; x < sizeX + 1; x++)
            {
                for (int z = -sizeZ; z < sizeZ + 1; z++)
                {
                    if (!mapSizeCheck((pointX + x), (pointZ + z)))
                    {
                        return(false);
                    }

                    if (tileList[(pointZ + z) + (pointX + x) * (tileSizeXY / 2)].isBuilding)
                    {
                        isTempChaeck = false;
                        GameObject tempGO = Instantiate(falseTileGO, tileList[(pointZ + z) + (pointX + x) * (tileSizeXY / 2)].listGo.transform.position, falseTileGO.transform.rotation, isBuildingTileMgr.transform);
                        tempGO.transform.Translate(0, 0.01f, 0, Space.World);
                        isBuildingTile.Add(tempGO);
                    }
                    else
                    {
                        GameObject tempGO = Instantiate(trueTileGO, tileList[(pointZ + z) + (pointX + x) * (tileSizeXY / 2)].listGo.transform.position, falseTileGO.transform.rotation, isBuildingTileMgr.transform);
                        tempGO.transform.Translate(0, 0.01f, 0, Space.World);
                        isBuildingTile.Add(tempGO);
                        if (tileList[(pointZ + z) + (pointX + x) * (tileSizeXY / 2)].isFarmland)
                        {
                            tempFramPoint++;
                        }
                    }
                }
            }

            if (!isTempChaeck)
            {
                return(false);
            }
            if (tempFramPoint < 3)
            {
                return(false);
            }

            break;

        default:
            for (int x = -sizeX; x < sizeX + 1; x++)
            {
                for (int z = -sizeZ; z < sizeZ + 1; z++)
                {
                    if (!mapSizeCheck((pointX + x), (pointZ + z)))
                    {
                        return(false);
                    }

                    if (tileList[(pointZ + z) + (pointX + x) * (tileSizeXY / 2)].isBuilding)
                    {
                        isTempChaeck = false;
                        GameObject tempGO = Instantiate(falseTileGO, tileList[(pointZ + z) + (pointX + x) * (tileSizeXY / 2)].listGo.transform.position, falseTileGO.transform.rotation, isBuildingTileMgr.transform);
                        tempGO.transform.Translate(0, 0.01f, 0, Space.World);
                        isBuildingTile.Add(tempGO);
                    }
                    else
                    {
                        GameObject tempGO = Instantiate(trueTileGO, tileList[(pointZ + z) + (pointX + x) * (tileSizeXY / 2)].listGo.transform.position, falseTileGO.transform.rotation, isBuildingTileMgr.transform);
                        tempGO.transform.Translate(0, 0.01f, 0, Space.World);
                        isBuildingTile.Add(tempGO);
                    }
                }
            }

            if (!isTempChaeck)
            {
                return(false);
            }
            break;
        }
        return(true);
    }
Exemplo n.º 6
0
    void tileInfo(Vector3 touchPos)
    {
        if (!CraftingUI.isBuildingListSelect)
        {
            return;
        }

        if ((Input.GetMouseButton(0) || touchOn &&
             tileList.Count > 0
             /*&& !EventSystem.current.IsPointerOverGameObject()*/))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (touchOn)
            {
                ray = Camera.main.ScreenPointToRay(tempTouchs.position);
            }

            RaycastHit hitInfo;
            if (Physics.Raycast(ray, out hitInfo, 100.0f, 1 << 10))
            {
                isBuildingList();

                hitPosition = hitInfo.point;
                tileMapSize = tileSizeXY / 4 - 1;

                pointX = (((int)hitPosition.x)) + tileMapSize;
                pointZ = (((int)hitPosition.z)) + tileMapSize;
                if (hitPosition.z > 0.0f)
                {
                    pointZ++;
                }
                if (hitPosition.x > 0.0f)
                {
                    pointX++;
                }

                tmepListGo     = tileList[(pointZ + pointX * (tileSizeXY / 2))].listGo;
                tempBuilding   = GetComponent <BuildingSetting>().buildingGet(selectBuildingValue);
                buildingData   = tempBuilding.GetComponent <BuildingData>();
                tempBuildSizeX = buildingData.sizeX;
                tempBuildSizeZ = buildingData.sizeZ;

                if (isBuildingCheck(tempBuildSizeX, tempBuildSizeZ, buildingData.ebuildingType))
                {
                }
                tempBuilding.transform.position = tmepListGo.transform.position;
                isButton = true;
            }
        }

        if ((Input.GetMouseButtonUp(0) || !touchOn) && isButton)
        {
            if ((buildingData._buyPrice <= playerData.currGold))
            {
                if (isBuildingCheck(tempBuildSizeX, tempBuildSizeZ, buildingData.ebuildingType))
                {
                    buildingSound.Play();
                    tempBuilding.GetComponent <BuildingData>().setTileXZ(pointX, pointZ);
                    buildingType = tempBuilding.GetComponent <BuildingData>().ebuildingType;

                    playerData.currGold          -= (int)buildingData._buyPrice;
                    tmepListGo.transform.rotation = tempBuilding.transform.rotation;

                    GameObject tempBuildingInst = Instantiate(tempBuilding, tmepListGo.transform.position, tmepListGo.transform.rotation, transform);
                    tempBuildingInst.GetComponent <BuildingSys>().isOrigin = false;

                    setBuildingCheck(tempBuildSizeX, tempBuildSizeZ);
                }
            }
            else
            {
                Debug.Log("응 돈없어~");
            }

            isBuildingList();
            tempBuilding.SetActive(false);
            isButton = false;
        }
    }