Ejemplo n.º 1
0
    IEnumerator UpdateContentCoroutine(string questID, MBAQuestElement_Problem problem)
    {
        Content = transform.FindChild("Content").FindChild("Viewport").FindChild("Content").gameObject;
        Content.transform.localPosition = Vector3.zero;

        List <MBAQuestElement_CampItem> items  = new List <MBAQuestElement_CampItem>();
        List <MBAQuestElement_Stock>    stocks = new List <MBAQuestElement_Stock>();
        int blankCount = 0;
        MBAQuestElement_Choices choices_Temp = new MBAQuestElement_Choices(0.5f, -100, "x");

        GameObject Template_DDM         = Resources.Load <GameObject>("Prefab/Quest/MBAUIPanel_DDM");
        GameObject Template_DDMItem     = Resources.Load <GameObject>("Prefab/Quest/MBAUIPanel_DDMItem");
        GameObject Template_Help        = Resources.Load <GameObject>("Prefab/Quest/MBAUIPanel_ProblemHelp");
        GameObject Template_Text        = Resources.Load <GameObject>("Prefab/UI/Text");
        GameObject Template_InputField  = Resources.Load <GameObject>("Prefab/UI/InputField");
        GameObject Template_Image       = Resources.Load <GameObject>("Prefab/UI/Image");
        GameObject Template_Toggle      = Resources.Load <GameObject>("Prefab/UI/Toggle");
        GameObject Template_Table       = Resources.Load <GameObject>("Prefab/JW/Table/JWPanel_Table");
        GameObject Template_Chart       = Resources.Load <GameObject>("Prefab/JW/Chart/Panel_Chart");
        GameObject Template_Stock       = Resources.Load <GameObject>("Prefab/Quest/MBAUIPanel_Stock");
        GameObject Template_StockRecord = Resources.Load <GameObject>("Prefab/Quest/MBAUIPanel_StockRecord");

        int objNumber = 0;

        foreach (object obj in problem.Content)
        {
            Type objType = obj.GetType();
            switch (objType.Name)
            {
            case "MBAQuestElement_Help":
                if (FindObjectOfType <MBAProblem_Help>())
                {
                    break;
                }
                GameObject newHelp = JWInstantiateUnderParent_UI(Template_Help, gameObject, true, new Vector3(660, -50, 0));
                newHelp.GetComponent <MBAProblem_Help>().UpdateContent(questID, (MBAQuestElement_Help)obj);
                break;

            case "MBAQuestElement_Stock":
                MBAQuestElement_Stock stock = (MBAQuestElement_Stock)obj;
                stocks.Add(stock);
                break;

            case "MBAQuestElement_Blank":
                //    <blank rightanswer="500" length="5" x="0.5" y="-550"></blank>
                blankCount++;
                MBAQuestElement_Blank blank         = (MBAQuestElement_Blank)obj;
                GameObject            newInputField = JWInstantiateUnderParent_UI(Template_InputField, Content, "InputField", blankCount.ToString() + ".", true, CalculateLocalLocation(blank.Relative, blank.LocalPosition, Content), Vector3.one, Vector3.zero);
                newInputField.GetComponent <InputField>().onValueChanged.AddListener(delegate { UpdateSubmitAvailability(); });
                newInputField.GetComponent <MBAProblem_Blank>().RightAnswer = blank.RightAnswer;
                newInputField.GetComponent <MBAProblem_Blank>().Margin      = blank.Margin;
                newInputField.GetComponent <MBAProblem_Blank>().isTemplate  = false;
                foreach (Text text in newInputField.GetComponentsInChildren <Text>())
                {
                    //text.font = Resources.Load<Font>("Art/fonts/Belwe-Bold");
                    text.GetComponent <Text>().color = Color.black;
                }
                float blankWidth  = blank.Width > 0 ? blank.Width : newInputField.GetComponent <RectTransform>().rect.width;
                float blankHeight = blank.Height > 0 ? blank.Height : newInputField.GetComponent <RectTransform>().rect.height;
                newInputField.GetComponent <RectTransform>().sizeDelta = new Vector2(blankWidth, blankHeight);
                break;

            case "MBAQuestElement_Choices":
                UpdateElement_Choices((MBAQuestElement_Choices)obj, Template_Toggle);
                break;

            case "MBAQuestElement_Choice":
                if (choices_Temp.Content.Count <= 0 && objNumber > 0)
                {
                    MBAQuestElement lastElement = (MBAQuestElement)problem.Content[objNumber - 1];
                    choices_Temp = new MBAQuestElement_Choices(lastElement.LocalPosition.x, lastElement.LocalPosition.y - lastElement.Height / 2.0f - 50, lastElement.Relative);
                }
                choices_Temp.Content.Add((MBAQuestElement_Choice)obj);
                break;

            case "MBAQuestElement_Image":
                MBAQuestElement_Image img      = (MBAQuestElement_Image)obj;
                GameObject            newImage = JWInstantiateUnderParent_UI(Template_Image, Content, "Image", LoadSprite(img.Src, questID), true, CalculateLocalLocation(img.Relative, img.LocalPosition, Content), Vector3.one, Vector3.zero);
                float imgWidth  = img.Width > 0 ? img.Width : newImage.GetComponent <RectTransform>().rect.width;
                float imgHeight = img.Height > 0 ? img.Height : newImage.GetComponent <RectTransform>().rect.height;
                newImage.GetComponent <RectTransform>().sizeDelta = new Vector2(imgWidth, imgHeight);
                newImage.GetComponent <Image>().preserveAspect    = true;
                break;

            case "MBAQuestElement_Text":
                Template_Text.GetComponent <Text>().font               = Resources.Load <Font>("Art/fonts/Belwe-Bold");
                Template_Text.GetComponent <Text>().color              = Color.black;
                Template_Text.GetComponent <Text>().lineSpacing        = 1.5f;
                Template_Text.GetComponent <RectTransform>().sizeDelta = new Vector2(((MBAQuestElement)obj).Width, ((MBAQuestElement)obj).Height);
                JWInstantiateUnderParent_UI(Template_Text, Content, "Text", ((MBAQuestElement_Text)obj).Content, true, CalculateLocalLocation(((MBAQuestElement)obj).Relative, ((MBAQuestElement)obj).LocalPosition, Content), Vector3.one, Vector3.zero);
                break;

            case "MBAQuestElement_Camp":
                MBAQuestElement_Camp camp             = (MBAQuestElement_Camp)obj;
                GameObject           newPanelCamp_DDM = JWInstantiateUnderParent_UI(Template_DDM, Content, "Panel", "", true, CalculateLocalLocation(camp.Relative, camp.LocalPosition, Content), Vector3.one, Vector3.zero);
                newPanelCamp_DDM.GetComponent <MBAPanelDDM>().Side = "camp";
                newPanelCamp_DDM.name = camp.Name;
                newPanelCamp_DDM.transform.FindChild("Text_Name").GetComponent <Text>().text = camp.Name;
                float campWidth  = camp.Width > 0 ? camp.Width : newPanelCamp_DDM.GetComponent <RectTransform>().rect.width;
                float campHeight = camp.Height > 0 ? camp.Height : newPanelCamp_DDM.GetComponent <RectTransform>().rect.height;
                newPanelCamp_DDM.GetComponent <RectTransform>().sizeDelta = new Vector2(campWidth, campHeight);
                newPanelCamp_DDM.transform.FindChild("Content").GetComponent <RectTransform>().sizeDelta = new Vector2(campWidth, campHeight);

                MBAPanelDDM newMBAPanelDDM = newPanelCamp_DDM.GetComponent <MBAPanelDDM>();
                foreach (MBAQuestElement_CampItem item in camp.Items)
                {
                    items.Add(item);
                    newMBAPanelDDM.ExpectedItems.Add(item);
                }
                break;

            case "MBAQuestElement_Table":
                MBAQuestElement_Table table    = (MBAQuestElement_Table)obj;
                GameObject            newTable = JWInstantiateUnderParent_UI(Template_Table, Content, "Panel", "", true, CalculateLocalLocation(table.Relative, table.LocalPosition, Content), Vector3.one, Vector3.zero);
                float tableWidth  = table.Width > 0 ? table.Width : newTable.GetComponent <RectTransform>().rect.width;
                float tableHeight = table.Height > 0 ? table.Height : newTable.GetComponent <RectTransform>().rect.height;
                newTable.GetComponent <RectTransform>().sizeDelta = new Vector2(tableWidth, tableHeight);
                //Template_Table
                newTable.GetComponent <JWPanel_Table>().UpdateContent(table);
                break;

            case "MBAQuestElement_Chart":
                MBAQuestElement_Chart chart    = (MBAQuestElement_Chart)obj;
                GameObject            newChart = JWInstantiateUnderParent_UI(Template_Chart, Content, "Panel", "", true, CalculateLocalLocation(chart.Relative, chart.LocalPosition, Content), Vector3.one, Vector3.zero);
                newChart.GetComponent <JWPanel_Chart>().UpdateChart(chart);
                break;

            case "MBAQuestElement_Solution":
                solution = (MBAQuestElement_Solution)obj;
                break;
            }
            objNumber++;
        }

        //UpdateChoices
        UpdateElement_Choices(choices_Temp, Template_Toggle);

        //instantiate stock panel
        if (stocks.Count > 0)
        {
            ToggleDowntownAndSkipButtons(false);
            GameObject newPanel_Stock = JWInstantiateUnderParent(Template_Stock, Content, CalculateLocalLocation(problem.Relative, new Vector2(0.5f, -200), Content));
            int        i = 0;
            foreach (MBAQuestElement_Stock stock in stocks)
            {
                GameObject newStockRecord = JWInstantiateUnderParent(Template_StockRecord, newPanel_Stock, new Vector3(0, 100 - 40 * i, 0));
                newStockRecord.transform.FindChild("Text_StockName").GetComponent <Text>().text = stock.Name;
                newStockRecord.transform.FindChild("Text_OldPrice").GetComponent <Text>().text  = (stock.Oldprice).ToString();
                newStockRecord.transform.FindChild("Text_NewPrice").GetComponent <Text>().text  = (stock.Newprice).ToString();
                newStockRecord.GetComponent <MBAUIPanel_StockRecord>().Why       = stock.Why;
                newStockRecord.GetComponent <MBAUIPanel_StockRecord>().Price_Old = stock.Oldprice;
                newStockRecord.GetComponent <MBAUIPanel_StockRecord>().Price_New = stock.Newprice;

                Text text_NewPrice = newStockRecord.transform.FindChild("Text_NewPrice").GetComponent <Text>();
                text_NewPrice.color = new Color(text_NewPrice.color.r, text_NewPrice.color.g, text_NewPrice.color.b, 0);
                Button button_Why = newStockRecord.transform.FindChild("Text_NewPrice").GetComponentInChildren <Button>();
                if (button_Why != null)
                {
                    button_Why.interactable = false;
                    Image image_ButtonWhy = button_Why.GetComponent <Image>();
                    image_ButtonWhy.color = new Color(image_ButtonWhy.color.r, image_ButtonWhy.color.g, image_ButtonWhy.color.b, 0);
                }

                newStockRecord.GetComponent <MBAUIPanel_StockRecord>().ShouldBuy = stock.ShouldBuy;

                i++;
            }
        }

        //Instantiate DDM Pool
        if (items.Count > 0)
        {
            GameObject newPanelPool_DDM = JWInstantiateUnderParent(Template_DDM, Content, CalculateLocalLocation(problem.Relative, problem.LocalPosition, Content));
            newPanelPool_DDM.GetComponent <MBAPanelDDM>().Side = "pool";
            newPanelPool_DDM.name = problem.Name;
            newPanelPool_DDM.transform.FindChild("Text_Name").GetComponent <Text>().text = problem.Name;
            newPanelPool_DDM.GetComponent <RectTransform>().sizeDelta = new Vector2(problem.Width_Pool, 0);

            int itemsCount = items.Count;
            for (int i = 0; i < itemsCount; i++)
            {
                yield return(new WaitForSeconds(0.1f));

                int rand = UnityEngine.Random.Range(0, items.Count);
                MBAQuestElement_CampItem item = items[rand];

                GameObject newItem = JWInstantiateUnderParent(Template_DDMItem, Content, Vector3.zero);
                newItem.GetComponentInChildren <Text>().text = item.Text;
                if (item.Img == "")
                {
                    Color itemColor = newItem.GetComponent <Image>().color;
                    newItem.GetComponent <Image>().color = new Color(itemColor.r, itemColor.g, itemColor.b, 0);
                }
                else
                {
                    Color itemColor = newItem.GetComponent <Image>().color;
                    newItem.GetComponent <Image>().color          = new Color(itemColor.r, itemColor.g, itemColor.b, 1);
                    newItem.GetComponent <Image>().sprite         = LoadSprite(item.Img);
                    newItem.GetComponent <Image>().preserveAspect = true;
                }
                Transform content_Pool = newPanelPool_DDM.transform.FindChild("Content");
                content_Pool.GetComponent <RectTransform>().sizeDelta = new Vector2(problem.Width_Pool, 0);
                newItem.transform.SetParent(content_Pool);

                items.RemoveAt(rand);
            }
        }
        Content.GetComponent <JWUI>().AutoSize(Content.GetComponent <RectTransform>().rect.width, problem.Height, 0, 100);
    }
Ejemplo n.º 2
0
 public void UpdateContent(string questID, MBAQuestElement_Problem problem)
 {
     StartCoroutine(UpdateContentCoroutine(questID, problem));
 }