Exemplo n.º 1
0
 GUIStyle getButtonStyle(StageBtnState state, bool isChallengeStage)
 {
     if (state == StageBtnState.Star_0)
     {
         if (isChallengeStage)
         {
             return(challengeStageBtn_0Star);
         }
         return(stageBtn_0Star);
     }
     else if (state == StageBtnState.Star_1)
     {
         if (isChallengeStage)
         {
             return(challengeStageBtn_1Star);
         }
         return(stageBtn_1Star);
     }
     else if (state == StageBtnState.Star_2)
     {
         if (isChallengeStage)
         {
             return(challengeStageBtn_2Star);
         }
         return(stageBtn_2Star);
     }
     else if (state == StageBtnState.Star_3)
     {
         if (isChallengeStage)
         {
             return(challengeStageBtn_3Star);
         }
         return(stageBtn_3Star);
     }
     else
     {
         if (isChallengeStage)
         {
             return(challengeStageBtn_Locked);
         }
         return(stageBtn_Locked);
     }
 }
Exemplo n.º 2
0
 void DrawStageButton(StageBtnState state, GUIStyle btnStyle, Rect btnPos, string btnLabel, string stageName, ButtonHandler handler)
 {
     if (state == StageBtnState.Locked)
     {
         GUI.Button(btnPos, "", btnStyle);
     }
     else
     {
         if (GUI.Button(btnPos, btnLabel, btnStyle))
         {
             if (isChallenge)
             {
                 NavigationManager.instance.chapter = chapterNumber - 1 + 7;
             }
             else
             {
                 NavigationManager.instance.chapter = chapterNumber - 1;
             }
             NavigationManager.instance.stage = System.Convert.ToInt32(btnLabel) - 1;
             Application.LoadLevel(stageName);
         }
         handler.OnMouseOver(btnPos);
     }
 }
Exemplo n.º 3
0
    // Use this for initialization
    void Start()
    {
        #region Touch Controls

        // inititialise the arrays used for manipulating the touch controls
        touchStartPosition = new Vector2[maxTouches];

        #endregion
        #region GUI

        // Set the container rect
        containerRect = new Rect(0, 0, Screen.width, Screen.height);

        // Set animation position rects
        innerPosLeftRect   = new Rect(-Screen.width, 0, Screen.width, Screen.height);
        innerPosMiddleRect = new Rect(0, 0, Screen.width, Screen.height);
        innerPosRightRect  = new Rect(Screen.width, 0, Screen.width, Screen.height);

        // Set default position
        innerNormalRect    = innerPosMiddleRect;
        innerChallengeRect = innerPosLeftRect;

        #region background

        // Background
        bgRect             = new Rect(0, 0, Screen.width, Screen.height);
        bgTexture          = activeSkin.customStyles[3].normal.background;
        bgChallengeTexture = activeSkin.customStyles[12].normal.background;

        #endregion

        #region main content

        normalContainerBgTexture    = activeSkin.customStyles[4].normal.background;
        challengeContainerBgTexture = activeSkin.customStyles[13].normal.background;
        float contentContainerHeight  = Screen.height * contentContainerScale;
        float contentContainerWidth   = contentContainerHeight * ((float)normalContainerBgTexture.width / (float)normalContainerBgTexture.height);
        float contentContainerXOffset = (Screen.width - contentContainerWidth) * 0.5f;
        float contentContainerYOffset = (Screen.height - contentContainerHeight) * 0.5f;
        contentContainerRect   = new Rect(contentContainerXOffset, contentContainerYOffset, contentContainerWidth, contentContainerHeight);
        contentContainerBgRect = new Rect(0, 0, contentContainerWidth, contentContainerHeight);

        #region headers

        // normal header
        contentHeaderStyle           = new GUIStyle(activeSkin.label);
        contentHeaderStyle.fontSize  = (int)(contentContainerHeight * contentHeaderScale);
        contentHeaderStyle.alignment = TextAnchor.MiddleCenter;
        float headerWidth   = contentContainerWidth;
        float headerHeight  = contentHeaderStyle.fontSize * 2;
        float headerXOffset = 0;
        float headerYOffset = contentContainerHeight * contentHeaderYOffset;
        contentHeaderRect = new Rect(headerXOffset, headerYOffset, headerWidth, headerHeight);

        // challenge header
        challengeHeaderStyle                  = new GUIStyle(activeSkin.label);
        challengeHeaderStyle.fontSize         = (int)(contentContainerHeight * contentHeaderScale);
        challengeHeaderStyle.normal.textColor = Color.white;
        challengeHeaderStyle.alignment        = TextAnchor.MiddleCenter;
        float cHeaderWidth   = contentContainerWidth;
        float cHeaderHeight  = challengeHeaderStyle.fontSize * 2;
        float cHeaderXOffset = 0;
        float cHeaderYOffset = contentContainerHeight * challengeHeaderYOffset;
        challengeHeaderRect = new Rect(cHeaderXOffset, cHeaderYOffset, cHeaderWidth, cHeaderHeight);

        // challenge label
        challengeLabelStyle                  = new GUIStyle(activeSkin.label);
        challengeLabelStyle.fontSize         = (int)(contentContainerHeight * challengeLabelScale);
        challengeLabelStyle.normal.textColor = Color.red;
        challengeLabelStyle.alignment        = TextAnchor.MiddleCenter;
        float cLabelWidth   = contentContainerWidth;
        float cLabelHeight  = challengeLabelStyle.CalcHeight(new GUIContent("N\nN"), cLabelWidth);
        float cLabelXOffset = 0;
        float cLabelYOffset = contentContainerHeight * challengeLabelYOffset;
        challengeLabelRect = new Rect(cLabelXOffset, cLabelYOffset, cLabelWidth, cLabelHeight);

        #endregion

        #region stage buttons

        Texture stageBtnTexture  = activeSkin.customStyles[5].normal.background;
        float   stageBtnHeight   = contentContainerHeight * stagesBtnScale;
        float   stageBtnWidth    = stageBtnHeight * ((float)stageBtnTexture.width / (float)stageBtnTexture.height);
        float   stageBtnXSpacing = contentContainerWidth * stagesXSpacingScale;
        float   stageBtnYSpacing = contentContainerWidth * stagesYSpacingScale;

        float stagesWidth   = stageBtnWidth * 5 + stageBtnXSpacing * 4;
        float stagesHeight  = stageBtnHeight * 2 + stageBtnYSpacing;
        float stagesXOffset = (contentContainerWidth - stagesWidth) * 0.5f;
        float stagesYOffset = contentContainerHeight * stagesContainerYOffset;

        stagesContainerRect = new Rect(stagesXOffset, stagesYOffset, stagesWidth, stagesHeight);

        stage1Rect = new Rect(0, 0, stageBtnWidth, stageBtnHeight);
        stage2Rect = new Rect(stageBtnWidth + stageBtnXSpacing, 0, stageBtnWidth, stageBtnHeight);
        stage3Rect = new Rect(2 * (stageBtnWidth + stageBtnXSpacing), 0, stageBtnWidth, stageBtnHeight);
        stage4Rect = new Rect(3 * (stageBtnWidth + stageBtnXSpacing), 0, stageBtnWidth, stageBtnHeight);
        stage5Rect = new Rect(4 * (stageBtnWidth + stageBtnXSpacing), 0, stageBtnWidth, stageBtnHeight);

        stage6Rect  = new Rect(0, stageBtnHeight + stageBtnYSpacing, stageBtnWidth, stageBtnHeight);
        stage7Rect  = new Rect(stageBtnWidth + stageBtnXSpacing, stageBtnHeight + stageBtnYSpacing, stageBtnWidth, stageBtnHeight);
        stage8Rect  = new Rect(2 * (stageBtnWidth + stageBtnXSpacing), stageBtnHeight + stageBtnYSpacing, stageBtnWidth, stageBtnHeight);
        stage9Rect  = new Rect(3 * (stageBtnWidth + stageBtnXSpacing), stageBtnHeight + stageBtnYSpacing, stageBtnWidth, stageBtnHeight);
        stage10Rect = new Rect(4 * (stageBtnWidth + stageBtnXSpacing), stageBtnHeight + stageBtnYSpacing, stageBtnWidth, stageBtnHeight);

        // Set the button font size
        activeSkin.customStyles[6].fontSize = (int)(stageBtnHeight * stageBtnLabelScale);
        activeSkin.customStyles[7].fontSize = (int)(stageBtnHeight * stageBtnLabelScale);
        activeSkin.customStyles[8].fontSize = (int)(stageBtnHeight * stageBtnLabelScale);
        activeSkin.customStyles[9].fontSize = (int)(stageBtnHeight * stageBtnLabelScale);

        activeSkin.customStyles[6].contentOffset = new Vector2(stageBtnWidth * stageBtnLabelXOffset, stageBtnHeight * stageBtnLabelYOffset);
        activeSkin.customStyles[7].contentOffset = new Vector2(stageBtnWidth * stageBtnLabelXOffset, stageBtnHeight * stageBtnLabelYOffset);
        activeSkin.customStyles[8].contentOffset = new Vector2(stageBtnWidth * stageBtnLabelXOffset, stageBtnHeight * stageBtnLabelYOffset);
        activeSkin.customStyles[9].contentOffset = new Vector2(stageBtnWidth * stageBtnLabelXOffset, stageBtnHeight * stageBtnLabelYOffset);

        // Set the styles to put on each stage (need to check database here)
        stageBtn_Locked          = new GUIStyle(activeSkin.customStyles[5]);
        stageBtn_1Star           = new GUIStyle(activeSkin.customStyles[7]);
        stageBtn_0Star           = new GUIStyle(activeSkin.customStyles[6]);
        stageBtn_2Star           = new GUIStyle(activeSkin.customStyles[8]);
        stageBtn_3Star           = new GUIStyle(activeSkin.customStyles[9]);
        challengeStageBtn_Locked = new GUIStyle(activeSkin.customStyles[14]);
        challengeStageBtn_0Star  = new GUIStyle(activeSkin.customStyles[15]);
        challengeStageBtn_1Star  = new GUIStyle(activeSkin.customStyles[16]);
        challengeStageBtn_2Star  = new GUIStyle(activeSkin.customStyles[17]);
        challengeStageBtn_3Star  = new GUIStyle(activeSkin.customStyles[18]);

        // Get the normal button states
        stage1State  = getButtonState(0, false);
        stage2State  = getButtonState(1, false);
        stage3State  = getButtonState(2, false);
        stage4State  = getButtonState(3, false);
        stage5State  = getButtonState(4, false);
        stage6State  = getButtonState(5, false);
        stage7State  = getButtonState(6, false);
        stage8State  = getButtonState(7, false);
        stage9State  = getButtonState(8, false);
        stage10State = getButtonState(9, false);

        // Get the challenge button states
        challengeStage1State  = getButtonState(0, true);
        challengeStage2State  = getButtonState(1, true);
        challengeStage3State  = getButtonState(2, true);
        challengeStage4State  = getButtonState(3, true);
        challengeStage5State  = getButtonState(4, true);
        challengeStage6State  = getButtonState(5, true);
        challengeStage7State  = getButtonState(6, true);
        challengeStage8State  = getButtonState(7, true);
        challengeStage9State  = getButtonState(8, true);
        challengeStage10State = getButtonState(9, true);

        // Set the normal button styles
        stage1Style  = getButtonStyle(stage1State, false);
        stage2Style  = getButtonStyle(stage2State, false);
        stage3Style  = getButtonStyle(stage3State, false);
        stage4Style  = getButtonStyle(stage4State, false);
        stage5Style  = getButtonStyle(stage5State, false);
        stage6Style  = getButtonStyle(stage6State, false);
        stage7Style  = getButtonStyle(stage7State, false);
        stage8Style  = getButtonStyle(stage8State, false);
        stage9Style  = getButtonStyle(stage9State, false);
        stage10Style = getButtonStyle(stage10State, false);

        // Set the challenge button styles
        challengeStage1Style  = getButtonStyle(challengeStage1State, true);
        challengeStage2Style  = getButtonStyle(challengeStage2State, true);
        challengeStage3Style  = getButtonStyle(challengeStage3State, true);
        challengeStage4Style  = getButtonStyle(challengeStage4State, true);
        challengeStage5Style  = getButtonStyle(challengeStage5State, true);
        challengeStage6Style  = getButtonStyle(challengeStage6State, true);
        challengeStage7Style  = getButtonStyle(challengeStage7State, true);
        challengeStage8Style  = getButtonStyle(challengeStage8State, true);
        challengeStage9Style  = getButtonStyle(challengeStage9State, true);
        challengeStage10Style = getButtonStyle(challengeStage10State, true);

        // Set the button handlers
        stage1Handler  = new ButtonHandler(stage1Rect, gameObject, 0.9f, "ScaleStage1Button");
        stage2Handler  = new ButtonHandler(stage2Rect, gameObject, 0.9f, "ScaleStage2Button");
        stage3Handler  = new ButtonHandler(stage3Rect, gameObject, 0.9f, "ScaleStage3Button");
        stage4Handler  = new ButtonHandler(stage4Rect, gameObject, 0.9f, "ScaleStage4Button");
        stage5Handler  = new ButtonHandler(stage5Rect, gameObject, 0.9f, "ScaleStage5Button");
        stage6Handler  = new ButtonHandler(stage6Rect, gameObject, 0.9f, "ScaleStage6Button");
        stage7Handler  = new ButtonHandler(stage7Rect, gameObject, 0.9f, "ScaleStage7Button");
        stage8Handler  = new ButtonHandler(stage8Rect, gameObject, 0.9f, "ScaleStage8Button");
        stage9Handler  = new ButtonHandler(stage9Rect, gameObject, 0.9f, "ScaleStage9Button");
        stage10Handler = new ButtonHandler(stage10Rect, gameObject, 0.9f, "ScaleStage10Button");

        #endregion

        #endregion

        #region buttons

        // Back button
        backBtnStyle = activeSkin.customStyles[1];
        Texture backBtnTexture = backBtnStyle.normal.background;
        float   backBtnHeight  = Screen.height * backBtnScale;
        float   backBtnWidth   = backBtnHeight * ((float)backBtnTexture.width / (float)backBtnTexture.height);
        float   backXOffset    = Screen.width * backBtnXOffset;
        float   backYOffset    = Screen.height * backBtnYOffset;
        backBtnRect    = new Rect(backXOffset, backYOffset, backBtnWidth, backBtnHeight);
        backBtnHandler = new ButtonHandler(backBtnRect, gameObject, 0.9f, "ScaleBackButton");

        // Sound button
        soundBtnStyle = activeSkin.customStyles[2];
        Texture soundBtnTexture = soundBtnStyle.normal.background;
        float   soundBtnHeight  = Screen.height * soundBtnScale;
        float   soundBtnWidth   = soundBtnHeight * ((float)soundBtnTexture.width / (float)soundBtnTexture.height);
        float   soundXOffset    = Screen.width * (1 - soundBtnXOffset) - soundBtnWidth;
        float   soundYOffset    = Screen.height * soundBtnYOffset;
        soundBtnRect    = new Rect(soundXOffset, soundYOffset, soundBtnWidth, soundBtnHeight);
        soundBtnHandler = new ButtonHandler(soundBtnRect, gameObject, 0.9f, "ScaleSoundButton");

        // Challenge button
        //if (challengeStage1State == StageBtnState.Locked)
        if (!Game.instance.challengeChapterUnlocked[chapterNumber - 1])
        {
            challengeBtnStyle = activeSkin.customStyles[10];
        }
        else
        {
            challengeBtnStyle = activeSkin.customStyles[11];
        }
        Texture challengeBtnTexture = challengeBtnStyle.normal.background;
        float   challengeBtnWidth   = Screen.width * challengeBtnScale;
        float   challengeBtnHeight  = challengeBtnWidth * ((float)challengeBtnTexture.height / (float)challengeBtnTexture.width);
        float   challengeXOffset    = Screen.width * challengeBtnXOffset;
        float   challengeYOffset    = Screen.height * (1 - challengeBtnYOffset) - challengeBtnHeight;
        challengeBtnRect    = new Rect(challengeXOffset, challengeYOffset, challengeBtnWidth, challengeBtnHeight);
        challengeBtnHandler = new ButtonHandler(challengeBtnRect, gameObject, 0.9f, "ScaleChallengeButton");

        // Energy bar
        energyStyle = activeSkin.customStyles[0];
        Texture energyTexture = energyStyle.normal.background;
        float   energyHeight  = Screen.height * energyScale;
        float   energyWidth   = energyHeight * ((float)energyTexture.width / (float)energyTexture.height);
        float   eXOffset      = Screen.width * (1 - energyXOffset) - energyWidth;
        float   eYOffset      = Screen.height * energyYOffset;
        energyRect = new Rect(eXOffset, eYOffset, energyWidth, energyHeight);

        energyStyle.fontSize      = (int)(energyHeight * energyFontScale);
        energyStyle.contentOffset = new Vector2(energyWidth * energyLabelXOffset, energyHeight * energyLabelYOffset);

        #endregion

        #region story

        cur_page = 1;
        nxt_page = 1;
        max_page = story.Length;

        float storyHeight  = contentContainerRect.height * storyContainerHeight;
        float storyWidth   = contentContainerRect.width * storyContainerWidth;
        float storyXOffset = contentContainerRect.width * storyContainerXOffset;
        float storyYOffset = contentContainerRect.height * storyContainerYOffset;

        storyContainerRect   = new Rect(storyXOffset, storyYOffset, storyWidth, storyHeight);
        storyPosMid          = new Rect(0, 0, storyWidth, storyHeight);
        storyPosLeft         = new Rect(-storyWidth, 0, storyWidth, storyHeight);
        storyPosRight        = new Rect(storyWidth, 0, storyWidth, storyHeight);
        storyInnerActiveRect = storyPosMid;
        storyInnerTempRect   = storyPosRight;

        activeSkin.label.fontSize = (int)(contentContainerRect.height * storyContainerFontScale);

        arrowPrevStyle = activeSkin.customStyles[19];
        arrowNextStyle = activeSkin.customStyles[20];
        Texture arrowTexture = arrowNextStyle.normal.background;
        float   arrowHeight  = Screen.height * arrowScale;
        float   arrowWidth   = arrowHeight * ((float)arrowTexture.width / (float)arrowTexture.height);
        arrowNextRect = new Rect(storyXOffset + storyWidth + 0.5f * arrowWidth,
                                 storyYOffset + 0.5f * (storyHeight - arrowHeight),
                                 arrowWidth, arrowHeight);
        arrowPrevRect = new Rect(storyXOffset - 1.5f * (arrowWidth),
                                 storyYOffset + 0.5f * (storyHeight - arrowHeight),
                                 arrowWidth, arrowHeight);

        // Navigation toolbar
        storyNavStrings = new string[max_page];
        storyNavStyle   = activeSkin.customStyles[21];

        float toolbarWidth   = storyWidth;
        float toolbarHeight  = storyHeight * storyNavScale;
        float toolbarXOffset = storyXOffset;
        float toolbarYOffset = storyYOffset + storyHeight;

        storyNavRect = new Rect(toolbarXOffset, toolbarYOffset, toolbarWidth, toolbarHeight);
        storyNavStyle.fixedHeight = toolbarHeight;
        storyNavStyle.fixedWidth  = toolbarHeight;
        storyNavStyle.margin      = new RectOffset((int)(toolbarHeight * storyNavSpacing),
                                                   (int)(toolbarHeight * storyNavSpacing), 0, 0);


        #endregion
        #region thumbnail

        float thumbWidth   = contentContainerRect.width * thumbnailScale;
        float thumbHeight  = thumbWidth * ((float)storyThumbnail.height / (float)storyThumbnail.width);
        float thumbXOffset = contentContainerRect.width * thumbnailXOffset;
        float thumbYOffset = contentContainerRect.height * thumbnailYOffset;

        thumbnailRect = new Rect(thumbXOffset, thumbYOffset, thumbWidth, thumbHeight);

        #endregion
        #endregion
    }