示例#1
0
    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);
     }
 }
示例#3
0
    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);
            }
        }
    }
示例#5
0
    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;
        }
    }
示例#6
0
 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);
     }
 }
示例#7
0
    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);
        }
    }
示例#8
0
 protected override void Start()
 {
     base.Start();
     mainCamera       = Camera.main;
     status           = BuildingStatus.None;
     animationActions = GetComponent <EngineerActions>();
     animationActions.Stay();
     GetComponent <EngineerController>().SetArsenal("OneHand");
 }
示例#9
0
    public void ConstructBuilding()
    {
        BuildingStatus status = PlayerBuilding.Instance.GetBuildingStatus(currentData.BuildingCode);

        status.Grade = selectedGrade;

        currentBuilder.CreateNewBuilding(status.BuildingCode);
        UpgradePanel.ClosePanel();
    }
示例#10
0
 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;
     }
 }
示例#11
0
    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);
    }
示例#13
0
 /// <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();
 }
示例#14
0
 /// <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));
 }
示例#15
0
 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;
 }
示例#17
0
    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>();
    }
示例#18
0
 /// <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;
 }
示例#20
0
    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);
        }
    }
示例#21
0
    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);
                 }
             }
         }
     }
 }
示例#23
0
    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);
        }
    }
示例#25
0
 // Captures the given amount of power for use by the given object
 public void CapturePower(BuildingStatus suppliable, int amount)
 {
     PowerUsers.Add(suppliable, amount);
 }
示例#26
0
 // Releases any power captured by the given object
 public void ReleasePower(BuildingStatus suppliable)
 {
     PowerUsers.Remove(suppliable);
 }
示例#27
0
    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();
            }
        }
    }
示例#28
0
    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();
    }
示例#29
0
 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();
     }
 }
示例#30
0
    //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);
 }
示例#32
0
    protected override void Awake()
    {
        base.Awake();

        BuildingStatus = gameObject.AddComponent<BuildingStatus>();
        gameObject.AddComponent<Vision>().visionRange = 2;
        FinishedBuildingCreatable = finishedBuilding.GetComponent<CreatableBuilding>();
    }
示例#33
0
    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);
        }
    }