private void Awake() { tr = GetComponent <Transform>(); playerData = GameObject.Find("PlayerMgr").GetComponent <PlayerData>(); buildingData = GetComponent <BuildingData>(); buildingType = GetComponent <BuildingData>().ebuildingType; }
/// <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; }
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]); }
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; }
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); }
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; } }