void DrawInfoWin() { int height; DrawSprite(windowsprite,screen,30,20,0); DrawTextCentered(hud.windowheader,screen,120,32,IndexColor(DarkGrey),F_Large); DrawTextCentered(hud.windowheader,screen,119,31,IndexColor(Green),F_Large); if(hud.image == NULL)height = 50; else { DrawSprite(hud.image,screen,120 - (hud.image->w /2), 50,hud.subwindowinfo); height = 60 + hud.image->h; } DrawTextBlock(hud.description,screen,38, height,IndexColor(LightBlue),F_Small,172); }
void tutExecute(regionhandle reg) { fonthandle currentfont; sdword texty, bitmap; rectangle rect; // used for translucent boxes behind text rectangle *buttonrect = ®->rect; // used for "next" button bool modeset = FALSE; sdword bitmap_x, bitmap_vel; if(tutorial == 3) return; if(tutRegion->previous) regSiblingMoveToFront(tutRegion); if(tutTransition == 0 && tutLesson != TUT_LESSON_ENTER_BUILD_MANAGER && tutLesson != TUT_LESSON_BUILD_SHIP) // don't draw button on build manager lessons { if(mouseInRect(buttonrect)) { if(mouseLeftButton()) { tutSkip = TRUE; trRGBTextureMakeCurrent(tutButtonTexture[NEXT_ON]); } else trRGBTextureMakeCurrent(tutButtonTexture[NEXT_MOUSE]); } else trRGBTextureMakeCurrent(tutButtonTexture[NEXT_OFF]); rndPerspectiveCorrection(FALSE); // glEnable(GL_BLEND); // needs to be enabled once Keith fixes alpha blending intel compiler optimization bug primRectSolidTextured2(buttonrect); // glDisable(GL_BLEND); // needs to be enabled once Keith fixes alpha blending intel compiler optimization bug } if(tutTransition == 0) { switch(PassedTutorial(tutLesson)) { case 0: // Didn't pass break; case 1: // Perform transition tutTransition = 1; break; case -1: // No Transition tutLesson++; InitTutorial(tutLesson); break; } } else if(tutTransition == 1) { tutTransitionCount++; if(tutTransitionCount == TUT_TransitionFramesOut) { tutTransition = 2; tutTransitionCount = TUT_TransitionFramesIn; tutLesson++; InitTutorial(tutLesson); if((tutLesson >= TUT_ADVANCED_INTRO && tutorial == 1) || (tutLesson >= TUT_TOTAL_LESSONS && tutorial == 2)) { tutorialdone = TRUE; return; } } } else if(tutTransition == 2) { tutTransitionCount--; if(tutTransitionCount == 0) tutTransition = 0; } if(tutBitmapList[tutLesson][2] != -1) { bitmap_x = TUT_BITMAP_X; bitmap_vel = 210; } else if(tutBitmapList[tutLesson][1] != -1) { bitmap_x = TUT_BITMAP_X + (TUT_BITMAP_WIDTH + 8); bitmap_vel = 150; } else { bitmap_x = TUT_BITMAP_X + ((2 * TUT_BITMAP_WIDTH) + 8); bitmap_vel = 90; } if(tutTransition == 0) bitmap_vel = 0; else if(tutTransition == 1) bitmap_vel = (long) (((float)bitmap_vel/(float)TUT_TransitionFramesOut) * (float)tutTransitionCount); else if(tutTransition == 2) bitmap_vel = (long) (((float)bitmap_vel/(float)TUT_TransitionFramesIn) * (float)tutTransitionCount); // glEnable(GL_BLEND); for(bitmap = 0; bitmap < 3; bitmap++) { if(tutBitmapList[tutLesson][bitmap] != -1) { trRGBTextureMakeCurrent(tutButtonTexture[tutBitmapList[tutLesson][bitmap]]); rndPerspectiveCorrection(FALSE); rect.x0 = bitmap_x + ((TUT_BITMAP_WIDTH + 8) * bitmap) + bitmap_vel; rect.y0 = TUT_BITMAP_Y; rect.x1 = bitmap_x + ((TUT_BITMAP_WIDTH + 8) * bitmap) + TUT_BITMAP_WIDTH + bitmap_vel; rect.y1 = TUT_BITMAP_Y + TUT_BITMAP_HEIGHT; primRectSolidTextured2(&rect); } } // glDisable(GL_BLEND); if (!primModeEnabled) // draw translucent polys before text { primModeSet2(); modeset = TRUE; } if(tutLesson != TUT_LESSON_BUILD_SHIP) // default behaviour for lessons { long TitlePos = (long)(TUT_TitleTransMult[tutTransition] * (float)tutTransitionCount); long TextPos = (long)(TUT_TextTransMult[tutTransition] * (float)tutTransitionCount); rect.x0 = 0; rect.y0 = TUT_Title_Y - TitlePos - 7; rect.x1 = 640; rect.y1 = TUT_Title_Y - TitlePos + 22; primRectTranslucent2(&rect, colRGBA(0, 0, 0, 128)); rect.x0 = TUT_Main_X - TextPos - 12; rect.y0 = TUT_Main_Y - 6; rect.x1 = TUT_Main_X - TextPos + TUT_MainTextWidth + 4; rect.y1 = tutLastMainY; primRectTranslucent2(&rect, colRGBA(0, 0, 0, 128)); currentfont = fontMakeCurrent(tutTitleFont); // draw text fontPrintf(TUT_Title_X, TUT_Title_Y - TitlePos, TUT_TitleColor, "%s", strGetString(strTutorial00Title + (tutLesson * 7))); currentfont = fontMakeCurrent(tutMainFont); texty = DrawTextBlock(strGetString(strTutorial00Line01 + (tutLesson * 7)), TUT_Main_X - TextPos, TUT_Main_Y, TUT_MainTextWidth, TUT_MainTextHeight, TUT_MainColor); texty = DrawTextBlock(strGetString(strTutorial00Line02 + (tutLesson * 7)), TUT_Main_X - TextPos, texty, TUT_MainTextWidth, TUT_MainTextHeight, TUT_MainColor); texty = DrawTextBlock(strGetString(strTutorial00Line03 + (tutLesson * 7)), TUT_Main_X - TextPos, texty, TUT_MainTextWidth, TUT_MainTextHeight, TUT_MainColor); texty = DrawTextBlock(strGetString(strTutorial00Line04 + (tutLesson * 7)), TUT_Main_X - TextPos, texty, TUT_MainTextWidth, TUT_MainTextHeight, TUT_MainColor); tutLastMainY = DrawTextBlock(strGetString(strTutorial00Line05 + (tutLesson * 7)), TUT_Main_X - TextPos, texty, TUT_MainTextWidth, TUT_MainTextHeight, TUT_MainColor); fontMakeCurrent(currentfont); } else // special case for build ship lesson { currentfont = fontMakeCurrent(tutMainFont); texty = DrawTextBlock(strGetString(strTutorial17Line01 + tutVar.count), TUT_Build_X, TUT_Build_Y, TUT_BuildTextWidth, TUT_BuildTextHeight, TUT_BuildColor); fontMakeCurrent(currentfont); rect.x0 = TUT_Build_X - 8; // draw outline box around text rect.y0 = TUT_Build_Y - 6; rect.x1 = TUT_Build_X + TUT_BuildTextWidth + 8; rect.y1 = texty; primRectOutline2(&rect, 2, colRGB(tutPulseValue, tutPulseValue, tutPulseValue)); if(tutVar.count == 0) // point to appropriate place on screen tutDrawLinePulse(TUT_Build_X - 8, texty, 160, 100, tutPulseValue, 8); else if(tutVar.count == 1) tutDrawLinePulse(TUT_Build_X - 8, texty, 180, 410, tutPulseValue, 8); else if(tutVar.count == 2) tutDrawLinePulse(TUT_Build_X - 8, texty, 550, 410, tutPulseValue, 8); tutPulseValue -= 8; } if(!FirstWordNULL(strGetString(strTutorial00Tip + (tutLesson * 7)))) { long TipPos = (long)(TUT_TipTransMult[tutTransition] * (float)tutTransitionCount); long TextPos = (long)(TUT_TextTransMult[tutTransition] * (float)tutTransitionCount); if (!primModeEnabled) // draw translucent polys before tip text { primModeSet2(); modeset = TRUE; } rect.x0 = TUT_TipTitle_X - 8; rect.y0 = TUT_TipTitle_Y - TipPos - 6; rect.x1 = TUT_Tip_X - 8; rect.y1 = TUT_TipTitle_Y - TipPos + 18; primRectTranslucent2(&rect, colRGBA(0, 0, 0, 128)); rect.x0 = TUT_Tip_X + TextPos - 8; rect.y0 = TUT_Tip_Y - 6; rect.x1 = TUT_Tip_X + TextPos + TUT_TipTextWidth + 8; rect.y1 = tutLastTipY; primRectTranslucent2(&rect, colRGBA(0, 0, 0, 128)); if(modeset) primModeClear2(); currentfont = fontMakeCurrent(tutTipTitleFont); fontPrintf(TUT_TipTitle_X, TUT_TipTitle_Y - TipPos, TUT_TipTitleColor, "%s", strGetString(strTutorialTip)); currentfont = fontMakeCurrent(tutTipFont); tutLastTipY = DrawTextBlock(strGetString(strTutorial00Tip + (tutLesson * 7)), TUT_Tip_X + TextPos, TUT_Tip_Y, TUT_TipTextWidth, TUT_TipTextHeight, TUT_TipColor); } fontMakeCurrent(currentfont); }