void Start()
    {
        Templates.getInstance();
        GameStorage.getInstance();

        //TEST
        //PlayerPrefs.DeleteAll();
        //TEST END

        mainMenu = GameObject.Find("main_panel");
        helpMenu = GameObject.Find("help_panel");
        helpMenu.SetActive(false);
        plotMenu = GameObject.Find("plot_panel");
        plotMenu.SetActive(false);

        rank_img  = GameObject.Find("rank_img");
        rank_text = GameObject.Find("rank_text");

        start_but         = GameObject.Find("start_but");
        missionsContainer = GameObject.Find("missions_container");
        descriptionPanel  = GameObject.Find("description_panel");
        missionsMenu      = GameObject.Find("missions_panel");
        missionsMenu.SetActive(false);

        campaignsContent = GameObject.Find("campaigns_content");
        campaignsMenu    = GameObject.Find("campaigns_panel");
        foreach (Templates.CampaignInfo camp in Templates.getInstance().campaignsList)
        {
            companyPanelTmp = (GameObject)Instantiate(Resources.Load("prefab/gui/company_panel"), Vector3.zero, Quaternion.identity);
            companyPanelTmp.transform.SetParent(campaignsContent.transform);
            companyPanelTmp.transform.localScale = new Vector3(1, 1, 1);
            ((UnityEngine.UI.Text)companyPanelTmp.GetComponentsInChildren <UnityEngine.UI.Text>()[0]).text = camp.name;
            ((UnityEngine.UI.Text)companyPanelTmp.GetComponentsInChildren <UnityEngine.UI.Text>()[1]).text = camp.desc;
            buttonTmp = companyPanelTmp.GetComponent <UnityEngine.UI.Button>();
            Templates.CampaignInfo cap = camp;
            buttonTmp.onClick.AddListener(() => {
                selectCampaign(cap);
            });
        }
        campaignsMenu.SetActive(false);
    }
Beispiel #2
0
    void OnGUI()
    {
        if(GameStorage.getInstance().allReady)
        {
            Templates.getInstance().menu_button.button.fontSize=Templates.ResolutionProblems.getMainMenuFontSize(Screen.width);
            Templates.getInstance().menu_button.button.padding=new RectOffset(0,0,Templates.ResolutionProblems.getMainMenuPaddingTop(Screen.width),0);

            GUI.Label(new Rect(0,0,100,20),Screen.width+"x"+Screen.height);
            resWs = GUI.TextField(new Rect(0,20,50,20),resWs,4);
            resHs = GUI.TextField(new Rect(50,20,50,20),resHs,4);
            if(GUI.Button(new Rect(100,20,50,20),"GO"))
            {
                int resW,resH;
                resW=int.Parse(resWs);
                resH=int.Parse(resHs);
                Screen.SetResolution(resW,resH,true,60);
                Templates.getInstance().reloadIcons();
                Debug.Log("Graphics reloaded");
            }

            if(campaignMenu)
            {
                GUI.Box(new Rect(0,0,Screen.width,Screen.height),"",Templates.getInstance().campaigns_bg.box);
                GUI.Box(new Rect(0,Screen.height*0.07f,Screen.width,Screen.height*0.85f),"",Templates.getInstance().mission_bg.box);

                if(GUI.Button(new Rect(Screen.width*0.06f,Screen.height-Templates.ResolutionProblems.getCompanyPanelBackButtonH(Screen.height)-10,Templates.ResolutionProblems.getCompanyPanelBackButtonW(Screen.width),Templates.ResolutionProblems.getCompanyPanelBackButtonH(Screen.height)),"",Templates.getInstance().company_panel_hover.button))
                    switchMenu(GuiCategories.MainMenu);

                ArrayList camp = Templates.getInstance().getCampaigns();
                int i=0,fi=-1;
                Templates.getInstance().company_panel_hover.box.fontSize=Templates.ResolutionProblems.getCompanyPanelFontSize(Screen.width);
                Templates.getInstance().company_panel.box.fontSize=Templates.ResolutionProblems.getCompanyPanelFontSize(Screen.width);
                Templates.getInstance().company_panel.label.fontSize=Templates.ResolutionProblems.getCompanyPanelLabelFontSize(Screen.width);

                for(i=0;i<3;i++)
                {
                    if(Input.mousePosition.x >= Screen.width*0.028f &&
                       Input.mousePosition.x <= Screen.width*0.028f+Screen.width*0.65f &&
                       Screen.height-Input.mousePosition.y >= Screen.height*0.12f+(Templates.ResolutionProblems.getCompanyPanelH(Screen.height)-Templates.ResolutionProblems.getCompanyPanelOffset(Screen.height))*i &&
                       Screen.height-Input.mousePosition.y <= Screen.height*0.12f+(Templates.ResolutionProblems.getCompanyPanelH(Screen.height)-Templates.ResolutionProblems.getCompanyPanelOffset(Screen.height))*i +Templates.ResolutionProblems.getCompanyPanelH(Screen.height)-Templates.ResolutionProblems.getCompanyPanelOffset(Screen.height))
                        fi=i;
                }
                i=0;

                foreach(Templates.CampaignInfo c in camp)
                {
                    if(fi==i)
                        GUI.Box(new Rect(Screen.width*0.028f,Screen.height*0.12f+(Templates.ResolutionProblems.getCompanyPanelH(Screen.height)-Templates.ResolutionProblems.getCompanyPanelOffset(Screen.height))*i,Screen.width*0.65f,Templates.ResolutionProblems.getCompanyPanelH(Screen.height)),((Templates.CampaignInfo)c).name,Templates.getInstance().company_panel_hover.box);
                    else
                        GUI.Box(new Rect(Screen.width*0.028f,Screen.height*0.12f+(Templates.ResolutionProblems.getCompanyPanelH(Screen.height)-Templates.ResolutionProblems.getCompanyPanelOffset(Screen.height))*i,Screen.width*0.65f,Templates.ResolutionProblems.getCompanyPanelH(Screen.height)),((Templates.CampaignInfo)c).name,Templates.getInstance().company_panel.box);

                    GUI.Label(new Rect(Screen.width*0.13f,Screen.height*0.2f+(Templates.ResolutionProblems.getCompanyPanelH(Screen.height)-Templates.ResolutionProblems.getCompanyPanelOffset(Screen.height))*i,Screen.width*0.5f,Templates.ResolutionProblems.getCompanyPanelH(Screen.height)),((Templates.CampaignInfo)c).desc,Templates.getInstance().company_panel.label);
                    if(GUI.Button(new Rect(Screen.width*0.028f,Screen.height*0.12f+(Templates.ResolutionProblems.getCompanyPanelH(Screen.height)-Templates.ResolutionProblems.getCompanyPanelOffset(Screen.height))*i,Screen.width*0.65f,Templates.ResolutionProblems.getCompanyPanelH(Screen.height)-Templates.ResolutionProblems.getCompanyPanelOffset(Screen.height)),"",Templates.getInstance().company_panel.button))
                    {
                        selectedCampaign=(Templates.CampaignInfo)c;
                        switchMenu(GuiCategories.LevelsMenu);
                    }
                    i++;
                }

            }

            if(levelsMenu)
            {
                GUI.Box(new Rect(0,0,Screen.width,Screen.height),"",Templates.getInstance().campaigns_bg.box);
                GUI.Box(new Rect(0,Screen.height*0.07f,Screen.width,Screen.height*0.85f),"",Templates.getInstance().mission_bg.box);

                startPosition=Templates.ResolutionProblems.getLevelsStartPosition(Screen.width);

                STAR_X_OFFSET=Templates.ResolutionProblems.getLevelsStarOffsetX(Screen.width);
                STAR_Y_OFFSET=Templates.ResolutionProblems.getLevelsStarOffsetY(Screen.width);
                THIRDSTAR_Y_OFFSET=Templates.ResolutionProblems.getLevelsThirdstarOffsetY(Screen.width);

                NUMBER_OFFSET_X=Templates.ResolutionProblems.getLevelsNumberOffsetX(Screen.width);
                NUMBER_OFFSET_Y=Templates.ResolutionProblems.getLevelsNumberOffsetY(Screen.width);

                if(GUI.Button(new Rect(5,5,100,20),"full"))
                {
                    for(int j=0;j<Templates.getInstance().getAllLevels().Count;j++)
                        PlayerPrefs.SetInt("level"+(j+1)+"Stars",3);
                }

                if(GUI.Button(new Rect(20,Screen.height-40,100,20),"Back"))
                    switchMenu(GuiCategories.CampaignMenu);

                string current_rank="";
                int currentRankId=PlayerPrefs.GetInt("currentRankId"+MainMenuGui.selectedCampaign.id,-1);
                if(currentRankId==-1)
                    current_rank=selectedCampaign.defaultRank;
                else
                    current_rank=Templates.getInstance().getRank(currentRankId).name;
                GUI.Label(new Rect(Screen.width-5-200,10,200,50),"Current Rank: "+current_rank);

                if(GUI.Button(new Rect(110,5,100,20),"null"))
                {
                    PlayerPrefs.DeleteAll();
                }

                levels=selectedCampaign.levels;
                Templates.LevelInfo lv;
                int i=0,k;
                bool aa=true;

                GUI.skin=Templates.getInstance().none_scroll_skin;
                scrollPos = GUI.BeginScrollView(new Rect(Screen.width*0.07f,startPosition,Screen.width*0.63f,Screen.height),scrollPos,new Rect(0,startPosition,startPosition+Templates.ResolutionProblems.getLevelButtonStartW(Screen.width)/2*levels.Count+Templates.ResolutionProblems.getLevelButtonStartW(Screen.width)/2+startPosition,Screen.height-2*startPosition));
                scrollPos+=new Vector2(mouseXDiff/400,0);

                levelButtonSize=Templates.ResolutionProblems.getLevelsButtonSize(Screen.width);

                foreach(int l in levels)
                {
                    if(i!=levelSelected) GUI.skin=Templates.getInstance().button_level; else GUI.skin=Templates.getInstance().button_level_selected;
                    lv=Templates.getInstance().getLevel(l);
                    float[] pos = calculateLevelPosition(i);
                    k = PlayerPrefs.GetInt("level"+lv.num+"Stars",0);

                    if(k==0)
                    {
                        if(aa)
                        {

                            if(i!=levelSelected)
                            {
                                if(GUI.Button(new Rect(pos[1],pos[0],levelButtonSize,levelButtonSize),""))
                                levelSelected=i;

                                GUISkin[] skins = Templates.getInstance().getNumberIcons(i+1,false);
                                GUISkin sk = GUI.skin;
                                GUI.skin=skins[0];
                                GUI.Label(new Rect(pos[1]+levelButtonSize/2-Templates.ResolutionProblems.getLevelsNumberW(Screen.width)/2-NUMBER_OFFSET_X,pos[0]+NUMBER_OFFSET_Y,Templates.ResolutionProblems.getLevelsNumberW(Screen.width),Templates.ResolutionProblems.getLevelsNumberH(Screen.width)),"");
                                GUI.skin=skins[1];
                                GUI.Label(new Rect(pos[1]+levelButtonSize/2-Templates.ResolutionProblems.getLevelsNumberW(Screen.width)/2+NUMBER_OFFSET_X,pos[0]+NUMBER_OFFSET_Y,Templates.ResolutionProblems.getLevelsNumberW(Screen.width),Templates.ResolutionProblems.getLevelsNumberH(Screen.width)),"");
                                GUI.skin=sk;

                                aa=false;
                            }
                            else
                            {
                                if(GUI.Button(new Rect(pos[1],pos[0],levelButtonSize,levelButtonSize),""))
                                {
                                    playedLevelIndex=levelSelected;
                                    GameStorage.getInstance().LoadLevel(Templates.getInstance().getLevel((int)levels[levelSelected]),true);
                                }
                                GUISkin[] skins = Templates.getInstance().getNumberIcons(i+1,false);
                                GUISkin sk = GUI.skin;
                                GUI.skin=skins[0];
                                GUI.Label(new Rect(pos[1]+levelButtonSize/2-Templates.ResolutionProblems.getLevelsNumberW(Screen.width)/2-NUMBER_OFFSET_X,pos[0]+NUMBER_OFFSET_Y,Templates.ResolutionProblems.getLevelsNumberW(Screen.width),Templates.ResolutionProblems.getLevelsNumberH(Screen.width)),"");
                                GUI.skin=skins[1];
                                GUI.Label(new Rect(pos[1]+levelButtonSize/2-Templates.ResolutionProblems.getLevelsNumberW(Screen.width)/2+NUMBER_OFFSET_X,pos[0]+NUMBER_OFFSET_Y,Templates.ResolutionProblems.getLevelsNumberW(Screen.width),Templates.ResolutionProblems.getLevelsNumberH(Screen.width)),"");
                                GUI.skin=sk;

                                aa=false;
                            }
                        }
                        else
                        {

                            GUI.Button(new Rect(pos[1],pos[0],levelButtonSize,levelButtonSize),"",Templates.getInstance().button_level_grey.button);
                            GUISkin[] skins = Templates.getInstance().getNumberIcons(i+1,true);
                            GUISkin sk = GUI.skin;
                            GUI.skin=skins[0];
                            GUI.Label(new Rect(pos[1]+levelButtonSize/2-Templates.ResolutionProblems.getLevelsNumberW(Screen.width)/2-NUMBER_OFFSET_X,pos[0]+NUMBER_OFFSET_Y,Templates.ResolutionProblems.getLevelsNumberW(Screen.width),Templates.ResolutionProblems.getLevelsNumberH(Screen.width)),"");
                            GUI.skin=skins[1];
                            GUI.Label(new Rect(pos[1]+levelButtonSize/2-Templates.ResolutionProblems.getLevelsNumberW(Screen.width)/2+NUMBER_OFFSET_X,pos[0]+NUMBER_OFFSET_Y,Templates.ResolutionProblems.getLevelsNumberW(Screen.width),Templates.ResolutionProblems.getLevelsNumberH(Screen.width)),"");
                            GUI.skin=sk;
                        }
                    }
                    else
                    {

                        if(i!=levelSelected)
                        {
                            if(GUI.Button(new Rect(pos[1],pos[0],levelButtonSize,levelButtonSize),""))
                                levelSelected=i;

                            GUISkin[] skins = Templates.getInstance().getNumberIcons(i+1,false);
                            GUISkin sk = GUI.skin;
                            GUI.skin=skins[0];
                            GUI.Label(new Rect(pos[1]+levelButtonSize/2-Templates.ResolutionProblems.getLevelsNumberW(Screen.width)/2-NUMBER_OFFSET_X,pos[0]+NUMBER_OFFSET_Y,Templates.ResolutionProblems.getLevelsNumberW(Screen.width),Templates.ResolutionProblems.getLevelsNumberH(Screen.width)),"");
                            GUI.skin=skins[1];
                            GUI.Label(new Rect(pos[1]+levelButtonSize/2-Templates.ResolutionProblems.getLevelsNumberW(Screen.width)/2+NUMBER_OFFSET_X,pos[0]+NUMBER_OFFSET_Y,Templates.ResolutionProblems.getLevelsNumberW(Screen.width),Templates.ResolutionProblems.getLevelsNumberH(Screen.width)),"");
                            GUI.skin=sk;
                        }
                        else
                        {
                            if(GUI.Button(new Rect(pos[1],pos[0],levelButtonSize,levelButtonSize),""))
                            {
                                playedLevelIndex=levelSelected;
                                GameStorage.getInstance().LoadLevel(Templates.getInstance().getLevel((int)levels[levelSelected]),true);
                            }
                            GUISkin[] skins = Templates.getInstance().getNumberIcons(i+1,false);
                            GUISkin sk = GUI.skin;
                            GUI.skin=skins[0];
                            GUI.Label(new Rect(pos[1]+levelButtonSize/2-Templates.ResolutionProblems.getLevelsNumberW(Screen.width)/2-NUMBER_OFFSET_X,pos[0]+NUMBER_OFFSET_Y,Templates.ResolutionProblems.getLevelsNumberW(Screen.width),Templates.ResolutionProblems.getLevelsNumberH(Screen.width)),"");
                            GUI.skin=skins[1];
                            GUI.Label(new Rect(pos[1]+levelButtonSize/2-Templates.ResolutionProblems.getLevelsNumberW(Screen.width)/2+NUMBER_OFFSET_X,pos[0]+NUMBER_OFFSET_Y,Templates.ResolutionProblems.getLevelsNumberW(Screen.width),Templates.ResolutionProblems.getLevelsNumberH(Screen.width)),"");
                            GUI.skin=sk;
                        }
                        GUI.skin=Templates.getInstance().label_level_star;
                        if(k==3)
                        {
                            GUI.Label(new Rect(pos[1]+STAR_X_OFFSET,pos[0]+STAR_Y_OFFSET,Templates.ResolutionProblems.getLevelsStarSize(Screen.width),Templates.ResolutionProblems.getLevelsStarSize(Screen.width)),"");
                            GUI.Label(new Rect(pos[1]+levelButtonSize-Templates.ResolutionProblems.getLevelsStarSize(Screen.width)-STAR_X_OFFSET,pos[0]+STAR_Y_OFFSET,Templates.ResolutionProblems.getLevelsStarSize(Screen.width),Templates.ResolutionProblems.getLevelsStarSize(Screen.width)),"");
                            GUI.Label(new Rect(pos[1]+levelButtonSize/2-Templates.ResolutionProblems.getLevelsStarSize(Screen.width)/2,pos[0]+STAR_Y_OFFSET+THIRDSTAR_Y_OFFSET,Templates.ResolutionProblems.getLevelsStarSize(Screen.width),Templates.ResolutionProblems.getLevelsStarSize(Screen.width)),"");
                        }
                        else if(k==2)
                        {
                            GUI.Label(new Rect(pos[1]+STAR_X_OFFSET,pos[0]+STAR_Y_OFFSET,Templates.ResolutionProblems.getLevelsStarSize(Screen.width),Templates.ResolutionProblems.getLevelsStarSize(Screen.width)),"");
                            GUI.Label(new Rect(pos[1]+levelButtonSize-Templates.ResolutionProblems.getLevelsStarSize(Screen.width)-STAR_X_OFFSET,pos[0]+STAR_Y_OFFSET,Templates.ResolutionProblems.getLevelsStarSize(Screen.width),Templates.ResolutionProblems.getLevelsStarSize(Screen.width)),"");
                        }
                        else if(k==1)
                        {
                            GUI.Label(new Rect(pos[1]+levelButtonSize/2-Templates.ResolutionProblems.getLevelsStarSize(Screen.width)/2,pos[0]+STAR_Y_OFFSET+THIRDSTAR_Y_OFFSET,Templates.ResolutionProblems.getLevelsStarSize(Screen.width),Templates.ResolutionProblems.getLevelsStarSize(Screen.width)),"");
                        }
                    }
                    i++;
                    GUI.skin=null;

                }

                if(levelSelected>=0)
                {
                    float[] pos = calculateStartButtonPosition(levelSelected);
                    GUI.skin=Templates.getInstance().button_level_start;

                    float startH,startW;
                    startW=Templates.ResolutionProblems.getLevelButtonStartW(Screen.width);
                    startH=Templates.ResolutionProblems.getLevelButtonStartH(Screen.width);

                    if(GUI.Button(new Rect(pos[1],pos[0],startW,startH),""))
                    {
                        playedLevelIndex=levelSelected;
                        GameStorage.getInstance().LoadLevel(Templates.getInstance().getLevel((int)levels[levelSelected]),true);
                    }
                    GUI.skin=null;
                }

                GUI.EndScrollView();

                if(levelSelected>=0)
                {
                    Templates.LevelInfo lev = Templates.getInstance().getLevel((int)MainMenuGui.selectedCampaign.levels[levelSelected]);
                    float[] q = calculateStartButtonPosition(1);
                    GUILayout.BeginArea(new Rect(10,10,Screen.width-20,q[0]-Templates.ResolutionProblems.getLevelButtonStartH(Screen.width)/2),"",GUI.skin.box);
                    GUILayout.BeginVertical();
                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Mission "+(levelSelected+1)+": "+lev.levelName);
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.Label(lev.description);

                    GUILayout.EndVertical();
                    GUILayout.EndArea();
                }
            }

            if(mainMenu)
            {
                GUI.Box(new Rect(0,0,Screen.width,Screen.height),"",Templates.getInstance().bg.box);

                if(plotMenu)
                {
                    GUI.enabled=true;
                    GUI.Box(new Rect(0,0,Screen.width,Screen.height),"");
                    int mainBoxH,mainBoxW;
                    mainBoxH=Screen.height/100*85;
                    mainBoxW=Screen.width/100*80;
                    GUI.FocusControl(null);
                    GUISkin sk = GUI.skin;
                    GUI.skin=Templates.getInstance().mainPopupRichtext;
                    GUILayout.BeginArea(new Rect(Screen.width/2-mainBoxW/2,Screen.height/2-mainBoxH/2,mainBoxW,mainBoxH));
                    GUILayout.BeginVertical();
                    GUILayout.FlexibleSpace();
                    scrollPos = GUILayout.BeginScrollView (scrollPos, GUILayout.Width (mainBoxW));
                    GUILayout.TextArea(Templates.getInstance().plotContext);
                    GUILayout.EndScrollView ();
                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    if(GUILayout.Button("Назад",GUILayout.Width(100),GUILayout.Height(20)))
                        plotMenu=false;
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();
                    GUILayout.FlexibleSpace();

                    GUILayout.EndVertical();
                    GUILayout.EndArea();
                    GUI.skin=sk;
                    GUI.enabled=false;
                }
                else if(helpMenu)
                {
                    GUI.enabled=true;
                    GUI.Box(new Rect(0,0,Screen.width,Screen.height),"");
                    int mainBoxH,mainBoxW;
                    mainBoxH=Screen.height/100*85;
                    mainBoxW=Screen.width/100*80;
                    GUI.FocusControl(null);
                    GUISkin sk = GUI.skin;
                    GUI.skin=Templates.getInstance().mainPopupRichtext;
                    GUILayout.BeginArea(new Rect(Screen.width/2-mainBoxW/2,Screen.height/2-mainBoxH/2,mainBoxW,mainBoxH));
                    GUILayout.BeginVertical();
                    GUILayout.FlexibleSpace();
                    scrollPos = GUILayout.BeginScrollView (scrollPos, GUILayout.Width (mainBoxW));
                    GUILayout.TextArea(Templates.getInstance().helpContent);
                    GUILayout.EndScrollView ();
                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    if(GUILayout.Button("Назад",GUILayout.Width(100),GUILayout.Height(20)))
                        helpMenu=false;
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();
                    GUILayout.FlexibleSpace();

                    GUILayout.EndVertical();
                    GUILayout.EndArea();
                    GUI.skin=sk;
                    GUI.enabled=false;
                }
                else
                {
                    GUI.enabled=true;

                    //new
                    float helpplotH,helpplotW,menuBH,menuBW;

                    helpplotH=Screen.width*0.07f;
                    helpplotW=helpplotH;
                    if(GUI.Button(new Rect(30,Screen.height-30-helpplotH,helpplotW,helpplotH),"",Templates.getInstance().menu_button_help.button))
                        helpMenu=true;
                    if(GUI.Button(new Rect(Screen.width-30-helpplotW,Screen.height-30-helpplotH,helpplotW,helpplotH),"",Templates.getInstance().menu_button_plot.button))
                        plotMenu=true;

                    float bw = Screen.width/2-(30+helpplotW);
                    float bwdif = bw-bw*0.7f;
                    menuBW=bw*0.7f;
                    bwdif/=2;
                    float campaingsPosX=30+helpplotW+bwdif;
                    menuBH=menuBW/MENU_BUT_H_COEFF;

                    float menuButY=Screen.height-menuBH+menuBH*0.09f;
                    float creditsPosX=Screen.width-30-helpplotW-bwdif-menuBW;

                    if(GUI.Button(new Rect(campaingsPosX,menuButY,menuBW,menuBH),"Campaings",Templates.getInstance().menu_button.button))
                        switchMenu(GuiCategories.CampaignMenu);
                    GUI.Button(new Rect(creditsPosX,menuButY,menuBW,menuBH),"Credits",Templates.getInstance().menu_button.button);
                }
            }

        }
    }
    public void selectCampaign(Templates.CampaignInfo camp)
    {
        States.selectedLevel = -1;
        int i;

        start_but.SetActive(false);
        for (i = 0; i < missionsContainer.transform.childCount; i++)
        {
            Destroy(missionsContainer.transform.GetChild(i).gameObject);
        }
        States.currentCampaign = camp;
        //load load
        campaignsMenu.SetActive(false);
        missionsMenu.SetActive(true);
        ((UnityEngine.UI.Text)descriptionPanel.GetComponentsInChildren <UnityEngine.UI.Text>()[0]).text = camp.name;
        ((UnityEngine.UI.Text)descriptionPanel.GetComponentsInChildren <UnityEngine.UI.Text>()[1]).text = camp.desc;

        int currank = PlayerPrefs.GetInt("rank" + States.currentCampaign.id + "Campaign", -1);

        if (currank == -1)
        {
            rank_text.GetComponent <UnityEngine.UI.Text>().text           = "Rank:\n" + Templates.getInstance().getRank(States.currentCampaign.defaultRank).name;
            rank_img.GetComponent <UnityEngine.UI.Image>().overrideSprite = Templates.getInstance().getRank(States.currentCampaign.defaultRank).img;
        }
        else
        {
            rank_text.GetComponent <UnityEngine.UI.Text>().text           = "Rank:\n" + Templates.getInstance().getRank(currank).name;
            rank_img.GetComponent <UnityEngine.UI.Image>().overrideSprite = Templates.getInstance().getRank(currank).img;
        }

        int  repetitions = camp.levels.Count / 2;
        bool free = true;
        int  stars1, stars2 = 0;

        for (i = 0; i < repetitions; i++)
        {
            stars1 = PlayerPrefs.GetInt("mission" + camp.levels[i * 2] + "Stars", -1);
            stars2 = PlayerPrefs.GetInt("mission" + camp.levels[i * 2 + 1] + "Stars", -1);
            GameObject tmp = (GameObject)Instantiate(Templates.getInstance().missionBlockPrefab, Vector3.zero, Quaternion.identity);
            selectedState = new UnityEngine.UI.SpriteState();
            selectedState.disabledSprite    = ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).spriteState.pressedSprite;
            selectedState.highlightedSprite = ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).spriteState.pressedSprite;
            selectedState.pressedSprite     = ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).spriteState.pressedSprite;
            tmp.transform.SetParent(missionsContainer.transform);
            tmp.transform.localScale = new Vector3(1, 1, 1);

            if (stars1 == -1)
            {
                if (!free)
                {
                    ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).enabled = false;
                    ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[0]).overrideSprite = ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).spriteState.disabledSprite;
                    ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[1]).overrideSprite = Templates.getInstance().getNumberGrey(i * 2 + 1)[0];
                    ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[2]).overrideSprite = Templates.getInstance().getNumberGrey(i * 2 + 1)[1];
                }
                else
                {
                    free = false;
                    ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[1]).overrideSprite = Templates.getInstance().getNumber(i * 2 + 1)[0];
                    ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[2]).overrideSprite = Templates.getInstance().getNumber(i * 2 + 1)[1];
                }
            }
            else
            {
                ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[1]).overrideSprite = Templates.getInstance().getNumber(i * 2 + 1)[0];
                ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[2]).overrideSprite = Templates.getInstance().getNumber(i * 2 + 1)[1];
                if (stars1 >= 1)
                {
                    Color c = ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).gameObject.transform.GetChild(3).gameObject.GetComponent <UnityEngine.UI.Image>().color;
                    c.a = 1;
                    ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).gameObject.transform.GetChild(3).gameObject.GetComponent <UnityEngine.UI.Image>().color = c;
                }
                if (stars1 >= 2)
                {
                    Color c = ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).gameObject.transform.GetChild(4).gameObject.GetComponent <UnityEngine.UI.Image>().color;
                    c.a = 1;
                    ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).gameObject.transform.GetChild(4).gameObject.GetComponent <UnityEngine.UI.Image>().color = c;
                }
                if (stars1 >= 3)
                {
                    Color c = ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).gameObject.transform.GetChild(5).gameObject.GetComponent <UnityEngine.UI.Image>().color;
                    c.a = 1;
                    ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).gameObject.transform.GetChild(5).gameObject.GetComponent <UnityEngine.UI.Image>().color = c;
                }
            }

            if (stars2 == -1)
            {
                if (!free)
                {
                    ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).enabled = false;
                    ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[0]).overrideSprite = ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).spriteState.disabledSprite;
                    ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[1]).overrideSprite = Templates.getInstance().getNumberGrey(i * 2 + 2)[0];
                    ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[2]).overrideSprite = Templates.getInstance().getNumberGrey(i * 2 + 2)[1];
                }
                else
                {
                    free = false;
                    ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[1]).overrideSprite = Templates.getInstance().getNumber(i * 2 + 2)[0];
                    ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[2]).overrideSprite = Templates.getInstance().getNumber(i * 2 + 2)[1];
                }
            }
            else
            {
                ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[1]).overrideSprite = Templates.getInstance().getNumber(i * 2 + 2)[0];
                ((UnityEngine.UI.Image)((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).gameObject.GetComponentsInChildren <UnityEngine.UI.Image>()[2]).overrideSprite = Templates.getInstance().getNumber(i * 2 + 2)[1];
                if (stars1 >= 1)
                {
                    Color c = ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).gameObject.transform.GetChild(3).gameObject.GetComponent <UnityEngine.UI.Image>().color;
                    c.a = 1;
                    ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).gameObject.transform.GetChild(3).gameObject.GetComponent <UnityEngine.UI.Image>().color = c;
                }
                if (stars1 >= 2)
                {
                    Color c = ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).gameObject.transform.GetChild(4).gameObject.GetComponent <UnityEngine.UI.Image>().color;
                    c.a = 1;
                    ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).gameObject.transform.GetChild(4).gameObject.GetComponent <UnityEngine.UI.Image>().color = c;
                }
                if (stars1 >= 3)
                {
                    Color c = ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).gameObject.transform.GetChild(5).gameObject.GetComponent <UnityEngine.UI.Image>().color;
                    c.a = 1;
                    ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).gameObject.transform.GetChild(5).gameObject.GetComponent <UnityEngine.UI.Image>().color = c;
                }
            }

            GameObject block = tmp;
            int        lev   = (i * 2);
            ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[0]).onClick.AddListener(() => setSelection(block, lev));
            ((UnityEngine.UI.Button)tmp.GetComponentsInChildren <UnityEngine.UI.Button>()[1]).onClick.AddListener(() => setSelection(block, lev + 1));
        }
    }