//------------------------------------------------------------------------------------ // покупка-апгрейд корпуса //------------------------------------------------------------------------------------ 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_DrawFont(Setup.iAspectRatioWidth/2-445, 600, 0, 0, 1.5f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("7_Ships_Stock")); // вывод названия корабля 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); 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_DrawFont(Setup.iAspectRatioWidth/2+445-vw_FontSize(vw_GetText("7_Player_Ship"))*1.5f, 600, 0, 0, 1.5f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("7_Player_Ship")); // вывод названия корабля 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(); } // вывод информации SizeI = (Setup.iAspectRatioWidth-vw_FontSize("%s: %i", vw_GetText("3_Money"), Setup.Profile[CurrentProfile].Money)*1.25f)/2; if (CanBuy) vw_DrawFont(SizeI, 630, 0, 0, 1.25f, 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.25f, 1.0f,0.5f,0.0f, CurrentAlert3*MenuContentTransp, "%s: %i", vw_GetText("3_Money"), Setup.Profile[CurrentProfile].Money); }
//----------------------------------------------------------------------------- // Прорисовываем все объекты //----------------------------------------------------------------------------- void DrawAllObject3D(int DrawType) { // ставим всегда меньше или равно! vw_DepthTest(true, RI_LESSEQUAL); bool ShadowMap = false; if (Setup.ShadowMap > 0) { switch (DrawType) { // меню case 1: ShadowMap_StartRenderToFBO(VECTOR3D(50,-5,-120), 120.0f, 500.0f); break; // игра case 2: ShadowMap_StartRenderToFBO(VECTOR3D(0,0,160), 600.0f, 800.0f); break; } DrawAllSpaceShip(true, 0); DrawAllWeapon(true, 0); DrawAllGroundObject(true, 0); DrawAllProjectile(true, 0); DrawAllExplosion(true); DrawAllSpaceObject(true, 0); ShadowMap_EndRenderToFBO(); // работаем с 3-м стейджем текстур (первые два у нас заняты) ShadowMap = true; ShadowMap_StartFinalRender(); } // космические объекты DrawAllSpaceObject(false, ShadowMap); // корабли DrawAllSpaceShip(false, ShadowMap); // оружие DrawAllWeapon(false, ShadowMap); // наземные объекты DrawAllGroundObject(false, ShadowMap); // снаряды DrawAllProjectile(false, ShadowMap); if (Setup.ShadowMap > 0) { ShadowMap_EndFinalRender(); } // взрывы #ifndef PANDORA DrawAllExplosion(false); #endif // эффекты - самые последние в прорисовке! vw_DrawAllParticleSystems(); // второй слой тайловой анимации "пыли" StarSystemDrawSecondLayer(DrawType); // эмуляция гаммы, фактически это простой пост эффект, всегда самый последний в прорисовке if( Setup.Brightness != 5 ) { // RI_2f_XY | RI_1_TEX float buff[4*4]; int k=0; buff[k++] = 0.0f; buff[k++] = 0.0f; buff[k++] = 1.0f; buff[k++] = 0.0f; buff[k++] = 0.0f; buff[k++] = Setup.fAspectRatioHeight; buff[k++] = 1.0f; buff[k++] = 1.0f; buff[k++] = Setup.fAspectRatioWidth; buff[k++] = 0.0f; buff[k++] = 0.0f; buff[k++] = 0.0f; buff[k++] = Setup.fAspectRatioWidth; buff[k++] = Setup.fAspectRatioHeight; buff[k++] = 0.0f; buff[k++] = 1.0f; eTexture *TileTexture = vw_FindTextureByName("DATA/MENU/whitepoint.tga"); vw_SetTexture(0, TileTexture); float BrightnessF = 1.0f + (Setup.Brightness - 5)/5.0f; if( BrightnessF > 1.0f ) { vw_SetTextureBlend(true, RI_BLEND_DESTCOLOR, RI_BLEND_ONE); vw_SetColor(BrightnessF-1.0f, BrightnessF-1.0f, BrightnessF-1.0f, 1.0f); } else { vw_SetTextureBlend(true, RI_BLEND_ZERO, RI_BLEND_SRCCOLOR); vw_SetColor(BrightnessF, BrightnessF, BrightnessF, 1.0f); } vw_Start2DMode(-1,1); vw_SendVertices(RI_TRIANGLE_STRIP, 4, RI_2f_XY | RI_1_TEX, buff, 4*sizeof(float)); vw_End2DMode(); vw_SetTextureBlend(false, 0, 0); vw_BindTexture(0, 0); } }
//------------------------------------------------------------------------------------ // прорисовка меню //------------------------------------------------------------------------------------ void DrawMenu() { // делаем плавное появление меню if (NeedShowMenu) { MenuContentTransp = 2.4f*(vw_GetTime()-LastMenuUpdateTime); if (MenuContentTransp >= 1.0f) { MenuContentTransp = 1.0f; NeedShowMenu = false; LastMenuUpdateTime = vw_GetTime(); // выводим подсказку, если нужно if (GameStatus == PROFILE) if (Setup.NeedShowHint[0]) SetCurrentDialogBox(9); if (GameStatus == WORKSHOP) { if (CurrentWorkshop == 1) if (Setup.NeedShowHint[1]) SetCurrentDialogBox(10); if (CurrentWorkshop == 2) if (Setup.NeedShowHint[2]) SetCurrentDialogBox(11); if (CurrentWorkshop == 3) if (Setup.NeedShowHint[3]) SetCurrentDialogBox(12); } if (GameStatus == MISSION) { // проверяем, если в одном из профайлов уже открыли 3 миссии - выводим хинт с пожертвованием bool NeedShowDonate = false; for (int i=0; i<5; i++) { if (Setup.Profile[i].Used) if (Setup.Profile[i].ByMissionExperience[2] > 0) NeedShowDonate = true; } if (NeedShowDonate) if (Setup.NeedShowHint[6]) SetCurrentDialogBox(15); } } } // делаем полавное угасание меню if (NeedHideMenu) { MenuContentTransp = 1.0f - 2.4f*(vw_GetTime() - LastMenuUpdateTime); if (MenuContentTransp <= 0.0f) { MenuContentTransp = 0.0f; SetMenu2(NextMenu); LastMenuUpdateTime = vw_GetTime(); NeedShowMenu = true; NeedHideMenu = false; } } vw_SetCameraMoveAroundPoint(VECTOR3D(0,0,0), 0.0f, VECTOR3D(0.0f, 0.0f, 0.0f)); vw_CameraLookAt(); // всегда первым рисуем скайбокс и "далекое" окружение StarSystemUpdate(); StarSystemDraw(1); // рисуем название игры, чтобы звезды и корабли пролетали перед ним vw_Start2DMode(-1,1); // надпись AstroMenace RECT SrcRect, DstRect; SetRect(&SrcRect,0,0,863,128 ); int StartX = (Setup.iAspectRatioWidth - 863)/2; SetRect(&DstRect,StartX,10,StartX+863,10+128); if (GameStatus != WORKSHOP && GameStatus != INFORMATION && GameStatus != INTERFACE && GameStatus != OPTIONS && GameStatus != CONFCONTROL && GameStatus != OPTIONS_ADVANCED) { vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/astromenace.tga"), true, MenuContentTransp, 0.0f, RI_UL_CORNER, 1.0f, 1.0f, 1.0f); } vw_End2DMode(); // рисуем все 3д объекты DrawAllObject3D(1); // после полной прорисовки делаем обновление данных UpdateAllObject3D(vw_GetTime()); vw_UpdateAllParticleSystems(vw_GetTime()); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // работаем со скриптом, пока он есть //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if (Script != 0) if (!Script->Update(vw_GetTime())) { // удаляем скрипт delete Script; Script = 0; } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // переходим в 2д режим для прорисовки всех 2д частей //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ vw_Start2DMode(-1,1); switch(GameStatus) { case MAIN_MENU: MainMenu(); break; case TOP_SCORES: TopScoresMenu(); break; case INTERFACE: InterfaceMenu(MenuContentTransp, &Button10Transp, &LastButton10UpdateTime); break; case OPTIONS: OptionsMenu(MenuContentTransp, &Button10Transp, &LastButton10UpdateTime, &Button11Transp, &LastButton11UpdateTime); break; case OPTIONS_ADVANCED: OptionsAdvMenu(MenuContentTransp, &Button10Transp, &LastButton10UpdateTime, &Button11Transp, &LastButton11UpdateTime); break; case INFORMATION: InformationMenu(); break; case CREDITS: CreditsMenu(); break; case CONFCONTROL: ConfControlMenu(MenuContentTransp, &Button10Transp, &LastButton10UpdateTime); break; case PROFILE: ProfileMenu(); break; case DIFFICULTY: DifficultyMenu(); break; case MISSION: MissionMenu(); break; case WORKSHOP: WorkshopMenu(); break; default: break; } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // последнее - вывод версии и копирайта //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Version vw_DrawFont(6, 740, 0, 0, 1.0f, 1.0f,1.0f,1.0f, 0.99f, "%s %s %s %i", vw_GetText("11_Version"), GAME_VERSION, vw_GetText("11_build"), GAME_BUILD); // Copyright int CSize = vw_FontSize("%s © 2007-2012, Viewizard", vw_GetText("11_Copyright")); vw_DrawFont(Setup.iAspectRatioWidth-7-CSize, 740, 0, 0, 1.0f, 1.0f,1.0f,1.0f, 0.99f, "%s © 2007-2012, Viewizard", vw_GetText("11_Copyright")); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // завершение прорисовки //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ vw_End2DMode(); // если нужно - рисуем в окошке еще одном switch(GameStatus) { case INFORMATION: InformationDrawObject(); break; default: break; } // черное затемнение, если нужно if (NeedOnMenu) { MenuBlackTransp = 1.0f - 2.4f*(vw_GetTime() - LastMenuOnOffUpdateTime); if (MenuBlackTransp <= 0.0f) { MenuBlackTransp = 0.0f; NeedOnMenu = false; LastMenuOnOffUpdateTime = vw_GetTime(); } vw_Start2DMode(-1,1); RECT SrcRect, DstRect; SetRect(&SrcRect,0,0,2,2); SetRect(&DstRect,0,0,Setup.iAspectRatioWidth,768); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/blackpoint.tga"), true, MenuBlackTransp); vw_End2DMode(); } // черное затемнение, если нужно if (NeedOffMenu) { MenuBlackTransp = 2.4f*(vw_GetTime() - LastMenuOnOffUpdateTime); if (MenuBlackTransp >= 1.0f) { MenuBlackTransp = 1.0f; NeedOffMenu = false; LastMenuOnOffUpdateTime = vw_GetTime(); // переход на игру WorkshopDestroyData(); ComBuffer = GAME; } vw_Start2DMode(-1,1); RECT SrcRect, DstRect; SetRect(&SrcRect,0,0,2,2); SetRect(&DstRect,0,0,Setup.iAspectRatioWidth,768); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/blackpoint.tga"), true, MenuBlackTransp); vw_End2DMode(); } }
//------------------------------------------------------------------------------------ // покупка-установка систем корабля //------------------------------------------------------------------------------------ void Workshop_Workshop() { RECT SrcRect, DstRect; SetRect(&SrcRect,0,0,256,256); SetRect(&DstRect,Setup.iAspectRatioWidth/2-256,0,Setup.iAspectRatioWidth/2-256+512,412); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/back_spot.tga"), true, 0.35f*MenuContentTransp); vw_End2DMode(); WorkshopDrawShip(WorkshopFighterGame, 1); vw_Start2DMode(-1,1); SetRect(&SrcRect,0,0,210,600); SetRect(&DstRect,Setup.iAspectRatioWidth/2-492,50-10,Setup.iAspectRatioWidth/2-492+210,50+600-10); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/workshop_panel2.tga"), true, MenuContentTransp); // стрелки SetRect(&SrcRect,0,0,74,120); SetRect(&DstRect,Setup.iAspectRatioWidth/2-461,494,Setup.iAspectRatioWidth/2-461+74,494+120); int MouseX, MouseY; vw_GetMousePos(&MouseX, &MouseY); if (((DstRect.right-8 >= MouseX)& (DstRect.left+8<= MouseX)& (DstRect.bottom-10 >= MouseY)& (DstRect.top+10<= MouseY)) && !isDialogBoxDrawing()) { if (NeedPlayWorkshopOnButtonSoundX != DstRect.left || NeedPlayWorkshopOnButtonSoundY != DstRect.top) { Audio_PlaySound2D(1,1.0f); NeedPlayWorkshopOnButtonSoundX = DstRect.left; NeedPlayWorkshopOnButtonSoundY = DstRect.top; } CurrentCursorStatus = 1; if (vw_GetWindowLBMouse(true)) { Audio_PlaySound2D(2,1.0f); CurrentSystemStockNum = GetPrevSystemStockNum(); } vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/arrows_on.tga"), true, MenuContentTransp); } else { if (NeedPlayWorkshopOnButtonSoundX == DstRect.left && NeedPlayWorkshopOnButtonSoundY == DstRect.top) { NeedPlayWorkshopOnButtonSoundX = 0; NeedPlayWorkshopOnButtonSoundY = 0; } vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/arrows_off.tga"), true, MenuContentTransp); } SetRect(&SrcRect,74,0,148,120); SetRect(&DstRect,Setup.iAspectRatioWidth/2-461+74,494,Setup.iAspectRatioWidth/2-461+148,494+120); if (((DstRect.right-8 >= MouseX)& (DstRect.left+8<= MouseX)& (DstRect.bottom-10 >= MouseY)& (DstRect.top+10<= MouseY)) && !isDialogBoxDrawing()) { if (NeedPlayWorkshopOnButtonSoundX != DstRect.left || NeedPlayWorkshopOnButtonSoundY != DstRect.top) { Audio_PlaySound2D(1,1.0f); NeedPlayWorkshopOnButtonSoundX = DstRect.left; NeedPlayWorkshopOnButtonSoundY = DstRect.top; } CurrentCursorStatus = 1; if (vw_GetWindowLBMouse(true)) { Audio_PlaySound2D(2,1.0f); CurrentSystemStockNum = GetNextSystemStockNum(); } vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/arrows_on.tga"), true, MenuContentTransp); } else { if (NeedPlayWorkshopOnButtonSoundX == DstRect.left && NeedPlayWorkshopOnButtonSoundY == DstRect.top) { NeedPlayWorkshopOnButtonSoundX = 0; NeedPlayWorkshopOnButtonSoundY = 0; } vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/arrows_off.tga"), true, MenuContentTransp); } // выводим иконки систем в магазине, по которым тоже можно кликать SetRect(&SrcRect,0,0,128,128); SetRect(&DstRect,Setup.iAspectRatioWidth/2-436,50+20+5-5,Setup.iAspectRatioWidth/2-338,50+128-20+5+5); if (vw_OnRect(&DstRect) && !isDialogBoxDrawing()) { if (NeedPlayWorkshopOnButtonSoundX != DstRect.left || NeedPlayWorkshopOnButtonSoundY != DstRect.top) { Audio_PlaySound2D(1,1.0f); NeedPlayWorkshopOnButtonSoundX = DstRect.left; NeedPlayWorkshopOnButtonSoundY = DstRect.top; } CurrentCursorStatus = 1; if (vw_GetWindowLBMouse(true)) { CurrentSystemStockNum = GetPrevSystemStockNum(); Audio_PlaySound2D(2,1.0f); } vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(GetPrevSystemStockNum()), true, MenuContentTransp); int Size = vw_FontSize(vw_GetText(GetSystemName(GetPrevSystemStockNum()))); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-20, WScale, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText(GetSystemName(GetPrevSystemStockNum()))); } else { if (NeedPlayWorkshopOnButtonSoundX == DstRect.left && NeedPlayWorkshopOnButtonSoundY == DstRect.top) { NeedPlayWorkshopOnButtonSoundX = 0; NeedPlayWorkshopOnButtonSoundY = 0; } vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(GetPrevSystemStockNum()), true, 0.35f*MenuContentTransp); int Size = vw_FontSize(vw_GetText(GetSystemName(GetPrevSystemStockNum()))); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-20, WScale, 0, 1.0f, 1.0f,1.0f,1.0f, 0.35f*MenuContentTransp, vw_GetText(GetSystemName(GetPrevSystemStockNum()))); } SetRect(&SrcRect,0,0,128,128); SetRect(&DstRect,Setup.iAspectRatioWidth/2-451,55+128+20,Setup.iAspectRatioWidth/2-451+128,55+128+128+20); vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(CurrentSystemStockNum), true, MenuContentTransp); int Size = vw_FontSize(vw_GetText(GetSystemName(CurrentSystemStockNum))); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-20, WScale, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText(GetSystemName(CurrentSystemStockNum))); if (vw_OnRect(&DstRect) && !isDialogBoxDrawing()) CurrentCursorStatus = 1; SetRect(&SrcRect,0,0,128,128); SetRect(&DstRect,Setup.iAspectRatioWidth/2-451+20-5,60+20+256+40-5-5,Setup.iAspectRatioWidth/2-451+128-20+5,60-20+128+256+40-5 +5); if (vw_OnRect(&DstRect) && !isDialogBoxDrawing()) { if (NeedPlayWorkshopOnButtonSoundX != DstRect.left || NeedPlayWorkshopOnButtonSoundY != DstRect.top) { Audio_PlaySound2D(1,1.0f); NeedPlayWorkshopOnButtonSoundX = DstRect.left; NeedPlayWorkshopOnButtonSoundY = DstRect.top; } CurrentCursorStatus = 1; if (vw_GetWindowLBMouse(true)) { Audio_PlaySound2D(2,1.0f); CurrentSystemStockNum = GetNextSystemStockNum(); } vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(GetNextSystemStockNum()), true, MenuContentTransp); int Size = vw_FontSize(vw_GetText(GetSystemName(GetNextSystemStockNum()))); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-20, WScale, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText(GetSystemName(GetNextSystemStockNum()))); } else { if (NeedPlayWorkshopOnButtonSoundX == DstRect.left && NeedPlayWorkshopOnButtonSoundY == DstRect.top) { NeedPlayWorkshopOnButtonSoundX = 0; NeedPlayWorkshopOnButtonSoundY = 0; } vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(GetNextSystemStockNum()), true, 0.35f*MenuContentTransp); int Size = vw_FontSize(vw_GetText(GetSystemName(GetNextSystemStockNum()))); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-20, WScale, 0, 1.0f, 1.0f,1.0f,1.0f, 0.35f*MenuContentTransp, vw_GetText(GetSystemName(GetNextSystemStockNum()))); } vw_DrawFont(Setup.iAspectRatioWidth/2-475, 630, 0, 0, 1.5f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("7_System_Stock")); SetRect(&SrcRect,0,0,210,600); SetRect(&DstRect,Setup.iAspectRatioWidth/2+282,50-10,Setup.iAspectRatioWidth/2+492,50+600-10); vw_DrawTransparent(&DstRect, &SrcRect, vw_FindTextureByName("DATA/MENU/workshop_panel2+.tga"), true, MenuContentTransp); // проверяем, а все ли нормально с энергией... если не нормально, будем моргать и выведем соотв. надпись bool NeedMoreEnergy = false; if (Setup.Profile[CurrentProfile].PowerSystem != 0) { float Have = GetShipRechargeEnergy(Setup.Profile[CurrentProfile].PowerSystem); float Need = 0.0f; // если это не аркадный режим, нужно учитывать двигатель if (Setup.Profile[CurrentProfile].SpaceShipControlMode != 1) if (Setup.Profile[CurrentProfile].EngineSystem != 0) Need += GetShipEngineSystemEnergyUse(Setup.Profile[CurrentProfile].EngineSystem); // если есть спец система, ее нужно тоже учитывать if (Setup.Profile[CurrentProfile].AdvancedProtectionSystem != 0) Need += GetShipProtectionSystemEnergyUse(Setup.Profile[CurrentProfile].AdvancedProtectionSystem); // слабый реактор if (Need >= Have) NeedMoreEnergy = true; } else { // у нас вообще нет реактора... караул!!! NeedMoreEnergy = true; } // выводим информационную надпись + голосовое сообщение if (NeedMoreEnergy) { // запускаем голос... if (vw_FindSoundByNum(VoiceNeedMoreEnergy) == 0) { // уже не играем, нужно запустить опять VoiceNeedMoreEnergy = Audio_PlayVoice(6, 1.0f); } // вывод текста int SizeI = (Setup.iAspectRatioWidth-vw_FontSize(vw_GetText("9_14Line1")))/2; vw_DrawFont(SizeI, 60, 0, 0, 1.0f, 1.0f,0.0f,0.0f, CurrentAlert3*MenuContentTransp, vw_GetText("9_14Line1")); SizeI = (Setup.iAspectRatioWidth-vw_FontSize(vw_GetText("9_14Line2")))/2; vw_DrawFont(SizeI, 80, 0, 0, 1.0f, 1.0f,0.0f,0.0f, CurrentAlert3*MenuContentTransp, vw_GetText("9_14Line2")); SizeI = (Setup.iAspectRatioWidth-vw_FontSize(vw_GetText("9_14Line3")))/2; vw_DrawFont(SizeI, 100, 0, 0, 1.0f, 1.0f,0.0f,0.0f, CurrentAlert3*MenuContentTransp, vw_GetText("9_14Line3")); } // сбор данных float Current = 0.5f; int Cost = 0; bool CanSell = false; bool CanBuy = true; // Engine SetRect(&DstRect,Setup.iAspectRatioWidth/2+337,70,Setup.iAspectRatioWidth/2+437,70+100); if (CurrentSystemStockNum>=1 && CurrentSystemStockNum<=4) { if (Setup.Profile[CurrentProfile].EngineSystem != 0) { CanSell = true; Cost = GetSystemCost(Setup.Profile[CurrentProfile].EngineSystem); if (Cost + Setup.Profile[CurrentProfile].Money < GetSystemCost(CurrentSystemStockNum)) CanBuy = false; } else { if (Setup.Profile[CurrentProfile].Money < GetSystemCost(CurrentSystemStockNum)) CanBuy = false; } } // Power SetRect(&DstRect,Setup.iAspectRatioWidth/2+337,180,Setup.iAspectRatioWidth/2+437,180+100); if (CurrentSystemStockNum>=5 && CurrentSystemStockNum<=8) { if (Setup.Profile[CurrentProfile].PowerSystem != 0) { CanSell = true; Cost = GetSystemCost(Setup.Profile[CurrentProfile].PowerSystem+4); if (Cost + Setup.Profile[CurrentProfile].Money < GetSystemCost(CurrentSystemStockNum)) CanBuy = false; } else { if (Setup.Profile[CurrentProfile].Money < GetSystemCost(CurrentSystemStockNum)) CanBuy = false; } } // Target SetRect(&DstRect,Setup.iAspectRatioWidth/2+337,290,Setup.iAspectRatioWidth/2+437,290+100); if (CurrentSystemStockNum>=9 && CurrentSystemStockNum<=12) { if (Setup.Profile[CurrentProfile].TargetingSystem != 0) { CanSell = true; Cost = GetSystemCost(Setup.Profile[CurrentProfile].TargetingSystem+8); if (Cost + Setup.Profile[CurrentProfile].Money < GetSystemCost(CurrentSystemStockNum)) CanBuy = false; } else { if (Setup.Profile[CurrentProfile].Money < GetSystemCost(CurrentSystemStockNum)) CanBuy = false; } } // Mech SetRect(&DstRect,Setup.iAspectRatioWidth/2+337,400,Setup.iAspectRatioWidth/2+437,400+100); if (CurrentSystemStockNum>=13 && CurrentSystemStockNum<=16) { if (Setup.Profile[CurrentProfile].TargetingMechanicSystem != 0) { CanSell = true; Cost = GetSystemCost(Setup.Profile[CurrentProfile].TargetingMechanicSystem+12); if (Cost + Setup.Profile[CurrentProfile].Money < GetSystemCost(CurrentSystemStockNum)) CanBuy = false; } else { if (Setup.Profile[CurrentProfile].Money < GetSystemCost(CurrentSystemStockNum)) CanBuy = false; } } // Protect SetRect(&DstRect,Setup.iAspectRatioWidth/2+337,510,Setup.iAspectRatioWidth/2+437,510+100); if (CurrentSystemStockNum>=17 && CurrentSystemStockNum<=20) { if (Setup.Profile[CurrentProfile].AdvancedProtectionSystem != 0) { CanSell = true; Cost = GetSystemCost(Setup.Profile[CurrentProfile].AdvancedProtectionSystem+16); if (Cost + Setup.Profile[CurrentProfile].Money < GetSystemCost(CurrentSystemStockNum)) CanBuy = false; } else { if (Setup.Profile[CurrentProfile].Money < GetSystemCost(CurrentSystemStockNum)) CanBuy = false; } } // прорисовка // Engine SetRect(&SrcRect,0,0,128,128); SetRect(&DstRect,Setup.iAspectRatioWidth/2+337,70,Setup.iAspectRatioWidth/2+437,70+100); Current = 0.5f; float ColorR, ColorG, ColorB; ColorR = ColorG = ColorB = 1.0f; if (NeedMoreEnergy && Setup.Profile[CurrentProfile].EngineSystem != 0 && Setup.Profile[CurrentProfile].SpaceShipControlMode != 1) { ColorR = 1.0f; ColorG = 0.0f; ColorB = 0.0f; } if (CurrentSystemStockNum>=1 && CurrentSystemStockNum<=4) { if (!NeedMoreEnergy || Setup.Profile[CurrentProfile].EngineSystem == 0 || Setup.Profile[CurrentProfile].SpaceShipControlMode == 1) { if (CanBuy) {ColorR = 0.0f; ColorG = 0.8f; ColorB = 0.0f;} else {ColorR = 1.0f; ColorG = 0.5f; ColorB = 0.0f;} } Current = 1.0f; } if (vw_OnRect(&DstRect) && !isDialogBoxDrawing()) { if (NeedPlayWorkshopOnButtonSoundX != DstRect.left || NeedPlayWorkshopOnButtonSoundY != DstRect.top) { Audio_PlaySound2D(1,1.0f); NeedPlayWorkshopOnButtonSoundX = DstRect.left; NeedPlayWorkshopOnButtonSoundY = DstRect.top; } Current = 1.0f; CurrentCursorStatus = 1; if (vw_GetWindowLBMouse(true)) { CurrentSystemStockNum = 1; Audio_PlaySound2D(2,1.0f); } } else { if (NeedPlayWorkshopOnButtonSoundX == DstRect.left && NeedPlayWorkshopOnButtonSoundY == DstRect.top) { NeedPlayWorkshopOnButtonSoundX = 0; NeedPlayWorkshopOnButtonSoundY = 0; } } if (Setup.Profile[CurrentProfile].EngineSystem <= 0) { vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(-4), true, Current*MenuContentTransp); int Size = vw_FontSize(vw_GetText("3_empty")); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.top-4, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText("3_empty")); Size = vw_FontSize(vw_GetText("4_Spaceship_Engine")); WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-20, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText("4_Spaceship_Engine")); } else { vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(Setup.Profile[CurrentProfile].EngineSystem), true, Current*MenuContentTransp); int Size = vw_FontSize(vw_GetText(GetSystemName(Setup.Profile[CurrentProfile].EngineSystem))); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-70, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText(GetSystemName(Setup.Profile[CurrentProfile].EngineSystem))); } // Power SetRect(&DstRect,Setup.iAspectRatioWidth/2+337,180,Setup.iAspectRatioWidth/2+437,180+100); ColorR = ColorG = ColorB = 1.0f; if (NeedMoreEnergy) { ColorR = 1.0f; ColorG = 0.0f; ColorB = 0.0f; } Current = 0.5f; if (CurrentSystemStockNum>=5 && CurrentSystemStockNum<=8) { if (!NeedMoreEnergy) { if (CanBuy) {ColorR = 0.0f; ColorG = 0.8f; ColorB = 0.0f;} else {ColorR = 1.0f; ColorG = 0.5f; ColorB = 0.0f;} } Current = 1.0f; } if (vw_OnRect(&DstRect) && !isDialogBoxDrawing()) { if (NeedPlayWorkshopOnButtonSoundX != DstRect.left || NeedPlayWorkshopOnButtonSoundY != DstRect.top) { Audio_PlaySound2D(1,1.0f); NeedPlayWorkshopOnButtonSoundX = DstRect.left; NeedPlayWorkshopOnButtonSoundY = DstRect.top; } Current = 1.0f; CurrentCursorStatus = 1; if (vw_GetWindowLBMouse(true)) { CurrentSystemStockNum = 5; Audio_PlaySound2D(2,1.0f); } } else { if (NeedPlayWorkshopOnButtonSoundX == DstRect.left && NeedPlayWorkshopOnButtonSoundY == DstRect.top) { NeedPlayWorkshopOnButtonSoundX = 0; NeedPlayWorkshopOnButtonSoundY = 0; } } if (Setup.Profile[CurrentProfile].PowerSystem <= 0) { vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(-2), true, Current*MenuContentTransp); int Size = vw_FontSize(vw_GetText("3_empty")); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.top-4, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText("3_empty")); Size = vw_FontSize(vw_GetText("4_Power_Source")); WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-20, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText("4_Power_Source")); } else { vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(Setup.Profile[CurrentProfile].PowerSystem+4), true, Current*MenuContentTransp); int Size = vw_FontSize(vw_GetText(GetSystemName(Setup.Profile[CurrentProfile].PowerSystem+4))); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-70, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText(GetSystemName(Setup.Profile[CurrentProfile].PowerSystem+4))); } // Target SetRect(&DstRect,Setup.iAspectRatioWidth/2+337,290,Setup.iAspectRatioWidth/2+437,290+100); ColorR = ColorG = ColorB = 1.0f; Current = 0.5f; if (CurrentSystemStockNum>=9 && CurrentSystemStockNum<=12) { if (CanBuy) {ColorR = 0.0f; ColorG = 0.8f; ColorB = 0.0f;} else {ColorR = 1.0f; ColorG = 0.5f; ColorB = 0.0f;} Current = 1.0f; } if (vw_OnRect(&DstRect) && !isDialogBoxDrawing()) { if (NeedPlayWorkshopOnButtonSoundX != DstRect.left || NeedPlayWorkshopOnButtonSoundY != DstRect.top) { Audio_PlaySound2D(1,1.0f); NeedPlayWorkshopOnButtonSoundX = DstRect.left; NeedPlayWorkshopOnButtonSoundY = DstRect.top; } Current = 1.0f; CurrentCursorStatus = 1; if (vw_GetWindowLBMouse(true)) { CurrentSystemStockNum = 9; Audio_PlaySound2D(2,1.0f); } } else { if (NeedPlayWorkshopOnButtonSoundX == DstRect.left && NeedPlayWorkshopOnButtonSoundY == DstRect.top) { NeedPlayWorkshopOnButtonSoundX = 0; NeedPlayWorkshopOnButtonSoundY = 0; } } if (Setup.Profile[CurrentProfile].TargetingSystem <= 0) { vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(-1), true, Current*MenuContentTransp); int Size = vw_FontSize(vw_GetText("3_empty")); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.top-4, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText("3_empty")); Size = vw_FontSize(vw_GetText("4_Optical_Computer")); WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-20, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText("4_Optical_Computer")); } else { vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(Setup.Profile[CurrentProfile].TargetingSystem+8), true, Current*MenuContentTransp); int Size = vw_FontSize(vw_GetText(GetSystemName(Setup.Profile[CurrentProfile].TargetingSystem+8))); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-70, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText(GetSystemName(Setup.Profile[CurrentProfile].TargetingSystem+8))); } // Mech SetRect(&DstRect,Setup.iAspectRatioWidth/2+337,400,Setup.iAspectRatioWidth/2+437,400+100); ColorR = ColorG = ColorB = 1.0f; Current = 0.5f; if (CurrentSystemStockNum>=13 && CurrentSystemStockNum<=16) { if (CanBuy) {ColorR = 0.0f; ColorG = 0.8f; ColorB = 0.0f;} else {ColorR = 1.0f; ColorG = 0.5f; ColorB = 0.0f;} Current = 1.0f; } if (vw_OnRect(&DstRect) && !isDialogBoxDrawing()) { if (NeedPlayWorkshopOnButtonSoundX != DstRect.left || NeedPlayWorkshopOnButtonSoundY != DstRect.top) { Audio_PlaySound2D(1,1.0f); NeedPlayWorkshopOnButtonSoundX = DstRect.left; NeedPlayWorkshopOnButtonSoundY = DstRect.top; } Current = 1.0f; CurrentCursorStatus = 1; if (vw_GetWindowLBMouse(true)) { Audio_PlaySound2D(2,1.0f); CurrentSystemStockNum = 13; } } else { if (NeedPlayWorkshopOnButtonSoundX == DstRect.left && NeedPlayWorkshopOnButtonSoundY == DstRect.top) { NeedPlayWorkshopOnButtonSoundX = 0; NeedPlayWorkshopOnButtonSoundY = 0; } } if (Setup.Profile[CurrentProfile].TargetingMechanicSystem <= 0) { vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(-3), true, Current*MenuContentTransp); int Size = vw_FontSize(vw_GetText("3_empty")); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.top-4, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText("3_empty")); Size = vw_FontSize(vw_GetText("4_Targeting_System")); WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-20, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText("4_Targeting_System")); } else { vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(Setup.Profile[CurrentProfile].TargetingMechanicSystem+12), true, Current*MenuContentTransp); int Size = vw_FontSize(vw_GetText(GetSystemName(Setup.Profile[CurrentProfile].TargetingMechanicSystem+12))); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-70, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText(GetSystemName(Setup.Profile[CurrentProfile].TargetingMechanicSystem+12))); } // Protect SetRect(&DstRect,Setup.iAspectRatioWidth/2+337,510,Setup.iAspectRatioWidth/2+437,510+100); ColorR = ColorG = ColorB = 1.0f; if (NeedMoreEnergy && Setup.Profile[CurrentProfile].AdvancedProtectionSystem != 0) { ColorR = 1.0f; ColorG = 0.0f; ColorB = 0.0f; } Current = 0.5f; if (CurrentSystemStockNum>=17 && CurrentSystemStockNum<=20) { if (!NeedMoreEnergy || Setup.Profile[CurrentProfile].AdvancedProtectionSystem == 0) { if (CanBuy) {ColorR = 0.0f; ColorG = 0.8f; ColorB = 0.0f;} else {ColorR = 1.0f; ColorG = 0.5f; ColorB = 0.0f;} } Current = 1.0f; } if (vw_OnRect(&DstRect) && !isDialogBoxDrawing()) { if (NeedPlayWorkshopOnButtonSoundX != DstRect.left || NeedPlayWorkshopOnButtonSoundY != DstRect.top) { Audio_PlaySound2D(1,1.0f); NeedPlayWorkshopOnButtonSoundX = DstRect.left; NeedPlayWorkshopOnButtonSoundY = DstRect.top; } Current = 1.0f; CurrentCursorStatus = 1; if (vw_GetWindowLBMouse(true)) { Audio_PlaySound2D(2,1.0f); CurrentSystemStockNum = 17; } } else { if (NeedPlayWorkshopOnButtonSoundX == DstRect.left && NeedPlayWorkshopOnButtonSoundY == DstRect.top) { NeedPlayWorkshopOnButtonSoundX = 0; NeedPlayWorkshopOnButtonSoundY = 0; } } if (Setup.Profile[CurrentProfile].AdvancedProtectionSystem <= 0) { vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(0), true, Current*MenuContentTransp); int Size = vw_FontSize(vw_GetText("3_empty")); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.top-4, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText("3_empty")); Size = vw_FontSize(vw_GetText("4_Advanced_System")); WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-20, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText("4_Advanced_System")); } else { vw_DrawTransparent(&DstRect, &SrcRect, GetSystemIcon(Setup.Profile[CurrentProfile].AdvancedProtectionSystem+16), true, Current*MenuContentTransp); int Size = vw_FontSize(vw_GetText(GetSystemName(Setup.Profile[CurrentProfile].AdvancedProtectionSystem+16))); float WScale = 0; if (Size > 128) { Size = 128; WScale = -128; } vw_DrawFont(DstRect.left+(DstRect.right-DstRect.left-Size)/2, DstRect.bottom-70, WScale, 0, 1.0f, ColorR,ColorG,ColorB, Current*MenuContentTransp, vw_GetText(GetSystemName(Setup.Profile[CurrentProfile].AdvancedProtectionSystem+16))); } vw_DrawFont(Setup.iAspectRatioWidth/2+475-vw_FontSize(vw_GetText("7_Installed_Systems"))*1.5f, 630, 0, 0, 1.5f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("7_Installed_Systems")); // текущая система vw_DrawFont(Setup.iAspectRatioWidth/2-250, 430, 0, 0, 1.0f, 1.0f,1.0f,0.0f, MenuContentTransp, vw_GetText("7_Selected_System")); vw_DrawFont(Setup.iAspectRatioWidth/2+250-vw_FontSize(vw_GetText("7_Installed_System")), 430, 0, 0, 1.0f, 1.0f,1.0f,0.0f, MenuContentTransp, vw_GetText("7_Installed_System")); if (CanBuy) vw_DrawFont(Setup.iAspectRatioWidth/2-250, 485, 0, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, "%s: %i", vw_GetText("7_Cost"), GetSystemCost(CurrentSystemStockNum)); else vw_DrawFont(Setup.iAspectRatioWidth/2-250, 485, 0, 0, 1.0f, 1.0f,0.5f,0.0f, CurrentAlert3*MenuContentTransp, "%s: %i", vw_GetText("7_Cost"), GetSystemCost(CurrentSystemStockNum)); vw_DrawFont(Setup.iAspectRatioWidth/2+250-vw_FontSize("%s: %i", vw_GetText("7_Cost"), Cost), 485, 0, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, "%s: %i", vw_GetText("7_Cost"), Cost); if (DrawButton128_2(Setup.iAspectRatioWidth/2-250,580-55, vw_GetText("1_Info"), MenuContentTransp, false)) { SetCurrentDialogBox(8); DialogSystem = CurrentSystemStockNum; } if (DrawButton128_2(Setup.iAspectRatioWidth/2+250-128,580-55, vw_GetText("1_Info"), MenuContentTransp, !CanSell)) { SetCurrentDialogBox(8); NeedMoreEnergyDialog = NeedMoreEnergy; if (CurrentSystemStockNum>=1 && CurrentSystemStockNum<=4) DialogSystem = Setup.Profile[CurrentProfile].EngineSystem; if (CurrentSystemStockNum>=5 && CurrentSystemStockNum<=8) DialogSystem = Setup.Profile[CurrentProfile].PowerSystem+4; if (CurrentSystemStockNum>=9 && CurrentSystemStockNum<=12) DialogSystem = Setup.Profile[CurrentProfile].TargetingSystem+8; if (CurrentSystemStockNum>=13 && CurrentSystemStockNum<=16) DialogSystem = Setup.Profile[CurrentProfile].TargetingMechanicSystem+12; if (CurrentSystemStockNum>=17 && CurrentSystemStockNum<=20) DialogSystem = Setup.Profile[CurrentProfile].AdvancedProtectionSystem+16; } if (DrawButton128_2(Setup.iAspectRatioWidth/2-250,50+580-55, vw_GetText("1_Buy"), MenuContentTransp, !CanBuy)) { BuyCurrentSystem(); } // покупка, если 2 раза кликнули на иконку текущей системы SetRect(&DstRect,Setup.iAspectRatioWidth/2-451,55+128+20,Setup.iAspectRatioWidth/2-451+128,55+128+128+20); if (vw_OnRect(&DstRect) && !isDialogBoxDrawing() && CanBuy) if (vw_GetWindowLBDoubleMouse(true)) BuyCurrentSystem(); if (DrawButton128_2(Setup.iAspectRatioWidth/2+250-128,50+580-55, vw_GetText("1_Sell"), MenuContentTransp, !CanSell)) { SellCurrentSystem(); } // вывод информации int SizeI = (Setup.iAspectRatioWidth-vw_FontSize("%s: %i", vw_GetText("3_Money"), Setup.Profile[CurrentProfile].Money)*1.25f)/2; if (CanBuy) vw_DrawFont(SizeI, 630, 0, 0, 1.25f, 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.25f, 1.0f,0.5f,0.0f, CurrentAlert3*MenuContentTransp, "%s: %i", vw_GetText("3_Money"), Setup.Profile[CurrentProfile].Money); }