IEnumerator Build(Building prefab, Vector3 buildPos) { status = BuildingStatus.InProgress; DestroyHologram(); buildingTimeLeft = (buildingBuilt == BuildingBuilt.Turret) ? turretBuildingTime : barracksBuildingTime; player.SubtractResources(turretCost); currentCost = turretCost; while (status == BuildingStatus.InProgress && buildingTimeLeft >= 0) { buildingTimeLeft -= Time.deltaTime; yield return(null); } if (status == BuildingStatus.InProgress) { Building building = Instantiate(prefab, player.transform); building.transform.position = buildPos; player.AddBuilding(building); status = BuildingStatus.None; buildingTimeLeft = 0f; currentAction = null; } }
public void RegisterBuilding(BuildingStatus bs) { if (!m_AliveBuildings.Contains(bs) && !m_destroyedBuilding.Contains(bs)) { m_AliveBuildings.Add(bs); } }
public void CreateBuildingHologram(KeyCode code) { status = BuildingStatus.Selected; if (code == selectTurretKey) { buildingBuilt = BuildingBuilt.Turret; selectedBuilding = Instantiate(turretPrefab, player.transform); } else if (code == selectBarracksKey) { buildingBuilt = BuildingBuilt.Barracks; selectedBuilding = Instantiate(barracksPrefab, player.transform); } selectedBuilding.GetComponent <MeshRenderer>().material.color = new Color(0.1f, 0.9f, 0.1f, 0.4f); foreach (MeshRenderer renderer in selectedBuilding.GetComponentsInChildren <MeshRenderer>()) { renderer.material.color = new Color(0.1f, 0.9f, 0.1f, 0.4f); } selectedBuilding.healthBar.enabled = false; selectedBuilding.GetComponent <Collider>().enabled = false; selectedBuilding.healthBar.transform.parent.gameObject.SetActive(false); }
public bool IsBuildingMyTeam(BuildingStatus Unit) //같은 팀인지 검사 { if (PhotonNetwork.isMasterClient) // 같은 편인지 검사 { if (Unit.m_Team.gameObject.layer == 22) { return(false); } else { return(true); } } else { if (Unit.m_Team.gameObject.layer == 23) { return(false); } else { return(true); } } }
protected void StatusUpdate() { delta += Time.deltaTime; switch (status) { case BuildingStatus.BUILD: if (delta > span) { delta = 0; this.hp += gameData.BUILDING_REPAIR; } break; case BuildingStatus.COMPLETE: if (delta > span) { delta = 0; if (has_heavy_rain) { this.hp -= gameData.BUILDING_REPAIR; } else { if (hp < 100) { this.hp += gameData.BUILDING_REPAIR; } } } break; case BuildingStatus.NONE: break; } if (hp > 0 && hp < 100 && !has_heavy_rain && status != BuildingStatus.COMPLETE && status != BuildingStatus.NONE) { status = BuildingStatus.BUILD; } else if (has_heavy_rain && status == BuildingStatus.BUILD) { status = BuildingStatus.NONE; } if (hp >= 100) { status = BuildingStatus.COMPLETE; } else if (hp <= 0) { status = BuildingStatus.NONE; } }
public void SuppliableEnteredRange(BuildingStatus suppliable) { if(suppliable.powerRequired > 0 && !SuppliablesInRange.Contains(suppliable)) { SuppliablesInRange.Add(suppliable); RecheckSuppliablesForNewPower(); //must recheck power BEFORE calling AddPowerSupplier suppliable.AddPowerSupplier(this); } }
public void Refresh(int grade) { selectedGrade = grade; BuildingTitle.text = $"[{currentData.BuildingName}] <color=#FFA500FF>{selectedGrade + 1}</color> 단계"; RefreshCost(); RefreshStatText(); BuildingStatus status = PlayerBuilding.Instance.GetBuildingStatus(currentData.BuildingCode); if (selectedGrade < status.Grade) { SetConstructButtonActive("상급건물 건설됨!", false); return; } else if (selectedGrade == status.Grade) { SetConstructButtonActive("이미 건설됨!", false); return; } int gradeDifference = selectedGrade - status.Grade; if (gradeDifference > 1) { SetConstructButtonActive("이전단계 건설 필요!", false); return; } if (currentData.StatsByGrade[selectedGrade].RequiredGold > PlayerStat.Instance.GetStat("Gold")) { SetConstructButtonActive("골드 부족!", false); return; } BuildingCost[] costs = currentData.StatsByGrade[selectedGrade].ConstructionCost; int numOfCorrectCount = 0; for (int i = 0; i < costs.Length; ++i) { ItemData item = ItemDB.Instance.GetItemData(costs[i].NeedItem); InventoryItem foundInventoryItem = null; if (PlayerInventory.Instance.AllItems.TryGetValue(item.ItemCode, out foundInventoryItem)) { if (foundInventoryItem.ItemCount >= costs[i].NeedItemCount) { numOfCorrectCount += 1; } } } if (numOfCorrectCount == costs.Length) { SetConstructButtonActive("건설!", true); } else { SetConstructButtonActive("재료 부족!", false); } }
protected override void Start() { base.Start(); mainCamera = Camera.main; status = BuildingStatus.None; animationActions = GetComponent <EngineerActions>(); animationActions.Stay(); GetComponent <EngineerController>().SetArsenal("OneHand"); }
public void ConstructBuilding() { BuildingStatus status = PlayerBuilding.Instance.GetBuildingStatus(currentData.BuildingCode); status.Grade = selectedGrade; currentBuilder.CreateNewBuilding(status.BuildingCode); UpgradePanel.ClosePanel(); }
public void BuildingDestroyed(BuildingStatus bs) { if (m_AliveBuildings.Contains(bs) && !bs.IsAlive) { m_AliveBuildings.Remove(bs); m_destroyedBuilding.Add(bs); m_porcentInAshes = (float)m_destroyedBuilding.Count / (float)m_AliveBuildings.Count; } }
public void ShowPlayerActionCanvas(BuildingStatus buildingStatus) { isPlayerAction = true; Camera.main.GetComponent <CameraMove>().ReturnToInGame(); HideReturnInGameCanvas(); HideStatusCanvas(); HideLogCanvas(); HideUICanvas(); instance_PlayerActionCanvas = Instantiate(PlayerActionCanvas, new Vector3(Camera.main.transform.position.x, Camera.main.transform.position.y, 10), transform.rotation); instance_PlayerActionCanvas.GetComponent <Canvas>().renderMode = RenderMode.ScreenSpaceCamera; instance_PlayerActionCanvas.GetComponent <Canvas>().worldCamera = Camera.main.GetComponent <Camera>(); instance_PlayerActionCanvas.GetComponent <Canvas>().sortingLayerName = "Canvas"; GameObject panel = instance_PlayerActionCanvas.transform.Find("Panel").gameObject; GameObject InfoBtn = panel.transform.Find("BuildingInfoOnButton").gameObject; InfoBtn.GetComponent <Button>().onClick.AddListener(delegate { GM.gameObject.GetComponent <ControlPanel>().ShowStatusCanvas(buildingStatus); }); ActionBtn = GameObject.Find("ActionText"); GameObject BuildingImage = ActionBtn.transform.Find("BuildingImage").gameObject; GameObject building = BuildingImage.transform.Find("Building").gameObject; GameObject[] Subbuilding = new GameObject[2]; GameObject[] Fire = new GameObject[3]; building.GetComponent <SpriteRenderer>().sprite = buildingStatus.Building.GetComponent <SpriteRenderer>().sprite; building.transform.localScale = buildingStatus.Building.transform.localScale; for (int i = 0; i < Subbuilding.Length; i++) { Subbuilding[i] = BuildingImage.transform.Find("SubBuilding (" + (i + 1).ToString() + ")").gameObject; Subbuilding[i].SetActive(buildingStatus.SubBuilding[i].activeSelf); Subbuilding[i].GetComponent <SpriteRenderer>().sprite = buildingStatus.SubBuilding[i].GetComponent <SpriteRenderer>().sprite; Subbuilding[i].transform.localPosition = buildingStatus.SubBuilding[i].transform.localPosition; } for (int i = 0; i < Fire.Length; i++) { Fire[i] = BuildingImage.transform.Find("Fire (" + (i + 1).ToString() + ")").gameObject; Fire[i].SetActive(buildingStatus.Fire[i].activeSelf); } if (buildingStatus.building.getState() == State.Idle) { ActionBtn.GetComponent <Text>().text = "건물 건설"; } else if (buildingStatus.building.getState() == State.Damaged) { ActionBtn.GetComponent <Text>().text = "건물 수리"; } else { GameObject.Find("Build/RepairBtn").SetActive(false); } }
AssetBundleBuild BuildBundle() { if (buildingStatus != BuildingStatus.NotBuilding) { var c = new AssetBundleBuild(); c.assetBundleName = null; c.assetNames = null; return(c); } front.PrepareBundleData(); back.PrepareBundleData(); up.PrepareBundleData(); down.PrepareBundleData(); left.PrepareBundleData(); right.PrepareBundleData(); PanoramaAssetBundleName = PanoramaAssetBundleNamePrefix + PanoramaIndex.ToString(); AssetBundleBuild buildMap = new AssetBundleBuild(); buildMap.assetBundleName = PanoramaAssetBundleName; List <string> assetNames = new List <string>(); if (front.mainAsset) { assetNames.Add(AssetDatabase.GetAssetPath(front.mainAsset)); } if (back.mainAsset) { assetNames.Add(AssetDatabase.GetAssetPath(back.mainAsset)); } if (up.mainAsset) { assetNames.Add(AssetDatabase.GetAssetPath(up.mainAsset)); } if (down.mainAsset) { assetNames.Add(AssetDatabase.GetAssetPath(down.mainAsset)); } if (left.mainAsset) { assetNames.Add(AssetDatabase.GetAssetPath(left.mainAsset)); } if (right.mainAsset) { assetNames.Add(AssetDatabase.GetAssetPath(right.mainAsset)); } buildMap.assetNames = assetNames.ToArray(); hasMaterials = false; buildingStatus = BuildingStatus.Built; return(buildMap); }
/// <summary> /// Destroys a specific building /// </summary> public void Destroy() { currentBuilding = null; currentProject = null; Destroy(buildingModel); constructionModel.SetActive(false); progressBar.fillAmount = 0f; storage = 0; status = BuildingStatus.Construction; selected = false; GM.I.city.UpdateCityVisuals(); }
/// <summary> /// Builds the building on a specific location /// </summary> public void Build() { currentBuilding = GM.I.ui.buildingMenu.selectedBuilding; integrity = 1f; constructionAmount = 0; buildingModel = Instantiate(currentBuilding.prefab, transform); buildingModel.SetActive(false); constructionModel.SetActive(true); progressBar.color = currentBuilding.color; GM.I.city.SetBuildingSpotMode(BuildingSpotMode.Building); status = BuildingStatus.Construction; GM.I.sfx.Play(SFX.Build, Random.Range(0.8f, 1.2f)); }
public void ApplyBuildingEffects() { foreach (var kvp in buildingStatuses) { BuildingStatus playerBuilding = kvp.Value; BuildingData currentData = BuildingDB.Instance.GetBuildingData(playerBuilding.BuildingCode); StatAdditional[] buildingStats = currentData.StatsByGrade[playerBuilding.Grade].BuildingStats; for (int i = 0; i < buildingStats.Length; ++i) { PlayerStat.Instance.AddChangeableStat(buildingStats[i].StatName, currentData.BuildingCode, buildingStats[i].StatValue); } } }
void BreakLink() { if (buildingStatus != BuildingStatus.Built) { return; } front.BreakAssetReference(); back.BreakAssetReference(); up.BreakAssetReference(); down.BreakAssetReference(); left.BreakAssetReference(); right.BreakAssetReference(); buildingStatus = BuildingStatus.CleanBuilt; }
protected void Init() { hp = 10; int random_level = Random.Range(0, (int)BuildingLevel.NONE); int random_type = Random.Range(0, (int)BuildingType.NONE); building_level = (BuildingLevel)random_level; building_type = (BuildingType)random_type; status = BuildingStatus.BUILD; sprite_render = gameObject.GetComponent <SpriteRenderer>(); }
/// <summary> /// Updates a specific building /// </summary> public void UpdateBuilding() { if (currentBuilding == null) { return; } if (constructionAmount < currentBuilding.constructionTime) { if (currentBuilding.constructionMonthlyCost.Limited(GM.I.resource.resources)) { constructionHalted = true; progressBar.color = GM.I.art.red; } else { progressBar.color = currentBuilding.color; constructionHalted = false; constructionAmount++; } progressBar.enabled = true; progressBar.fillAmount = ((float) constructionAmount / (float) currentBuilding.constructionTime); } else if (status == BuildingStatus.Construction) { status = BuildingStatus.Stopped; constructionDate = GM.I.gameplay.currentTime; progressBar.enabled = false; constructionModel.SetActive(false); buildingModel.SetActive(true); discovered = true; terraIncognita = false; if (currentBuilding.constructionSound != null) GM.I.sfx.Play(currentBuilding.constructionSound); storage = currentBuilding.baseStorage; foreach (Connection connection in connections) { connection.GetOther(this).discovered = true; } if (currentBuilding.productor) { producing = true; } UpdateBuilding(); GM.I.city.UpdateCityVisuals(); } else { if (increaseStorage) { if (storageCounter == 0) { storage += 200; increaseStorage = false; storageCounter = 12 * (int) storage / 200; } else if (!currentBuilding.storageIncreaseMonthlyCost.Limited(GM.I.resource.resources)) { storageCounter--; } } ProcessIntegrity(); ProcessEfficiency(); } UpdateVisual(); }
void CancelBundle() { if (buildingStatus != BuildingStatus.Built) { return; } front.RecoverPanorama(); back.RecoverPanorama(); up.RecoverPanorama(); down.RecoverPanorama(); left.RecoverPanorama(); right.RecoverPanorama(); hasMaterials = true; buildingStatus = BuildingStatus.NotBuilding; }
public BuildingStatus GetBuildingStatus(int buildingCode) { BuildingStatus foundStatus = null; if (buildingStatuses.TryGetValue(buildingCode, out foundStatus)) { return(foundStatus); } else { Debug.Log($"PlayerDB에 [{buildingCode}] 에 해당하는 빌딩이 존재하지 않음, " + $"존재하는(생성 가능한) 모든 건물의 정보가 DBMS에 존재해야 하므로 DB 내부 JSON 확인 필요"); return(null); } }
void OnCollisionEnter(Collision Col) { if (Col.collider.gameObject.layer == 28) { TargetPM = Col.gameObject.GetComponent <PlayerMove>(); //if (TargetPM.m_IsStartDamage == false) { TargetPM.imgHpbar.enabled = true; TargetPM.m_Hp -= 15f; // TargetPM.StartCoroutine("DamageRoutine"); // TargetPM.m_IsStartDamage = true; } //TargetPM.m_Hp -= 10f; TargetPM.imgHpbar.fillAmount = (float)TargetPM.m_Hp / (float)TargetPM.m_InitHp; //Col.gameObject.GetComponent<PlayerMove>().imgHpbar.fillAmount = TargetPM.imgHpbar.fillAmount; if (TargetPM.m_Hp <= 0f) { TargetPM.m_Hp = 0f; TargetPM.m_IsAlive = false; TargetPM = null; } } else if (Col.collider.gameObject.layer == 27) { TargetBS = Col.gameObject.GetComponent <BuildingStatus>(); // if (TargetBS.m_IsStartDamage == false) { TargetBS.imgHpbar.enabled = true; TargetBS.m_Hp -= 15f; // TargetBS.StartCoroutine("DamageRoutine"); // TargetBS.m_IsStartDamage = true; } //TargetPM.m_Hp -= 10f; TargetBS.imgHpbar.fillAmount = (float)TargetBS.m_Hp / (float)TargetBS.m_InitHp; //Col.gameObject.GetComponent<PlayerMove>().imgHpbar.fillAmount = TargetPM.imgHpbar.fillAmount; if (TargetBS.m_Hp <= 0f) { TargetBS.m_Hp = 0f; TargetBS.m_IsAlive = false; TargetBS = null; } } }
public void NoticeQuestProgress(int buildingCode) { for (int buildIdx = 0; buildIdx < TargetBuilding.Length; ++buildIdx) { if (TargetBuilding[buildIdx].BuildingCode == buildingCode) { BuildingStatus currentBuilding = PlayerBuilding.Instance.GetBuildingStatus(TargetBuilding[buildIdx].BuildingCode); if (currentBuilding.Grade <= TargetBuilding[buildIdx].BuildingGrade) { for (int i = 0; i < questObservers.Count; ++i) { questObservers[i].Update_Building(QuestCode, buildingCode, currentBuilding.Grade, TargetBuilding[buildIdx].BuildingGrade); } } } } }
private void ConstructBuilding(int buildingCode) { if (currentBuilding != null) { Destroy(currentBuilding.gameObject); } currentBuildingStatus = PlayerBuilding.Instance.GetBuildingStatus(buildingCode); currentData = BuildingDB.Instance.GetBuildingData(buildingCode); GameObject prefab = AssetBundleCacher.Instance.LoadAndGetAsset("object", $"Building_Grade_{currentBuildingStatus.Grade}") as GameObject; currentBuilding = Instantiate(prefab, transform).GetComponent <BuildingController>(); BuildingInfo currentGradeInfo = currentData.StatsByGrade[currentBuildingStatus.Grade]; currentBuilding.transform.localPosition = currentGradeInfo.BuildingPosition; currentBuilding.transform.localRotation = Quaternion.Euler(currentGradeInfo.BuildingRotation); currentBuilding.Initialize(currentData); }
public bool GetHasCompletedAllBuildingConstruct() { int constructComleteCount = 0; for (int i = 0; i < TargetBuilding.Length; ++i) { BuildingStatus currentBuilding = PlayerBuilding.Instance.GetBuildingStatus(TargetBuilding[i].BuildingCode); if (currentBuilding.Grade >= TargetBuilding[i].BuildingGrade) { constructComleteCount += 1; } } if (constructComleteCount == TargetBuilding.Length) { return(true); } else { return(false); } }
// Captures the given amount of power for use by the given object public void CapturePower(BuildingStatus suppliable, int amount) { PowerUsers.Add(suppliable, amount); }
// Releases any power captured by the given object public void ReleasePower(BuildingStatus suppliable) { PowerUsers.Remove(suppliable); }
public void ShowInvestCanvas(BuildingStatus buildingStatus) { Camera.main.GetComponent <CameraMove>().ReturnToInGame(); HideReturnInGameCanvas(); HideStatusCanvas(); HideLogCanvas(); HideUICanvas(); instance_InvestCanvas = Instantiate(InvestCanvas, new Vector3(Camera.main.transform.position.x, Camera.main.transform.position.y, 10), transform.rotation); instance_InvestCanvas.GetComponent <Canvas>().renderMode = RenderMode.ScreenSpaceCamera; instance_InvestCanvas.GetComponent <Canvas>().worldCamera = Camera.main.GetComponent <Camera>(); instance_InvestCanvas.GetComponent <Canvas>().sortingLayerName = "Canvas"; Player = GameObject.FindGameObjectsWithTag("Player"); foreach (GameObject p in Player) { p.GetComponent <PlayerAction>().TimerReset(); p.GetComponent <PlayerAction>().timerPhase = TimerPhase.InvestTime; p.GetComponent <PlayerAction>().TimerStart(); GameObject ActivePanel = instance_InvestCanvas.transform.Find("ActivePanel").gameObject; GameObject WaitingPanel = instance_InvestCanvas.transform.Find("WaitingPanel").gameObject; GameObject PlayersPanel = ActivePanel.transform.Find("PlayersPanel").gameObject; GameObject BuildingInfoPanel = ActivePanel.transform.Find("BuildingInfoPanel").gameObject; var BuildingName = BuildingInfoPanel.transform.Find("BuildingName").GetComponent <Text>(); var NeedPoint = BuildingInfoPanel.transform.Find("NeedPoint").GetComponent <Text>(); var MinPoint = BuildingInfoPanel.transform.Find("MinPoint").GetComponent <Text>(); var ScorePoint = BuildingInfoPanel.transform.Find("ScorePoint").GetComponent <Text>(); GameObject[] images = new GameObject[6]; GameObject BuildingImage = BuildingInfoPanel.transform.Find("BuildingImage").gameObject; GameObject[] Subbuilding = new GameObject[2]; GameObject building = BuildingImage.transform.Find("Building").gameObject; GameObject[] Fire = new GameObject[3]; building.GetComponent <SpriteRenderer>().sprite = buildingStatus.Building.GetComponent <SpriteRenderer>().sprite; building.transform.localScale = buildingStatus.Building.transform.localScale; for (int i = 0; i < Subbuilding.Length; i++) { Subbuilding[i] = BuildingImage.transform.Find("SubBuilding (" + (i + 1).ToString() + ")").gameObject; Subbuilding[i].SetActive(buildingStatus.SubBuilding[i].activeSelf); Subbuilding[i].GetComponent <SpriteRenderer>().sprite = buildingStatus.SubBuilding[i].GetComponent <SpriteRenderer>().sprite; Subbuilding[i].transform.localPosition = buildingStatus.SubBuilding[i].transform.localPosition; } for (int i = 0; i < Fire.Length; i++) { Fire[i] = BuildingImage.transform.Find("Fire (" + (i + 1).ToString() + ")").gameObject; Fire[i].SetActive(buildingStatus.Fire[i].activeSelf); } BuildingName.text = buildingStatus.gameObject.name; NeedPoint.text = buildingStatus.building.getNeedPopulation().ToString(); MinPoint.text = buildingStatus.building.getMinPopulation().ToString(); ScorePoint.text = buildingStatus.building.getScore().ToString(); list = buildingStatus.building.getNeedPlayerList(); for (int i = 0; i < images.Length; i++) { images[i] = PlayersPanel.transform.Find("Panel").Find("Image (" + (i + 1).ToString() + ")").gameObject; } for (int i = 0; i < list.Count; i++) { images[i].GetComponent <Image>().sprite = GM.Character[list[i]]; } if (buildingStatus.building.getNeedPlayerList().Contains(p.GetComponent <PlayerManager>().myColor) && p.GetComponent <PlayerManager>().isLocalPlayer) { var slider = ActivePanel.transform.Find("InvestPopulationSlider").GetComponent <Slider>(); var inputField = ActivePanel.transform.Find("InvestPopulationInputField").GetComponent <InputField>(); var currentPopulation = ActivePanel.transform.Find("CurrentPopulationBackground").Find("CurrentPopulation").GetComponent <Text>(); var send = ActivePanel.transform.Find("SendInvest").GetComponent <Button>(); var investPoint = p.GetComponent <PlayerAction>().investPoint; p.GetComponent <PlayerAction>().ActivePanel = instance_InvestCanvas.transform.Find("ActivePanel").gameObject; p.GetComponent <PlayerAction>().WaitingPanel = instance_InvestCanvas.transform.Find("WaitingPanel").gameObject; slider.maxValue = p.GetComponent <PlayerManager>().Population; currentPopulation.text = "현재 인원\n" + p.GetComponent <PlayerManager>().Population.ToString(); slider.onValueChanged.AddListener(delegate { investPoint = (int)slider.value; inputField.text = ((int)slider.value).ToString(); }); inputField.onValueChanged.AddListener(delegate { investPoint = int.Parse(inputField.text); slider.value = int.Parse(inputField.text); if (investPoint > p.GetComponent <PlayerManager>().Population) { investPoint = p.GetComponent <PlayerManager>().Population; inputField.text = p.GetComponent <PlayerManager>().Population.ToString(); } }); send.onClick.AddListener(delegate { p.GetComponent <PlayerAction>().CmdSendInvest(investPoint); p.GetComponent <PlayerManager>().Population -= investPoint; p.GetComponent <PlayerManager>().UpdatePopulationTextUI(); InGameSoundManager.SEbuttonPlay.Invoke(); ActivePanel.SetActive(false); WaitingPanel.SetActive(true); p.GetComponent <PlayerAction>().TimerReset(); if (p.GetComponent <PlayerAction>().GM.waiting.FindAll(x => x == true).Count == 5) { p.GetComponent <PlayerAction>().CmdNextTurn(); p.GetComponent <PlayerAction>().CmdHideInvestCanvas(); p.GetComponent <PlayerAction>().CmdTurnEnd(); } else { p.GetComponent <PlayerAction>().CmdWaiting(); } }); } else if (!buildingStatus.building.getNeedPlayerList().Contains(p.GetComponent <PlayerManager>().myColor) && p.GetComponent <PlayerManager>().isLocalPlayer) { ActivePanel.SetActive(false); WaitingPanel.SetActive(true); p.GetComponent <PlayerAction>().TimerReset(); p.GetComponent <PlayerAction>().CmdWaiting(); } } }
public void ShowStatusCanvas(BuildingStatus buildingStatus) { for (int i = 0; i < character.Length; i++) { character[i].GetComponent <Image>().sprite = buildingStatus.sprite[4]; } building.GetComponent <SpriteRenderer>().sprite = buildingStatus.Building.GetComponent <SpriteRenderer>().sprite; building.GetComponent <SpriteRenderer>().color = buildingStatus.Building.GetComponent <SpriteRenderer>().color; building.transform.localScale = buildingStatus.Building.transform.localScale; building.GetComponent <SpriteRenderer>().sortingLayerName = "CanvasBuilding"; for (int i = 0; i < Subbuilding.Length; i++) { Subbuilding[i].SetActive(buildingStatus.SubBuilding[i].activeSelf); Subbuilding[i].GetComponent <SpriteRenderer>().sprite = buildingStatus.SubBuilding[i].GetComponent <SpriteRenderer>().sprite; Subbuilding[i].GetComponent <SpriteRenderer>().color = buildingStatus.SubBuilding[i].GetComponent <SpriteRenderer>().color; Subbuilding[i].transform.localPosition = buildingStatus.SubBuilding[i].transform.localPosition; Subbuilding[i].GetComponent <SpriteRenderer>().sortingLayerName = "CanvasBuilding"; } Info.SetActive(buildingStatus.INFO.activeSelf); Info.GetComponent <SpriteRenderer>().sortingLayerName = "CanvasBuilding"; Dust.SetActive(buildingStatus.Dust.activeSelf); Dust.GetComponent <SpriteRenderer>().sortingLayerName = "CanvasBuilding"; for (int i = 0; i < Fire.Length; i++) { Fire[i].SetActive(buildingStatus.Fire[i].activeSelf); Fire[i].GetComponent <SpriteRenderer>().sortingLayerName = "CanvasBuilding"; } if (buildingStatus.Hammer.activeSelf) { Hammer.SetActive(true); Hammer.GetComponent <SpriteRenderer>().sortingLayerName = "CanvasBuilding"; MoveHammer(); } else { OffHammer(); } NeedPointText.text = buildingStatus.building.getNeedPopulation().ToString(); MinPointText.text = buildingStatus.building.getMinPopulation().ToString(); ScorePointText.text = buildingStatus.building.getScore().ToString(); BuildingNameText.text = buildingStatus.gameObject.name; list = buildingStatus.building.getNeedPlayerList(); for (int i = 0; i < list.Count; i++) { character[i].GetComponent <Image>().sprite = GM.Character[list[i]]; } BuildingStatusCanvas.GetComponent <Canvas>().sortingLayerName = "Canvas"; if (ReturnInGameCanvas.activeSelf) { ReturnInGameCanvas.GetComponent <Canvas>().sortingLayerName = "Default"; } HideUICanvas(); }
public void SuppliableLeftRange(BuildingStatus suppliable) { SuppliablesInRange.Remove(suppliable); suppliable.RemovePowerSupplier(this); if(PowerUsers.ContainsKey(suppliable)) { if(suppliable.Powered) { Debug.Log("Unpowering "+suppliable.name); suppliable.Powered = false; } ReleasePower(suppliable); RecheckSuppliablesForNewPower(); } }
//private void Update() //{ // //if(TargetPM != null) // //{ // // TargetPM.imgHpbar.enabled = true; // // TargetPM.imgHpbar.fillAmount = (float)TargetPM.m_Hp / (float)TargetPM.m_InitHp; // // //IsSetTarget = true; // //if (TargetPM.m_Hp <= 20f) //if (TargetPM.m_IsAlive == false) // //{ // // TargetPM.imgSelectbar.enabled = false; // // TargetPM.m_Hp = 0f; // // //TargetPM.m_Animator.SetBool("IsDie", true); // // //TargetPM.Invoke("Death", 10f); // // } // //} //} void OnCollisionEnter(Collision Col) { if (Col.collider.gameObject.layer == 28) { TargetPM = Col.gameObject.GetComponent <PlayerMove>(); if (TargetPM.m_IsStartDamage == false) { TargetPM.imgHpbar.enabled = true; TargetPM.StartCoroutine("DamageRoutine"); TargetPM.m_IsStartDamage = true; } Debug.Log("공격받음!"); //TargetPM.m_Hp -= 10f; //TargetPM.imgHpbar.fillAmount = (float)TargetPM.m_Hp / (float)TargetPM.m_InitHp; //Col.gameObject.GetComponent<PlayerMove>().imgHpbar.fillAmount = TargetPM.imgHpbar.fillAmount; if (TargetPM.m_Hp <= 0f) { TargetPM.m_Hp = 0f; TargetPM.m_IsAlive = false; TargetPM = null; } } else if (Col.collider.gameObject.layer == 27) { TargetBS = Col.gameObject.GetComponent <BuildingStatus>(); if (TargetBS.m_IsStartDamage == false) { TargetBS.imgHpbar.enabled = true; TargetBS.StartCoroutine("DamageRoutine"); TargetBS.m_IsStartDamage = true; } Debug.Log("공격받음!"); //TargetPM.m_Hp -= 10f; //TargetPM.imgHpbar.fillAmount = (float)TargetPM.m_Hp / (float)TargetPM.m_InitHp; //Col.gameObject.GetComponent<PlayerMove>().imgHpbar.fillAmount = TargetPM.imgHpbar.fillAmount; if (TargetBS.m_Hp <= 0f) { TargetBS.m_Hp = 0f; TargetBS.m_IsAlive = false; TargetBS = null; } } GameObject Obj = (GameObject)Instantiate(m_Particle, Col.contacts[0].point, //transform.position, // 현재총알의 위치 Quaternion.Euler(Vector3.zero)); Destroy(Obj, 1.5f); //Destroy (gameObject); // 총알자신을 삭제 if (photonView.isMine) { PhotonNetwork.Destroy(gameObject); } }
// Default constructor public HouseHistory() { _house = default(House); _startDate = default(DateTime); _status = default(BuildingStatus); }
protected override void Awake() { base.Awake(); BuildingStatus = gameObject.AddComponent<BuildingStatus>(); gameObject.AddComponent<Vision>().visionRange = 2; FinishedBuildingCreatable = finishedBuilding.GetComponent<CreatableBuilding>(); }
IEnumerator OrderRoutine() { while (true) { if (BuildScript.m_IsBuild && m_IsSelect == true && transform.tag == "UnitLego") { m_Animator.SetBool("IsMineral", false); yield return(StartCoroutine("BuildRoutine")); StopCoroutine("OrderRoutine"); } else if (m_IsPick) { if (IsInputRight() && TouchScript.m_Instance.IsOver) { //m_IsStartToMove = true; // SelectUnitScript.m_Instance.StopCoroutine("SelectRoutine"); // SelectUnitScript.m_Instance.StartCoroutine("SelectRoutine"); imgSelectbar.enabled = false; imgHpbar.enabled = false; SelectUnitScript.m_Instance.SelectedUnit.Remove(transform.GetComponent <PlayerMove>()); Ray ray = Camera.main.ScreenPointToRay(InputSpot()); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity)) { Debug.DrawRay(Camera.main.transform.position, hit.point - Camera.main.transform.position, Color.red); HitOb = hit.collider.gameObject; if (HitOb.layer == 30) // Ground { SelectUnitScript.m_Instance.m_PickImage.transform.position = hit.point; SelectUnitScript.m_Instance.m_PickImage.SetActive(true); unitState = UnitState.walk; m_Animator.SetBool("IsAttack", false); m_Animator.SetBool("IsMineral", false); m_Animator.SetBool("IsHeal", false); m_Animator.SetBool("IsBuild", false); StopCoroutine("AttackByBullet"); StopCoroutine("TraceRoutine"); StopCoroutine("MineralRoutine"); StopCoroutine("HealRoutine"); CancelInvoke("AttackByFlare"); yield return(StartCoroutine("Picking", hit.point)); SelectUnitScript.m_Instance.m_PickImage.SetActive(false); m_IsSelect = false; } } } } else if (m_IsMineral) { if (IsInputRight()) { //m_IsStartToMove = true; // SelectUnitScript.m_Instance.StopCoroutine("SelectRoutine"); //SelectUnitScript.m_Instance.StartCoroutine("SelectRoutine"); imgSelectbar.enabled = false; imgHpbar.enabled = false; SelectUnitScript.m_Instance.SelectedUnit.Remove(transform.GetComponent <PlayerMove>()); Ray ray = Camera.main.ScreenPointToRay(InputSpot()); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity)) { Debug.DrawRay(Camera.main.transform.position, hit.point - Camera.main.transform.position, Color.red); HitOb = hit.collider.gameObject; HitRS = HitOb.GetComponent <ResourceStatus>(); if (HitOb.layer == 26) // Resource { if (transform.tag != "UnitLego") { StopCoroutine("OrderRoutine"); } m_Animator.SetBool("IsMineral", false); yield return(StartCoroutine("Picking", hit.point)); transform.rotation = Quaternion.LookRotation(hit.transform.position - transform.position); unitState = UnitState.mineral; yield return(StartCoroutine("MineralRoutine")); } } } } else if (m_IsBoard) { if (IsInputRight() && TouchScript.m_Instance.IsOver) { //m_IsStartToMove = true; SelectUnitScript.m_Instance.StartCoroutine("SelectRoutine"); imgSelectbar.enabled = false; imgHpbar.enabled = false; SelectUnitScript.m_Instance.SelectedUnit.Remove(transform.GetComponent <PlayerMove>()); Ray ray = Camera.main.ScreenPointToRay(InputSpot()); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity)) { Debug.DrawRay(Camera.main.transform.position, hit.point - Camera.main.transform.position, Color.red); HitOb = hit.collider.gameObject; HitPM = HitOb.GetComponent <PlayerMove>(); if (HitOb.tag == "UnitAirballoon") // AirUnit { unitState = UnitState.walk; m_Animator.SetBool("IsAttack", false); m_Animator.SetBool("IsMineral", false); m_Animator.SetBool("IsBuild", false); StopCoroutine("AttackByBullet"); StopCoroutine("TraceRoutine"); yield return(StartCoroutine("Picking", HitOb.transform.position)); m_IsSelect = false; //yield return HitPM.StartCoroutine("Landing_TakeOff", false); m_Nav.enabled = false; transform.SetParent(HitPM.BalloonHeight, false); Vector3 UPos = Vector3.zero; Vector3 URot = Vector3.zero; Vector3 UScal = Vector3.one; UPos.x -= 5f; URot.z -= 90f; UScal *= 0.6f; transform.localPosition = UPos; transform.localRotation = Quaternion.Euler(URot); transform.localScale = UScal; //HitPM.m_IsFull = true; UnitFuncScript.m_Instance.IsAirUnitfull = true; //yield return HitPM.StartCoroutine("Landing_TakeOff", true); } } } } else if (m_IsAttack) { if (IsInputRight() || m_IsOffensive) { TargetPointFalse(); //m_IsStartToMove = true; //SelectUnitScript.m_Instance.StartCoroutine("SelectRoutine"); //if (transform.tag == "UnitLego" || transform.tag == "UnitClockMouse") //{ // m_IsSelect = false; // break; //} Ray ray = Camera.main.ScreenPointToRay(InputSpot()); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity) || m_IsOffensive) { Debug.DrawRay(Camera.main.transform.position, hit.point - Camera.main.transform.position, Color.red); //SelectUnitScript.m_Instance.SelectedUnit.Remove(transform.GetComponent<PlayerMove>()); HitOb = hit.collider.gameObject; UnitFuncScript.m_Instance.ClearFunc(); if ((HitOb.layer == 28 && !SelectUnitScript.m_Instance.IsUnitMyTeam(HitOb.GetComponent <PlayerMove>())) || m_IsOffensive) // Unit { m_IsPM = true; m_IsBS = false; if (m_IsOffensive) { hit.point = HitPM.gameObject.transform.position; goto offensive; } HitPM = HitOb.GetComponent <PlayerMove>(); offensive :; HitPM.m_IsSelect = false; HitPM.imgSelectbar.enabled = false; HitPM.m_Damage = m_Power; SelectUnitScript.m_Instance.SelectedUnit.Remove(HitPM); SelectUnitScript.m_Instance.SelectedUnit.Remove(transform.GetComponent <PlayerMove>()); unitState = UnitState.attack; yield return(StartCoroutine("Picking", hit.point)); switch (transform.tag) { case "UnitSoldier": { InvokeRepeating("AttackByBullet", 0f, 1.0f); //HitPM.StartCoroutine("DamageRoutine"); //StartCoroutine("AttackByBullet"); yield return(StartCoroutine("ConditionForAttack", "no")); CancelInvoke("AttackByBullet"); //StopCoroutine("AttackByBullet"); m_IsAttack = false; break; } case "UnitBear": { StartCoroutine("BearAttackRoutine"); yield return(StartCoroutine("ConditionForAttack", "no")); StopCoroutine("BearAttackRoutine"); m_IsAttack = false; break; } case "UnitDinosaur": { InvokeRepeating("AttackByFlare", 1.8f, 1.5f); yield return(StartCoroutine("ConditionForAttack", "no")); CancelInvoke("AttackByFlare"); m_IsAttack = false; break; } case "UnitRCcar": { CarAttakArea.gameObject.SetActive(true); yield return(StartCoroutine("ConditionForAttack", "no")); CarAttakArea.gameObject.SetActive(false); m_IsAttack = false; break; } default: break; } } else if (hit.transform.gameObject.layer == 27 && !SelectUnitScript.m_Instance.IsBuildingMyTeam(hit.transform.GetComponent <BuildingStatus>())) // Building { //NoticeScript.m_Instance.Notice("빌딩 타겟 완료\n"); m_IsPM = false; m_IsBS = true; HitBS = HitOb.GetComponent <BuildingStatus>(); HitBS.m_IsSelect = false; HitBS.imgSelectbar.enabled = false; HitBS.m_Damage = m_Power; unitState = UnitState.attack; yield return(StartCoroutine("Picking", hit.point)); transform.rotation = Quaternion.LookRotation(hit.transform.position - transform.position); m_Animator.SetBool("IsAttack", true); switch (transform.tag) { case "UnitSoldier": { yield return(StartCoroutine("ConditionForAttack", "AttackByBullet")); m_IsAttack = false; break; } case "UnitBear": { yield return(StartCoroutine("ConditionForAttack", "BearAttackRoutine")); m_IsAttack = false; break; } case "UnitDinosaur": { yield return(StartCoroutine("ConditionForAttack", "AttackByFlare")); break; } case "UnitRCcar": { CarAttakArea.gameObject.SetActive(true); yield return(StartCoroutine("ConditionForAttack", "AttackByCar")); CarAttakArea.gameObject.SetActive(false); m_IsAttack = false; break; } default: break; } } } } } else if (m_IsHeal) { imgSelectbar.enabled = false; imgHpbar.enabled = false; //SelectUnitScript.m_Instance.SelectedUnit.Remove(transform.GetComponent<PlayerMove>()); m_IsSelect = false; HealEffect.SetActive(true); yield return(StartCoroutine("HealRoutine")); HealEffect.SetActive(false); HealArea.gameObject.SetActive(false); m_IsSelect = false; } yield return(null); } }
IEnumerator SelectRoutine() { while (true) { Debug.Log("선택루틴 실행중"); //if(Input.GetMouseButton(0)) if (Input.touchCount == 1) { Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); //(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity, m_LMUnit) && TouchScript.m_Instance.IsOver) { SelectUnit(hit.transform); } //else if (Physics.Raycast(ray, out hit, Mathf.Infinity, m_LMFog)) //{ // Debug.Log(hit.transform.tag); // Debug.Log(hit.transform.gameObject.GetComponent<Renderer>().material.color.b); //} else if (Physics.Raycast(ray, out hit, Mathf.Infinity, m_LMBuilding) && TouchScript.m_Instance.IsOver && m_BuildOK.activeSelf == false) { AllSelectOff(); Bs = hit.transform.GetComponent <BuildingStatus>(); if (Bs.GetComponentInChildren <Renderer>().material.color == Color.red) { goto CannotOrder; } if (IsBuildingMyTeam(Bs)) { UnitStatusScript.m_Instance.m_IsMyTeam = true; UnitStatusScript.m_Instance.SetUnitImage(hit.transform, 0, Bs.imgHpbar); } else { UnitStatusScript.m_Instance.m_IsMyTeam = false; UnitStatusScript.m_Instance.SetUnitImage(hit.transform, 0, Bs.imgHpbar); } Bs.m_IsSelect = true; Bs.imgSelectbar.enabled = true; CannotOrder :; } else if (TouchScript.m_Instance.IsOver && !Physics.Raycast(ray, out hit, Mathf.Infinity, m_LMUnit) && !Physics.Raycast(ray, out hit, Mathf.Infinity, m_LMBuilding) && m_BuildOK.activeSelf == false) { AllSelectOff(); } } yield return(null); } }