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); } }
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); } }
// 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 }