//------------------------------------------------------------------------------------ // выбор миссии //------------------------------------------------------------------------------------ void MissionMenu() { // проверка ограничения if (Setup.Profile[CurrentProfile].OpenLevelNum > AllMission-1) Setup.Profile[CurrentProfile].OpenLevelNum = AllMission-1; RECT SrcRect, DstRect; SetRect(&SrcRect,2,2,863-2,484-2); SetRect(&DstRect,Setup.iAspectRatioWidth/2-427,175-15,Setup.iAspectRatioWidth/2-427+863-4,175-15+484-4); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/panel800_444_back.tga"), true, 0.9f*MenuContentTransp); int X1 = Setup.iAspectRatioWidth/2 - 372; int Y1 = 270; // выводим текущий профиль пилота int Size = vw_FontSize("%s: ", vw_GetText("3_Pilot_Profile")); vw_DrawFont(X1, 208+12, 0, 0, 1.0f, 0.0f,1.0f,0.0f, 1.0f*MenuContentTransp, "%s: ", vw_GetText("3_Pilot_Profile")); if (Size+vw_FontSize(Setup.Profile[CurrentProfile].Name) > 500) { vw_DrawFont(X1+Size, 208+12, 0, 500-Size, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, Setup.Profile[CurrentProfile].Name); vw_DrawFont(X1+510, 208+12, 0, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, "..."); } else vw_DrawFont(X1+Size, 208+12, 0, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, Setup.Profile[CurrentProfile].Name); if (DrawButton200_2(X1+616-72, 212, vw_GetText("1_Change_Profile"), MenuContentTransp, false)) { ComBuffer = PROFILE; } // подложка для вывода описания миссий SetRect(&SrcRect,0,0,2,2); SetRect(&DstRect,X1-2,Y1-2,X1+2+710,Y1+2+320); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/blackpoint.tga"), true, 0.2f*MenuContentTransp); SetRect(&DstRect,X1,Y1,X1+710,Y1+320); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/blackpoint.tga"), true, 0.5f*MenuContentTransp); // подсвечиваем выбранный уровень if (CurrentMission != -1) if (StartMission<=CurrentMission && CurrentMission<=EndMission) { int ShowLine = CurrentMission; if (ShowLine>=StartMission) ShowLine -= StartMission; SetRect(&SrcRect,0,0,2,2); SetRect(&DstRect,X1+1,Y1 + 64*ShowLine+1,X1+709,Y1 + 64*ShowLine+63); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/whitepoint.tga"), true, 0.1f*MenuContentTransp); } // выводим миссии текущего листа int TMPSoundOnMissionID = -1; for (int i=StartMission; i<=EndMission; i++) if (AllMission > i) { // если не можем выбирать... if (i > Setup.Profile[CurrentProfile].OpenLevelNum) { SetRect(&SrcRect,0,0,64,64); SetRect(&DstRect,X1+2,Y1+2,X1+62,Y1+62); if (MissionIcon[i] != 0) vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName(MissionIcon[i]), true, 0.3f*MenuContentTransp); if (MissionTitleType[i] == 1) vw_DrawFont(X1+20+64, Y1+9, -610, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], 0.3f*MenuContentTransp, vw_GetText(MissionTitle[i])); else vw_DrawFont(X1+20+64, Y1+9, -610, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], 0.3f*MenuContentTransp, MissionTitle[i]); if (MissionDescrType[i] == 1) vw_DrawFont(X1+20+64, Y1+33, -610, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], 0.3f*MenuContentTransp, vw_GetText(MissionDescr[i])); else vw_DrawFont(X1+20+64, Y1+33, -610, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], 0.3f*MenuContentTransp, MissionDescr[i]); } SetRect(&DstRect,X1,Y1+1,X1+710,Y1+64); if (i <= Setup.Profile[CurrentProfile].OpenLevelNum) { // работаем с клавиатурой if ((MenuContentTransp >= 0.99f) && !isDialogBoxDrawing()) CurrentActiveMenuElement++; bool InFocusByKeyboard = false; if (CurrentKeyboardSelectMenuElement > 0) { if (CurrentKeyboardSelectMenuElement == CurrentActiveMenuElement) { InFocusByKeyboard = true; } } if ((vw_OnRect(&DstRect) || InFocusByKeyboard) && !isDialogBoxDrawing()) { TMPSoundOnMissionID = i; CurrentCursorStatus = 1; // если только встали - нужно звуком это показать if (SoundOnMissionID != i) { SoundOnMissionID = i; // если задействуем клавиатуру - неиграем тут звук if (CurrentKeyboardSelectMenuElement == 0) Audio_PlaySound2D(5,1.0f); } // если стоим над ним... SetRect(&SrcRect,0,0,64,64); SetRect(&DstRect,X1,Y1,X1+64,Y1+64); if (MissionIcon != 0) vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName(MissionIcon[i]), true, MenuContentTransp); if (MissionTitleType[i] == 1) vw_DrawFont(X1+20+64, Y1+9, -610, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], MenuContentTransp, vw_GetText(MissionTitle[i])); else vw_DrawFont(X1+20+64, Y1+9, -610, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], MenuContentTransp, MissionTitle[i]); if (MissionDescrType[i] == 1) vw_DrawFont(X1+20+64, Y1+33, -610, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], MenuContentTransp, vw_GetText(MissionDescr[i])); else vw_DrawFont(X1+20+64, Y1+33, -610, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], MenuContentTransp, MissionDescr[i]); if (CurrentMission != i) { SetRect(&SrcRect,0,0,2,2); SetRect(&DstRect,X1+64,Y1+1,X1+709,Y1+63); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/whitepoint.tga"), true, 0.1f*MenuContentTransp); } if (vw_GetWindowLBMouse(true) || (InFocusByKeyboard && (vw_GetKeys(SDLK_KP_ENTER) || vw_GetKeys(SDLK_RETURN)))) { CurrentMission = i; Setup.Profile[CurrentProfile].LastMission = CurrentMission; Audio_PlaySound2D(6,1.0f); if (InFocusByKeyboard) { vw_SetKeys(SDLK_KP_ENTER, false); vw_SetKeys(SDLK_RETURN, false); } } if (vw_GetWindowLBDoubleMouse(true)) { CurrentMission = i; Setup.Profile[CurrentProfile].LastMission = CurrentMission; // если уже играли в эту миссию if (Setup.Profile[CurrentProfile].MissionReplayCount[CurrentMission] > 0) { if (Setup.NeedShowHint[5]) { SetCurrentDialogBox(14); } else { ComBuffer = WORKSHOP; CurrentWorkshop = 3; WorkshopCreate(); } } else { ComBuffer = WORKSHOP; CurrentWorkshop = 3; WorkshopCreate(); } } } else { // если не стоим над ним, но можем выбирать SetRect(&SrcRect,0,0,64,64); SetRect(&DstRect,X1+2,Y1+2,X1+62,Y1+62); if (MissionIcon != 0) vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName(MissionIcon[i]), true, 0.8f*MenuContentTransp); if (MissionTitleType[i] == 1) vw_DrawFont(X1+20+64, Y1+9, -610, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], 0.8f*MenuContentTransp, vw_GetText(MissionTitle[i])); else vw_DrawFont(X1+20+64, Y1+9, -610, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], 0.8f*MenuContentTransp, MissionTitle[i]); if (MissionDescrType[i] == 1) vw_DrawFont(X1+20+64, Y1+33, -610, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], 0.8f*MenuContentTransp, vw_GetText(MissionDescr[i])); else vw_DrawFont(X1+20+64, Y1+33, -610, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], 0.8f*MenuContentTransp, MissionDescr[i]); } } Y1 += 64; } // если не стоим над профилями - нужно сбросить флаг if (TMPSoundOnMissionID == -1) SoundOnMissionID = -1; Y1 = 270; // стрелки перемещения списка if (DrawListUpButton(X1+718, Y1, MenuContentTransp, !(StartMission > 0))) { StartMission--; EndMission--; } if (DrawListDownButton(X1+718,Y1+320-32, MenuContentTransp, !(StartMission < AllMission-5))) { StartMission++; EndMission++; } // проверяем колесико мышки, если курсор находится над активной частью SetRect(&DstRect,X1,Y1,X1+750,Y1+320); if (vw_OnRect(&DstRect)) { if (vw_GetWheelStatus() != 0 && !isDialogBoxDrawing()) { StartMission += vw_GetWheelStatus(); EndMission += vw_GetWheelStatus(); if (StartMission < 0) { StartMission = 0; EndMission = 4; } if (EndMission > AllMission-1) { EndMission = AllMission-1; StartMission = EndMission-4; } vw_ResetWheelStatus(); } } else if (vw_GetWheelStatus() != 0) { vw_ResetWheelStatus(); } // выводим отображение положени в списке на полоске со стрелками SetRect(&SrcRect,0,0,32,32); SetRect(&DstRect,X1+750-32+4,Y1+32+((320.0f-64)/AllMission)*StartMission,X1+750-4,Y1+32+((320.0f-64)/AllMission)*(EndMission+1)); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/whitepoint.tga"), true, 0.3f*MenuContentTransp); // обработка перетягивания ползунка отображения позиции списка // если стоим на ползунком и нажали кнопку мышки - "захватываем" if (!SliderUnderMouseControl && vw_OnRect(&DstRect) && vw_GetWindowLBMouse(false) && !isDialogBoxDrawing()) { SliderUnderMouseControl = true; Audio_PlaySound2D(2,1.0f); } // если ползунок был захвачен, но уже не над секцией где его можно перетягивать или отпустили мышку - отпускаем RECT DstRect2; SetRect(&DstRect2,X1+750-32+4,Y1+32,X1+750-4,Y1+32+(320.0f-64)); if ((SliderUnderMouseControl && (!vw_OnRect(&DstRect2) || !vw_GetWindowLBMouse(false))) || isDialogBoxDrawing()) { SliderUnderMouseControl = false; } // просто кликнули на зону перетягивания, не на ползунок if (!vw_OnRect(&DstRect) && vw_OnRect(&DstRect2) && vw_GetWindowLBMouse(false) && !isDialogBoxDrawing()) { SliderUnderMouseControl = true; Audio_PlaySound2D(2,1.0f); vw_SetWindowLBMouse(false); } // отображаем курсором, что можно кликать на полосе прокрутки if (vw_OnRect(&DstRect2)) CurrentCursorStatus = 1; // корректируем его положение ползунка согласно положению мышки if (SliderUnderMouseControl) { int MouseX, MouseY; vw_GetMousePos(&MouseX, &MouseY); int SliderNewPosition = (MouseY - Y1-32)/((320.0f-64)/AllMission); StartMission = 0; EndMission = 4; if (SliderNewPosition > 2) { StartMission = SliderNewPosition-2; EndMission = SliderNewPosition+2; if (SliderNewPosition >= AllMission-2) { StartMission = AllMission-5; EndMission = AllMission-1; } } } int X = Setup.iAspectRatioWidth/2 - 284; int Y = 165+100*5; if (DrawButton256(X,Y, vw_GetText("1_MAIN_MENU"), MenuContentTransp, &Button10Transp, &LastButton10UpdateTime)) { ComBuffer = MAIN_MENU; } X = Setup.iAspectRatioWidth/2 + 28; if (DrawButton256(X,Y, vw_GetText("1_NEXT"), MenuContentTransp, &Button11Transp, &LastButton11UpdateTime, !(CurrentMission >= 0))) { // если уже играли в эту миссию if (Setup.Profile[CurrentProfile].MissionReplayCount[CurrentMission] > 0) { if (Setup.NeedShowHint[5]) { SetCurrentDialogBox(14); } else { ComBuffer = WORKSHOP; CurrentWorkshop = 3; WorkshopCreate(); } } else { ComBuffer = WORKSHOP; CurrentWorkshop = 3; WorkshopCreate(); } } }
//------------------------------------------------------------------------------------ // покупка-апгрейд корпуса //------------------------------------------------------------------------------------ void Workshop_Shipyard() { // затемнение при выводе int SizeI; RECT SrcRect, DstRect; // затемнение SetRect(&SrcRect,0,0,256,256 ); SetRect(&DstRect,Setup.iAspectRatioWidth/2-480,100-32,Setup.iAspectRatioWidth/2-32,450+32); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/back_spot2.tga"), true, 0.45f*MenuContentTransp); SetRect(&DstRect,Setup.iAspectRatioWidth/2+32,100-32,Setup.iAspectRatioWidth/2+480,450+32); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/back_spot2.tga"), true, 0.45f*MenuContentTransp); vw_End2DMode(); WorkshopDrawShip(WorkshopFighterGame, 3); WorkshopDrawShip(WorkshopNewFighter, 2); vw_Start2DMode(-1,1); // условия, при которых корабль купить можно bool CanBuy = false; if (GetWorkshopShipFullCost(Setup.Profile[CurrentProfile].Ship, WorkshopFighterGame) + Setup.Profile[CurrentProfile].Money >= GetWorkshopShipCost(CurrentWorkshopNewFighter)) CanBuy = true; // на новом корабле vw_SetFontSize(24); vw_SetFontOffsetY(2); vw_DrawFont(Setup.iAspectRatioWidth/2-445, 600, 0, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("7_Ships_Stock")); vw_SetFontSize(Setup.FontSize); vw_SetFontOffsetY(8 - ceil(Setup.FontSize/2.0f) + 2); // вывод названия корабля vw_DrawFont(Setup.iAspectRatioWidth/2-448, 50+6, 0, 0, 1.0f, 1.0f,1.0f,0.0f, MenuContentTransp, vw_GetText("7_shipfullname"), vw_GetText(GetWorkshopShipName(CurrentWorkshopNewFighter)), 1); if (DrawButton128_2(Setup.iAspectRatioWidth/2-197,50, vw_GetText("1_Info"), MenuContentTransp, false)) { SetCurrentDialogBox(6); DialogSpaceShip = WorkshopNewFighter; } // находим смещение, чтобы было красиво int SmSizeI = vw_FontSize(vw_GetText("4_Armor:")); int SmSizeI2 = vw_FontSize(vw_GetText("4_Weapons")); if (SmSizeI < SmSizeI2) SmSizeI = SmSizeI2; vw_DrawFont(Setup.iAspectRatioWidth/2-78-40-SmSizeI, 110, 0, 0, 1.0f, 1.0f,1.0f,1.0f, 0.5f*MenuContentTransp, vw_GetText("4_Armor:")); vw_DrawFont(Setup.iAspectRatioWidth/2-78-vw_FontSize("%i", (int)WorkshopNewFighter->StrengthStart), 110, 0, 0, 1.0f, 1.0f,1.0f,1.0f, 0.5f*MenuContentTransp, "%i", (int)WorkshopNewFighter->StrengthStart); vw_DrawFont(Setup.iAspectRatioWidth/2-78-40-SmSizeI, 130, 0, 0, 1.0f, 1.0f,1.0f,1.0f, 0.5f*MenuContentTransp, "%s:", vw_GetText("4_Weapons")); vw_DrawFont(Setup.iAspectRatioWidth/2-78-vw_FontSize("%i", WorkshopNewFighter->WeaponQuantity), 130, 0, 0, 1.0f, 1.0f,1.0f,1.0f, 0.5f*MenuContentTransp, "%i", WorkshopNewFighter->WeaponQuantity); // вывод стоимости корабля if (CanBuy) vw_DrawFont(Setup.iAspectRatioWidth/2-438, 420, 0, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, "%s: %i", vw_GetText("7_Ship_Hull_Cost"), GetWorkshopShipCost(CurrentWorkshopNewFighter)); else vw_DrawFont(Setup.iAspectRatioWidth/2-438, 420, 0, 0, 1.0f, 1.0f,0.5f,0.0f, CurrentAlert3*MenuContentTransp, "%s: %i", vw_GetText("7_Ship_Hull_Cost"), GetWorkshopShipCost(CurrentWorkshopNewFighter)); // рамки SetRect(&SrcRect,0,0,400,35 ); SetRect(&DstRect,Setup.iAspectRatioWidth/2-457,100-11,Setup.iAspectRatioWidth/2-57,100+35-11); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/workshop_panel4.tga"), true, MenuContentTransp); SetRect(&SrcRect,0,0,400,173 ); SetRect(&DstRect,Setup.iAspectRatioWidth/2-457,450-13,Setup.iAspectRatioWidth/2-57,450+173-13); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/workshop_panel1.tga"), true, MenuContentTransp); // проверяем колесо мышки SetRect(&DstRect,Setup.iAspectRatioWidth/2-457,100+35-11,Setup.iAspectRatioWidth/2-57,450-13); if (vw_OnRect(&DstRect)) { if (vw_GetWheelStatus() != 0 && !isDialogBoxDrawing()) { CurrentWorkshopNewFighter += vw_GetWheelStatus(); if (CurrentWorkshopNewFighter < 1) CurrentWorkshopNewFighter = 22; if (CurrentWorkshopNewFighter > 22) CurrentWorkshopNewFighter = 1; WorkshopCreateNewShip(); vw_ResetWheelStatus(); } } else if (vw_GetWheelStatus() != 0) { vw_ResetWheelStatus(); } if (DrawButton128_2(Setup.iAspectRatioWidth/2-395,482, vw_GetText("1_Prev"), MenuContentTransp, false)) { CurrentWorkshopNewFighter --; if (CurrentWorkshopNewFighter < 1) CurrentWorkshopNewFighter = 22; WorkshopCreateNewShip(); } if (DrawButton128_2(Setup.iAspectRatioWidth/2-247,482, vw_GetText("1_Next"), MenuContentTransp, false)) { CurrentWorkshopNewFighter ++; if (CurrentWorkshopNewFighter > 22) CurrentWorkshopNewFighter = 1; WorkshopCreateNewShip(); } if (DrawButton200_2(Setup.iAspectRatioWidth/2-357,533, vw_GetText("1_Buy_Ship"), MenuContentTransp, !CanBuy)) { BuyShip(); } // на корабле игрока vw_SetFontSize(24); vw_SetFontOffsetY(2); vw_DrawFont(Setup.iAspectRatioWidth/2+445-vw_FontSize(vw_GetText("7_Player_Ship")), 600, 0, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("7_Player_Ship")); vw_SetFontSize(Setup.FontSize); vw_SetFontOffsetY(8 - ceil(Setup.FontSize/2.0f) + 2); // вывод названия корабля vw_DrawFont(Setup.iAspectRatioWidth/2+64, 56, 0, 0, 1.0f, 1.0f,1.0f,0.0f, MenuContentTransp, vw_GetText("7_shipfullname"), vw_GetText(GetWorkshopShipName(Setup.Profile[CurrentProfile].Ship)), Setup.Profile[CurrentProfile].ShipHullUpgrade); if (DrawButton128_2(Setup.iAspectRatioWidth/2+315, 50, vw_GetText("1_Info"), MenuContentTransp, false)) { SetCurrentDialogBox(6); DialogSpaceShip = WorkshopFighterGame; } int LinePos = 420; // вывод стомости модернизации // модернизация корпуса bool CanUpgrade = false; if (Setup.Profile[CurrentProfile].ShipHullUpgrade<4) CanUpgrade = true; if (CanUpgrade) { if (Setup.Profile[CurrentProfile].Money < GetWorkshopShipCost(Setup.Profile[CurrentProfile].Ship)) CanUpgrade = false; if (CanUpgrade) vw_DrawFont(Setup.iAspectRatioWidth/2+438-vw_FontSize("%s: %i", vw_GetText("7_Upgrade_Hull_Cost"), GetWorkshopShipCost(Setup.Profile[CurrentProfile].Ship)), LinePos, 0, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, "%s: %i", vw_GetText("7_Upgrade_Hull_Cost"), GetWorkshopShipCost(Setup.Profile[CurrentProfile].Ship)); else vw_DrawFont(Setup.iAspectRatioWidth/2+438-vw_FontSize("%s: %i", vw_GetText("7_Upgrade_Hull_Cost"), GetWorkshopShipCost(Setup.Profile[CurrentProfile].Ship)), LinePos, 0, 0, 1.0f, 1.0f,0.5f,0.0f, CurrentAlert3*MenuContentTransp, "%s: %i", vw_GetText("7_Upgrade_Hull_Cost"), GetWorkshopShipCost(Setup.Profile[CurrentProfile].Ship)); LinePos -= 20; } // вывод стомости ремонта, если нужно bool NeedRepair = false; if (GetWorkshopShipRepairCost(Setup.Profile[CurrentProfile].Ship, WorkshopFighterGame) > 0) { SizeI = vw_FontSize("%s: %i", vw_GetText("7_Repair_Hull_Cost"), GetWorkshopShipRepairCost(Setup.Profile[CurrentProfile].Ship, WorkshopFighterGame)); vw_DrawFont(Setup.iAspectRatioWidth/2+438-SizeI, LinePos, 0, 0, 1.0f, 1.0f,0.0f,0.0f, CurrentAlert3*MenuContentTransp, "%s: %i", vw_GetText("7_Repair_Hull_Cost"), GetWorkshopShipRepairCost(Setup.Profile[CurrentProfile].Ship, WorkshopFighterGame)); LinePos -= 20; NeedRepair = true; // надпись Armor, красная vw_DrawFont(Setup.iAspectRatioWidth/2+74, 110, 0, 0, 1.0f, 1.0f,1.0f,1.0f, 0.5f*MenuContentTransp, vw_GetText("4_Armor:")); SizeI = vw_FontSize("%i/%i", (int)WorkshopFighterGame->Strength, (int)WorkshopFighterGame->StrengthStart); vw_DrawFont(Setup.iAspectRatioWidth/2+74+14+SmSizeI, 110, 0, 0, 1.0f, 1.0f,0.0f,0.0f, CurrentAlert3*MenuContentTransp, "%i/%i", (int)WorkshopFighterGame->Strength, (int)WorkshopFighterGame->StrengthStart); } else { // надпись Armor, нормальная vw_DrawFont(Setup.iAspectRatioWidth/2+74, 110, 0, 0, 1.0f, 1.0f,1.0f,1.0f, 0.5f*MenuContentTransp, vw_GetText("4_Armor:")); SizeI = vw_FontSize("%i/%i", (int)WorkshopFighterGame->Strength, (int)WorkshopFighterGame->StrengthStart); vw_DrawFont(Setup.iAspectRatioWidth/2+74+14+SmSizeI, 110, 0, 0,1.0f, 1.0f,1.0f,1.0f, 0.5f*MenuContentTransp, "%i/%i", (int)WorkshopFighterGame->Strength, (int)WorkshopFighterGame->StrengthStart); } SizeI = SizeI - vw_FontSize("%i", WorkshopFighterGame->WeaponQuantity); vw_DrawFont(Setup.iAspectRatioWidth/2+74, 130, 0, 0, 1.0f, 1.0f,1.0f,1.0f, 0.5f*MenuContentTransp, "%s:", vw_GetText("4_Weapons")); vw_DrawFont(Setup.iAspectRatioWidth/2+74+14+SmSizeI+SizeI, 130, 0, 0, 1.0f, 1.0f,1.0f,1.0f, 0.5f*MenuContentTransp, "%i", WorkshopFighterGame->WeaponQuantity); // вывод стоимости корабля (со всеми системами) SizeI = vw_FontSize("%s: %i", vw_GetText("7_Ship_Cost"), GetWorkshopShipFullCost(Setup.Profile[CurrentProfile].Ship, WorkshopFighterGame)); vw_DrawFont(Setup.iAspectRatioWidth/2+438-SizeI, LinePos, 0, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, "%s: %i", vw_GetText("7_Ship_Cost"), GetWorkshopShipFullCost(Setup.Profile[CurrentProfile].Ship, WorkshopFighterGame)); // рамки SetRect(&SrcRect,0,0,400,35 ); SetRect(&DstRect,Setup.iAspectRatioWidth/2+57,100-11,Setup.iAspectRatioWidth/2+457,100+35-11); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/workshop_panel4.tga"), true, MenuContentTransp); SetRect(&SrcRect,0,0,400,173 ); SetRect(&DstRect,Setup.iAspectRatioWidth/2+57,450-13,Setup.iAspectRatioWidth/2+457,450+173-13); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/workshop_panel1+.tga"), true, MenuContentTransp); if (DrawButton200_2(Setup.iAspectRatioWidth/2+153, 482, vw_GetText("1_Repair_Hull"), MenuContentTransp, !NeedRepair)) { RepairShip(); } if (DrawButton200_2(Setup.iAspectRatioWidth/2+153, 533, vw_GetText("1_Upgrade_Hull"), MenuContentTransp, !CanUpgrade)) { UpgradeShip(); } // вывод информации vw_SetFontSize(20); vw_SetFontOffsetY(2); SizeI = (Setup.iAspectRatioWidth-vw_FontSize("%s: %i", vw_GetText("3_Money"), Setup.Profile[CurrentProfile].Money))/2; if (CanBuy) vw_DrawFont(SizeI, 630, 0, 0, 1.0f, 1.0f,1.0f,0.0f, MenuContentTransp, "%s: %i", vw_GetText("3_Money"), Setup.Profile[CurrentProfile].Money); else vw_DrawFont(SizeI, 630, 0, 0, 1.0f, 1.0f,0.5f,0.0f, CurrentAlert3*MenuContentTransp, "%s: %i", vw_GetText("3_Money"), Setup.Profile[CurrentProfile].Money); vw_SetFontSize(Setup.FontSize); vw_SetFontOffsetY(8 - ceil(Setup.FontSize/2.0f) + 2); }
void SetMenu(eGameStatus Menu) { Audio_PlaySound2D(3,1.0f); switch (Menu) { case PROFILE: NewProfileNamePos = 0; memset(NewProfileName, 0, sizeof(NewProfileName)); break; case OPTIONS: case OPTIONS_ADVANCED: case CONFCONTROL: SetOptionsMenu(Menu); break; case TOP_SCORES: // копируем исходные данные for (int i=0; i<10; i++) { strcpy(GameName[i], Setup.TopScores[i].Name); GameScore[i] = Setup.TopScores[i].Score; } // проверяем профайлы for (int j=0; j<5; j++) if (Setup.Profile[j].Used) { AddTopScores(Setup.Profile[j].Experience, Setup.Profile[j].Name, true); } break; case MISSION: vw_ResetWheelStatus(); // ставим нужный лист миссий StartMission = 0; EndMission = 4; if (CurrentMission != -1) if (CurrentMission > 2)// нужно сдвинуть лист, чтобы выбранный элемент был по середине списка { StartMission = CurrentMission-2; EndMission = CurrentMission+2; if (CurrentMission >= AllMission-2) { StartMission = AllMission-5; EndMission = AllMission-1; } } break; case INFORMATION: vw_ResetWheelStatus(); CreateNum = 1; CreateInfoObject(); break; case CREDITS: CreditsCurrentPos = 0.0f; LastCreditsCurrentPosUpdateTime = vw_GetTime(); break; default: break; } NextMenu = Menu; // прячем текущее меню NeedShowMenu = false; NeedHideMenu = true; LastMenuUpdateTime = vw_GetTime(); }