Exemplo n.º 1
0
    public void ShowDescription(BuildingInformation buildingInfo)
    {
        if (buildingInfo == null)
        {
            return;
        }
        currentInfo = buildingInfo;
        List <string> materialsInfo = BackpackManager.Instance.GetMaterialsInfo(buildingInfo.Materials).ToList();
        string        materials     = string.Empty;
        int           lineCount     = materialsInfo.Count;

        for (int i = 0; i < materialsInfo.Count; i++)
        {
            string endLine = i == lineCount - 1 ? string.Empty : "\n";
            materials += materialsInfo[i] + endLine;
        }
        UI.nameText.text       = buildingInfo.Name;
        UI.desciptionText.text = string.Format("<b>描述</b>\n{0}\n<b>耗时: </b>{1}\n<b>建造材料:{2}</b>\n{3}",
                                               buildingInfo.Description,
                                               buildingInfo.BuildTime > 0 ? buildingInfo.BuildTime.ToString("F2") + 's' : "立即",
                                               BackpackManager.Instance.IsMaterialsEnough(buildingInfo.Materials) ? "<color=green>(可建造)</color>" : "<color=red>(耗材不足)</color>",
                                               materials);
        UI.descriptionWindow.alpha          = 1;
        UI.descriptionWindow.blocksRaycasts = false;
    }
Exemplo n.º 2
0
 public void ShowBuiltList(BuildingInformation buildingInfo)
 {
     this.buildings.TryGetValue(buildingInfo, out var buildings);
     if (buildings == null || buildings.Count < 1)
     {
         HideBuiltList();
         return;
     }
     while (buildings.Count > buildingAgents.Count)
     {
         BuildingAgent ba = ObjectPool.Get(UI.buildingCellPrefab, UI.buildingCellsParent).GetComponent <BuildingAgent>();
         ba.Hide();
         buildingAgents.Add(ba);
     }
     while (buildings.Count < buildingAgents.Count)
     {
         buildingAgents[buildingAgents.Count - 1].Clear(true);
         buildingAgents.RemoveAt(buildingAgents.Count - 1);
     }
     for (int i = 0; i < buildings.Count; i++)
     {
         buildingAgents[i].Init(buildings[i]);
         buildingAgents[i].Show();
     }
     UI.listWindow.alpha          = 1;
     UI.listWindow.blocksRaycasts = true;
 }
Exemplo n.º 3
0
    /// <summary>
    /// 1. Detects touch on screen
    /// 2. If User clicks on building go to database
    /// </summary>
    private void DetectObjets()
    {
        if (Input.touchCount > 0)
        {
            Touch touch = Input.GetTouch(0);

            if (touch.phase == TouchPhase.Began)
            {
                RaycastHit hitObject;
                Ray        ray = arCamera.ScreenPointToRay(touch.position);
                if (Physics.Raycast(ray, out hitObject))
                {
                    if (hitObject.transform.CompareTag("Building"))
                    {
                        buildingPosition           = hitObject.transform;
                        currentBuildingInformation = hitObject.transform.GetComponent <BuildingInformation>();

                        currentID   = currentBuildingInformation.id.ToString();
                        currentType = currentBuildingInformation.type;

                        StartCoroutine(GetInformation());
                    }
                }
            }
        }
    }
Exemplo n.º 4
0
 public void LoadData(BuildingSystemData buildingSystemData)
 {
     buildingsLearned.Clear();
     BuildingInformation[] buildingInfos = Resources.LoadAll <BuildingInformation>("");
     foreach (string learned in buildingSystemData.learneds)
     {
         BuildingInformation find = Array.Find(buildingInfos, x => x.IDStarter == learned);
         if (find)
         {
             buildingsLearned.Add(find);
         }
     }
     foreach (BuildingData buildingData in buildingSystemData.buildingDatas)
     {
         BuildingInformation find = Array.Find(buildingInfos, x => x.IDStarter == buildingData.IDStarter);
         if (find)
         {
             Building building = Instantiate(find.Prefab);
             building.LoadBuild(buildingData.IDStarter, buildingData.IDTail, find.Name, buildingData.leftBuildTime,
                                new Vector3(buildingData.posX, buildingData.posY, buildingData.posZ));
             var bf = ObjectPool.Get(UI.buildingFlagPrefab, UIManager.Instance.BuildingFlagParent).GetComponent <BuildingFlag>();
             bf.Init(building);
         }
     }
     AStarManager.Instance.UpdateGraphs();
 }
 public virtual void Awake()
 {
     bi = this.gameObject.GetComponent<BuildingInformation>();
     nsb = this.gameObject.GetComponent<NormalStateBuild>();
     playerInfo = GameObject.Find("GameContent").GetComponent<PlayerInformation>();
     adjustTimeBaseOnLevel();
 }
Exemplo n.º 6
0
 public void Clear(bool recycle = false)
 {
     nameText.text = string.Empty;
     MBuildingInfo = null;
     if (recycle)
     {
         ObjectPool.Put(gameObject);
     }
 }
Exemplo n.º 7
0
 public bool StarBuild(BuildingInformation buildingInfo, Vector3 position)
 {
     if (!buildingInfo)
     {
         return(false);
     }
     transform.position = position;
     MBuildingInfo      = buildingInfo;
     IDStarter          = MBuildingInfo.IDStarter;
     name          = MBuildingInfo.Name;
     leftBuildTime = MBuildingInfo.BuildTime;
     if (buildingAgent)
     {
         buildingAgent.UpdateUI();
     }
     GetIDTail();
     if (string.IsNullOrEmpty(IDTail))
     {
         MessageManager.Instance.New($"[{name}]已经达到最大建设数量");
         if (buildingAgent)
         {
             buildingAgent.Clear(true);
         }
         Destroy(gameObject);
         return(false);
     }
     foreach (var b in GetComponentsInChildren <Behaviour>())
     {
         var c2d = b as Collider2D;
         if (c2d && !c2d.isTrigger)
         {
             continue;
         }
         components.Add(b, b.enabled);
         if (b != this)
         {
             b.enabled = false;
         }
     }
     foreach (var c in GetComponentsInChildren <Collider>())
     {
         if (!c.isTrigger)
         {
             continue;
         }
         colliders.Add(c, c.enabled);
         c.enabled = false;
     }
     isUnderBuilding = true;
     StartCoroutine(Build());
     return(true);
 }
Exemplo n.º 8
0
    public void FinishPreview()
    {
        if (preview)
        {
            Destroy(preview.gameObject);
        }
        preview     = null;
        currentInfo = null;
        WindowsManager.Instance.PauseAll(false);
        IsPreviewing = false;
#if UNITY_ANDROID
        ZetanUtility.SetActive(CancelArea, false);
        UIManager.Instance.EnableJoyStick(true);
#endif
    }
Exemplo n.º 9
0
 public bool Learn(BuildingInformation buildingInfo)
 {
     if (!buildingInfo)
     {
         return(false);
     }
     if (HadLearned(buildingInfo))
     {
         ConfirmManager.Instance.New("这种设施已经学会建造。");
         return(false);
     }
     buildingsLearned.Add(buildingInfo);
     ConfirmManager.Instance.New(string.Format("学会了 [{0}] 的建造方法!", buildingInfo.Name));
     return(true);
 }
Exemplo n.º 10
0
    public void CreatPreview(BuildingInformation info)
    {
        if (info == null)
        {
            return;
        }
        HideDescription();
        HideBuiltList();
        currentInfo = info;
        preview     = Instantiate(currentInfo.Preview);
        WindowsManager.Instance.PauseAll(true);
        IsPreviewing = true;
#if UNITY_ANDROID
        ZetanUtility.SetActive(CancelArea, true);
        UIManager.Instance.EnableJoyStick(false);
#endif
        ShowAndMovePreview();
    }
Exemplo n.º 11
0
        private static MvcHtmlString Details(BuildingInformation building, string url, string name)
        {
            var imagePath = "";

            if (building.Assets == null || building.Assets.Count == 0)
            {
                imagePath = "/images/no_thumbnail.jpg"; //default
            }
            else
            {
                imagePath = building.Assets.FirstOrDefault().Url;
            }

            StringBuilder thumbnail = new StringBuilder();

            //thumbnail.Append("<div class='item col-lg-3 col-md-4 col-xs-6 thumb'>");
            thumbnail.Append("<div class='item col-xs-4 col-lg-4'>");
            thumbnail.Append(string.Concat("<div class='thumbnail'><a href='", url, "'>"));
            thumbnail.Append(string.Concat("<img class='img-responsive' src='", imagePath, "' alt=''>"));
            thumbnail.Append("</a>");

            thumbnail.Append(string.Concat("<div class='caption'><h4 class='group inner list-group-item-heading building-name'><a href='", url, "'>", name, "</a></h4></br>"));

            //get the addresses strings
            if (building.Addresses != null && building.Addresses.Count > 0)
            {
                var cnt = 1;
                foreach (var address in building.Addresses)
                {
                    if (address != null)
                    {
                        //thumbnail.Append(string.Concat("<label>Location ", cnt, ": ", address.City, " ", address.StreetNumber, "</label></br>"));
                        thumbnail.Append(string.Concat("<p class='group inner list-group-item-text'>"));
                        thumbnail.Append(string.Concat("<div class='building-description'></div>"));
                        thumbnail.Append(string.Concat("<label>Location ", cnt, ": ", address.City, " ", address.Address1, "</label></br>"));
                        cnt++;
                    }
                }
            }

            thumbnail.Append("</div></div></div>");
            return(new MvcHtmlString(thumbnail.ToString()));
        }
Exemplo n.º 12
0
 // Use this for initialization
 public virtual void Awake()
 {
     playerInfo = GameObject.Find("GameContent").GetComponent<PlayerInformation>();
     bi = this.GetComponent<BuildingInformation>();
 }
Exemplo n.º 13
0
 public bool HadLearned(BuildingInformation buildingInfo)
 {
     return(buildingsLearned.Contains(buildingInfo));
 }
Exemplo n.º 14
0
        public ActionResult BMBuildingsPage(RenderModel model)
        {
            BuildingsViewModel buildingsViewModel = new BuildingsViewModel(model.Content);

            var buildings = CurrentPage.Children
                            .Where(x => x.DocumentTypeAlias.Equals(Constants.BUILDING_DOCUMENTTYPE_ALIAS, StringComparison.OrdinalIgnoreCase))
                            .Where(x => x.IsPropertyValid(Constants.ACTION_ITEM_ALIAS))
                            .Where(x => !Boolean.Parse(x.GetValidPropertyValue(Constants.ACTION_ITEM_ALIAS).ToString()));

            if (buildings != null)
            {
                //get building with correctly set building property
                foreach (var bldg in buildings.Where(b => b.IsPropertyValid(Constants.BUILDING_PROPERTY_ALIAS)))
                {
                    try
                    {
                        int buildingId = -1;
                        int.TryParse(bldg.GetValidPropertyValue(Constants.BUILDING_PROPERTY_ALIAS).ToString(), out buildingId);
                        if (buildingId > -1)
                        {
                            //check if actual building object from db exists
                            var building = _buildingService.GetBuildingById(buildingId);
                            if (building != null)
                            {
                                //TODO: or better get from property 'description' in content node
                                var buildingInfo = BuildingInformation.CreateModel(
                                    building.Id,
                                    building.Name,
                                    building.Description
                                    );
                                buildingInfo.Name        = building.Name;
                                buildingInfo.Description = building.Description; //TODO: or better get from property in content node

                                IAsset defaultMediaAsset = MediaManager.GetDefaultBuildingAsset(buildingId);
                                if (defaultMediaAsset != null)
                                {
                                    buildingInfo.SetDefaultAsset(defaultMediaAsset);
                                }


                                //TODO: wrap this on an address manager
                                var addresses = _buildingService.GetAddresses(building);
                                if (addresses != null && addresses.Count > 0)
                                {
                                    buildingInfo.Addresses = addresses;
                                }
                                //================================

                                buildingsViewModel.Buildings.Add(buildingInfo);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        LogHelper.Error <BMBuildingListingController>(ex.Message, ex);
                        continue;
                    }
                }
            }

            return(CurrentTemplate(buildingsViewModel));
        }
Exemplo n.º 15
0
 void Awake()
 {
     bi = this.GetComponent<BuildingInformation>();
     sc = GameObject.Find("StateController").GetComponent<StateController>();
 }
Exemplo n.º 16
0
 // Use this for initialization
 void Start()
 {
     bi = GetComponent<BuildingInformation>();
     stateControl = GameObject.Find("StateController").GetComponent<StateController>();
 }
Exemplo n.º 17
0
 public void Init(BuildingInformation buildingInfo, ScrollRect parentRect = null)
 {
     MBuildingInfo   = buildingInfo;
     nameText.text   = buildingInfo.Name;
     this.parentRect = parentRect;
 }