From 1622973ffa457faebb61b9cde233018255f071b7 Mon Sep 17 00:00:00 2001 From: PerikiyoXD Date: Tue, 24 Mar 2020 19:50:08 +0100 Subject: [PATCH 001/112] Implement Init for Stats --- src/core/Stats.cpp | 78 ++++++++++++++++++++++++++++++++++++++++++++-- src/core/Stats.h | 15 +++++++-- 2 files changed, 88 insertions(+), 5 deletions(-) diff --git a/src/core/Stats.cpp b/src/core/Stats.cpp index 93eeb759..cdd20b66 100644 --- a/src/core/Stats.cpp +++ b/src/core/Stats.cpp @@ -12,7 +12,7 @@ bool& CStats::SuburbanPassed = *(bool*)0x8F2740; int32 &CStats::NumberKillFrenziesPassed = *(int32*)0x8E287C; int32 &CStats::PeopleKilledByOthers = *(int32*)0x8E2C50; int32 &CStats::HelisDestroyed = *(int32*)0x8E2A64; -int32 *CStats::PedsKilledOfThisType = (int32*)0x880DBC; +int32(&CStats::PedsKilledOfThisType)[NUM_PEDTYPES] = *(int32(*)[NUM_PEDTYPES]) * (uintptr*)0x880DBC; int32 &CStats::TimesDied = *(int32*)0x8E2BDC; int32 &CStats::TimesArrested = *(int32*)0x8E2BEC; int32 &CStats::KillsSinceLastCheckpoint = *(int32*)0x8F2C8C; @@ -48,9 +48,79 @@ int32& CStats::LongestFlightInDodo = *(int32*)0x8F5FE4; int32& CStats::TimeTakenDefuseMission = *(int32*)0x880E24; int32& CStats::TotalNumberKillFrenzies = *(int32*)0x8E2884; int32& CStats::TotalNumberMissions = *(int32*)0x8E2820; +int32& CStats::ShotsMade = *(int32*)0x8E2BE8; +int32& CStats::KgsOfExplosivesUsed = *(int32*)0x8F2510; +int32& CStats::InstantHitsFiredByPlayer = *(int32*)0x943070; +int32& CStats::InstantHitsHitByPlayer = *(int32*)0x95CB8C; +int32& CStats::BestTimeBombDefusal = *(int32*)0x880E24; +int32& CStats::mmRain = *(int32*)0x8F2C98; +int32& CStats::CarsCrushed = *(int32*)0x943050; int32(&CStats::FastestTimes)[CStats::TOTAL_FASTEST_TIMES] = *(int32(*)[CStats::TOTAL_FASTEST_TIMES])*(uintptr*)0x6E9128; int32(&CStats::HighestScores)[CStats::TOTAL_HIGHEST_SCORES] = *(int32(*)[CStats::TOTAL_HIGHEST_SCORES]) * (uintptr*)0x8622B0; +void CStats::Init() +{ + PeopleKilledByOthers = 0; + PeopleKilledByPlayer = 0; + ShotsMade = 0; + CarsExploded = 0; + HelisDestroyed = 0; + ProgressMade = 0; + KgsOfExplosivesUsed = 0; + InstantHitsFiredByPlayer = 0; + InstantHitsHitByPlayer = 0; + CarsCrushed = 0; + HeadsPopped = 0; + TimesArrested = 0; + TimesDied = 0; + DaysPassed = 0; + NumberOfUniqueJumpsFound = 0; + mmRain = 0; + MaximumJumpFlips = 0; + MaximumJumpSpins = 0; + MaximumJumpDistance = 0; + MaximumJumpHeight = 0; + BestStuntJump = 0; + TotalNumberOfUniqueJumps = 0; + Record4x4One = 0; + LongestFlightInDodo = 0; + Record4x4Two = 0; + PassengersDroppedOffWithTaxi = 0; + Record4x4Three = 0; + MoneyMadeWithTaxi = 0; + Record4x4Mayhem = 0; + LivesSavedWithAmbulance = 0; + ElBurroTime = 0; + CriminalsCaught = 0; + MissionsGiven = 0; + HighestLevelAmbulanceMission = 0; + MissionsPassed = 0; + FiresExtinguished = 0; + DistanceTravelledOnFoot = 0; + TimeTakenDefuseMission = 0; + NumberKillFrenziesPassed = 0; + DistanceTravelledInVehicle = 0; + TotalNumberKillFrenzies = 0; + TotalNumberMissions = 0; + KillsSinceLastCheckpoint = 0; + TotalLegitimateKills = 0; + for (int i = 0; i < TOTAL_FASTEST_TIMES; i++) + { + FastestTimes[i] = 0; + } + for (int i = 0; i < TOTAL_HIGHEST_SCORES; i++) + { + HighestScores[i] = 0; + } + for (int i = 0; i < NUM_PEDTYPES; i++) + { + PedsKilledOfThisType[i] = 0; + } + IndustrialPassed = 0; + CommercialPassed = 0; + SuburbanPassed = 0; +} + void CStats::RegisterFastestTime(int32 index, int32 time) { assert(index >= 0 && index < TOTAL_FASTEST_TIMES); @@ -136,4 +206,8 @@ void CStats::SetTotalNumberMissions(int32 total) TotalNumberMissions = total; } -WRAPPER void CStats::Init() { EAXJMP(0x4AAC60); } \ No newline at end of file +//WRAPPER void CStats::Init() { EAXJMP(0x4AAC60); } + +STARTPATCHES + InjectHook(0x48C5A3, CStats::Init, PATCH_JUMP); // CGame::ReInitGameObjectVariables +ENDPATCHES \ No newline at end of file diff --git a/src/core/Stats.h b/src/core/Stats.h index 0a750d5e..826dcd73 100644 --- a/src/core/Stats.h +++ b/src/core/Stats.h @@ -1,5 +1,7 @@ #pragma once +#include "PedType.h" + class CStats { public: @@ -8,14 +10,14 @@ public: TOTAL_HIGHEST_SCORES = 16 }; static int32 &DaysPassed; - static int32 &HeadsPopped; + static int32 &HeadsPopped; static bool& CommercialPassed; static bool& IndustrialPassed; static bool& SuburbanPassed; static int32 &NumberKillFrenziesPassed; static int32 &PeopleKilledByOthers; static int32 &HelisDestroyed; - static int32 *PedsKilledOfThisType; //[NUM_PEDTYPES] + static int32(&PedsKilledOfThisType)[ePedType::NUM_PEDTYPES]; static int32 &TimesDied; static int32 &TimesArrested; static int32 &KillsSinceLastCheckpoint; @@ -50,7 +52,14 @@ public: static int32 &LongestFlightInDodo; static int32 &TimeTakenDefuseMission; static int32 &TotalNumberKillFrenzies; - static int32 &TotalNumberMissions; + static int32 &TotalNumberMissions; + static int32 &ShotsMade; + static int32 &KgsOfExplosivesUsed; + static int32 &InstantHitsFiredByPlayer; + static int32 &InstantHitsHitByPlayer; + static int32 &BestTimeBombDefusal; + static int32 &mmRain; + static int32 &CarsCrushed; static int32(&FastestTimes)[TOTAL_FASTEST_TIMES]; static int32(&HighestScores)[TOTAL_HIGHEST_SCORES]; From bd7a59e58ea92ad135bf737e07a5c422b4364eb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Sat, 4 Apr 2020 14:39:58 +0300 Subject: [PATCH 002/112] Frontend (last-3) --- src/core/Frontend.cpp | 1091 ++++++++++++++++++++++++++++++++++++--- src/core/Frontend.h | 63 ++- src/core/PlayerSkin.cpp | 4 - src/core/Radar.cpp | 122 ++++- src/core/Radar.h | 15 +- src/core/config.h | 1 + 6 files changed, 1211 insertions(+), 85 deletions(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 4fefe9a9..fa97dd13 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -31,7 +31,7 @@ #define DONT_USE_SUSPICIOUS_FUNCS 1 #define TIDY_UP_PBP // ProcessButtonPresses #define MAX_VISIBLE_LIST_ROW 30 -#define LIST_HEIGHT 263.0f +#define SCROLLBAR_MAX_HEIGHT 263.0f // actually it's 273. but calculating it from scrollbar drawing code gives 287. i don't know #ifdef PS2_LIKE_MENU BottomBarOption bbNames[8]; @@ -44,8 +44,6 @@ int curBottomBarOption = -1; int hoveredBottomBarOption = -1; #endif -WRAPPER void CMenuManager::PrintController(void) { EAXJMP(0x483990); } - int32 &CMenuManager::OS_Language = *(int32*)0x5F2F78; // 9 int8 &CMenuManager::m_PrefsUseVibration = *(int8*)0x95CD92; int8 &CMenuManager::m_DisplayControllerOnFoot = *(int8*)0x95CD8D; @@ -160,7 +158,7 @@ const char* MenuFilenames[][2] = { #ifdef ASPECT_RATIO_SCALE // All of the defines below replace the StretchX function. Otherwise use SCREEN_SCALE_X. #define MENU_X_LEFT_ALIGNED(x) ScaleAndCenterX(x) -#define MENU_X_RIGHT_ALIGNED(x) ScaleAndCenterX(DEFAULT_SCREEN_WIDTH - x) +#define MENU_X_RIGHT_ALIGNED(x) ScaleAndCenterX(DEFAULT_SCREEN_WIDTH - (x)) #define MENU_X(x) SCREEN_SCALE_X(x) #define MENU_Y(y) SCREEN_SCALE_Y(y) float @@ -224,7 +222,7 @@ ScaleAndCenterX(float x) #define ProcessSlider(value, increaseAction, decreaseAction, hoverStartX, hoverEndX) \ do { \ - lastBarX = DisplaySlider(SCREEN_STRETCH_FROM_RIGHT(MENUSLIDER_X + columnWidth), MENU_Y(bitAboveNextItemY), MENU_Y(freeSpaceInLine), MENU_Y(usableLineHeight), MENU_X(MENUSLIDER_UNK), value); \ + lastBarX = DisplaySlider(SCREEN_STRETCH_FROM_RIGHT(MENUSLIDER_X + columnWidth), MENU_Y(bitAboveNextItemY), MENU_Y(smallestSliderBar), MENU_Y(usableLineHeight), MENU_X(MENUSLIDER_UNK), value); \ if (i != m_nCurrOption || !itemsAreSelectable) \ break; \ \ @@ -248,7 +246,7 @@ CMenuManager::ScrollUpListByOne() if (m_nFirstVisibleRowOnList > 0) { m_nSelectedListRow--; m_nFirstVisibleRowOnList--; - m_nCurListItemY -= LIST_HEIGHT / m_nTotalListRow; + m_nScrollbarTopMargin -= SCROLLBAR_MAX_HEIGHT / m_nTotalListRow; } } else { m_nSelectedListRow--; @@ -262,7 +260,7 @@ CMenuManager::ScrollDownListByOne() if (m_nFirstVisibleRowOnList < m_nTotalListRow - MAX_VISIBLE_LIST_ROW) { m_nSelectedListRow++; m_nFirstVisibleRowOnList++; - m_nCurListItemY += LIST_HEIGHT / m_nTotalListRow; + m_nScrollbarTopMargin += SCROLLBAR_MAX_HEIGHT / m_nTotalListRow; } } else { if (m_nSelectedListRow < m_nTotalListRow - 1) { @@ -285,7 +283,7 @@ CMenuManager::PageUpList(bool playSoundOnSuccess) m_nFirstVisibleRowOnList = 0; m_nSelectedListRow = 0; } - m_nCurListItemY = (LIST_HEIGHT / m_nTotalListRow) * m_nFirstVisibleRowOnList; + m_nScrollbarTopMargin = (SCROLLBAR_MAX_HEIGHT / m_nTotalListRow) * m_nFirstVisibleRowOnList; } } @@ -303,7 +301,7 @@ CMenuManager::PageDownList(bool playSoundOnSuccess) m_nFirstVisibleRowOnList = m_nTotalListRow - MAX_VISIBLE_LIST_ROW; m_nSelectedListRow = m_nTotalListRow - 1; } - m_nCurListItemY = (LIST_HEIGHT / m_nTotalListRow) * m_nFirstVisibleRowOnList; + m_nScrollbarTopMargin = (SCROLLBAR_MAX_HEIGHT / m_nTotalListRow) * m_nFirstVisibleRowOnList; } } @@ -555,7 +553,7 @@ void CMenuManager::Draw() CFont::SetJustifyOn(); CFont::SetBackGroundOnlyTextOn(); CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENUACTION_X_MARGIN)); - CFont::SetRightJustifyWrap(SCREEN_SCALE_X(38.0f)); + CFont::SetRightJustifyWrap(SCREEN_SCALE_X(MENUACTION_WIDTH)); switch (m_nCurrScreen) { case MENUPAGE_STATS: @@ -591,7 +589,7 @@ void CMenuManager::Draw() } CFont::SetFontStyle(FONT_BANK); - CFont::SetScale(MENU_X(0.9f * actionTextScaleX), MENU_Y(0.9f * actionTextScaleY)); + CFont::SetScale(MENU_X(MENUACTION_SCALE_MULT * actionTextScaleX), MENU_Y(MENUACTION_SCALE_MULT * actionTextScaleY)); CFont::SetRightJustifyOff(); // AG used SetAlignment(ALIGN_LEFT); CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255))); @@ -674,7 +672,7 @@ void CMenuManager::Draw() headerHeight = 38; lineHeight = 20; CFont::SetFontStyle(FONT_BANK); - CFont::SetScale(MENU_X(actionTextScaleX = 0.45f), MENU_Y(actionTextScaleY = 0.7f)); + CFont::SetScale(MENU_X(actionTextScaleX = SMALLTEXT_X_SCALE), MENU_Y(actionTextScaleY = SMALLTEXT_Y_SCALE)); CFont::SetRightJustifyOff(); break; case MENUPAGE_NEW_GAME_RELOAD: @@ -740,7 +738,7 @@ void CMenuManager::Draw() } float usableLineHeight = lineHeight * 0.9f; // also height of biggest bar in slider - float freeSpaceInLine = lineHeight * 0.1f; // also height of smallest bar in slider(weird) + float smallestSliderBar = lineHeight * 0.1f; bool foundTheHoveringItem = false; wchar unicodeTemp[64]; @@ -1156,9 +1154,9 @@ void CMenuManager::Draw() break; } - if (m_nCurrScreen == MENUPAGE_CONTROLLER_SETTINGS) { + if (m_nCurrScreen == MENUPAGE_CONTROLLER_SETTINGS) PrintController(); - } + /* else if (m_nCurrScreen == MENUPAGE_SKIN_SELECT_OLD) { CSprite2d::DrawRect(CRect(StretchX(180), MENU_Y(98), StretchX(230), MENU_Y(123)), CRGBA(255, 255, 255, FadeIn(255))); CSprite2d::DrawRect(CRect(StretchX(181), MENU_Y(99), StretchX(229), MENU_Y(233)), CRGBA(Player color from PickNewPlayerColour, FadeIn(255))); @@ -1167,14 +1165,365 @@ void CMenuManager::Draw() } #endif -#if 1 -WRAPPER void CMenuManager::DrawControllerBound(int, int, int, uint8) { EAXJMP(0x489710); } -#else -void CMenuManager::DrawControllerBound(int, int, int, uint8) -{ - +int +CMenuManager::GetNumOptionsCntrlConfigScreens(void) +{ + int number = 0; + switch (m_nCurrScreen) + { + case MENUPAGE_CONTROLLER_PC_OLD3: + number = 2; + break; + case MENUPAGE_CONTROLLER_DEBUG: + number = 4; + break; + case MENUPAGE_KEYBOARD_CONTROLS: + switch (m_ControlMethod) { + case CONTROL_STANDART: + number = 25; + break; + case CONTROL_CLASSIC: + number = 30; + break; + } + break; + } + return number; } + +void +CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 column) +{ + int controllerAction = PED_FIREWEAPON; + // GetStartOptionsCntrlConfigScreens(); + int numOptions = GetNumOptionsCntrlConfigScreens(); + int bindingMargin = MENU_X(3.0f); + float rowHeight; + switch (CMenuManager::m_ControlMethod) { + case CONTROL_STANDART: + rowHeight = 10.7f; + break; + case CONTROL_CLASSIC: + rowHeight = 9.0f; + break; + default: + break; + } + + // MENU_Y(rowHeight * 0.0f + yStart); + for (int optionIdx = 0, nextY = MENU_Y(yStart); optionIdx < numOptions; nextY = MENU_Y(++optionIdx * rowHeight + yStart)) { + int nextX = xStart; + int bindingsForThisOpt = 0; + CFont::SetColor(CRGBA(155, 155, 155, FadeIn(255))); + + if (column == CONTSETUP_PED_COLUMN) { + switch (optionIdx) { + case 0: + controllerAction = PED_FIREWEAPON; + break; + case 1: + controllerAction = PED_CYCLE_WEAPON_RIGHT; + break; + case 2: + controllerAction = PED_CYCLE_WEAPON_LEFT; + break; + case 3: + controllerAction = GO_FORWARD; + break; + case 4: + controllerAction = GO_BACK; + break; + case 5: + controllerAction = GO_LEFT; + break; + case 6: + controllerAction = GO_RIGHT; + break; + case 7: + controllerAction = PED_SNIPER_ZOOM_IN; + break; + case 8: + controllerAction = PED_SNIPER_ZOOM_OUT; + break; + case 9: + controllerAction = VEHICLE_ENTER_EXIT; + break; + case 10: + case 11: + case 12: + case 16: + case 18: + case 19: + case 20: + case 21: + controllerAction = -1; + break; + case 13: + controllerAction = CAMERA_CHANGE_VIEW_ALL_SITUATIONS; + break; + case 14: + controllerAction = PED_JUMPING; + break; + case 15: + controllerAction = PED_SPRINT; + break; + case 17: + controllerAction = PED_LOCK_TARGET; + break; + case 22: + controllerAction = PED_LOOKBEHIND; + break; + case 23: + if (CMenuManager::m_ControlMethod == CONTROL_STANDART) + controllerAction = -1; + else + controllerAction = PED_1RST_PERSON_LOOK_LEFT; + break; + case 24: + if (CMenuManager::m_ControlMethod == CONTROL_STANDART) + controllerAction = -1; + else + controllerAction = PED_1RST_PERSON_LOOK_RIGHT; + break; + case 25: + controllerAction = PED_1RST_PERSON_LOOK_UP; + break; + case 26: + controllerAction = PED_1RST_PERSON_LOOK_DOWN; + break; + case 27: + controllerAction = PED_CYCLE_TARGET_LEFT; + break; + case 28: + controllerAction = PED_CYCLE_TARGET_RIGHT; + break; + case 29: + controllerAction = PED_CENTER_CAMERA_BEHIND_PLAYER; + break; + default: + break; + } + } else if (column == CONTSETUP_VEHICLE_COLUMN) { + switch (optionIdx) { + case 0: + controllerAction = PED_FIREWEAPON; + break; + case 1: + case 2: + case 7: + case 8: + case 14: + case 15: + case 17: + case 25: + case 26: + case 27: + case 28: + case 29: + controllerAction = -1; + break; + case 3: + controllerAction = VEHICLE_ACCELERATE; + break; + case 4: + controllerAction = VEHICLE_BRAKE; + break; + case 5: + controllerAction = GO_LEFT; + break; + case 6: + controllerAction = GO_RIGHT; + break; + case 9: + controllerAction = VEHICLE_ENTER_EXIT; + break; + case 10: + controllerAction = VEHICLE_CHANGE_RADIO_STATION; + break; + case 11: + controllerAction = VEHICLE_HORN; + break; + case 12: + controllerAction = TOGGLE_SUBMISSIONS; + break; + case 13: + controllerAction = CAMERA_CHANGE_VIEW_ALL_SITUATIONS; + break; + case 16: + controllerAction = VEHICLE_HANDBRAKE; + break; + case 18: + controllerAction = VEHICLE_TURRETLEFT; + break; + case 19: + controllerAction = VEHICLE_TURRETRIGHT; + break; + case 20: + controllerAction = VEHICLE_TURRETUP; + break; + case 21: + controllerAction = VEHICLE_TURRETDOWN; + break; + case 22: + controllerAction = -2; + break; + case 23: + controllerAction = VEHICLE_LOOKLEFT; + break; + case 24: + controllerAction = VEHICLE_LOOKRIGHT; + break; + default: + break; + } + } + int bindingWhite = 155; + + // Highlight selected column(and make its text black) + if (m_nSelectedListRow == optionIdx) { + int bgY = m_nSelectedListRow * rowHeight + yStart + 1.0f; + if (m_nCurrExLayer == HOVEROPTION_LIST) { + + if (column == CONTSETUP_PED_COLUMN && m_nSelectedContSetupColumn == CONTSETUP_PED_COLUMN) { +#ifdef FIX_BUGS + if (controllerAction == -1) { + CSprite2d::DrawRect(CRect(nextX, MENU_Y(bgY), nextX + MENU_X(190.0f), MENU_Y(bgY + 10)), CRGBA(235, 170, 50, FadeIn(150))); + } else { + CSprite2d::DrawRect(CRect(nextX, MENU_Y(bgY), nextX + MENU_X(190.0f), MENU_Y(bgY + 10)), CRGBA(255, 217, 106, FadeIn(210))); + } +#else + if (controllerAction == -1) { + CSprite2d::DrawRect(CRect(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(bgY), MENU_X_LEFT_ALIGNED(400.0f), MENU_Y(bgY + 10)), CRGBA(235, 170, 50, FadeIn(150))); + } else { + CSprite2d::DrawRect(CRect(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(bgY), MENU_X_LEFT_ALIGNED(400.0f), MENU_Y(bgY + 10)), CRGBA(255, 217, 106, FadeIn(210))); + } #endif + CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255))); + bindingWhite = 0; + + } else if (column == CONTSETUP_VEHICLE_COLUMN && m_nSelectedContSetupColumn == CONTSETUP_VEHICLE_COLUMN) { +#ifdef FIX_BUGS + if (controllerAction == -1) { + CSprite2d::DrawRect(CRect(nextX, MENU_Y(bgY), nextX + MENU_X(190.0f), MENU_Y(bgY + 10)), CRGBA(235, 170, 50, FadeIn(150))); + } else { + CSprite2d::DrawRect(CRect(nextX, MENU_Y(bgY), nextX + MENU_X(190.0f), MENU_Y(bgY + 10)), CRGBA(255, 217, 106, FadeIn(210))); + } +#else + if (controllerAction == -1) { + CSprite2d::DrawRect(CRect(MENU_X_LEFT_ALIGNED(410.0f), MENU_Y(bgY), MENU_X_LEFT_ALIGNED(600.0f), MENU_Y(bgY + 10)), CRGBA(235, 170, 50, FadeIn(150))); + } else { + CSprite2d::DrawRect(CRect(MENU_X_LEFT_ALIGNED(410.0f), MENU_Y(bgY), MENU_X_LEFT_ALIGNED(600.0f), MENU_Y(bgY + 10)), CRGBA(255, 217, 106, FadeIn(210))); + } +#endif + CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255))); + bindingWhite = 0; + } + } + } + + // Print bindings, including seperator (-) between them + CFont::SetScale(MENU_X(0.25f), MENU_Y(0.6f)); + for (int contSetOrder = SETORDER_1; contSetOrder < MAX_SETORDERS && controllerAction != -1; contSetOrder++) { + wchar *settingText = ControlsManager.GetControllerSettingTextWithOrderNumber((e_ControllerAction)controllerAction, (eContSetOrder)contSetOrder); + if (settingText) { + ++bindingsForThisOpt; + if (bindingsForThisOpt > 1) { + wchar *seperator = TheText.Get("FEC_IBT"); + CFont::SetColor(CRGBA(20, 20, 20, FadeIn(80))); + CFont::PrintString(nextX, nextY, seperator); + CFont::SetColor(CRGBA(bindingWhite, bindingWhite, bindingWhite, FadeIn(255))); + nextX += CFont::GetStringWidth(seperator, true) + bindingMargin; + } + CFont::PrintString(nextX, nextY, settingText); + nextX += CFont::GetStringWidth(settingText, true) + bindingMargin; + } + } + if (controllerAction == -1) { + CFont::SetColor(CRGBA(20, 20, 20, FadeIn(80))); + CFont::PrintString(nextX, nextY, TheText.Get("FEC_NUS")); // not used + } else if (controllerAction == -2) { + CFont::SetColor(CRGBA(20, 20, 20, FadeIn(80))); + CFont::PrintString(nextX, nextY, TheText.Get("FEC_CMP")); // combo: l+r + } else if (bindingsForThisOpt == 0) { + if (m_nSelectedListRow != optionIdx) { + CFont::SetColor(CRGBA(255, 255, 255, FadeIn(255))); + CFont::PrintString(nextX, nextY, TheText.Get("FEC_UNB")); // unbound + } else if (m_bWaitingForNewKeyBind) { + if (column != m_nSelectedContSetupColumn) { + CFont::SetColor(CRGBA(255, 255, 255, FadeIn(255))); + CFont::PrintString(nextX, nextY, TheText.Get("FEC_UNB")); // unbound + } + } else { + if (column != m_nSelectedContSetupColumn) { + CFont::SetColor(CRGBA(255, 255, 255, FadeIn(255))); + } + CFont::PrintString(nextX, nextY, TheText.Get("FEC_UNB")); // unbound + } + } + + if (column == CONTSETUP_PED_COLUMN && m_nSelectedContSetupColumn == CONTSETUP_PED_COLUMN || + column == CONTSETUP_VEHICLE_COLUMN && m_nSelectedContSetupColumn == CONTSETUP_VEHICLE_COLUMN) { + + if (optionIdx == m_nSelectedListRow && controllerAction != -1 && controllerAction != -2) { + m_CurrCntrlAction = controllerAction; + if (m_bWaitingForNewKeyBind) { + static bool showWaitingText = false; + if (bindingsForThisOpt > 0) { + wchar *seperator = TheText.Get("FEC_IBT"); + CFont::PrintString(nextX, nextY, seperator); + nextX += CFont::GetStringWidth(seperator, true) + bindingMargin; + } + static uint32 lastWaitingTextFlash = 0; + if (CTimer::GetTimeInMillisecondsPauseMode() - lastWaitingTextFlash > 150) { + showWaitingText = !showWaitingText; + lastWaitingTextFlash = CTimer::GetTimeInMillisecondsPauseMode(); + } + if (showWaitingText) { + CFont::SetColor(CRGBA(55, 55, 55, FadeIn(255))); + CFont::PrintString(nextX, nextY, TheText.Get("FEC_QUE")); // "???" + } + CFont::SetCentreOn(); + CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE), MENU_Y(SMALLESTTEXT_Y_SCALE)); + CFont::SetFontStyle(FONT_HEADING); + CFont::SetColor(CRGBA(255, 255, 255, FadeIn(255))); + if (m_bKeyChangeNotProcessed) { + CFont::PrintString(MENU_X_LEFT_ALIGNED(275.0f), SCREEN_SCALE_FROM_BOTTOM(114.0f), TheText.Get("FET_CIG")); // BACKSPACE TO CLEAR - LMB,RETURN TO CHANGE + } else { + CFont::PrintString(MENU_X_LEFT_ALIGNED(275.0f), SCREEN_SCALE_FROM_BOTTOM(114.0f), TheText.Get("FET_RIG")); // SELECT A NEW CONTROL FOR THIS ACTION OR ESC TO CANCEL + } + + CFont::SetRightJustifyOff(); + CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE), MENU_Y(SMALLESTTEXT_Y_SCALE)); + CFont::SetFontStyle(0); + if (!m_bKeyIsOK) + DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); + + m_bKeyIsOK = true; + } else { + CFont::SetCentreOn(); + CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE), MENU_Y(SMALLESTTEXT_Y_SCALE)); + CFont::SetFontStyle(FONT_HEADING); + CFont::SetColor(CRGBA(255, 255, 255, FadeIn(255))); + CFont::PrintString(MENU_X_LEFT_ALIGNED(275.0f), SCREEN_SCALE_FROM_BOTTOM(114.0f), TheText.Get("FET_CIG")); // BACKSPACE TO CLEAR - LMB,RETURN TO CHANGE + CFont::SetRightJustifyOff(); + CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE), MENU_Y(SMALLESTTEXT_Y_SCALE)); + CFont::SetFontStyle(FONT_BANK); + m_bKeyIsOK = false; + m_bKeyChangeNotProcessed = false; + } + } else if (optionIdx == m_nSelectedListRow) { + CFont::SetCentreOn(); + CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE), MENU_Y(SMALLESTTEXT_Y_SCALE)); + CFont::SetFontStyle(FONT_HEADING); + CFont::SetColor(CRGBA(55, 55, 55, FadeIn(255))); + CFont::PrintString(MENU_X_LEFT_ALIGNED(275.0f), SCREEN_SCALE_FROM_BOTTOM(114.0f), TheText.Get("FET_EIG")); // CANNOT SET A CONTROL FOR THIS ACTION + CFont::SetRightJustifyOff(); + CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE), MENU_Y(SMALLESTTEXT_Y_SCALE)); + CFont::SetFontStyle(FONT_BANK); + } + } + } +} #if 1 WRAPPER void CMenuManager::DrawControllerScreenExtraText(int, int, int) { EAXJMP(0x4892F0); } @@ -1427,7 +1776,7 @@ void CMenuManager::DrawFrontEndNormal() hoveredBottomBarOption = -1; if (curBottomBarOption != -1) { - // This active tab sprite is weird... + // This active tab sprite is needlessly big m_aFrontEndSprites[FE2_TABACTIVE].Draw(CRect(leftPadding - MENU_X(2.0f) + (optionWidth) * curBottomBarOption, optionTop, leftPadding - MENU_X(5.0f) + optionWidth * (curBottomBarOption + 2), optionBottom + MENU_Y(rawOptionHeight - 9.0f)), CRGBA(CRGBA(255, 255, 255, 255))); @@ -1680,11 +2029,417 @@ void CMenuManager::DrawFrontEndNormal() } #endif -#if 1 +#if 0 WRAPPER void CMenuManager::DrawPlayerSetupScreen() { EAXJMP(0x47F2B0); } #else void CMenuManager::DrawPlayerSetupScreen() { + CFont::SetBackgroundOff(); + CFont::SetScale(MENU_X(MENUACTION_SCALE_MULT), MENU_Y(MENUACTION_SCALE_MULT)); + CFont::SetPropOn(); + CFont::SetCentreOff(); + CFont::SetJustifyOn(); + CFont::SetRightJustifyOff(); + CFont::SetBackGroundOnlyTextOn(); + CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENUACTION_X_MARGIN)); + CFont::SetRightJustifyWrap(SCREEN_SCALE_X(MENUACTION_WIDTH)); + + CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255))); + CFont::SetScale(MENU_X(MENUHEADER_WIDTH), MENU_Y(MENUHEADER_HEIGHT)); + CFont::SetRightJustifyOn(); + CFont::SetFontStyle(FONT_HEADING); + CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(MENUHEADER_POS_X), SCREEN_SCALE_FROM_BOTTOM(MENUHEADER_POS_Y), TheText.Get("FET_PS")); + + // lstrcpy's changed with strcpy + + if (!m_bSkinsEnumerated) { + OutputDebugString("Enumerating skin filenames from skins..."); + m_pSkinListHead.nextSkin = nil; + m_pSelectedSkin = &m_pSkinListHead; + m_pSelectedSkin->nextSkin = new tSkinInfo; + m_pSelectedSkin = m_pSelectedSkin->nextSkin; + m_pSelectedSkin->skinId = 0; + strcpy(m_pSelectedSkin->skinNameOriginal, "$$\"\""); + strcpy(m_pSelectedSkin->skinNameDisplayed, UnicodeToAscii(TheText.Get("FET_DSN"))); + int nextSkinId = 1; + m_pSelectedSkin->nextSkin = nil; + + WIN32_FIND_DATA FindFileData; + SYSTEMTIME SystemTime; + HANDLE handle = FindFirstFile("skins\\*.bmp", &FindFileData); + for (int i = 1; handle != INVALID_HANDLE_VALUE && i; i = FindNextFile(handle, &FindFileData)) { + if (strncmp(FindFileData.cFileName, "$$\"\"", 5) != 0) { + m_pSelectedSkin->nextSkin = new tSkinInfo; + m_pSelectedSkin = m_pSelectedSkin->nextSkin; + m_pSelectedSkin->skinId = nextSkinId; + strcpy(m_pSelectedSkin->skinNameOriginal, FindFileData.cFileName); + strcpy(m_pSelectedSkin->skinNameDisplayed, FindFileData.cFileName); + FileTimeToSystemTime(&FindFileData.ftLastWriteTime, &SystemTime); + GetDateFormat(LOCALE_USER_DEFAULT, DATE_SHORTDATE, &SystemTime, 0, m_pSelectedSkin->date, 255); + ++nextSkinId; + m_pSelectedSkin->nextSkin = nil; + } + } + FindClose(handle); + m_nSkinsTotal = nextSkinId; + char nameTemp[256]; + for (m_pSelectedSkin = m_pSkinListHead.nextSkin; m_pSelectedSkin; m_pSelectedSkin = m_pSelectedSkin->nextSkin) { + // Drop extension + int oldLength = strlen(m_pSelectedSkin->skinNameDisplayed); + m_pSelectedSkin->skinNameDisplayed[oldLength - 4] = '\0'; + m_pSelectedSkin->skinNameOriginal[oldLength - 4] = '\0'; + + // Truncate to 40 bytes-39 chars, idk why. This is done in sepearate function in game. + strncpy(m_pSelectedSkin->skinNameDisplayed, m_pSelectedSkin->skinNameDisplayed, 39); + if (oldLength - 4 > 39) + m_pSelectedSkin->skinNameDisplayed[39] = '\0'; + + // Make string lowercase, except first letter + strlwr(m_pSelectedSkin->skinNameDisplayed); + strncpy(nameTemp, m_pSelectedSkin->skinNameDisplayed, 1); + strupr(nameTemp); + strncpy(m_pSelectedSkin->skinNameDisplayed, nameTemp, 1); + + // Change some chars +#ifdef FIX_BUGS + for (int k = 0; m_pSelectedSkin->skinNameDisplayed[k] != '\0'; ++k) { +#else + for (int k = 0; m_pSelectedSkin->skinNameOriginal[k] != '\0'; ++k) { +#endif + if (!strncmp(&m_pSelectedSkin->skinNameDisplayed[k], "_", 1)) + strncpy(&m_pSelectedSkin->skinNameDisplayed[k], " ", 1); + if (!strncmp(&m_pSelectedSkin->skinNameDisplayed[k], "@", 1)) + strncpy(&m_pSelectedSkin->skinNameDisplayed[k], " ", 1); + if (!strncmp(&m_pSelectedSkin->skinNameDisplayed[k], "{", 1)) + strncpy(&m_pSelectedSkin->skinNameDisplayed[k], "(", 1); + if (!strncmp(&m_pSelectedSkin->skinNameDisplayed[k], "}", 1)) + strncpy(&m_pSelectedSkin->skinNameDisplayed[k], ")", 1); + if (!strncmp(&m_pSelectedSkin->skinNameDisplayed[k], "£", 1)) + strncpy(&m_pSelectedSkin->skinNameDisplayed[k], "$", 1); + } + + // Make letters after whitespace uppercase + for (int l = 0; m_pSelectedSkin->skinNameDisplayed[l] != '\0'; ++l) { + if (!strncmp(&m_pSelectedSkin->skinNameDisplayed[l], " ", 1)) { + if (m_pSelectedSkin->skinNameDisplayed[l + 1]) { + strncpy(nameTemp, &m_pSelectedSkin->skinNameDisplayed[l + 1], 1); + strupr(nameTemp); + strncpy(&m_pSelectedSkin->skinNameDisplayed[l + 1], nameTemp, 1); + } + } + } + } + OutputDebugString("Finished enumerating skin files."); + m_bSkinsEnumerated = true; + } + CSprite2d::DrawRect(CRect(MENU_X_LEFT_ALIGNED(PLAYERSETUP_LIST_LEFT), MENU_Y(PLAYERSETUP_LIST_TOP), + MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT), SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM)), CRGBA(200, 200, 50, FadeIn(50))); + + // Header (Skin - Date) + if (m_nCurrExLayer == HOVEROPTION_LIST) { + CFont::SetColor(CRGBA(255, 217, 106, FadeIn(255))); + } else { + CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255))); + } + CFont::SetFontStyle(FONT_HEADING); + CFont::SetScale(MENU_X(MENUACTION_SCALE_MULT), MENU_Y(MENUACTION_SCALE_MULT)); + CFont::SetRightJustifyOn(); + CFont::PrintString(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_DATE_COLUMN_RIGHT), MENU_Y(PLAYERSETUP_LIST_TOP), TheText.Get("FES_DAT")); + switch (CMenuManager::m_PrefsLanguage) { + case LANGUAGE_FRENCH: + case LANGUAGE_SPANISH: + CFont::SetScale(MENU_X(0.6f), MENU_Y(MENUACTION_SCALE_MULT)); + break; + default: + CFont::SetScale(MENU_X(MENUACTION_SCALE_MULT), MENU_Y(MENUACTION_SCALE_MULT)); + break; + } + CFont::SetRightJustifyOff(); + CFont::PrintString(MENU_X_LEFT_ALIGNED(PLAYERSETUP_SKIN_COLUMN_LEFT), MENU_Y(PLAYERSETUP_LIST_TOP), TheText.Get("FES_SKN")); + + // Skin list + CFont::SetRightJustifyOff(); + CFont::SetScale(MENU_X(PLAYERSETUP_ROW_TEXT_X_SCALE), MENU_Y(PLAYERSETUP_ROW_TEXT_Y_SCALE)); + CFont::SetFontStyle(FONT_BANK); + if (m_nSkinsTotal > 0) { + for (m_pSelectedSkin = m_pSkinListHead.nextSkin; m_pSelectedSkin->skinId != m_nFirstVisibleRowOnList; + m_pSelectedSkin = m_pSelectedSkin->nextSkin); + + int rowTextY = PLAYERSETUP_LIST_BODY_TOP - 1; + int orderInVisibles = 0; + int rowEndY = PLAYERSETUP_LIST_BODY_TOP + PLAYERSETUP_ROW_HEIGHT + 1; + int rowStartY = PLAYERSETUP_LIST_BODY_TOP; + for (int rowIdx = m_nFirstVisibleRowOnList; + rowIdx < m_nFirstVisibleRowOnList + MAX_VISIBLE_LIST_ROW && m_pSelectedSkin; ) { + + if (m_nMousePosX > MENU_X_LEFT_ALIGNED(PLAYERSETUP_LIST_LEFT) && m_nMousePosX < MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT)) { + if (m_nMousePosY > MENU_Y(rowStartY) && m_nMousePosY < MENU_Y(rowEndY)) { + m_nPrevOption = rowIdx; + if (m_nMouseOldPosX != m_nMousePosX || m_nMouseOldPosY != m_nMousePosY) { + m_nCurrExLayer = HOVEROPTION_LIST; + } + if (m_nHoverOption == HOVEROPTION_SKIN) { + if (rowIdx == m_nSelectedListRow) { + m_nHoverOption = HOVEROPTION_NOT_HOVERING; + if (m_nSkinsTotal > 0) { + DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); + strcpy(m_PrefsSkinFile, m_aSkinName); + CWorld::Players[0].SetPlayerSkin(m_PrefsSkinFile); + SaveSettings(); + } + } else { + DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0); + m_nCurrExLayer = HOVEROPTION_LIST; + m_nSelectedListRow = rowIdx; + m_nHoverOption = HOVEROPTION_NOT_HOVERING; + } + } + } + } + + // Preview skin/change color of row when we focused on another row. + if (orderInVisibles == m_nSelectedListRow - m_nFirstVisibleRowOnList) { + CFont::SetColor(CRGBA(255, 255, 255, FadeIn(255))); + static int lastSelectedSkin = -1; + if (m_nSelectedListRow != lastSelectedSkin) { + strcpy(m_aSkinName, m_pSelectedSkin->skinNameOriginal); + CWorld::Players[0].SetPlayerSkin(m_aSkinName); + } + lastSelectedSkin = m_nSelectedListRow; + } else if (!strcmp(m_PrefsSkinFile, m_pSelectedSkin->skinNameOriginal)) { + CFont::SetColor(CRGBA(255, 255, 155, FadeIn(255))); + } else { + CFont::SetColor(CRGBA(155, 155, 155, FadeIn(255))); + } + wchar unicodeTemp[80]; + AsciiToUnicode(m_pSelectedSkin->skinNameDisplayed, unicodeTemp); + CFont::SetRightJustifyOff(); + CFont::PrintString(MENU_X_LEFT_ALIGNED(PLAYERSETUP_SKIN_COLUMN_LEFT), MENU_Y(rowTextY), unicodeTemp); + + // If not "Default skin" option + if (rowIdx != 0) { + char dateTemp[32]; + sprintf(dateTemp, "%s", m_pSelectedSkin->date); + AsciiToUnicode(dateTemp, unicodeTemp); + CFont::SetRightJustifyOn(); + CFont::PrintString(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_DATE_COLUMN_RIGHT), MENU_Y(rowTextY), unicodeTemp); + } + ++orderInVisibles; + rowEndY += PLAYERSETUP_ROW_HEIGHT; + rowStartY += PLAYERSETUP_ROW_HEIGHT; + rowTextY += PLAYERSETUP_ROW_HEIGHT; + ++rowIdx; + m_pSelectedSkin = m_pSelectedSkin->nextSkin; + } + // Scrollbar background + CSprite2d::DrawRect(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2), MENU_Y(PLAYERSETUP_LIST_TOP), + MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2 - PLAYERSETUP_SCROLLBAR_WIDTH), SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM)), CRGBA(100, 100, 66, FadeIn(205))); + + // Scrollbar + float scrollbarHeight = SCROLLBAR_MAX_HEIGHT / m_nSkinsTotal * (float) MAX_VISIBLE_LIST_ROW; + float scrollbarBottom, scrollbarTop; + if (m_nSkinsTotal <= MAX_VISIBLE_LIST_ROW) { + scrollbarBottom = SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM + PLAYERSETUP_SCROLLBUTTON_HEIGHT + 4.0f); + scrollbarTop = MENU_Y(PLAYERSETUP_LIST_BODY_TOP); + + // Shadow + CSprite2d::DrawRect(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 4), scrollbarTop, + MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 1 - PLAYERSETUP_SCROLLBAR_WIDTH), scrollbarBottom + MENU_Y(1.0f)), CRGBA(50, 50, 50, FadeIn(255))); + } else { +#ifdef FIX_BUGS + scrollbarBottom = MENU_Y(PLAYERSETUP_LIST_BODY_TOP - 8 + m_nScrollbarTopMargin + scrollbarHeight); + scrollbarTop = MENU_Y(PLAYERSETUP_LIST_BODY_TOP + m_nScrollbarTopMargin); +#else + scrollbarBottom = MENU_Y(PLAYERSETUP_LIST_BODY_TOP - 4 + m_nScrollbarTopMargin + scrollbarHeight - SCROLLBAR_MAX_HEIGHT / m_nSkinsTotal); + scrollbarTop = MENU_Y(SCROLLBAR_MAX_HEIGHT / m_nSkinsTotal + PLAYERSETUP_LIST_BODY_TOP - 3 + m_nScrollbarTopMargin); +#endif + // Shadow + CSprite2d::DrawRect(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 4), scrollbarTop, + MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 1 - PLAYERSETUP_SCROLLBAR_WIDTH), scrollbarBottom + MENU_Y(1.0f)), + CRGBA(50, 50, 50, FadeIn(255))); + + } + CSprite2d::DrawRect(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 4), scrollbarTop, + MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - PLAYERSETUP_SCROLLBAR_WIDTH), scrollbarBottom), + CRGBA(235, 170, 50, FadeIn(255))); + + // FIX: Scroll button dimensions are buggy, because: + // 1 - stretches the original image + // 2 - leaves gap between button and scrollbar + if (m_nHoverOption == HOVEROPTION_CLICKED_SCROLL_UP) { +#ifdef FIX_BUGS + m_aMenuSprites[MENUSPRITE_UPON].Draw(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2), MENU_Y(PLAYERSETUP_LIST_TOP), + MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2 - PLAYERSETUP_SCROLLBUTTON_TXD_DIMENSION), MENU_Y(PLAYERSETUP_LIST_TOP + PLAYERSETUP_SCROLLBUTTON_TXD_DIMENSION)), + CRGBA(255, 255, 255, FadeIn(255))); +#else + m_aMenuSprites[MENUSPRITE_UPON].Draw(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2), MENU_Y(PLAYERSETUP_LIST_TOP), + MENU_X_RIGHT_ALIGNED(-20.0f), MENU_Y(PLAYERSETUP_LIST_TOP + 58)), + CRGBA(255, 255, 255, FadeIn(255))); +#endif + } else { +#ifdef FIX_BUGS + m_aMenuSprites[MENUSPRITE_UPOFF].Draw(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 3), MENU_Y(PLAYERSETUP_LIST_TOP), + MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 3 - PLAYERSETUP_SCROLLBUTTON_TXD_DIMENSION), MENU_Y(PLAYERSETUP_LIST_TOP + PLAYERSETUP_SCROLLBUTTON_TXD_DIMENSION)), + CRGBA(255, 255, 255, FadeIn(255))); +#else + m_aMenuSprites[MENUSPRITE_UPOFF].Draw(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 3), MENU_Y(PLAYERSETUP_LIST_TOP), + MENU_X_RIGHT_ALIGNED(-21.0f), MENU_Y(PLAYERSETUP_LIST_TOP + 58)), + CRGBA(255, 255, 255, FadeIn(255))); +#endif + } + + if (m_nHoverOption == HOVEROPTION_CLICKED_SCROLL_DOWN) { +#ifdef FIX_BUGS + m_aMenuSprites[MENUSPRITE_DOWNON].Draw(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2), SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM + PLAYERSETUP_SCROLLBUTTON_HEIGHT + 1), + MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2 - PLAYERSETUP_SCROLLBUTTON_TXD_DIMENSION), SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM + PLAYERSETUP_SCROLLBUTTON_HEIGHT + 1 - PLAYERSETUP_SCROLLBUTTON_TXD_DIMENSION)), + CRGBA(255, 255, 255, FadeIn(255))); +#else + m_aMenuSprites[MENUSPRITE_DOWNON].Draw(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2), SCREEN_SCALE_FROM_BOTTOM(141.0f), + MENU_X_RIGHT_ALIGNED(-20.0f), SCREEN_SCALE_FROM_BOTTOM(83.0f)), + CRGBA(255, 255, 255, FadeIn(255))); +#endif + } else { +#ifdef FIX_BUGS + m_aMenuSprites[MENUSPRITE_DOWNOFF].Draw(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 3), SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM + PLAYERSETUP_SCROLLBUTTON_HEIGHT + 1), + MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 3 - PLAYERSETUP_SCROLLBUTTON_TXD_DIMENSION), SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM + PLAYERSETUP_SCROLLBUTTON_HEIGHT + 1 - PLAYERSETUP_SCROLLBUTTON_TXD_DIMENSION)), + CRGBA(255, 255, 255, FadeIn(255))); +#else + m_aMenuSprites[MENUSPRITE_DOWNOFF].Draw(CRect(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 3), SCREEN_SCALE_FROM_BOTTOM(141.0f), + MENU_X_RIGHT_ALIGNED(-21.0f), SCREEN_SCALE_FROM_BOTTOM(83.0f)), + CRGBA(255, 255, 255, FadeIn(255))); +#endif + + } + CPlayerSkin::RenderFrontendSkinEdit(); + + // Big apply button + if (strcmp(m_aSkinName, m_PrefsSkinFile) != 0) { + CFont::SetFontStyle(FONT_HEADING); + switch (CMenuManager::m_PrefsLanguage) { + case LANGUAGE_FRENCH: + CFont::SetScale(MENU_X(1.1f), MENU_Y(1.9f)); + break; + case LANGUAGE_GERMAN: + CFont::SetScale(MENU_X(0.85f), MENU_Y(1.9f)); + break; + case LANGUAGE_ITALIAN: + case LANGUAGE_SPANISH: + CFont::SetScale(MENU_X(1.4f), MENU_Y(1.9f)); + break; + default: + CFont::SetScale(MENU_X(1.9f), MENU_Y(1.9f)); + break; + } + CFont::SetColor(CRGBA(255, 217, 106, FadeIn(120))); + CFont::SetRightJustifyOff(); + CFont::PrintString(MENU_X_LEFT_ALIGNED(20.0f), MENU_Y(220.0f), TheText.Get("FET_APL")); + } + CFont::SetFontStyle(FONT_HEADING); + + CFont::SetScale(MENU_X(SMALLTEXT_X_SCALE), MENU_Y(SMALLTEXT_Y_SCALE)); + + if ((m_nMousePosX > MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 1) - CFont::GetStringWidth(TheText.Get("FEDS_TB"), true) + && m_nMousePosX < MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 1) + && m_nMousePosY > SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM - 3) + && m_nMousePosY < SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM - 26)) + || m_nCurrExLayer == HOVEROPTION_BACK) { + if (m_nHoverOption != HOVEROPTION_BACK) + DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0); + + m_nHoverOption = HOVEROPTION_BACK; + + } else if ((strcmp(m_aSkinName, m_PrefsSkinFile) != 0 + && m_nMousePosX > MENU_X_LEFT_ALIGNED(PLAYERSETUP_LIST_LEFT) + && m_nMousePosX < MENU_X_LEFT_ALIGNED(PLAYERSETUP_LIST_LEFT) + CFont::GetStringWidth(TheText.Get("FES_SET"), true) + && m_nMousePosY > SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM - 3) + && m_nMousePosY < SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM - 26)) + || m_nCurrExLayer == HOVEROPTION_USESKIN) { + if (m_nHoverOption != HOVEROPTION_USESKIN) + DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0); + + m_nHoverOption = HOVEROPTION_USESKIN; + + } else if (m_nMousePosX > MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2) + && m_nMousePosX < MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - PLAYERSETUP_SCROLLBAR_WIDTH - 2) + && m_nMousePosY > MENU_Y(PLAYERSETUP_LIST_TOP) + && m_nMousePosY < MENU_Y(PLAYERSETUP_LIST_BODY_TOP - 3)) { + if (m_nHoverOption != HOVEROPTION_CLICKED_SCROLL_UP && m_nHoverOption != HOVEROPTION_CLICKED_SCROLL_DOWN) + m_nHoverOption = HOVEROPTION_OVER_SCROLL_UP; + + } else if (m_nMousePosX > MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2) + && m_nMousePosX < MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - PLAYERSETUP_SCROLLBAR_WIDTH - 2) + && m_nMousePosY > SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM + PLAYERSETUP_SCROLLBUTTON_HEIGHT + 1) + && m_nMousePosY < SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM)) { + if (m_nHoverOption != HOVEROPTION_CLICKED_SCROLL_UP && m_nHoverOption != HOVEROPTION_CLICKED_SCROLL_DOWN) + m_nHoverOption = HOVEROPTION_OVER_SCROLL_DOWN; + + } else if (m_nMousePosX > MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2) + && m_nMousePosX < MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - PLAYERSETUP_SCROLLBAR_WIDTH - 2) + && m_nMousePosY > MENU_Y(PLAYERSETUP_LIST_BODY_TOP - 3) +#ifdef FIX_BUGS + && m_nMousePosY < MENU_Y(PLAYERSETUP_LIST_BODY_TOP + m_nScrollbarTopMargin)) { +#else + && m_nMousePosY < MENU_Y(SCROLLBAR_MAX_HEIGHT / m_nTotalListRow + PLAYERSETUP_LIST_BODY_TOP - 3 + m_nScrollbarTopMargin)) { +#endif + m_nHoverOption = HOVEROPTION_PAGEUP; + + } else if (m_nMousePosX > MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 2) + && m_nMousePosX < MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - PLAYERSETUP_SCROLLBAR_WIDTH - 2) +#ifdef FIX_BUGS + && m_nMousePosY > MENU_Y(PLAYERSETUP_LIST_BODY_TOP - 8 + m_nScrollbarTopMargin + scrollbarHeight) +#else + && m_nMousePosY > MENU_Y(PLAYERSETUP_LIST_BODY_TOP - 3 + m_nScrollbarTopMargin + scrollbarHeight - SCROLLBAR_MAX_HEIGHT / m_nTotalListRow) +#endif + && m_nMousePosY < SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM + PLAYERSETUP_SCROLLBUTTON_HEIGHT + 1)) { + m_nHoverOption = HOVEROPTION_PAGEDOWN; + + } else if (m_nMousePosX > MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 4) + && m_nMousePosX < MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - PLAYERSETUP_SCROLLBAR_WIDTH) +#ifdef FIX_BUGS + && m_nMousePosY > MENU_Y(PLAYERSETUP_LIST_BODY_TOP + m_nScrollbarTopMargin) + && m_nMousePosY < MENU_Y(PLAYERSETUP_LIST_BODY_TOP - 8 + m_nScrollbarTopMargin + scrollbarHeight)) { +#else + && m_nMousePosY > MENU_Y(SCROLLBAR_MAX_HEIGHT / m_nTotalListRow + PLAYERSETUP_LIST_BODY_TOP - 3 + m_nScrollbarTopMargin) + && m_nMousePosY < MENU_Y(PLAYERSETUP_LIST_BODY_TOP - 3 + m_nScrollbarTopMargin + scrollbarHeight - SCROLLBAR_MAX_HEIGHT / m_nTotalListRow)) { +#endif + m_nHoverOption = HOVEROPTION_HOLDING_SCROLLBAR; + + } else if (m_nMousePosX > MENU_X_LEFT_ALIGNED(PLAYERSETUP_LIST_LEFT) && m_nMousePosX < MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT) + && m_nMousePosY > MENU_Y(PLAYERSETUP_LIST_BODY_TOP + 1) && m_nMousePosY < SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM)) { + m_nHoverOption = HOVEROPTION_LIST; + + } else { + m_nHoverOption = HOVEROPTION_NOT_HOVERING; + } + } + CFont::SetFontStyle(FONT_HEADING); + CFont::SetScale(MENU_X(SMALLTEXT_X_SCALE), MENU_Y(SMALLTEXT_Y_SCALE)); + CFont::SetRightJustifyOn(); + CFont::SetColor(CRGBA(0, 0, 0, FadeIn(90))); + + // Back button + for (int i = 0; i < 2; i++) { + CFont::PrintString(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT - 3 - i), SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM - 5 - i), TheText.Get("FEDS_TB")); + if (m_nHoverOption == HOVEROPTION_BACK) { + CFont::SetColor(CRGBA(255, 217, 106, FadeIn(255))); + } else { + CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255))); + } + } + CFont::SetRightJustifyOff(); + CFont::SetColor(CRGBA(0, 0, 0, FadeIn(90))); + + // Use skin button + for (int i = 0; i < 2; i++) { + CFont::PrintString(MENU_X_LEFT_ALIGNED(i + PLAYERSETUP_LIST_LEFT), SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM - 5 - i), TheText.Get("FES_SET")); + if (!strcmp(m_aSkinName, m_PrefsSkinFile)) { + CFont::SetColor(CRGBA(155, 117, 6, FadeIn(255))); + } else if (m_nHoverOption == HOVEROPTION_USESKIN) { + CFont::SetColor(CRGBA(255, 217, 106, FadeIn(255))); + } else { + CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255))); + } + } } #endif @@ -2229,7 +2984,7 @@ CMenuManager::ProcessButtonPresses(void) } #endif if (CPad::GetPad(0)->GetBackspaceJustDown() && m_nCurrScreen == MENUPAGE_KEYBOARD_CONTROLS && !field_535) { - if (m_nCurrExLayer == 19) { + if (m_nCurrExLayer == HOVEROPTION_LIST) { m_nHoverOption = HOVEROPTION_NOT_HOVERING; m_bWaitingForNewKeyBind = true; m_bStartWaitingForKeyBind = true; @@ -2255,21 +3010,21 @@ CMenuManager::ProcessButtonPresses(void) DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0); m_bShowMouse = false; switch (m_nCurrExLayer) { - case 9: + case HOVEROPTION_BACK: default: - m_nCurrExLayer = 19; + m_nCurrExLayer = HOVEROPTION_LIST; break; - case 19: - m_nCurrExLayer = 21; + case HOVEROPTION_LIST: + m_nCurrExLayer = HOVEROPTION_USESKIN; break; - case 21: - m_nCurrExLayer = 9; + case HOVEROPTION_USESKIN: + m_nCurrExLayer = HOVEROPTION_BACK; } - if (((m_nCurrScreen == MENUPAGE_SKIN_SELECT) && (m_nCurrExLayer == 21)) && strcmp(m_aSkinName, m_PrefsSkinFile) == 0) { - m_nCurrExLayer = 9; + if (((m_nCurrScreen == MENUPAGE_SKIN_SELECT) && (m_nCurrExLayer == HOVEROPTION_USESKIN)) && strcmp(m_aSkinName, m_PrefsSkinFile) == 0) { + m_nCurrExLayer = HOVEROPTION_BACK; } - if ((m_nCurrScreen == MENUPAGE_KEYBOARD_CONTROLS) && (m_nCurrExLayer == 21)) { - m_nCurrExLayer = 9; + if ((m_nCurrScreen == MENUPAGE_KEYBOARD_CONTROLS) && (m_nCurrExLayer == HOVEROPTION_USESKIN)) { + m_nCurrExLayer = HOVEROPTION_BACK; } } @@ -2284,7 +3039,7 @@ CMenuManager::ProcessButtonPresses(void) // Up if (pressed) { - m_nCurrExLayer = 19; + m_nCurrExLayer = HOVEROPTION_LIST; if (!m_bPressedUpOnList) { m_bPressedUpOnList = true; lastTimeClickedScrollButton = CTimer::GetTimeInMillisecondsPauseMode(); @@ -2306,7 +3061,7 @@ CMenuManager::ProcessButtonPresses(void) // Down if (pressed) { - m_nCurrExLayer = 19; + m_nCurrExLayer = HOVEROPTION_LIST; if (!m_bPressedDownOnList) { m_bPressedDownOnList = true; lastTimeClickedScrollButton = CTimer::GetTimeInMillisecondsPauseMode(); @@ -2321,7 +3076,7 @@ CMenuManager::ProcessButtonPresses(void) if (!CPad::GetPad(0)->GetPageUp()) { m_bPressedPgUpOnList = false; } else { - m_nCurrExLayer = 19; + m_nCurrExLayer = HOVEROPTION_LIST; if (!m_bPressedPgUpOnList) { m_bPressedPgUpOnList = true; lastTimeClickedScrollButton = CTimer::GetTimeInMillisecondsPauseMode(); @@ -2333,7 +3088,7 @@ CMenuManager::ProcessButtonPresses(void) if (!CPad::GetPad(0)->GetPageDown()) { m_bPressedPgDnOnList = false; } else { - m_nCurrExLayer = 19; + m_nCurrExLayer = HOVEROPTION_LIST; if (!m_bPressedPgDnOnList) { m_bPressedPgDnOnList = true; lastTimeClickedScrollButton = CTimer::GetTimeInMillisecondsPauseMode(); @@ -2343,24 +3098,24 @@ CMenuManager::ProcessButtonPresses(void) } } if (CPad::GetPad(0)->GetHome()) { - m_nCurrExLayer = 19; + m_nCurrExLayer = HOVEROPTION_LIST; m_bShowMouse = false; DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0); if (m_nTotalListRow >= MAX_VISIBLE_LIST_ROW) { m_nFirstVisibleRowOnList = 0; } m_nSelectedListRow = 0; - m_nCurListItemY = (LIST_HEIGHT / m_nTotalListRow) * m_nFirstVisibleRowOnList; + m_nScrollbarTopMargin = (SCROLLBAR_MAX_HEIGHT / m_nTotalListRow) * m_nFirstVisibleRowOnList; } if (CPad::GetPad(0)->GetEnd()) { - m_nCurrExLayer = 19; + m_nCurrExLayer = HOVEROPTION_LIST; m_bShowMouse = false; DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0); if (m_nTotalListRow >= MAX_VISIBLE_LIST_ROW) { m_nFirstVisibleRowOnList = m_nTotalListRow - MAX_VISIBLE_LIST_ROW; } m_nSelectedListRow = m_nTotalListRow - 1; - m_nCurListItemY = (LIST_HEIGHT / m_nTotalListRow) * m_nFirstVisibleRowOnList; + m_nScrollbarTopMargin = (SCROLLBAR_MAX_HEIGHT / m_nTotalListRow) * m_nFirstVisibleRowOnList; } } @@ -2382,10 +3137,10 @@ CMenuManager::ProcessButtonPresses(void) case HOVEROPTION_PAGEDOWN: PageDownList(true); break; - case HOVEROPTION_CHANGESKIN: + case HOVEROPTION_USESKIN: if (m_nSkinsTotal > 0) { DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); - m_pSelectedSkin = m_sSkin.field_304; + m_pSelectedSkin = m_pSkinListHead.nextSkin; strcpy(m_PrefsSkinFile, m_aSkinName); CWorld::Players[0].SetPlayerSkin(m_PrefsSkinFile); SaveSettings(); @@ -2401,8 +3156,8 @@ CMenuManager::ProcessButtonPresses(void) case HOVEROPTION_OVER_SCROLL_DOWN: m_nHoverOption = HOVEROPTION_CLICKED_SCROLL_DOWN; break; - case HOVEROPTION_19: - m_nHoverOption = HOVEROPTION_20; + case HOVEROPTION_LIST: + m_nHoverOption = HOVEROPTION_SKIN; } } else if ((CPad::GetPad(0)->GetLeftMouseJustUp()) && ((m_nHoverOption == HOVEROPTION_CLICKED_SCROLL_UP || (m_nHoverOption == HOVEROPTION_CLICKED_SCROLL_DOWN)))) { @@ -2415,7 +3170,7 @@ CMenuManager::ProcessButtonPresses(void) if ((m_nHoverOption == HOVEROPTION_HOLDING_SCROLLBAR) || holdingScrollBar) { holdingScrollBar = true; // TODO: This part is a bit hard to reverse. Not much code tho - assert(0 && "Not done yet"); + assert(0 && "Holding scrollbar isn't done yet"); } else { switch (m_nHoverOption) { case HOVEROPTION_OVER_SCROLL_UP: @@ -2866,7 +3621,7 @@ CMenuManager::ProcessButtonPresses(void) default: goBack = true; break; - case 19: + case HOVEROPTION_LIST: if (m_nCurrScreen == MENUPAGE_KEYBOARD_CONTROLS) { m_bWaitingForNewKeyBind = true; m_bStartWaitingForKeyBind = true; @@ -2875,16 +3630,16 @@ CMenuManager::ProcessButtonPresses(void) if (m_nCurrScreen == MENUPAGE_SKIN_SELECT) { strcpy(m_PrefsSkinFile, m_aSkinName); CWorld::Players[0].SetPlayerSkin(m_PrefsSkinFile); - m_nCurrExLayer = 9; + m_nCurrExLayer = HOVEROPTION_BACK; CMenuManager::SaveSettings(); } m_nHoverOption = HOVEROPTION_NOT_HOVERING; break; - case 21: + case HOVEROPTION_USESKIN: m_nHoverOption = HOVEROPTION_NOT_HOVERING; strcpy(m_PrefsSkinFile, m_aSkinName); CWorld::Players[0].SetPlayerSkin(m_PrefsSkinFile); - m_nCurrExLayer = 9; + m_nCurrExLayer = HOVEROPTION_BACK; SaveSettings(); break; } @@ -2895,7 +3650,7 @@ CMenuManager::ProcessButtonPresses(void) */ } else if (m_nCurrScreen == MENUPAGE_SKIN_SELECT) { if (m_nSkinsTotal > 0) { - m_pSelectedSkin = (tSkinInfo*)(m_sSkin).field_304; + m_pSelectedSkin = m_pSkinListHead.nextSkin; strcpy(m_PrefsSkinFile, m_aSkinName); CWorld::Players[0].SetPlayerSkin(m_PrefsSkinFile); SaveSettings(); @@ -2913,7 +3668,7 @@ CMenuManager::ProcessButtonPresses(void) assumeIncrease = true; #else ++CMenuManager::m_PrefsRadioStation; - if (cDMAudio::IsMP3RadioChannelAvailable()) { + if (DMAudio.IsMP3RadioChannelAvailable()) { if (CMenuManager::m_PrefsRadioStation > USERTRACK) CMenuManager::m_PrefsRadioStation = HEAD_RADIO; } else if (CMenuManager::m_PrefsRadioStation > CHATTERBOX) { @@ -3063,7 +3818,7 @@ CMenuManager::ProcessButtonPresses(void) case MENUACTION_REDEFCTRL: ChangeScreen(MENUPAGE_KEYBOARD_CONTROLS, 0, true, true); m_nSelectedListRow = 0; - m_nCurrExLayer = 19; + m_nCurrExLayer = HOVEROPTION_LIST; break; case MENUACTION_GETKEY: m_CurrCntrlAction = GetStartOptionsCntrlConfigScreens() + m_nCurrOption; @@ -3128,8 +3883,8 @@ CMenuManager::ProcessButtonPresses(void) case MENUACTION_PLAYERSETUP: CPlayerSkin::BeginFrontendSkinEdit(); ChangeScreen(MENUPAGE_SKIN_SELECT, 0, true, true); - m_nCurrExLayer = 19; - m_bSkinsFound = 0; + m_nCurrExLayer = HOVEROPTION_LIST; + m_bSkinsEnumerated = false; break; case MENUACTION_RESTOREDEF: if (m_nCurrScreen == MENUPAGE_SOUND_SETTINGS) { @@ -3378,9 +4133,9 @@ CMenuManager::ProcessButtonPresses(void) ProcessOnOffMenuOptions(); if (m_nCurrScreen == MENUPAGE_KEYBOARD_CONTROLS) { if (changeValueBy < 1) { - field_530 = 0; + m_nSelectedContSetupColumn = CONTSETUP_PED_COLUMN; } else { - field_530 = 14; + m_nSelectedContSetupColumn = CONTSETUP_VEHICLE_COLUMN; } DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0); } @@ -3700,6 +4455,225 @@ void CMenuManager::WaitForUserCD() } #endif +void +CMenuManager::PrintController(void) +{ + // FIX: Originally this function doesn't have StretchX/Y, everything had constant pixel size (due to screen was abandoned early?) + // Also texts and their alignment were very bad, so I tried to make them readable (commented out the original code, and marked the ones I added with X) + + m_aFrontEndSprites[FE_CONTROLLERSH].Draw(MENU_X_LEFT_ALIGNED(160.0f), MENU_Y(160.0f), MENU_X(240.0f), MENU_Y(180.0f), CRGBA(0, 0, 0, 255)); + m_aFrontEndSprites[FE_CONTROLLER].Draw(MENU_X_LEFT_ALIGNED(160.0f), MENU_Y(160.0f), MENU_X(235.2f), MENU_Y(175.2f), CRGBA(255, 255, 255, 255)); + if (m_DisplayControllerOnFoot) { + if (CTimer::GetTimeInMillisecondsPauseMode() & 0x400) + m_aFrontEndSprites[FE_ARROWS1].Draw(MENU_X_LEFT_ALIGNED(160.0f), MENU_Y(160.0f), MENU_X(235.2f), MENU_Y(175.2f), CRGBA(255, 255, 255, 255)); + else + m_aFrontEndSprites[FE_ARROWS3].Draw(MENU_X_LEFT_ALIGNED(160.0f), MENU_Y(160.0f), MENU_X(235.2f), MENU_Y(175.2f), CRGBA(255, 255, 255, 255)); + } else { + if (CTimer::GetTimeInMillisecondsPauseMode() & 0x400) + m_aFrontEndSprites[FE_ARROWS2].Draw(MENU_X_LEFT_ALIGNED(160.0f), MENU_Y(160.0f), MENU_X(235.2f), MENU_Y(175.2f), CRGBA(255, 255, 255, 255)); + else + m_aFrontEndSprites[FE_ARROWS4].Draw(MENU_X_LEFT_ALIGNED(160.0f), MENU_Y(160.0f), MENU_X(235.2f), MENU_Y(175.2f), CRGBA(255, 255, 255, 255)); + } + + CFont::SetFontStyle(FONT_BANK); // X + + // CFont::SetScale(0.4f, 0.4f); + CFont::SetScale(MENU_X(SMALLTEXT_X_SCALE), MENU_Y(SMALLTEXT_Y_SCALE)); // X + + // CFont::SetColor(CRGBA(128, 128, 128, FadeIn(255))); + CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255))); // X + CFont::SetDropShadowPosition(1); // X + CFont::SetColor(CRGBA(255, 255, 255, FadeIn(255))); // X + + if (m_DisplayControllerOnFoot) { + switch (CPad::GetPad(0)->Mode) { + case 0: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(146.0f), TheText.Get("FEC_CWL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(185.0f), TheText.Get("FEC_LOF")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(225.0f), TheText.Get("FEC_MOV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(257.0f), TheText.Get("FEC_MOV")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(263.0f), MENU_Y(301.0f), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(290.0f), MENU_Y(288.0f), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(344.0f), MENU_Y(146.0f), TheText.Get("FEC_CWR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(185.0f), TheText.Get("FEC_TAR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(304.0f), MENU_Y(178.0f), TheText.Get("FEC_JUM")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(212.0f), TheText.Get("FEC_ENV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(225.0f), TheText.Get("FEC_ATT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(238.0f), TheText.Get("FEC_RUN")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(254.0f), TheText.Get("FEC_FPC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(269.0f), TheText.Get("FEC_LB3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(282.0f), TheText.Get("FEC_R3")); + break; + case 1: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(146.0f), TheText.Get("FEC_CWL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(185.0f), TheText.Get("FEC_LOF")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(225.0f), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(257.0f), TheText.Get("FEC_MOV")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(263.0f), MENU_Y(301.0f), TheText.Get("FEC_NA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(290.0f), MENU_Y(288.0f), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(344.0f), MENU_Y(146.0f), TheText.Get("FEC_CWR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(185.0f), TheText.Get("FEC_TAR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(304.0f), MENU_Y(178.0f), TheText.Get("FEC_JUM")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(212.0f), TheText.Get("FEC_ENV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(225.0f), TheText.Get("FEC_ATT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(238.0f), TheText.Get("FEC_RUN")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(254.0f), TheText.Get("FEC_FPC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(269.0f), TheText.Get("FEC_LB3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(282.0f), TheText.Get("FEC_R3")); + break; + case 2: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(146.0f), TheText.Get("FEC_CWL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(185.0f), TheText.Get("FEC_ENV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(225.0f), TheText.Get("FEC_MOV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(257.0f), TheText.Get("FEC_MOV")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(263.0f), MENU_Y(301.0f), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(290.0f), MENU_Y(288.0f), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(344.0f), MENU_Y(146.0f), TheText.Get("FEC_CWR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(185.0f), TheText.Get("FEC_TAR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(304.0f), MENU_Y(178.0f), TheText.Get("FEC_JUM")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(212.0f), TheText.Get("FEC_LOF")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(225.0f), TheText.Get("FEC_RUN")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(238.0f), TheText.Get("FEC_ATT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(254.0f), TheText.Get("FEC_FPC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(269.0f), TheText.Get("FEC_LB3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(282.0f), TheText.Get("FEC_R3")); + break; + case 3: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(146.0f), TheText.Get("FEC_CWL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(185.0f), TheText.Get("FEC_TAR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(225.0f), TheText.Get("FEC_NA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(257.0f), TheText.Get("FEC_MOV")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(263.0f), MENU_Y(301.0f), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(290.0f), MENU_Y(288.0f), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(344.0f), MENU_Y(146.0f), TheText.Get("FEC_CWR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(185.0f), TheText.Get("FEC_TAR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(304.0f), MENU_Y(178.0f), TheText.Get("FEC_JUM")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(212.0f), TheText.Get("FEC_LOF")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(225.0f), TheText.Get("FEC_RUN")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(238.0f), TheText.Get("FEC_ATT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(254.0f), TheText.Get("FEC_FPC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(269.0f), TheText.Get("FEC_LB3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(282.0f), TheText.Get("FEC_R3")); + break; + default: + return; + } + } else { + switch (CPad::GetPad(0)->Mode) { + case 0: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(146.0f), TheText.Get("FEC_LL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(185.0f), TheText.Get("FEC_RSC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(225.0f), TheText.Get("FEC_VES")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(257.0f), TheText.Get("FEC_VES")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(263.0f), MENU_Y(301.0f), TheText.Get("FEC_HO3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(290.0f), MENU_Y(288.0f), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(344.0f), MENU_Y(146.0f), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(185.0f), TheText.Get("FEC_LB")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(304.0f), MENU_Y(178.0f), TheText.Get("FEC_LR")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(212.0f), TheText.Get("FEC_HAB")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(225.0f), TheText.Get("FEC_BRA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(238.0f), TheText.Get("FEC_EXV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(254.0f), TheText.Get("FEC_CAW")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(269.0f), TheText.Get("FEC_ACC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(282.0f), TheText.Get("FEC_TUC")); + // FIX: Coordinates of this line is undefined in PC... + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(304.0f), TheText.Get("FEC_SM3")); + break; + case 1: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(146.0f), TheText.Get("FEC_LL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(185.0f), TheText.Get("FEC_HOR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(225.0f), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(257.0f), TheText.Get("FEC_VES")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(263.0f), MENU_Y(301.0f), TheText.Get("FEC_NA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(290.0f), MENU_Y(288.0f), TheText.Get("FEC_RSC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(344.0f), MENU_Y(146.0f), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(185.0f), TheText.Get("FEC_LB")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(304.0f), MENU_Y(178.0f), TheText.Get("FEC_LR")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(212.0f), TheText.Get("FEC_HAB")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(225.0f), TheText.Get("FEC_BRA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(238.0f), TheText.Get("FEC_EXV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(254.0f), TheText.Get("FEC_CAW")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(269.0f), TheText.Get("FEC_ACC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(282.0f), TheText.Get("FEC_TUC")); + // FIX: Coordinates of this line is undefined in PC... + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(304.0f), TheText.Get("FEC_SM3")); + break; + case 2: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(146.0f), TheText.Get("FEC_LL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(185.0f), TheText.Get("FEC_EXV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(225.0f), TheText.Get("FEC_VES")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(257.0f), TheText.Get("FEC_VES")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(263.0f), MENU_Y(301.0f), TheText.Get("FEC_RS3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(290.0f), MENU_Y(288.0f), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(344.0f), MENU_Y(146.0f), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(185.0f), TheText.Get("FEC_LB")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(304.0f), MENU_Y(178.0f), TheText.Get("FEC_LR")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(212.0f), TheText.Get("FEC_HOR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(225.0f), TheText.Get("FEC_BRA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(238.0f), TheText.Get("FEC_HAB")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(254.0f), TheText.Get("FEC_CAW")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(269.0f), TheText.Get("FEC_ACC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(282.0f), TheText.Get("FEC_TUC")); + // FIX: Coordinates of this line is undefined in PC... + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(304.0f), TheText.Get("FEC_SM3")); + break; + case 3: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(146.0f), TheText.Get("FEC_LL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(185.0f), TheText.Get("FEC_HAB")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(225.0f), TheText.Get("FEC_TUC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(156.0f), MENU_Y(257.0f), TheText.Get("FEC_VES")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(263.0f), MENU_Y(301.0f), TheText.Get("FEC_HO3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(290.0f), MENU_Y(288.0f), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(344.0f), MENU_Y(146.0f), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(185.0f), TheText.Get("FEC_LB")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(304.0f), MENU_Y(178.0f), TheText.Get("FEC_LR")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(212.0f), TheText.Get("FEC_CAW")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(225.0f), TheText.Get("FEC_SMT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(238.0f), TheText.Get("FEC_EXV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(254.0f), TheText.Get("FEC_RSC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(269.0f), TheText.Get("FEC_NA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(282.0f), TheText.Get("FEC_ACC")); + // FIX: Coordinates of this line is undefined in PC... + CFont::PrintString(MENU_X_LEFT_ALIGNED(398.0f), MENU_Y(304.0f), TheText.Get("FEC_BRA")); + break; + default: + return; + } + } +} + #if 0 uint8 CMenuManager::GetNumberOfMenuOptions() { @@ -3732,4 +4706,5 @@ STARTPATCHES InjectHook(0x47A440, &CMenuManager::UnloadTextures, PATCH_JUMP); InjectHook(0x48AB40, &CMenuManager::DoSettingsBeforeStartingAGame, PATCH_JUMP); InjectHook(0x48AE60, &CMenuManager::ProcessOnOffMenuOptions, PATCH_JUMP); + InjectHook(0x489710, &CMenuManager::DrawControllerBound, PATCH_JUMP); ENDPATCHES \ No newline at end of file diff --git a/src/core/Frontend.h b/src/core/Frontend.h index 30e4f652..9a3209c0 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -9,8 +9,8 @@ #define MENUACTION_X_MARGIN 40.0f #define MENUACTION_POS_Y 60.0f -#define MENUACTION_WIDTH 0.405f -#define MENUACTION_HEIGHT 0.63f +#define MENUACTION_WIDTH 0.38f +#define MENUACTION_SCALE_MULT 0.9f #define MENUCOLUMN_POS_X MENUHEADER_POS_X + 16.0f #define MENUCOLUMN_MAX_Y 149.0f @@ -44,6 +44,29 @@ #define MENUSLIDER_X 256.0f #define MENUSLIDER_UNK 256.0f +#define SMALLTEXT_X_SCALE 0.45f +#define SMALLTEXT_Y_SCALE 0.7f +#define SMALLESTTEXT_X_SCALE 0.4f +#define SMALLESTTEXT_Y_SCALE 0.6f + +#define PLAYERSETUP_LIST_TOP 28.0f +#define PLAYERSETUP_LIST_BOTTOM 125.0f +#define PLAYERSETUP_LIST_LEFT 200.0f +#define PLAYERSETUP_LIST_RIGHT 36.0f +#ifdef FIX_BUGS // See the scrollbar button drawing code +#define PLAYERSETUP_SCROLLBAR_WIDTH 19.0f +#else +#define PLAYERSETUP_SCROLLBAR_WIDTH 16.0f +#endif +#define PLAYERSETUP_SCROLLBUTTON_HEIGHT 17.0f +#define PLAYERSETUP_SCROLLBUTTON_TXD_DIMENSION 64 +#define PLAYERSETUP_ROW_TEXT_X_SCALE 0.4f +#define PLAYERSETUP_ROW_TEXT_Y_SCALE 0.6f +#define PLAYERSETUP_SKIN_COLUMN_LEFT 220.0f +#define PLAYERSETUP_DATE_COLUMN_RIGHT 56.0f +#define PLAYERSETUP_LIST_BODY_TOP 47 +#define PLAYERSETUP_ROW_HEIGHT 9 + enum eLanguages { LANGUAGE_AMERICAN, @@ -320,7 +343,7 @@ enum eCheckHover HOVEROPTION_6, HOVEROPTION_7, HOVEROPTION_8, - HOVEROPTION_BACK, // used in controller setup + HOVEROPTION_BACK, // also layer in controller setup and skin menu HOVEROPTION_10, HOVEROPTION_11, HOVEROPTION_OVER_SCROLL_UP, @@ -330,9 +353,9 @@ enum eCheckHover HOVEROPTION_HOLDING_SCROLLBAR, HOVEROPTION_PAGEUP, HOVEROPTION_PAGEDOWN, - HOVEROPTION_19, - HOVEROPTION_20, - HOVEROPTION_CHANGESKIN, + HOVEROPTION_LIST, // also layer in controller setup and skin menu + HOVEROPTION_SKIN, + HOVEROPTION_USESKIN, // also layer in controller setup and skin menu HOVEROPTION_RADIO_0, HOVEROPTION_RADIO_1, HOVEROPTION_RADIO_2, @@ -367,13 +390,20 @@ enum eControlMethod CONTROL_CLASSIC, }; +// Why?? +enum ControllerSetupColumn +{ + CONTSETUP_PED_COLUMN = 0, + CONTSETUP_VEHICLE_COLUMN = 14, +}; + struct tSkinInfo { - int32 field_0; - char skinName[256]; - char currSkinName[256]; + int32 skinId; + char skinNameDisplayed[256]; + char skinNameOriginal[256]; char date[256]; - tSkinInfo *field_304; + tSkinInfo *nextSkin; }; struct BottomBarOption @@ -419,15 +449,15 @@ public: int32 m_nMouseTempPosX; int32 m_nMouseTempPosY; bool m_bShowMouse; - tSkinInfo m_sSkin; + tSkinInfo m_pSkinListHead; tSkinInfo *m_pSelectedSkin; int32 m_nFirstVisibleRowOnList; - float m_nCurListItemY; + float m_nScrollbarTopMargin; int32 m_nTotalListRow; int32 m_nSkinsTotal; char _unk0[4]; int32 m_nSelectedListRow; - bool m_bSkinsFound; + bool m_bSkinsEnumerated; bool m_bQuitGameNoCD; bool m_bRenderGameInMenu; bool m_bSaveMenuActive; @@ -446,10 +476,10 @@ public: bool m_bPressedScrollButton; int32 m_CurrCntrlAction; char _unk1[4]; - int32 field_530; + int32 m_nSelectedContSetupColumn; bool m_bKeyIsOK; bool field_535; - int8 m_nCurrExLayer; // TODO: What's that? + int8 m_nCurrExLayer; int32 m_nHelperTextAlpha; int32 m_nMouseOldPosX; int32 m_nMouseOldPosY; @@ -514,7 +544,7 @@ public: int DisplaySlider(float, float, float, float, float, float); void DoSettingsBeforeStartingAGame(); void Draw(); - void DrawControllerBound(int, int, int, uint8); + void DrawControllerBound(int32, int32, int32, int8); void DrawControllerScreenExtraText(int, int, int); void DrawControllerSetupScreen(); void DrawFrontEnd(); @@ -550,6 +580,7 @@ public: void UnloadTextures(); void WaitForUserCD(); void PrintController(); + int GetNumOptionsCntrlConfigScreens(); // New (not in function or inlined in the game) void ThingsToDoBeforeLeavingPage(); diff --git a/src/core/PlayerSkin.cpp b/src/core/PlayerSkin.cpp index 4f730b90..bf780666 100644 --- a/src/core/PlayerSkin.cpp +++ b/src/core/PlayerSkin.cpp @@ -142,10 +142,6 @@ CPlayerSkin::RenderFrontendSkinEdit(void) const RwV3d axis2 = { 0.0f, 0.0f, 1.0f }; static uint32 LastFlash = 0; -#ifdef ASPECT_RATIO_SCALE - pos.x = 1.35f * (SCREEN_ASPECT_RATIO / DEFAULT_ASPECT_RATIO); -#endif - RwFrame *frame = RpClumpGetFrame(gpPlayerClump); if (CTimer::GetTimeInMillisecondsPauseMode() - LastFlash > 7) { diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index f1d8ec96..3824af7d 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -75,6 +75,18 @@ static_assert(RADAR_TILE_SIZE == (WORLD_SIZE_Y / RADAR_NUM_TILES), "CRadar: not #define RADAR_MIN_SPEED (0.3f) #define RADAR_MAX_SPEED (0.9f) +#ifdef MENU_MAP +CRGBA CRadar::ArrowBlipColour1; +CRGBA CRadar::ArrowBlipColour2; +uint16 CRadar::MapLegendCounter; +uint16 CRadar::MapLegendList[NUM_MAP_LEGENDS]; +bool CRadar::bMenuMapActive; +#endif + +// taken from VC +float CRadar::cachedCos; +float CRadar::cachedSin; + uint8 CRadar::CalculateBlipAlpha(float dist) { if (dist <= 1.0f) @@ -544,6 +556,9 @@ void CRadar::DrawBlips() void CRadar::DrawMap() { if (!TheCamera.m_WideScreenOn && CHud::m_Wants_To_Draw_Hud) { +#if 1 // from VC + CalculateCachedSinCos(); +#endif if (FindPlayerVehicle()) { float speed = FindPlayerSpeed().Magnitude(); if (speed < RADAR_MIN_SPEED) @@ -685,6 +700,19 @@ void CRadar::DrawRadarSection(int32 x, int32 y) void CRadar::DrawRadarSprite(uint16 sprite, float x, float y, uint8 alpha) { RadarSprites[sprite]->Draw(CRect(x - SCREEN_SCALE_X(8.0f), y - SCREEN_SCALE_Y(8.0f), x + SCREEN_SCALE_X(8.0f), y + SCREEN_SCALE_Y(8.0f)), CRGBA(255, 255, 255, alpha)); +#ifdef MENU_MAP + if (bMenuMapActive) { + bool alreadyThere; + for (int i = 0; i < NUM_MAP_LEGENDS; i++) { + if (MapLegendList[i] == sprite) + alreadyThere = true; + } + if (!alreadyThere) { + MapLegendList[MapLegendCounter] = sprite; + MapLegendCounter++; + } + } +#endif } void CRadar::DrawRotatingRadarSprite(CSprite2d* sprite, float x, float y, float angle, int32 alpha) @@ -1020,6 +1048,21 @@ void CRadar::ShowRadarTraceWithHeight(float x, float y, uint32 size, uint8 red, CSprite2d::DrawRect(CRect(x - SCREEN_SCALE_X(size), y - SCREEN_SCALE_Y(size), SCREEN_SCALE_X(size) + x, SCREEN_SCALE_Y(size) + y), CRGBA(red, green, blue, alpha)); break; } +#ifdef MENU_MAP + // VC uses -1 for coords and -2 for entities but meh, I don't want to edit DrawBlips + if (bMenuMapActive) { + bool alreadyThere; + for (int i = 0; i < NUM_MAP_LEGENDS; i++) { + if (MapLegendList[i] == -1) + alreadyThere = true; + } + if (!alreadyThere) { + MapLegendList[MapLegendCounter] = -1; + MapLegendCounter++; + ArrowBlipColour1 = CRGBA(red, green, blue, alpha); + } + } +#endif } void CRadar::Shutdown() @@ -1075,6 +1118,11 @@ void CRadar::TransformRealWorldToTexCoordSpace(CVector2D &out, const CVector2D & void CRadar::TransformRadarPointToRealWorldSpace(CVector2D &out, const CVector2D &in) { float s, c; +#if 1 + s = -cachedSin; + c = cachedCos; +#else + // Original code s = -Sin(TheCamera.GetForward().Heading()); c = Cos(TheCamera.GetForward().Heading()); @@ -1096,6 +1144,7 @@ void CRadar::TransformRadarPointToRealWorldSpace(CVector2D &out, const CVector2D s = -Sin(forward.Heading()); c = Cos(forward.Heading()); } +#endif out.x = s * in.y + c * in.x; out.y = c * in.y - s * in.x; @@ -1105,18 +1154,33 @@ void CRadar::TransformRadarPointToRealWorldSpace(CVector2D &out, const CVector2D // Radar space goes from -1.0 to 1.0 in x and y, top right is (1.0, 1.0) void CRadar::TransformRadarPointToScreenSpace(CVector2D &out, const CVector2D &in) -{ -#ifdef FIX_BUGS - out.x = (in.x + 1.0f)*0.5f*SCREEN_SCALE_X(RADAR_WIDTH) + SCREEN_SCALE_X(RADAR_LEFT); -#else - out.x = (in.x + 1.0f)*0.5f*SCREEN_SCALE_X(RADAR_WIDTH) + RADAR_LEFT; +{ +#ifdef MENU_MAP + if (bMenuMapActive) { + out.x = MENU_X_LEFT_ALIGNED((0.66193402f * m_nMapNegativePadding * in.x) + (0.2348f * m_nMapNegativePadding) + m_nMapLeftPadding); + out.y = MENU_Y(m_nMapTopPadding - (0.065807f * m_nMapNegativePadding) - (0.66563499f * m_nMapNegativePadding * in.y)); + } else #endif - out.y = (1.0f - in.y)*0.5f*SCREEN_SCALE_Y(RADAR_HEIGHT) + SCREEN_SCALE_FROM_BOTTOM(RADAR_BOTTOM + RADAR_HEIGHT); + { +#ifdef FIX_BUGS + out.x = (in.x + 1.0f) * 0.5f * SCREEN_SCALE_X(RADAR_WIDTH) + SCREEN_SCALE_X(RADAR_LEFT); +#else + out.x = (in.x + 1.0f) * 0.5f * SCREEN_SCALE_X(RADAR_WIDTH) + RADAR_LEFT; +#endif + out.y = (1.0f - in.y) * 0.5f * SCREEN_SCALE_Y(RADAR_HEIGHT) + SCREEN_SCALE_FROM_BOTTOM(RADAR_BOTTOM + RADAR_HEIGHT); + } } void CRadar::TransformRealWorldPointToRadarSpace(CVector2D &out, const CVector2D &in) { float s, c; +#if 1 + s = cachedSin; + c = cachedCos; +#else + // Original code + + float s, c; if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED) { s = 0.0f; c = 1.0f; @@ -1138,6 +1202,7 @@ void CRadar::TransformRealWorldPointToRadarSpace(CVector2D &out, const CVector2D s = Sin(forward.Heading()); c = Cos(forward.Heading()); } +#endif float x = (in.x - vec2DRadarOrigin.x) * (1.0f / m_radarRange); float y = (in.y - vec2DRadarOrigin.y) * (1.0f / m_radarRange); @@ -1261,6 +1326,51 @@ int CRadar::LineRadarBoxCollision(CVector2D &out, const CVector2D &p1, const CVe return edge; } +void +CRadar::CalculateCachedSinCos() +{ + if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED +#ifdef MENU_MAP + || bMenuMapActive +#endif + ) { + cachedSin = 0.0f; + cachedCos = 1.0f; + } else if (TheCamera.GetLookDirection() == LOOKING_FORWARD) { + cachedSin = Sin(TheCamera.GetForward().Heading()); + cachedCos = Cos(TheCamera.GetForward().Heading()); + } else { + CVector forward; + + if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON) { + forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetForward(); + forward.Normalise(); // a bit useless... + } + else + forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetPosition() - TheCamera.Cams[TheCamera.ActiveCam].SourceBeforeLookBehind; + + cachedSin = Sin(forward.Heading()); + cachedCos = Cos(forward.Heading()); + } +} + +#ifdef MENU_MAP +void +CRadar::InitFrontEndMap() +{ + CalculateCachedSinCos(); + vec2DRadarOrigin.x = 0.0f; + vec2DRadarOrigin.y = 0.0f; + m_radarRange = 1190.0f; + for (int i = 0; i < NUM_MAP_LEGENDS; i++) { + MapLegendList[i] = RADAR_SPRITE_NONE; + } + MapLegendCounter = 0; + ArrowBlipColour1 = CRGBA(0, 0, 0, 0); + ArrowBlipColour2 = CRGBA(0, 0, 0, 0); +} +#endif + STARTPATCHES InjectHook(0x4A3EF0, CRadar::Initialise, PATCH_JUMP); InjectHook(0x4A3F60, CRadar::Shutdown, PATCH_JUMP); diff --git a/src/core/Radar.h b/src/core/Radar.h index b0400b0d..fb10967b 100644 --- a/src/core/Radar.h +++ b/src/core/Radar.h @@ -21,6 +21,10 @@ enum eBlipDisplay enum eRadarSprite { +#ifdef MENU_MAP + RADAR_SPRITE_ENTITY_BLIP = -2, + RADAR_SPRITE_COORD_BLIP = -1, +#endif RADAR_SPRITE_NONE = 0, RADAR_SPRITE_ASUKA = 1, RADAR_SPRITE_BOMB = 2, @@ -101,8 +105,16 @@ public: static CSprite2d TonySprite; static CSprite2d WeaponSprite; static CSprite2d *RadarSprites[21]; + static float cachedCos; + static float cachedSin; +#ifdef MENU_MAP + static CRGBA ArrowBlipColour1; + static CRGBA ArrowBlipColour2; + static uint16 MapLegendList[75]; + static bool bMenuMapActive; -public: + static void InitFrontEndMap(); +#endif static uint8 CalculateBlipAlpha(float dist); static void ChangeBlipBrightness(int32 i, int32 bright); static void ChangeBlipColour(int32 i, int32); @@ -150,4 +162,5 @@ public: static void ClipRadarTileCoords(int32 &x, int32 &y); static bool IsPointInsideRadar(const CVector2D &); static int LineRadarBoxCollision(CVector2D &, const CVector2D &, const CVector2D &); + static void CalculateCachedSinCos(); }; diff --git a/src/core/config.h b/src/core/config.h index 4d66eef5..2d1bfff1 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -190,6 +190,7 @@ enum Config { #define TRIANGULAR_BLIPS // height indicating triangular radar blips, as in VC #define PS2_SAVE_DIALOG // PS2 style save dialog with transparent black box // #define PS2_LIKE_MENU // An effort to recreate PS2 menu, cycling through tabs, different bg etc. +// #define MENU_MAP // Very WIP // Script #define USE_DEBUG_SCRIPT_LOADER // makes game load main_freeroam.scm by default From 057b28e39b2e58aae1f47d44bd1ce6222a781978 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 5 Apr 2020 12:35:51 +0300 Subject: [PATCH 003/112] cranes init --- src/control/Cranes.cpp | 235 ++++++++++++++++++++++++++++++++++++++++- src/control/Cranes.h | 62 ++++++++--- src/core/config.h | 4 +- src/math/Matrix.h | 11 ++ 4 files changed, 291 insertions(+), 21 deletions(-) diff --git a/src/control/Cranes.cpp b/src/control/Cranes.cpp index 4c1bf2c8..96c41f45 100644 --- a/src/control/Cranes.cpp +++ b/src/control/Cranes.cpp @@ -2,13 +2,238 @@ #include "patcher.h" #include "Cranes.h" +#include "Camera.h" +#include "DMAudio.h" +#include "Entity.h" +#include "ModelIndices.h" +#include "Replay.h" +#include "Object.h" +#include "World.h" + +#define MAX_DISTANCE_TO_FIND_CRANE (10.0f) +#define CRANE_UPDATE_RADIUS (300.0f) +#define CRANE_MOVEMENT_PROCESSING_RADIUS (150.0f) +#define CRUSHER_Z (-0.951f) +#define MILITARY_Z (10.7862f) + +void CCranes::InitCranes(void) +{ + CarsCollectedMilitaryCrane = 0; + NumCranes = 0; + for (int i = 0; i < NUMSECTORS_X; i++) { + for (int j = 0; j < NUMSECTORS_Y; j++) { + for (CPtrNode* pNode = CWorld::GetSector(i, j)->m_lists[ENTITYLIST_BUILDINGS].first; pNode; pNode = pNode->next) { + CEntity* pEntity = (CEntity*)pNode->item; + if (MODELID_CRANE_1 == pEntity->GetModelIndex() || + MODELID_CRANE_2 == pEntity->GetModelIndex() || + MODELID_CRANE_3 == pEntity->GetModelIndex()) + AddThisOneCrane(pEntity); + } + } + } + for (CPtrNode* pNode = CWorld::GetBigBuildingList(LEVEL_INDUSTRIAL).first; pNode; pNode->next) { + CEntity* pEntity = (CEntity*)pNode->item; + if (MODELID_CRANE_1 == pEntity->GetModelIndex() || + MODELID_CRANE_2 == pEntity->GetModelIndex() || + MODELID_CRANE_3 == pEntity->GetModelIndex()) + AddThisOneCrane(pEntity); + } +} + +void CCranes::AddThisOneCrane(CEntity* pEntity) +{ + pEntity->GetMatrix().ResetOrientation(); + if (NumCranes >= NUM_CRANES) + return; + CCrane* pCrane = &aCranes[NumCranes]; + pCrane->Init(); + pCrane->m_pObject = pEntity; + pCrane->m_bCraneStatus = CCrane::NONE; + pCrane->m_fHeight = NumCranes; // lol wtf + while (pCrane->m_fHeight > TWOPI) + pCrane->m_fHeight -= TWOPI; + pCrane->m_fHookOffset = 20.0f; + pCrane->m_fHookHeight = 20.0f; + pCrane->m_nUpdateTimer = 0; + pCrane->m_bCraneState = CCrane::IDLE; + pCrane->m_bWasMilitaryCrane = 0; + pCrane->m_nAudioEntity = DMAudio.CreateEntity(AUDIOTYPE_CRANE, &aCranes[NumCranes]); + if (pCrane->m_nAudioEntity >= 0) + DMAudio.SetEntityStatus(pCrane->m_nAudioEntity, 1); + pCrane->m_bIsTop = (MODELID_CRANE_1 != pEntity->GetModelIndex()); + // W T F ? ? ? + // Is this used to avoid military crane? + if (pCrane->m_bIsTop || pEntity->GetPosition().y > 0.0f) { + CObject* pMagnet = new CObject(MI_MAGNET, false); + pMagnet->ObjectCreatedBy = MISSION_OBJECT; + pMagnet->bUsesCollision = false; + pMagnet->bExplosionProof = true; + pMagnet->bAffectedByGravity = false; + pCrane->m_pMagnet = pMagnet; + pCrane->CalcHookCoordinates(&pCrane->m_vecHookCurPos.x, &pCrane->m_vecHookCurPos.y, &pCrane->m_vecHookCurPos.z); + pCrane->SetHookMatrix(); + } + else + pCrane->m_pMagnet = nil; + NumCranes++; +} + +void CCranes::ActivateCrane(float fInfX, float fSupX, float fInfY, float fSupY, float fDropOffX, float fDropOffY, float fDropOffZ, float fHeading, bool bIsCrusher, bool bIsMilitary, float fPosX, float fPosY) +{ + float fMinDistance = 99999.9f; + float X = fPosX, Y = fPosY; + if (X <= -10000.0f || Y <= -10000.0f) { + X = fDropOffX; + Y = fDropOffY; + } + int index = 0; + for (int i = 0; i < NumCranes; i++) { + float distance = (CVector2D(X, Y) - aCranes[i].m_pObject->GetPosition()).Magnitude(); + if (distance < fMinDistance && distance < MAX_DISTANCE_TO_FIND_CRANE) { + fMinDistance = distance; + index = i; + } + } +#ifdef FIX_BUGS // classic + if (fMinDistance == 99999.9f) + return; +#endif + CCrane* pCrane = &aCranes[NumCranes]; + pCrane->m_fPickupX1 = fInfX; + pCrane->m_fPickupX2 = fSupX; + pCrane->m_fPickupY1 = fInfY; + pCrane->m_fPickupY2 = fSupY; + pCrane->m_vecDropoffTarget.x = fDropOffX; + pCrane->m_vecDropoffTarget.y = fDropOffY; + pCrane->m_vecDropoffTarget.z = fDropOffZ; + pCrane->m_bCraneStatus = CCrane::ACTIVATED; + pCrane->m_pVehiclePickedUp = nil; + pCrane->m_bVehiclesCollected = 0; + pCrane->m_bIsCrusher = bIsCrusher; + pCrane->m_bIsMilitaryCrane = bIsMilitary; + bool military = true; + if (!bIsMilitary && !pCrane->m_bWasMilitaryCrane) + military = false; + pCrane->m_bWasMilitaryCrane = military; + pCrane->m_nUpdateTimer = 0; + pCrane->m_bCraneState = CCrane::IDLE; + float Z; + if (bIsCrusher) + Z = CRUSHER_Z; + else if (bIsMilitary) + Z = MILITARY_Z; + else + Z = CWorld::FindGroundZForCoord((fInfX + fSupY) / 2, (fInfY + fSupY) / 2); + pCrane->FindParametersForTarget((fInfX + fSupY) / 2, (fInfY + fSupY) / 2, Z, &pCrane->m_fPickupAngle, &pCrane->m_fPickupDistance, &pCrane->m_fAngle); + pCrane->FindParametersForTarget(fDropOffX, fDropOffY, fDropOffZ, &pCrane->m_fDropoffAngle, &pCrane->m_fDropoffDistance, &pCrane->m_fDistance); +} + +void CCranes::DeActivateCrane(float X, float Y) +{ + float fMinDistance = 99999.9f; + int index = 0; + for (int i = 0; i < NumCranes; i++) { + float distance = (CVector2D(X, Y) - aCranes[i].m_pObject->GetPosition()).Magnitude(); + if (distance < fMinDistance && distance < MAX_DISTANCE_TO_FIND_CRANE) { + fMinDistance = distance; + index = i; + } + } +#ifdef FIX_BUGS // classic + if (fMinDistance == 99999.9f) + return; +#endif + aCranes[index].m_bCraneStatus = CCrane::DEACTIVATED; + aCranes[index].m_bCraneState = CCrane::IDLE; +} + +bool CCranes::IsThisCarPickedUp(float X, float Y, CVehicle* pVehicle) +{ + int index = 0; + bool result = false; + for (int i = 0; i < NumCranes; i++) { + float distance = (CVector2D(X, Y) - aCranes[i].m_pObject->GetPosition()).Magnitude(); + if (distance < MAX_DISTANCE_TO_FIND_CRANE && aCranes[i].m_pVehiclePickedUp == pVehicle) { + if (aCranes[i].m_bCraneStatus == CCrane::LIFTING_TARGET || aCranes[i].m_bCraneStatus == CCrane::ROTATING_TARGET) + result = true; + } + } + return true; +} + +void CCranes::UpdateCranes(void) +{ + for (int i = 0; i < NumCranes; i++) { + if (aCranes[i].m_bIsTop || aCranes[i].m_bIsCrusher || + (TheCamera.GetPosition().x + CRANE_UPDATE_RADIUS > aCranes[i].m_pObject->GetPosition().x && + TheCamera.GetPosition().x - CRANE_UPDATE_RADIUS < aCranes[i].m_pObject->GetPosition().x && + TheCamera.GetPosition().y + CRANE_UPDATE_RADIUS > aCranes[i].m_pObject->GetPosition().y && + TheCamera.GetPosition().y + CRANE_UPDATE_RADIUS < aCranes[i].m_pObject->GetPosition().y)) + aCranes[i].Update(); + } +} + +void CCrane::Update(void) +{ + if (CReplay::IsPlayingBack()) + return; + if ((m_bCraneStatus == ACTIVATED || m_bCraneStatus == DEACTIVATED) && + Abs(TheCamera.GetGameCamPosition().x - m_pObject->GetPosition().x) < CRANE_MOVEMENT_PROCESSING_RADIUS && + Abs(TheCamera.GetGameCamPosition().y - m_pObject->GetPosition().y) < CRANE_MOVEMENT_PROCESSING_RADIUS) { + switch (m_bCraneState) { + case IDLE: + if (GoTowardsTarget(m_fPickupAngle, m_fPickupDistance, 4.0f + m_fAngle + m_bIsCrusher ? 4.5f : 0.0f, 1.0f) && + CTimer::GetTimeInMilliseconds() > m_nUpdateTimer) { + CWorld::AdvanceCurrentScanCode(); +#ifdef FIX_BUGS + int xstart = max(0, CWorld::GetSectorIndexX(m_fPickupX1)); + int xend = min(NUMSECTORS_X - 1, CWorld::GetSectorIndexX(m_fPickupX2)); + int ystart = max(0, CWorld::GetSectorIndexY(m_fPickupY1)); + int yend = min(NUMSECTORS_Y - 1, CWorld::GetSectorIndexY(m_fPickupY2)); +#else + int xstart = CWorld::GetSectorIndexX(m_fPickupX1); + int xend = CWorld::GetSectorIndexX(m_fPickupX2); + int ystart = CWorld::GetSectorIndexY(m_fPickupY1); + int yend = CWorld::GetSectorIndexY(m_fPickupY1); +#endif + assert(xstart <= xend); + assert(ystart <= yend); + for (int i = xstart; i <= xend; i++) { + for (int j = ystart; j <= yend; j++) { + FindCarInSectorList(&CWorld::GetSector(i, j)->m_lists[ENTITYLIST_VEHICLES]); + FindCarInSectorList(&CWorld::GetSector(i, j)->m_lists[ENTITYLIST_VEHICLES_OVERLAP]); + } + } + } + break; + case GOING_TOWARDS_TARGET: + if (!m_pVehiclePickedUp) { + m_bCraneState = IDLE; + break; + } + if (m_pVehiclePickedUp->GetPosition().x < m_fPickupX1 || + m_pVehiclePickedUp->GetPosition().x > m_fPickupX2 || + m_pVehiclePickedUp->GetPosition().y > m_fPickupY1 || + m_pVehiclePickedUp->GetPosition().y > m_fPickupY2 || + m_pVehiclePickedUp->pDriver || + Abs(m_pVehiclePickedUp->GetMoveSpeed().x) > 0.01f || + Abs(m_pVehiclePickedUp->GetMoveSpeed().y) > 0.01f || + Abs(m_pVehiclePickedUp->GetMoveSpeed().z) > 0.01f || + FindPlayerPed()->GetPedState() == PED_ENTER_CAR && + FindPlayerPed()->m_pSeekTarget == m_pVehiclePickedUp) { + m_pVehiclePickedUp = nil; + m_bCraneState = IDLE; + break; + } + + } + } +} + WRAPPER bool CCranes::IsThisCarBeingTargettedByAnyCrane(CVehicle*) { EAXJMP(0x5451E0); } WRAPPER bool CCranes::IsThisCarBeingCarriedByAnyCrane(CVehicle*) { EAXJMP(0x545190); } -WRAPPER bool CCranes::IsThisCarPickedUp(float, float, CVehicle*) { EAXJMP(0x543940); } WRAPPER bool CCranes::HaveAllCarsBeenCollectedByMilitaryCrane() { EAXJMP(0x544BE0); } -WRAPPER void CCranes::ActivateCrane(float, float, float, float, float, float, float, float, bool, bool, float, float) { EAXJMP(0x543650); } -WRAPPER void CCranes::DeActivateCrane(float, float) { EAXJMP(0x543890); } -WRAPPER void CCranes::InitCranes(void) { EAXJMP(0x543360); } -WRAPPER void CCranes::UpdateCranes(void) { EAXJMP(0x5439E0); } + + WRAPPER void CCranes::Save(uint8*, uint32*) { EAXJMP(0x545210); } WRAPPER void CranesLoad(uint8*, uint32) { EAXJMP(0x5454d0); } diff --git a/src/control/Cranes.h b/src/control/Cranes.h index b40454ea..c121378b 100644 --- a/src/control/Cranes.h +++ b/src/control/Cranes.h @@ -1,6 +1,8 @@ #pragma once #include "common.h" +#include "World.h" + class CVehicle; class CEntity; class CObject; @@ -8,9 +10,22 @@ class CObject; class CCrane { public: + enum CraneState : uint8 { + IDLE = 0, + GOING_TOWARDS_TARGET = 1, + LIFTING_TARGET = 2, + GOING_TOWARDS_HEIGHT_TARGET = 3, + ROTATING_TARGET = 4, + DROPPING_TARGET = 5 + }; + enum CraneStatus : uint8 { + NONE = 0, + ACTIVATED = 1, + DEACTIVATED = 2 + }; CEntity *m_pObject; CObject *m_pMagnet; - int m_nAudioEntity; + int32 m_nAudioEntity; float m_fPickupX1; float m_fPickupX2; float m_fPickupY1; @@ -31,15 +46,25 @@ public: float m_fHookVelocityX; float m_fHookVelocityY; CVehicle *m_pVehiclePickedUp; - int m_nUpdateTimer; - char m_bCraneActive; - char m_bCraneStatus; - char m_bVehiclesCollected; - char m_bIsCrusher; - char m_bIsMilitaryCrane; - char field_125; - char m_bNotMilitaryCrane; - char gap_127[1]; + uint32 m_nUpdateTimer; + CraneStatus m_bCraneStatus; + CraneState m_bCraneState; + uint8 m_bVehiclesCollected; + bool m_bIsCrusher; + bool m_bIsMilitaryCrane; + bool m_bWasMilitaryCrane; + bool m_bIsTop; + + void Init(void) { memset(this, 0, sizeof(*this)); } + void Update(void); + bool RotateCarriedCarProperly(); + void FindCarInSectorList(CPtrList*); + bool DoesCranePickUpThisCarType(uint32); + bool GoTowardsTarget(float, float, float, float); + bool GoTowardsHeightTarget(float, float); + void FindParametersForTarget(float, float, float, float*, float*, float*); + void CalcHookCoordinates(float*, float*, float*); + void SetHookMatrix(); }; static_assert(sizeof(CCrane) == 128, "CCrane: error"); @@ -47,15 +72,22 @@ static_assert(sizeof(CCrane) == 128, "CCrane: error"); class CCranes { public: - static bool IsThisCarBeingTargettedByAnyCrane(CVehicle*); - static bool IsThisCarBeingCarriedByAnyCrane(CVehicle*); - static bool IsThisCarPickedUp(float, float, CVehicle*); - static bool HaveAllCarsBeenCollectedByMilitaryCrane(); + static void InitCranes(void); + static void AddThisOneCrane(CEntity*); static void ActivateCrane(float, float, float, float, float, float, float, float, bool, bool, float, float); static void DeActivateCrane(float, float); - static void InitCranes(void); + static bool IsThisCarPickedUp(float, float, CVehicle*); static void UpdateCranes(void); + static bool DoesMilitaryCraneHaveThisOneAlready(uint32); + static void RegisterCarForMilitaryCrane(uint32); + static bool HaveAllCarsBeenCollectedByMilitaryCrane(); + static bool IsThisCarBeingCarriedByAnyCrane(CVehicle*); + static bool IsThisCarBeingTargettedByAnyCrane(CVehicle*); static void Save(uint8*, uint32*); + + static int32& CarsCollectedMilitaryCrane; + static int32& NumCranes; + static CCrane(&aCranes)[NUM_CRANES]; }; void CranesLoad(uint8*, uint32); // is this really outside CCranes? diff --git a/src/core/config.h b/src/core/config.h index 58885e57..784a9b95 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -118,7 +118,9 @@ enum Config { NUM_AUDIO_REFLECTIONS = 5, NUM_SCRIPT_MAX_ENTITIES = 40, - NUM_GARAGE_STORED_CARS = 6 + NUM_GARAGE_STORED_CARS = 6, + + NUM_CRANES = 8 }; // We'll use this once we're ready to become independent of the game diff --git a/src/math/Matrix.h b/src/math/Matrix.h index da38cb1d..35972e7f 100644 --- a/src/math/Matrix.h +++ b/src/math/Matrix.h @@ -243,6 +243,17 @@ public: m_matrix.pos.y = 0.0f; m_matrix.pos.z = 0.0f; } + void ResetOrientation(void) { + m_matrix.right.x = 1.0f; + m_matrix.right.y = 0.0f; + m_matrix.right.z = 0.0f; + m_matrix.up.x = 0.0f; + m_matrix.up.y = 1.0f; + m_matrix.up.z = 0.0f; + m_matrix.at.x = 0.0f; + m_matrix.at.y = 0.0f; + m_matrix.at.z = 1.0f; + } }; From cbbe722b70d016d18d871b63a50fdf7ccd8522b9 Mon Sep 17 00:00:00 2001 From: aap Date: Sun, 5 Apr 2020 14:32:13 +0200 Subject: [PATCH 004/112] PS2 Frontend Controls --- src/core/FrontEndControls.cpp | 1881 +++++++++++++++++++++++++++++++++ src/core/FrontEndControls.h | 712 +++++++++++++ 2 files changed, 2593 insertions(+) create mode 100644 src/core/FrontEndControls.cpp create mode 100644 src/core/FrontEndControls.h diff --git a/src/core/FrontEndControls.cpp b/src/core/FrontEndControls.cpp new file mode 100644 index 00000000..866be42f --- /dev/null +++ b/src/core/FrontEndControls.cpp @@ -0,0 +1,1881 @@ +#include "common.h" +#include "main.h" +#include "Timer.h" +#include "Pad.h" +#include "ControllerConfig.h" +#include "VisibilityPlugins.h" +#include "Sprite2d.h" +#include "Text.h" +#include "Font.h" +#include "Frontend.h" +#include "FrontEndControls.h" + + +void +CPlaceableShText::Draw(float x, float y) +{ + if(m_text == nil) + return; + + if(m_bRightJustify) + CFont::SetRightJustifyOn(); + if(m_bDropShadow){ + CFont::SetDropShadowPosition(m_shadowOffset.x); + CFont::SetDropColor(m_shadowColor); + } + CFont::SetColor(m_color); + CFont::PrintString(x+m_position.x, y+m_position.y, m_text); + if(m_bDropShadow) + CFont::SetDropShadowPosition(0); + if(m_bRightJustify) + CFont::SetRightJustifyOff(); +} + +void +CPlaceableShText::Draw(const CRGBA &color, float x, float y) +{ + if(m_text == nil) + return; + + if(m_bRightJustify) + CFont::SetRightJustifyOn(); + if(m_bDropShadow){ + CFont::SetDropShadowPosition(m_shadowOffset.x); + CFont::SetDropColor(m_shadowColor); + } + CFont::SetColor(color); + CFont::PrintString(x+m_position.x, y+m_position.y, m_text); + if(m_bDropShadow) + CFont::SetDropShadowPosition(0); + if(m_bRightJustify) + CFont::SetRightJustifyOff(); +} + +void +CPlaceableShTextTwoLines::Draw(float x, float y) +{ + if(m_line1.m_text == nil && m_line2.m_text == nil) + return; + + if(m_bRightJustify) + CFont::SetRightJustifyOn(); + if(m_bDropShadow){ + CFont::SetDropShadowPosition(m_shadowOffset.x); + CFont::SetDropColor(m_shadowColor); + } + + if(m_line1.m_text){ + CFont::SetColor(m_line1.m_color); + CFont::PrintString(x+m_line1.m_position.x, y+m_line1.m_position.y, m_line1.m_text); + } + if(m_line2.m_text){ + CFont::SetColor(m_line2.m_color); + CFont::PrintString(x+m_line2.m_position.x, y+m_line2.m_position.y, m_line2.m_text); + } + + if(m_bDropShadow) + CFont::SetDropShadowPosition(0); + if(m_bRightJustify) + CFont::SetRightJustifyOff(); +} + +void +CPlaceableShTextTwoLines::Draw(const CRGBA &color, float x, float y) +{ + if(m_line1.m_text == nil && m_line2.m_text == nil) + return; + + if(m_bRightJustify) + CFont::SetRightJustifyOn(); + if(m_bDropShadow){ + CFont::SetDropShadowPosition(m_shadowOffset.x); + CFont::SetDropColor(m_shadowColor); + } + + if(m_line1.m_text){ + CFont::SetColor(color); + CFont::PrintString(x+m_line1.m_position.x, y+m_line1.m_position.y, m_line1.m_text); + } + if(m_line2.m_text){ + CFont::SetColor(color); + CFont::PrintString(x+m_line2.m_position.x, y+m_line2.m_position.y, m_line2.m_text); + } + + if(m_bDropShadow) + CFont::SetDropShadowPosition(0); + if(m_bRightJustify) + CFont::SetRightJustifyOff(); +} + +void +CPlaceableShOption::Draw(const CRGBA &highlightColor, float x, float y, bool bHighlight) +{ + if(bHighlight) + CPlaceableShText::Draw(highlightColor, x, y); + else if(m_bSelected) + CPlaceableShText::Draw(m_selectedColor, x, y); + else + CPlaceableShText::Draw(x, y); +} + +void +CPlaceableShOptionTwoLines::Draw(const CRGBA &highlightColor, float x, float y, bool bHighlight) +{ + if(bHighlight) + CPlaceableShTextTwoLines::Draw(highlightColor, x, y); + else if(m_bSelected) + CPlaceableShTextTwoLines::Draw(m_selectedColor, x, y); + else + CPlaceableShTextTwoLines::Draw(x, y); +} + +void +CPlaceableSprite::Draw(float x, float y) +{ + Draw(m_color, x, y); +} + +void +CPlaceableSprite::Draw(const CRGBA &color, float x, float y) +{ + if(m_pSprite) + m_pSprite->Draw(CRect(m_position.x+x, m_position.y+y, + m_position.x+x + m_size.x, m_position.y+y + m_size.y), + color); +} + +void +CPlaceableShSprite::Draw(float x, float y) +{ + if(m_bDropShadow) + m_shadow.Draw(m_shadow.m_color, m_sprite.m_position.x+x, m_sprite.m_position.y+y); + m_sprite.Draw(x, y); +} + + +/* + * CMenuPictureAndText + */ + +void +CMenuPictureAndText::SetNewOldShadowWrapX(bool bWrapX, float newWrapX, float oldWrapX) +{ + m_bWrap = bWrapX; + m_wrapX = newWrapX; + m_oldWrapx = oldWrapX; +} + +void +CMenuPictureAndText::SetNewOldTextScale(bool bTextScale, const CVector2D &newScale, const CVector2D &oldScale) +{ + m_bSetTextScale = bTextScale; + m_textScale = newScale; + m_oldTextScale = oldScale; +} + +void +CMenuPictureAndText::SetTextsColor(CRGBA const &color) +{ + int i; + for(i = 0; i < m_numTexts; i++) + m_texts[i].m_color = color; +} + +void +CMenuPictureAndText::AddText(wchar *text, float positionX, float positionY, CRGBA const &color, bool bRightJustify) +{ + int i; + if(m_numTexts >= 20) + return; + i = m_numTexts++; + m_texts[i].m_text = text; + m_texts[i].m_position.x = positionX; + m_texts[i].m_position.y = positionY; + m_texts[i].m_color = color; + m_texts[i].m_bRightJustify = bRightJustify; +} + +void +CMenuPictureAndText::AddPicture(CSprite2d *sprite, CSprite2d *shadow, float positionX, float positionY, float width, float height, CRGBA const &color) +{ + int i; + if(m_numSprites >= 5) + return; + i = m_numSprites++; + m_sprites[i].m_sprite.m_pSprite = sprite; + m_sprites[i].m_shadow.m_pSprite = shadow; + m_sprites[i].m_sprite.m_position.x = positionX; + m_sprites[i].m_sprite.m_position.y = positionY; + m_sprites[i].m_sprite.m_size.x = width; + m_sprites[i].m_sprite.m_size.y = height; + m_sprites[i].m_shadow.m_size.x = width; + m_sprites[i].m_shadow.m_size.y = height; + m_sprites[i].m_sprite.m_color = color; +} + +void +CMenuPictureAndText::AddPicture(CSprite2d *sprite, float positionX, float positionY, float width, float height, CRGBA const &color) +{ + int i; + if(m_numSprites >= 5) + return; + i = m_numSprites++; + m_sprites[i].m_sprite.m_pSprite = sprite; + m_sprites[i].m_shadow.m_pSprite = nil; + m_sprites[i].m_sprite.m_position.x = positionX; + m_sprites[i].m_sprite.m_position.y = positionY; + m_sprites[i].m_sprite.m_size.x = width; + m_sprites[i].m_sprite.m_size.y = height; + m_sprites[i].m_shadow.m_size.x = width; + m_sprites[i].m_shadow.m_size.y = height; + m_sprites[i].m_sprite.m_color = color; +} + +void +CMenuPictureAndText::Draw(CRGBA const &,CRGBA const &, float x, float y) +{ + int i; + + for(i = 0; i < m_numSprites; i++) + m_sprites[i].Draw(m_position.x+x, m_position.y+y); + + if(m_bSetTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + for(i = 0; i < m_numTexts; i++) + if(m_bWrap) + m_texts[i].DrawShWrap(m_position.x+x, m_position.y+y, m_wrapX, m_oldWrapx); + else + m_texts[i].Draw(m_position.x+x, m_position.y+y); + if(m_bSetTextScale) + CFont::SetScale(m_oldTextScale.x, m_oldTextScale.y); +} + +void +CMenuPictureAndText::SetAlpha(uint8 alpha) +{ + int i; + + for(i = 0; i < m_numSprites; i++) + m_sprites[i].SetAlpha(alpha); + for(i = 0; i < m_numTexts; i++) + m_texts[i].SetAlpha(alpha); +} + +void +CMenuPictureAndText::SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset) +{ + int i; + + for(i = 0; i < 5; i++) + m_sprites[i].SetShadows(bDropShadows, shadowColor, shadowOffset); + for(i = 0; i < 20; i++) + m_texts[i].SetShadows(bDropShadows, shadowColor, shadowOffset); +} + +/* + * CMenuMultiChoice + */ + +void +CMenuMultiChoice::AddTitle(wchar *text, float positionX, float positionY, bool bRightJustify) +{ + m_title.m_text = text; + m_title.SetPosition(positionX, positionY, bRightJustify); +} + +CPlaceableShOption* +CMenuMultiChoice::AddOption(wchar *text, float positionX, float positionY, bool bSelected, bool bRightJustify) +{ + if(m_numOptions == NUM_MULTICHOICE_OPTIONS) + return nil; + m_options[m_numOptions].m_text = text; + m_options[m_numOptions].SetPosition(positionX, positionY); + m_options[m_numOptions].m_bSelected = bSelected; + m_options[m_numOptions].m_bRightJustify = bRightJustify; + return &m_options[m_numOptions++]; +} + +void +CMenuMultiChoice::SetColors(const CRGBA &title, const CRGBA &normal, const CRGBA &selected) +{ + int i; + m_title.SetColor(title); + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_options[i].SetColors(normal, selected); +} + +void +CMenuMultiChoice::SetNewOldTextScale(bool bTextScale, const CVector2D &newScale, const CVector2D &oldScale, bool bTitleTextScale) +{ + m_bSetTextScale = bTextScale; + m_textScale = newScale; + m_oldTextScale = oldScale; + m_bSetTitleTextScale = bTitleTextScale; +} + +void +CMenuMultiChoice::Draw(CRGBA const &optionHighlight ,CRGBA const &titleHighlight, float x, float y) +{ + int i; + + if(m_bSetTextScale && m_bSetTitleTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + if(m_cursor == -1) + m_title.Draw(m_position.x+x, m_position.y+y); + else + m_title.Draw(titleHighlight, m_position.x+x, m_position.y+y); + + if(m_bSetTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + + if(m_cursor == -1) + for(i = 0; i < m_numOptions; i++) + m_options[i].Draw(CRGBA(0,0,0,0), m_position.x+x, m_position.y+y, false); + else + for(i = 0; i < m_numOptions; i++){ + if(i == m_cursor) + m_options[i].Draw(optionHighlight, m_position.x+x, m_position.y+y); + else + m_options[i].Draw(CRGBA(0,0,0,0), m_position.x+x, m_position.y+y, false); + } + + if(m_bSetTextScale){ + CFont::DrawFonts(); + CFont::SetScale(m_oldTextScale.x, m_oldTextScale.y); + } +} + +void +CMenuMultiChoice::DrawNormal(float x, float y) +{ + int i; + + if(m_bSetTextScale && m_bSetTitleTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + m_title.Draw(m_position.x+x, m_position.y+y); + + if(m_bSetTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + + for(i = 0; i < m_numOptions; i++) + m_options[i].Draw(CRGBA(0,0,0,0), m_position.x+x, m_position.y+y, false); + + if(m_bSetTextScale){ + CFont::DrawFonts(); + CFont::SetScale(m_oldTextScale.x, m_oldTextScale.y); + } +} + +void +CMenuMultiChoice::DrawHighlighted(CRGBA const &titleHighlight, float x, float y) +{ + int i; + + if(m_bSetTextScale && m_bSetTitleTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + if(m_cursor == -1) + m_title.Draw(m_position.x+x, m_position.y+y); + else + m_title.Draw(titleHighlight, m_position.x+x, m_position.y+y); + + if(m_bSetTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + + for(i = 0; i < m_numOptions; i++) + m_options[i].Draw(CRGBA(0,0,0,0), m_position.x+x, m_position.y+y, false); + + if(m_bSetTextScale){ + CFont::DrawFonts(); + CFont::SetScale(m_oldTextScale.x, m_oldTextScale.y); + } +} + +void +CMenuMultiChoice::SetAlpha(uint8 alpha) +{ + int i; + m_title.SetAlpha(alpha); + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_options[i].SetAlpha(alpha); +} + +void +CMenuMultiChoice::SetShadows(bool bDropShadows, CRGBA const &shadowColor, CVector2D const &shadowOffset) +{ + int i; + m_title.SetShadows(bDropShadows, shadowColor, shadowOffset); + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_options[i].SetShadows(bDropShadows, shadowColor, shadowOffset); +} + + +bool +CMenuMultiChoice::GoNext(void) +{ + if(m_cursor == m_numOptions-1){ + m_cursor = -1; + return false; + }else{ + m_cursor++; + return true; + } +} + +bool +CMenuMultiChoice::GoPrev(void) +{ + if(m_cursor == 0){ + m_cursor = -1; + return false; + }else{ + m_cursor--; + return true; + } +} + +void +CMenuMultiChoice::SelectCurrentOptionUnderCursor(void) +{ + int i; + if(m_cursor == -1) + return; + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_options[i].m_bSelected = false; + m_options[m_cursor].m_bSelected = true; +} + +int +CMenuMultiChoice::GetMenuSelection(void) +{ + int i; + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + if(m_options[i].m_bSelected) + return i; + return -1; +} + +void +CMenuMultiChoice::SetMenuSelection(int selection) +{ + int i; + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_options[i].m_bSelected = false; + m_options[selection%NUM_MULTICHOICE_OPTIONS].m_bSelected = true; +} + +/* + * CMenuMultiChoiceTriggered + */ + +void +CMenuMultiChoiceTriggered::Initialise(void) +{ + int i; + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_triggers[i] = nil; + m_defaultCancel = nil; +} + +CPlaceableShOption* +CMenuMultiChoiceTriggered::AddOption(wchar *text, float positionX, float positionY, Trigger trigger, bool bSelected, bool bRightJustify) +{ + CPlaceableShOption *option; + option = CMenuMultiChoice::AddOption(text, positionX, positionY, bSelected, bRightJustify); + if(option) + m_triggers[m_numOptions-1] = trigger; + return option; +} + +void +CMenuMultiChoiceTriggered::SelectCurrentOptionUnderCursor(void) +{ + CMenuMultiChoice::SelectCurrentOptionUnderCursor(); + if(m_cursor != -1) + m_triggers[m_cursor](this); +} + +void +CMenuMultiChoiceTriggered::SelectDefaultCancelAction(void) +{ + if(m_defaultCancel) + m_defaultCancel(this); +} + +/* + * CMenuMultiChoiceTriggeredAlways + */ + +void +CMenuMultiChoiceTriggeredAlways::Draw(CRGBA const &optionHighlight, CRGBA const &titleHighlight, float x, float y) +{ + if(m_alwaysTrigger) + m_alwaysTrigger(this); + CMenuMultiChoiceTriggered::Draw(optionHighlight, titleHighlight, x, y); +} + +void +CMenuMultiChoiceTriggeredAlways::DrawNormal(float x, float y) +{ + if(m_alwaysNormalTrigger) + m_alwaysNormalTrigger(this); + CMenuMultiChoiceTriggered::DrawNormal(x, y); +} + +void +CMenuMultiChoiceTriggeredAlways::DrawHighlighted(CRGBA const &titleHighlight, float x, float y) +{ + if(m_alwaysHighlightTrigger) + m_alwaysHighlightTrigger(this); + CMenuMultiChoiceTriggered::DrawHighlighted(titleHighlight, x, y); +} + +/* + * CMenuMultiChoicePictured + */ + +void +CMenuMultiChoicePictured::Initialise(void) +{ + int i; + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_bHasSprite[i] = false; + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_sprites[i].m_pSprite = nil; +} + +CPlaceableShOption* +CMenuMultiChoicePictured::AddOption(CSprite2d *sprite, float positionX, float positionY, const CVector2D &size, bool bSelected) +{ + CPlaceableShOption *option; + option = CMenuMultiChoice::AddOption(nil, 0.0f, 0.0f, bSelected, false); + if(option){ + m_sprites[m_numOptions-1].m_pSprite = sprite; + m_sprites[m_numOptions-1].SetPosition(positionX, positionY); + m_sprites[m_numOptions-1].m_size = size; + m_bHasSprite[m_numOptions-1] = true; + } + return option; +} + +void +CMenuMultiChoicePictured::Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y) +{ + int i; + + // The title and all the text + CMenuMultiChoice::Draw(optionHighlight, titleHighlight, x, y); + + CRGBA selectedColor = m_options[0].GetSelectedColor(); + CRGBA color = m_options[0].GetColor(); + + // The sprites + if(m_cursor == -1){ + for(i = 0; i < m_numOptions; i++) + if(m_bHasSprite[i]){ + if(m_options[i].m_bSelected) + m_sprites[i].Draw(selectedColor, m_position.x+x, m_position.y+y); + else + m_sprites[i].Draw(color, m_position.x+x, m_position.y+y); + } + }else{ + for(i = 0; i < m_numOptions; i++) + if(i == m_cursor){ + if(m_bHasSprite[i]) + m_sprites[i].Draw(CRGBA(255, 255, 255, 255), m_position.x+x, m_position.y+y); + }else{ + if(m_bHasSprite[i]){ + if(m_options[i].m_bSelected) + m_sprites[i].Draw(selectedColor, m_position.x+x, m_position.y+y); + else + m_sprites[i].Draw(color, m_position.x+x, m_position.y+y); + } + } + } +} + +void +CMenuMultiChoicePictured::DrawNormal(float x, float y) +{ + int i; + + // The title and all the text + CMenuMultiChoice::DrawNormal(x, y); + + CRGBA selectedColor = m_options[0].GetSelectedColor(); + CRGBA color = m_options[0].GetColor(); + + // The sprites + for(i = 0; i < m_numOptions; i++) + if(m_bHasSprite[i]){ + if(m_options[i].m_bSelected) + m_sprites[i].Draw(selectedColor, m_position.x+x, m_position.y+y); + else + m_sprites[i].Draw(color, m_position.x+x, m_position.y+y); + } +} + +void +CMenuMultiChoicePictured::DrawHighlighted(const CRGBA &titleHighlight, float x, float y) +{ + int i; + + // The title and all the text + CMenuMultiChoice::DrawHighlighted(titleHighlight, x, y); + + CRGBA selectedColor = m_options[0].GetSelectedColor(); + CRGBA color = m_options[0].GetColor(); + + // The sprites + for(i = 0; i < m_numOptions; i++) + if(m_bHasSprite[i]){ + if(m_options[i].m_bSelected) + m_sprites[i].Draw(selectedColor, m_position.x+x, m_position.y+y); + else + m_sprites[i].Draw(color, m_position.x+x, m_position.y+y); + } +} + +void +CMenuMultiChoicePictured::SetAlpha(uint8 alpha) +{ + int i; + CMenuMultiChoice::SetAlpha(alpha); + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_sprites[i].SetAlpha(alpha); + +} + + +/* + * CMenuMultiChoicePicturedTriggered + */ + +void +CMenuMultiChoicePicturedTriggered::Initialise(void) +{ + int i; + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_triggers[i] = nil; + m_defaultCancel = nil; // missing on PS2 +} + +CPlaceableShOption* +CMenuMultiChoicePicturedTriggered::AddOption(CSprite2d *sprite, float positionX, float positionY, const CVector2D &size, Trigger trigger, bool bSelected) +{ + CPlaceableShOption *option; + option = CMenuMultiChoicePictured::AddOption(sprite, positionX, positionY, size, bSelected); + if(option) + m_triggers[m_numOptions-1] = trigger; + return option; +} + +void +CMenuMultiChoicePicturedTriggered::SelectCurrentOptionUnderCursor(void) +{ + CMenuMultiChoice::SelectCurrentOptionUnderCursor(); + if(m_cursor != -1) + m_triggers[m_cursor](this); +} + +void +CMenuMultiChoicePicturedTriggered::SelectDefaultCancelAction(void) +{ + if(m_defaultCancel) + m_defaultCancel(this); +} + +/* + * CMenuMultiChoicePicturedTriggeredAnyMove + */ + +void +CMenuMultiChoicePicturedTriggeredAnyMove::Initialise(void) +{ + int i; + CMenuMultiChoicePicturedTriggered::Initialise(); + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++){ + m_moveTab[i].right = -1; + m_moveTab[i].left = -1; + m_moveTab[i].down = -1; + m_moveTab[i].up = -1; + } +} + +CPlaceableShOption* +CMenuMultiChoicePicturedTriggeredAnyMove::AddOption(CSprite2d *sprite, FEC_MOVETAB *moveTab, float positionX, float positionY, const CVector2D &size, Trigger trigger, bool bSelected) +{ + CPlaceableShOption *option; + option = CMenuMultiChoicePicturedTriggered::AddOption(sprite, positionX, positionY, size, trigger, bSelected); + if(option && moveTab) + m_moveTab[m_numOptions-1] = *moveTab; + return option; +} + +bool +CMenuMultiChoicePicturedTriggeredAnyMove::GoDown(void) +{ + int move = m_moveTab[m_cursor].down; + if(move == -1) + return GoNext(); + m_cursor = move; + return true; +} + +bool +CMenuMultiChoicePicturedTriggeredAnyMove::GoUp(void) +{ + int move = m_moveTab[m_cursor].up; + if(move == -1) + return GoPrev(); + m_cursor = move; + return true; +} + +bool +CMenuMultiChoicePicturedTriggeredAnyMove::GoLeft(void) +{ + int move = m_moveTab[m_cursor].left; + if(move == -1) + return GoPrev(); + m_cursor = move; + return true; +} + +bool +CMenuMultiChoicePicturedTriggeredAnyMove::GoRight(void) +{ + int move = m_moveTab[m_cursor].right; + if(move == -1) + return GoNext(); + m_cursor = move; + return true; +} + + +/* + * CMenuMultiChoiceTwoLines + */ + +void +CMenuMultiChoiceTwoLines::AddTitle(wchar *text, float positionX, float positionY, bool bRightJustify) +{ + m_title.m_text = text; + m_title.SetPosition(positionX, positionY, bRightJustify); +} + +CPlaceableShOptionTwoLines* +CMenuMultiChoiceTwoLines::AddOption(wchar *text, float positionX, float positionY, bool bSelected, bool bRightJustify) +{ + return AddOption(text, positionX, positionY, nil, 0.0f, 0.0f, bSelected, bRightJustify); +} + +CPlaceableShOptionTwoLines* +CMenuMultiChoiceTwoLines::AddOption(wchar *text1, float positionX1, float positionY1, wchar *text2, float positionX2, float positionY2, bool bSelected, bool bRightJustify) +{ + if(m_numOptions == NUM_MULTICHOICE_OPTIONS) + return nil; + m_options[m_numOptions].m_line1.m_text = text1; + m_options[m_numOptions].m_line2.m_text = text2; + m_options[m_numOptions].m_line1.SetPosition(positionX1, positionY1); + m_options[m_numOptions].m_line2.SetPosition(positionX2, positionY2); + m_options[m_numOptions].m_bSelected = bSelected; + m_options[m_numOptions].m_bRightJustify = bRightJustify; + return &m_options[m_numOptions++]; +} + + +void +CMenuMultiChoiceTwoLines::SetColors(const CRGBA &title, const CRGBA &normal, const CRGBA &selected) +{ + int i; + m_title.SetColor(title); + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_options[i].SetColors(normal, selected); +} + +void +CMenuMultiChoiceTwoLines::SetNewOldTextScale(bool bTextScale, const CVector2D &newScale, const CVector2D &oldScale, bool bTitleTextScale) +{ + m_bSetTextScale = bTextScale; + m_textScale = newScale; + m_oldTextScale = oldScale; + m_bSetTitleTextScale = bTitleTextScale; +} + +void +CMenuMultiChoiceTwoLines::Draw(CRGBA const &optionHighlight ,CRGBA const &titleHighlight, float x, float y) +{ + int i; + + if(m_bSetTextScale && m_bSetTitleTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + if(m_cursor == -1) + m_title.Draw(m_position.x+x, m_position.y+y); + else + m_title.Draw(titleHighlight, m_position.x+x, m_position.y+y); + + if(m_bSetTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + + if(m_cursor == -1) + for(i = 0; i < m_numOptions; i++) + m_options[i].Draw(CRGBA(0,0,0,0), m_position.x+x, m_position.y+y, false); + else + for(i = 0; i < m_numOptions; i++){ + if(i == m_cursor) + m_options[i].Draw(optionHighlight, m_position.x+x, m_position.y+y); + else + m_options[i].Draw(CRGBA(0,0,0,0), m_position.x+x, m_position.y+y, false); + } + + if(m_bSetTextScale){ + CFont::DrawFonts(); + CFont::SetScale(m_oldTextScale.x, m_oldTextScale.y); + } +} + +void +CMenuMultiChoiceTwoLines::DrawNormal(float x, float y) +{ + int i; + + if(m_bSetTextScale && m_bSetTitleTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + m_title.Draw(m_position.x+x, m_position.y+y); + + if(m_bSetTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + + for(i = 0; i < m_numOptions; i++) + m_options[i].Draw(CRGBA(0,0,0,0), m_position.x+x, m_position.y+y, false); + + if(m_bSetTextScale){ + CFont::DrawFonts(); + CFont::SetScale(m_oldTextScale.x, m_oldTextScale.y); + } +} + +void +CMenuMultiChoiceTwoLines::DrawHighlighted(CRGBA const &titleHighlight, float x, float y) +{ + int i; + + if(m_bSetTextScale && m_bSetTitleTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + if(m_cursor == -1) + m_title.Draw(m_position.x+x, m_position.y+y); + else + m_title.Draw(titleHighlight, m_position.x+x, m_position.y+y); + + if(m_bSetTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + + for(i = 0; i < m_numOptions; i++) + m_options[i].Draw(CRGBA(0,0,0,0), m_position.x+x, m_position.y+y, false); + + if(m_bSetTextScale){ + CFont::DrawFonts(); + CFont::SetScale(m_oldTextScale.x, m_oldTextScale.y); + } +} + +void +CMenuMultiChoiceTwoLines::SetAlpha(uint8 alpha) +{ + int i; + m_title.SetAlpha(alpha); + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_options[i].SetAlpha(alpha); +} + +void +CMenuMultiChoiceTwoLines::SetShadows(bool bDropShadows, CRGBA const &shadowColor, CVector2D const &shadowOffset) +{ + int i; + m_title.SetShadows(bDropShadows, shadowColor, shadowOffset); + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_options[i].SetShadows(bDropShadows, shadowColor, shadowOffset); +} + + +bool +CMenuMultiChoiceTwoLines::GoNext(void) +{ + if(m_cursor == m_numOptions-1){ + m_cursor = -1; + return false; + }else{ + m_cursor++; + return true; + } +} + +bool +CMenuMultiChoiceTwoLines::GoPrev(void) +{ + if(m_cursor == 0){ + m_cursor = -1; + return false; + }else{ + m_cursor--; + return true; + } +} + +void +CMenuMultiChoiceTwoLines::SelectCurrentOptionUnderCursor(void) +{ + int i; + if(m_cursor == -1) + return; + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_options[i].m_bSelected = false; + m_options[m_cursor].m_bSelected = true; +} + +int +CMenuMultiChoiceTwoLines::GetMenuSelection(void) +{ + int i; + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + if(m_options[i].m_bSelected) + return i; + return -1; +} + +void +CMenuMultiChoiceTwoLines::SetMenuSelection(int selection) +{ + int i; + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_options[i].m_bSelected = false; + m_options[selection%NUM_MULTICHOICE_OPTIONS].m_bSelected = true; +} + +/* + * CMenuMultiChoiceTwoLinesTriggered + */ + +void +CMenuMultiChoiceTwoLinesTriggered::Initialise(void) +{ + int i; + for(i = 0; i < NUM_MULTICHOICE_OPTIONS; i++) + m_triggers[i] = nil; + m_defaultCancel = nil; +} + +CPlaceableShOptionTwoLines* +CMenuMultiChoiceTwoLinesTriggered::AddOption(wchar *text, float positionX, float positionY, Trigger trigger, bool bSelected, bool bRightJustify) +{ + CPlaceableShOptionTwoLines *option; + option = CMenuMultiChoiceTwoLines::AddOption(text, positionX, positionY, bSelected, bRightJustify); + if(option) + m_triggers[m_numOptions-1] = trigger; + return option; +} + +CPlaceableShOptionTwoLines* +CMenuMultiChoiceTwoLinesTriggered::AddOption(wchar *text1, float positionX1, float positionY1, wchar *text2, float positionX2, float positionY2, Trigger trigger, bool bSelected, bool bRightJustify) +{ + CPlaceableShOptionTwoLines *option; + option = CMenuMultiChoiceTwoLines::AddOption(text1, positionX1, positionY1, text2, positionX2, positionY2, bSelected, bRightJustify); + if(option) + m_triggers[m_numOptions-1] = trigger; + return option; +} + +void +CMenuMultiChoiceTwoLinesTriggered::SelectCurrentOptionUnderCursor(void) +{ + CMenuMultiChoiceTwoLines::SelectCurrentOptionUnderCursor(); + if(m_cursor != -1) + m_triggers[m_cursor](this); +} + +void +CMenuMultiChoiceTwoLinesTriggered::SelectDefaultCancelAction(void) +{ + if(m_defaultCancel) + m_defaultCancel(this); +} + + +/* + * CMenuOnOff + */ + +void +CMenuOnOff::SetColors(const CRGBA &title, const CRGBA &options) +{ + m_title.SetColors(title, title); + m_options[0].SetColor(options); + m_options[1].SetColor(options); +} + +void +CMenuOnOff::SetNewOldTextScale(bool bTextScale, const CVector2D &newScale, const CVector2D &oldScale, bool bTitleTextScale) +{ + m_bSetTextScale = bTextScale; + m_textScale = newScale; + m_oldTextScale = oldScale; + m_bSetTitleTextScale = bTitleTextScale; +} + +void +CMenuOnOff::SetOptionPosition(float x, float y, bool bRightJustify) +{ + m_options[0].SetPosition(x, y, bRightJustify); + m_options[1].SetPosition(x, y, bRightJustify); +} + +void +CMenuOnOff::AddTitle(wchar *text, bool bSelected, float positionX, float positionY, bool bRightJustify) +{ + m_title.m_text = text; + m_title.m_bSelected = bSelected; + m_title.SetPosition(positionX, positionY, bRightJustify); +} + +void +CMenuOnOff::Draw(CRGBA const &optionHighlight, CRGBA const &titleHighlight, float x, float y) +{ + if(m_type == 1){ + m_options[0].m_text = TheText.Get("FEM_NO"); + m_options[1].m_text = TheText.Get("FEM_YES"); + }else if(m_type == 0){ + m_options[0].m_text = TheText.Get("FEM_OFF"); + m_options[1].m_text = TheText.Get("FEM_ON"); + } + + if(m_bSetTextScale && m_bSetTitleTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + if(m_bActive) + m_title.Draw(titleHighlight, m_position.x+x, m_position.y+y); + else + m_title.Draw(CRGBA(0,0,0,0), m_position.x+x, m_position.y+y, false); + + if(m_bSetTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + + if(m_bActive){ + if(m_title.m_bSelected) + m_options[1].Draw(optionHighlight, m_position.x+x, m_position.y+y); + else + m_options[0].Draw(optionHighlight, m_position.x+x, m_position.y+y); + }else{ + if(m_title.m_bSelected) + m_options[1].Draw(m_position.x+x, m_position.y+y); + else + m_options[0].Draw(m_position.x+x, m_position.y+y); + } + + if(m_bSetTextScale) + CFont::SetScale(m_oldTextScale.x, m_oldTextScale.y); +} + +void +CMenuOnOff::DrawNormal(float x, float y) +{ + if(m_type == 1){ + m_options[0].m_text = TheText.Get("FEM_NO"); + m_options[1].m_text = TheText.Get("FEM_YES"); + }else if(m_type == 0){ + m_options[0].m_text = TheText.Get("FEM_OFF"); + m_options[1].m_text = TheText.Get("FEM_ON"); + } + + if(m_bSetTextScale && m_bSetTitleTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + m_title.Draw(CRGBA(0,0,0,0), m_position.x+x, m_position.y+y, false); + + if(m_bSetTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + + if(m_title.m_bSelected) + m_options[1].Draw(m_position.x+x, m_position.y+y); + else + m_options[0].Draw(m_position.x+x, m_position.y+y); + + if(m_bSetTextScale) + CFont::SetScale(m_oldTextScale.x, m_oldTextScale.y); +} + +void +CMenuOnOff::DrawHighlighted(CRGBA const &titleHighlight, float x, float y) +{ + if(m_type == 1){ + m_options[0].m_text = TheText.Get("FEM_NO"); + m_options[1].m_text = TheText.Get("FEM_YES"); + }else if(m_type == 0){ + m_options[0].m_text = TheText.Get("FEM_OFF"); + m_options[1].m_text = TheText.Get("FEM_ON"); + } + + if(m_bSetTextScale && m_bSetTitleTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + if(m_bActive) + m_title.Draw(titleHighlight, m_position.x+x, m_position.y+y); + else + m_title.Draw(CRGBA(0,0,0,0), m_position.x+x, m_position.y+y, false); + + if(m_bSetTextScale) + CFont::SetScale(m_textScale.x, m_textScale.y); + + if(m_title.m_bSelected) + m_options[1].Draw(m_position.x+x, m_position.y+y); + else + m_options[0].Draw(m_position.x+x, m_position.y+y); + + if(m_bSetTextScale) + CFont::SetScale(m_oldTextScale.x, m_oldTextScale.y); +} + +void +CMenuOnOff::SetAlpha(uint8 alpha) +{ + m_title.SetAlpha(alpha); + m_options[0].SetAlpha(alpha); + m_options[1].SetAlpha(alpha); +} + +void +CMenuOnOff::SetShadows(bool bDropShadows, CRGBA const &shadowColor, CVector2D const &shadowOffset) +{ + m_title.SetShadows(bDropShadows, shadowColor, shadowOffset); + m_options[0].SetShadows(bDropShadows, shadowColor, shadowOffset); + m_options[1].SetShadows(bDropShadows, shadowColor, shadowOffset); +} + +/* + * CMenuOnOffTriggered + */ + +void +CMenuOnOffTriggered::SetOptionPosition(float x, float y, Trigger trigger, bool bRightJustify) +{ + CMenuOnOff::SetOptionPosition(x, y, bRightJustify); + if(trigger) + m_trigger = trigger; +} + +void +CMenuOnOffTriggered::SelectCurrentOptionUnderCursor(void) +{ + CMenuOnOff::SelectCurrentOptionUnderCursor(); + if(m_trigger) + m_trigger(this); +} + + + +/* + * CMenuSlider + */ + +char CMenuSlider::Buf8[8]; +wchar CMenuSlider::Buf16[8]; + +void +CMenuSlider::SetColors(const CRGBA &title, const CRGBA &percentage, const CRGBA &left, const CRGBA &right) +{ + m_title.SetColor(title); + m_percentageText.SetColor(percentage); + m_colors[0] = left; + m_colors[1] = right; +} + + +void +CMenuSlider::AddTickBox(float positionX, float positionY, float width, float heightLeft, float heightRight) +{ + m_box.SetPosition(positionX, positionY); + m_size[0].x = width; + m_size[0].y = heightLeft; + m_size[1].x = width; + m_size[1].y = heightRight; +} + +void +CMenuSlider::AddTitle(wchar *text, float positionX, float positionY) +{ + m_title.m_text = text; + m_title.SetPosition(positionX, positionY); +} + +static CRGBA SELECTED_TEXT_COLOR_0(255, 182, 48, 255); + +void +CMenuSlider::Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y) +{ + if(m_bActive){ + CRGBA selectionCol = m_colors[0]; + if(selectionCol.red == SELECTED_TEXT_COLOR_0.red && + selectionCol.green == SELECTED_TEXT_COLOR_0.green && + selectionCol.blue == SELECTED_TEXT_COLOR_0.blue && + selectionCol.alpha == SELECTED_TEXT_COLOR_0.alpha) + selectionCol = m_colors[1]; + + if(m_style == 1){ + // solid bar + CRGBA shadowCol = m_box.GetShadowColor(); + float f = m_value/1000.0f; + CVector2D boxPos = m_box.m_position + m_position + CVector2D(x,y); + if(m_box.m_bDropShadow) + CSprite2d::DrawRect( + CRect(boxPos.x + m_box.m_shadowOffset.x, + boxPos.y + m_box.m_shadowOffset.y, + boxPos.x + m_box.m_shadowOffset.x + m_size[0].x, + boxPos.y + m_box.m_shadowOffset.y + m_size[0].y), + shadowCol); + CSprite2d::DrawRect( + CRect(boxPos.x, boxPos.y, + boxPos.x + m_size[0].x, boxPos.y + m_size[0].y), + m_colors[1]); + CSprite2d::DrawRect( + CRect(boxPos.x, boxPos.y, + boxPos.x + m_size[0].x*f, boxPos.y + m_size[0].y), + selectionCol); + }else if(m_style == 0){ + // ticks... + CVector2D boxPos = m_box.m_position + m_position + CVector2D(x,y); + DrawTicks(boxPos, m_size[0], m_size[1].y, + m_value/1000.0f, m_colors[0], selectionCol, m_colors[1], + m_box.m_bDropShadow, m_box.m_shadowOffset, m_box.GetShadowColor()); + } + + m_title.Draw(titleHighlight, m_position.x+x, m_position.y+y); + + if(m_bDrawPercentage){ + sprintf(Buf8, "%d%%", m_value/10); + AsciiToUnicode(Buf8, Buf16); + m_percentageText.m_text = Buf16; + m_percentageText.Draw(optionHighlight, m_position.x+x, m_position.y+y); + } + }else + CMenuSlider::DrawNormal(x, y); +} + +void +CMenuSlider::DrawNormal(float x, float y) +{ + if(m_style == 1){ + // solid bar + CRGBA shadowCol = m_box.GetShadowColor(); + float f = m_value/1000.0f; + CVector2D boxPos = m_box.m_position + m_position + CVector2D(x,y); + if(m_box.m_bDropShadow) + CSprite2d::DrawRect( + CRect(boxPos.x + m_box.m_shadowOffset.x, + boxPos.y + m_box.m_shadowOffset.y, + boxPos.x + m_box.m_shadowOffset.x + m_size[0].x, + boxPos.y + m_box.m_shadowOffset.y + m_size[0].y), + shadowCol); + CSprite2d::DrawRect( + CRect(boxPos.x, boxPos.y, + boxPos.x + m_size[0].x, boxPos.y + m_size[0].y), + m_colors[1]); + CSprite2d::DrawRect( + CRect(boxPos.x, boxPos.y, + boxPos.x + m_size[0].x*f, boxPos.y + m_size[0].y), + m_colors[0]); + }else if(m_style == 0){ + // ticks... + CVector2D boxPos = m_box.m_position + m_position + CVector2D(x,y); + DrawTicks(boxPos, m_size[0], m_size[1].y, + m_value/1000.0f, m_colors[0], m_colors[1], + m_box.m_bDropShadow, m_box.m_shadowOffset, m_box.GetShadowColor()); + } + + m_title.Draw(m_position.x+x, m_position.y+y); + + if(m_bDrawPercentage){ + sprintf(Buf8, "%d%%", m_value/10); + AsciiToUnicode(Buf8, Buf16); + m_percentageText.m_text = Buf16; + m_percentageText.Draw(m_percentageText.GetColor(), m_position.x+x, m_position.y+y); + } +} + +void +CMenuSlider::DrawHighlighted(const CRGBA &titleHighlight, float x, float y) +{ + if(m_bActive) + m_title.Draw(titleHighlight, m_position.x+x, m_position.y+y); + else + m_title.Draw(m_position.x+x, m_position.y+y); + + if(m_style == 1){ + // solid bar + CRGBA shadowCol = m_box.GetShadowColor(); + float f = m_value/1000.0f; + CVector2D boxPos = m_box.m_position + m_position + CVector2D(x,y); + if(m_box.m_bDropShadow) + CSprite2d::DrawRect( + CRect(boxPos.x + m_box.m_shadowOffset.x, + boxPos.y + m_box.m_shadowOffset.y, + boxPos.x + m_box.m_shadowOffset.x + m_size[0].x, + boxPos.y + m_box.m_shadowOffset.y + m_size[0].y), + shadowCol); + CSprite2d::DrawRect( + CRect(boxPos.x, boxPos.y, + boxPos.x + m_size[0].x, boxPos.y + m_size[0].y), + m_colors[1]); + CSprite2d::DrawRect( + CRect(boxPos.x, boxPos.y, + boxPos.x + m_size[0].x*f, boxPos.y + m_size[0].y), + m_colors[0]); + }else if(m_style == 0){ + // ticks... + CVector2D boxPos = m_box.m_position + m_position + CVector2D(x,y); + DrawTicks(boxPos, m_size[0], m_size[1].y, + m_value/1000.0f, m_colors[0], m_colors[1], + m_box.m_bDropShadow, m_box.m_shadowOffset, m_box.GetShadowColor()); + } + + if(m_bDrawPercentage){ + sprintf(Buf8, "%d%%", m_value/10); + AsciiToUnicode(Buf8, Buf16); + m_percentageText.m_text = Buf16; + m_percentageText.Draw(m_percentageText.GetColor(), m_position.x+x, m_position.y+y); + } +} + +void +CMenuSlider::DrawTicks(const CVector2D &position, const CVector2D &size, float heightRight, float level, const CRGBA &leftCol, const CRGBA &selCol, const CRGBA &rightCol, bool bShadow, const CVector2D &shadowOffset, const CRGBA &shadowColor) +{ + int i; + int numTicks = size.x / 8.0f; + float dy = heightRight - size.y; + float stepy = dy / numTicks; + int left = level*numTicks; + int drewSelection = 0; + for(i = 0; i < numTicks; i++){ + CRect rect(position.x + 8.0f*i, position.y + dy - stepy*i, + position.x + 8.0f*i + 4.0f, position.y + dy + size.y); + if(bShadow){ + CRect shadowRect = rect; + shadowRect.left += shadowOffset.x; + shadowRect.right += shadowOffset.x; + shadowRect.top += shadowOffset.y; + shadowRect.bottom += shadowOffset.y; + CSprite2d::DrawRect(shadowRect, shadowColor); + } + if(i < left) + CSprite2d::DrawRect(rect, leftCol); + else if(!drewSelection){ + CSprite2d::DrawRect(rect, selCol); + drewSelection = 1; + }else + CSprite2d::DrawRect(rect, rightCol); + } +} + +void +CMenuSlider::DrawTicks(const CVector2D &position, const CVector2D &size, float heightRight, float level, const CRGBA &leftCol, const CRGBA &rightCol, bool bShadow, const CVector2D &shadowOffset, const CRGBA &shadowColor) +{ + int i; + int numTicks = size.x / 8.0f; + float dy = heightRight - size.y; + float stepy = dy / numTicks; + int left = level*numTicks; + for(i = 0; i < numTicks; i++){ + CRect rect(position.x + 8.0f*i, position.y + dy - stepy*i, + position.x + 8.0f*i + 4.0f, position.y + dy + size.y); + if(bShadow){ + CRect shadowRect = rect; + shadowRect.left += shadowOffset.x; + shadowRect.right += shadowOffset.x; + shadowRect.top += shadowOffset.y; + shadowRect.bottom += shadowOffset.y; + CSprite2d::DrawRect(shadowRect, shadowColor); + } + if(i < left) + CSprite2d::DrawRect(rect, leftCol); + else + CSprite2d::DrawRect(rect, rightCol); + } +} + +void +CMenuSlider::SetAlpha(uint8 alpha) +{ + m_title.SetAlpha(alpha); + m_box.SetAlpha(alpha); + m_someAlpha = alpha; + m_percentageText.SetAlpha(alpha); + m_colors[0].alpha = alpha; + m_colors[1].alpha = alpha; +} + +void +CMenuSlider::SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset) +{ + m_title.SetShadows(bDropShadows, shadowColor, shadowOffset); + m_box.SetShadows(bDropShadows, shadowColor, shadowOffset); + m_percentageText.SetShadows(bDropShadows, shadowColor, shadowOffset); +} + +/* + * CMenuSliderTriggered + */ + +void +CMenuSliderTriggered::AddTickBox(float positionX, float positionY, float width, float heightLeft, float heightRight, Trigger trigger, Trigger alwaysTrigger) +{ + CMenuSlider::AddTickBox(positionX, positionY, width, heightLeft, heightRight); + m_trigger = trigger; + m_alwaysTrigger = alwaysTrigger; +} + +void +CMenuSliderTriggered::Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y) +{ + CMenuSlider::Draw(optionHighlight, titleHighlight, x, y); + if(m_alwaysTrigger) + m_alwaysTrigger(this); +} + +bool +CMenuSliderTriggered::GoLeft(void) +{ + CMenuSlider::GoLeft(); + if(m_trigger) + m_trigger(this); + return true; +} + +bool +CMenuSliderTriggered::GoRight(void) +{ + CMenuSlider::GoRight(); + if(m_trigger) + m_trigger(this); + return true; +} + +bool +CMenuSliderTriggered::GoLeftStill(void) +{ + CMenuSlider::GoLeftStill(); + if(m_trigger) + m_trigger(this); + return true; +} + +bool +CMenuSliderTriggered::GoRightStill(void) +{ + CMenuSlider::GoRightStill(); + if(m_trigger) + m_trigger(this); + return true; +} + +/* + * CMenuLineLister + */ + +CMenuLineLister::CMenuLineLister(void) + : m_numLines(0), m_width(0.0f), m_height(0.0f), + m_scrollPosition(0.0f), m_scrollSpeed(1.0f), m_lineSpacing(15.0f), field_10E8(0) +{ + int i; + for(i = 0; i < NUM_LINELISTER_LINES_TOTAL; i++){ + m_lineAlphas[i] = 0; + m_lineFade[i] = 0; + } +} + + +void +CMenuLineLister::SetLinesColor(const CRGBA &color) +{ + int i; + for(i = 0; i < NUM_LINELISTER_LINES_TOTAL; i++){ + m_linesLeft[i].SetColor(color); + m_linesRight[i].SetColor(color); + } +} + +void +CMenuLineLister::ResetNumberOfTextLines(void) +{ + int i; + m_numLines = 0; + for(i = 0; i < NUM_LINELISTER_LINES_TOTAL; i++){ + m_lineAlphas[i] = 0; + m_lineFade[i] = 0; + } + for(i = 0; i < NUM_LINELISTER_LINES_TOTAL; i++){ + // note this doesn't clear lines 0-14, probably an oversight + GetLeftLine(i)->m_text = nil; + GetRightLine(i)->m_text = nil; + } +} + +bool +CMenuLineLister::AddTextLine(wchar *left, wchar *right) +{ + CPlaceableShText *leftLine, *rightLine; + if(m_numLines == NUM_LINELISTER_LINES) + return false; + leftLine = GetLeftLine(m_numLines); + leftLine->m_text = left; + leftLine->SetPosition(0.0f, m_lineSpacing*(m_numLines+15)); + rightLine = GetRightLine(m_numLines); + rightLine->m_text = right; + rightLine->SetPosition(leftLine->m_position.x, leftLine->m_position.y); + m_numLines++; + return true; +} + +void +CMenuLineLister::Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y) +{ + int i, n; + + m_scrollPosition += m_scrollSpeed; + n = m_numLines + 15; + if(m_scrollSpeed > 0.0f){ + if(m_scrollPosition > n*m_lineSpacing) + m_scrollPosition = 0.0f; + }else{ + if(m_scrollPosition < 0.0f) + m_scrollPosition = n*m_lineSpacing; + } + // this is a weird condition.... + for(i = 0; + m_scrollPosition < i*m_lineSpacing || m_scrollPosition >= (i+1)*m_lineSpacing; + i++); + + float screenPos = 0.0f; + for(; i < n; i++){ + CVector2D linePos = m_linesLeft[i].m_position; + + if(linePos.y+m_position.y - (m_scrollPosition+m_position.y) < 64.0f) + m_lineFade[i] = -4.0f*Abs(m_scrollSpeed); + else + m_lineFade[i] = 4.0f*Abs(m_scrollSpeed); + int newAlpha = m_lineAlphas[i] + m_lineFade[i]; + if(newAlpha < 0) newAlpha = 0; + if(newAlpha > 255) newAlpha = 255; + m_lineAlphas[i] = newAlpha; + + uint8 alpha = m_linesLeft[i].m_shadowColor.alpha; + + // apply alpha + m_linesLeft[i].SetAlpha((alpha*m_lineAlphas[i])>>8); + m_linesRight[i].SetAlpha((alpha*m_lineAlphas[i])>>8); + + m_linesLeft[i].Draw(m_position.x+x, m_position.y+y - m_scrollPosition); + CFont::SetRightJustifyOn(); + m_linesRight[i].Draw(m_position.x+x + m_width, m_position.y+y - m_scrollPosition); + CFont::SetRightJustifyOff(); + + // restore alpha + m_linesLeft[i].SetAlpha(alpha); + m_linesRight[i].SetAlpha(alpha); + + screenPos += m_lineSpacing; + if(screenPos >= m_height) + break; + } + + m_scrollSpeed = 1.0f; +} + +void +CMenuLineLister::SetAlpha(uint8 alpha) +{ + int i; + for(i = 0; i < NUM_LINELISTER_LINES_TOTAL; i++){ + m_linesLeft[i].SetAlpha(alpha); + m_linesRight[i].SetAlpha(alpha); + } +} + +void +CMenuLineLister::SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset) +{ + int i; + for(i = 0; i < NUM_LINELISTER_LINES_TOTAL; i++){ + m_linesLeft[i].SetShadows(bDropShadows, shadowColor, shadowOffset); + m_linesRight[i].SetShadows(bDropShadows, shadowColor, shadowOffset); + } +} + + +/* + * CMenuPage + */ + +void +CMenuPage::Initialise(void) +{ + int i; + m_numControls = 0; + m_pCurrentControl = nil; + m_cursor = 0; + for(i = 0; i < NUM_PAGE_WIDGETS; i++) + m_controls[i] = nil; +} + +bool +CMenuPage::AddMenu(CMenuBase *widget) +{ + if(m_numControls >= NUM_PAGE_WIDGETS) + return false; + m_controls[m_numControls] = widget; + if(m_numControls == 0){ + m_pCurrentControl = widget; + m_cursor = 0; + } + m_numControls++; + return true; +} + +bool +CMenuPage::IsActiveMenuTwoState(void) +{ + return m_pCurrentControl && m_pCurrentControl->m_bTwoState; +} + +void +CMenuPage::ActiveMenuTwoState_SelectNextPosition(void) +{ + int sel; + if(m_pCurrentControl == nil || !m_pCurrentControl->m_bTwoState) + return; + m_pCurrentControl->GoFirst(); + sel = m_pCurrentControl->GetMenuSelection(); + if(sel == 1) + m_pCurrentControl->SelectCurrentOptionUnderCursor(); + else if(sel == 0){ + m_pCurrentControl->GoNext(); + m_pCurrentControl->SelectCurrentOptionUnderCursor(); + } +} + +void +CMenuPage::Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y) +{ + int i; + for(i = 0; i < m_numControls; i++) + if(m_controls[i]){ + if(i == m_cursor) + m_controls[i]->Draw(optionHighlight, titleHighlight, x, y); + else + m_controls[i]->DrawNormal(x, y); + } +} + +void +CMenuPage::DrawHighlighted(const CRGBA &titleHighlight, float x, float y) +{ + int i; + for(i = 0; i< m_numControls; i++) + if(m_controls[i]){ + if(i == m_cursor) + m_controls[i]->DrawHighlighted(titleHighlight, x, y); + else + m_controls[i]->DrawNormal(x, y); + } +} + +void +CMenuPage::DrawNormal(float x, float y) +{ + int i; + for(i = 0; i< m_numControls; i++) + if(m_controls[i]) + m_controls[i]->DrawNormal(x, y); +} + +void +CMenuPage::ActivatePage(void) +{ + m_cursor = 0; + if(m_numControls == 0) + return; + for(;;){ + m_pCurrentControl = m_controls[m_cursor]; + if(m_pCurrentControl->GoFirst()) + return; + if(m_cursor == m_numControls-1) + m_cursor = 0; + else + m_cursor++; + } +} + +void +CMenuPage::SetAlpha(uint8 alpha) +{ + int i; + for(i = 0; i< m_numControls; i++) + if(m_controls[i]) + m_controls[i]->SetAlpha(alpha); +} + +void +CMenuPage::SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset) +{ + int i; + for(i = 0; i< m_numControls; i++) + if(m_controls[i]) + m_controls[i]->SetShadows(bDropShadows, shadowColor, shadowOffset); +} + +void +CMenuPage::GoUpMenuOnPage(void) +{ + if(m_pCurrentControl == nil) + return; + m_pCurrentControl->DeactivateMenu(); + do{ + if(m_cursor == 0) + m_cursor = m_numControls-1; + else + m_cursor--; + m_pCurrentControl = m_controls[m_cursor]; + }while(!m_pCurrentControl->GoLast()); +} + +void +CMenuPage::GoDownMenuOnPage(void) +{ + if(m_pCurrentControl == nil) + return; + m_pCurrentControl->DeactivateMenu(); + do{ + if(m_cursor == m_numControls-1) + m_cursor = 0; + else + m_cursor++; + m_pCurrentControl = m_controls[m_cursor]; + }while(!m_pCurrentControl->GoFirst()); +} + +void +CMenuPage::GoLeftMenuOnPage(void) +{ + // same as up + if(m_pCurrentControl == nil) + return; + m_pCurrentControl->DeactivateMenu(); + do{ + if(m_cursor == 0) + m_cursor = m_numControls-1; + else + m_cursor--; + m_pCurrentControl = m_controls[m_cursor]; + }while(!m_pCurrentControl->GoLast()); +} + +void +CMenuPage::GoRightMenuOnPage(void) +{ + // same as right + if(m_pCurrentControl == nil) + return; + m_pCurrentControl->DeactivateMenu(); + do{ + if(m_cursor == m_numControls-1) + m_cursor = 0; + else + m_cursor++; + m_pCurrentControl = m_controls[m_cursor]; + }while(!m_pCurrentControl->GoFirst()); +} + +/* + * CMenuPageAnyMove + */ + +void +CMenuPageAnyMove::Initialise(void) +{ + int i; + CMenuPage::Initialise(); + for(i = 0; i < NUM_PAGE_WIDGETS; i++){ + m_moveTab[i].left = -1; + m_moveTab[i].right = -1; + m_moveTab[i].up = -1; + m_moveTab[i].down = -1; + } +} + +bool +CMenuPageAnyMove::AddMenu(CMenuBase *widget, FEC_MOVETAB *moveTab) +{ + if(AddMenu(widget)){ + m_moveTab[m_numControls-1] = *moveTab; + return true; + } + return false; +} + +void +CMenuPageAnyMove::GoUpMenuOnPage(void) +{ + if(m_pCurrentControl == nil) + return; + m_pCurrentControl->DeactivateMenu(); + int move = m_moveTab[m_cursor].up; + if(move == -1) + CMenuPage::GoUpMenuOnPage(); + else{ // BUG: no else in original code + m_cursor = move; + m_pCurrentControl = m_controls[m_cursor]; + m_pCurrentControl->GoLast(); + } +} + +void +CMenuPageAnyMove::GoDownMenuOnPage(void) +{ + if(m_pCurrentControl == nil) + return; + m_pCurrentControl->DeactivateMenu(); + int move = m_moveTab[m_cursor].down; + if(move == -1) + CMenuPage::GoDownMenuOnPage(); + else{ // BUG: no else in original code + m_cursor = move; + m_pCurrentControl = m_controls[m_cursor]; + m_pCurrentControl->GoLast(); + } +} + +void +CMenuPageAnyMove::GoLeftMenuOnPage(void) +{ + if(m_pCurrentControl == nil) + return; + m_pCurrentControl->DeactivateMenu(); + int move = m_moveTab[m_cursor].left; + if(move == -1) + CMenuPage::GoLeftMenuOnPage(); + else{ // BUG: no else in original code + m_cursor = move; + m_pCurrentControl = m_controls[m_cursor]; + m_pCurrentControl->GoLast(); + } +} + +void +CMenuPageAnyMove::GoRightMenuOnPage(void) +{ + if(m_pCurrentControl == nil) + return; + m_pCurrentControl->DeactivateMenu(); + int move = m_moveTab[m_cursor].right; + if(move == -1) + CMenuPage::GoRightMenuOnPage(); + else{ // BUG: no else in original code + m_cursor = move; + m_pCurrentControl = m_controls[m_cursor]; + m_pCurrentControl->GoLast(); + } +} diff --git a/src/core/FrontEndControls.h b/src/core/FrontEndControls.h new file mode 100644 index 00000000..5b6f95bb --- /dev/null +++ b/src/core/FrontEndControls.h @@ -0,0 +1,712 @@ +#pragma once + +enum { + NUM_MULTICHOICE_OPTIONS = 16, + // 50 actual lines and 15 for spacing + NUM_LINELISTER_LINES = 50, + NUM_LINELISTER_LINES_TOTAL = NUM_LINELISTER_LINES + 15, + NUM_PAGE_WIDGETS = 10, +}; + + +class CPlaceableText +{ +public: + CVector2D m_position; + CRGBA m_color; + wchar *m_text; + + CPlaceableText(void) + : m_position(0.0f, 0.0f), m_color(255, 255, 255, 255) {} + void SetPosition(float x, float y) { m_position.x = x; m_position.y = y; } + void SetColor(const CRGBA &color) { m_color = color; } + CRGBA GetColor(void) { return m_color; } + void SetAlpha(uint8 alpha) { m_color.alpha = alpha; } +}; + +// No trace of this in the game but it makes the other classes simpler +class CPlaceableTextTwoLines +{ +public: + CPlaceableText m_line1; + CPlaceableText m_line2; + + void SetColor(const CRGBA &color) { m_line1.SetColor(color); m_line2.SetColor(color); } + void SetAlpha(uint8 alpha) { m_line1.SetAlpha(alpha); m_line2.SetAlpha(alpha); } +}; + +// No trace of this in the game but it makes the other classes simpler +class CShadowInfo +{ +public: + bool m_bRightJustify; + bool m_bDropShadow; + CRGBA m_shadowColor; + CVector2D m_shadowOffset; + + CShadowInfo(void) + : m_bRightJustify(false), m_bDropShadow(false), + m_shadowColor(255, 255, 255, 255), + m_shadowOffset(-1.0f, -1.0f) {} + CRGBA GetShadowColor(void) { return m_shadowColor; } + void SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset){ + m_bDropShadow = bDropShadows; + m_shadowColor = shadowColor; + m_shadowOffset = shadowOffset; + } +}; + +// No trace of this in the game but it makes the other classes simpler +class CSelectable +{ +public: + bool m_bSelected; + CRGBA m_selectedColor; + + CSelectable(void) : m_bSelected(false) {} + CRGBA GetSelectedColor(void) { return m_selectedColor; } +}; + +class CPlaceableShText : public CPlaceableText, public CShadowInfo +{ +public: + using CPlaceableText::SetPosition; + void SetPosition(float x, float y, bool bRightJustify) { SetPosition(x, y); m_bRightJustify = bRightJustify; } + void SetAlpha(uint8 alpha) { m_shadowColor.alpha = alpha; CPlaceableText::SetAlpha(alpha); } + + void Draw(float x, float y); + void Draw(const CRGBA &color, float x, float y); + // unused arguments it seems + void DrawShWrap(float x, float y, float wrapX, float wrapY) { Draw(x, y); } +}; + +class CPlaceableShTextTwoLines : public CPlaceableTextTwoLines, public CShadowInfo +{ +public: + void SetAlpha(uint8 alpha) { m_shadowColor.alpha = alpha; CPlaceableTextTwoLines::SetAlpha(alpha); } + + void Draw(float x, float y); + void Draw(const CRGBA &color, float x, float y); +}; + +class CPlaceableShOption : public CPlaceableShText, public CSelectable +{ +public: + void SetColors(const CRGBA &normal, const CRGBA &selection) { CPlaceableShText::SetColor(normal); m_selectedColor = selection; } + void SetAlpha(uint8 alpha) { m_selectedColor.alpha = alpha; CPlaceableShText::SetAlpha(alpha); } + + using CPlaceableShText::Draw; + void Draw(const CRGBA &highlightColor, float x, float y, bool bHighlight); +}; + +class CPlaceableShOptionTwoLines : public CPlaceableShTextTwoLines, public CSelectable +{ +public: + void SetColors(const CRGBA &normal, const CRGBA &selection) { CPlaceableShTextTwoLines::SetColor(normal); m_selectedColor = selection; } + void SetAlpha(uint8 alpha) { m_selectedColor.alpha = alpha; CPlaceableShTextTwoLines::SetAlpha(alpha); } + + using CPlaceableShTextTwoLines::Draw; + void Draw(const CRGBA &highlightColor, float x, float y, bool bHighlight); +}; + +class CPlaceableSprite +{ +public: + CSprite2d *m_pSprite; + CVector2D m_position; + CVector2D m_size; + CRGBA m_color; + + CPlaceableSprite(void) + : m_pSprite(nil), m_position(0.0f, 0.0f), + m_size(0.0f, 0.0f), m_color(255, 255, 255, 255) {} + + void SetPosition(float x, float y) { m_position.x = x; m_position.y = y; } + void SetAlpha(uint8 alpha) { m_color.alpha = alpha; } + + void Draw(float x, float y); + void Draw(const CRGBA &color, float x, float y); +}; + +class CPlaceableShSprite +{ +public: + CPlaceableSprite m_sprite; + CPlaceableSprite m_shadow; + bool m_bDropShadow; + + CPlaceableShSprite(void) : m_bDropShadow(false) {} + + void SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset){ + m_bDropShadow = bDropShadows; + m_shadow.m_color = shadowColor; + m_shadow.m_position = shadowOffset; + } + void SetAlpha(uint8 alpha) { m_sprite.SetAlpha(alpha); m_shadow.SetAlpha(alpha); } + + void Draw(float x, float y); +}; + + +class CMenuBase +{ +public: + CVector2D m_position; + bool m_bTwoState; + + CMenuBase(void) + : m_position(0.0f, 0.0f), m_bTwoState(false) {} + void SetPosition(float x, float y) { m_position.x = x; m_position.y = y; } + + virtual void Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y) = 0; + virtual void DrawNormal(float x, float y) = 0; + virtual void DrawHighlighted(const CRGBA &titleHighlight, float x, float y) = 0; + virtual void SetAlpha(uint8 alpha) = 0; + virtual void SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset) = 0; + virtual bool GoNext(void) = 0; + virtual bool GoPrev(void) = 0; + virtual bool GoDown(void) = 0; + virtual bool GoUp(void) = 0; + virtual bool GoDownStill(void) = 0; + virtual bool GoUpStill(void) = 0; + virtual bool GoLeft(void) = 0; + virtual bool GoRight(void) = 0; + virtual bool GoLeftStill(void) = 0; + virtual bool GoRightStill(void) = 0; + virtual bool GoFirst(void) = 0; + virtual bool GoLast(void) = 0; + virtual void SelectCurrentOptionUnderCursor(void) = 0; + virtual void SelectDefaultCancelAction(void) = 0; + virtual void ActivateMenu(bool first) = 0; + virtual void DeactivateMenu(void) = 0; + virtual int GetMenuSelection(void) = 0; + virtual void SetMenuSelection(int selection) = 0; +}; + +class CMenuDummy : public CMenuBase +{ +public: + bool m_bActive; + + virtual void Draw(const CRGBA &, const CRGBA &, float x, float y) {} + virtual void DrawNormal(float x, float y) {} + virtual void DrawHighlighted(const CRGBA &, float x, float y) {} + virtual void SetAlpha(uint8 alpha) {} + virtual void SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset) {} + virtual bool GoNext(void) { DeactivateMenu(); return false; } + virtual bool GoPrev(void) { DeactivateMenu(); return false; } + virtual bool GoDown(void) { return GoNext(); } + virtual bool GoUp(void) { return GoPrev(); } + virtual bool GoDownStill(void) { return false; } + virtual bool GoUpStill(void) { return false; } + virtual bool GoLeft(void) { return true; } + virtual bool GoRight(void) { return true; } + virtual bool GoLeftStill(void) { return true; } + virtual bool GoRightStill(void) { return true; } + virtual bool GoFirst(void) { ActivateMenu(true); return true; } + virtual bool GoLast(void) { ActivateMenu(true); return true; } + virtual void SelectCurrentOptionUnderCursor(void) {} + virtual void SelectDefaultCancelAction(void) {} + virtual void ActivateMenu(bool first) { m_bActive = true; } + virtual void DeactivateMenu(void) { m_bActive = false; } + virtual int GetMenuSelection(void) { return -1; } + virtual void SetMenuSelection(int) {} +}; + +class CMenuPictureAndText : public CMenuBase +{ +public: + int m_numSprites; + CPlaceableShSprite m_sprites[5]; + int m_numTexts; + CPlaceableShText m_texts[20]; + + CVector2D m_oldTextScale; + CVector2D m_textScale; + bool m_bSetTextScale; + + float m_wrapX; + float m_oldWrapx; + bool m_bWrap; + // missing some? + + + CMenuPictureAndText(void) + : m_numSprites(0), m_numTexts(0), + m_bSetTextScale(false), m_bWrap(false) {} + + void SetNewOldShadowWrapX(bool bWrapX, float newWrapX, float oldWrapX); + void SetNewOldTextScale(bool bTextScale, const CVector2D &newScale, const CVector2D &oldScale); + void SetTextsColor(const CRGBA &color); + void AddText(wchar *text, float positionX, float positionY, const CRGBA &color, bool bRightJustify); + void AddPicture(CSprite2d *sprite, CSprite2d *shadow, float positionX, float positionY, float width, float height, const CRGBA &color); + void AddPicture(CSprite2d *sprite, float positionX, float positionY, float width, float height, const CRGBA &color); + + virtual void Draw(const CRGBA &, const CRGBA &, float x, float y); + virtual void DrawNormal(float x, float y) { Draw(CRGBA(0,0,0,0), CRGBA(0,0,0,0), x, y); } + virtual void DrawHighlighted(const CRGBA &, float x, float y) { Draw(CRGBA(0,0,0,0), CRGBA(0,0,0,0), x, y); } + virtual void SetAlpha(uint8 alpha); + virtual void SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset); + virtual bool GoNext(void) { return false; } + virtual bool GoPrev(void) { return false; } + virtual bool GoDown(void) { return GoNext(); } + virtual bool GoUp(void) { return GoPrev(); } + virtual bool GoDownStill(void) { return false; } + virtual bool GoUpStill(void) { return false; } + virtual bool GoLeft(void) { return true; } + virtual bool GoRight(void) { return true; } + virtual bool GoLeftStill(void) { return true; } + virtual bool GoRightStill(void) { return true; } + virtual bool GoFirst(void) { return false; } + virtual bool GoLast(void) { return false; } + virtual void SelectCurrentOptionUnderCursor(void) {} + virtual void SelectDefaultCancelAction(void) {} + virtual void ActivateMenu(bool first) {} + virtual void DeactivateMenu(void) {} + virtual int GetMenuSelection(void) { return -1; } + virtual void SetMenuSelection(int) {} +}; + +class CMenuMultiChoice : public CMenuBase +{ +public: + int m_numOptions; + CPlaceableShText m_title; + CPlaceableShOption m_options[NUM_MULTICHOICE_OPTIONS]; + int m_cursor; + CVector2D m_oldTextScale; + CVector2D m_textScale; + bool m_bSetTextScale; + bool m_bSetTitleTextScale; + + CMenuMultiChoice(void) + : m_numOptions(0), m_cursor(-1), + m_bSetTextScale(false), m_bSetTitleTextScale(false) {} + + void AddTitle(wchar *text, float positionX, float positionY, bool bRightJustify); + CPlaceableShOption *AddOption(wchar *text, float positionX, float positionY, bool bSelected, bool bRightJustify); + void SetColors(const CRGBA &title, const CRGBA &normal, const CRGBA &selected); + void SetNewOldTextScale(bool bTextScale, const CVector2D &newScale, const CVector2D &oldScale, bool bTitleTextScale); + + virtual void Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y); + virtual void DrawNormal(float x, float y); + virtual void DrawHighlighted(const CRGBA &titleHighlight, float x, float y); + virtual void SetAlpha(uint8 alpha); + virtual void SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset); + virtual bool GoNext(void); + virtual bool GoPrev(void); + virtual bool GoDown(void) { return GoNext(); } + virtual bool GoUp(void) { return GoPrev(); } + virtual bool GoDownStill(void) { return false; } + virtual bool GoUpStill(void) { return false; } + virtual bool GoLeft(void) { return GoPrev(); } + virtual bool GoRight(void) { return GoNext(); } + virtual bool GoLeftStill(void) { return true; } + virtual bool GoRightStill(void) { return true; } + virtual bool GoFirst(void) { m_cursor = 0; return true; } + virtual bool GoLast(void) { m_cursor = m_numOptions-1; return true; } + virtual void SelectCurrentOptionUnderCursor(void); + virtual void SelectDefaultCancelAction(void) {} + virtual void ActivateMenu(bool first) { m_cursor = first ? 0 : m_numOptions-1; } + virtual void DeactivateMenu(void) { m_cursor = -1; } + virtual int GetMenuSelection(void); + virtual void SetMenuSelection(int selection); +}; + +class CMenuMultiChoiceTriggered : public CMenuMultiChoice +{ +public: + typedef void (*Trigger)(CMenuMultiChoiceTriggered *); + + Trigger m_triggers[NUM_MULTICHOICE_OPTIONS]; + Trigger m_defaultCancel; + + CMenuMultiChoiceTriggered(void) { Initialise(); } + + void Initialise(void); + CPlaceableShOption *AddOption(wchar *text, float positionX, float positionY, Trigger trigger, bool bSelected, bool bRightJustify); + + virtual void SelectCurrentOptionUnderCursor(void); + virtual void SelectDefaultCancelAction(void); +}; + +class CMenuMultiChoiceTriggeredAlways : public CMenuMultiChoiceTriggered +{ +public: + Trigger m_alwaysNormalTrigger; + Trigger m_alwaysHighlightTrigger; + Trigger m_alwaysTrigger; + + CMenuMultiChoiceTriggeredAlways(void) + : m_alwaysNormalTrigger(nil), m_alwaysHighlightTrigger(nil), m_alwaysTrigger(nil) {} + + virtual void Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y); + virtual void DrawNormal(float x, float y); + virtual void DrawHighlighted(const CRGBA &titleHighlight, float x, float y); +}; + +class CMenuMultiChoicePictured : public CMenuMultiChoice +{ +public: + CPlaceableSprite m_sprites[NUM_MULTICHOICE_OPTIONS]; + bool m_bHasSprite[NUM_MULTICHOICE_OPTIONS]; + + CMenuMultiChoicePictured(void) { Initialise(); } + void Initialise(void); + using CMenuMultiChoice::AddOption; + CPlaceableShOption *AddOption(CSprite2d *sprite, float positionX, float positionY, const CVector2D &size, bool bSelected); + + virtual void Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y); + virtual void DrawNormal(float x, float y); + virtual void DrawHighlighted(const CRGBA &titleHighlight, float x, float y); + virtual void SetAlpha(uint8 alpha); + // unnecessary - same as base class +// virtual void SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset); +}; + +class CMenuMultiChoicePicturedTriggered : public CMenuMultiChoicePictured +{ +public: + typedef void (*Trigger)(CMenuMultiChoicePicturedTriggered *); + + Trigger m_triggers[NUM_MULTICHOICE_OPTIONS]; + Trigger m_defaultCancel; + + CMenuMultiChoicePicturedTriggered(void) { Initialise(); } + + void Initialise(void); + using CMenuMultiChoicePictured::AddOption; + CPlaceableShOption *AddOption(CSprite2d *sprite, float positionX, float positionY, const CVector2D &size, Trigger trigger, bool bSelected); + + virtual void SelectCurrentOptionUnderCursor(void); + virtual void SelectDefaultCancelAction(void); +}; + +struct FEC_MOVETAB +{ + int8 right; + int8 left; + int8 down; + int8 up; +}; + +class CMenuMultiChoicePicturedTriggeredAnyMove : public CMenuMultiChoicePicturedTriggered +{ +public: + FEC_MOVETAB m_moveTab[NUM_MULTICHOICE_OPTIONS]; + + CMenuMultiChoicePicturedTriggeredAnyMove(void) { Initialise(); } + + void Initialise(void); + using CMenuMultiChoicePicturedTriggered::AddOption; + CPlaceableShOption *AddOption(CSprite2d *sprite, FEC_MOVETAB *moveTab, float positionX, float positionY, const CVector2D &size, Trigger trigger, bool bSelected); + + virtual bool GoDown(void); + virtual bool GoUp(void); + virtual bool GoLeft(void); + virtual bool GoRight(void); +}; + +// copy of CMenuMultiChoice pretty much except for m_options type +class CMenuMultiChoiceTwoLines : public CMenuBase +{ +public: + int m_numOptions; + CPlaceableShText m_title; + CPlaceableShOptionTwoLines m_options[NUM_MULTICHOICE_OPTIONS]; + int m_cursor; + CVector2D m_oldTextScale; + CVector2D m_textScale; + bool m_bSetTextScale; + bool m_bSetTitleTextScale; + + CMenuMultiChoiceTwoLines(void) + : m_numOptions(0), m_cursor(-1), + m_bSetTextScale(false), m_bSetTitleTextScale(false) {} + + void AddTitle(wchar *text, float positionX, float positionY, bool bRightJustify); + CPlaceableShOptionTwoLines *AddOption(wchar *text, float positionX, float positionY, bool bSelected, bool bRightJustify); + CPlaceableShOptionTwoLines *AddOption(wchar *text1, float positionX1, float positionY1, wchar *text2, float positionX2, float positionY2, bool bSelected, bool bRightJustify); + void SetColors(const CRGBA &title, const CRGBA &normal, const CRGBA &selected); + void SetNewOldTextScale(bool bTextScale, const CVector2D &newScale, const CVector2D &oldScale, bool bTitleTextScale); + + virtual void Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y); + virtual void DrawNormal(float x, float y); + virtual void DrawHighlighted(const CRGBA &titleHighlight, float x, float y); + virtual void SetAlpha(uint8 alpha); + virtual void SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset); + virtual bool GoNext(void); + virtual bool GoPrev(void); + virtual bool GoDown(void) { return GoNext(); } + virtual bool GoUp(void) { return GoPrev(); } + virtual bool GoDownStill(void) { return true; } + virtual bool GoUpStill(void) { return true; } + virtual bool GoLeft(void) { return GoPrev(); } + virtual bool GoRight(void) { return GoNext(); } + virtual bool GoLeftStill(void) { return true; } + virtual bool GoRightStill(void) { return true; } + virtual bool GoFirst(void) { m_cursor = 0; return true; } + virtual bool GoLast(void) { m_cursor = m_numOptions-1; return true; } + virtual void SelectCurrentOptionUnderCursor(void); + virtual void SelectDefaultCancelAction(void) {} + virtual void ActivateMenu(bool first) { m_cursor = first ? 0 : m_numOptions-1; } + virtual void DeactivateMenu(void) { m_cursor = -1; } + virtual int GetMenuSelection(void); + virtual void SetMenuSelection(int selection); +}; + +// copy of CMenuMultiChoiceTriggered except for m_options +class CMenuMultiChoiceTwoLinesTriggered : public CMenuMultiChoiceTwoLines +{ +public: + typedef void (*Trigger)(CMenuMultiChoiceTwoLinesTriggered *); + + Trigger m_triggers[NUM_MULTICHOICE_OPTIONS]; + Trigger m_defaultCancel; + + CMenuMultiChoiceTwoLinesTriggered(void) { Initialise(); } + + void Initialise(void); + CPlaceableShOptionTwoLines *AddOption(wchar *text, float positionX, float positionY, Trigger trigger, bool bSelected, bool bRightJustify); + CPlaceableShOptionTwoLines *AddOption(wchar *text1, float positionX1, float positionY1, wchar *text2, float positionX2, float positionY2, Trigger trigger, bool bSelected, bool bRightJustify); + + virtual void SelectCurrentOptionUnderCursor(void); + virtual void SelectDefaultCancelAction(void); +}; + + +class CMenuOnOff : public CMenuBase +{ +public: + CPlaceableShOption m_title; + CPlaceableShText m_options[2]; + bool m_bActive; + bool m_bSetTextScale; + bool m_bSetTitleTextScale; + CVector2D m_textScale; + CVector2D m_oldTextScale; + int m_type; // 0: on/off 1: yes/no + + void SetColors(const CRGBA &title, const CRGBA &options); + void SetNewOldTextScale(bool bTextScale, const CVector2D &newScale, const CVector2D &oldScale, bool bTitleTextScale); + void SetOptionPosition(float x, float y, bool bRightJustify); + void AddTitle(wchar *text, bool bSelected, float positionX, float positionY, bool bRightJustify); + + virtual void Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y); + virtual void DrawNormal(float x, float y); + virtual void DrawHighlighted(const CRGBA &titleHighlight, float x, float y); + virtual void SetAlpha(uint8 alpha); + virtual void SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset); + virtual bool GoNext(void) { DeactivateMenu(); return false; } + virtual bool GoPrev(void) { DeactivateMenu(); return false; } + virtual bool GoDown(void) { return GoNext(); } + virtual bool GoUp(void) { return GoPrev(); } + virtual bool GoDownStill(void) { return false; } + virtual bool GoUpStill(void) { return false; } + virtual bool GoLeft(void) { SelectCurrentOptionUnderCursor(); return true; } + virtual bool GoRight(void) { SelectCurrentOptionUnderCursor(); return true; } + virtual bool GoLeftStill(void) { return true; } + virtual bool GoRightStill(void) { return true; } + virtual bool GoFirst(void) { ActivateMenu(true); return true; } + virtual bool GoLast(void) { ActivateMenu(true); return true; } + virtual void SelectCurrentOptionUnderCursor(void) { m_title.m_bSelected ^= 1; } + virtual void SelectDefaultCancelAction(void) {} + virtual void ActivateMenu(bool first) { m_bActive = true; } + virtual void DeactivateMenu(void) { m_bActive = false; } + virtual int GetMenuSelection(void) { return m_title.m_bSelected; } + virtual void SetMenuSelection(int selection) { m_title.m_bSelected = selection; } +}; + +class CMenuOnOffTriggered : public CMenuOnOff +{ +public: + typedef void (*Trigger)(CMenuOnOffTriggered *); + + Trigger m_trigger; + + void SetOptionPosition(float x, float y, Trigger trigger, bool bRightJustify); + + virtual void SelectCurrentOptionUnderCursor(void); +}; + +class CMenuSlider : public CMenuBase +{ +public: + CPlaceableShText m_title; + CPlaceableShText m_box; // not really a text + CRGBA m_colors[2]; // left and right + CVector2D m_size[2]; // left and right + int m_value; + CPlaceableShText m_percentageText; + bool m_bDrawPercentage; +// char field_8D; +// char field_8E; +// char field_8F; + uint8 m_someAlpha; +// char field_91; +// char field_92; +// char field_93; + bool m_bActive; + int m_style; + + static char Buf8[8]; + static wchar Buf16[8]; + + CMenuSlider(void) + : m_value(0), m_bDrawPercentage(false), m_bActive(false), m_style(0) {} + + void SetColors(const CRGBA &title, const CRGBA &percentage, const CRGBA &left, const CRGBA &right); + void DrawTicks(const CVector2D &position, const CVector2D &size, float heightRight, float level, const CRGBA &leftCol, const CRGBA &selCol, const CRGBA &rightCol, bool bShadow, const CVector2D &shadowOffset, const CRGBA &shadowColor); + void DrawTicks(const CVector2D &position, const CVector2D &size, float heightRight, float level, const CRGBA &leftCol, const CRGBA &rightCol, bool bShadow, const CVector2D &shadowOffset, const CRGBA &shadowColor); + void AddTickBox(float positionX, float positionY, float width, float heigthLeft, float heightRight); + void AddTitle(wchar *text, float positionX, float positionY); + + virtual void Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y); + virtual void DrawNormal(float x, float y); + virtual void DrawHighlighted(const CRGBA &titleHighlight, float x, float y); + virtual void SetAlpha(uint8 alpha); + virtual void SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset); + virtual bool GoNext(void) { DeactivateMenu(); return false; } + virtual bool GoPrev(void) { DeactivateMenu(); return false; } + virtual bool GoDown(void) { return GoNext(); } + virtual bool GoUp(void) { return GoPrev(); } + virtual bool GoDownStill(void) { return false; } + virtual bool GoUpStill(void) { return false; } + virtual bool GoLeft(void) { if(m_value < 0) m_value = 0; return true; } + virtual bool GoRight(void) { if(m_value > 1000) m_value = 1000; return true; } + virtual bool GoLeftStill(void) { m_value -= 8; if(m_value < 0) m_value = 0; return true; } + virtual bool GoRightStill(void) { m_value += 8; if(m_value > 1000) m_value = 1000; return true; } + virtual bool GoFirst(void) { ActivateMenu(true); return true; } + virtual bool GoLast(void) { ActivateMenu(true); return true; } + virtual void SelectCurrentOptionUnderCursor(void) {} + virtual void SelectDefaultCancelAction(void) {} + virtual void ActivateMenu(bool first) { m_bActive = true; } + virtual void DeactivateMenu(void) { m_bActive = false; } + virtual int GetMenuSelection(void) { return m_value/10; } + virtual void SetMenuSelection(int selection) { m_value = selection*10; } +}; + +class CMenuSliderTriggered : public CMenuSlider +{ +public: + typedef void (*Trigger)(CMenuSliderTriggered *); + + Trigger m_trigger; + Trigger m_alwaysTrigger; + + CMenuSliderTriggered(void) + : m_trigger(nil), m_alwaysTrigger(nil) {} + + void AddTickBox(float positionX, float positionY, float width, float heigthLeft, float heightRight, Trigger trigger, Trigger alwaysTrigger); + + virtual void Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y); + virtual bool GoLeft(void); + virtual bool GoRight(void); + virtual bool GoLeftStill(void); + virtual bool GoRightStill(void); +}; + + +class CMenuLineLister : public CMenuBase +{ +public: + float m_width; + float m_height; + int m_numLines; + CPlaceableShText m_linesLeft[NUM_LINELISTER_LINES_TOTAL]; + CPlaceableShText m_linesRight[NUM_LINELISTER_LINES_TOTAL]; + uint8 m_lineAlphas[NUM_LINELISTER_LINES_TOTAL]; + int8 m_lineFade[NUM_LINELISTER_LINES_TOTAL]; + float m_scrollPosition; + float m_scrollSpeed; + int field_10E8; + float m_lineSpacing; + + CMenuLineLister(void); + + void SetLinesColor(const CRGBA &color); + void ResetNumberOfTextLines(void); + bool AddTextLine(wchar *left, wchar *right); + + CPlaceableShText *GetLeftLine(int i) { return &m_linesLeft[(i%NUM_LINELISTER_LINES) + 15]; }; + CPlaceableShText *GetRightLine(int i) { return &m_linesRight[(i%NUM_LINELISTER_LINES) + 15]; }; + + virtual void Draw(const CRGBA &optionHighlight, const CRGBA &titleHighlight, float x, float y); + virtual void DrawNormal(float x, float y) { Draw(CRGBA(0,0,0,0), CRGBA(0,0,0,0), x, y); } + virtual void DrawHighlighted(const CRGBA &titleHighlight, float x, float y) { Draw(CRGBA(0,0,0,0), CRGBA(0,0,0,0), x, y); } + virtual void SetAlpha(uint8 alpha); + virtual void SetShadows(bool bDropShadows, const CRGBA &shadowColor, const CVector2D &shadowOffset); + virtual bool GoNext(void) { return false; } + virtual bool GoPrev(void) { return false; } + virtual bool GoDown(void) { return GoNext(); } + virtual bool GoUp(void) { return GoPrev(); } + virtual bool GoDownStill(void) { m_scrollSpeed = 0.0f; return true; } + virtual bool GoUpStill(void) { m_scrollSpeed *= 6.0f; return true; } + virtual bool GoLeft(void) { return true; } + virtual bool GoRight(void) { return true; } + virtual bool GoLeftStill(void) { return true; } + virtual bool GoRightStill(void) { return true; } + virtual bool GoFirst(void) { return true; } + virtual bool GoLast(void) { return true; } + virtual void SelectCurrentOptionUnderCursor(void) {} + virtual void SelectDefaultCancelAction(void) {} + virtual void ActivateMenu(bool first) {} + virtual void DeactivateMenu(void) {} + virtual int GetMenuSelection(void) { return -1; } + virtual void SetMenuSelection(int selection) {} +}; + +class CMenuPage +{ +public: + CMenuBase *m_controls[NUM_PAGE_WIDGETS]; + int m_numControls; + CMenuBase *m_pCurrentControl; + int m_cursor; + + CMenuPage(void) { Initialise(); } + void Initialise(void); + bool AddMenu(CMenuBase *widget); + + bool IsActiveMenuTwoState(void); + void ActiveMenuTwoState_SelectNextPosition(void); + void Draw(const CRGBA &,const CRGBA &, float, float); + void DrawHighlighted(const CRGBA &titleHighlight, float x, float y); + void DrawNormal(float x, float y); + void ActivatePage(void); + void SetAlpha(uint8 alpha); + void SetShadows(bool, const CRGBA &, const CVector2D &); + void GoPrev(void) { if(m_pCurrentControl) { if(!m_pCurrentControl->GoPrev()) m_pCurrentControl->GoLast(); } } + void GoNext(void) { if(m_pCurrentControl) { if(!m_pCurrentControl->GoNext()) m_pCurrentControl->GoFirst(); } } + void GoLeft(void) { if(m_pCurrentControl) { if(!m_pCurrentControl->GoLeft()) m_pCurrentControl->GoLast(); } } + void GoRight(void) { if(m_pCurrentControl) { if(!m_pCurrentControl->GoRight()) m_pCurrentControl->GoFirst(); } } + void GoUp(void) { if(m_pCurrentControl) { if(!m_pCurrentControl->GoUp()) m_pCurrentControl->GoLast(); } } + void GoDown(void) { if(m_pCurrentControl) { if(!m_pCurrentControl->GoDown()) m_pCurrentControl->GoFirst(); } } + void GoLeftStill(void) { if(m_pCurrentControl) m_pCurrentControl->GoLeftStill(); } + void GoRightStill(void) { if(m_pCurrentControl) m_pCurrentControl->GoRightStill(); } + void GoUpStill(void) { if(m_pCurrentControl) m_pCurrentControl->GoUpStill(); } + void GoDownStill(void) { if(m_pCurrentControl) m_pCurrentControl->GoDownStill(); } + void SelectDefaultCancelAction(void) { if(m_pCurrentControl) m_pCurrentControl->SelectDefaultCancelAction(); } + void SelectCurrentOptionUnderCursor(void) { if(m_pCurrentControl) m_pCurrentControl->SelectCurrentOptionUnderCursor(); } + + virtual void GoUpMenuOnPage(void); + virtual void GoDownMenuOnPage(void); + virtual void GoLeftMenuOnPage(void); + virtual void GoRightMenuOnPage(void); +}; + +class CMenuPageAnyMove : public CMenuPage +{ +public: + FEC_MOVETAB m_moveTab[NUM_PAGE_WIDGETS]; + + CMenuPageAnyMove(void) { Initialise(); } + void Initialise(void); + using CMenuPage::AddMenu; + bool AddMenu(CMenuBase *widget, FEC_MOVETAB *moveTab); + + virtual void GoUpMenuOnPage(void); + virtual void GoDownMenuOnPage(void); + virtual void GoLeftMenuOnPage(void); + virtual void GoRightMenuOnPage(void); +}; \ No newline at end of file From 7f8a78e5decdf23bf0d06674c336f4e3169eaa6a Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Mon, 6 Apr 2020 02:01:03 +0300 Subject: [PATCH 005/112] Cranes done --- src/audio/AudioManager.cpp | 6 +- src/audio/AudioScriptObject.cpp | 2 +- src/control/Cranes.cpp | 556 ++++++++++++++++++++++++++++---- src/control/Cranes.h | 67 ++-- src/control/Garages.cpp | 41 ++- src/control/Garages.h | 1 - src/control/Script.cpp | 7 +- src/control/Script.h | 2 +- 8 files changed, 565 insertions(+), 117 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 8e8d024a..6df5fd19 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -3515,9 +3515,9 @@ cAudioManager::ProcessCrane() static const int intensity = 80; if(crane) { - if(crane->m_bCraneActive == 1) { - if(crane->m_bCraneStatus) { - m_sQueueSample.m_vecPos = crane->m_pObject->GetPosition(); + if(crane->m_nCraneStatus == CCrane::ACTIVATED) { + if(crane->m_nCraneState != CCrane::IDLE) { + m_sQueueSample.m_vecPos = crane->m_pCraneEntity->GetPosition(); distSquared = GetDistanceSquared(&this->m_sQueueSample.m_vecPos); if(distSquared < SQR(intensity)) { CalculateDistance(distCalculated, distSquared); diff --git a/src/audio/AudioScriptObject.cpp b/src/audio/AudioScriptObject.cpp index 0ae3834a..da9e1d2e 100644 --- a/src/audio/AudioScriptObject.cpp +++ b/src/audio/AudioScriptObject.cpp @@ -61,7 +61,7 @@ cAudioScriptObject::SaveAllAudioScriptObjects(uint8 *buf, uint32 *size) INITSAVEBUF int32 pool_size = CPools::GetAudioScriptObjectPool()->GetNoOfUsedSpaces(); - *size = SAVE_HEADER_SIZE + pool_size * (sizeof(cAudioScriptObject) + sizeof(int32)); + *size = SAVE_HEADER_SIZE + sizeof(int32) + pool_size * (sizeof(cAudioScriptObject) + sizeof(int32)); WriteSaveHeader(buf, 'A', 'U', 'D', '\0', *size - SAVE_HEADER_SIZE); WriteSaveBuf(buf, pool_size); diff --git a/src/control/Cranes.cpp b/src/control/Cranes.cpp index 96c41f45..cbfd2a35 100644 --- a/src/control/Cranes.cpp +++ b/src/control/Cranes.cpp @@ -4,6 +4,8 @@ #include "Camera.h" #include "DMAudio.h" +#include "Garages.h" +#include "General.h" #include "Entity.h" #include "ModelIndices.h" #include "Replay.h" @@ -15,6 +17,24 @@ #define CRANE_MOVEMENT_PROCESSING_RADIUS (150.0f) #define CRUSHER_Z (-0.951f) #define MILITARY_Z (10.7862f) +#define DISTANCE_FROM_PLAYER_TO_REMOVE_VEHICLE (5.0f) +#define DISTANCE_FROM_HOOK_TO_VEHICLE_TO_COLLECT (0.5f) +#define CAR_REWARD_MILITARY_CRANE (1500) +#define CAR_MOVING_SPEED_THRESHOLD (0.01f) +#define CRANE_SLOWDOWN_MULTIPLIER (0.3f) + +#define OSCILLATION_SPEED (0.002f) +#define CAR_ROTATION_SPEED (0.0035f) +#define CRANE_MOVEMENT_SPEED (0.001f) +#define HOOK_ANGLE_MOVEMENT_SPEED (0.004f) +#define HOOK_OFFSET_MOVEMENT_SPEED (0.1f) +#define HOOK_HEIGHT_MOVEMENT_SPEED (0.06f) + +uint32 TimerForCamInterpolation; + +uint32& CCranes::CarsCollectedMilitaryCrane = *(uint32*)0x8F6248; +int32& CCranes::NumCranes = *(int32*)0x8E28AC; +CCrane(&CCranes::aCranes)[NUM_CRANES] = *(CCrane(*)[NUM_CRANES])*(uintptr*)0x6FA4E0; void CCranes::InitCranes(void) { @@ -31,7 +51,7 @@ void CCranes::InitCranes(void) } } } - for (CPtrNode* pNode = CWorld::GetBigBuildingList(LEVEL_INDUSTRIAL).first; pNode; pNode->next) { + for (CPtrNode* pNode = CWorld::GetBigBuildingList(LEVEL_INDUSTRIAL).first; pNode; pNode = pNode->next) { CEntity* pEntity = (CEntity*)pNode->item; if (MODELID_CRANE_1 == pEntity->GetModelIndex() || MODELID_CRANE_2 == pEntity->GetModelIndex() || @@ -47,34 +67,33 @@ void CCranes::AddThisOneCrane(CEntity* pEntity) return; CCrane* pCrane = &aCranes[NumCranes]; pCrane->Init(); - pCrane->m_pObject = pEntity; - pCrane->m_bCraneStatus = CCrane::NONE; - pCrane->m_fHeight = NumCranes; // lol wtf - while (pCrane->m_fHeight > TWOPI) - pCrane->m_fHeight -= TWOPI; + pCrane->m_pCraneEntity = (CBuilding*)pEntity; + pCrane->m_nCraneStatus = CCrane::NONE; + pCrane->m_fHookAngle = NumCranes; // lol wtf + while (pCrane->m_fHookAngle > TWOPI) + pCrane->m_fHookAngle -= TWOPI; pCrane->m_fHookOffset = 20.0f; pCrane->m_fHookHeight = 20.0f; - pCrane->m_nUpdateTimer = 0; - pCrane->m_bCraneState = CCrane::IDLE; - pCrane->m_bWasMilitaryCrane = 0; + pCrane->m_nTimeForNextCheck = 0; + pCrane->m_nCraneState = CCrane::IDLE; + pCrane->m_bWasMilitaryCrane = false; pCrane->m_nAudioEntity = DMAudio.CreateEntity(AUDIOTYPE_CRANE, &aCranes[NumCranes]); if (pCrane->m_nAudioEntity >= 0) DMAudio.SetEntityStatus(pCrane->m_nAudioEntity, 1); pCrane->m_bIsTop = (MODELID_CRANE_1 != pEntity->GetModelIndex()); - // W T F ? ? ? // Is this used to avoid military crane? if (pCrane->m_bIsTop || pEntity->GetPosition().y > 0.0f) { - CObject* pMagnet = new CObject(MI_MAGNET, false); - pMagnet->ObjectCreatedBy = MISSION_OBJECT; - pMagnet->bUsesCollision = false; - pMagnet->bExplosionProof = true; - pMagnet->bAffectedByGravity = false; - pCrane->m_pMagnet = pMagnet; + CObject* pHook = new CObject(MI_MAGNET, false); + pHook->ObjectCreatedBy = MISSION_OBJECT; + pHook->bUsesCollision = false; + pHook->bExplosionProof = true; + pHook->bAffectedByGravity = false; + pCrane->m_pHook = pHook; pCrane->CalcHookCoordinates(&pCrane->m_vecHookCurPos.x, &pCrane->m_vecHookCurPos.y, &pCrane->m_vecHookCurPos.z); pCrane->SetHookMatrix(); } else - pCrane->m_pMagnet = nil; + pCrane->m_pHook = nil; NumCranes++; } @@ -88,7 +107,7 @@ void CCranes::ActivateCrane(float fInfX, float fSupX, float fInfY, float fSupY, } int index = 0; for (int i = 0; i < NumCranes; i++) { - float distance = (CVector2D(X, Y) - aCranes[i].m_pObject->GetPosition()).Magnitude(); + float distance = (CVector2D(X, Y) - aCranes[i].m_pCraneEntity->GetPosition()).Magnitude(); if (distance < fMinDistance && distance < MAX_DISTANCE_TO_FIND_CRANE) { fMinDistance = distance; index = i; @@ -98,7 +117,7 @@ void CCranes::ActivateCrane(float fInfX, float fSupX, float fInfY, float fSupY, if (fMinDistance == 99999.9f) return; #endif - CCrane* pCrane = &aCranes[NumCranes]; + CCrane* pCrane = &aCranes[index]; pCrane->m_fPickupX1 = fInfX; pCrane->m_fPickupX2 = fSupX; pCrane->m_fPickupY1 = fInfY; @@ -106,26 +125,27 @@ void CCranes::ActivateCrane(float fInfX, float fSupX, float fInfY, float fSupY, pCrane->m_vecDropoffTarget.x = fDropOffX; pCrane->m_vecDropoffTarget.y = fDropOffY; pCrane->m_vecDropoffTarget.z = fDropOffZ; - pCrane->m_bCraneStatus = CCrane::ACTIVATED; + pCrane->m_nCraneStatus = CCrane::ACTIVATED; pCrane->m_pVehiclePickedUp = nil; - pCrane->m_bVehiclesCollected = 0; + pCrane->m_nVehiclesCollected = 0; + pCrane->m_fDropoffHeading = fHeading; pCrane->m_bIsCrusher = bIsCrusher; pCrane->m_bIsMilitaryCrane = bIsMilitary; bool military = true; if (!bIsMilitary && !pCrane->m_bWasMilitaryCrane) military = false; pCrane->m_bWasMilitaryCrane = military; - pCrane->m_nUpdateTimer = 0; - pCrane->m_bCraneState = CCrane::IDLE; + pCrane->m_nTimeForNextCheck = 0; + pCrane->m_nCraneState = CCrane::IDLE; float Z; if (bIsCrusher) Z = CRUSHER_Z; else if (bIsMilitary) Z = MILITARY_Z; else - Z = CWorld::FindGroundZForCoord((fInfX + fSupY) / 2, (fInfY + fSupY) / 2); - pCrane->FindParametersForTarget((fInfX + fSupY) / 2, (fInfY + fSupY) / 2, Z, &pCrane->m_fPickupAngle, &pCrane->m_fPickupDistance, &pCrane->m_fAngle); - pCrane->FindParametersForTarget(fDropOffX, fDropOffY, fDropOffZ, &pCrane->m_fDropoffAngle, &pCrane->m_fDropoffDistance, &pCrane->m_fDistance); + Z = CWorld::FindGroundZForCoord((fInfX + fSupX) / 2, (fInfY + fSupY) / 2); + pCrane->FindParametersForTarget((fInfX + fSupX) / 2, (fInfY + fSupY) / 2, Z, &pCrane->m_fPickupAngle, &pCrane->m_fPickupDistance, &pCrane->m_fPickupHeight); + pCrane->FindParametersForTarget(fDropOffX, fDropOffY, fDropOffZ, &pCrane->m_fDropoffAngle, &pCrane->m_fDropoffDistance, &pCrane->m_fDropoffHeight); } void CCranes::DeActivateCrane(float X, float Y) @@ -133,7 +153,7 @@ void CCranes::DeActivateCrane(float X, float Y) float fMinDistance = 99999.9f; int index = 0; for (int i = 0; i < NumCranes; i++) { - float distance = (CVector2D(X, Y) - aCranes[i].m_pObject->GetPosition()).Magnitude(); + float distance = (CVector2D(X, Y) - aCranes[i].m_pCraneEntity->GetPosition()).Magnitude(); if (distance < fMinDistance && distance < MAX_DISTANCE_TO_FIND_CRANE) { fMinDistance = distance; index = i; @@ -143,8 +163,8 @@ void CCranes::DeActivateCrane(float X, float Y) if (fMinDistance == 99999.9f) return; #endif - aCranes[index].m_bCraneStatus = CCrane::DEACTIVATED; - aCranes[index].m_bCraneState = CCrane::IDLE; + aCranes[index].m_nCraneStatus = CCrane::DEACTIVATED; + aCranes[index].m_nCraneState = CCrane::IDLE; } bool CCranes::IsThisCarPickedUp(float X, float Y, CVehicle* pVehicle) @@ -152,9 +172,9 @@ bool CCranes::IsThisCarPickedUp(float X, float Y, CVehicle* pVehicle) int index = 0; bool result = false; for (int i = 0; i < NumCranes; i++) { - float distance = (CVector2D(X, Y) - aCranes[i].m_pObject->GetPosition()).Magnitude(); + float distance = (CVector2D(X, Y) - aCranes[i].m_pCraneEntity->GetPosition()).Magnitude(); if (distance < MAX_DISTANCE_TO_FIND_CRANE && aCranes[i].m_pVehiclePickedUp == pVehicle) { - if (aCranes[i].m_bCraneStatus == CCrane::LIFTING_TARGET || aCranes[i].m_bCraneStatus == CCrane::ROTATING_TARGET) + if (aCranes[i].m_nCraneStatus == CCrane::LIFTING_TARGET || aCranes[i].m_nCraneStatus == CCrane::ROTATING_TARGET) result = true; } } @@ -165,10 +185,10 @@ void CCranes::UpdateCranes(void) { for (int i = 0; i < NumCranes; i++) { if (aCranes[i].m_bIsTop || aCranes[i].m_bIsCrusher || - (TheCamera.GetPosition().x + CRANE_UPDATE_RADIUS > aCranes[i].m_pObject->GetPosition().x && - TheCamera.GetPosition().x - CRANE_UPDATE_RADIUS < aCranes[i].m_pObject->GetPosition().x && - TheCamera.GetPosition().y + CRANE_UPDATE_RADIUS > aCranes[i].m_pObject->GetPosition().y && - TheCamera.GetPosition().y + CRANE_UPDATE_RADIUS < aCranes[i].m_pObject->GetPosition().y)) + (TheCamera.GetPosition().x + CRANE_UPDATE_RADIUS > aCranes[i].m_pCraneEntity->GetPosition().x && + TheCamera.GetPosition().x - CRANE_UPDATE_RADIUS < aCranes[i].m_pCraneEntity->GetPosition().x && + TheCamera.GetPosition().y + CRANE_UPDATE_RADIUS > aCranes[i].m_pCraneEntity->GetPosition().y && + TheCamera.GetPosition().y + CRANE_UPDATE_RADIUS < aCranes[i].m_pCraneEntity->GetPosition().y)) aCranes[i].Update(); } } @@ -177,13 +197,14 @@ void CCrane::Update(void) { if (CReplay::IsPlayingBack()) return; - if ((m_bCraneStatus == ACTIVATED || m_bCraneStatus == DEACTIVATED) && - Abs(TheCamera.GetGameCamPosition().x - m_pObject->GetPosition().x) < CRANE_MOVEMENT_PROCESSING_RADIUS && - Abs(TheCamera.GetGameCamPosition().y - m_pObject->GetPosition().y) < CRANE_MOVEMENT_PROCESSING_RADIUS) { - switch (m_bCraneState) { + if (((m_nCraneStatus == ACTIVATED || m_nCraneStatus == DEACTIVATED) && + Abs(TheCamera.GetGameCamPosition().x - m_pCraneEntity->GetPosition().x) < CRANE_MOVEMENT_PROCESSING_RADIUS && + Abs(TheCamera.GetGameCamPosition().y - m_pCraneEntity->GetPosition().y) < CRANE_MOVEMENT_PROCESSING_RADIUS) || + m_nCraneState != IDLE) { + switch (m_nCraneState) { case IDLE: - if (GoTowardsTarget(m_fPickupAngle, m_fPickupDistance, 4.0f + m_fAngle + m_bIsCrusher ? 4.5f : 0.0f, 1.0f) && - CTimer::GetTimeInMilliseconds() > m_nUpdateTimer) { + if (GoTowardsTarget(m_fPickupAngle, m_fPickupDistance, GetHeightToPickup()) && + CTimer::GetTimeInMilliseconds() > m_nTimeForNextCheck) { CWorld::AdvanceCurrentScanCode(); #ifdef FIX_BUGS int xstart = max(0, CWorld::GetSectorIndexX(m_fPickupX1)); @@ -207,33 +228,444 @@ void CCrane::Update(void) } break; case GOING_TOWARDS_TARGET: - if (!m_pVehiclePickedUp) { - m_bCraneState = IDLE; - break; + if (m_pVehiclePickedUp){ + if (m_pVehiclePickedUp->GetPosition().x < m_fPickupX1 || + m_pVehiclePickedUp->GetPosition().x > m_fPickupX2 || + m_pVehiclePickedUp->GetPosition().y < m_fPickupY1 || + m_pVehiclePickedUp->GetPosition().y > m_fPickupY2 || + m_pVehiclePickedUp->pDriver || + Abs(m_pVehiclePickedUp->GetMoveSpeed().x) > CAR_MOVING_SPEED_THRESHOLD || + Abs(m_pVehiclePickedUp->GetMoveSpeed().y) > CAR_MOVING_SPEED_THRESHOLD || + Abs(m_pVehiclePickedUp->GetMoveSpeed().z) > CAR_MOVING_SPEED_THRESHOLD || + FindPlayerPed()->GetPedState() == PED_ENTER_CAR && // TODO: fix carjack bug + FindPlayerPed()->m_pSeekTarget == m_pVehiclePickedUp) { + m_pVehiclePickedUp = nil; + m_nCraneState = IDLE; + } + else { + float fAngle, fOffset, fHeight; + FindParametersForTarget( + m_pVehiclePickedUp->GetPosition().x, + m_pVehiclePickedUp->GetPosition().y, + m_pVehiclePickedUp->GetPosition().z + m_pVehiclePickedUp->GetColModel()->boundingBox.max.z, + &fAngle, &fOffset, &fHeight); + if (GoTowardsTarget(fAngle, fOffset, fHeight)) { + CVector distance = m_pVehiclePickedUp->GetPosition() - m_vecHookCurPos; + distance.z += m_pVehiclePickedUp->GetColModel()->boundingBox.max.z; + if (distance.MagnitudeSqr() < SQR(DISTANCE_FROM_HOOK_TO_VEHICLE_TO_COLLECT)) { + m_nCraneState = GOING_TOWARDS_TARGET_ONLY_HEIGHT; + m_vecHookVelocity *= 0.4f; + m_pVehiclePickedUp->bLightsOn = false; + m_pVehiclePickedUp->bUsesCollision = false; + if (m_bIsCrusher) + m_pVehiclePickedUp->bCollisionProof = true; + DMAudio.PlayOneShot(m_nAudioEntity, SOUND_CRANE_PICKUP, 0.0f); + } + } + } } - if (m_pVehiclePickedUp->GetPosition().x < m_fPickupX1 || - m_pVehiclePickedUp->GetPosition().x > m_fPickupX2 || - m_pVehiclePickedUp->GetPosition().y > m_fPickupY1 || - m_pVehiclePickedUp->GetPosition().y > m_fPickupY2 || - m_pVehiclePickedUp->pDriver || - Abs(m_pVehiclePickedUp->GetMoveSpeed().x) > 0.01f || - Abs(m_pVehiclePickedUp->GetMoveSpeed().y) > 0.01f || - Abs(m_pVehiclePickedUp->GetMoveSpeed().z) > 0.01f || - FindPlayerPed()->GetPedState() == PED_ENTER_CAR && - FindPlayerPed()->m_pSeekTarget == m_pVehiclePickedUp) { + else + m_nCraneState = IDLE; + break; + case LIFTING_TARGET: + RotateCarriedCarProperly(); + if (GoTowardsTarget(m_fDropoffAngle, m_fDropoffDistance, GetHeightToDropoff(), 0.3f)) + m_nCraneState = ROTATING_TARGET; + if (!m_pVehiclePickedUp || m_pVehiclePickedUp->pDriver) { m_pVehiclePickedUp = nil; - m_bCraneState = IDLE; - break; + m_nCraneState = IDLE; } - + break; + case GOING_TOWARDS_TARGET_ONLY_HEIGHT: + RotateCarriedCarProperly(); + if (GoTowardsHeightTarget(GetHeightToPickupHeight(), CRANE_SLOWDOWN_MULTIPLIER)) + m_nCraneState = LIFTING_TARGET; + TimerForCamInterpolation = CTimer::GetTimeInMilliseconds(); + if (!m_pVehiclePickedUp || m_pVehiclePickedUp->pDriver) { + m_pVehiclePickedUp = nil; + m_nCraneState = IDLE; + } + break; + case ROTATING_TARGET: + { + bool bRotateFinished = RotateCarriedCarProperly(); + bool bMovementFinished = GoTowardsTarget(m_fDropoffAngle, m_fDropoffDistance, m_fDropoffHeight, 0.3f); + if (bMovementFinished && bRotateFinished) { + float fDistanceFromPlayer = m_pVehiclePickedUp ? ((CVector2D)FindPlayerCoors() - (CVector2D)m_pVehiclePickedUp->GetPosition()).Magnitude() : 0.0f; + if (fDistanceFromPlayer > DISTANCE_FROM_PLAYER_TO_REMOVE_VEHICLE || !m_bWasMilitaryCrane) { + m_nCraneState = DROPPING_TARGET; + if (m_pVehiclePickedUp) { + m_pVehiclePickedUp->bUsesCollision = true; + m_pVehiclePickedUp->m_nStaticFrames = 0; + ++m_nVehiclesCollected; + if (m_bIsMilitaryCrane) { + CCranes::RegisterCarForMilitaryCrane(m_pVehiclePickedUp->GetModelIndex()); + if (!CCranes::HaveAllCarsBeenCollectedByMilitaryCrane()) { + CWorld::Players[CWorld::PlayerInFocus].m_nMoney += CAR_REWARD_MILITARY_CRANE; + CGarages::TriggerMessage("GA_10", CAR_REWARD_MILITARY_CRANE, 4000, -1); + } + CWorld::Remove(m_pVehiclePickedUp); + delete m_pVehiclePickedUp; + } + } + m_pVehiclePickedUp = nil; + } + } + break; + } + case DROPPING_TARGET: + if (GoTowardsTarget(m_fDropoffAngle, m_fDropoffDistance, GetHeightToDropoffHeight(), CRANE_SLOWDOWN_MULTIPLIER)) { + m_nCraneState = IDLE; + m_nTimeForNextCheck = CTimer::GetTimeInMilliseconds() + 10000; + } + break; + default: + break; + } + CVector vecHook; + CalcHookCoordinates(&vecHook.x, &vecHook.y, &vecHook.z); + m_vecHookVelocity += ((CVector2D)vecHook - (CVector2D)m_vecHookCurPos) * CTimer::GetTimeStep() * CRANE_MOVEMENT_SPEED; + m_vecHookVelocity *= Pow(0.98f, CTimer::GetTimeStep()); + m_vecHookCurPos.x += m_vecHookVelocity.x * CTimer::GetTimeStep(); + m_vecHookCurPos.y += m_vecHookVelocity.y * CTimer::GetTimeStep(); + m_vecHookCurPos.z = vecHook.z; + switch (m_nCraneState) { + case LIFTING_TARGET: + case GOING_TOWARDS_TARGET_ONLY_HEIGHT: + case ROTATING_TARGET: + if (m_pVehiclePickedUp) { + m_pVehiclePickedUp->GetPosition() = CVector(m_vecHookCurPos.x, m_vecHookCurPos.y, m_vecHookCurPos.z - m_pVehiclePickedUp->GetColModel()->boundingBox.max.z); + m_pVehiclePickedUp->SetMoveSpeed(0.0f, 0.0f, 0.0f); + CVector up(vecHook.x - m_vecHookCurPos.x, vecHook.y - m_vecHookCurPos.y, 20.0f); + up.Normalise(); + m_pVehiclePickedUp->GetRight() = CrossProduct(m_pVehiclePickedUp->GetForward(), up); + m_pVehiclePickedUp->GetForward() = CrossProduct(up, m_pVehiclePickedUp->GetRight()); + m_pVehiclePickedUp->GetUp() = up; + } + break; + default: + break; + } + } + else { + int16 rnd = (m_pCraneEntity->m_randomSeed + (CTimer::GetTimeInMilliseconds() >> 11)) & 0xF; + // 16 options, lasting 2048 ms each + // a bit awkward: why there are 4 periods for -= and 6 for +=? is it a bug? + if (rnd < 4) { + m_fHookAngle -= OSCILLATION_SPEED * CTimer::GetTimeStep(); + if (m_fHookAngle < 0.0f) + m_fHookAngle += TWOPI; + } + else if (rnd > 5 && rnd < 12) { + m_fHookAngle += OSCILLATION_SPEED * CTimer::GetTimeStep(); + if (m_fHookAngle > TWOPI) + m_fHookAngle -= TWOPI; + } + CalcHookCoordinates(&m_vecHookCurPos.x, &m_vecHookCurPos.y, &m_vecHookCurPos.z); + m_vecHookVelocity.x = m_vecHookVelocity.y = 0.0f; + } + float fCos = Cos(m_fHookAngle); + float fSin = Sin(m_fHookAngle); + m_pCraneEntity->GetRight().x = fCos; + m_pCraneEntity->GetForward().y = fCos; + m_pCraneEntity->GetRight().y = fSin; + m_pCraneEntity->GetForward().x = -fSin; + m_pCraneEntity->GetMatrix().UpdateRW(); + m_pCraneEntity->UpdateRwFrame(); + SetHookMatrix(); +} + +bool CCrane::RotateCarriedCarProperly() +{ + if (m_fDropoffHeading <= 0.0f) + return true; + if (!m_pVehiclePickedUp) + return true; + float fAngleDelta = m_fDropoffHeading - CGeneral::GetATanOfXY(m_pVehiclePickedUp->GetForward().x, m_pVehiclePickedUp->GetForward().y); + while (fAngleDelta < -HALFPI) + fAngleDelta += PI; + while (fAngleDelta > HALFPI) + fAngleDelta -= PI; + float fDeltaThisFrame = CAR_ROTATION_SPEED * CTimer::GetTimeStep(); + if (Abs(fAngleDelta) <= fDeltaThisFrame) // no rotation is actually applied? + return true; + m_pVehiclePickedUp->GetMatrix().RotateZ(Abs(fDeltaThisFrame)); + return false; +} + +void CCrane::FindCarInSectorList(CPtrList* pList) +{ + CPtrNode* node; + for (node = pList->first; node; node = node->next) { + CVehicle* pVehicle = (CVehicle*)node->item; + if (pVehicle->m_scanCode == CWorld::GetCurrentScanCode()) + continue; + pVehicle->m_scanCode = CWorld::GetCurrentScanCode(); + if (pVehicle->GetPosition().x < m_fPickupX1 || pVehicle->GetPosition().x > m_fPickupX2 || + pVehicle->GetPosition().y < m_fPickupY1 || pVehicle->GetPosition().y > m_fPickupY2) + continue; + if (Abs(pVehicle->GetMoveSpeed().x) >= CAR_MOVING_SPEED_THRESHOLD || + Abs(pVehicle->GetMoveSpeed().y) >= CAR_MOVING_SPEED_THRESHOLD || + Abs(pVehicle->GetMoveSpeed().z) >= CAR_MOVING_SPEED_THRESHOLD) + continue; + if (!pVehicle->IsCar() || pVehicle->m_status == STATUS_WRECKED || pVehicle->m_fHealth < 250.0f) + continue; + if (!DoesCranePickUpThisCarType(pVehicle->GetModelIndex()) || + m_bIsMilitaryCrane && CCranes::DoesMilitaryCraneHaveThisOneAlready(pVehicle->GetModelIndex())) { + if (!pVehicle->bCraneMessageDone) { + pVehicle->bCraneMessageDone = true; + if (!m_bIsMilitaryCrane) + CGarages::TriggerMessage("CR_1", -1, 4000, -1); // Crane cannot lift this vehicle. + else if (DoesCranePickUpThisCarType(pVehicle->GetModelIndex())) + CGarages::TriggerMessage("GA_20", -1, 4000, -1); // We got more of these than we can shift. Sorry man, no deal. + else + CGarages::TriggerMessage("GA_19", -1, 4000, -1); // We're not interested in that model. + } + } + else { + m_pVehiclePickedUp = pVehicle; + pVehicle->RegisterReference((CEntity**)&m_pVehiclePickedUp); + m_nCraneState = GOING_TOWARDS_TARGET; } } } -WRAPPER bool CCranes::IsThisCarBeingTargettedByAnyCrane(CVehicle*) { EAXJMP(0x5451E0); } -WRAPPER bool CCranes::IsThisCarBeingCarriedByAnyCrane(CVehicle*) { EAXJMP(0x545190); } -WRAPPER bool CCranes::HaveAllCarsBeenCollectedByMilitaryCrane() { EAXJMP(0x544BE0); } +bool CCrane::DoesCranePickUpThisCarType(uint32 mi) +{ + if (m_bIsCrusher) { + return mi != MI_FIRETRUCK && + mi != MI_TRASH && +#ifndef FIX_BUGS // why + mi != MI_BLISTA && +#endif + mi != MI_SECURICA && + mi != MI_BUS && + mi != MI_DODO && + mi != MI_RHINO; + } + if (m_bIsMilitaryCrane) { + return mi == MI_FIRETRUCK || + mi == MI_AMBULAN || + mi == MI_ENFORCER || + mi == MI_FBICAR || + mi == MI_RHINO || + mi == MI_BARRACKS || + mi == MI_POLICE; + } + return true; +} +bool CCranes::DoesMilitaryCraneHaveThisOneAlready(uint32 mi) +{ + switch (mi) { + case MI_FIRETRUCK: return (CCranes::CarsCollectedMilitaryCrane & 1); + case MI_AMBULAN: return (CCranes::CarsCollectedMilitaryCrane & 2); + case MI_ENFORCER: return (CCranes::CarsCollectedMilitaryCrane & 4); + case MI_FBICAR: return (CCranes::CarsCollectedMilitaryCrane & 8); + case MI_RHINO: return (CCranes::CarsCollectedMilitaryCrane & 0x10); + case MI_BARRACKS: return (CCranes::CarsCollectedMilitaryCrane & 0x20); + case MI_POLICE: return (CCranes::CarsCollectedMilitaryCrane & 0x40); + default: break; + } + return false; +} -WRAPPER void CCranes::Save(uint8*, uint32*) { EAXJMP(0x545210); } -WRAPPER void CranesLoad(uint8*, uint32) { EAXJMP(0x5454d0); } +void CCranes::RegisterCarForMilitaryCrane(uint32 mi) +{ + switch (mi) { + case MI_FIRETRUCK: CCranes::CarsCollectedMilitaryCrane |= 1; break; + case MI_AMBULAN: CCranes::CarsCollectedMilitaryCrane |= 2; break; + case MI_ENFORCER: CCranes::CarsCollectedMilitaryCrane |= 4; break; + case MI_FBICAR: CCranes::CarsCollectedMilitaryCrane |= 8; break; + case MI_RHINO: CCranes::CarsCollectedMilitaryCrane |= 0x10; break; + case MI_BARRACKS: CCranes::CarsCollectedMilitaryCrane |= 0x20; break; + case MI_POLICE: CCranes::CarsCollectedMilitaryCrane |= 0x40; break; + default: break; + } +} + +bool CCranes::HaveAllCarsBeenCollectedByMilitaryCrane() +{ + return (CCranes::CarsCollectedMilitaryCrane & 0x7F) == 0x7F; +} + +bool CCrane::GoTowardsTarget(float fAngleToTarget, float fDistanceToTarget, float fTargetHeight, float fSpeedMultiplier) +{ + bool bAngleMovementFinished, bOffsetMovementFinished, bHeightMovementFinished; + float fHookAngleDelta = fAngleToTarget - m_fHookAngle; + while (fHookAngleDelta > PI) + fHookAngleDelta -= TWOPI; + while (fHookAngleDelta < -PI) + fHookAngleDelta += TWOPI; + float fHookAngleChangeThisFrame = fSpeedMultiplier * CTimer::GetTimeStep() * HOOK_ANGLE_MOVEMENT_SPEED; + if (Abs(fHookAngleDelta) < fHookAngleChangeThisFrame) { + m_fHookAngle = fAngleToTarget; + bAngleMovementFinished = true; + } + else { + if (fHookAngleDelta < 0.0f) { + m_fHookAngle -= fHookAngleChangeThisFrame; + if (m_fHookAngle < 0.0f) + m_fHookAngle += TWOPI; + } + else { + m_fHookAngle += fHookAngleChangeThisFrame; + if (m_fHookAngle > TWOPI) + m_fHookAngle -= TWOPI; + } + bAngleMovementFinished = false; + } + float fHookOffsetDelta = fDistanceToTarget - m_fHookOffset; + float fHookOffsetChangeThisFrame = fSpeedMultiplier * CTimer::GetTimeStep() * HOOK_OFFSET_MOVEMENT_SPEED; + if (Abs(fHookOffsetDelta) < fHookOffsetChangeThisFrame) { + m_fHookOffset = fDistanceToTarget; + bOffsetMovementFinished = true; + } + else { + if (fHookOffsetDelta < 0.0f) + m_fHookOffset -= fHookOffsetChangeThisFrame; + else + m_fHookOffset += fHookOffsetChangeThisFrame; + bOffsetMovementFinished = false; + } + float fHookHeightDelta = fTargetHeight - m_fHookHeight; + float fHookHeightChangeThisFrame = fSpeedMultiplier * CTimer::GetTimeStep() * HOOK_HEIGHT_MOVEMENT_SPEED; + if (Abs(fHookHeightDelta) < fHookHeightChangeThisFrame) { + m_fHookHeight = fTargetHeight; + bHeightMovementFinished = true; + } + else { + if (fHookHeightDelta < 0.0f) + m_fHookHeight -= fHookHeightChangeThisFrame; + else + m_fHookHeight += fHookHeightChangeThisFrame; + bHeightMovementFinished = false; + } + return bAngleMovementFinished && bOffsetMovementFinished && bHeightMovementFinished; +} + +bool CCrane::GoTowardsHeightTarget(float fTargetHeight, float fSpeedMultiplier) +{ + bool bHeightMovementFinished; + float fHookHeightDelta = fTargetHeight - m_fHookHeight; + float fHookHeightChangeThisFrame = fSpeedMultiplier * CTimer::GetTimeStep() * HOOK_HEIGHT_MOVEMENT_SPEED; + if (Abs(fHookHeightDelta) < fHookHeightChangeThisFrame) { + m_fHookHeight = fTargetHeight; + bHeightMovementFinished = true; + } + else { + if (fHookHeightDelta < 0.0f) + m_fHookHeight -= fHookHeightChangeThisFrame; + else + m_fHookHeight += fHookHeightChangeThisFrame; + bHeightMovementFinished = false; + } + return bHeightMovementFinished; +} + +void CCrane::FindParametersForTarget(float X, float Y, float Z, float* pAngle, float* pDistance, float* pHeight) +{ + *pAngle = CGeneral::GetATanOfXY(X - m_pCraneEntity->GetPosition().x, Y - m_pCraneEntity->GetPosition().y); + *pDistance = ((CVector2D(X, Y) - (CVector2D)m_pCraneEntity->GetPosition())).Magnitude(); + *pHeight = Z; +} + +void CCrane::CalcHookCoordinates(float* pX, float* pY, float* pZ) +{ + *pX = Cos(m_fHookAngle) * m_fHookOffset + m_pCraneEntity->GetPosition().x; + *pY = Sin(m_fHookAngle) * m_fHookOffset + m_pCraneEntity->GetPosition().y; + *pZ = m_fHookHeight; +} + +void CCrane::SetHookMatrix() +{ + if (!m_pHook) + return; + m_pHook->GetPosition() = m_vecHookCurPos; + CVector up(m_vecHookInitPos.x - m_vecHookCurPos.x, m_vecHookInitPos.y - m_vecHookCurPos.y, 20.0f); + up.Normalise(); + m_pHook->GetRight() = CrossProduct(CVector(0.0f, 1.0f, 0.0f), up); + m_pHook->GetForward() = CrossProduct(up, m_pHook->GetRight()); + m_pHook->GetUp() = up; + m_pHook->SetOrientation(0.0f, 0.0f, -HALFPI); + m_pHook->GetMatrix().UpdateRW(); + m_pHook->UpdateRwFrame(); + CWorld::Remove(m_pHook); + CWorld::Add(m_pHook); +} + +bool CCranes::IsThisCarBeingCarriedByAnyCrane(CVehicle* pVehicle) +{ + for (int i = 0; i < NumCranes; i++) { + if (pVehicle == aCranes[i].m_pVehiclePickedUp) { + switch (aCranes[i].m_nCraneState) { + case CCrane::GOING_TOWARDS_TARGET_ONLY_HEIGHT: + case CCrane::LIFTING_TARGET: + case CCrane::ROTATING_TARGET: + return true; + default: + break; + } + } + } + return false; +} + +bool CCranes::IsThisCarBeingTargettedByAnyCrane(CVehicle* pVehicle) +{ + for (int i = 0; i < NumCranes; i++) { + if (pVehicle == aCranes[i].m_pVehiclePickedUp) + return true; + } + return false; +} + +void CCranes::Save(uint8* buf, uint32* size) +{ + INITSAVEBUF + + *size = 2 * sizeof(uint32) + NUM_CRANES * sizeof(CCrane); + WriteSaveBuf(buf, NumCranes); + WriteSaveBuf(buf, CarsCollectedMilitaryCrane); + for (int i = 0; i < NUM_CRANES; i++) { + CCrane* pCrane = WriteSaveBuf(buf, aCranes[i]); + if (pCrane->m_pCraneEntity) + pCrane->m_pCraneEntity = (CBuilding*)(CPools::GetBuildingPool()->GetJustIndex((CBuilding*)pCrane->m_pCraneEntity) + 1); + if (pCrane->m_pHook) + pCrane->m_pHook = (CObject*)(CPools::GetObjectPool()->GetJustIndex((CObject*)pCrane->m_pHook) + 1); + if (pCrane->m_pVehiclePickedUp) + pCrane->m_pVehiclePickedUp = (CVehicle*)(CPools::GetVehiclePool()->GetJustIndex((CVehicle*)pCrane->m_pVehiclePickedUp) + 1); + } + + VALIDATESAVEBUF(*size); +} + +void CranesLoad(uint8* buf, uint32 size) +{ + INITSAVEBUF + + CCranes::NumCranes = ReadSaveBuf(buf); + CCranes::CarsCollectedMilitaryCrane = ReadSaveBuf(buf); + for (int i = 0; i < NUM_CRANES; i++) + CCranes::aCranes[i] = ReadSaveBuf(buf); + for (int i = 0; i < NUM_CRANES; i++) { + CCrane* pCrane = &CCranes::aCranes[i]; + if (pCrane->m_pCraneEntity) + pCrane->m_pCraneEntity = CPools::GetBuildingPool()->GetSlot((uint32)pCrane->m_pCraneEntity - 1); + if (pCrane->m_pHook) + pCrane->m_pHook = CPools::GetObjectPool()->GetSlot((uint32)pCrane->m_pHook - 1); + if (pCrane->m_pVehiclePickedUp) + pCrane->m_pVehiclePickedUp = CPools::GetVehiclePool()->GetSlot((uint32)pCrane->m_pVehiclePickedUp + 1); + } + for (int i = 0; i < NUM_CRANES; i++) { + CCranes::aCranes[i].m_nAudioEntity = DMAudio.CreateEntity(AUDIOTYPE_CRANE, &CCranes::aCranes[i]); + if (CCranes::aCranes[i].m_nAudioEntity) + DMAudio.SetEntityStatus(CCranes::aCranes[i].m_nAudioEntity, 1); + } + + VALIDATESAVEBUF(size); +} + +STARTPATCHES + InjectHook(0x5454D0, CranesLoad, PATCH_JUMP); // GenericLoad +ENDPATCHES \ No newline at end of file diff --git a/src/control/Cranes.h b/src/control/Cranes.h index c121378b..d9817282 100644 --- a/src/control/Cranes.h +++ b/src/control/Cranes.h @@ -6,6 +6,7 @@ class CVehicle; class CEntity; class CObject; +class CBuilding; class CCrane { @@ -14,7 +15,7 @@ public: IDLE = 0, GOING_TOWARDS_TARGET = 1, LIFTING_TARGET = 2, - GOING_TOWARDS_HEIGHT_TARGET = 3, + GOING_TOWARDS_TARGET_ONLY_HEIGHT = 3, ROTATING_TARGET = 4, DROPPING_TARGET = 5 }; @@ -23,8 +24,8 @@ public: ACTIVATED = 1, DEACTIVATED = 2 }; - CEntity *m_pObject; - CObject *m_pMagnet; + CBuilding *m_pCraneEntity; + CObject *m_pHook; int32 m_nAudioEntity; float m_fPickupX1; float m_fPickupX2; @@ -36,20 +37,19 @@ public: float m_fDropoffAngle; float m_fPickupDistance; float m_fDropoffDistance; - float m_fAngle; - float m_fDistance; - float m_fHeight; + float m_fPickupHeight; + float m_fDropoffHeight; + float m_fHookAngle; float m_fHookOffset; float m_fHookHeight; CVector m_vecHookInitPos; CVector m_vecHookCurPos; - float m_fHookVelocityX; - float m_fHookVelocityY; + CVector2D m_vecHookVelocity; CVehicle *m_pVehiclePickedUp; - uint32 m_nUpdateTimer; - CraneStatus m_bCraneStatus; - CraneState m_bCraneState; - uint8 m_bVehiclesCollected; + uint32 m_nTimeForNextCheck; + CraneStatus m_nCraneStatus; + CraneState m_nCraneState; + uint8 m_nVehiclesCollected; bool m_bIsCrusher; bool m_bIsMilitaryCrane; bool m_bWasMilitaryCrane; @@ -57,14 +57,19 @@ public: void Init(void) { memset(this, 0, sizeof(*this)); } void Update(void); - bool RotateCarriedCarProperly(); - void FindCarInSectorList(CPtrList*); - bool DoesCranePickUpThisCarType(uint32); - bool GoTowardsTarget(float, float, float, float); - bool GoTowardsHeightTarget(float, float); - void FindParametersForTarget(float, float, float, float*, float*, float*); - void CalcHookCoordinates(float*, float*, float*); - void SetHookMatrix(); + bool RotateCarriedCarProperly(void); + void FindCarInSectorList(CPtrList* pList); + bool DoesCranePickUpThisCarType(uint32 mi); + bool GoTowardsTarget(float fAngleToTarget, float fDistanceToTarget, float fTargetHeight, float fSpeedMultiplier = 1.0f); + bool GoTowardsHeightTarget(float fTargetHeight, float fSpeedMultiplier = 1.0f); + void FindParametersForTarget(float X, float Y, float Z, float* pAngle, float* pDistance, float* pHeight); + void CalcHookCoordinates(float* pX, float* pY, float* pZ); + void SetHookMatrix(void); + + float GetHeightToPickup() { return 4.0f + m_fPickupHeight + (m_bIsCrusher ? 4.5f : 0.0f); }; + float GetHeightToDropoff() { return m_bIsCrusher ? (2.0f + m_fDropoffHeight + 3.0f) : (2.0f + m_fDropoffHeight); } + float GetHeightToPickupHeight() { return m_fPickupHeight + (m_bIsCrusher ? 7.0f : 4.0f); } + float GetHeightToDropoffHeight() { return m_fDropoffHeight + (m_bIsCrusher ? 7.0f : 2.0f); } }; static_assert(sizeof(CCrane) == 128, "CCrane: error"); @@ -73,19 +78,19 @@ class CCranes { public: static void InitCranes(void); - static void AddThisOneCrane(CEntity*); - static void ActivateCrane(float, float, float, float, float, float, float, float, bool, bool, float, float); - static void DeActivateCrane(float, float); - static bool IsThisCarPickedUp(float, float, CVehicle*); + static void AddThisOneCrane(CEntity* pCraneEntity); + static void ActivateCrane(float fInfX, float fSupX, float fInfY, float fSupY, float fDropOffX, float fDropOffY, float fDropOffZ, float fHeading, bool bIsCrusher, bool bIsMilitary, float fPosX, float fPosY); + static void DeActivateCrane(float fX, float fY); + static bool IsThisCarPickedUp(float fX, float fY, CVehicle* pVehicle); static void UpdateCranes(void); - static bool DoesMilitaryCraneHaveThisOneAlready(uint32); - static void RegisterCarForMilitaryCrane(uint32); - static bool HaveAllCarsBeenCollectedByMilitaryCrane(); - static bool IsThisCarBeingCarriedByAnyCrane(CVehicle*); - static bool IsThisCarBeingTargettedByAnyCrane(CVehicle*); - static void Save(uint8*, uint32*); + static bool DoesMilitaryCraneHaveThisOneAlready(uint32 mi); + static void RegisterCarForMilitaryCrane(uint32 mi); + static bool HaveAllCarsBeenCollectedByMilitaryCrane(void); + static bool IsThisCarBeingCarriedByAnyCrane(CVehicle* pVehicle); + static bool IsThisCarBeingTargettedByAnyCrane(CVehicle* pVehicle); + static void Save(uint8* buf, uint32* size); - static int32& CarsCollectedMilitaryCrane; + static uint32& CarsCollectedMilitaryCrane; static int32& NumCranes; static CCrane(&aCranes)[NUM_CRANES]; }; diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 7e9fc0fa..64020602 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -126,7 +126,6 @@ uint32& CGarages::MessageEndTime = *(uint32*)0x8F597C; uint32& CGarages::NumGarages = *(uint32*)0x8F29F4; bool& CGarages::PlayerInGarage = *(bool*)0x95CD83; int32& CGarages::PoliceCarsCollected = *(int32*)0x941444; -uint32& CGarages::GarageToBeTidied = *(uint32*)0x623570; CStoredCar(&CGarages::aCarsInSafeHouse1)[NUM_GARAGE_STORED_CARS] = *(CStoredCar(*)[NUM_GARAGE_STORED_CARS]) * (uintptr*)0x6FA210; CStoredCar(&CGarages::aCarsInSafeHouse2)[NUM_GARAGE_STORED_CARS] = *(CStoredCar(*)[NUM_GARAGE_STORED_CARS]) * (uintptr*)0x6FA300; CStoredCar(&CGarages::aCarsInSafeHouse3)[NUM_GARAGE_STORED_CARS] = *(CStoredCar(*)[NUM_GARAGE_STORED_CARS]) * (uintptr*)0x6FA3F0; @@ -322,6 +321,9 @@ void CGarage::Update() } } } + break; + default: + break; } } if (m_bDeactivated && m_eGarageState == GS_FULLYCLOSED) @@ -408,11 +410,11 @@ void CGarage::Update() if (!((CAutomobile*)(FindPlayerVehicle()))->bFixedColour) { uint8 colour1, colour2; uint16 attempt; - ((CVehicleModelInfo*)CModelInfo::GetModelInfo(FindPlayerVehicle()->GetModelIndex()))->ChooseVehicleColour(colour1, colour2); + FindPlayerVehicle()->GetModelInfo()->ChooseVehicleColour(colour1, colour2); for (attempt = 0; attempt < 10; attempt++) { if (colour1 != FindPlayerVehicle()->m_currentColour1 || colour2 != FindPlayerVehicle()->m_currentColour2) break; - ((CVehicleModelInfo*)CModelInfo::GetModelInfo(FindPlayerVehicle()->GetModelIndex()))->ChooseVehicleColour(colour1, colour2); + FindPlayerVehicle()->GetModelInfo()->ChooseVehicleColour(colour1, colour2); } bChangedColour = (attempt < 10); FindPlayerVehicle()->m_currentColour1 = colour1; @@ -490,7 +492,7 @@ void CGarage::Update() break; } if (!CGarages::BombsAreFree && CWorld::Players[CWorld::PlayerInFocus].m_nMoney < BOMB_PRICE) { - CGarages::TriggerMessage("GA_4", -1, 4000, -1); // "Car bombs are $1000 each" + CGarages::TriggerMessage("GA_4", -1, 4000, -1); // "Car bombs are $1000 each" - weird that the price is hardcoded in message m_eGarageState = GS_OPENEDCONTAINSCAR; DMAudio.PlayFrontEndSound(SOUND_GARAGE_NO_MONEY, 1); break; @@ -1184,7 +1186,7 @@ bool CGarage::IsEntityEntirelyInside(CEntity * pEntity) if (pEntity->GetPosition().x < m_fX1 || pEntity->GetPosition().x > m_fX2 || pEntity->GetPosition().y < m_fY1 || pEntity->GetPosition().y > m_fY2) return false; - CColModel* pColModel = CModelInfo::GetModelInfo(pEntity->GetModelIndex())->GetColModel(); + CColModel* pColModel = pEntity->GetColModel(); for (int i = 0; i < pColModel->numSpheres; i++) { CVector pos = pEntity->GetMatrix() * pColModel->spheres[i].center; float radius = pColModel->spheres[i].radius; @@ -1201,7 +1203,7 @@ bool CGarage::IsEntityEntirelyInside3D(CEntity * pEntity, float fMargin) pEntity->GetPosition().y < m_fY1 - fMargin || pEntity->GetPosition().y > m_fY2 + fMargin || pEntity->GetPosition().z < m_fZ1 - fMargin || pEntity->GetPosition().z > m_fZ2 + fMargin) return false; - CColModel* pColModel = CModelInfo::GetModelInfo(pEntity->GetModelIndex())->GetColModel(); + CColModel* pColModel = pEntity->GetColModel(); for (int i = 0; i < pColModel->numSpheres; i++) { CVector pos = pEntity->GetMatrix() * pColModel->spheres[i].center; float radius = pColModel->spheres[i].radius; @@ -1218,7 +1220,7 @@ bool CGarage::IsEntityEntirelyOutside(CEntity * pEntity, float fMargin) if (pEntity->GetPosition().x > m_fX1 - fMargin && pEntity->GetPosition().x < m_fX2 + fMargin && pEntity->GetPosition().y > m_fY1 - fMargin && pEntity->GetPosition().y < m_fY2 + fMargin) return false; - CColModel* pColModel = CModelInfo::GetModelInfo(pEntity->GetModelIndex())->GetColModel(); + CColModel* pColModel = pEntity->GetColModel(); for (int i = 0; i < pColModel->numSpheres; i++) { CVector pos = pEntity->GetMatrix() * pColModel->spheres[i].center; float radius = pColModel->spheres[i].radius; @@ -1250,7 +1252,7 @@ bool CGarage::IsEntityTouching3D(CEntity * pEntity) pEntity->GetPosition().y - radius < m_fY1 || pEntity->GetPosition().y + radius > m_fY2 || pEntity->GetPosition().z - radius < m_fZ1 || pEntity->GetPosition().z + radius > m_fZ2) return false; - CColModel* pColModel = CModelInfo::GetModelInfo(pEntity->GetModelIndex())->GetColModel(); + CColModel* pColModel = pEntity->GetColModel(); for (int i = 0; i < pColModel->numSpheres; i++) { CVector pos = pEntity->GetMatrix() * pColModel->spheres[i].center; radius = pColModel->spheres[i].radius; @@ -1264,7 +1266,7 @@ bool CGarage::IsEntityTouching3D(CEntity * pEntity) bool CGarage::EntityHasASphereWayOutsideGarage(CEntity * pEntity, float fMargin) { - CColModel* pColModel = CModelInfo::GetModelInfo(pEntity->GetModelIndex())->GetColModel(); + CColModel* pColModel = pEntity->GetColModel(); for (int i = 0; i < pColModel->numSpheres; i++) { CVector pos = pEntity->GetMatrix() * pColModel->spheres[i].center; float radius = pColModel->spheres[i].radius; @@ -1285,7 +1287,7 @@ bool CGarage::IsAnyOtherCarTouchingGarage(CVehicle * pException) continue; if (!IsEntityTouching3D(pVehicle)) continue; - CColModel* pColModel = CModelInfo::GetModelInfo(pVehicle->GetModelIndex())->GetColModel(); + CColModel* pColModel = pVehicle->GetColModel(); for (int i = 0; i < pColModel->numSpheres; i++) { CVector pos = pVehicle->GetMatrix() * pColModel->spheres[i].center; float radius = pColModel->spheres[i].radius; @@ -1307,7 +1309,7 @@ bool CGarage::IsAnyOtherPedTouchingGarage(CPed * pException) continue; if (!IsEntityTouching3D(pPed)) continue; - CColModel* pColModel = CModelInfo::GetModelInfo(pPed->GetModelIndex())->GetColModel(); + CColModel* pColModel = pException->GetColModel(); for (int i = 0; i < pColModel->numSpheres; i++) { CVector pos = pPed->GetMatrix() * pColModel->spheres[i].center; float radius = pColModel->spheres[i].radius; @@ -1329,7 +1331,7 @@ bool CGarage::IsAnyCarBlockingDoor() continue; if (!IsEntityTouching3D(pVehicle)) continue; - CColModel* pColModel = CModelInfo::GetModelInfo(pVehicle->GetModelIndex())->GetColModel(); + CColModel* pColModel = pVehicle->GetColModel(); for (int i = 0; i < pColModel->numSpheres; i++) { CVector pos = pVehicle->GetMatrix() * pColModel->spheres[i].center; float radius = pColModel->spheres[i].radius; @@ -1698,8 +1700,8 @@ float CGarage::CalcSmallestDistToGarageDoorSquared(float X, float Y) void CGarage::FindDoorsEntities() { - m_pDoor1 = false; - m_pDoor2 = false; + m_pDoor1 = nil; + m_pDoor2 = nil; int xstart = max(0, CWorld::GetSectorIndexX(m_fX1)); int xend = min(NUMSECTORS_X - 1, CWorld::GetSectorIndexX(m_fX2)); int ystart = max(0, CWorld::GetSectorIndexY(m_fY1)); @@ -1992,7 +1994,7 @@ void CGarage::TidyUpGarageClose() continue; bool bRemove = false; if (m_eGarageState != GS_FULLYCLOSED) { - CColModel* pColModel = CModelInfo::GetModelInfo(pVehicle->GetModelIndex())->GetColModel(); + CColModel* pColModel = pVehicle->GetColModel(); for (int i = 0; i < pColModel->numSpheres; i++) { CVector pos = pVehicle->GetMatrix() * pColModel->spheres[i].center; float radius = pColModel->spheres[i].radius; @@ -2227,6 +2229,7 @@ void CGarages::SetAllDoorsBackToOriginalHeight() void CGarages::Save(uint8 * buf, uint32 * size) { #ifdef FIX_GARAGE_SIZE + INITSAVEBUF *size = (6 * sizeof(uint32) + TOTAL_COLLECTCARS_GARAGES * sizeof(*CarTypesCollected) + sizeof(uint32) + 3 * NUM_GARAGE_STORED_CARS * sizeof(CStoredCar) + NUM_GARAGES * sizeof(CGarage)); #else * size = 5484; @@ -2248,6 +2251,9 @@ void CGarages::Save(uint8 * buf, uint32 * size) } for (int i = 0; i < NUM_GARAGES; i++) WriteSaveBuf(buf, aGarages[i]); +#ifdef FIX_GARAGE_SIZE + VALIDATESAVEBUF(*size); +#endif } CStoredCar::CStoredCar(const CStoredCar & other) @@ -2271,6 +2277,7 @@ CStoredCar::CStoredCar(const CStoredCar & other) void CGarages::Load(uint8* buf, uint32 size) { #ifdef FIX_GARAGE_SIZE + INITSAVEBUF assert(size == (6 * sizeof(uint32) + TOTAL_COLLECTCARS_GARAGES * sizeof(*CarTypesCollected) + sizeof(uint32) + 3 * NUM_GARAGE_STORED_CARS * sizeof(CStoredCar) + NUM_GARAGES * sizeof(CGarage)); #else assert(size == 5484); @@ -2303,6 +2310,9 @@ void CGarages::Load(uint8* buf, uint32 size) else aGarages[i].UpdateDoorsHeight(); } +#ifdef FIX_GARAGE_SIZE + VALIDATESAVEBUF(size); +#endif } bool @@ -2345,7 +2355,6 @@ CGarages::IsModelIndexADoor(uint32 id) STARTPATCHES - InjectHook(0x426B20, CGarages::TriggerMessage, PATCH_JUMP); // CCrane::Update, CCrane::FindCarInSectorList InjectHook(0x427AB0, CGarages::IsPointInAGarageCameraZone, PATCH_JUMP); // CCamera::CamControl InjectHook(0x427BC0, CGarages::CameraShouldBeOutside, PATCH_JUMP); // CCamera::CamControl InjectHook(0x428940, CGarages::Load, PATCH_JUMP); // GenericLoad diff --git a/src/control/Garages.h b/src/control/Garages.h index 3f471555..a07fa719 100644 --- a/src/control/Garages.h +++ b/src/control/Garages.h @@ -192,7 +192,6 @@ class CGarages static uint32 &NumGarages; static bool &PlayerInGarage; static int32 &PoliceCarsCollected; - static uint32 &GarageToBeTidied; static CGarage(&aGarages)[NUM_GARAGES]; static CStoredCar(&aCarsInSafeHouse1)[NUM_GARAGE_STORED_CARS]; static CStoredCar(&aCarsInSafeHouse2)[NUM_GARAGE_STORED_CARS]; diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 8a79ba1d..6409f339 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -2229,6 +2229,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command) if (pos.z <= -100) pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y); UpdateCompareFlag(TheCamera.IsSphereVisible(pos, *(float*)&ScriptParams[3])); + return 0; } case COMMAND_DEBUG_ON: CTheScripts::DbgFlag = true; @@ -7657,13 +7658,13 @@ int8 CRunningScript::ProcessCommands900To999(int32 command) assert(pObject); if (ScriptParams[1]) { if (pObject->bIsStatic) { - pObject->bIsStatic = true; + pObject->bIsStatic = false; pObject->AddToMovingList(); } } else { if (!pObject->bIsStatic) { - pObject->bIsStatic = false; + pObject->bIsStatic = true; pObject->RemoveFromMovingList(); } } @@ -11037,6 +11038,7 @@ void CRunningScript::DoDeatharrestCheck() int contactFlagOffset = CTheScripts::OnAMissionForContactFlag[contact]; if (contactFlagOffset && CTheScripts::ScriptSpace[contactFlagOffset] == 1) { messageId += CTheScripts::BaseBriefIdForContact[contact]; + found = true; } } if (!found) @@ -11331,6 +11333,7 @@ INITSAVEBUF break; case 4: InvisibilitySettingArray[i] = CPools::GetDummyPool()->GetSlot(handle - 1); + break; default: assert(false); } diff --git a/src/control/Script.h b/src/control/Script.h index fbcdce48..8143bd43 100644 --- a/src/control/Script.h +++ b/src/control/Script.h @@ -17,7 +17,7 @@ class CRunningScript; struct CScriptRectangle { - int8 m_bIsUsed; + bool m_bIsUsed; bool m_bBeforeFade; int16 m_nTextureId; CRect m_sRect; From e6e51492f064c4ab429a417862be1d0903bd4a0c Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Mon, 6 Apr 2020 11:19:29 +0300 Subject: [PATCH 006/112] review fixes --- src/control/Cranes.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/control/Cranes.cpp b/src/control/Cranes.cpp index cbfd2a35..021a5c19 100644 --- a/src/control/Cranes.cpp +++ b/src/control/Cranes.cpp @@ -30,6 +30,12 @@ #define HOOK_OFFSET_MOVEMENT_SPEED (0.1f) #define HOOK_HEIGHT_MOVEMENT_SPEED (0.06f) +#define MESSAGE_SHOW_DURATION (4000) + +#define MAX_DISTANCE (99999.9f) +#define MIN_VALID_POSITION (-10000.0f) +#define DEFAULT_OFFSET (20.0f) + uint32 TimerForCamInterpolation; uint32& CCranes::CarsCollectedMilitaryCrane = *(uint32*)0x8F6248; @@ -72,8 +78,8 @@ void CCranes::AddThisOneCrane(CEntity* pEntity) pCrane->m_fHookAngle = NumCranes; // lol wtf while (pCrane->m_fHookAngle > TWOPI) pCrane->m_fHookAngle -= TWOPI; - pCrane->m_fHookOffset = 20.0f; - pCrane->m_fHookHeight = 20.0f; + pCrane->m_fHookOffset = DEFAULT_OFFSET; + pCrane->m_fHookHeight = DEFAULT_OFFSET; pCrane->m_nTimeForNextCheck = 0; pCrane->m_nCraneState = CCrane::IDLE; pCrane->m_bWasMilitaryCrane = false; @@ -99,9 +105,9 @@ void CCranes::AddThisOneCrane(CEntity* pEntity) void CCranes::ActivateCrane(float fInfX, float fSupX, float fInfY, float fSupY, float fDropOffX, float fDropOffY, float fDropOffZ, float fHeading, bool bIsCrusher, bool bIsMilitary, float fPosX, float fPosY) { - float fMinDistance = 99999.9f; + float fMinDistance = MAX_DISTANCE; float X = fPosX, Y = fPosY; - if (X <= -10000.0f || Y <= -10000.0f) { + if (X <= MIN_VALID_POSITION || Y <= MIN_VALID_POSITION) { X = fDropOffX; Y = fDropOffY; } @@ -114,7 +120,7 @@ void CCranes::ActivateCrane(float fInfX, float fSupX, float fInfY, float fSupY, } } #ifdef FIX_BUGS // classic - if (fMinDistance == 99999.9f) + if (fMinDistance == MAX_DISTANCE) return; #endif CCrane* pCrane = &aCranes[index]; @@ -150,7 +156,7 @@ void CCranes::ActivateCrane(float fInfX, float fSupX, float fInfY, float fSupY, void CCranes::DeActivateCrane(float X, float Y) { - float fMinDistance = 99999.9f; + float fMinDistance = MAX_DISTANCE; int index = 0; for (int i = 0; i < NumCranes; i++) { float distance = (CVector2D(X, Y) - aCranes[i].m_pCraneEntity->GetPosition()).Magnitude(); @@ -160,7 +166,7 @@ void CCranes::DeActivateCrane(float X, float Y) } } #ifdef FIX_BUGS // classic - if (fMinDistance == 99999.9f) + if (fMinDistance == MAX_DISTANCE) return; #endif aCranes[index].m_nCraneStatus = CCrane::DEACTIVATED; @@ -269,7 +275,7 @@ void CCrane::Update(void) break; case LIFTING_TARGET: RotateCarriedCarProperly(); - if (GoTowardsTarget(m_fDropoffAngle, m_fDropoffDistance, GetHeightToDropoff(), 0.3f)) + if (GoTowardsTarget(m_fDropoffAngle, m_fDropoffDistance, GetHeightToDropoff(), CRANE_SLOWDOWN_MULTIPLIER)) m_nCraneState = ROTATING_TARGET; if (!m_pVehiclePickedUp || m_pVehiclePickedUp->pDriver) { m_pVehiclePickedUp = nil; @@ -302,7 +308,7 @@ void CCrane::Update(void) CCranes::RegisterCarForMilitaryCrane(m_pVehiclePickedUp->GetModelIndex()); if (!CCranes::HaveAllCarsBeenCollectedByMilitaryCrane()) { CWorld::Players[CWorld::PlayerInFocus].m_nMoney += CAR_REWARD_MILITARY_CRANE; - CGarages::TriggerMessage("GA_10", CAR_REWARD_MILITARY_CRANE, 4000, -1); + CGarages::TriggerMessage("GA_10", CAR_REWARD_MILITARY_CRANE, MESSAGE_SHOW_DURATION, -1); } CWorld::Remove(m_pVehiclePickedUp); delete m_pVehiclePickedUp; @@ -415,11 +421,11 @@ void CCrane::FindCarInSectorList(CPtrList* pList) if (!pVehicle->bCraneMessageDone) { pVehicle->bCraneMessageDone = true; if (!m_bIsMilitaryCrane) - CGarages::TriggerMessage("CR_1", -1, 4000, -1); // Crane cannot lift this vehicle. + CGarages::TriggerMessage("CR_1", -1, MESSAGE_SHOW_DURATION, -1); // Crane cannot lift this vehicle. else if (DoesCranePickUpThisCarType(pVehicle->GetModelIndex())) - CGarages::TriggerMessage("GA_20", -1, 4000, -1); // We got more of these than we can shift. Sorry man, no deal. + CGarages::TriggerMessage("GA_20", -1, MESSAGE_SHOW_DURATION, -1); // We got more of these than we can shift. Sorry man, no deal. else - CGarages::TriggerMessage("GA_19", -1, 4000, -1); // We're not interested in that model. + CGarages::TriggerMessage("GA_19", -1, MESSAGE_SHOW_DURATION, -1); // We're not interested in that model. } } else { From 4f1d6123dd939f87a1798a3ebb447106a8c1ff73 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Mon, 6 Apr 2020 19:31:08 +0300 Subject: [PATCH 007/112] stats fix --- src/control/Garages.cpp | 2 +- src/core/Stats.cpp | 108 +++++++++++++++++++--------------------- src/core/Stats.h | 3 -- 3 files changed, 51 insertions(+), 62 deletions(-) diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 64020602..9e10af2d 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -526,7 +526,7 @@ void CGarage::Update() ((CAutomobile*)(FindPlayerVehicle()))->m_pBombRigger = FindPlayerPed(); if (m_eGarageType == GARAGE_BOMBSHOP3) CGarages::GivePlayerDetonator(); - CStats::KgOfExplosivesUsed += KGS_OF_EXPLOSIVES_IN_BOMB; + CStats::KgsOfExplosivesUsed += KGS_OF_EXPLOSIVES_IN_BOMB; } switch (m_eGarageType) { case GARAGE_BOMBSHOP1: diff --git a/src/core/Stats.cpp b/src/core/Stats.cpp index cdd20b66..aeb7afe5 100644 --- a/src/core/Stats.cpp +++ b/src/core/Stats.cpp @@ -63,62 +63,56 @@ void CStats::Init() PeopleKilledByOthers = 0; PeopleKilledByPlayer = 0; ShotsMade = 0; - CarsExploded = 0; - HelisDestroyed = 0; - ProgressMade = 0; - KgsOfExplosivesUsed = 0; - InstantHitsFiredByPlayer = 0; - InstantHitsHitByPlayer = 0; - CarsCrushed = 0; - HeadsPopped = 0; - TimesArrested = 0; - TimesDied = 0; - DaysPassed = 0; - NumberOfUniqueJumpsFound = 0; - mmRain = 0; - MaximumJumpFlips = 0; - MaximumJumpSpins = 0; - MaximumJumpDistance = 0; - MaximumJumpHeight = 0; - BestStuntJump = 0; - TotalNumberOfUniqueJumps = 0; - Record4x4One = 0; - LongestFlightInDodo = 0; - Record4x4Two = 0; - PassengersDroppedOffWithTaxi = 0; - Record4x4Three = 0; - MoneyMadeWithTaxi = 0; - Record4x4Mayhem = 0; - LivesSavedWithAmbulance = 0; - ElBurroTime = 0; - CriminalsCaught = 0; - MissionsGiven = 0; - HighestLevelAmbulanceMission = 0; - MissionsPassed = 0; - FiresExtinguished = 0; - DistanceTravelledOnFoot = 0; - TimeTakenDefuseMission = 0; - NumberKillFrenziesPassed = 0; - DistanceTravelledInVehicle = 0; - TotalNumberKillFrenzies = 0; - TotalNumberMissions = 0; - KillsSinceLastCheckpoint = 0; - TotalLegitimateKills = 0; - for (int i = 0; i < TOTAL_FASTEST_TIMES; i++) - { - FastestTimes[i] = 0; - } - for (int i = 0; i < TOTAL_HIGHEST_SCORES; i++) - { - HighestScores[i] = 0; - } - for (int i = 0; i < NUM_PEDTYPES; i++) - { - PedsKilledOfThisType[i] = 0; - } - IndustrialPassed = 0; - CommercialPassed = 0; - SuburbanPassed = 0; + CarsExploded = 0; + HelisDestroyed = 0; + ProgressMade = 0; + KgsOfExplosivesUsed = 0; + InstantHitsFiredByPlayer = 0; + InstantHitsHitByPlayer = 0; + CarsCrushed = 0; + HeadsPopped = 0; + TimesArrested = 0; + TimesDied = 0; + DaysPassed = 0; + NumberOfUniqueJumpsFound = 0; + mmRain = 0; + MaximumJumpFlips = 0; + MaximumJumpSpins = 0; + MaximumJumpDistance = 0; + MaximumJumpHeight = 0; + BestStuntJump = 0; + TotalNumberOfUniqueJumps = 0; + Record4x4One = 0; + LongestFlightInDodo = 0; + Record4x4Two = 0; + PassengersDroppedOffWithTaxi = 0; + Record4x4Three = 0; + MoneyMadeWithTaxi = 0; + Record4x4Mayhem = 0; + LivesSavedWithAmbulance = 0; + ElBurroTime = 0; + CriminalsCaught = 0; + MissionsGiven = 0; + HighestLevelAmbulanceMission = 0; + MissionsPassed = 0; + FiresExtinguished = 0; + DistanceTravelledOnFoot = 0; + TimeTakenDefuseMission = 0; + NumberKillFrenziesPassed = 0; + DistanceTravelledInVehicle = 0; + TotalNumberKillFrenzies = 0; + TotalNumberMissions = 0; + KillsSinceLastCheckpoint = 0; + TotalLegitimateKills = 0; + for (int i = 0; i < TOTAL_FASTEST_TIMES; i++) + FastestTimes[i] = 0; + for (int i = 0; i < TOTAL_HIGHEST_SCORES; i++) + HighestScores[i] = 0; + for (int i = 0; i < NUM_PEDTYPES; i++) + PedsKilledOfThisType[i] = 0; + IndustrialPassed = 0; + CommercialPassed = 0; + SuburbanPassed = 0; } void CStats::RegisterFastestTime(int32 index, int32 time) @@ -206,8 +200,6 @@ void CStats::SetTotalNumberMissions(int32 total) TotalNumberMissions = total; } -//WRAPPER void CStats::Init() { EAXJMP(0x4AAC60); } - STARTPATCHES InjectHook(0x48C5A3, CStats::Init, PATCH_JUMP); // CGame::ReInitGameObjectVariables ENDPATCHES \ No newline at end of file diff --git a/src/core/Stats.h b/src/core/Stats.h index 41d926e6..029b2307 100644 --- a/src/core/Stats.h +++ b/src/core/Stats.h @@ -62,8 +62,6 @@ public: static int32 &CarsCrushed; static int32(&FastestTimes)[TOTAL_FASTEST_TIMES]; static int32(&HighestScores)[TOTAL_HIGHEST_SCORES]; - static int32 &KgOfExplosivesUsed; - static int32 &CarsCrushed; public: static void RegisterFastestTime(int32, int32); @@ -85,6 +83,5 @@ public: static void CheckPointReachedSuccessfully() { TotalLegitimateKills += KillsSinceLastCheckpoint; KillsSinceLastCheckpoint = 0; }; static void RegisterElBurroTime(int32); static void SaveStats(uint8 *buf, uint32 *size); - static void Init(void); }; From ab25c8cc98c6890c98c31b2e46e21544bc0de4f1 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Mon, 6 Apr 2020 19:46:09 +0300 Subject: [PATCH 008/112] fixed build --- src/core/Frontend.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index e509de28..a7851650 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -1179,7 +1179,7 @@ CMenuManager::GetNumOptionsCntrlConfigScreens(void) break; case MENUPAGE_KEYBOARD_CONTROLS: switch (m_ControlMethod) { - case CONTROL_STANDART: + case CONTROL_STANDARD: number = 25; break; case CONTROL_CLASSIC: @@ -1200,7 +1200,7 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 int bindingMargin = MENU_X(3.0f); float rowHeight; switch (CMenuManager::m_ControlMethod) { - case CONTROL_STANDART: + case CONTROL_STANDARD: rowHeight = 10.7f; break; case CONTROL_CLASSIC: @@ -1274,13 +1274,13 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 controllerAction = PED_LOOKBEHIND; break; case 23: - if (CMenuManager::m_ControlMethod == CONTROL_STANDART) + if (CMenuManager::m_ControlMethod == CONTROL_STANDARD) controllerAction = -1; else controllerAction = PED_1RST_PERSON_LOOK_LEFT; break; case 24: - if (CMenuManager::m_ControlMethod == CONTROL_STANDART) + if (CMenuManager::m_ControlMethod == CONTROL_STANDARD) controllerAction = -1; else controllerAction = PED_1RST_PERSON_LOOK_RIGHT; From de706d1471686415455e7c59df8a3c28738f3f0c Mon Sep 17 00:00:00 2001 From: aap Date: Mon, 6 Apr 2020 18:49:51 +0200 Subject: [PATCH 009/112] fixed typo --- src/core/Frontend.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index e509de28..a7851650 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -1179,7 +1179,7 @@ CMenuManager::GetNumOptionsCntrlConfigScreens(void) break; case MENUPAGE_KEYBOARD_CONTROLS: switch (m_ControlMethod) { - case CONTROL_STANDART: + case CONTROL_STANDARD: number = 25; break; case CONTROL_CLASSIC: @@ -1200,7 +1200,7 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 int bindingMargin = MENU_X(3.0f); float rowHeight; switch (CMenuManager::m_ControlMethod) { - case CONTROL_STANDART: + case CONTROL_STANDARD: rowHeight = 10.7f; break; case CONTROL_CLASSIC: @@ -1274,13 +1274,13 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 controllerAction = PED_LOOKBEHIND; break; case 23: - if (CMenuManager::m_ControlMethod == CONTROL_STANDART) + if (CMenuManager::m_ControlMethod == CONTROL_STANDARD) controllerAction = -1; else controllerAction = PED_1RST_PERSON_LOOK_LEFT; break; case 24: - if (CMenuManager::m_ControlMethod == CONTROL_STANDART) + if (CMenuManager::m_ControlMethod == CONTROL_STANDARD) controllerAction = -1; else controllerAction = PED_1RST_PERSON_LOOK_RIGHT; From 4feb5f3f8c33a4bdaaf9c49930509d036df95a90 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Mon, 6 Apr 2020 19:52:24 +0300 Subject: [PATCH 010/112] Update README.md --- README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 3f98c9a5..ab5abc7e 100644 --- a/README.md +++ b/README.md @@ -42,19 +42,20 @@ cAudioManager - WIP CBoat CBrightLights CBulletInfo -CCrane -CCranes -CCullZone -CCullZones +CCollision - almost done +CCullZone - only mobile stuff +CCullZones - only mobile stuff CExplosion -CFallingGlassPane -CGlass +CFireLoader - almost done CMenuManager - WIP CMotionBlurStreaks CObject CPacManPickups +CPad - only cheats CPedPath +CPools - save/loading CRecordDataForChase +CRecordDataForGame CRoadBlocks CRubbish CSceneEdit @@ -65,6 +66,7 @@ CTrafficLights CWeapon CWeather CWorld +GeneralLoad ``` ### Coding style From 7342ca7af0600caf820f4157802a93770c946281 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Mon, 6 Apr 2020 19:54:49 +0300 Subject: [PATCH 011/112] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ab5abc7e..c956f1b6 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ CTrafficLights CWeapon CWeather CWorld -GeneralLoad +GenericLoad ``` ### Coding style From 3a8cbf393a46a3f25d83346da527974128ec2c4b Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Mon, 6 Apr 2020 19:55:20 +0300 Subject: [PATCH 012/112] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c956f1b6..d178f020 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ CCollision - almost done CCullZone - only mobile stuff CCullZones - only mobile stuff CExplosion -CFireLoader - almost done +CFileLoader - almost done CMenuManager - WIP CMotionBlurStreaks CObject From f192d7052e9f30f0ba773bf3b07652cd47544ab6 Mon Sep 17 00:00:00 2001 From: aap Date: Mon, 6 Apr 2020 20:32:44 +0200 Subject: [PATCH 013/112] finished CCollision --- README.md | 1 - src/core/Collision.cpp | 83 +++++++++++++++++++++++++++++++++++++++++- src/core/Collision.h | 1 - 3 files changed, 81 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d178f020..e1b1b340 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,6 @@ cAudioManager - WIP CBoat CBrightLights CBulletInfo -CCollision - almost done CCullZone - only mobile stuff CCullZones - only mobile stuff CExplosion diff --git a/src/core/Collision.cpp b/src/core/Collision.cpp index 94ef769e..c884f751 100644 --- a/src/core/Collision.cpp +++ b/src/core/Collision.cpp @@ -34,8 +34,6 @@ enum Direction eLevelName &CCollision::ms_collisionInMemory = *(eLevelName*)0x8F6250; CLinkList &CCollision::ms_colModelCache = *(CLinkList*)0x95CB58; -WRAPPER bool CCollision::IsStoredPolyStillValidVerticalLine(const CVector &pos, float z, CColPoint &point, CStoredCollPoly *poly) { EAXJMP(0x4105A0); } - void CCollision::Init(void) { @@ -926,6 +924,87 @@ CCollision::ProcessVerticalLineTriangle(const CColLine &line, return true; } +bool +CCollision::IsStoredPolyStillValidVerticalLine(const CVector &pos, float z, CColPoint &point, CStoredCollPoly *poly) +{ + float t; + + if(!poly->valid) + return false; + + // maybe inlined? + CColTriangle tri; + tri.a = 0; + tri.b = 1; + tri.c = 2; + CColTrianglePlane plane; + plane.Set(poly->verts, tri); + + const CVector &va = poly->verts[tri.a]; + const CVector &vb = poly->verts[tri.b]; + const CVector &vc = poly->verts[tri.c]; + CVector p0 = pos; + CVector p1(pos.x, pos.y, z); + + // The rest is pretty much CCollision::ProcessLineTriangle + + // if points are on the same side, no collision + if(plane.CalcPoint(p0) * plane.CalcPoint(p1) > 0.0f) + return poly->valid = false; + + // intersection parameter on line + t = -plane.CalcPoint(p0) / DotProduct(p1 - p0, plane.normal); + // find point of intersection + CVector p = p0 + (p1-p0)*t; + + CVector2D vec1, vec2, vec3, vect; + switch(plane.dir){ + case DIR_X_POS: + vec1.x = va.y; vec1.y = va.z; + vec2.x = vc.y; vec2.y = vc.z; + vec3.x = vb.y; vec3.y = vb.z; + vect.x = p.y; vect.y = p.z; + break; + case DIR_X_NEG: + vec1.x = va.y; vec1.y = va.z; + vec2.x = vb.y; vec2.y = vb.z; + vec3.x = vc.y; vec3.y = vc.z; + vect.x = p.y; vect.y = p.z; + break; + case DIR_Y_POS: + vec1.x = va.z; vec1.y = va.x; + vec2.x = vc.z; vec2.y = vc.x; + vec3.x = vb.z; vec3.y = vb.x; + vect.x = p.z; vect.y = p.x; + break; + case DIR_Y_NEG: + vec1.x = va.z; vec1.y = va.x; + vec2.x = vb.z; vec2.y = vb.x; + vec3.x = vc.z; vec3.y = vc.x; + vect.x = p.z; vect.y = p.x; + break; + case DIR_Z_POS: + vec1.x = va.x; vec1.y = va.y; + vec2.x = vc.x; vec2.y = vc.y; + vec3.x = vb.x; vec3.y = vb.y; + vect.x = p.x; vect.y = p.y; + break; + case DIR_Z_NEG: + vec1.x = va.x; vec1.y = va.y; + vec2.x = vb.x; vec2.y = vb.y; + vec3.x = vc.x; vec3.y = vc.y; + vect.x = p.x; vect.y = p.y; + break; + default: + assert(0); + } + if(CrossProduct2D(vec2-vec1, vect-vec1) < 0.0f) return poly->valid = false; + if(CrossProduct2D(vec3-vec1, vect-vec1) > 0.0f) return poly->valid = false; + if(CrossProduct2D(vec3-vec2, vect-vec2) < 0.0f) return poly->valid = false; + point.point = p; + return poly->valid = true; +} + bool CCollision::ProcessLineTriangle(const CColLine &line , const CVector *verts, const CColTriangle &tri, const CColTrianglePlane &plane, diff --git a/src/core/Collision.h b/src/core/Collision.h index 429fc17f..1cbd1690 100644 --- a/src/core/Collision.h +++ b/src/core/Collision.h @@ -144,7 +144,6 @@ public: static bool ProcessLineOfSight(const CColLine &line, const CMatrix &matrix, CColModel &model, CColPoint &point, float &mindist, bool ignoreSeeThrough); static bool ProcessVerticalLine(const CColLine &line, const CMatrix &matrix, CColModel &model, CColPoint &point, float &mindist, bool ignoreSeeThrough, CStoredCollPoly *poly); static int32 ProcessColModels(const CMatrix &matrixA, CColModel &modelA, const CMatrix &matrixB, CColModel &modelB, CColPoint *spherepoints, CColPoint *linepoints, float *linedists); - // TODO: static bool IsStoredPolyStillValidVerticalLine(const CVector &pos, float z, CColPoint &point, CStoredCollPoly *poly); static float DistToLine(const CVector *l0, const CVector *l1, const CVector *point); From 2100bdd5295d63359bb901a765ec7fdde0065ba2 Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 7 Apr 2020 01:19:24 +0200 Subject: [PATCH 014/112] implemented CRubbish --- README.md | 1 - src/render/Rubbish.cpp | 422 ++++++++++++++++++++++++++++++++++++++++- src/render/Rubbish.h | 39 +++- 3 files changed, 454 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index e1b1b340..5d81e0b2 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,6 @@ CPools - save/loading CRecordDataForChase CRecordDataForGame CRoadBlocks -CRubbish CSceneEdit CSkidmarks CSpecialFX diff --git a/src/render/Rubbish.cpp b/src/render/Rubbish.cpp index a52e59a0..65d8b2dd 100644 --- a/src/render/Rubbish.cpp +++ b/src/render/Rubbish.cpp @@ -1,10 +1,420 @@ #include "common.h" +#include "main.h" #include "patcher.h" +#include "General.h" +#include "Timer.h" +#include "Weather.h" +#include "Camera.h" +#include "World.h" +#include "Vehicle.h" +#include "ZoneCull.h" +#include "TxdStore.h" +#include "RenderBuffer.h" #include "Rubbish.h" -WRAPPER void CRubbish::Render(void) { EAXJMP(0x512190); } -WRAPPER void CRubbish::StirUp(CVehicle *veh) { EAXJMP(0x512690); } -WRAPPER void CRubbish::Update(void) { EAXJMP(0x511B90); } -WRAPPER void CRubbish::SetVisibility(bool) { EAXJMP(0x512AA0); } -WRAPPER void CRubbish::Init(void) { EAXJMP(0x511940); } -WRAPPER void CRubbish::Shutdown(void) { EAXJMP(0x511B50); } +#define RUBBISH_MAX_DIST (18.0f) +#define RUBBISH_FADE_DIST (16.5f) + +RwTexture *gpRubbishTexture[4]; +RwImVertexIndex RubbishIndexList[6]; +RwImVertexIndex RubbishIndexList2[6]; // unused +RwIm3DVertex RubbishVertices[4]; +bool CRubbish::bRubbishInvisible; +int CRubbish::RubbishVisibility; +COneSheet CRubbish::aSheets[NUM_RUBBISH_SHEETS]; +COneSheet CRubbish::StartEmptyList; +COneSheet CRubbish::EndEmptyList; +COneSheet CRubbish::StartStaticsList; +COneSheet CRubbish::EndStaticsList; +COneSheet CRubbish::StartMoversList; +COneSheet CRubbish::EndMoversList; + + +void +COneSheet::AddToList(COneSheet *list) +{ + this->m_next = list->m_next; + this->m_prev = list; + list->m_next = this; + this->m_next->m_prev = this; +} + +void +COneSheet::RemoveFromList(void) +{ + m_next->m_prev = m_prev; + m_prev->m_next = m_next; +} + + +void +CRubbish::Render(void) +{ + int type; + + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE); + + for(type = 0; type < 4; type++){ + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpRubbishTexture[type])); + + TempBufferIndicesStored = 0; + TempBufferVerticesStored = 0; + + COneSheet *sheet; + for(sheet = &aSheets[type*NUM_RUBBISH_SHEETS / 4]; + sheet < &aSheets[(type+1)*NUM_RUBBISH_SHEETS / 4]; + sheet++){ + if(sheet->m_state == 0) + continue; + + uint32 alpha = 128; + CVector pos; + if(sheet->m_state == 1){ + pos = sheet->m_basePos; + if(!sheet->m_isVisible) + alpha = 0; + }else{ + pos = sheet->m_animatedPos; + // Not fully visible during animation, calculate current alpha + if(!sheet->m_isVisible || !sheet->m_targetIsVisible){ + float t = (float)(CTimer::GetTimeInMilliseconds() - sheet->m_moveStart)/sheet->m_moveDuration; + float f1 = sheet->m_isVisible ? 1.0f-t : 0.0f; + float f2 = sheet->m_targetIsVisible ? t : 0.0f; + alpha = 128 * (f1+f2); + } + } + + float camDist = (pos - TheCamera.GetPosition()).Magnitude2D(); + if(camDist < RUBBISH_MAX_DIST){ + if(camDist >= RUBBISH_FADE_DIST) + alpha -= alpha*(camDist-RUBBISH_FADE_DIST)/(RUBBISH_MAX_DIST-RUBBISH_FADE_DIST); + alpha = (RubbishVisibility*alpha)/256; + + float vx = Sin(sheet->m_angle) * 0.4f; + float vy = Cos(sheet->m_angle) * 0.4f; + + int v = TempBufferVerticesStored; + RwIm3DVertexSetPos(&TempBufferRenderVertices[v+0], pos.x + vx, pos.y + vy, pos.z); + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[v+0], 255, 255, 255, alpha); + RwIm3DVertexSetPos(&TempBufferRenderVertices[v+1], pos.x - vy, pos.y + vx, pos.z); + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[v+1], 255, 255, 255, alpha); + RwIm3DVertexSetPos(&TempBufferRenderVertices[v+2], pos.x + vy, pos.y - vx, pos.z); + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[v+2], 255, 255, 255, alpha); + RwIm3DVertexSetPos(&TempBufferRenderVertices[v+3], pos.x - vx, pos.y - vy, pos.z); + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[v+3], 255, 255, 255, alpha); + RwIm3DVertexSetU(&TempBufferRenderVertices[v+0], 0.0f); + RwIm3DVertexSetV(&TempBufferRenderVertices[v+0], 0.0f); + RwIm3DVertexSetU(&TempBufferRenderVertices[v+1], 1.0f); + RwIm3DVertexSetV(&TempBufferRenderVertices[v+1], 0.0f); + RwIm3DVertexSetU(&TempBufferRenderVertices[v+2], 0.0f); + RwIm3DVertexSetV(&TempBufferRenderVertices[v+2], 1.0f); + RwIm3DVertexSetU(&TempBufferRenderVertices[v+3], 1.0f); + RwIm3DVertexSetV(&TempBufferRenderVertices[v+3], 1.0f); + + int i = TempBufferIndicesStored; + TempBufferRenderIndexList[i+0] = RubbishIndexList[0] + TempBufferVerticesStored; + TempBufferRenderIndexList[i+1] = RubbishIndexList[1] + TempBufferVerticesStored; + TempBufferRenderIndexList[i+2] = RubbishIndexList[2] + TempBufferVerticesStored; + TempBufferRenderIndexList[i+3] = RubbishIndexList[3] + TempBufferVerticesStored; + TempBufferRenderIndexList[i+4] = RubbishIndexList[4] + TempBufferVerticesStored; + TempBufferRenderIndexList[i+5] = RubbishIndexList[5] + TempBufferVerticesStored; + TempBufferVerticesStored += 4; + TempBufferIndicesStored += 6; + } + } + + if(TempBufferIndicesStored != 0){ + LittleTest(); + if(RwIm3DTransform(TempBufferRenderVertices, TempBufferVerticesStored, nil, rwIM3D_VERTEXUV)){ + RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, TempBufferRenderIndexList, TempBufferIndicesStored); + RwIm3DEnd(); + } + } + } + + RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); +} + +void +CRubbish::StirUp(CVehicle *veh) +{ + if((CTimer::GetFrameCounter() ^ (veh->m_randomSeed&3)) == 0) + return; + + if(Abs(veh->GetPosition().x - TheCamera.GetPosition().x) < 20.0f && + Abs(veh->GetPosition().y - TheCamera.GetPosition().y) < 20.0f) + if(Abs(veh->GetMoveSpeed().x) > 0.05f || Abs(veh->GetMoveSpeed().y) > 0.05f){ + float speed = veh->GetMoveSpeed().Magnitude2D(); + if(speed > 0.05f){ + bool movingForward = DotProduct2D(veh->GetMoveSpeed(), veh->GetForward()) > 0.0f; + COneSheet *sheet = StartStaticsList.m_next; + CVector2D size = veh->GetColModel()->boundingBox.max; + + // Check all static sheets + while(sheet != &EndStaticsList){ + COneSheet *next = sheet->m_next; + CVector2D carToSheet = sheet->m_basePos - veh->GetPosition(); + float distFwd = DotProduct2D(carToSheet, veh->GetForward()); + + // sheet has to be a bit behind car + if(movingForward && distFwd < -0.5f*size.y && distFwd > -1.5f*size.y || + !movingForward && distFwd > 0.5f*size.y && distFwd < 1.5f*size.y){ + float distSide = Abs(DotProduct2D(carToSheet, veh->GetRight())); + if(distSide < 1.5*size.x){ + // Check with higher speed for sheet directly behind car + float speedToCheck = distSide < size.x ? speed : speed*0.5f; + if(speedToCheck > 0.05f){ + sheet->m_state = 2; + if(speedToCheck > 0.15f) + sheet->m_animationType = 2; + else + sheet->m_animationType = 1; + sheet->m_moveDuration = 2000; + sheet->m_xDist = veh->GetMoveSpeed().x; + sheet->m_yDist = veh->GetMoveSpeed().y; + float dist = Sqrt(SQR(sheet->m_xDist)+SQR(sheet->m_yDist)); + sheet->m_xDist *= 25.0f*speed/dist; + sheet->m_yDist *= 25.0f*speed/dist; + sheet->m_animHeight = 3.0f*speed; + sheet->m_moveStart = CTimer::GetTimeInMilliseconds(); + float tx = sheet->m_basePos.x + sheet->m_xDist; + float ty = sheet->m_basePos.y + sheet->m_yDist; + float tz = sheet->m_basePos.z + 3.0f; + sheet->m_targetZ = CWorld::FindGroundZFor3DCoord(tx, ty, tz, nil) + 0.1f; + sheet->RemoveFromList(); + sheet->AddToList(&StartMoversList); + } + } + } + + sheet = next; + } + } + } +} + +static float aAnimations[3][34] = { + { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }, + + // Normal move + { 0.0f, 0.05f, 0.12f, 0.25f, 0.42f, 0.57f, 0.68f, 0.8f, 0.86f, 0.9f, 0.93f, 0.95f, 0.96f, 0.97f, 0.98f, 0.99f, 1.0f, // XY movemnt + 0.15f, 0.35f, 0.6f, 0.9f, 1.2f, 1.25f, 1.3f, 1.2f, 1.1f, 0.95f, 0.8f, 0.6f, 0.45f, 0.3f, 0.2f, 0.1f, 0 }, // Z movement + + // Stirred up by fast vehicle + { 0.0f, 0.05f, 0.12f, 0.25f, 0.42f, 0.57f, 0.68f, 0.8f, 0.95f, 1.1f, 1.15f, 1.18f, 1.15f, 1.1f, 1.05f, 1.03f, 1.0f, + 0.15f, 0.35f, 0.6f, 0.9f, 1.2f, 1.25f, 1.3f, 1.2f, 1.1f, 0.95f, 0.8f, 0.6f, 0.45f, 0.3f, 0.2f, 0.1f, 0 } +}; + +void +CRubbish::Update(void) +{ + bool foundGround; + + // FRAMETIME + if(bRubbishInvisible) + RubbishVisibility = max(RubbishVisibility-5, 0); + else + RubbishVisibility = min(RubbishVisibility+5, 255); + + // Spawn a new sheet + COneSheet *sheet = StartEmptyList.m_next; + if(sheet != &EndEmptyList){ + float spawnDist; + float spawnAngle; + + spawnDist = (CGeneral::GetRandomNumber()&0xFF)/256.0f + RUBBISH_MAX_DIST; + uint8 r = CGeneral::GetRandomNumber(); + if(r&1) + spawnAngle = (CGeneral::GetRandomNumber()&0xFF)/256.0f * 6.28f; + else + spawnAngle = (r-128)/160.0f + TheCamera.Orientation; + sheet->m_basePos.x = TheCamera.GetPosition().x + spawnDist*Sin(spawnAngle); + sheet->m_basePos.y = TheCamera.GetPosition().y + spawnDist*Cos(spawnAngle); + sheet->m_basePos.z = CWorld::FindGroundZFor3DCoord(sheet->m_basePos.x, sheet->m_basePos.y, TheCamera.GetPosition().z, &foundGround) + 0.1f; + if(foundGround){ + // Found ground, so add to statics list + sheet->m_angle = (CGeneral::GetRandomNumber()&0xFF)/256.0f * 6.28f; + sheet->m_state = 1; + if(CCullZones::FindAttributesForCoors(sheet->m_basePos, nil) & ATTRZONE_NORAIN) + sheet->m_isVisible = false; + else + sheet->m_isVisible = true; + sheet->RemoveFromList(); + sheet->AddToList(&StartStaticsList); + } + } + + // Process animation + sheet = StartMoversList.m_next; + while(sheet != &EndMoversList){ + uint32 currentTime = CTimer::GetTimeInMilliseconds() - sheet->m_moveStart; + if(currentTime < sheet->m_moveDuration){ + // Animation + int step = 16 * currentTime / sheet->m_moveDuration; // 16 steps in animation + int stepTime = sheet->m_moveDuration/16; // time in each step + float s = (float)(currentTime - stepTime*step) / stepTime; // position on step + float t = (float)currentTime / sheet->m_moveDuration; // position on total animation + // factors for xy and z-movment + float fxy = aAnimations[sheet->m_animationType][step]*(1.0f-s) + aAnimations[sheet->m_animationType][step+1]*s; + float fz = aAnimations[sheet->m_animationType][step+17]*(1.0f-s) + aAnimations[sheet->m_animationType][step+1+17]*s; + sheet->m_animatedPos.x = sheet->m_basePos.x + fxy*sheet->m_xDist; + sheet->m_animatedPos.y = sheet->m_basePos.y + fxy*sheet->m_yDist; + sheet->m_animatedPos.z = (1.0f-t)*sheet->m_basePos.z + t*sheet->m_targetZ + fz*sheet->m_animHeight; + sheet->m_angle += CTimer::GetTimeStep()*0.04f; + if(sheet->m_angle > 6.28f) + sheet->m_angle -= 6.28f; + sheet = sheet->m_next; + }else{ + // End of animation, back into statics list + sheet->m_basePos.x += sheet->m_xDist; + sheet->m_basePos.y += sheet->m_yDist; + sheet->m_basePos.z = sheet->m_targetZ; + sheet->m_state = 1; + sheet->m_isVisible = sheet->m_targetIsVisible; + + COneSheet *next = sheet->m_next; + sheet->RemoveFromList(); + sheet->AddToList(&StartStaticsList); + sheet = next; + } + } + + // Stir up a sheet by wind + // FRAMETIME + int freq; + if(CWeather::Wind < 0.1f) + freq = 31; + else if(CWeather::Wind < 0.4f) + freq = 7; + else if(CWeather::Wind < 0.7f) + freq = 1; + else + freq = 0; + if((CTimer::GetFrameCounter() & freq) == 0){ + // Pick a random sheet and set animation state if static + int i = CGeneral::GetRandomNumber() % NUM_RUBBISH_SHEETS; + if(aSheets[i].m_state == 1){ + aSheets[i].m_moveStart = CTimer::GetTimeInMilliseconds(); + aSheets[i].m_moveDuration = CWeather::Wind*1500.0f + 1000.0f; + aSheets[i].m_animHeight = 0.2f; + aSheets[i].m_xDist = 3.0f*CWeather::Wind; + aSheets[i].m_yDist = 3.0f*CWeather::Wind; + // Check if target position is ok + float tx = aSheets[i].m_basePos.x + aSheets[i].m_xDist; + float ty = aSheets[i].m_basePos.y + aSheets[i].m_yDist; + float tz = aSheets[i].m_basePos.z + 3.0f; + aSheets[i].m_targetZ = CWorld::FindGroundZFor3DCoord(tx, ty, tz, &foundGround) + 0.1f; + if(CCullZones::FindAttributesForCoors(CVector(tx, ty, aSheets[i].m_targetZ), nil) & ATTRZONE_NORAIN) + aSheets[i].m_targetIsVisible = false; + else + aSheets[i].m_targetIsVisible = true; + if(foundGround){ + // start animation + aSheets[i].m_state = 2; + aSheets[i].m_animationType = 1; + aSheets[i].RemoveFromList(); + aSheets[i].AddToList(&StartMoversList); + } + } + } + + // Remove sheets that are too far away + int i = (CTimer::GetFrameCounter()%(NUM_RUBBISH_SHEETS/4))*4; + int last = ((CTimer::GetFrameCounter()%(NUM_RUBBISH_SHEETS/4)) + 1)*4; + for(; i < last; i++){ + if(aSheets[i].m_state == 1 && + (aSheets[i].m_basePos - TheCamera.GetPosition()).MagnitudeSqr2D() > SQR(RUBBISH_MAX_DIST+1.0f)){ + aSheets[i].m_state = 0; + aSheets[i].RemoveFromList(); + aSheets[i].AddToList(&StartEmptyList); + } + } +} + +void +CRubbish::SetVisibility(bool visible) +{ + bRubbishInvisible = !visible; +} + +void +CRubbish::Init(void) +{ + int i; + for(i = 0; i < NUM_RUBBISH_SHEETS; i++){ + aSheets[i].m_state = 0; + if(i < NUM_RUBBISH_SHEETS-1) + aSheets[i].m_next = &aSheets[i+1]; + else + aSheets[i].m_next = &EndEmptyList; + if(i > 0) + aSheets[i].m_prev = &aSheets[i-1]; + else + aSheets[i].m_prev = &StartEmptyList; + } + + StartEmptyList.m_next = &aSheets[0]; + StartEmptyList.m_prev = nil; + EndEmptyList.m_next = nil; + EndEmptyList.m_prev = &aSheets[NUM_RUBBISH_SHEETS-1]; + + StartStaticsList.m_next = &EndStaticsList; + StartStaticsList.m_prev = nil; + EndStaticsList.m_next = nil; + EndStaticsList.m_prev = &StartStaticsList; + + StartMoversList.m_next = &EndMoversList; + StartMoversList.m_prev = nil; + EndMoversList.m_next = nil; + EndMoversList.m_prev = &StartMoversList; + + // unused + RwIm3DVertexSetU(&RubbishVertices[0], 0.0f); + RwIm3DVertexSetV(&RubbishVertices[0], 0.0f); + RwIm3DVertexSetU(&RubbishVertices[1], 1.0f); + RwIm3DVertexSetV(&RubbishVertices[1], 0.0f); + RwIm3DVertexSetU(&RubbishVertices[2], 0.0f); + RwIm3DVertexSetV(&RubbishVertices[2], 1.0f); + RwIm3DVertexSetU(&RubbishVertices[3], 1.0f); + RwIm3DVertexSetV(&RubbishVertices[3], 1.0f); + + // unused + RubbishIndexList2[0] = 0; + RubbishIndexList2[1] = 2; + RubbishIndexList2[2] = 1; + RubbishIndexList2[3] = 1; + RubbishIndexList2[4] = 2; + RubbishIndexList2[5] = 3; + + RubbishIndexList[0] = 0; + RubbishIndexList[1] = 1; + RubbishIndexList[2] = 2; + RubbishIndexList[3] = 1; + RubbishIndexList[4] = 3; + RubbishIndexList[5] = 2; + + CTxdStore::PushCurrentTxd(); + int slot = CTxdStore::FindTxdSlot("particle"); + CTxdStore::SetCurrentTxd(slot); + gpRubbishTexture[0] = RwTextureRead("gameleaf01_64", nil); + gpRubbishTexture[1] = RwTextureRead("gameleaf02_64", nil); + gpRubbishTexture[2] = RwTextureRead("newspaper01_64", nil); + gpRubbishTexture[3] = RwTextureRead("newspaper02_64", nil); + CTxdStore::PopCurrentTxd(); + RubbishVisibility = 255; + bRubbishInvisible = false; +} + +void +CRubbish::Shutdown(void) +{ + RwTextureDestroy(gpRubbishTexture[0]); + RwTextureDestroy(gpRubbishTexture[1]); + RwTextureDestroy(gpRubbishTexture[2]); + RwTextureDestroy(gpRubbishTexture[3]); +} diff --git a/src/render/Rubbish.h b/src/render/Rubbish.h index 17323694..2be592fe 100644 --- a/src/render/Rubbish.h +++ b/src/render/Rubbish.h @@ -2,13 +2,50 @@ class CVehicle; +enum { + // NB: not all values are allowed, check the code + NUM_RUBBISH_SHEETS = 64 +}; + +class COneSheet +{ +public: + CVector m_basePos; + CVector m_animatedPos; + float m_targetZ; + int8 m_state; + int8 m_animationType; + uint32 m_moveStart; + uint32 m_moveDuration; + float m_animHeight; + float m_xDist; + float m_yDist; + float m_angle; + bool m_isVisible; + bool m_targetIsVisible; + COneSheet *m_next; + COneSheet *m_prev; + + void AddToList(COneSheet *list); + void RemoveFromList(void); +}; + class CRubbish { + static bool bRubbishInvisible; + static int RubbishVisibility; + static COneSheet aSheets[NUM_RUBBISH_SHEETS]; + static COneSheet StartEmptyList; + static COneSheet EndEmptyList; + static COneSheet StartStaticsList; + static COneSheet EndStaticsList; + static COneSheet StartMoversList; + static COneSheet EndMoversList; public: static void Render(void); static void StirUp(CVehicle *veh); // CAutomobile on PS2 static void Update(void); - static void SetVisibility(bool); + static void SetVisibility(bool visible); static void Init(void); static void Shutdown(void); }; From 1207c2ce6face0d9f00666196b85739e7783f8d8 Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 7 Apr 2020 12:33:14 +0200 Subject: [PATCH 015/112] implemented CShinyTexts --- src/core/config.h | 1 + src/render/Shadows.h | 11 ++- src/render/SpecialFX.cpp | 158 ++++++++++++++++++++++++++++++++++++++- src/render/SpecialFX.h | 141 ++++++++++++++++++++-------------- 4 files changed, 251 insertions(+), 60 deletions(-) diff --git a/src/core/config.h b/src/core/config.h index d813a1f2..2422ab13 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -73,6 +73,7 @@ enum Config { NUMCORONAS = 56, NUMPOINTLIGHTS = 32, NUM3DMARKERS = 32, + NUMSHINYTEXTS = 32, NUMMONEYMESSAGES = 16, NUMPICKUPMESSAGES = 16, NUMBULLETTRACES = 16, diff --git a/src/render/Shadows.h b/src/render/Shadows.h index 982cc463..fb41ebbc 100644 --- a/src/render/Shadows.h +++ b/src/render/Shadows.h @@ -175,11 +175,18 @@ public: static void RenderIndicatorShadow (uint32 nID, uint8 ShadowType, RwTexture *pTexture, CVector *pPosn, float fFrontX, float fFrontY, float fSideX, float fSideY, int16 nIntensity); }; -extern RwTexture *&gpBloodPoolTex; +extern RwTexture *&gpShadowCarTex; +extern RwTexture *&gpShadowPedTex; +extern RwTexture *&gpShadowHeliTex; extern RwTexture *&gpShadowExplosionTex; extern RwTexture *&gpShadowHeadLightsTex; -extern RwTexture *&gpGoalTex; extern RwTexture *&gpOutline1Tex; extern RwTexture *&gpOutline2Tex; extern RwTexture *&gpOutline3Tex; +extern RwTexture *&gpBloodPoolTex; +extern RwTexture *&gpReflectionTex; +extern RwTexture *&gpGoalMarkerTex; +extern RwTexture *&gpWalkDontTex; extern RwTexture *&gpCrackedGlassTex; +extern RwTexture *&gpPostShadowTex; +extern RwTexture *&gpGoalTex; diff --git a/src/render/SpecialFX.cpp b/src/render/SpecialFX.cpp index 301ae265..71fca3ba 100644 --- a/src/render/SpecialFX.cpp +++ b/src/render/SpecialFX.cpp @@ -1,6 +1,7 @@ #include "common.h" #include "patcher.h" #include "SpecialFX.h" +#include "RenderBuffer.h" #include "Timer.h" #include "Sprite.h" #include "Font.h" @@ -12,6 +13,7 @@ #include "VisibilityPlugins.h" #include "World.h" #include "Particle.h" +#include "Shadows.h" #include "General.h" #include "Camera.h" #include "Shadows.h" @@ -26,7 +28,7 @@ WRAPPER void CMotionBlurStreaks::RegisterStreak(int32 id, uint8 r, uint8 g, uint CBulletTrace (&CBulletTraces::aTraces)[NUMBULLETTRACES] = *(CBulletTrace(*)[NUMBULLETTRACES])*(uintptr*)0x72B1B8; -RxObjSpace3DVertex (&TraceVertices)[6] = *(RxObjSpace3DVertex(*)[6])*(uintptr*)0x649884; +RxObjSpace3DVertex (&TraceVertices)[6] = *(RxObjSpace3DVertex(*)[6])*(uintptr*)0x649884; RwImVertexIndex (&TraceIndexList)[12] = *(RwImVertexIndex(*)[12])*(uintptr*)0x64986C; void CBulletTraces::Init(void) @@ -81,8 +83,8 @@ void CBulletTraces::Render(void) RwIm3DEnd(); } } - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)1); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)5); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)1); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)5); RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)6); } @@ -402,6 +404,151 @@ C3dMarkers::Update() { } + +int CShinyTexts::NumShinyTexts; +CShinyText CShinyTexts::aShinyTexts[NUMSHINYTEXTS]; + +void +CShinyTexts::Init(void) +{ + NumShinyTexts = 0; +} + +void +CShinyTexts::RegisterOne(CVector p0, CVector p1, CVector p2, CVector p3, + float u0, float v0, float u1, float v1, float u2, float v2, float u3, float v3, + uint8 type, uint8 red, uint8 green, uint8 blue, float maxDist) +{ + if(NumShinyTexts >= NUMSHINYTEXTS) + return; + + aShinyTexts[NumShinyTexts].m_camDist = (p0 - TheCamera.GetPosition()).Magnitude(); + if(aShinyTexts[NumShinyTexts].m_camDist > maxDist) + return; + aShinyTexts[NumShinyTexts].m_verts[0] = p0; + aShinyTexts[NumShinyTexts].m_verts[1] = p1; + aShinyTexts[NumShinyTexts].m_verts[2] = p2; + aShinyTexts[NumShinyTexts].m_verts[3] = p3; + aShinyTexts[NumShinyTexts].m_texCoords[0].x = u0; + aShinyTexts[NumShinyTexts].m_texCoords[0].y = v0; + aShinyTexts[NumShinyTexts].m_texCoords[1].x = u1; + aShinyTexts[NumShinyTexts].m_texCoords[1].y = v1; + aShinyTexts[NumShinyTexts].m_texCoords[2].x = u2; + aShinyTexts[NumShinyTexts].m_texCoords[2].y = v2; + aShinyTexts[NumShinyTexts].m_texCoords[3].x = u3; + aShinyTexts[NumShinyTexts].m_texCoords[3].y = v3; + aShinyTexts[NumShinyTexts].m_type = type; + aShinyTexts[NumShinyTexts].m_red = red; + aShinyTexts[NumShinyTexts].m_green = green; + aShinyTexts[NumShinyTexts].m_blue = blue; + // Fade out at half the max dist + float halfDist = maxDist*0.5f; + if(aShinyTexts[NumShinyTexts].m_camDist > halfDist){ + float f = 1.0f - (aShinyTexts[NumShinyTexts].m_camDist - halfDist)/halfDist; + aShinyTexts[NumShinyTexts].m_red *= f; + aShinyTexts[NumShinyTexts].m_green *= f; + aShinyTexts[NumShinyTexts].m_blue *= f; + } + + NumShinyTexts++; +} + +void +CShinyTexts::Render(void) +{ + int i, ix, v; + RwTexture *lastTex = nil; + + if(NumShinyTexts == 0) + return; + + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDONE); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDONE); + + TempBufferVerticesStored = 0; + TempBufferIndicesStored = 0; + + for(i = 0; i < NumShinyTexts; i++){ + if(TempBufferIndicesStored > TEMPBUFFERINDEXSIZE-64 || TempBufferVerticesStored > TEMPBUFFERVERTSIZE-62) + RenderOutGeometryBuffer(); + + uint8 r = aShinyTexts[i].m_red; + uint8 g = aShinyTexts[i].m_green; + uint8 b = aShinyTexts[i].m_blue; + + switch(aShinyTexts[i].m_type){ + case SHINYTEXT_WALK: + if(lastTex != gpWalkDontTex){ + RenderOutGeometryBuffer(); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpWalkDontTex)); + lastTex = gpWalkDontTex; + } + quad: + v = TempBufferVerticesStored; + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[v+0], r, g, b, 255); + RwIm3DVertexSetPos(&TempBufferRenderVertices[v+0], aShinyTexts[i].m_verts[0].x, aShinyTexts[i].m_verts[0].y, aShinyTexts[i].m_verts[0].z); + RwIm3DVertexSetU(&TempBufferRenderVertices[v+0], aShinyTexts[i].m_texCoords[0].x); + RwIm3DVertexSetV(&TempBufferRenderVertices[v+0], aShinyTexts[i].m_texCoords[0].y); + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[v+1], r, g, b, 255); + RwIm3DVertexSetPos(&TempBufferRenderVertices[v+1], aShinyTexts[i].m_verts[1].x, aShinyTexts[i].m_verts[1].y, aShinyTexts[i].m_verts[1].z); + RwIm3DVertexSetU(&TempBufferRenderVertices[v+1], aShinyTexts[i].m_texCoords[1].x); + RwIm3DVertexSetV(&TempBufferRenderVertices[v+1], aShinyTexts[i].m_texCoords[1].y); + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[v+2], r, g, b, 255); + RwIm3DVertexSetPos(&TempBufferRenderVertices[v+2], aShinyTexts[i].m_verts[2].x, aShinyTexts[i].m_verts[2].y, aShinyTexts[i].m_verts[2].z); + RwIm3DVertexSetU(&TempBufferRenderVertices[v+2], aShinyTexts[i].m_texCoords[2].x); + RwIm3DVertexSetV(&TempBufferRenderVertices[v+2], aShinyTexts[i].m_texCoords[2].y); + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[v+3], r, g, b, 255); + RwIm3DVertexSetPos(&TempBufferRenderVertices[v+3], aShinyTexts[i].m_verts[3].x, aShinyTexts[i].m_verts[3].y, aShinyTexts[i].m_verts[3].z); + RwIm3DVertexSetU(&TempBufferRenderVertices[v+3], aShinyTexts[i].m_texCoords[3].x); + RwIm3DVertexSetV(&TempBufferRenderVertices[v+3], aShinyTexts[i].m_texCoords[3].y); + ix = TempBufferIndicesStored; + TempBufferRenderIndexList[ix+0] = 0 + TempBufferVerticesStored; + TempBufferRenderIndexList[ix+1] = 1 + TempBufferVerticesStored; + TempBufferRenderIndexList[ix+2] = 2 + TempBufferVerticesStored; + TempBufferRenderIndexList[ix+3] = 2 + TempBufferVerticesStored; + TempBufferRenderIndexList[ix+4] = 1 + TempBufferVerticesStored; + TempBufferRenderIndexList[ix+5] = 3 + TempBufferVerticesStored; + TempBufferVerticesStored += 4; + TempBufferIndicesStored += 6; + break; + + case SHINYTEXT_FLAT: + if(lastTex != nil){ + RenderOutGeometryBuffer(); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, nil); + lastTex = nil; + } + goto quad; + } + } + + RenderOutGeometryBuffer(); + NumShinyTexts = 0; + + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); +} + +void +CShinyTexts::RenderOutGeometryBuffer(void) +{ + if(TempBufferIndicesStored != 0){ + LittleTest(); + if(RwIm3DTransform(TempBufferRenderVertices, TempBufferVerticesStored, nil, rwIM3D_VERTEXUV)){ + RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, TempBufferRenderIndexList, TempBufferIndicesStored); + RwIm3DEnd(); + } + TempBufferVerticesStored = 0; + TempBufferIndicesStored = 0; + } +} + + + #define MONEY_MESSAGE_LIFETIME_MS 2000 CMoneyMessage CMoneyMessages::aMoneyMessages[NUMMONEYMESSAGES]; @@ -564,6 +711,11 @@ STARTPATCHES InjectHook(0x51B400, C3dMarkers::Render, PATCH_JUMP); InjectHook(0x51B3B0, C3dMarkers::Shutdown, PATCH_JUMP); + InjectHook(0x51A5A0, CShinyTexts::Init, PATCH_JUMP); + InjectHook(0x51AAB0, CShinyTexts::RegisterOne, PATCH_JUMP); + InjectHook(0x51A5B0, CShinyTexts::Render, PATCH_JUMP); + InjectHook(0x51AA50, CShinyTexts::RenderOutGeometryBuffer, PATCH_JUMP); + InjectHook(0x51AF70, CMoneyMessages::Init, PATCH_JUMP); InjectHook(0x51B030, CMoneyMessages::Render, PATCH_JUMP); ENDPATCHES diff --git a/src/render/SpecialFX.h b/src/render/SpecialFX.h index fc155a53..22ee502e 100644 --- a/src/render/SpecialFX.h +++ b/src/render/SpecialFX.h @@ -57,27 +57,27 @@ enum class C3dMarker -{ -public: - CMatrix m_Matrix; - RpAtomic *m_pAtomic; - RpMaterial *m_pMaterial; - uint16 m_nType; - bool m_bIsUsed; - uint32 m_nIdentifier; - RwRGBA m_Color; - uint16 m_nPulsePeriod; - int16 m_nRotateRate; - uint32 m_nStartTime; - float m_fPulseFraction; - float m_fStdSize; - float m_fSize; - float m_fBrightness; - float m_fCameraRange; - - bool AddMarker(uint32 identifier, uint16 type, float fSize, uint8 r, uint8 g, uint8 b, uint8 a, uint16 pulsePeriod, float pulseFraction, int16 rotateRate); - void DeleteMarkerObject(); - void Render(); +{ +public: + CMatrix m_Matrix; + RpAtomic *m_pAtomic; + RpMaterial *m_pMaterial; + uint16 m_nType; + bool m_bIsUsed; + uint32 m_nIdentifier; + RwRGBA m_Color; + uint16 m_nPulsePeriod; + int16 m_nRotateRate; + uint32 m_nStartTime; + float m_fPulseFraction; + float m_fStdSize; + float m_fSize; + float m_fBrightness; + float m_fCameraRange; + + bool AddMarker(uint32 identifier, uint16 type, float fSize, uint8 r, uint8 g, uint8 b, uint8 a, uint16 pulsePeriod, float pulseFraction, int16 rotateRate); + void DeleteMarkerObject(); + void Render(); }; class C3dMarkers @@ -87,42 +87,73 @@ public: static void Shutdown(); static C3dMarker *PlaceMarker(uint32 id, uint16 type, CVector &pos, float size, uint8 r, uint8 g, uint8 b, uint8 a, uint16 pulsePeriod, float pulseFraction, int16 rotateRate); static void PlaceMarkerSet(uint32 id, uint16 type, CVector &pos, float size, uint8 r, uint8 g, uint8 b, uint8 a, uint16 pulsePeriod, float pulseFraction, int16 rotateRate); - static void Render(); + static void Render(); static void Update(); static C3dMarker(&m_aMarkerArray)[NUM3DMARKERS]; static int32 &NumActiveMarkers; static RpClump* (&m_pRpClumpArray)[NUMMARKERTYPES]; -}; - -class CMoneyMessage -{ - friend class CMoneyMessages; - - uint32 m_nTimeRegistered; - CVector m_vecPosition; - wchar m_aText[16]; - CRGBA m_Colour; - float m_fSize; - float m_fOpacity; -public: - void Render(); -}; - -class CMoneyMessages -{ - static CMoneyMessage aMoneyMessages[NUMMONEYMESSAGES]; -public: - static void Init(); - static void Render(); - static void RegisterOne(CVector vecPos, const char *pText, uint8 bRed, uint8 bGreen, uint8 bBlue, float fSize, float fOpacity); -}; - -class CSpecialParticleStuff -{ - static uint32 BoatFromStart; -public: - static void CreateFoamAroundObject(CMatrix*, float, float, float, int32); - static void StartBoatFoamAnimation(); - static void UpdateBoatFoamAnimation(CMatrix*); -}; +}; + +enum +{ + SHINYTEXT_WALK = 1, + SHINYTEXT_FLAT +}; + +class CShinyText +{ +public: + CVector m_verts[4]; + CVector2D m_texCoords[4]; + float m_camDist; + uint8 m_type; + uint8 m_red; + uint8 m_green; + uint8 m_blue; +}; + +class CShinyTexts +{ + static int NumShinyTexts; + static CShinyText aShinyTexts[NUMSHINYTEXTS]; +public: + static void Init(void); + static void RegisterOne(CVector p0, CVector p1, CVector p2, CVector p3, + float u0, float v0, float u1, float v1, float u2, float v2, float u3, float v3, + uint8 type, uint8 red, uint8 green, uint8 blue, float maxDist); + static void Render(void); + static void RenderOutGeometryBuffer(void); +}; + +class CMoneyMessage +{ + friend class CMoneyMessages; + + uint32 m_nTimeRegistered; + CVector m_vecPosition; + wchar m_aText[16]; + CRGBA m_Colour; + float m_fSize; + float m_fOpacity; +public: + void Render(); +}; + +class CMoneyMessages +{ + static CMoneyMessage aMoneyMessages[NUMMONEYMESSAGES]; +public: + static void Init(); + static void Render(); + static void RegisterOne(CVector vecPos, const char *pText, uint8 bRed, uint8 bGreen, uint8 bBlue, float fSize, float fOpacity); +}; + +class CSpecialParticleStuff +{ + static uint32 BoatFromStart; +public: + static void CreateFoamAroundObject(CMatrix*, float, float, float, int32); + static void StartBoatFoamAnimation(); + static void UpdateBoatFoamAnimation(CMatrix*); +}; From bf2316bd546ff33fdd3ac164b1c47fa9eb9a4f25 Mon Sep 17 00:00:00 2001 From: Filip Gawin Date: Tue, 7 Apr 2020 15:44:31 +0200 Subject: [PATCH 016/112] Cleanup audiocode and fix for ComputeDopplerEffectedFrequency --- src/audio/AudioCollision.cpp | 18 +- src/audio/AudioManager.cpp | 1195 +++++++++++++++++----------------- src/audio/AudioManager.h | 46 +- src/audio/PoliceRadio.cpp | 8 +- 4 files changed, 637 insertions(+), 630 deletions(-) diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp index 850fafda..608b1a8d 100644 --- a/src/audio/AudioCollision.cpp +++ b/src/audio/AudioCollision.cpp @@ -154,18 +154,18 @@ cAudioManager::SetUpLoopingCollisionSound(cAudioCollision *col, uint8 counter) m_sQueueSample.m_counter = counter; m_sQueueSample.m_vecPos = col->m_vecPosition; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 7; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 7; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 4.0f; + m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 5; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -274,15 +274,15 @@ cAudioManager::SetUpOneShotCollisionSound(cAudioCollision *col) if(counter >= 255) counter = 28; m_sQueueSample.m_vecPos = col->m_vecPosition; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 11; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 11; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.field_48 = 4.0f; + m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 6df5fd19..eca74350 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -178,37 +178,48 @@ enum eVehicleModel { CAR159, }; +enum PLAY_STATUS : uint8 { + PLAY_STATUS_STOPPED = 0, + PLAY_STATUS_PLAYING = 1, + PLAY_STATUS_FINISHED = 2 +}; + +enum LOADING_STATUS : uint8 { + LOADING_STATUS_NOT_LOADED = 0, + LOADING_STATUS_LOADED = 1 +}; + void cPedComments::Add(tPedComment *com) { uint8 index; - if(nrOfCommentsInBank[activeBank] >= NUM_PED_COMMENTS_SLOTS) { - index = indexMap[activeBank][NUM_PED_COMMENTS_SLOTS - 1]; - if(m_asPedComments[activeBank][index].m_bVolume > com->m_bVolume) return; + if(m_nCommentsInBank[m_nActiveBank] >= NUM_PED_COMMENTS_SLOTS) { + index = m_nIndexMap[m_nActiveBank][NUM_PED_COMMENTS_SLOTS - 1]; + if(m_asPedComments[m_nActiveBank][index].m_bVolume > com->m_bVolume) return; } else { - index = nrOfCommentsInBank[activeBank]++; + index = m_nCommentsInBank[m_nActiveBank]++; } - m_asPedComments[activeBank][index].m_nSampleIndex = com->m_nSampleIndex; - m_asPedComments[activeBank][index].m_entityIndex = com->m_entityIndex; - m_asPedComments[activeBank][index].m_vecPos = com->m_vecPos; - m_asPedComments[activeBank][index].m_fDistance = com->m_fDistance; - m_asPedComments[activeBank][index].m_bVolume = com->m_bVolume; + m_asPedComments[m_nActiveBank][index].m_nSampleIndex = com->m_nSampleIndex; + m_asPedComments[m_nActiveBank][index].m_nEntityIndex = com->m_nEntityIndex; + m_asPedComments[m_nActiveBank][index].m_vecPos = com->m_vecPos; + m_asPedComments[m_nActiveBank][index].m_fDistance = com->m_fDistance; + m_asPedComments[m_nActiveBank][index].m_bVolume = com->m_bVolume; uint32 i = 0; if(index != 0) { for(i = 0; i < index; i++) { - if(m_asPedComments[activeBank][indexMap[activeBank][i]].m_bVolume < - m_asPedComments[activeBank][index].m_bVolume) { + if(m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][i]].m_bVolume < + m_asPedComments[m_nActiveBank][index].m_bVolume) { break; } } - if(i < index) memmove(&indexMap[activeBank][i + 1], &indexMap[activeBank][i], NUM_PED_COMMENTS_SLOTS -1 - i); + if(i < index) memmove(&m_nIndexMap[m_nActiveBank][i + 1], &m_nIndexMap[m_nActiveBank][i], NUM_PED_COMMENTS_SLOTS -1 - i); } - indexMap[activeBank][i] = index; + m_nIndexMap[m_nActiveBank][i] = index; } void @@ -222,25 +233,25 @@ cPedComments::Process() static const int policeHeliIntensity = 400; if(!AudioManager.m_bUserPause) { - if(nrOfCommentsInBank[activeBank]) { - sampleIndex = m_asPedComments[activeBank][indexMap[activeBank][0]].m_nSampleIndex; + if(m_nCommentsInBank[m_nActiveBank]) { + sampleIndex = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nSampleIndex; if(!SampleManager.IsPedCommentLoaded(sampleIndex)) SampleManager.LoadPedComment(sampleIndex); AudioManager.m_sQueueSample.m_nEntityIndex = - m_asPedComments[activeBank][indexMap[activeBank][0]].m_entityIndex; + m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nEntityIndex; AudioManager.m_sQueueSample.m_counter = 0; AudioManager.m_sQueueSample.m_nSampleIndex = sampleIndex; AudioManager.m_sQueueSample.m_bBankIndex = SAMPLEBANK_PED; - AudioManager.m_sQueueSample.field_16 = 3; + AudioManager.m_sQueueSample.m_nReleasingVolumeModificator = 3; AudioManager.m_sQueueSample.m_bVolume = - m_asPedComments[activeBank][indexMap[activeBank][0]].m_bVolume; + m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_bVolume; AudioManager.m_sQueueSample.m_fDistance = - m_asPedComments[activeBank][indexMap[activeBank][0]].m_fDistance; + m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_fDistance; AudioManager.m_sQueueSample.m_nLoopCount = 1; AudioManager.m_sQueueSample.m_nLoopStart = 0; AudioManager.m_sQueueSample.m_nLoopEnd = -1; AudioManager.m_sQueueSample.m_bEmittingVolume = maxVolume; - AudioManager.m_sQueueSample.field_48 = 3.0f; + AudioManager.m_sQueueSample.m_fSpeedMultiplier = 3.0f; switch(sampleIndex) { case SFX_POLICE_HELI_1: case SFX_POLICE_HELI_2: @@ -249,9 +260,9 @@ cPedComments::Process() break; default: AudioManager.m_sQueueSample.m_fSoundIntensity = defaultIntensity; break; } - AudioManager.m_sQueueSample.field_56 = 1; + AudioManager.m_sQueueSample.m_bReleasingSoundFlag = 1; AudioManager.m_sQueueSample.m_vecPos = - m_asPedComments[activeBank][indexMap[activeBank][0]].m_vecPos; + m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_vecPos; if(sampleIndex >= SFX_AMMU_D && sampleIndex <= SFX_AMMU_F) { AudioManager.m_sQueueSample.m_bReverbFlag = false; @@ -261,33 +272,33 @@ cPedComments::Process() AudioManager.m_sQueueSample.m_bRequireReflection = true; } - AudioManager.m_sQueueSample.m_bIsDistant = false; + AudioManager.m_sQueueSample.m_bIs2D = false; AudioManager.m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(AudioManager.m_sQueueSample.m_nSampleIndex) + AudioManager.RandomDisplacement(750); if(CTimer::GetIsSlowMotionActive()) AudioManager.m_sQueueSample.m_nFrequency /= 2; - m_asPedComments[activeBank][indexMap[activeBank][0]].field_25 = -1; + m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].field_25 = -1; AudioManager.AddSampleToRequestedQueue(); } // Switch bank - if(activeBank) { + if(m_nActiveBank) { actualUsedBank = SAMPLEBANK_PED; - activeBank = SAMPLEBANK_MAIN; + m_nActiveBank = SAMPLEBANK_MAIN; } else { actualUsedBank = SAMPLEBANK_MAIN; - activeBank = SAMPLEBANK_PED; + m_nActiveBank = SAMPLEBANK_PED; } comment = m_asPedComments[actualUsedBank]; - for(uint32 i = 0; i < nrOfCommentsInBank[actualUsedBank]; i++) { - if(m_asPedComments[actualUsedBank][indexMap[actualUsedBank][i]].field_25 > 0) { - --m_asPedComments[actualUsedBank][indexMap[actualUsedBank][i]].field_25; - Add(&comment[indexMap[actualUsedBank][i]]); + for(uint32 i = 0; i < m_nCommentsInBank[actualUsedBank]; i++) { + if(m_asPedComments[actualUsedBank][m_nIndexMap[actualUsedBank][i]].field_25 > 0) { + --m_asPedComments[actualUsedBank][m_nIndexMap[actualUsedBank][i]].field_25; + Add(&comment[m_nIndexMap[actualUsedBank][i]]); } } - for(uint32 i = 0; i < NUM_PED_COMMENTS_SLOTS; i++) { indexMap[actualUsedBank][i] = NUM_PED_COMMENTS_SLOTS; } - nrOfCommentsInBank[actualUsedBank] = 0; + for(uint32 i = 0; i < NUM_PED_COMMENTS_SLOTS; i++) { m_nIndexMap[actualUsedBank][i] = NUM_PED_COMMENTS_SLOTS; } + m_nCommentsInBank[actualUsedBank] = 0; } } @@ -318,21 +329,21 @@ cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sampl m_sQueueSample.m_counter = counter; m_sQueueSample.m_nSampleIndex = sample; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 0; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nFrequency = freq; if(notLooping) { m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_76 = 8; + m_sQueueSample.m_nReleasingVolumeDivider = 8; } else { m_sQueueSample.m_nLoopCount = 1; } m_sQueueSample.m_bEmittingVolume = emittingVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 6.0f; + m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.field_56 = 0; + m_sQueueSample.m_bReleasingSoundFlag = 0; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -365,7 +376,7 @@ cAudioManager::AddReflectionsToRequestedQueue() else m_sQueueSample.m_nFrequency -= noise; } - m_sQueueSample.field_16 += 20; + m_sQueueSample.m_nReleasingVolumeModificator += 20; m_sQueueSample.m_vecPos = m_avecReflectionsPos[i]; AddSampleToRequestedQueue(); } @@ -377,7 +388,7 @@ cAudioManager::AddReflectionsToRequestedQueue() void cAudioManager::AddReleasingSounds() { - bool toProcess[44]; + bool toProcess[44]; // why not 27? int8 queue = m_bActiveSampleQueue == 0; @@ -400,23 +411,24 @@ cAudioManager::AddReleasingSounds() } if(!toProcess[i]) { if(sample.m_counter <= 255 || !sample.m_bLoopsRemaining) { - if(!sample.field_76) continue; + if(!sample.m_nReleasingVolumeDivider) continue; if(!sample.m_nLoopCount) { - if(sample.field_88 == -1) { - sample.field_88 = sample.m_bVolume / sample.field_76; - if(sample.field_88 <= 0) sample.field_88 = 1; + if(sample.m_nVolumeChange == -1) { + sample.m_nVolumeChange = sample.m_bVolume / sample.m_nReleasingVolumeDivider; + if(sample.m_nVolumeChange <= 0) sample.m_nVolumeChange = 1; } - if(sample.m_bVolume <= sample.field_88) { - sample.field_76 = 0; + if(sample.m_bVolume <= sample.m_nVolumeChange) { + sample.m_nReleasingVolumeDivider = 0; continue; } - sample.m_bVolume -= sample.field_88; + sample.m_bVolume -= sample.m_nVolumeChange; } - --sample.field_76; - if(field_2) { - if(sample.field_16 < 20) ++sample.field_16; + --sample.m_nReleasingVolumeDivider; + if(m_bFifthFrameFlag) { + if(sample.m_nReleasingVolumeModificator < 20) + ++sample.m_nReleasingVolumeModificator; } - sample.field_56 = 0; + sample.m_bReleasingSoundFlag = 0; } memcpy(&m_sQueueSample, &sample, sizeof(tSound)); AddSampleToRequestedQueue(); @@ -432,7 +444,7 @@ cAudioManager::AddSampleToRequestedQueue() bool bReflections; if(m_sQueueSample.m_nSampleIndex < TOTAL_AUDIO_SAMPLES) { - calculatedVolume = m_sQueueSample.field_16 * (maxVolume - m_sQueueSample.m_bVolume); + calculatedVolume = m_sQueueSample.m_nReleasingVolumeModificator * (maxVolume - m_sQueueSample.m_bVolume); sampleIndex = m_bSampleRequestQueuesStatus[m_bActiveSampleQueue]; if(sampleIndex >= m_bActiveSamples) { sampleIndex = m_abSampleQueueIndexTable[m_bActiveSampleQueue][m_bActiveSamples - 1]; @@ -442,7 +454,7 @@ cAudioManager::AddSampleToRequestedQueue() } m_sQueueSample.calculatedVolume = calculatedVolume; m_sQueueSample.m_bLoopEnded = 0; - if(m_sQueueSample.m_bIsDistant) { + if(m_sQueueSample.m_bIs2D) { m_sQueueSample.m_bRequireReflection = false; m_sQueueSample.m_bLoopsRemaining = 0; } @@ -486,8 +498,8 @@ cAudioManager::ClearActiveSamples() m_asActiveSamples[i].m_counter = 0; m_asActiveSamples[i].m_nSampleIndex = NO_SAMPLE; m_asActiveSamples[i].m_bBankIndex = SAMPLEBANK_INVALID; - m_asActiveSamples[i].m_bIsDistant = false; - m_asActiveSamples[i].field_16 = 5; + m_asActiveSamples[i].m_bIs2D = false; + m_asActiveSamples[i].m_nReleasingVolumeModificator = 5; m_asActiveSamples[i].m_nFrequency = 0; m_asActiveSamples[i].m_bVolume = 0; m_asActiveSamples[i].m_bEmittingVolume = 0; @@ -497,13 +509,13 @@ cAudioManager::ClearActiveSamples() m_asActiveSamples[i].m_nLoopCount = 1; m_asActiveSamples[i].m_nLoopStart = 0; m_asActiveSamples[i].m_nLoopEnd = -1; - m_asActiveSamples[i].field_48 = 0.0f; + m_asActiveSamples[i].m_fSpeedMultiplier = 0.0f; m_asActiveSamples[i].m_fSoundIntensity = 200.0f; m_asActiveSamples[i].m_bOffset = 63; - m_asActiveSamples[i].field_56 = 0; + m_asActiveSamples[i].m_bReleasingSoundFlag = 0; m_asActiveSamples[i].calculatedVolume = 0; - m_asActiveSamples[i].field_76 = 0; - m_asActiveSamples[i].field_88 = -1; + m_asActiveSamples[i].m_nReleasingVolumeDivider = 0; + m_asActiveSamples[i].m_nVolumeChange = -1; m_asActiveSamples[i].m_vecPos = {0.0f, 0.0f, 0.0f}; m_asActiveSamples[i].m_bReverbFlag = false; m_asActiveSamples[i].m_bLoopsRemaining = 0; @@ -516,8 +528,8 @@ cAudioManager::ClearMissionAudio() { if(m_bIsInitialised) { m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; - m_sMissionAudio.m_bLoadingStatus = 0; - m_sMissionAudio.m_bPlayStatus = 0; + m_sMissionAudio.m_bLoadingStatus = LOADING_STATUS_NOT_LOADED; + m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_STOPPED; m_sMissionAudio.field_22 = 0; m_sMissionAudio.m_bIsPlayed = false; m_sMissionAudio.field_12 = 1; @@ -542,14 +554,14 @@ cAudioManager::ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, if(!TheCamera.Get_Just_Switched_Status() && speedMultiplier != 0.0f) { float dist = position2 - position1; if(dist != 0.0f) { - float speedOfSource = (dist / field_19195) * speedMultiplier; - if(speedOfSound > Abs(speedOfSource)) { + float speedOfSource = (dist / field_19192) * speedMultiplier; + if(m_fSpeedOfSound > Abs(speedOfSource)) { if(speedOfSource < 0.0f) { speedOfSource = max(speedOfSource, -1.5f); } else { speedOfSource = min(speedOfSource, 1.5f); } - newFreq = (oldFreq * speedOfSound) / (speedOfSource + speedOfSound); + newFreq = (oldFreq * m_fSpeedOfSound) / (speedOfSource + m_fSpeedOfSound); } } } @@ -2466,7 +2478,7 @@ cAudioManager::IsAudioInitialised() const bool cAudioManager::IsMissionAudioSampleFinished() { - if(m_bIsInitialised) return m_sMissionAudio.m_bPlayStatus == 2; + if(m_bIsInitialised) return m_sMissionAudio.m_bPlayStatus == PLAY_STATUS_FINISHED; static int32 cPretendFrame = 1; @@ -2504,7 +2516,7 @@ cAudioManager::MissionScriptAudioUsesPoliceChannel(int32 soundMission) const void cAudioManager::PlayLoadedMissionAudio() { - if(m_bIsInitialised && m_sMissionAudio.m_nSampleIndex != NO_SAMPLE && m_sMissionAudio.m_bLoadingStatus == 1 && + if(m_bIsInitialised && m_sMissionAudio.m_nSampleIndex != NO_SAMPLE && m_sMissionAudio.m_bLoadingStatus == LOADING_STATUS_LOADED && !m_sMissionAudio.m_bPlayStatus) { m_sMissionAudio.m_bIsPlayed = true; } @@ -2601,8 +2613,8 @@ cAudioManager::PostInitialiseGameSpecificSetup() if(m_nBridgeEntity >= 0) SetEntityStatus(m_nBridgeEntity, 1); m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; - m_sMissionAudio.m_bLoadingStatus = 0; - m_sMissionAudio.m_bPlayStatus = 0; + m_sMissionAudio.m_bLoadingStatus = LOADING_STATUS_NOT_LOADED; + m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_STOPPED; m_sMissionAudio.field_22 = 0; m_sMissionAudio.m_bIsPlayed = false; m_sMissionAudio.field_12 = 1; @@ -2698,8 +2710,8 @@ cAudioManager::PreloadMissionAudio(const char *name) int32 missionAudioSfx = FindMissionAudioSfx(name); if(missionAudioSfx != NO_SAMPLE) { m_sMissionAudio.m_nSampleIndex = missionAudioSfx; - m_sMissionAudio.m_bLoadingStatus = 0; - m_sMissionAudio.m_bPlayStatus = 0; + m_sMissionAudio.m_bLoadingStatus = LOADING_STATUS_NOT_LOADED; + m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_STOPPED; m_sMissionAudio.field_22 = 0; m_sMissionAudio.field_24 = field_19192 * SampleManager.GetStreamedFileLength(missionAudioSfx) / 1000; @@ -2710,7 +2722,6 @@ cAudioManager::PreloadMissionAudio(const char *name) } } } - void cAudioManager::PreTerminateGameSpecificShutdown() { @@ -2792,9 +2803,9 @@ cAudioManager::ProcessActiveQueues() } sample.m_bIsProcessed = 1; m_asActiveSamples[j].m_bIsProcessed = 1; - sample.field_88 = -1; - if (!sample.field_56) { - if (sample.m_bIsDistant) { + sample.m_nVolumeChange = -1; + if (!sample.m_bReleasingSoundFlag) { + if (sample.m_bIs2D) { if (field_4) { emittingVol = 2 * min(63, sample.m_bEmittingVolume); } @@ -2809,7 +2820,7 @@ cAudioManager::ProcessActiveQueues() position2 = sample.m_fDistance; position1 = m_asActiveSamples[j].m_fDistance; sample.m_nFrequency = ComputeDopplerEffectedFrequency( - sample.m_nFrequency, position1, position2, sample.field_48); + sample.m_nFrequency, position1, position2, sample.m_fSpeedMultiplier); if (sample.m_nFrequency != m_asActiveSamples[j].m_nFrequency) { int32 freq; if (sample.m_nFrequency <= @@ -2872,17 +2883,16 @@ cAudioManager::ProcessActiveQueues() if (m_asActiveSamples[i].m_nSampleIndex != NO_SAMPLE && !m_asActiveSamples[i].m_bIsProcessed) { SampleManager.StopChannel(i); m_asActiveSamples[i].m_nSampleIndex = NO_SAMPLE; - m_asActiveSamples[i].m_nEntityIndex = -5; + m_asActiveSamples[i].m_nEntityIndex = AEHANDLE_NONE; } } for (int32 i = 0; i < m_bSampleRequestQueuesStatus[m_bActiveSampleQueue]; ++i) { - tSound& sample = m_asSamples[m_bActiveSampleQueue][m_abSampleQueueIndexTable[m_bActiveSampleQueue][i]]; if (!sample.m_bIsProcessed && !sample.m_bLoopEnded && m_asAudioEntities[sample.m_nEntityIndex].m_bIsUsed && sample.m_nSampleIndex < NO_SAMPLE) { if (sample.m_counter > 255 && sample.m_nLoopCount && sample.m_bLoopsRemaining) { --sample.m_bLoopsRemaining; - sample.field_76 = 1; + sample.m_nReleasingVolumeDivider = 1; } else { for (int32 j = 0; j < m_bActiveSamples; ++j) { @@ -2892,10 +2902,10 @@ cAudioManager::ProcessActiveQueues() v29 = sample.m_nLoopCount * SampleManager.GetSampleLength(sample.m_nSampleIndex); if (v28 == 0) continue; - sample.field_76 = v29 / v28 + 1; + sample.m_nReleasingVolumeDivider = v29 / v28 + 1; } memcpy(&m_asActiveSamples[j], &sample, sizeof(tSound)); - if (!m_asActiveSamples[j].m_bIsDistant) + if (!m_asActiveSamples[j].m_bIs2D) TranslateEntity(&m_asActiveSamples[j].m_vecPos, &position); if (field_4) { emittingVol = @@ -2917,7 +2927,7 @@ cAudioManager::ProcessActiveQueues() j, m_asActiveSamples[j].m_nLoopCount); SampleManager.SetChannelReverbFlag( j, m_asActiveSamples[j].m_bReverbFlag); - if (m_asActiveSamples[j].m_bIsDistant) { + if (m_asActiveSamples[j].m_bIs2D) { uint8 offset = m_asActiveSamples[j].m_bOffset; if (offset == 63) { x = 0.f; @@ -2946,7 +2956,7 @@ cAudioManager::ProcessActiveQueues() } m_asActiveSamples[j].m_bIsProcessed = 1; sample.m_bIsProcessed = 1; - sample.field_88 = -1; + sample.m_nVolumeChange = -1; break; } } @@ -2978,15 +2988,15 @@ cAudioManager::ProcessAirBrakes(cVehicleParams *params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_AIR_BRAKES); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 10; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 10; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bEmittingVolume = rand; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3022,11 +3032,11 @@ cAudioManager::ProcessAirportScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_counter = counter++; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 110; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -3065,18 +3075,18 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) m_sQueueSample.m_nFrequency = 10386; m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex << 16) % 1000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 3; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = 80; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 7; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 7; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3109,17 +3119,17 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_ACCEL; m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex << 16) % 1000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 3; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 7; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 7; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; } else { @@ -3168,17 +3178,17 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) if(!m_sQueueSample.m_bVolume) return 1; m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex << 16) % 1000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 3; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 7; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 7; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; } @@ -3209,17 +3219,17 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams *params) m_sQueueSample.m_counter = 38; m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 3; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nFrequency = (6050.f * multiplier) + 16000; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = vol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3264,18 +3274,18 @@ cAudioManager::ProcessBridgeMotor() m_sQueueSample.m_counter = 1; m_sQueueSample.m_nSampleIndex = SFX_FISHING_BOAT_IDLE; // todo check sfx name m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = 5500; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = maxVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = bridgeIntensity; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = false; AddSampleToRequestedQueue(); } @@ -3308,17 +3318,17 @@ cAudioManager::ProcessBridgeOneShots() if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_counter = 2; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bEmittingVolume = maxVolume; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = bridgeIntensity; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bReverbFlag = false; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3335,18 +3345,18 @@ cAudioManager::ProcessBridgeWarning() m_sQueueSample.m_counter = 0; m_sQueueSample.m_nSampleIndex = SFX_BRIDGE_OPEN_WARNING; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BRIDGE_OPEN_WARNING); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = 100; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 450.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 8; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_bReverbFlag = false; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3368,18 +3378,18 @@ cAudioManager::ProcessCarBombTick(cVehicleParams *params) m_sQueueSample.m_counter = 35; m_sQueueSample.m_nSampleIndex = SFX_COUNTDOWN; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 0; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COUNTDOWN); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = 60; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3415,18 +3425,18 @@ cAudioManager::ProcessCesna(cVehicleParams *params) m_sQueueSample.m_counter = 52; m_sQueueSample.m_nSampleIndex = SFX_CESNA_IDLE; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 0; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nFrequency = 12500; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_76 = 8; + m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_bEmittingVolume = 80; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 8.0f; + m_sQueueSample.m_fSpeedMultiplier = 8.0f; m_sQueueSample.m_fSoundIntensity = 200.0f; - m_sQueueSample.field_56 = 0; + m_sQueueSample.m_bReleasingSoundFlag = 0; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3437,19 +3447,19 @@ cAudioManager::ProcessCesna(cVehicleParams *params) m_sQueueSample.m_counter = 2; m_sQueueSample.m_nSampleIndex = SFX_CESNA_REV; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 0; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nFrequency = 25000; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_76 = 4; + m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bEmittingVolume = 80; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 8.0f; + m_sQueueSample.m_fSpeedMultiplier = 8.0f; m_sQueueSample.m_fSoundIntensity = 90.0f; - m_sQueueSample.field_56 = 0; + m_sQueueSample.m_bReleasingSoundFlag = 0; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3489,11 +3499,11 @@ cAudioManager::ProcessCinemaScriptObject(uint8 sound) SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 4); m_sQueueSample.m_counter = counter++; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = rand; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -3526,8 +3536,8 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_counter = 0; m_sQueueSample.m_nSampleIndex = SFX_CRANE_MAGNET; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 2; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nFrequency = 6000; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = 100; @@ -3535,10 +3545,10 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 4.0f; + m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3549,7 +3559,7 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COL_CAR_2); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = true; AddSampleToRequestedQueue(); @@ -3592,11 +3602,11 @@ cAudioManager::ProcessDocksScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_DOCKS_FOGHORN); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 3); m_sQueueSample.m_counter = counter++; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = rand; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -3624,12 +3634,12 @@ cAudioManager::ProcessEngineDamage(cVehicleParams *params) if(engineStatus < 225) { m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; emittingVolume = 6; - m_sQueueSample.field_16 = 7; + m_sQueueSample.m_nReleasingVolumeModificator = 7; m_sQueueSample.m_nFrequency = 40000; } else { emittingVolume = 60; m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; - m_sQueueSample.field_16 = 7; + m_sQueueSample.m_nReleasingVolumeModificator = 7; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); } CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); @@ -3637,16 +3647,16 @@ cAudioManager::ProcessEngineDamage(cVehicleParams *params) if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_counter = 28; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = engineDamageIntensity; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3752,14 +3762,14 @@ cAudioManager::ProcessExplosions(int32 explosion) m_sQueueSample.m_fSoundIntensity = 400.0f; m_sQueueSample.m_nSampleIndex = SFX_EXPLOSION_2; m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 38000; - m_sQueueSample.field_16 = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; break; case EXPLOSION_MOLOTOV: m_sQueueSample.m_fSoundIntensity = 200.0f; m_sQueueSample.m_nSampleIndex = SFX_EXPLOSION_3; m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 19000; - m_sQueueSample.field_16 = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; break; case EXPLOSION_MINE: @@ -3767,7 +3777,7 @@ cAudioManager::ProcessExplosions(int32 explosion) m_sQueueSample.m_fSoundIntensity = 300.0f; m_sQueueSample.m_nSampleIndex = SFX_ROCKET_LEFT; m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 12347; - m_sQueueSample.field_16 = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; break; default: @@ -3776,7 +3786,7 @@ cAudioManager::ProcessExplosions(int32 explosion) m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 38000; if(type == EXPLOSION_HELI) m_sQueueSample.m_nFrequency = 8 * m_sQueueSample.m_nFrequency / 10; - m_sQueueSample.field_16 = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; break; } @@ -3789,10 +3799,10 @@ cAudioManager::ProcessExplosions(int32 explosion) m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_counter = i; - m_sQueueSample.field_48 = 2.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bEmittingVolume = maxVolume; m_sQueueSample.m_nLoopStart = 0; @@ -3822,18 +3832,18 @@ cAudioManager::ProcessFireHydrant() m_sQueueSample.m_counter = 0; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 4; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 4; m_sQueueSample.m_nFrequency = 15591; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = 40; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3859,7 +3869,7 @@ void cAudioManager::ProcessFires(int32) m_sQueueSample.m_nFrequency = 8 * SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE) / 10; m_sQueueSample.m_nFrequency += i * ((uint32)m_sQueueSample.m_nFrequency >> 6); - m_sQueueSample.field_16 = 6; + m_sQueueSample.m_nReleasingVolumeModificator = 6; break; case ENTITY_TYPE_PED: m_sQueueSample.m_fSoundIntensity = 25.0f; @@ -3868,7 +3878,7 @@ void cAudioManager::ProcessFires(int32) SampleManager.GetSampleBaseFrequency(SFX_PED_ON_FIRE); emittingVol = 60; m_sQueueSample.m_nFrequency += i * ((uint32)m_sQueueSample.m_nFrequency >> 6); - m_sQueueSample.field_16 = 10; + m_sQueueSample.m_nReleasingVolumeModificator = 10; break; default: m_sQueueSample.m_fSoundIntensity = 50.0f; @@ -3877,7 +3887,7 @@ void cAudioManager::ProcessFires(int32) SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); m_sQueueSample.m_nFrequency += i * ((uint32)m_sQueueSample.m_nFrequency >> 6); emittingVol = 80; - m_sQueueSample.field_16 = 8; + m_sQueueSample.m_nReleasingVolumeModificator = 8; } } else { m_sQueueSample.m_fSoundIntensity = 50.0f; @@ -3885,7 +3895,7 @@ void cAudioManager::ProcessFires(int32) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); m_sQueueSample.m_nFrequency += i * ((uint32)m_sQueueSample.m_nFrequency >> 6); emittingVol = 80; - m_sQueueSample.field_16 = 8; + m_sQueueSample.m_nReleasingVolumeModificator = 8; } m_sQueueSample.m_vecPos = gFireManager.m_aFires[i].m_vecPos; distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); @@ -3896,11 +3906,11 @@ void cAudioManager::ProcessFires(int32) if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_counter = i; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.field_48 = 2.0f; - m_sQueueSample.field_76 = 10; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; + m_sQueueSample.m_nReleasingVolumeDivider = 10; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_56 = 0; + m_sQueueSample.m_bReleasingSoundFlag = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); @@ -4051,10 +4061,10 @@ cAudioManager::ProcessFrontEnd() m_sQueueSample.m_bVolume = 110; m_sQueueSample.m_counter = counter++; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.field_16 = 0; - m_sQueueSample.m_bIsDistant = true; + m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_bIs2D = true; m_sQueueSample.m_bEmittingVolume = m_sQueueSample.m_bVolume; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -4163,12 +4173,12 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_counter = iSound++; if(iSound < 32) iSound = 32; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 3; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_bEmittingVolume = 90; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset( @@ -4176,7 +4186,7 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset( m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 80.0f; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -4192,17 +4202,17 @@ cAudioManager::ProcessGarages() } m_sQueueSample.m_counter = i; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_56 = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 3; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_bEmittingVolume = 90; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 80.0f; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -4252,8 +4262,8 @@ cAudioManager::ProcessHelicopter(cVehicleParams *params) m_sQueueSample.m_counter = i + 65; m_sQueueSample.m_nSampleIndex = i + SFX_HELI_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 0; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nFrequency = 1200 * heli->m_nHeliId + SampleManager.GetSampleBaseFrequency( m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopCount = 0; @@ -4261,10 +4271,10 @@ cAudioManager::ProcessHelicopter(cVehicleParams *params) m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 6.0f; + m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = gHeliSfxRanges[i].m_fMaxDistance; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -4306,11 +4316,11 @@ cAudioManager::ProcessHomeScriptObject(uint8 sound) SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_counter = counter++; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bEmittingVolume = rand; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -4452,11 +4462,11 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_LAUNDERETTE_LOOP); m_sQueueSample.m_counter = 0; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_16 = 5; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 45; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); @@ -4472,11 +4482,11 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_LAUNDERETTE_SONG_LOOP); m_sQueueSample.m_counter = 1; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 110; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); @@ -4501,9 +4511,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_1); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_1_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4511,9 +4521,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_1); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_2_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4521,9 +4531,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_2); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_2_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4531,9 +4541,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_2); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_3_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4541,9 +4551,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_3); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_3_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4551,9 +4561,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_3); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_4_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4561,9 +4571,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_4); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_4_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4571,9 +4581,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_4); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_5_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4581,9 +4591,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_5); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_5_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4591,9 +4601,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_5); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_6_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4601,9 +4611,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_6); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_6_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4611,9 +4621,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_6); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_7_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4621,9 +4631,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_7); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_7_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4631,9 +4641,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_7); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_8_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4641,9 +4651,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_8); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_8_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4651,9 +4661,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_8); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_9_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4661,9 +4671,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_9); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_9_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4671,9 +4681,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_9); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_10_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4681,9 +4691,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_10); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_10_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4691,9 +4701,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_10); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_11_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4701,9 +4711,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_11); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_11_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4711,9 +4721,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_11); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_12_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4721,9 +4731,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_12); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_12_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4731,9 +4741,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_12); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_13_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4741,9 +4751,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_RAGGA); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_13_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4751,9 +4761,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_RAGGA); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_STRIP_CLUB_LOOP_1_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4761,9 +4771,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_1); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_STRIP_CLUB_LOOP_1_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4771,9 +4781,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_1); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_STRIP_CLUB_LOOP_2_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4781,9 +4791,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_2); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_STRIP_CLUB_LOOP_2_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4791,9 +4801,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_2); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_WORK_SHOP_LOOP_S: case SCRIPT_SOUND_WORK_SHOP_LOOP_L: ProcessWorkShopScriptObject(sound); return; @@ -4805,9 +4815,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_DOG_FOOD_FACTORY); - m_sQueueSample.field_16 = 6; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 6; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_39: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4815,9 +4825,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_DOG_FOOD_FACTORY); - m_sQueueSample.field_16 = 6; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 6; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_LAUNDERETTE_LOOP_S: case SCRIPT_SOUND_LAUNDERETTE_LOOP_L: ProcessLaunderetteScriptObject(sound); return; @@ -4827,9 +4837,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_CHINATOWN); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_CHINATOWN_RESTAURANT_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4837,9 +4847,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_CHINATOWN); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_CIPRIANI_RESAURANT_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4847,9 +4857,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_ITALY); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_CIPRIANI_RESAURANT_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4857,9 +4867,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_ITALY); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_46_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4867,9 +4877,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_1); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_47_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4877,9 +4887,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_1); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_MARCO_BISTRO_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4887,9 +4897,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_2); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_MARCO_BISTRO_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4897,9 +4907,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_2); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_AIRPORT_LOOP_S: case SCRIPT_SOUND_AIRPORT_LOOP_L: ProcessAirportScriptObject(sound); return; @@ -4917,9 +4927,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PIANO_BAR_1); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_1_LOOP: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4927,9 +4937,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_1); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PORN_CINEMA_1_S: case SCRIPT_SOUND_PORN_CINEMA_1_L: @@ -4945,9 +4955,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 90; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BANK_ALARM_1); - m_sQueueSample.field_16 = 2; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_BANK_ALARM_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4955,9 +4965,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 90; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BANK_ALARM_1); - m_sQueueSample.field_16 = 2; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_POLICE_BALL_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4965,9 +4975,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_BALL_1); - m_sQueueSample.field_16 = 2; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_POLICE_BALL_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4975,9 +4985,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_BALL_1); - m_sQueueSample.field_16 = 2; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_LOOP_INDUSTRIAL_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -4985,9 +4995,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAVE_INDUSTRIAL); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_LOOP_INDUSTRIAL_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -4995,9 +5005,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAVE_INDUSTRIAL); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_POLICE_CELL_BEATING_LOOP_S: case SCRIPT_SOUND_POLICE_CELL_BEATING_LOOP_L: ProcessPoliceCellBeatingScriptObject(sound); return; @@ -5008,9 +5018,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_1_LOOP_L: case SCRIPT_SOUND_RAVE_2_LOOP_L: @@ -5019,9 +5029,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_3_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -5029,9 +5039,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAVE_SUBURBAN); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_3_LOOP_L: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -5039,9 +5049,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAVE_SUBURBAN); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_76 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PRETEND_FIRE_LOOP: m_sQueueSample.m_fSoundIntensity = 50.0f; @@ -5049,9 +5059,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 80; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); - m_sQueueSample.field_16 = 8; - m_sQueueSample.field_76 = 10; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 8; + m_sQueueSample.m_nReleasingVolumeDivider = 10; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; default: return; } @@ -5063,9 +5073,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_counter = 0; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_56 = 0; + m_sQueueSample.m_bReleasingSoundFlag = 0; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bEmittingVolume = emittingVolume; m_sQueueSample.m_nLoopStart = @@ -5093,12 +5103,12 @@ cAudioManager::ProcessMissionAudio() if(m_bIsInitialised) { if(m_sMissionAudio.m_nSampleIndex != NO_SAMPLE) { switch(m_sMissionAudio.m_bLoadingStatus) { - case 0: + case LOADING_STATUS_NOT_LOADED: SampleManager.PreloadStreamedFile(m_sMissionAudio.m_nSampleIndex, 1); - m_sMissionAudio.m_bLoadingStatus = 1; + m_sMissionAudio.m_bLoadingStatus = LOADING_STATUS_LOADED; nFramesUntilFailedLoad = 0; return; - case 1: + case LOADING_STATUS_LOADED: if(!m_sMissionAudio.m_bIsPlayed) return; if(g_bMissionAudioLoadFailed) { if(m_bTimerJustReset) { @@ -5109,15 +5119,15 @@ cAudioManager::ProcessMissionAudio() nFramesUntilFailedLoad = 0; } else if(!m_bUserPause) { if(++nFramesForPretendPlaying < 120) { - m_sMissionAudio.m_bPlayStatus = 1; + m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_PLAYING; } else { - m_sMissionAudio.m_bPlayStatus = 2; + m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_FINISHED; m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; } } } else { if(m_sMissionAudio.m_bPlayStatus) { - if(m_sMissionAudio.m_bPlayStatus != 1) return; + if(m_sMissionAudio.m_bPlayStatus != PLAY_STATUS_PLAYING) return; if(m_bTimerJustReset) { ClearMissionAudio(); SampleManager.StopStreamedFile(1); @@ -5129,9 +5139,10 @@ cAudioManager::ProcessMissionAudio() if(nCheckPlayingDelay) { --nCheckPlayingDelay; } else if(GetMissionScriptPoliceAudioPlayingStatus() == - 2 || + PLAY_STATUS_FINISHED || m_sMissionAudio.field_24-- == 0) { - m_sMissionAudio.m_bPlayStatus = 2; + m_sMissionAudio.m_bPlayStatus = + PLAY_STATUS_FINISHED; m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; SampleManager.StopStreamedFile(1); m_sMissionAudio.field_24 = 0; @@ -5145,7 +5156,7 @@ cAudioManager::ProcessMissionAudio() else SampleManager.PauseStream(0, 1); } else { - m_sMissionAudio.m_bPlayStatus = 2; + m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_FINISHED; m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; SampleManager.StopStreamedFile(1); m_sMissionAudio.field_24 = 0; @@ -5184,7 +5195,7 @@ cAudioManager::ProcessMissionAudio() } SampleManager.StartPreloadedStreamedFile(1); } - m_sMissionAudio.m_bPlayStatus = 1; + m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_PLAYING; nCheckPlayingDelay = 30; } } @@ -5194,7 +5205,7 @@ cAudioManager::ProcessMissionAudio() nFramesForPretendPlaying = 0; g_bMissionAudioLoadFailed = 1; nFramesUntilFailedLoad = 0; - m_sMissionAudio.m_bLoadingStatus = 1; + m_sMissionAudio.m_bLoadingStatus = LOADING_STATUS_LOADED; } return; default: return; @@ -5235,8 +5246,8 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams *params) m_sQueueSample.m_counter = 2; m_sQueueSample.m_nSampleIndex = SFX_REMOTE_CONTROLLED_CAR; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = (11025.f * velocityChange / params->m_pTransmission->fMaxVelocity + 11025.f); @@ -5246,10 +5257,10 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams *params) m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 3.0f; + m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -5296,9 +5307,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = 10600; else m_sQueueSample.m_nFrequency = 9000; - m_sQueueSample.field_16 = 1; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_bRequireReflection = true; emittingVolume = RandomDisplacement(10) + 50; break; @@ -5310,9 +5321,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); - m_sQueueSample.field_16 = 9; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_nReleasingVolumeModificator = 9; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_bIs2D = false; emittingVolume = m_anRandomTable[2] % 20 + 90; break; case SCRIPT_SOUND_110: @@ -5323,9 +5334,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_STATION_ANNOUNCE); - m_sQueueSample.field_16 = 0; - m_sQueueSample.field_48 = 2.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; + m_sQueueSample.m_bIs2D = false; break; case SCRIPT_SOUND_PAYPHONE_RINGING: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -5333,9 +5344,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 80; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PHONE_RING); - m_sQueueSample.field_16 = 1; - m_sQueueSample.field_48 = 2.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_bRequireReflection = false; break; case SCRIPT_SOUND_GLASS_BREAK_L: @@ -5344,9 +5355,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 70; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_SMASH); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_bIs2D = false; break; case SCRIPT_SOUND_GLASS_BREAK_S: m_sQueueSample.m_fSoundIntensity = 60.0f; @@ -5354,9 +5365,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 60; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_SMASH); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_bIs2D = false; break; case SCRIPT_SOUND_GLASS_CRACK: m_sQueueSample.m_fSoundIntensity = 60.0f; @@ -5364,9 +5375,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 70; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_CRACK); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_bRequireReflection = true; break; case SCRIPT_SOUND_GLASS_LIGHT_BREAK: @@ -5374,9 +5385,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = (m_anRandomTable[4] & 3) + SFX_GLASS_SHARD_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 19000; - m_sQueueSample.field_16 = 9; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_nReleasingVolumeModificator = 9; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_bIs2D = false; emittingVolume = RandomDisplacement(11) + 25; break; case SCRIPT_SOUND_BOX_DESTROYED_1: @@ -5384,9 +5395,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_WOODEN_BOX_SMASH; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = RandomDisplacement(1500) + 18600; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_bRequireReflection = true; emittingVolume = m_anRandomTable[2] % 20 + 80; break; @@ -5395,9 +5406,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_CARDBOARD_BOX_SMASH; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = RandomDisplacement(1500) + 18600; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_bRequireReflection = true; emittingVolume = m_anRandomTable[2] % 20 + 80; break; @@ -5407,9 +5418,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_bRequireReflection = true; emittingVolume = m_anRandomTable[2] % 30 + 70; break; @@ -5419,9 +5430,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_bRequireReflection = true; emittingVolume = m_anRandomTable[2] % 30 + 60; break; @@ -5439,11 +5450,11 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) case SURFACE_HEDGE: m_sQueueSample.m_nSampleIndex = SFX_BULLET_SHELL_HIT_GROUND_2; m_sQueueSample.m_nFrequency = RandomDisplacement(500) + 11000; - m_sQueueSample.field_16 = 18; + m_sQueueSample.m_nReleasingVolumeModificator = 18; m_sQueueSample.m_fSoundIntensity = 20.0f; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_bIs2D = false; emittingVolume = m_anRandomTable[2] % 20 + 30; distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); if(distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { @@ -5454,7 +5465,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_counter = iSound++; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bEmittingVolume = emittingVolume; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -5469,21 +5480,21 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) } m_sQueueSample.m_nSampleIndex = SFX_BULLET_SHELL_HIT_GROUND_1; m_sQueueSample.m_nFrequency = RandomDisplacement(750) + 18000; - m_sQueueSample.field_16 = 15; + m_sQueueSample.m_nReleasingVolumeModificator = 15; m_sQueueSample.m_fSoundIntensity = 20.0f; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_bIs2D = false; emittingVolume = m_anRandomTable[2] % 20 + 30; break; case SCRIPT_SOUND_GUNSHELL_DROP_SOFT: m_sQueueSample.m_nSampleIndex = SFX_BULLET_SHELL_HIT_GROUND_2; m_sQueueSample.m_nFrequency = RandomDisplacement(500) + 11000; - m_sQueueSample.field_16 = 18; + m_sQueueSample.m_nReleasingVolumeModificator = 18; m_sQueueSample.m_fSoundIntensity = 20.0f; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_bIs2D = false; emittingVolume = m_anRandomTable[2] % 20 + 30; break; default: return; @@ -5497,7 +5508,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_counter = iSound++; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bEmittingVolume = emittingVolume; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -5556,8 +5567,8 @@ cAudioManager::ProcessPedHeadphones(cPedParams *params) m_sQueueSample.m_counter = 64; m_sQueueSample.m_nSampleIndex = SFX_HEADPHONES; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 5; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_HEADPHONES); m_sQueueSample.m_nLoopCount = 0; @@ -5566,10 +5577,10 @@ cAudioManager::ProcessPedHeadphones(cPedParams *params) SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 4.0f; + m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 7.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 5; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -6785,11 +6796,11 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound) SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_counter = counter++; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -6866,11 +6877,11 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_counter = 0; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = maxVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); @@ -6893,11 +6904,11 @@ cAudioManager::ProcessPornCinema(uint8 sound) SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); m_sQueueSample.m_counter = rand + 1; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; - m_sQueueSample.field_16 = 6; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_nReleasingVolumeModificator = 6; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bReverbFlag = true; @@ -6924,7 +6935,7 @@ cAudioManager::ProcessProjectiles() m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_ROCKET_FLY); - m_sQueueSample.field_16 = 3; + m_sQueueSample.m_nReleasingVolumeModificator = 3; break; case WEAPONTYPE_MOLOTOV: emittingVol = molotovVolume; @@ -6933,12 +6944,12 @@ cAudioManager::ProcessProjectiles() m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = 32 * SampleManager.GetSampleBaseFrequency(SFX_PED_ON_FIRE) / 25; - m_sQueueSample.field_16 = 7; + m_sQueueSample.m_nReleasingVolumeModificator = 7; break; default: return; } - m_sQueueSample.field_48 = 4.0f; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_fSpeedMultiplier = 4.0f; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_vecPos = CProjectileInfo::ms_apProjectile[i]->GetPosition(); float distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); if(distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { @@ -6947,14 +6958,14 @@ cAudioManager::ProcessProjectiles() m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_counter = i; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_56 = 0; + m_sQueueSample.m_bReleasingSoundFlag = 0; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -6986,16 +6997,16 @@ cAudioManager::ProcessRainOnVehicle(cVehicleParams *params) if(veh->m_bRainSamplesCounter > 4) veh->m_bRainSamplesCounter = 68; m_sQueueSample.m_nSampleIndex = (m_anRandomTable[1] & 3) + SFX_CAR_RAIN_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 9; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 9; m_sQueueSample.m_nFrequency = m_anRandomTable[1] % 4000 + 28000; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bEmittingVolume = (uint8)emittingVol; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = rainOnVehicleIntensity; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bReverbFlag = false; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -7046,18 +7057,18 @@ cAudioManager::ProcessReverseGear(cVehicleParams *params) m_sQueueSample.m_nSampleIndex = SFX_REVERSE_GEAR; } m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 3; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nFrequency = (6000.f * modificator) + 7000; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 3.0f; + m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = reverseGearIntensity; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 5; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -7089,11 +7100,11 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SAWMILL_LOOP); m_sQueueSample.m_counter = 0; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_16 = 5; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 30; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); @@ -7112,11 +7123,11 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_counter = 1; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bReverbFlag = true; @@ -7165,11 +7176,11 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SHOP_LOOP); m_sQueueSample.m_counter = 0; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_16 = 5; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 30; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); @@ -7189,11 +7200,11 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_counter = rand + 1; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 70; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -7249,8 +7260,8 @@ cAudioManager::ProcessTrainNoise(cVehicleParams *params) m_sQueueSample.m_counter = 32; m_sQueueSample.m_nSampleIndex = SFX_TRAIN_FAR; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 2; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_FAR); m_sQueueSample.m_nLoopCount = 0; @@ -7259,10 +7270,10 @@ cAudioManager::ProcessTrainNoise(cVehicleParams *params) SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 3.0f; + m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = 300.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -7274,8 +7285,8 @@ cAudioManager::ProcessTrainNoise(cVehicleParams *params) m_sQueueSample.m_counter = 33; m_sQueueSample.m_nSampleIndex = SFX_TRAIN_NEAR; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 5; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_NEAR) + 100 * m_sQueueSample.m_nEntityIndex % 987; @@ -7283,10 +7294,10 @@ cAudioManager::ProcessTrainNoise(cVehicleParams *params) m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 6.0f; + m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 70.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -7415,15 +7426,15 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams *params) m_sQueueSample.m_nSampleIndex) + RandomDisplacement(1000); m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 10; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 10; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.field_48 = 1.0f; + m_sQueueSample.m_fSpeedMultiplier = 1.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = true; AddSampleToRequestedQueue(); @@ -7571,8 +7582,8 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) freq = 10000.f * modificator + 22050; m_sQueueSample.m_counter = 52; m_sQueueSample.m_bBankIndex = 0; - m_sQueueSample.m_bIsDistant = 0; - m_sQueueSample.field_16 = 3; + m_sQueueSample.m_bIs2D = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nFrequency = freq + 100 * m_sQueueSample.m_nEntityIndex % 1000; if (m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_6 || @@ -7584,10 +7595,10 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 6.0f; + m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 8; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_bReverbFlag = 1; m_sQueueSample.m_bRequireReflection = 0; AddSampleToRequestedQueue(); @@ -7603,8 +7614,8 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) freq = 10000.f * modificator + 22050; m_sQueueSample.m_counter = 52; m_sQueueSample.m_bBankIndex = 0; - m_sQueueSample.m_bIsDistant = 0; - m_sQueueSample.field_16 = 3; + m_sQueueSample.m_bIs2D = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nFrequency = freq + 100 * m_sQueueSample.m_nEntityIndex % 1000; if (m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_6 || @@ -7616,10 +7627,10 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 6.0f; + m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 8; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_bReverbFlag = 1; m_sQueueSample.m_bRequireReflection = 0; AddSampleToRequestedQueue(); @@ -7630,8 +7641,8 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) m_sQueueSample.m_nSampleIndex = accelerationSample; m_sQueueSample.m_counter = 2; m_sQueueSample.m_bBankIndex = 0; - m_sQueueSample.m_bIsDistant = 0; - m_sQueueSample.field_16 = 3; + m_sQueueSample.m_bIs2D = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nFrequency = freq + 100 * m_sQueueSample.m_nEntityIndex % 1000; if (m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_6 || m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_6) @@ -7642,12 +7653,12 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 6.0f; + m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 8; - m_sQueueSample.m_bReverbFlag = 1; - m_sQueueSample.m_bRequireReflection = 0; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 8; + m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); return; } @@ -7679,8 +7690,8 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams *params) m_sQueueSample.m_counter = 4; m_sQueueSample.m_nSampleIndex = CarSounds[params->m_nIndex].m_nHornSample; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 2; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nFrequency = CarSounds[params->m_nIndex].m_nHornFrequency; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = 80; @@ -7688,10 +7699,10 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams *params) SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 5.0f; + m_sQueueSample.m_fSpeedMultiplier = 5.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -7722,8 +7733,8 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams *params) m_sQueueSample.m_counter = 12; m_sQueueSample.m_nSampleIndex = SFX_REVERSE_WARNING; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 2; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nFrequency = (100 * m_sQueueSample.m_nEntityIndex & 1023) + SampleManager.GetSampleBaseFrequency(SFX_REVERSE_WARNING); @@ -7732,10 +7743,10 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams *params) m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 3.0f; + m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -7765,8 +7776,8 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams *params) if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_counter = 0; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 3; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; if(params->m_pVehicle->m_nSurfaceTouched == SURFACE_PUDDLE) { m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP; freq = 6050 * emittingVol / 30 + 16000; @@ -7784,10 +7795,10 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams *params) SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 6.0f; + m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 95.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 4; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -7830,17 +7841,17 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams *params) m_sQueueSample.m_nFrequency = CarSounds[params->m_nIndex].m_nSirenOrAlarmFrequency; } m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = 80; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 7.0f; + m_sQueueSample.m_fSpeedMultiplier = 7.0f; m_sQueueSample.m_fSoundIntensity = 110.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 5; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -7926,17 +7937,17 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams *params) } m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 8; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 8; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 3.0f; + m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -7959,13 +7970,13 @@ void cAudioManager::ProcessWaterCannon(int32) m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = 15591; - m_sQueueSample.field_16 = 5; + m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_counter = i; - m_sQueueSample.field_48 = 2.0f; - m_sQueueSample.field_76 = 8; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; + m_sQueueSample.m_nReleasingVolumeDivider = 8; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_56 = 0; + m_sQueueSample.m_bReleasingSoundFlag = 0; m_sQueueSample.m_bEmittingVolume = 50; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); @@ -8002,11 +8013,11 @@ cAudioManager::ProcessWeather(int32 id) if(TheCamera.SoundDistUp < 20.f) m_sQueueSample.m_bVolume >>= 1; if(counter == 4) counter = 0; m_sQueueSample.m_counter = counter++; - m_sQueueSample.field_16 = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_bOffset = (m_anRandomTable[2] & 15) + 55; - m_sQueueSample.m_bIsDistant = true; + m_sQueueSample.m_bIs2D = true; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bEmittingVolume = m_sQueueSample.m_bVolume; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -8021,12 +8032,12 @@ cAudioManager::ProcessWeather(int32 id) m_sQueueSample.m_bVolume = (int32)(25.f * CWeather::Rain); m_sQueueSample.m_counter = 4; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.field_16 = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_bOffset = 63; - m_sQueueSample.m_bIsDistant = true; + m_sQueueSample.m_bIs2D = true; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 30; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 30; m_sQueueSample.m_bReverbFlag = false; m_sQueueSample.m_bEmittingVolume = m_sQueueSample.m_bVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); @@ -8059,8 +8070,8 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams *params) m_sQueueSample.m_counter = 1; m_sQueueSample.m_nSampleIndex = SFX_ROAD_NOISE; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 3; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 3; modificator = m_sQueueSample.m_fDistance / 6.f; freq = SampleManager.GetSampleBaseFrequency(SFX_ROAD_NOISE); m_sQueueSample.m_nFrequency = freq + freq * modificator; @@ -8070,10 +8081,10 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams *params) SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 6.0f; + m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 4; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -8106,11 +8117,11 @@ cAudioManager::ProcessWorkShopScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_WORKSHOP_1); m_sQueueSample.m_counter = 0; - m_sQueueSample.m_bIsDistant = false; + m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_16 = 5; - m_sQueueSample.field_48 = 2.0f; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 30; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); @@ -8223,15 +8234,10 @@ cAudioManager::Service() void cAudioManager::ServiceSoundEffects() { - uint32 timeOfRecentCrime; - cAudioScriptObject *object; - - timeOfRecentCrime = m_FrameCounter; - ++m_FrameCounter; - if(timeOfRecentCrime % 5) - field_2 = 0; + if(m_FrameCounter++ % 5) + m_bFifthFrameFlag = false; else - field_2 = 1; + m_bFifthFrameFlag = true; if(m_bUserPause && !m_bPreviousUserPause) { for(int32 i = 0; i < allChannels; i++) SampleManager.StopChannel(i); @@ -8260,7 +8266,8 @@ cAudioManager::ServiceSoundEffects() AdjustSamplesVolume(); ProcessActiveQueues(); for(int32 i = 0; i < m_nScriptObjectEntityTotal; ++i) { - object = (cAudioScriptObject *)m_asAudioEntities[m_anScriptObjectEntityIndices[i]].m_pEntity; + cAudioScriptObject *object = + (cAudioScriptObject *)m_asAudioEntities[m_anScriptObjectEntityIndices[i]].m_pEntity; delete object; m_asAudioEntities[m_anScriptObjectEntityIndices[i]].m_pEntity = nil; DestroyEntity(m_anScriptObjectEntityIndices[i]); @@ -8352,17 +8359,17 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, int32 freq) m_sQueueSample.m_counter = 3; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_ENGINE; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 4.0f; + m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 180.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 4; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -8381,17 +8388,17 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol) m_sQueueSample.m_nSampleIndex = SFX_JUMBO_DIST_FLY; m_sQueueSample.m_counter = 0; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_DIST_FLY); m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSoundIntensity = 440.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_48 = 4.0f; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.field_76 = 5; + m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); AddSampleToRequestedQueue(); } @@ -8409,17 +8416,17 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) m_sQueueSample.m_counter = 5; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_RUMBLE; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = true; - m_sQueueSample.field_16 = 1; + m_sQueueSample.m_bIs2D = true; + m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_RUMBLE); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 4.0f; + m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 240.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 12; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 12; m_sQueueSample.m_bOffset = 0; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -8447,17 +8454,17 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol) m_sQueueSample.m_counter = 1; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = GetJumboTaxiFreq(); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 4.0f; + m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 180.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 4; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -8476,17 +8483,17 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, int32 freq) m_sQueueSample.m_counter = 2; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_WHINE; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_16 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.field_48 = 4.0f; + m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 170.0f; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 4; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -8536,7 +8543,7 @@ cAudioManager::SetupPedComments(cPedParams *params, uint32 sound) ComputeVolume(emittingVol, soundIntensity, m_sQueueSample.m_fDistance); pedComment.field_25 = 10; if(m_sQueueSample.m_bVolume) { - pedComment.m_entityIndex = m_sQueueSample.m_nEntityIndex; + pedComment.m_nEntityIndex = m_sQueueSample.m_nEntityIndex; pedComment.m_vecPos = m_sQueueSample.m_vecPos; pedComment.m_fDistance = m_sQueueSample.m_fDistance; pedComment.m_bVolume = m_sQueueSample.m_bVolume; @@ -8593,7 +8600,7 @@ cAudioManager::SetupPedComments(cPedParams *params, uint32 sound) ComputeVolume(emittingVol, soundIntensity, m_sQueueSample.m_fDistance); pedComment.field_25 = 10; if(m_sQueueSample.m_bVolume) { - pedComment.m_entityIndex = m_sQueueSample.m_nEntityIndex; + pedComment.m_nEntityIndex = m_sQueueSample.m_nEntityIndex; pedComment.m_vecPos = m_sQueueSample.m_vecPos; pedComment.m_fDistance = m_sQueueSample.m_fDistance; pedComment.m_bVolume = m_sQueueSample.m_bVolume; @@ -8763,7 +8770,7 @@ cAudioManager::AdjustSamplesVolume() for(int i = 0; i < m_bSampleRequestQueuesStatus[m_bActiveSampleQueue]; i++) { tSound* pSample = &m_asSamples[m_bActiveSampleQueue][m_abSampleQueueIndexTable[m_bActiveSampleQueue][i] + 1]; - if(!pSample->m_bIsDistant) + if(!pSample->m_bIs2D) pSample->m_bEmittingVolume = ComputeEmittingVolume( pSample->m_bEmittingVolume, pSample->m_fSoundIntensity, pSample->m_fDistance); } diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 0be1e38a..0e656475 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -141,10 +141,10 @@ public: int32 m_counter; int32 m_nSampleIndex; uint8 m_bBankIndex; - bool m_bIsDistant; + bool m_bIs2D; uint8 field_14; uint8 field_15; - int32 field_16; + int32 m_nReleasingVolumeModificator; int32 m_nFrequency; uint8 m_bVolume; uint8 field_25; @@ -158,24 +158,24 @@ public: uint8 field_45; uint8 field_46; uint8 field_47; - float field_48; + float m_fSpeedMultiplier; float m_fSoundIntensity; - uint8 field_56; + bool m_bReleasingSoundFlag; uint8 field_57; uint8 field_58; uint8 field_59; CVector m_vecPos; bool m_bReverbFlag; uint8 m_bLoopsRemaining; - bool m_bRequireReflection; + bool m_bRequireReflection; // Used for oneshots uint8 m_bOffset; - int32 field_76; + int32 m_nReleasingVolumeDivider; uint8 m_bIsProcessed; uint8 m_bLoopEnded; uint8 field_82; uint8 field_83; int32 calculatedVolume; - int8 field_88; + int8 m_nVolumeChange; uint8 field_89; uint8 field_90; uint8 field_91; @@ -210,7 +210,7 @@ class tPedComment { public: int32 m_nSampleIndex; - int32 m_entityIndex; + int32 m_nEntityIndex; CVector m_vecPos; float m_fDistance; uint8 m_bVolume; @@ -226,9 +226,9 @@ class cPedComments { public: tPedComment m_asPedComments[NUM_PED_COMMENTS_BANKS][NUM_PED_COMMENTS_SLOTS]; - uint8 indexMap[NUM_PED_COMMENTS_BANKS][NUM_PED_COMMENTS_SLOTS]; - uint8 nrOfCommentsInBank[NUM_PED_COMMENTS_BANKS]; - uint8 activeBank; + uint8 m_nIndexMap[NUM_PED_COMMENTS_BANKS][NUM_PED_COMMENTS_SLOTS]; + uint8 m_nCommentsInBank[NUM_PED_COMMENTS_BANKS]; + uint8 m_nActiveBank; uint8 gap_1163[1]; // reversed all methods @@ -289,22 +289,22 @@ class cAudioManager { public: bool m_bIsInitialised; - uint8 field_1; - uint8 field_2; + uint8 field_1; // unused + bool m_bFifthFrameFlag; uint8 m_bActiveSamples; - uint8 field_4; + uint8 field_4; // unused bool m_bDynamicAcousticModelingStatus; - uint8 field_6; - uint8 field_7; - float speedOfSound; + uint8 field_6; // unused + uint8 field_7; // unused + float m_fSpeedOfSound; bool m_bTimerJustReset; - uint8 field_13; - uint8 field_14; - uint8 field_15; + uint8 field_13; // unused + uint8 field_14; // unused + uint8 field_15; // unused int32 m_nTimer; tSound m_sQueueSample; bool m_bActiveSampleQueue; - uint8 gap_109[3]; + uint8 gap_109[3]; // unused tSound m_asSamples[NUM_SOUNDS_SAMPLES_BANKS][NUM_SOUNDS_SAMPLES_SLOTS]; uint8 m_abSampleQueueIndexTable[NUM_SOUNDS_SAMPLES_BANKS][NUM_SOUNDS_SAMPLES_SLOTS]; uint8 m_bSampleRequestQueuesStatus[NUM_SOUNDS_SAMPLES_BANKS]; @@ -328,10 +328,10 @@ public: int32 m_nBridgeEntity; cMissionAudio m_sMissionAudio; int32 m_anRandomTable[5]; - uint8 field_19192; + uint8 field_19192; // time? uint8 m_bUserPause; uint8 m_bPreviousUserPause; - uint8 field_19195; // time? + uint8 field_19195; // unused uint32 m_FrameCounter; // getters diff --git a/src/audio/PoliceRadio.cpp b/src/audio/PoliceRadio.cpp index d162ca4c..91312867 100644 --- a/src/audio/PoliceRadio.cpp +++ b/src/audio/PoliceRadio.cpp @@ -128,18 +128,18 @@ cAudioManager::DoPoliceRadioCrackle() m_sQueueSample.m_counter = 0; m_sQueueSample.m_nSampleIndex = SFX_POLICE_RADIO_CRACKLE; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIsDistant = true; - m_sQueueSample.field_16 = 10; + m_sQueueSample.m_bIs2D = true; + m_sQueueSample.m_nReleasingVolumeModificator = 10; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_RADIO_CRACKLE); m_sQueueSample.m_bVolume = m_anRandomTable[2] % 20 + 15; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = m_sQueueSample.m_bVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_POLICE_RADIO_CRACKLE); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_POLICE_RADIO_CRACKLE); - m_sQueueSample.field_56 = 0; + m_sQueueSample.m_bReleasingSoundFlag = 0; m_sQueueSample.m_bReverbFlag = false; m_sQueueSample.m_bOffset = 63; - m_sQueueSample.field_76 = 3; + m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); } From 95e44668462fc402a233b0be091a0d08836d15af Mon Sep 17 00:00:00 2001 From: Filip Gawin Date: Tue, 7 Apr 2020 15:53:51 +0200 Subject: [PATCH 017/112] Fix CI build --- src/audio/AudioManager.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index eca74350..b73cf3ca 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -4117,15 +4117,15 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nFrequency = 18000; \ } \ m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; \ - m_sQueueSample.field_16 = 4; \ + m_sQueueSample.m_nReleasingVolumeModificator = 4; \ m_sQueueSample.m_bEmittingVolume = 60; \ - m_sQueueSample.field_48 = 0.0f; \ + m_sQueueSample.m_fSpeedMultiplier = 0.0f; \ m_sQueueSample.m_fSoundIntensity = 80.0f; \ - /*m_sQueueSample.field_16 = 4;*/ \ + /*m_sQueueSample.m_nReleasingVolumeModificator = 4;*/ \ m_sQueueSample.m_bReverbFlag = true; \ /*m_sQueueSample.m_bReverbFlag = true;*/ \ - m_sQueueSample.m_bIsDistant = false; \ - m_sQueueSample.field_56 = 1; \ + m_sQueueSample.m_bIs2D = false; \ + m_sQueueSample.m_bReleasingSoundFlag = 1; \ m_sQueueSample.m_nLoopCount = 1; \ m_sQueueSample.m_nLoopStart = 0; \ m_sQueueSample.m_nLoopEnd = -1; \ From 51512db0063385bfb823edee150e3cc59eae7b1b Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 7 Apr 2020 16:48:49 +0200 Subject: [PATCH 018/112] implemented CRubbish --- README.md | 13 +- src/core/config.h | 1 + src/render/SpecialFX.cpp | 235 +++++++++++++++++++++++++++++++++++- src/render/SpecialFX.h | 58 ++++++++- src/vehicles/Automobile.cpp | 18 +-- 5 files changed, 303 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 5d81e0b2..d63b2908 100644 --- a/README.md +++ b/README.md @@ -40,12 +40,8 @@ to reverse at the time, calling the original functions is acceptable. ``` cAudioManager - WIP CBoat -CBrightLights CBulletInfo -CCullZone - only mobile stuff -CCullZones - only mobile stuff CExplosion -CFileLoader - almost done CMenuManager - WIP CMotionBlurStreaks CObject @@ -56,7 +52,6 @@ CPools - save/loading CRecordDataForChase CRecordDataForGame CRoadBlocks -CSceneEdit CSkidmarks CSpecialFX CStats @@ -67,6 +62,14 @@ CWorld GenericLoad ``` +The following classes have only unused or practically unused code left: +``` +CCullZone - only mobile stuff +CCullZones - only mobile stuff +CFileLoader - almost done +CSceneEdit +``` + ### Coding style I started writing in [Plan 9 style](http://man.cat-v.org/plan_9/6/style), diff --git a/src/core/config.h b/src/core/config.h index 2422ab13..1dc6abe9 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -73,6 +73,7 @@ enum Config { NUMCORONAS = 56, NUMPOINTLIGHTS = 32, NUM3DMARKERS = 32, + NUMBRIGHTLIGHTS = 32, NUMSHINYTEXTS = 32, NUMMONEYMESSAGES = 16, NUMPICKUPMESSAGES = 16, diff --git a/src/render/SpecialFX.cpp b/src/render/SpecialFX.cpp index 71fca3ba..f126e197 100644 --- a/src/render/SpecialFX.cpp +++ b/src/render/SpecialFX.cpp @@ -117,8 +117,6 @@ void CBulletTrace::Update(void) m_framesInUse++; } -WRAPPER void CBrightLights::RegisterOne(CVector pos, CVector up, CVector right, CVector fwd, uint8 type, uint8 unk1, uint8 unk2, uint8 unk3) { EAXJMP(0x51A410); } - RpAtomic * MarkerAtomicCB(RpAtomic *atomic, void *data) { @@ -405,6 +403,234 @@ C3dMarkers::Update() } +#define BRIGHTLIGHTS_MAX_DIST (60.0f) // invisible beyond this +#define BRIGHTLIGHTS_FADE_DIST (45.0f) // strongest between these two +#define CARLIGHTS_MAX_DIST (30.0f) +#define CARLIGHTS_FADE_DIST (15.0f) // 31 for close lights + +int CBrightLights::NumBrightLights; +CBrightLight CBrightLights::aBrightLights[NUMBRIGHTLIGHTS]; + +void +CBrightLights::Init(void) +{ + NumBrightLights = 0; +} + +void +CBrightLights::RegisterOne(CVector pos, CVector up, CVector side, CVector front, + uint8 type, uint8 red, uint8 green, uint8 blue) +{ + if(NumBrightLights >= NUMBRIGHTLIGHTS) + return; + + aBrightLights[NumBrightLights].m_camDist = (pos - TheCamera.GetPosition()).Magnitude(); + if(aBrightLights[NumBrightLights].m_camDist > BRIGHTLIGHTS_MAX_DIST) + return; + + aBrightLights[NumBrightLights].m_pos = pos; + aBrightLights[NumBrightLights].m_up = up; + aBrightLights[NumBrightLights].m_side = side; + aBrightLights[NumBrightLights].m_front = front; + aBrightLights[NumBrightLights].m_type = type; + aBrightLights[NumBrightLights].m_red = red; + aBrightLights[NumBrightLights].m_green = green; + aBrightLights[NumBrightLights].m_blue = blue; + + NumBrightLights++; +} + +static float TrafficLightsSide[6] = { -0.09f, 0.09f, 0.162f, 0.09f, -0.09f, -0.162f }; +static float TrafficLightsUp[6] = { 0.162f, 0.162f, 0.0f, -0.162f, -0.162f, 0.0f }; +static float LongCarHeadLightsSide[8] = { -0.2f, 0.2f, -0.2f, 0.2f, -0.2f, 0.2f, -0.2f, 0.2f }; +static float LongCarHeadLightsFront[8] = { 0.1f, 0.1f, -0.1f, -0.1f, 0.1f, 0.1f, -0.1f, -0.1f }; +static float LongCarHeadLightsUp[8] = { 0.1f, 0.1f, 0.1f, 0.1f, -0.1f, -0.1f, -0.1f, -0.1f }; +static float SmallCarHeadLightsSide[8] = { -0.08f, 0.08f, -0.08f, 0.08f, -0.08f, 0.08f, -0.08f, 0.08f }; +static float SmallCarHeadLightsFront[8] = { 0.08f, 0.08f, -0.08f, -0.08f, 0.08f, 0.08f, -0.08f, -0.08f }; +static float SmallCarHeadLightsUp[8] = { 0.08f, 0.08f, 0.08f, 0.08f, -0.08f, -0.08f, -0.08f, -0.08f }; +static float BigCarHeadLightsSide[8] = { -0.15f, 0.15f, -0.15f, 0.15f, -0.15f, 0.15f, -0.15f, 0.15f }; +static float BigCarHeadLightsFront[8] = { 0.15f, 0.15f, -0.15f, -0.15f, 0.15f, 0.15f, -0.15f, -0.15f }; +static float BigCarHeadLightsUp[8] = { 0.15f, 0.15f, 0.15f, 0.15f, -0.15f, -0.15f, -0.15f, -0.15f }; +static float TallCarHeadLightsSide[8] = { -0.08f, 0.08f, -0.08f, 0.08f, -0.08f, 0.08f, -0.08f, 0.08f }; +static float TallCarHeadLightsFront[8] = { 0.08f, 0.08f, -0.08f, -0.08f, 0.08f, 0.08f, -0.08f, -0.08f }; +static float TallCarHeadLightsUp[8] = { 0.2f, 0.2f, 0.2f, 0.2f, -0.2f, -0.2f, -0.2f, -0.2f }; +static float SirenLightsSide[6] = { -0.04f, 0.04f, 0.06f, 0.04f, -0.04f, -0.06f }; +static float SirenLightsUp[6] = { 0.06f, 0.06f, 0.0f, -0.06f, -0.06f, 0.0f }; +static RwImVertexIndex TrafficLightIndices[4*3] = { 0, 1, 5, 1, 2, 3, 1, 3, 4, 1, 4, 5 }; +static RwImVertexIndex CubeIndices[12*3] = { + 0, 2, 1, 1, 2, 3, 3, 5, 1, 3, 7, 5, + 2, 7, 3, 2, 6, 7, 4, 0, 1, 4, 1, 5, + 6, 0, 4, 6, 2, 0, 6, 5, 7, 6, 4, 5 +}; + +void +CBrightLights::Render(void) +{ + int i, j; + CVector pos; + + if(NumBrightLights == 0) + return; + + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, nil); + + for(i = 0; i < NumBrightLights; i++){ + if(TempBufferIndicesStored > TEMPBUFFERINDEXSIZE-40 || TempBufferVerticesStored > TEMPBUFFERVERTSIZE-40) + RenderOutGeometryBuffer(); + + int r, g, b, a; + float flicker = (CGeneral::GetRandomNumber()&0xFF) * 0.2f; + switch(aBrightLights[i].m_type){ + case BRIGHTLIGHT_TRAFFIC_GREEN: + r = flicker; g = 255; b = flicker; + break; + case BRIGHTLIGHT_TRAFFIC_YELLOW: + r = 255; g = 128; b = flicker; + break; + case BRIGHTLIGHT_TRAFFIC_RED: + r = 255; g = flicker; b = flicker; + break; + + case BRIGHTLIGHT_FRONT_LONG: + case BRIGHTLIGHT_FRONT_SMALL: + case BRIGHTLIGHT_FRONT_BIG: + case BRIGHTLIGHT_FRONT_TALL: + r = 255; g = 255; b = 255; + break; + + case BRIGHTLIGHT_REAR_LONG: + case BRIGHTLIGHT_REAR_SMALL: + case BRIGHTLIGHT_REAR_BIG: + case BRIGHTLIGHT_REAR_TALL: + r = 255; g = flicker; b = flicker; + break; + + case BRIGHTLIGHT_SIREN: + r = aBrightLights[i].m_red; + g = aBrightLights[i].m_green; + b = aBrightLights[i].m_blue; + break; + } + + if(aBrightLights[i].m_camDist < BRIGHTLIGHTS_FADE_DIST) + a = 255; + else + a = 255*(1.0f - (aBrightLights[i].m_camDist-BRIGHTLIGHTS_FADE_DIST)/(BRIGHTLIGHTS_MAX_DIST-BRIGHTLIGHTS_FADE_DIST)); + // fade car lights down to 31 as they come near + if(aBrightLights[i].m_type >= BRIGHTLIGHT_FRONT_LONG && aBrightLights[i].m_type <= BRIGHTLIGHT_REAR_TALL){ + if(aBrightLights[i].m_camDist < CARLIGHTS_FADE_DIST) + a = 31; + else if(aBrightLights[i].m_camDist < CARLIGHTS_MAX_DIST) + a = 31 + (255-31)*((aBrightLights[i].m_camDist-CARLIGHTS_FADE_DIST)/(CARLIGHTS_MAX_DIST-CARLIGHTS_FADE_DIST)); + } + + switch(aBrightLights[i].m_type){ + case BRIGHTLIGHT_TRAFFIC_GREEN: + case BRIGHTLIGHT_TRAFFIC_YELLOW: + case BRIGHTLIGHT_TRAFFIC_RED: + for(j = 0; j < 6; j++){ + pos = TrafficLightsSide[j]*aBrightLights[i].m_side + + TrafficLightsUp[j]*aBrightLights[i].m_up + + aBrightLights[i].m_pos; + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored+j], r, g, b, a); + RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored+j], pos.x, pos.y, pos.z); + } + for(j = 0; j < 4*3; j++) + TempBufferRenderIndexList[TempBufferIndicesStored+j] = TrafficLightIndices[j] + TempBufferVerticesStored; + TempBufferVerticesStored += 6; + TempBufferIndicesStored += 4*3; + break; + + case BRIGHTLIGHT_FRONT_LONG: + case BRIGHTLIGHT_REAR_LONG: + for(j = 0; j < 8; j++){ + pos = LongCarHeadLightsSide[j]*aBrightLights[i].m_side + + LongCarHeadLightsUp[j]*aBrightLights[i].m_up + + LongCarHeadLightsFront[j]*aBrightLights[i].m_front + + aBrightLights[i].m_pos; + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored+j], r, g, b, a); + RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored+j], pos.x, pos.y, pos.z); + } + for(j = 0; j < 12*3; j++) + TempBufferRenderIndexList[TempBufferIndicesStored+j] = CubeIndices[j] + TempBufferVerticesStored; + TempBufferVerticesStored += 8; + TempBufferIndicesStored += 12*3; + break; + + case BRIGHTLIGHT_FRONT_SMALL: + case BRIGHTLIGHT_REAR_SMALL: + for(j = 0; j < 8; j++){ + pos = SmallCarHeadLightsSide[j]*aBrightLights[i].m_side + + SmallCarHeadLightsUp[j]*aBrightLights[i].m_up + + SmallCarHeadLightsFront[j]*aBrightLights[i].m_front + + aBrightLights[i].m_pos; + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored+j], r, g, b, a); + RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored+j], pos.x, pos.y, pos.z); + } + for(j = 0; j < 12*3; j++) + TempBufferRenderIndexList[TempBufferIndicesStored+j] = CubeIndices[j] + TempBufferVerticesStored; + TempBufferVerticesStored += 8; + TempBufferIndicesStored += 12*3; + break; + + case BRIGHTLIGHT_FRONT_TALL: + case BRIGHTLIGHT_REAR_TALL: + for(j = 0; j < 8; j++){ + pos = TallCarHeadLightsSide[j]*aBrightLights[i].m_side + + TallCarHeadLightsUp[j]*aBrightLights[i].m_up + + TallCarHeadLightsFront[j]*aBrightLights[i].m_front + + aBrightLights[i].m_pos; + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored+j], r, g, b, a); + RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored+j], pos.x, pos.y, pos.z); + } + for(j = 0; j < 12*3; j++) + TempBufferRenderIndexList[TempBufferIndicesStored+j] = CubeIndices[j] + TempBufferVerticesStored; + TempBufferVerticesStored += 8; + TempBufferIndicesStored += 12*3; + break; + + case BRIGHTLIGHT_SIREN: + for(j = 0; j < 6; j++){ + pos = SirenLightsSide[j]*aBrightLights[i].m_side + + SirenLightsUp[j]*aBrightLights[i].m_up + + aBrightLights[i].m_pos; + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored+j], r, g, b, a); + RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored+j], pos.x, pos.y, pos.z); + } + for(j = 0; j < 4*3; j++) + TempBufferRenderIndexList[TempBufferIndicesStored+j] = TrafficLightIndices[j] + TempBufferVerticesStored; + TempBufferVerticesStored += 6; + TempBufferIndicesStored += 4*3; + break; + + } + } + + RenderOutGeometryBuffer(); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); + NumBrightLights = 0; +} + +void +CBrightLights::RenderOutGeometryBuffer(void) +{ + if(TempBufferIndicesStored != 0){ + LittleTest(); + if(RwIm3DTransform(TempBufferRenderVertices, TempBufferVerticesStored, nil, rwIM3D_VERTEXUV)){ + RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, TempBufferRenderIndexList, TempBufferIndicesStored); + RwIm3DEnd(); + } + TempBufferVerticesStored = 0; + TempBufferIndicesStored = 0; + } +} + + + int CShinyTexts::NumShinyTexts; CShinyText CShinyTexts::aShinyTexts[NUMSHINYTEXTS]; @@ -711,6 +937,11 @@ STARTPATCHES InjectHook(0x51B400, C3dMarkers::Render, PATCH_JUMP); InjectHook(0x51B3B0, C3dMarkers::Shutdown, PATCH_JUMP); + InjectHook(0x5197A0, CBrightLights::Init, PATCH_JUMP); + InjectHook(0x51A410, CBrightLights::RegisterOne, PATCH_JUMP); + InjectHook(0x5197B0, CBrightLights::Render, PATCH_JUMP); + InjectHook(0x51A3B0, CBrightLights::RenderOutGeometryBuffer, PATCH_JUMP); + InjectHook(0x51A5A0, CShinyTexts::Init, PATCH_JUMP); InjectHook(0x51AAB0, CShinyTexts::RegisterOne, PATCH_JUMP); InjectHook(0x51A5B0, CShinyTexts::Render, PATCH_JUMP); diff --git a/src/render/SpecialFX.h b/src/render/SpecialFX.h index 22ee502e..1cff55b3 100644 --- a/src/render/SpecialFX.h +++ b/src/render/SpecialFX.h @@ -37,12 +37,6 @@ public: static void Update(void); }; -class CBrightLights -{ -public: - static void RegisterOne(CVector pos, CVector up, CVector right, CVector fwd, uint8 type, uint8 unk1 = 0, uint8 unk2 = 0, uint8 unk3 = 0); -}; - enum { MARKERTYPE_0 = 0, @@ -95,6 +89,58 @@ public: static RpClump* (&m_pRpClumpArray)[NUMMARKERTYPES]; }; +enum +{ + BRIGHTLIGHT_INVALID, + BRIGHTLIGHT_TRAFFIC_GREEN, + BRIGHTLIGHT_TRAFFIC_YELLOW, + BRIGHTLIGHT_TRAFFIC_RED, + + // white + BRIGHTLIGHT_FRONT_LONG, + BRIGHTLIGHT_FRONT_SMALL, + BRIGHTLIGHT_FRONT_BIG, + BRIGHTLIGHT_FRONT_TALL, + + // red + BRIGHTLIGHT_REAR_LONG, + BRIGHTLIGHT_REAR_SMALL, + BRIGHTLIGHT_REAR_BIG, + BRIGHTLIGHT_REAR_TALL, + + BRIGHTLIGHT_SIREN, // unused + + BRIGHTLIGHT_FRONT = BRIGHTLIGHT_FRONT_LONG, + BRIGHTLIGHT_REAR = BRIGHTLIGHT_REAR_LONG, +}; + +class CBrightLight +{ +public: + CVector m_pos; + CVector m_up; + CVector m_side; + CVector m_front; + float m_camDist; + uint8 m_type; + uint8 m_red; + uint8 m_green; + uint8 m_blue; +}; + +class CBrightLights +{ + static int NumBrightLights; + static CBrightLight aBrightLights[NUMBRIGHTLIGHTS]; +public: + static void Init(void); + static void RegisterOne(CVector pos, CVector up, CVector side, CVector front, + uint8 type, uint8 red = 0, uint8 green = 0, uint8 blue = 0); + static void Render(void); + static void RenderOutGeometryBuffer(void); +}; + + enum { SHINYTEXT_WALK = 1, diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index e6b936f6..0c8f0dd4 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -253,7 +253,7 @@ CAutomobile::ProcessControl(void) ProcessCarAlarm(); - // Scan if this car is committing a crime that the police can see + // Scan if this car sees the player committing any crimes if(m_status != STATUS_ABANDONED && m_status != STATUS_WRECKED && m_status != STATUS_PLAYER && m_status != STATUS_PLAYER_REMOTE && m_status != STATUS_PLAYER_DISABLED){ switch(GetModelIndex()) @@ -1727,9 +1727,9 @@ CAutomobile::PreRender(void) // bright lights if(Damage.GetLightStatus(VEHLIGHT_FRONT_LEFT) == LIGHT_STATUS_OK && !bNoBrightHeadLights) - CBrightLights::RegisterOne(lightL, GetUp(), GetRight(), GetForward(), pHandling->FrontLights + 4); + CBrightLights::RegisterOne(lightL, GetUp(), GetRight(), GetForward(), pHandling->FrontLights + BRIGHTLIGHT_FRONT); if(Damage.GetLightStatus(VEHLIGHT_FRONT_RIGHT) == LIGHT_STATUS_OK && !bNoBrightHeadLights) - CBrightLights::RegisterOne(lightR, GetUp(), GetRight(), GetForward(), pHandling->FrontLights + 4); + CBrightLights::RegisterOne(lightR, GetUp(), GetRight(), GetForward(), pHandling->FrontLights + BRIGHTLIGHT_FRONT); // Taillights @@ -1798,9 +1798,9 @@ CAutomobile::PreRender(void) // bright lights if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK) - CBrightLights::RegisterOne(lightL, GetUp(), GetRight(), GetForward(), pHandling->RearLights + 8); + CBrightLights::RegisterOne(lightL, GetUp(), GetRight(), GetForward(), pHandling->RearLights + BRIGHTLIGHT_REAR); if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK) - CBrightLights::RegisterOne(lightR, GetUp(), GetRight(), GetForward(), pHandling->RearLights + 8); + CBrightLights::RegisterOne(lightR, GetUp(), GetRight(), GetForward(), pHandling->RearLights + BRIGHTLIGHT_REAR); // Light shadows if(!alarmOff){ @@ -1873,9 +1873,9 @@ CAutomobile::PreRender(void) CCoronas::TYPE_STAR, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f); if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK) - CBrightLights::RegisterOne(lightL, GetUp(), GetRight(), GetForward(), pHandling->RearLights + 4); + CBrightLights::RegisterOne(lightL, GetUp(), GetRight(), GetForward(), pHandling->RearLights + BRIGHTLIGHT_FRONT); if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK) - CBrightLights::RegisterOne(lightR, GetUp(), GetRight(), GetForward(), pHandling->RearLights + 4); + CBrightLights::RegisterOne(lightR, GetUp(), GetRight(), GetForward(), pHandling->RearLights + BRIGHTLIGHT_FRONT); }else{ // braking if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK) @@ -1889,9 +1889,9 @@ CAutomobile::PreRender(void) CCoronas::TYPE_STAR, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f); if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK) - CBrightLights::RegisterOne(lightL, GetUp(), GetRight(), GetForward(), pHandling->RearLights + 8); + CBrightLights::RegisterOne(lightL, GetUp(), GetRight(), GetForward(), pHandling->RearLights + BRIGHTLIGHT_REAR); if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK) - CBrightLights::RegisterOne(lightR, GetUp(), GetRight(), GetForward(), pHandling->RearLights + 8); + CBrightLights::RegisterOne(lightR, GetUp(), GetRight(), GetForward(), pHandling->RearLights + BRIGHTLIGHT_REAR); } }else{ if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK) From 1f8e073c0a446a6c6fe959cc39e27df6e456becc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Tue, 7 Apr 2020 02:15:55 +0300 Subject: [PATCH 019/112] Menu map --- gamefiles/menu.txd | Bin 0 -> 10244648 bytes src/core/Camera.cpp | 42 ++++++-- src/core/Camera.h | 14 +++ src/core/Frontend.cpp | 219 ++++++++++++++++++++++++++++++++++++++++- src/core/Frontend.h | 35 ++++++- src/core/MenuScreens.h | 25 +++++ src/core/Radar.cpp | 185 +++++++++++++++++++++++++--------- src/core/Radar.h | 10 +- src/core/config.h | 2 +- 9 files changed, 463 insertions(+), 69 deletions(-) create mode 100644 gamefiles/menu.txd diff --git a/gamefiles/menu.txd b/gamefiles/menu.txd new file mode 100644 index 0000000000000000000000000000000000000000..a2ad4cc9ce9685b897bf28b472e8bff32db070fd GIT binary patch literal 10244648 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

!S|AW^0V;lE}wE^(e{UAA9^*?BTKdA13)kC2A z9?XW-Pr13^ad1!_2CB;jdYwA0!W&fggYM!5)%_rU!s>sJzhM|uwL<_|KlC~u)D8fTS?A<{=e$AcK;H@l@cDqCumkM@fQ2VGtfBQjD4aojQ2jqp zXDx!}9Z~}VhV8juqh%z0%gE929u4o|ng&4U<Ms}u)omcL`~lvtMoRsLOD(7^2O7@+)%_s< zf$C~FMyvlp{)S;t9gmDb;vhaQ8e}$TUIAY3qlGg_925^AH3M zj|@~cjN;L{Z8QzgJ`I5CVqA3zt;9iR?|{x8##i@)i1`7gU9G${sYs{x*z0E zbPTKKLE<1b41@R}4C8}n7#}&zz~d~?@CAh-m=6tW&>762IH6Tq!euU~%`rOvPy6y? zw2U4NstyIRx|4+cO-yc-xBV&AZKS&N+{SRu-fX*&&|ULov9bR_`}1j4|AW>tqSXJOdI?k?A<>{Z3|k!u z69d(wpgwGMV&eayur~m7b`z-G0&+LZ51{r87(@5^f&7e&LG?O}4`PEbj1QwhVjv9S zBhxT8$b8UR3Q$u9)+rh%cG z2I##vJ2xy0To-`G*lAV&gUWl1z5lTKKPLyWCJt#0JE#r=)tMj+VuLV<4Z@)M6om7` z!~cWk)v47lrKUNcI0U&BbRG|gM#dn&AlKa>HVnh-aHRGDvKUAmG9SbSVHEN7^#2%Z z0Fml`P@4eM{|AkyP}9$(m<1Z&0-bw2T22k!a%wd0M&oWY4NyM~fcoR4l%i1R`ow<+#Xctfa)G_zZ6#YBdz_1)sf)(5j2jCgkf?Z8YB;@^FVC?5F2DR zXk8g4;XqBjp!01&^*#v0+zX;%7*Ky?&oO(3Yg0@Yg}464&{VPts_ z8&v0k^n%vcf$9=khZ!OBLFf6y+yrtT2!s3rqCptMMy|7AY>*xh8-zh@5C*Y97{rEQ z7#~D~FiadogZLl}vIo@m0EaIqtYLLOj0Ww)1kC~D=l=)I%MkJtE#*ONfYEYl=#^8W zaW)!fqiKNpX#lkUo|fe;ve}^f_&{^Opn4yMX;uG&))!!${R66-pcqtNf$A+#{RpE$ zY#0WKp<|F7NDNfxf$Bey86f|JySNNUpBA*vA9S`4$Q>YefiT>S&@*~rZUwm)#zv>n zbbpt=$r zgXBOMBo3mHF-#0p|AFiR)tR-)$>2K-L3Io*F=%Zg$SojyLGA!y5FZ(X#6TG2E)WK} z6NEu*WDFAn(IAX22NMI)APka+(J(g19+2IjJ%{LRE#&YA&BuWB&@ya@H5+u#Me698 zIHO~#qiJ9?4UEt<09rFnYS4pep`^9iv*_JI2SptE&Bbv`ntMg0$2&j8v72b$-{ zsE?p`{($N$P`yPAMplc=2I+D_K8B42&}v)-)Q$qxzaYC{c7tdThPemE2Du4@ zLFz#?GDa3dW}~Y?mxJ+FNe>J2sbxy-H&bDA5`~)FfHnT(3*VETr;>Xg4R2rItf(&gX&Lky$P%DvC*LV zA0!T<(J{I>5+76#g3X5N0o8|~IdPDkrLnOjpCJf3FCWy-0+|ak2V@?o-bKMsyTJB> z+yccQwJ;1)4`PF85C*Z)F-RPSL2@8Ahz4O88%Cpxf$Rpk5k!O5R)WGA6y7M|4~>VO zygcxo%lOg_J>@`WUyPPnL!-jq?`rK=Y#t8_{;#E?*~!` zs^@WGTFn20*8YS0|DZYt+7AWSNjW*-x(8H`fiS2Z17Tz~h>wgxaztZjT@0!VK^RmY zf-tE52i1$9_4=T*gFt)sv8|!-w6y#WIwJwp-v^zM2=WK04h8l5!EQ)T2fH7a`_RQf ze2_jEjm}2rBdbG}gNY;4AT|ht)Pej8!yva})cw#n0Qm)kLFY1p{D?2@&`S<9_66Dl zJGvH-@^WRgY#t56(KIml(*UUcft9a>`tUGy=rm{y7c>Td>l{2#I;e<`2cPkWtL_Jh zQ@j2L)uEs|2-MF6)ivO{2vq;%=7P_t1=Yu(Itzqh^%sl{;v-|2IE=<7hb{(E3$_E= z767q9bt8xd%?W_kC4$@sS|0#f6Hyoy^&b?LAU0^+qAn!`ygvctc91%d`5?U@8Xbe| zf{B6HAdJq3iNR=ec@Q6)97r4+#->u3Uht@Zsx)f9=f$Apo`U_OYA&Y_7AdD;y zPL_|kUK!*`JlD{*lnP?5p*X(b~d<;0+I)*1Dk<% zEdgt5ti#E|8X`5;VDP5_Q2hw%@4(7eY~#={Ieau|jUA|e z51QLYA45nF4Ezt0!&mRaye7MIPe;CP<;=sdqDM0ZZ7=3ALM!q8=Dj{ zm|75xj6roE2!q9t#sNU}Bd84k!Z0?7hGCdESRdLvK1>W`E(nA8$TWxz!!S8yK1d9P zk;Or5ba7-cm>h_Pi6hf6Hb@?XL40t#1{Chlb`3ZlKx~j02G0^@7 zP`d!su7rsV1Py8%kB$Qj{&H-zt{IJ^(KJAM8UU@`hn1_KvJS>3l}-x?0N3%L`F+s% zHE8@4)Rq91ouIxytbQj%Q(FIn_SyGTSHtW7rnI#Gp#DEfos*LT9#aR`v(S1KR9As8 zsJ;SWbT*6+qG1@M4u+A%U~CW#lLyftJ{Y650l@A+76Z8n%7^L0Mk9-X*dPotA4H>L zm^eBOQ-@0&T^`0qreS(PVjwmQ!}y@F4fOUGJU&3}fSjEFpt>Hk7XZ{&grz-Dn{rZd zF*sczj}5@&=|u-SIsFHvSGyp2oKy@^%97S#mz{H59L2(T0 zw9o~K>Pk+c23TJ&>R40T_k9}2$t?Z>jFS+ z0MI!BpuG<;aeC9B_ADsBfYSLW9-QUbXuOQZ%V-)PJ`I4@T!Yp-!^%?7IXN&ksWfO0 z0jREr)#IQ#A5{Ot_{7rW_W!-Ct^b48&XvW*{m)NK1lRwd{^NwAqW>s$4`|(AcJ_Zz zT??wGKp0d0_z{e#AtLF?&2^*^|Ng7&pRbruN2#6UENkBmWLAPf_Ov0*e!97Kb} zKp343pn8~`v`UE{P&*Se z77**@H999SLeEJbtZ|A$_u zlfoyq|8K3Q_a9^@*zA~?{{>M||3Q8KFjrS_{SPt+R8N5WozQv(RL_9cqJiop5C+vx zAPi!IFpLeOk;Ty2$b6W35RHyO>R=co2V#S05QedlX%HKPLGmyRKFz{&r zRCj{PFj$!xsLldmTx^gW2qVj*^RdZc69ef(#xOM? z8idj1U}7K|gkka^HVA|GAR2~2d}Is~2k~Jvhz-IpK8QxfAUR|VlLLvt*vK?U9E4$F z$ZVJxj0VZUFu48(#RI6$htV)L8Xq*~531)ueQnUVJBSU!U^75^plb#}>OkuYKxa!) znubB?m=p}kKcM?ELF-OHcL#vlA)v9S(eiEJ%eT=u7>$F`G=Mt|fc7@S$~w?`E6{iV z`o2AwJTWw=3HVM9(()hFFND`8pgIS(?hmcLhu2R? zZ2*uMM*W2*4^snE2cu!)$TWxz!XPyu3}X{ZgYcM zK{PUk$s^MsHZn$650e9lgW2in|KW20p!fjQ-5?BNgD{K@qM^7OI$i^sQv&tzL3KPl zPN8bRd}td0)II=V(4EWl9t%LuFQB#nC_jMO(}_MlqxY!~g7MDLx@KVNn$d6{eBlln zt3)oZKy`n(t1I|E8qi%n$a2K8L1kVcv>qn6?g!~3rvDG>=Y#5eFpi1>*Z&|f&=^Lv zr|16#Jw4$4<2*cEYXc$J<0~1H4L25vJ7!6`0 zV~{uu!^B~HWEvy~;v>@_HVlL0kTFOc#D~!!HVnhWh^0aLU}`~ZbPSRMjRC;xacG>t z>TfU&s?(9hp=10Q^*)*!WW6A@ptS=adq8JDf!dSEZCzs1Gqu!##sfg@>(O#>@Rft3 zaWWbwBP|Vp#wC%*M?qyHsEh>d1pt*(Ae!8=FF!o|KWGjBRF9L3iK+iV`~1LlKdA2y zs{f%lFCqfG4sd=?4`k0Dw4MOf381lOQ2hg{hhTLRj18kf;>c_mA6*P2j*OAzL2P6U zQU~HA(;zkoBa0)mVR9fb5C-u<7{mr)5E~tX#6cJ&4x>SA5Qgz#G)N4FL1M@lBo5+( zXcz|ZkugXd#D~!^HX%Mp9SDQ!W^kPijURA34VjJH4#>@goZkSG2gwn_(D@(Go_06b%2UnU0tx*D%N1$>Egh6YVL1LhK zA5{N?#sQG!L28J_p!3@4QUAm1eo+07ghA~B5T4i7^&ecnfa(coy@9K40*Qk#s9r** zk=YXZ32)u z2t(r%EC=EvW0)M07|3kUSODnU01yqD7XYm%h;VhKXss);`2k%WXx-{)c{sSr!_oK{ zjgOI(20&+-B9}{`b5%igKB(>oVGx_#eiG>ZU(g;va{K-ueW0-jY;*p|V&M88+UEze zk=g(t{=DvPNdF&H7eMEbL4AMZ`Uh4I!DxJPAT=P2O${zFkT?v3^nx&m52HbB5QgzV zG%^OsfiSulIv=D4hCy=3Y!DxWVPe>5kUR*(y<%uKMaG~0HC$ZFm=SzX@P3)diq?ezLRwgX$bu{ez1}R|8T9!yq{r28n^# z=rlGlWHrcakXjf<7KgF%$$`|sFiahc28n~%AR2^WY!D5?FfkAthCyN=4B~@m7)IuU z*dPp&L#IJvAPf=*VGtXHL2M8Pv0)g*2Voc=)+PhD0YG&%D9%7MHVl)4(a36GVlWz; z98?T6CID&&fX;>hofQpg{}P+NDOCr$Ut_d996aUWXk3iO#Yjp6p!yxT3283a35Dmj1aTo@Pf!Ht_#s=|07{o`$ z=wdKFG7Vzm!Z5Qy@*p-TG)OH7gY>~M^nBpCXUPoiGeV>7>EzT=yEVIkT?h<^O4ywIgl6(gTz1>oevU& zVQg}^#9(?rG)N6Hjg1Xb1H&+R7$2ENmqX^m*dQ8&VfsL97zV``sJ;iq9f$^FQ2hf}iJdBhy0IKVe$MivG|AOx9!B+Q!$~({)0I0tLDz}Kmpml^4*Z)L}|AXs( z9DRS#nE;^rA9Rl#sE&cvEg&{B28o0CFdD=LVGtjLVQh37mmEkP2qVjb*dPoO$HxZA zfiSXKWIjk7gptLFVT1I*Fi1TJBlD5jFgXwn!XPWQ?p1#0FuIJd6gh zK^VjbZL{x2p>>=MNoQ2GuFZ7*yYY_%Is8hGCc(j0TB=*dPpJ!)TBg z41>f#7{mwBAPi%JXb=X8A!C>rj0VYJV@4#vkugVca9Ob)~bwE;jh%6tH*zQ%_^bvX#*Q-eniGzZX>mWH+d z2i5nWbFn~q0hCuj?EuhTK2ZCaP=3HA4>E7GOdR+!aWoD_<6tDD0Z=`UyzUQFE`iql zf$D2ed4{d-hlzpI5{p4)Bw4H20E`B;38JF@&+h2>52`~z z^$Io`BnHCB@*p+{Ba4IBAdF2MSq#PosYS*hacmf*23Z`$hhdO7G8@E4#~^u-7>EX8 z5E~l?$$>CP4n)H+h!4UrK8S|#VKht(#0Oz?KC&1{4uoN1$ZU`p2!q5x7{o@#ATbmS z9R~o3VVw^E)#J!@J&X;bLGt)87Im=s25jS9pfNL0eGOU<14`c@3~L8~<_3t(8_4QF zc@eZ$W+aq7qkbH%V@K1#z@-7u7(Zy;F>?6>n#%;;V@{~<2ekn}eH~=I_}HMaP0-o= z6xIL4&i}*ed}KN*>ObfVpc!p#;Ql{yJp*Ec>J(%enGKQyVVD?*4Z|QY5C-v)X%HKP zk;P$bT;ec!7!6Vf!o={&QG?BFWHFGLAdF26SsccOsRQvr7{mu*V%W&)kky04K^P>4 zzE%^~1_197gw^YyIvj>!Vz_9KI*=TU2C+dH#0O#M8H1oX2T)%hJ$-}b?7?-vlhc1t z-H(hx`G=e~0O-suP`(^37YD9f91Z)?upjPe0JI)2z`+4yTobep88lZ9>eqnkczl?Y zbpW9L6R6J*Y6F01axhW-e`r4+Hr@}Wq3r73lguWHDqpT;eb_ zAR2^W>OgF47?(Uq9EM@~KztAzMkBKciGkFDFiahY24RpG2*cRuG)NAFafyTEKp0sb znT<;hBo4wbwJ`I6jQ7 z7RHCsP`$8w20-Z-z5WOBL3KVTuYhQD3>pgnouP%T?Eun?4TJjsp!WB0FMme;H(JMz zrh$P;1E4W~TyvD5v47AV0HFR0zPcYI2T}*3v6W-k#6WidP*neu(*Fn5`B72eJAgsw z{(<`bS)rl-k^BFk`UO;fz%Vi�FuQ9EgVTk!ctkBoD$cJ~|DO17Vmrhz-LaF%Smv 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

lszeza`>N&}#>5tN2uX$O>sL3Jf){vWg_9$!5T zs*geaa+qFZ8k8qJBeSe_&0c3m7*&zRc z>VDAtJE#t(2L_EbfYu~{#y?Ds3}S;YIvbgfO&%l$!yvUFjExTyhtVK4Fg7+CCI(Um!XQ2fgX(`!ItRroXsi~* zZb(i24^x9qgY9)>gXBRN#D`%J9~mQyBeP*@ki}qZ5Dk)t z(J(fM55h1$h=yTo;vg{)2B`tjAPi$8)5vUW%Ig%9NpqL2gH{e?j#>C>?>) z69|LKPLMik`wvupqT7v)4{8G-&y#}O1ac!NosZ(tI-XD(K(GHnc^1@12G#$dzB8x} zht;K^`V<+19a4{Da&98p{LmVRn*Q|AWpu1dUyQ#{FR!RR4p@ zZ4d^P>mUqb!!U>s!XQ36jY|w94#FVyFbv}((=awj4UCOUgV->PtOmx0$-!ulI1Gct zkl8RksQw4d|A4|XBPi&9PhQ@CY<+)_UYH&b4Z|>T7$2F2$)VHeYGCppaS$7ZL40f& zCJ&;~Sq#R8iNk1+I5Hbs{SV4p zw5S`YUDx6=4_pVMjs1h_VB~R0PRPK+;kG2g! zX#h0;jh=o$bEGgFwX`f|DZYnB#vwcIvdo^2i3py?)!t<93Z!V`~VyK2eko6t^YyemZ16{ z)bEGkSqEVTM799fn2jn*x2Kf!721HX6 zgUlobgWLqN7v>%ioiTquIL#L>KlXnVkA?xEG=QFdK;>lq(xd-DIB)5Z|2c~fW5v0P z5C6|xZ~!IGgVG-e=Pfz%KX(aky|~PTiG$KU$Q&33iG%C|(Zphq`$1)Y!Lp;^`~YDe z`w!w5E<5%gDssdjaIz|)wOI z7#7yXtKa+|PS|A4Td;p%{sYm2#eX2TAY+hQP1nBrKZ-}gfKVC$rD2S;v*zu8Qz!MDBGizCGzP?&U?A|qt%c;A-daPd{A8sD%0qRL4Lz!zrnO~ zB-Q_B+S>m?`v*YvKd9~pwE>EcjqLg#6#pZoPNt_nhkgCO=FNX>^(?5I8fXl17sw5; zasxzz_@J~tibv~zLTLb$RzPV6hCy`@Xv`E;hl4PPj|;=}pwl4zxbzSsj?GQP=!2;N zxf|hcl%dZtp>o>VJJTwf~?qgkXCBL2ZE4 zgCo2C2c-{s){7&>uHjz)W2<9fx@Q2hbTdScLcKgwnC(fB5?N z_~bxk578J}x8qe0QZu>+0Ha?ED(6QrtnR~2gVGkLT!djzT??)|3Dp1S`e6D&G$`Cb z=8%g)X29`k(A*pTaR_94K=mldey|_bBIFsh8>H&tYBvL+AdH^Cu`Bf%v#EUF&~v`G`3N0CF3o z90Zklqj)qdu%`h~Isv6;7zWKJf$K_W{f}I?BD2x;!SsXDJ}9h_)so7Fo3#ou#zu;M zu-j4k{V;z++5#Z6kj+PDgXBSV1U)fi?jNxp5yVHgU$dTY|KCVM1Ev4(YHkib0~plz z2jP*}{|AL5avX!=7gS%-t8N?#_E>Hh#{2(3{cF(rdbIVzpz;qJ29(n0aP9$ryEc@0{5ZGtpCCK*S^EMZUAH_K8)@jd}`6< zu=x>L4CFp!^U>MZ`re>Agq9d&C(Ion_hGY(nEt=1mKI9=Z)0Ep-UA4#`$2fL{)e=& zK;b(Q>ScQQaYWSr(D_m1dAw~?OAK6S0pBQ~GH6Xho7}VbfVNjgI=yw=< zWs&UywV6S61HCcGy)bux{DIAWLj8ZxdB5oOzpUb%N)2H(Z(o1;-Io+6ocx3QH(Vm zfcCHmY)0D#VU2Au&gQrG{3!V(^~Yu^3`)m0;* zPNt_HL17A-vx0>)hz8}`;ebJPD99fmKOtj~7&Z)2gH4<)F(T`KW9S+MQ2zyFKMaHH z#9HQKogamikE7~GRycs`o?%n}V~aaP-4FIFQacBhPhd1i9#mh@8-wyG%nhLYhs}Om zuP~BkKHPdb9(;_5WJLIg6mQ z3`*0(0S{>XPr@0>pt1`T-k`9DVHI?4|WSQ3_xy!=MAWP(fOe80QF_C)xoq71KEY_2GCjnZ1!NQ|D!!U|AXp& z&{_YWzP^Qy&VTeh0HFKH@**PskJS1fRR4kE6comw_y_SvF?H{N7&i4kmi{)V{zvau zgZQAdgpNVtuylqlM{7PPjf3m}*^i7t;>cy-C>vHsjMAXA07@Uo=>^0FiGjwU@zvq5 zv<^~_j3Ij8f$t9hu}Q_qX&A&NRzJwCAphXQ$nM0)2HA_N9>!KTQz8a(FS1)e?E!4& zVH^Jk-P0K8=m_uggX(`nb#*u&)FuG!0RYwiBX#~CR@cMA7!_Hy?2aWrK&h`V<_nRB z3QusjLhq;rjq8BwtWiwG`hWcg@H{Il9fN34m=ASKR{cMa=K^Cn2M`nopfY9@gX)G+ zjGhia=>wEskuj*wrM&)!)VUzDNWn07kfH~q7U3^goe!cx@eQG|`4eUrAsS>psQ(D6 zOQ?-O;S94MEnkM`ZmEUH=D) z!_l>W)T{H++fShRH&{9b(V(AUcp<{Tz8^_!Lx_VmhLG2Zce%a_< z0N}PMqJ99?38NSm9-wrHoVG!1P`U@zOCTB-#z<$-emh7#%xn;wR1C5oWHu@KKxGfi zP6Q3A_dysG*Z9x;1=|UAKQ1;XoIrg?T=g@#;vj#*>;$oKnFH(pgX;beXJ?GMA5`Ci z>VMF^zaTa;2I&E<0T_|>KhpWX=Id!!|Do51BaIJAyRdW&qCxp(sAH`4DUQAWAU}gJ z)%^?|*C)nYP#l2Nf!u+NLE?yV5mX+I;?eMcqygON1^@UxsE$TXV=y*yS_833#UOJ* zZX!h=YFxtVe31VjY>-(n_hF-9_JL?@@^CS5Tl(F9Ty-=#;>dP_+==f5CMnQX3kSu7@%P z`3K~Fc-|-AH<&t*o`J%++zfILY8eSC8%ObIn7jkuVF^pS;4v)Fo>2m4|AOi%P(2OT zhmQ`Wsh$O^i4woM7gG zXb>NlKF#`d|Lu*8Fvk6@^z^`Wzq^ISe{*f^|DgIGeGMRN58z1b|AWF56t*x7;)B+! z)2m-RQtScc2Ur+`Xb^uWV^A3cazDr~=olo9jFIJ$#p%w5wiS@w17?Hzbl@@)QXYcx zz$hLK3sBvOQjf#xe^8xBp#BG?ZE)H`s~F9F*qK_x*wL z0(!j<;)5{M-!QX4ZpYiG#x*Dg3atCt%|Y>a}Yy>V8mvA5`yyup3hS zk3L2Ky9a0_*8iY6e^^|BXi$8PlscK7{zNH9aLkc|!hWb=e0d+;51@1f!{~AY!H2m8 znFjd>R91~*Q2j89LFoXLCXmwzX#5|PUSV<|d0ZHz4n;4t9s|{BApIbWOD{FWLH0l} zQk@T~_d#_z_#VPH827)RsE5`2Aoa*>5Fca?v>k-Yzo0MxwHFB0_1NS=;Q-PP!?3y@ zT`fplrFs=g{jaB@@*h;^gU0;Hq=1)zBW7zVWmM$i9)-2Dd%Yf$`;jsZ|_ zEhKsy3lzqn{4x|Uc$^>FZ-%=Uex5!e&4By_!*F$=bJIZ>TK0k3K*(|f#RjmN{B0p$mfJV*{72BjyEdUOn`3qkrp7@vM>$${)aU|1UfL_^{k z*_|LeA!@N1E~km z_%M3fhnYjq`XAXYR5l{cVeSIC7vwL9I%s_ls^ifyyv|2zBY@RF%mjrAw)_RM2V@7R zuMR2?iNPTCAbl_lav!=ruzjmu|3|L>L2La%_x*tCd=Lip{XrPi{|DFqy1M_-*8nE_ z`~Oea|9Ql%e*@M1pt>FuwykLm3Bw#dX-V-#QIf|ic-yr2Vs9YGS7&)E5*r2oz3J(yC55v@> z+O5{N9L|{;TjT)yQvtjN7vB7metbPa4APlP8VKj^lG0fV#T> z(boWi_70B3`X3e-pz(fKc!JU{z3a%~Y#%6$Vd)e`gTi>QV^Em@cOz0;0Mv&DiNpMY zOoPN>7+D;|hKUa(jnC~M|AOLb6rOp#uF-lm{ zrT&N2`yd*IA@K`$BfRYk?e~M~br=TK=^!?U24N5zgh6Z&hOt332!q5xZ2<7v0^IEY z^tv3mUI(#3;e;G+AU3Fe0?C0ex;&`VabN;aUA4G%u|DgI`M+dwY05<;*qC;I= zMr8jV6pobuegr282QEQB0jR0HE*%rC($W%6o$y!|Frz2yKpFwUz#vu2A#;dW74X9SH`VZ>!BiH?)F@I3K55utf zA3O)3ql2N;v;L>dOw)3A6%WrO?$!XUdL>Ot~IV*sFf9$uFt$$`W{7$yg!VPYUY z41>f7j0J$hbuH?-fuMW}avL%Rxf4`Rfz%_5gV><`f7t4NSQ`LD!|Q+O7=VGA8oUkQ zY-Tnh*Z+a)Cs3LOg)N9Zim6xc!@?5Oz5=CDWDH8fgB^qNAk2+0HjGC03o;v~9$5^; zhKUb24Qs!k_su|jQ2!3vXMvQ5uyS*h9&zCT+7}O9^M{;%L48nIc?l{r@nMiYbc`B~ zwCw+*r&(zIjZ`1Q+y?Rk#9dG|pt>8Z4%!v~vC+jqd}NHQ1|$yRqhN@8Kz70GMW;b> zps@fD29*=&@*pt~Mi&R^1J(baIv#{U{e5H_#0Ft-{SO`c2h9~2YiPjhe-M8p?*9jk z`-9q4pfCl|mNYv54ptYAG#Wg<0;*fkFen`ldJL;8k=FF#t^c8G|FMk?3>v?}{Dc-C zp!5%NH@JKsZ3CdLQyYQd0jg8LX#$!~VCffBPlDu#!N~eyZ1nU+j5(yL0kuy+?nJc< zRJVibUV-z{axrf;LL?HKo+y%lQ zHZd5a7UXtV{f}JtgV-<(um82R!E^thIRMbUf6&}N22qrou?qNaYDA4-8ri zt1F@I1^4~eyn(M9LiZQQAD}h>HgS;LpujLcA(hF#pfY|GL+Xi<8V;az081CJ zbPEy#g$IZxgh6^>`jKf!U5f}?LgtVo4{{?W2G#!{3~6(~+yrtbL@iSN53ZxJ@Ue-* z>vX7kYn4Es>0_0 zV)uR=(e?jmeNTCPj~<4g^ofzCq4g;!-4ALEt1F@I1?4x8dqLym7=D88?Zps>jU5aY z8s?|b`hUca@q_XvE(~hx!qPG*&4Vx~{e$|}Aes;csfX!Drs-e*L+X5pKOt;nw}JeD zkORp>>v33J4WdDHHw=UL$QUFJ;^U)Xav*ge4B~?@hz-W5Z4%`0!o>!SuYlbRH3wJ! zAJi5A)%_q0um7QQ0H8U4OoN3Rb?`6DZgLFENT8iv-VpnNzKFsQx`{tT`^aIisX7M9Lo=^jLb@-v7g2E+6t(;$7w_Ja7- z#OUn{kb9Bs1F^BX2UL%OFsMEzM8nj;)PeZu7$k>`Ve%j`5F17#u|eU09PY^OL}x?% z32m>eMeYA1_x(ZjJ`BU_e^CElM+f6Bz^GmCM*IJx>;I^h20&{mL1`L2?SjV0LFs&` zV3>PBegU}|!#~jaADcKx{h-3I`X6a+H?q4yegu_~qZlzpJrctLlxAV+0+c2|d=L$) zcR(~T7}RctnE|6g`jEpD#HS`km<_5ML2-yl!`uR*L3Ts*p!NG<^)rk{s;5C=0B%>n z_HsuqmQgUIxXWHYg!&GW8uWO172Ug`47r>Sp9>m{wKzKdaHr^2m9Sc zAU{INLr~c{ibrZ#Ag6OsngH>^^&Sy>|3T_O7^DZi4g-lJhbf3pO^j?df(>c|fH3Ab zJGdSP)uA8^tB+wcObne55=X`$c@Tz)!Pw|DNFF8zVuLU`A9_{*dblC;!SMhdw?VX7 zVB`O|>V8lg09^0G+5ph{A0!4_{|Bo7L16~k6GzKBVX&AD>Yol4w+u&jfYwtYr&~Ci z-gO=+_Cf1MP}v2-;CWE!IsTw>3M2;i2d;V_Dh^UR=rG8Cc-An2{0J%oM)AmQ`+(9d zES-bW1c(o=cSxxJLHf|g06=2MX$!=sCPp?JQn!QR5mfhsFk0UlwBH4-9tG=x)yW_l z9mDEum^d~*vKWjFqCps@4@ATG$TTVSKav@+`X5`rA5`~)FsQD_HU|LO`v+ z_5bMnKe)~V)r&YV`0O9VnYFO`nVk9`l>U+P3dk(vIvT{M76!YIfZsrKc`)~Y+y-$A zq8|-51F2pG^Fj4948!C=d=MLiL2M8Pv0)g*hhdl)jE0HhqCw#g?L)xaicDj;d(GSb zYBj6i_x*tCdTbc9-Va;-Zv;ID$ZyN5{~&un_2NkA8-vmv$giXIJ>~U1dKiMvQ3mBL zPwnnTKlB`6*j<2bYoCJae^8i!%5U^CeK_$!{Zo)XLHpB(lfMRwUqJ0gP<}Kmig#hCR!_IY!d-(d8h^dHD?AU}?d|BsFVVAPY4`VmwnBIjFBItGb>>l+fs z{z2w|^uzK5hz5y)&4bzx;!_JFn~Rl=)~^QH3sDE{|AXpM7>3o!AR2^`#X)=+28pAy z(ZxV~5C*A((I7T5MiD1m|3lmkb@$r0|CRG+{)g4`xM*pdOY_QZLv~&k(d>R!0)V2dOrU1g!Hg~9*2g>i*FerTu84Ri~q4WQ^`pg)99L)P0 zLH-%7|3~Y8X#EQ+|Ijh0Zh@s~P(B6AgX$+L)c^2(>rneac2Nt1-3c`p8yjQ~%wHfH z#D|O-fW`-)bt%-Ju=WmI9wrW|vq5ZR8pH-+kT?j#*vK@D4U-4)VHiW~-G5Lxf!v4- zqqu#|+yC-$4Fv0d@ccih{s&=b{SOlZ&HvlCum5jUGV8xy&V>IqMU($KgotIw0V`o4Gj{C;0gM@5s*n-;$B>zd0iVPJ`GW3=;>j zVHhNa4TI!C;xHN)8(kj8N2jsrhp9o9Ll#382eDf-Gyhj6B>WF^ars}LnhN(HNDibA zhGBdV4Z<*S7!49b#!czz|6@En{^x{-Vhul#T995C4P%4&$QYYAx)_L$jA8mgVjwm) z8YTvlhw(u)2!q72VVE3<24RpI5Dmj1J`97>O&U^Kf~6@K?QduIKfvC8(BMD^hyTG& zPXB`)9Wii-lhc168yj$*fVrO#?N4XF1z~YFHow5cKz{PJw#MqGSTC>tDgOSWcm#(5 z=q`9z8jo;w1*Zj2x`_Ao{vYY)_CM6w8C-6H%1&Z1cuyL%UIFF%)PR8hiN3!7lYD*u zgUlt>Jajuj`s2O4z~&|T_<+p@nGeQLJ}6ClSy{o;JctdF2i0>R4DuU@24N5zgh6Z& z2C+dH#)i@8VlZ(K4Z%n`8&?b>%W(^HNpBH zbl(qXydS&<5LEYrFsT05)%_1T2N1db2iaAhlJdVTD+^x#!^(FU4J!LVY+N)*4usL= zk;Ty2AU+7g^uXA-_#kl*Mpg&n!!S%7nFg^z7*y|vI6MC@kBbBQ6C{RBA50vb2B`&! zA>+ohG;sa^*Z(;=80`v>T6BFdJ~|Cj3&QB)$b1+Zn>vsf2*cEXXb^^pf!H7n;)5`V z4Z<)sh=yU1I0(b|AR5Mp(I7EUy9$IsbrL8IVZ(#1{s*}gRyU&4pt{o6))sGGME0Yn zmDPVxdjeF>(F@~qKe~TFe2||;>;KU<4yaB<$H{(vDDB-SclZAwF;G1Xs-r;d0Z`q8 zUI*jihr7D|2jzEI9s#kD>wi$)MT&X2>;cuAp!Nj3{)g84AU;SOgkf#~(I9t#>Q9h9 z7zX(d#s<+aK8!{e1Bt^hNDdi;#l5`#gZu}=pn4iC=I#9-rVhr3(I9aU8%BfNi3@|= z4^js*8-zjm8P~i&OdPb%AEo|>jssZe>i##@)I{n3gX{&xJE;B#mFwsjxy*;jA&Y_7 zFbt9hv0*ffjf)Qx$3~-zp_>Jg2Vrz^5FZ)C)PU;${D=sw^*>AvNFR(1qH$qRy$5Pj zfXe@ZhzM~1AEXzCLHa;!7!6{>FuE9s55h2cWEv(8qR}x-9ZVd=2eHvPnC~p!`4#_OrDe67@f*|AWmx zpt1zLP8j8noVEg}o*qEB5jEpXBHFA5^cx+yJ6M`5L4iBo4x$x)g-5v0-A^Xk;;DHppMNFi0H; zquYnf2g!R_TH-86JuNN4egd^CK=u$*{~M^OfzSK}_y0k4KL|tj0D#2M`~RSDs!mM& z531K-Wj?H&htVK$5F18=*dPqz!!U>s!XQ3~M#dm95C(~XXmkt`2Vrz^5FaEC!Z0?B z28n?%h>wgxVlWI62eCopzF8q5|J$>(QN}qyaxgU@8X3dnKw>a9hz5mIZE`Yr47n^e z7Tl%)iNi3udJrFkLGrk0kQ@vnt3hTX%cG0q;-l+k4n%`6vKkm4RR4q8 zQ=qhi4THu4LG|fi!JxJpuDTy24k{;t92{`wLu5aCSXj`#?gxb*)y|?;Wl4M^2rO9M_e!XNF1gHnFg^z7$gtE#IQl?U>K$zM1wF$ z97KaKsO$u_M?rJeAaNK5$${9&G&&o`hp7YcLG2}wnN+Lkv;GJ5_d$6SmexUaG-wPRl&3-U4XBPLr@n@@H$i5D>SK_(APh2>9P>c#0AY|` zkQt!*5{zNv{=UBdLGA{LfzmQ4kHGu{qCt8<^(+X3>R}iSW5f6$8W|(YBa6e>AbF74 z=onPrV-o|Zhv@~;Fg_@3KxGKXt++6#-2+k&GMAY8AGF3Fz6KCh@55*vo&Pa7)@*_L zw4ibwRL+AisGJ935F3U;d=N(F<6^_q!Dx^=7#p32$-%@yd>BR-gYjWBG3r3&HE4VY zR{w+a!Z1ufh=z%QXb>NSL2P6U>i<{7$Aj0kfyTf=VTLS^t_Q>iVUQYZG)N4DLGmCB zVHROgb4!(CiZ$^=k(3&y^_;Q4V-9Zss5F!dn4pt==QUxMp< zSpAPggX(`!+Z^N{7zWjwAb)`{jEzjg*dTcjhVel(2!q5x7{rEQ7#~z0!!XEg$ZTXj zNF2lm=?CcrVHg|aA5fl#xfdG^3ImXOkU7NG|DZL1puRr1{|~GCp>qIn!NDkFBrrQc z;RmW8LFIb`XnnhX@PAc#h5wQQeE%f`c>YTW@S&+G=Yz^>Q24?82a<Rr{|GMO4jQ&4J4NN^U4Pql>m^x%J5E~>8!XP#XgV-<(wZ5!@Ophv*$a{**G!N;ko!ROCAj`a>i2{C{va`sACTMc zpt=%N*McxeFEWjf4U7C5R>sTUy%wx3skT52vl{ z{+pRw|JOG%|F5ra^4~;R@xPOi5la0G%Eur#fx?iO_5Yy$zp;h}VhsSO{)b}Fy1>NH zP!#iF@dcvmQd0i6X6O93Gq?G#DbD>rP@Cz0k}>1|WD~~!$sn2<*o5(aoFU_XOF8!c zvf`5e>#}pfbMnab45;3LVPtU_8$^RJNDVR#V}ry&7{mwF*Pt>Q6po;}=GG619=RCmHK$P5r0nMP)V>UwzpA6ox|#spHr!*SOCptO+^8TVhApY4B@J;VPlPlo@U9#D+ThKb>$ z@u=_eVEEte#_-=$iQ&JAp3(n~fDrDk!fT$NF9g|s{cT3WKjA7iGeUk97Mw~h!4UrK8S|#(P@wz48!C=d=MKK z2FZgkOdiGt(a0Di58{Jp5XQy^i6LW{I*=HQ4WmI}2ip4pss}-N3>OBKDWG%<3ZsF> z#EzST%0!U6arp@(K2T%-pfCi5Cn^1Z(3;oL`hR5C^WgFv%lJPiPk_=h2!qlUy#Dv{ z`VZO*NUi!GG_L^avxC|el$Z&se?fZ^LFRzW1J&!GK0g>k>wZuj3GxpNgXSYZ>X7Sl z5E~l?=|vX@iGgsaljDB_m!SU!Gq3zN-1+st(biuOyye$_BWhu&nIQA^XI}ZQn~$ZQaw5XPt8gW-RV7sLNhL3)reNDdt%%Y*7bPp02k;RbNAbA)DiNi2R48$guhN%Uq2Voc=M1wFsF>LZ6^_@96 z|1)vSAA!;j41?CRg2HH^F{o@Kw$22tF$TFC<_B~dRF{Ix8z?`4>?YPPpt>KV7FRwW z?f;MLb^-d?KdJuy;4^wabxZ^qXa9ieXBdX%8&G{p&H5kIegI)m+C^^zfW{g?Zim?o zqCsmMLG?eV4u@fon_w6w2BMM0(Ak!zHvjdfpZ#yN@Be?J9smCuZv96y3^E^NkKWYN z|Mhi^{=1r)f!hFJH+gyeC$|0vwE;kVeH08G14xUE{1562gTe?MyF0r7w~=J{KgAzX z_qVt){BMO}cT{$ZJHvl$xD}+%gW*4zhUrD4LFR(+BtM4#1(po|6(z;M^*^lM0o64i zHVDJmAR2^`#XxKrMwWxIL2{rv8dM&F{8|zd1KzI>5{F@AwIDGNABJIk5DmkivwuKl zfzl$#Y>+reJvJIy48}%R3lm4CL2M94RtsZ;#6cLu2Voc+M5AMnJP3otK{N=XvtfJ? z4Z|RHAPnP!Xi&Qcgz?pppl|_UQ28=Y^(4$*_}o8qEF4rH;=`c&AEXE5ery<&_ds

Pk?b5|+k66(5|3P61awDunkS*H|$8uSLd|5V0C_hX1wJ4F6kP8UD9{+5%{LVP=BNZ}(vM-|fZl-%y$xT>r!B z96~gxK0;OlVk2XaJP3otKy@@|EC`e)^1{RagZi)_IS>ZPBh%?E@+MvR4;?f2BkM@)c+v2fZ70{zCFlXSp5$2E2v!nvl~Ric2^aoDT>D|;pZ~@O{{PpVa_YZ{h9$31cen0%Zc#*uX2El&4cP^SY3@wH#;-@ zpAaJPe^Hj{|AiTb{}-e~F^HXE^nXE`;s0r2QvX{V82&dp;vWZSb7T157Fd8NX;v-{_ zUeGzhpzs2vZ{+oaAax*pAdJig@nIMwj*LO#Fg}b8qCprW4x(WgoevTRiNP?852Hci z$ZQZFhLOc#Y!D5?AT=Nwgkfw@c!B&5s#`#QCxk)$ReIEkgzNyhmskv{|3U2qTz(^D z7p>)~RsVzL1VDWzP?S$2i0ul%HGeLDMIT%#`g6epfxv+5s zP(2MY8ze`Lx#)U8^*^W_2bl}2<3Z~eK=}`5H>iILk_Y(9$f!}$|jIsLG3nJJ&%h9o&N`_|G|3zbanrO=l)^+f6)AYL3pXV( z?*Fw;ka>CJIv>Vvabfu1;m-1ZQGM9|Y3&vN`)e}(Ppr>^<4N^7|ED(Q{-4*B^nY%a z+5c7-=KrAf0!%+T4XXb^{r?~X0q`CGSe*l_cR+k(j4qDO2dPCD1JzxiIsoKHP`?z! z2Vs~x5Dmg0y~r3@48{ia_d#O_AhST}8&>~=^nuiXFghE=hhdmJj1Qw>;xHN{j*X2^ z3?_$*Mm7_d8jv^$gVcgBj1B7hgXT^^{w9P$=?at=2O5)9UxLO1pz{PE_oMr9py&Q! zVF^mdL}5Jre^41RTJMj%dLI_&pmGa2eS^e7^&O~=2KB4a>sw;^pm77__A_W50my7n zJq$9Nn)N?u>=jfWf-tC_2G#$dIv?gQkX;~qLH+{C!)RnSObkSWFiZ}at?w20-(bVf z|At#Y^){Yy|IMI2|L^~Lv#$Qvn|$)W-qbUwc*^PjdNa@eH(2-nztOJ${|&+Fahqqf z_5Xi^b>IGLyG4TQe~{lmekG>=4?6!JRR4q80iZMg!D|3O^*;zB)&JPm0H}!b{jYJv zUH>;bG5ntvF8Y6BQ{jITJHP+BM%Mog&FudhnArU{Ftz({XlnQ0%*y3|KuFC02`v@> zXQ%1?Z*o9dH-I)50IUB4^-=48P~8K=usR6DM`nZgAPf?NVPrmt4a1K~Q@cWEQypk2d}fG6z`?Ha18NHVjh>l7q29Gz`PUk@+w& z7!8txv0*ew3>m}3K{PT(Rs&*# zGA+!-g`|7`VCq5re^CDlW;Q6Tg3Jch!yvOkbuvsXB{Zo2k6izQ>P1kQjC`IkYYCtpygVY&#M*lZh|NXz=Rs!|^j{pA+R=oJH;u`s1QP2FplBwf=B~z#W zN@h@OV*g*!)bYPsXwiTDh4;Yyd&oQijy3?O{$Kz7zqV@xxc&!)Dabvbyo;;f4-+@l z*8UHw|3MgB_e011VdDU)(EdNDO#w0&8H4KoY6sl)Kd3IBm#Y20GC%!4x1jWYK0cBE z`~u?t`30r^^9xD;=j9Xo&o3bMpOZ)Qznxpi{{_t{|9iYS|AWR2(EI)%KCJ!^fY$$@ z`UX_*fG~&+!yrB`3{wN5L25uW2!q%l463`3{R-Oy0G5N^c?@F1Fi0;5W8;JBLQpyf zg&8P5VEun&^)P)P8YGU4(ZxV~7zU{Wu|YHl!`LtySq#QTmjm%Z7$y&*(J@FKhCy;5 zHi!mc7#l`|#z{aJlpjETCI%0=x)N0PLoujq0p&4te}cq@T>bCp2roO3{R8sLXuUu3 z>U~(8gT|6!=>fE+1=JPuzHVEV6gXBOMq|U%I3fvDTRR4p<{q<&?`7bXa{$GZR;lC_D$A4KahW|30 z3=lpq>wj5ZmjAMB4FA=Fa{e1`{s!4YfNKr_RR4qe|E`F=`k*!qD12e{JT4kk=Y#5g z5C)wCjIstmTl+t({s)z3ps+&5#MJ+b3T*yor6vCt5|#chEhYQk(%kyLw}5C-u<7{&(C zAPf?NVHh7ogVyVV>Li#ybHc*@gU0bea>(jId=LhSq0=BSP(27b?*}$+0!kyG@c@`w zkQxvhgwfd`J}wMW55gdMWE#Xq#xQx17>EtR=xi7tM1wF)4TufGxcDG(5Jp!6YTtnF zIEIBCF*In51(dcx{ndfQp#BF*{eMSC@SV=cZAF-WL1o!M`UPe;(S8E;|3~Zp(X)TC z?EMGjO<1}Hr6*AR59*(T>i#M1O#{fY0{et+Q zHUV<~A5@-z%malLEZjgeq58konc@GUGPnPsVNw4D1jYVKODp~FtS$M!raSBZlIE2E z^Sev`dwO{P7Z#HEFD0k;zcMHB|IB!m|4mNNb%1#4e^A{6!r1B|kT?i~kyu zKztAl!XS1-YAVV(XlVff@bQ0;JWL&o4dWxzAU3G)4_o^W3M)`s8P<*f=|#sNJuop4 z8-~%vKzwvLkQfMq#6dJN28qEiHgT93x*B9Yh>ffc#0H5WW02n}6B4lYAwmAfg+Xmp zP}%~ev4O-OH;`KYgZlrVatqmSpgb~={y?@HR9+M1Cs6&5WBebqHxpFm!}^1x^vD_u z0Hr5b`UchWp!f&X{h&4gXwIIJaeDOnA7nPDE(V!RiMb$m!Z0Y0!pHx8e86oy(7FYf zpFnGmL3V=bb7Tyv&p~`-8pKA&Ff|}?qU!(6f5GeiG>aGfmlGBIFDEVeUqM6vzeZZ; zf6c<_|26Zb{a0~`_%A0d{a+r`77!KuuhY4oOt%GKy^7tEeM0u!7z-EjRw_+u(ki7@B+mJXgmO92S_~#gUmsv zL1G{b6Nj;3d~7r}F=Txpd31~{4`PEbvKkN{hC$*WHi!mc5F3O+Y!HU|33;p#R>Qs<_LHdyWIb`d99Q}XLIl`cFc@&SVdLIo6t_0Q3;JtsYu4K*q!|Gf#Y@){hxBLUwiM$RSd>02hz}A6$%E8^Fo+GpAT~M%iGwg`tiLc4vK|u_UZA!G z$SjZ^kQ!tR5(8n77>I^pWIl)u!pL&Se3&?l2FZaih>uLe*dTEbhVel(I)=%E#9?d@ z4Zx{~K-p z@n6{^{=cjs&wn`y(f?|}+5e3X|Njq?Gd}qLzrm6x{}t4<|I0~;{g;=K{;xOTByU-ohfFL%gO@M9uA5^Y@%!Ofm^*?9~e}ccz|K6(9|Ed~> z{{?u3{##o+{GZX&{C`$w#s3){mH$f%a{jBTX#8j65cnS!llp&oQ`G+sS0?aTK%o9U zcntv3H~_BtA5<41V^Ez08X1G+(fOcytRMohh7#n@inut8@qdtB5Qgaou|XKd z2hpJVAKk2KwDW{P>d^HO!w0E>VUQUhjLrv%!7#EMhz%15(I7quBeOw#bPSS5#vpkR zAJq2;-ERyED_j^<4}r#`u*naW`X7|G@z#;hHGddtoSgoH`uxa#1NCJ<<_$Ck_1!`J z8w@w2`(?EL2agMb>Yq`JXy<_HMdWrnXum%QgX%pHO>Vsp(uZ6JgYph&Jw9l>0apKm z)KCK>kN<HkZL{a1^x`){!B4mdGz^2} zKx|O`51KoGg%yY{jfwdWS|bNigN{LZKw>Z�FsyABJIk5Dmg0aS)A+L1G{b5`)no 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 z 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�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%0Dh@;xZ+fX3fJ@kOn)1F{>GFG1x7C{Kgp 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ì@9U45`Lpn0b&6k4ubRhl2Vo+HQvK!RL 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

    1pf&=iYy#DZp!G_iJ^vs*;CdOf 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 z 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

    JCsCj$%mt4+;-(|2!bzKe+C< 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�O!x9?+RPSmq*NYCvTqhz+X0L1iVV>;r< z1%T9o%2F5x)ombkAbUaPfiQ>-!XP#X!`L7i8H40N7$yd)dqMRz41@ZHpmAH6U8K+; zcY)dzpmH2k_k#M+Aag-&3y?h|VJvkQvN<4gLG>7NSRuO=G)@BAgO1fskl7%NR4>BR zfy@QD9ke$N**s#|AUA=`fSETaXe7VF+y+W}Fh9Z41DLk6`wt2`m>fC{T006#dmy#Q z7?ifL%>jVQb5MN`>idJn{XsMcgVqIt=1Gvv2k}AbNAd8g14iR>3Zh|rbp6=+s-WK=m-FPDQT2;q@ZOUM%%6TppVoNDp)_8x-c)+yk1^0NaU8KOQlV z9#FVqGn0@QD6T;LYoh%L@&_)r;FH6p2cJ09JWzaq{0JJef%yki-^0@&fqfOAGyzi! zN?$MxN^{ua0u&FRx*oI!5LW+#XwV!$7TSG4pfo*NSB%`cVl?iDU)+Q0H++46kQ}_v z5327$^*$Pg_5VR-3=D(H9T=Nj8lM^Ha>#rT8-zjj!uma+vLDp{1(m5FHmDAPm6ITK zAPkcSsexfoUmL6zI&J_m7bXXzLFFQh4WmJJfZ7=#^&qoB7?};?gD@^Jm^i4v52_R3 z^)0ks1=VAq^>d&;8OSb}y`<8hel)0F0Ik^rwFAhyV*pFN25O^#+z6U?z~&}Uy9OkW z>@TeKGLqS#Z~*DUW*#wOp!N=mok(WG-GNICT0i4ehffVYIb=Jb^BbTzf%yrX2JP*^ zV?&@c1Hzy-984aW28n~@K^T;VkTED7BeyF+`ao@7(0)JI7yzj655lna0CJuHwR=Hr zlhJx$_|*fWaXK>Nl&Jb2R^Jn-|3PI9sNBJY3CSbt!=)A`4ys#0^uRDkFN_VMk@?7MkQ@xd?sWy%jmUKfv>gB{k3sb!sGWdqd>7;vVlZfa7u3%L z?a2ep3nYT>9rp72kGH-VP-OL> zJOP>$Dvpl+59;%S>V6mo@sZsD(g#Xsqjkl|tSd(2efY&YN%cRh9RQ=D?Ez5#A5`9e zFsQr%(ZpbwS{Mz|17d?Phz-IZHVA{*FbpaSLFE|8?V$P@ghBl!P~8Ah15yuCgWN9% zwF5xnpfU`GL3IL19ZV0X90b+dFnJISDjz}RCP)noqqh-2c7xP`)Wa~yO(6Gx?1bq9 z(dc}T7&=B)1L{BHttYXx13-HdKy@t4Eu_+*umZI^Ky41tcmSy01hMhfd06U5Q2h@w z2i<=9~ zjnk1Cr=YR|R378Q;I)3xx*p6%tN)Sb|3T#qs5~JC!_yq z-roK{tn5Rsb3tVqsB8l1gQ-LABZ2B@P+bbDmto~4xLk#<2?W^#vKzF13MLPtLF3~f z^WfOd4sJh49#npU^dZ{?5(n+u2KfVIE?lpzEy@@!vN((lQV+r~KFADEy$7y0km?99 zAFVC|)o-A>8l)aHo)6Lsau>*-AUBbUL4E_d15`JF`re?n0LTuI-JtP(5XRRo0I5aq zKZ4ufU2TId0 zzk>V#YKMZ-1}Gdr?O&K2It@z0AT=Ph=opk%LGmy?u=EX52RaWJc^&{X2T+B!4*-PUX14nYaQ&j&$+X2Y+Kd8O{VNiJj!XP#>Mi&F~p=aK~$}CX-6*Lx& zt`Agpfy7~D7pNTo>chkMpz;z_PJ-$^5DgOt(V#I=kT~e9To50IL3V-61-S!6Bbx_O z12PlY9WXYi4g=MXur>#%o&~9gVX(Pa<|IJ+L3Sb2AT|ucPuLC4QdO3`r)8*pPaS;NDs(epfiO)^%AHq1=ZgmHbxzeZl1yT#L3ltYHGf1I9_JG_14o8stK=y$!h>Z^uqXwj(Sal$^xG>BN5bf#t z9~5_>x)$b7P<;=}AE0y!N_Q|hbQ+WvVQN9~hKxaN2vA;t=>df)D2;*Cfb0a-|Dbvw zGzI{oL1O^Oc@Crxl%7U%nK|nB(RRXcNdrXJ|IoS~z7`O~hmHv#kN?BU5>R;pVuQ*d zFl}e|AI65sfy6-=R9A!C0UCP;tuX?XF`&8?R91oH;n>dZKd8R~k_TasIiNZnR6l|E zAPlOPL1G~DKztYmm0=)pP&o<{1JU5J(#{UtF9(&Y==wlvK< zsz1=(40Ag^8Z@o}(hsTwU}l5rXRPk?^aP*N52|C3%>>yE(nD;047$f26bHy=5X%Ow zZwL7wZWkzQpmi*Y7)Tr$gVZ4N39(64kIOueIiULA+xtIgT?x#epf!M?^b1ZS(DVwE zL#ILc0hV__>X9)hU4ha$XuJ=m4-~c_anM=~P=6o!JU~!;Aj!`UWexyj-f$`ZM*T5b zmyhH$0IKgmWdS}69`lFR_1Nlv^!`7nd;pavAPg$QKy@#uuMVO?Vjv7xV`ujty-yA+ zmq6-37^D_d&w|W?$${z=kQ}H?1l8d%aS#nE&p_oRhz-LaJ3wkdbq`DoMuW@;nFYew zY^1z`{yT*hMAj|J-Ag34HsIuHh{h3+4Kv9XC`69cISmCIP`SM)jrRCl0@ zA@MiML|3s<(L2iVqh3f^0LB}#c?H_z@!6gSu1E72BKz;`K6*LZjZaz*v$URUu;8a6H zd61hy@ecDFD1U;|6evBwFenaS^5`@u4}j7qC{3YbP+kJXH%t#GK0s!I)S>SM0M-BK zX90oQ*rRg*qxI%Ut~ZB^-$CU7sBFQ9QR;tCzaI^Q`v0J^15}2Q84pB=72D$j020CnW6MgK=m)Ei~^~FVUWEbwIH)# zVlWysR*&o^m^h3EjTwOCL3%;%24N5zgu(tqvL93@g34Er8e%ZW43Ii>8YG5{!F3mf zbrN{K9#&^T*A2qv2|(-pL3IwOt_ArOy-fuR3v4u~eh0PfK=T72cf#8NP&?4$0+i-J zcHym8L4Jkqg#(2tHhT$)f!qa3BcL_wp!y%&=75@uVmC+(7B0lnW|U3%t%cGpt2ZW-4Buj_xWM{f8@F!Dh8_mLFEYygUTIHoe3&i zKp12PsLTMdK^Vjbl|i8L282QNGN=y%l0(LzvKwR;$XrmJie8U^$}NyyP<@ZA59DU_ z`U_NtfYgG_Lhm<$+6FLtK=R0L1(^#PJAk8CPCqg9wwl0!G=L$1zPh5nr8sH z7gXnh<_wV4g3JTi18OUv_y^5xAoqakZe+dWvO#GMWERLykhvhYfiQ@V&kaP&A=lx^ zY&1XNG!IP=*livjDD7HM8w-|BLFo*X-f)EnC{2UXJ1iZc(;zueo&f0wjjMsu7)TB1 zJc+8r#Q&grA5{N?Fz9?B^s|6KX@8`anWO$5Z7&R$Gyp0WLG>j*46gq{^**$|2ag9J z@j>-JsO$h?P&op^u=)a2MuEy2P}v14YhV~uw}Z+MkRDK(2I9lyU^J+H2g!lV!&csb z`Zyr7k=q&|y&$_m{sFOJ7}RzEnE|pB)GvgIgJ_r>$Sv69L1ih(9bkEA9SwF9QXdS| zrU2;$sRPM@+6ADnMb`t8L&nJR$ZTXaAU3F94yzMz)*-~yHE8t=F0(*(f$DB>TfoQX zKd7Dr&HIDG9C-}}DEzQt(3lTMJt%(ApgI_RJOX3~*gYUOLdOp9^>NY7h4Ddg z4{Bq;_{cOU9fH~?ptcRjK9D~_7{mtKO-vY~s{y%}7%@`RK>ZI&S1|X((jh24fYLIo z{)WjT)1dGNg*_-uVZ)$w3JMF59uN&O6QmAAgZ2R+j{$(@06_Nyfz-k<$b8V;%5W(M zNBuEcr;o%m0IH)vHa@(`2iZwx3q-!TR>$NtQ>-s9UvN1cEQ9! z^(II!sNM$2!7!*?0+n;1G6_^(p|4j1xgBH%sGR`Q1EZ14O^_I<9s!vJG6%#4iNP?4 z50V490pu1CA0`K)LGunEePDU$9zGBsW-rJtup8~|!RH`@+ytwCK2AKoG z$b1+ZMkC9E#6V-~;Cc$Z4xuI=TRjFfA5>q1`s|=_0T3IsZUEG81f?5L7!iX(@e69l zfb?OL&j-zCfX1vrcB0FJ_#k(K;szA1u(1k4ZX&9EfF}%z(hm)9 zkXlgt3)FrFxfg^%Y*<VHrh0EVIC0igar zto#7gi=c7}R!)G*Ay8Qbk_VL;FmVtKDsMn#5J(P$(d9vIgXsmSL+^Kj$|F!22P(%w z=HbJjwgbp*APnm7BddkUf!qMH2VEXi&VuxT-3#sigZQ9!0my$K`$2Lr8e|463_xuJ z5FaEDG9N~R*ytD}2g2y$AU>#0L#a0@sb^q%VKl7HLFeNT2em^$ZUNQNAR4q602Cge za6%4ObT+6i2B`;OQ2mC1VfI7k{b6B*+A|sc_m#rj0-}SRoJP+9@E@%Uhf7^J68!pmGL;LG>)C+<;-wSTd}B2g@59!^aIkYCz>OvOM~@ zJ*fPHm2sf55u^tf2FZim1~Ly+HX^G7wJSj7A4ncVgUUo?c~CtB(g!LVK^Uyg*7iSm zjNiiIKeB&8Y!HU&2ek=6X2SHq^rO=-d0aGT%o}m$ZSv=2C0FiGf=t$v5_%I3^axV3Kvisg~@^Rfz|+^&jA!hMxx|TPU~f-giRjQ zw+4yBq=g>oFMBXh7Gb0tJ%;t3aBmzjiaE~spw|I(iLc4 z05p~WGZW+|n7fhLFfpt&C|p4Pgwg115FZ&MsRP*yYD*!z50s`rc?=Ye=<6zx)q%nt zqz06B2w{+UptJ{52V$2*M}x=wLF4~03_2G8)Fy}718Nt8=2?bISvcyC(YDM;O9MpJ z|DgIF9i!F%pt1v0ZlIT~pmH1}4l0W<`rSrG;IUa;@}TksxqSfQ!^$2I4H^#s)x#h) zpfVdI2E*9e1EBso$Q_`53rrn|2B`&^19At5MwbVbxnMagbN?XyxG=~~AoD;Tob=xGR9 zKQ1FT2i5U#vq5fwg$0O>ghAs0#MlGMA0R(~+y%nO=7ZV*APlk(MuXTyV~~45 z?t{@FHWCKKHOOvsKZELa(7p^1jV=e{gXBPI9h83Bx4~fXX*e9~~bCkMqOof24XJEUu&TAJqQ`l^dYC z4phFw$_Ee)DkDI0pt1;54uQmwF|1s|CXd|j2FauMcaY6S?~8-fg5;6y0=W%j4yYY~ zEDrKJs0{%s2SFHHy#Vq9NDhQSYO(nR*-Q`{qy{!V0n&$#kSa*ak%B>S4XXP=`U(00 z+BN~H1z}MAioSmYo86%F1)hWP_Wlpjhinh14g_IjF{-dVJ^v%uw=j2s+QFc_2J$yd z44sD6|DgN@QV*g*X$X|2&@nb~(AWoP{2#Oq0J;BwjC@|DZY+y(|KiJ)n9QTR97=Ye8ihsGdaE3mZECl}{l3pfU}Y+2~^n zAU>$vLsk#+E65y>dyvIJ>Ol5`%0-Y}AR1X7#0I$$q!%Oys{cXegT!%R@Yn=wt^kP! z=?B?C3`SQAvL9UcK3| z2Erh5ko_QWkRL#80c3fQ8W11UJ^{Pc-u^$V?*(cHfb0hK4?$``YC+@vAa{Y(g3Lq4 zFgrkE$ZTwUkQh1!)hVEQi(q|1VZBYZ`Jg%r$!<{n3JM!gxPUMyjKF52tMm58+Sdi? zA%sEk4C?=b%|)`CSUxB`!TO=?0A%-Kvm4Y_0O0EHFIPLSE4w%2ee4@dnm zTDOm+Gyp0)@zwnxIh6VzTIVB+!N>ohYvN&L1B?dQ0jg8c``sXUkQ}(4#BrwyNDoXN z#0Kd>#-KVGRL+5DWN}cr2hxWu1}aBEYC&~9s80lw1DOjd?_d~Kx5MONG)O1LO`+T?V2-^Xs6r zkIjBi+=JA?>UCT+p|HV_$Kp0n_<`Eb*xZ3n3>222K0Ii=0;CRuO#?$K4S?!jP&tPWBiHqCHc~qPx&8;0EuiuS z8H4IcSRIKh4q}7sN3JVD^#e#8hCyX5Odh@72B`t{y+L(4sNMzfVHm^*iG%8Fm>8(9 zg65F0cP0Lr&8 zH-Oq2qvih4D)&d@Yc#$5;rVb_sQV(N;Xk?5m2V!HxAocjfvB`th z0D|i|EOiB_zJOyw@}PQ#kQzerATtPHQ2h^bGbpTK7*yAT{Q%Mn-R}>oLtygc&>%BG zcESA*GMf^N)D8fd3)(k`JTCy60|3>{Ap3CD^SH!8dN44Kum;%;8uKAFOhD-ulrLcV zKxrA2e?V!9SPV*=B{4B5a{!>aA9No8=>9*L*`PKuC_X{u$tWJJS4Pvo&`ATJaspr7 z50XQv|3URW2t(_BkQ{RT4=Q7j%Slif0jhsN;-ESd#0H7MFvxz89H>mfCJ&llN2z!1 z?EWLS5kTgF`Z=KT4Q3|DevnyUGogKS(40I>9yY!YT8{`)2P)@4YGE`;3{-Z4Fo+GZ zA0!9DFm=STLFz!58u~!yfck=)p$i2`p1C8T@%0rNS$m&3B5C-W%#~^VK28n}c5JqN$_~;l}9>fM= zLTd2IgXBQvEUfN?jX%R_Slxz=##hfEs|TqAVRSKMJ~lQ?4~&MY0o9S9`W_T7Fbt}z zVSWI~lY7oT%sdbc8pi?c9{|;rSTV?5APjXEQDFvC3#CDB2H62>2Y~DV)#o4#VuLU; z8^#BTfiR2@qERr+O)wg27g!Cn{s)B-C=Y@BNh}7XaS(>7howCbO$r8u6X@I@&^!PL zgX(|S7yu|=!psNd`O&igN9z<&oid7tPC6jF{zqyHfa-rx-2}#VcK<c_e zA6z#e*AvucW2=kEv;$OUg4~PTe+7j6K6u1U=v23I~`ts0|Ft3m`ry z>_F)Tgh6SE6b#BQ74h-^VQm0V{SRsffaU-|V*?=bK^U~(6%^N_W&hAA`$ywyG_HuM z|3P&<2*bwwk=aQ1|AEREFb0j$qn+gsDsw<(3CKQBc>%(pG6Sq0TIYi5Xykr8NDT;s z$}f<9kXjfGG7D56fa-lv{SPYZKxTu)LF&*kNFNBp#9?e04HL&l<5CL~htcR}z{HVh z7#pS*#)r``acnfGKMg8tL3I#vokEZgt5b-jvDHV!>V>KUxf6szaR`b_5C-*2VRPr8 z`X4lR4-&_RL30G4vu2UaK~@hE2bl%JC}9G12UrZBe?W2|jI5qaHhSF;wwqY9u($!# zt^uWMWd9OkgTfdz)&)`r8ruW4xj<=)9Gn*(4j%Id)%!3EY7d~_2@D$78Ld-B>y*(n zFm%!YsLlkH5BM-_oF9XRwgX`E|Dd`GRK9@98j!i5vImAi{Si#m>P5%qy{90j6q@`3=;#fK^Vq|(I7DphVik{ z*yM>7gPDh}9-R+T2NDCVcL3F?1nU(nbqPT|#MV!p)PUN@pu7P}JLKRbKR=B6AJh&2?F9toYmglv46<`{4q)h%{iF5t zXk3BvEU28ohr#tew5|uULE`{OeB}BcR7Zg@s6Iwnb7yM$A5{N?$|6u%0V?l7>Og&d zP?-c$4;s@4iG%72P#pp4!+`325C*9QsRPl(U}DvR)PXR}Ok_4pj9ePsEL?naagcrJ zVlY082KAZ2btjSaFnXOrFFwePpt>6rx1e|jVNm>n>woB2I!Fy@EC?hA!=N>sp!5P# z2htCAFLW&)EDgcb!e~%>1E~j@2Ubr>*nrvtAdJThP#q4!*zAIdgJ=-OriNHCke@(m zVg4kB2IU>lmy(RyXHUKvdT zLn93kUH_xi`N($yqSybRIto;ugX(Qixd6kUG6~MMw*C(*lQ8N#=y`u2GeGSFkUYIH z$PegtViQAGLoOfLY+~4;{vfPg0M!jdV*+&=(dOW(7g5Xr)!E+O|B?Icpn3x2c2Hdb z!l3>?s2>SRi=efDps{|CJhm;vhK? zCL|A1gM?vqI*0~gkhw4#7aLg~q=r}w3L{WhfWi&kzqt6IJ*+S}P+J<5mq6)?91Kd+ z==%Uc>i|IO0MX|FK>H&`%l@HJ_K(KXXgq<+Qha@XkQ}_vkKP6V@uBnopmGINPQWmj zZ)f)(RIbDNcA!2T2!red)$3q2(7AtPHp~nVjVul;!$5liL46ufxdt)|)UE*818Q%8 z^nfvF-yb0iwHvG+%0{*i#)i=#b;xXVKDr!89v?z zT(G%^kiT%r;}S=*16H@gXt=wfYCz&3j4Te~gD|ofHZ~|+K-KrNXY-D^z{Frem@L@>VFUh;R2NfH24|5RHP7+Y->W0->= zVUQYPG0Yrn>OpcKaZtSg!r1BzlEsLq<486WTK9qKW6*pBtd0QDus%M#{sY+$!%%%- z`#@qI9{)jRfb@X$62c(6Fv10D4%kdA=7ZWJ7;?z!(AaQyL&qi1^%9Z?sRyY6VGtVy zV{t2}{zsleAruD4@*sV%_BJT(kb^VA+MG5vo~eFQ33Kr{@a^I_sJ8eJZl4`YMsVo*H|s>@+z3^i%c zdIJy!%}Im&3bF@OhQZnjFd9^b!p0duZUbR(o59WwysiP{P8ddMH-OF_fVCaa+6^Ex zh{d2V1E~ekFbt|YFzPw9dJ3gp!6t{Lt|6!gn>l#IKyCzKP&mWl4m?ip?foCCUC3^N zu|c$_=YLT94rT@}8Z=)GvJb1-c-)Di9%LU5wV-eZVHEXHwJ>pX8l)B^2ErgVsTfrM zg2uOS`5B)$DF1-c3@H7Oi$UWzp!y!P?jJ;h#{WSysQyR34*(QDAU}@QDyKFB-}M)wm; z3`V2N6Uj%m3&uvL;cg+)Ot5;WyFg(D3Nu`O#wQL-d$4pvE)6>K4^-cS>U|gnwFf|R z0H8KA%nhKqsnPO(Xq5k>@iemIiCXnPsLVyjpmGLX3>P1!7F5Q8>PS$Z1vHKiD^rN2 zL3%)I13>-)VGtXHL3Iy^28qEisE!8p??HSJ4Z@�#I27s^5|A1dR`X#6jkOFvu*> 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

    PT6dIk~DcplPv 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%0AJ2&~6Cn*0R>wj2C zLugp}4dIQ}@1x-XO9>E~*zf?AWgrYHuYcO^hu0?x91IL=>%-yW?S~aW<$EZ+{O^ha z*9Y+R%jc`Xe0Y6pvKFNNFT8%3wiQ(Wu1BhG9XUe3g3>L>cF=gV0z>F(1b^Dr#|l@q z5d6}uo?f8B2BI2t9_qSkP+#fKqaNO#(9H(%Ll;1F|NjpfEeH(_h4=SC?VYRtL*erSApZLGwebEqi2pr4 zR28P51=1dZ_y1Qx;s@S7`n&`bKZyFebZa6vs70wEzD*a)9rjhdKz9p2EY!;q4y~KQuHJ9v`J!8wEi3uR)dn2i5

    -y;e3bbm$aoaoz0mOxcz8kQE0E?}CNE`RV1Uo3l0Mvkj$xmFu!0-a8eFGZbh=a6m?*GsGFVSWQY9C%T zm12MldaDO57U1QCA3x7v`VJDdkle~J==kbE&plVIT9pNJpTQD#uh39c`1!i;CqMJ# zMRHhzq`Op{e(Q43r z?AUxCi^g1HBM{+kdVR39)gF`%5M%D{l1zhcD-xOzh76OsqHe-+Ys_#i&l zsx|QX2Q*)z^#9*=nEycc=T&S)^!K;zHR!2F3eVE5T~VMTtYGRv^Ch6m+hKh4__@A! zUG-HY{ZqGIp2Nwo8ty;P`UQC7i_TmzQWT3sQ!Wy(J->b-(ie!o3hBNa=zJC2f1viluU|jl z<1?XKLze#kw+r4r6<+Hoz)*lVpBOYAk39ba8czy`)ZgGBL6i$%E+{I%LJ%Ivx8U|0 zWWC7yd(lTEK>Vxb>zQmBK%4enWic@9UAuY#SQ7&SgL)9V7bv`8{J~cL2hIW2@1d$N z_g!4W9(0wrsR_paw1$7qm220o!T1Jq)^&gT_U#*tKU)98LIOgM)cOSC`_cBsP>Fw7 zc~-L3bS-EC8pa2e$9-t^^CL9=;x6R!*<>vTn!FPle=!oDP<@In4|2~ctpxb~YEb?4 z|Mko1aQALCS^Mw*UwC~B8PEL>uOC4C{ri#lYeDC)t%CO_!RGyck5oU2EM2v3)g!q1 z;Ql9~e!_I0Dd;>GB>O_wBG)G%_a9n>8eX4}!UHsZ0bg7JUY}>W7Je8Ul)vmhqP+mB z4>geVgZQ9ahj6dSS~)cNWk~nOgWR(KNgmxl=zNg-{{R04s=~lllx{s0g>?Vye}fjt z{j*@n|NsAk<`eECrgQ$6ZdKq2y*d>>e{*fGK+D2KD-iLuHe~H;r1AgKts+ZTX}yB4 zzl6+BJ%G|0^

    g&+E5czd8lR)Pc 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 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 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 ? FREE_BOAT_ZOOM_VALUE_1 : FREE_CAR_ZOOM_VALUE_1; + else if (CarZoomIndicator == CAM_ZOOM_2) + CarZoomValue = ((CVehicle*)pTargetEntity)->IsBoat() ? FREE_BOAT_ZOOM_VALUE_2 : FREE_CAR_ZOOM_VALUE_2; + else if (CarZoomIndicator == CAM_ZOOM_3) + CarZoomValue = ((CVehicle*)pTargetEntity)->IsBoat() ? FREE_BOAT_ZOOM_VALUE_3 : FREE_CAR_ZOOM_VALUE_3; + } +#endif + else if(CarZoomIndicator == CAM_ZOOM_1) + CarZoomValue = DEFAULT_CAR_ZOOM_VALUE_1; else if(CarZoomIndicator == CAM_ZOOM_2) - CarZoomValue = 1.9f; + CarZoomValue = DEFAULT_CAR_ZOOM_VALUE_2; else if(CarZoomIndicator == CAM_ZOOM_3) - CarZoomValue = 3.9f; + CarZoomValue = DEFAULT_CAR_ZOOM_VALUE_3; + if(CarZoomIndicator == CAM_ZOOM_TOPDOWN && !m_bPlayerIsInGarage){ CarZoomValue = 1.0f; ReqMode = CCam::MODE_TOPDOWN; @@ -2956,11 +2968,23 @@ CCamera::SetZoomValueFollowPedScript(int16 dist) void CCamera::SetZoomValueCamStringScript(int16 dist) { - switch (dist) { - case 0: m_fCarZoomValueScript = 0.05f; break; - case 1: m_fCarZoomValueScript = 1.9f; break; - case 2: m_fCarZoomValueScript = 3.9f; break; - default: m_fCarZoomValueScript = m_fCarZoomValueScript; break; +#ifdef FREE_CAM + if (bFreeCam) { + switch (dist) { + case 0: m_fCarZoomValueScript = ((CVehicle*)Cams[ActiveCam].CamTargetEntity)->IsBoat() ? FREE_BOAT_ZOOM_VALUE_1 : FREE_CAR_ZOOM_VALUE_1; break; + case 1: m_fCarZoomValueScript = ((CVehicle*)Cams[ActiveCam].CamTargetEntity)->IsBoat() ? FREE_BOAT_ZOOM_VALUE_2 : FREE_CAR_ZOOM_VALUE_2; break; + case 2: m_fCarZoomValueScript = ((CVehicle*)Cams[ActiveCam].CamTargetEntity)->IsBoat() ? FREE_BOAT_ZOOM_VALUE_3 : FREE_CAR_ZOOM_VALUE_3; break; + default: m_fCarZoomValueScript = m_fCarZoomValueScript; break; + } + } else +#endif + { + switch (dist) { + case 0: m_fCarZoomValueScript = DEFAULT_CAR_ZOOM_VALUE_1; break; + case 1: m_fCarZoomValueScript = DEFAULT_CAR_ZOOM_VALUE_2; break; + case 2: m_fCarZoomValueScript = DEFAULT_CAR_ZOOM_VALUE_3; break; + default: m_fCarZoomValueScript = m_fCarZoomValueScript; break; + } } m_bUseScriptZoomValueCar = true; diff --git a/src/core/Camera.h b/src/core/Camera.h index f21fe913..c22ba9c8 100644 --- a/src/core/Camera.h +++ b/src/core/Camera.h @@ -23,6 +23,20 @@ enum #define CAM_ZOOM_TOPDOWN (4.0f) #define CAM_ZOOM_CINEMATIC (5.0f) +#ifdef FREE_CAM // LCS values +#define FREE_CAR_ZOOM_VALUE_1 (-1.0f) +#define FREE_CAR_ZOOM_VALUE_2 (2.0f) +#define FREE_CAR_ZOOM_VALUE_3 (6.0f) + +#define FREE_BOAT_ZOOM_VALUE_1 (-2.41f) +#define FREE_BOAT_ZOOM_VALUE_2 (6.49f) +#define FREE_BOAT_ZOOM_VALUE_3 (15.0f) +#endif + +#define DEFAULT_CAR_ZOOM_VALUE_1 (0.05f) +#define DEFAULT_CAR_ZOOM_VALUE_2 (1.9f) +#define DEFAULT_CAR_ZOOM_VALUE_3 (3.9f) + class CCam { public: diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index a7851650..49b95f7d 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -27,12 +27,20 @@ #include "World.h" #include "Renderer.h" #include "CdStream.h" +#include "Radar.h" #define DONT_USE_SUSPICIOUS_FUNCS 1 #define TIDY_UP_PBP // ProcessButtonPresses #define MAX_VISIBLE_LIST_ROW 30 #define SCROLLBAR_MAX_HEIGHT 263.0f // actually it's 273. but calculating it from scrollbar drawing code gives 287. i don't know +#ifdef MENU_MAP +bool CMenuManager::bMenuMapActive = false; +float CMenuManager::fMapSize; +float CMenuManager::fMapCenterY; +float CMenuManager::fMapCenterX; +#endif + #ifdef PS2_LIKE_MENU BottomBarOption bbNames[8]; int bbTabCount = 0; @@ -129,7 +137,22 @@ const char* FrontendFilenames[][2] = { {"fe_radio7", "" }, // MSX_FM {"fe_radio8", "" }, // FLASHBACK {"fe_radio9", "" }, // CHATTERBOX -}; +}; + +#ifdef MENU_MAP +const char* MapFilenames[][2] = { + {"mapMid01", "mapMid01A"}, + {"mapMid02", "mapMid02A"}, + {"mapMid03", "mapMid03A"}, + {"mapBot01", "mapBot01A"}, + {"mapBot02", "mapBot02A"}, + {"mapBot03", "mapBot03A"}, + {"mapTop01", "mapTop01A"}, + {"mapTop02", "mapTop02A"}, + {"mapTop03", "mapTop03A"}, +}; +CSprite2d CMenuManager::m_aMapSprites[NUM_MAP_SPRITES]; +#endif // 0x5F3344 const char* MenuFilenames[][2] = { @@ -362,7 +385,7 @@ void CMenuManager::CentreMousePointer() { tagPOINT Point; - if (SCREEN_WIDTH * 0.5f == 0.0f && 0.0f == SCREEN_HEIGHT * 0.5f) { + if (SCREEN_WIDTH * 0.5f != 0.0f && 0.0f != SCREEN_HEIGHT * 0.5f) { Point.x = SCREEN_WIDTH / 2; Point.y = SCREEN_HEIGHT / 2; ClientToScreen(PSGLOBAL(window), &Point); @@ -562,6 +585,11 @@ void CMenuManager::Draw() case MENUPAGE_BRIEFS: PrintBriefs(); break; +#ifdef MENU_MAP + case MENUPAGE_MAP: + PrintMap(); + break; +#endif } // Header height isn't accounted, we will add that later. @@ -1156,7 +1184,7 @@ void CMenuManager::Draw() if (m_nCurrScreen == MENUPAGE_CONTROLLER_SETTINGS) PrintController(); - + /* else if (m_nCurrScreen == MENUPAGE_SKIN_SELECT_OLD) { CSprite2d::DrawRect(CRect(StretchX(180), MENU_Y(98), StretchX(230), MENU_Y(123)), CRGBA(255, 255, 255, FadeIn(255))); CSprite2d::DrawRect(CRect(StretchX(181), MENU_Y(99), StretchX(229), MENU_Y(233)), CRGBA(Player color from PickNewPlayerColour, FadeIn(255))); @@ -2570,7 +2598,12 @@ void CMenuManager::LoadAllTextures() m_aMenuSprites[i].SetTexture(MenuFilenames[i][0], MenuFilenames[i][1]); m_aMenuSprites[i].SetAddressing(rwTEXTUREADDRESSBORDER); } - +#ifdef MENU_MAP + for (int i = 0; i < ARRAY_SIZE(MapFilenames); i++) { + m_aMapSprites[i].SetTexture(MapFilenames[i][0], MapFilenames[i][1]); + m_aMapSprites[i].SetAddressing(rwTEXTUREADDRESSBORDER); + } +#endif m_bSpritesLoaded = true; CTxdStore::PopCurrentTxd(); } @@ -3756,6 +3789,14 @@ CMenuManager::ProcessButtonPresses(void) break; #endif } else { +#ifdef MENU_MAP + if (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_TargetMenu == MENUPAGE_MAP) { + fMapCenterX = SCREEN_WIDTH / 2; + fMapCenterY = SCREEN_HEIGHT / 3; + fMapSize = SCREEN_HEIGHT / CDraw::GetAspectRatio(); + } + +#endif ChangeScreen(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_TargetMenu, 0, true, true); } } @@ -4428,7 +4469,10 @@ void CMenuManager::UnloadTextures() printf("REMOVE menu textures\n"); for (int i = 0; i < ARRAY_SIZE(MenuFilenames); ++i) m_aMenuSprites[i].Delete(); - +#ifdef MENU_MAP + for (int i = 0; i < ARRAY_SIZE(MapFilenames); ++i) + m_aMapSprites[i].Delete(); +#endif int menu = CTxdStore::FindTxdSlot("menu"); CTxdStore::RemoveTxd(menu); @@ -4674,6 +4718,171 @@ CMenuManager::PrintController(void) } } +#ifdef MENU_MAP + +#define ZOOM(x, y, in) \ + do { \ + if ((fMapSize < SCREEN_WIDTH / 3 && !in) || (fMapSize > SCREEN_WIDTH * 2 && in)) \ + break; \ + float z2 = in? 1.1f : 1.f/1.1f; \ + fMapCenterX += (x - fMapCenterX) * (1.0f - z2); \ + fMapCenterY += (y - fMapCenterY) * (1.0f - z2); \ + fMapSize *= z2; \ + } while(0) \ + +void +CMenuManager::PrintMap(void) +{ + bMenuMapActive = true; + CRadar::InitFrontEndMap(); + + // Because fMapSize is half of the map length, and map consists of 3x3 tiles. + float halfTile = fMapSize / 3.0f; + + RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR); + + if (SCREEN_WIDTH >= fMapCenterX - fMapSize || SCREEN_HEIGHT >= fMapCenterY - fMapSize) { + m_aMapSprites[MAPTOP1].Draw(CRect(fMapCenterX - fMapSize, fMapCenterY - fMapSize, + fMapCenterX - halfTile, fMapCenterY - halfTile), CRGBA(255, 255, 255, FadeIn(255))); + } + + if (SCREEN_WIDTH >= fMapCenterX - halfTile || SCREEN_HEIGHT >= fMapCenterY - fMapSize) { + m_aMapSprites[MAPTOP2].Draw(CRect(fMapCenterX - halfTile, fMapCenterY - fMapSize, + fMapCenterX + halfTile, fMapCenterY - halfTile), CRGBA(255, 255, 255, FadeIn(255))); + } + + if (SCREEN_WIDTH >= fMapCenterX - halfTile || SCREEN_HEIGHT >= fMapCenterY - fMapSize) { + m_aMapSprites[MAPTOP3].Draw(CRect(fMapCenterX + halfTile, fMapCenterY - fMapSize, + fMapCenterX + fMapSize, fMapCenterY - halfTile), CRGBA(255, 255, 255, FadeIn(255))); + } + + if (SCREEN_WIDTH >= fMapCenterX - fMapSize || SCREEN_HEIGHT >= fMapCenterY - halfTile) { + m_aMapSprites[MAPMID1].Draw(CRect(fMapCenterX - fMapSize, fMapCenterY - halfTile, + fMapCenterX - halfTile, fMapCenterY + halfTile), CRGBA(255, 255, 255, FadeIn(255))); + } + + if (SCREEN_WIDTH >= fMapCenterX - halfTile || SCREEN_HEIGHT >= fMapCenterY - halfTile) { + m_aMapSprites[MAPMID2].Draw(CRect(fMapCenterX - halfTile, fMapCenterY - halfTile, + fMapCenterX + halfTile, fMapCenterY + halfTile), CRGBA(255, 255, 255, FadeIn(255))); + } + + if (SCREEN_WIDTH >= fMapCenterX - halfTile || SCREEN_HEIGHT >= fMapCenterY - halfTile) { + m_aMapSprites[MAPMID3].Draw(CRect(fMapCenterX + halfTile, fMapCenterY - halfTile, + fMapCenterX + fMapSize, fMapCenterY + halfTile), CRGBA(255, 255, 255, FadeIn(255))); + } + + if (SCREEN_WIDTH >= fMapCenterX - fMapSize || SCREEN_HEIGHT >= fMapCenterY - halfTile) { + m_aMapSprites[MAPBOT1].Draw(CRect(fMapCenterX - fMapSize, fMapCenterY + halfTile, + fMapCenterX - halfTile, fMapCenterY + fMapSize), CRGBA(255, 255, 255, FadeIn(255))); + } + + if (SCREEN_WIDTH >= fMapCenterX - halfTile || SCREEN_HEIGHT >= fMapCenterY - halfTile) { + m_aMapSprites[MAPBOT2].Draw(CRect(fMapCenterX - halfTile, fMapCenterY + halfTile, + fMapCenterX + halfTile, fMapCenterY + fMapSize), CRGBA(255, 255, 255, FadeIn(255))); + } + + if (SCREEN_WIDTH >= fMapCenterX - halfTile || SCREEN_HEIGHT >= fMapCenterY - halfTile) { + m_aMapSprites[MAPBOT3].Draw(CRect(fMapCenterX + halfTile, fMapCenterY + halfTile, + fMapCenterX + fMapSize, fMapCenterY + fMapSize), CRGBA(255, 255, 255, FadeIn(255))); + } + + CRadar::DrawBlips(); + + if (CPad::GetPad(0)->GetRightMouseJustDown()) { + if (m_nMousePosY > fMapCenterY - fMapSize && m_nMousePosY < fMapCenterY + fMapSize && + m_nMousePosX > fMapCenterX - fMapSize && m_nMousePosX < fMapCenterX + fMapSize) { + + float diffX = fMapCenterX - fMapSize, diffY = fMapCenterY - fMapSize; + float x = ((m_nMousePosX - diffX) / (fMapSize * 2)) * 4000.0f - 2000.0f; + float y = 2000.0f - ((m_nMousePosY - diffY) / (fMapSize * 2)) * 4000.0f; + CRadar::ToggleTargetMarker(x, y); + } + } + + if (CPad::GetPad(0)->GetLeftMouse()) { + fMapCenterX += m_nMousePosX - m_nMouseOldPosX; + fMapCenterY += m_nMousePosY - m_nMouseOldPosY; + } else if (CPad::GetPad(0)->GetLeft() || CPad::GetPad(0)->GetDPadLeft()) { + fMapCenterX += 15.0f; + } else if (CPad::GetPad(0)->GetRight() || CPad::GetPad(0)->GetDPadRight()) { + fMapCenterX -= 15.0f; + } else if (CPad::GetPad(0)->GetLeftStickX()) { + fMapCenterX -= CPad::GetPad(0)->GetLeftStickX() / 128.0f * 20.0f; + } + + if (CPad::GetPad(0)->GetUp() || CPad::GetPad(0)->GetDPadUp()) { + fMapCenterY += 15.0f; + } else if (CPad::GetPad(0)->GetDown() || CPad::GetPad(0)->GetDPadDown()) { + fMapCenterY -= 15.0f; + } else if (CPad::GetPad(0)->GetLeftStickY()) { + fMapCenterY += CPad::GetPad(0)->GetLeftStickY() / 128.0f * 20.0f; + } + + if (CPad::GetPad(0)->GetMouseWheelUp() || CPad::GetPad(0)->GetPageUp() || CPad::GetPad(0)->GetRightShoulder2()) { + if (CPad::GetPad(0)->GetMouseWheelUp()) + ZOOM(m_nMousePosX, m_nMousePosY, false); + else + ZOOM(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, false); + } else if (CPad::GetPad(0)->GetMouseWheelDown() || CPad::GetPad(0)->GetPageDown() || CPad::GetPad(0)->GetRightShoulder1()) { + if (CPad::GetPad(0)->GetMouseWheelDown()) + ZOOM(m_nMousePosX, m_nMousePosY, true); + else + ZOOM(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, true); + } + + if (fMapCenterX - fMapSize > SCREEN_WIDTH / 2) + fMapCenterX = fMapSize + SCREEN_WIDTH / 2; + + if (fMapCenterX + fMapSize < SCREEN_WIDTH / 2) + fMapCenterX = SCREEN_WIDTH / 2 - fMapSize; + + if (fMapCenterY + fMapSize < SCREEN_HEIGHT - MENU_Y(60.0f)) + fMapCenterY = SCREEN_HEIGHT - MENU_Y(60.0f) - fMapSize; + + fMapCenterY = min(fMapCenterY, fMapSize); // To not show beyond north border + + bMenuMapActive = false; + + // CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(5.0f)); // From VC + // CFont::SetRightJustifyWrap(10.0f); + + CSprite2d::DrawRect(CRect(MENU_X(14.0f), SCREEN_STRETCH_FROM_BOTTOM(95.0f), + SCREEN_STRETCH_FROM_RIGHT(11.0f), SCREEN_STRETCH_FROM_BOTTOM(58.0f)), + CRGBA(235, 170, 50, 255)); + + CFont::SetScale(MENU_X(0.4f), MENU_Y(0.7f)); + CFont::SetFontStyle(FONT_BANK); + CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255))); + + float nextX = MENU_X(30.0f), nextY = 95.0f; + wchar *text; +#define TEXT_PIECE(key,extraSpace) \ + text = TheText.Get(key); CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), text); nextX += CFont::GetStringWidth(text, true) + MENU_X(extraSpace); + + TEXT_PIECE("FEC_MWB", 3.0f); + TEXT_PIECE("FEC_PGD", 1.0f); + TEXT_PIECE("FEC_IBT", 1.0f); + TEXT_PIECE("FEC_ZIN", 20.0f); + TEXT_PIECE("FEC_MWF", 3.0f); + TEXT_PIECE("FEC_PGU", 1.0f); + TEXT_PIECE("FEC_IBT", 1.0f); + CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), TheText.Get("FEC_ZOT")); nextX = MENU_X(30.0f); nextY -= 11.0f; + TEXT_PIECE("FEC_UPA", 2.0f); + TEXT_PIECE("FEC_DWA", 2.0f); + TEXT_PIECE("FEC_LFA", 2.0f); + TEXT_PIECE("FEC_RFA", 2.0f); + TEXT_PIECE("FEC_MSL", 1.0f); + TEXT_PIECE("FEC_IBT", 1.0f); + CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), TheText.Get("FEC_MOV")); nextX = MENU_X(30.0f); nextY -= 11.0f; + TEXT_PIECE("FEC_MSR", 2.0f); + TEXT_PIECE("FEC_IBT", 1.0f); + CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), TheText.Get("FEC_TAR")); +#undef TEXT_PIECE +} + +#undef ZOOM +#endif + #if 0 uint8 CMenuManager::GetNumberOfMenuOptions() { diff --git a/src/core/Frontend.h b/src/core/Frontend.h index 4eee198f..a97afb24 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -109,6 +109,8 @@ enum eFrontendSprites FE_RADIO7, FE_RADIO8, FE_RADIO9, + + NUM_FE_SPRITES }; enum eMenuSprites @@ -132,6 +134,8 @@ enum eMenuSprites MENUSPRITE_UPOFF, MENUSPRITE_UPON, MENUSPRITE_GTA3LOGO, + MENUSPRITE_UNUSED, + NUM_MENU_SPRITES }; enum eSaveSlot @@ -149,6 +153,22 @@ enum eSaveSlot SAVESLOT_LABEL = 36 }; +#ifdef MENU_MAP +enum MapSprites +{ + MAPMID1, + MAPMID2, + MAPMID3, + MAPBOT1, + MAPBOT2, + MAPBOT3, + MAPTOP1, + MAPTOP2, + MAPTOP3, + NUM_MAP_SPRITES +}; +#endif + enum eMenuScreen { MENUPAGE_DISABLED = -1, @@ -211,6 +231,9 @@ enum eMenuScreen MENUPAGE_MOUSE_CONTROLS = 56, MENUPAGE_57 = 57, MENUPAGE_58 = 58, +#ifdef MENU_MAP + MENUPAGE_MAP = 59, +#endif MENUPAGES }; @@ -465,8 +488,8 @@ public: char field_455; bool m_bStartWaitingForKeyBind; bool m_bSpritesLoaded; - CSprite2d m_aFrontEndSprites[28]; - CSprite2d m_aMenuSprites[20]; + CSprite2d m_aFrontEndSprites[NUM_FE_SPRITES]; + CSprite2d m_aMenuSprites[NUM_MENU_SPRITES]; int32 field_518; int32 m_nMenuFadeAlpha; bool m_bPressedPgUpOnList; @@ -532,6 +555,14 @@ public: static bool m_PrefsDisableTutorials; #endif // !MASTER +#ifdef MENU_MAP + static bool bMenuMapActive; + static float fMapSize; + static float fMapCenterY; + static float fMapCenterX; + static CSprite2d m_aMapSprites[NUM_MAP_SPRITES]; + void PrintMap(); +#endif public: static void BuildStatLine(char *text, void *stat, uint8 aFloat, void *stat2); diff --git a/src/core/MenuScreens.h b/src/core/MenuScreens.h index ace6a719..bac8f0a8 100644 --- a/src/core/MenuScreens.h +++ b/src/core/MenuScreens.h @@ -7,7 +7,11 @@ const CMenuScreen aScreens[] = { { "", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, // MENUPAGE_STATS = 1 - Both PrintStats and Draw were printing the page name, so deleted the string Draw looked for. +#ifdef MENU_MAP + { ""/*"FET_STA"*/, MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 5, 3, +#else { ""/*"FET_STA"*/, MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 5, 2, +#endif MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, }, @@ -20,7 +24,11 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_BRIEFS = 3 +#ifdef MENU_MAP + { "FET_BRE", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 6, 4, +#else { "FET_BRE", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 6, 3, +#endif MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, }, @@ -298,7 +306,11 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_OPTIONS = 41 +#ifdef MENU_MAP + { "FET_OPT", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 1, 5, +#else { "FET_OPT", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 1, 4, +#endif MENUACTION_CHANGEMENU, "FET_CTL", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC, MENUACTION_LOADRADIO, "FET_AUD", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, MENUACTION_CHANGEMENU, "FET_DIS", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS, @@ -308,7 +320,11 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_EXIT = 42 +#ifdef MENU_MAP + { "FET_QG", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 2, 6, +#else { "FET_QG", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 2, 5, +#endif MENUACTION_LABEL, "FEQ_SRE", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEM_NO", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CANCELGAME, "FEM_YES", SAVESLOT_NONE, MENUPAGE_NONE, @@ -369,6 +385,9 @@ const CMenuScreen aScreens[] = { { "FET_PAU", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, MENUACTION_RESUME, "FEM_RES", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEN_STA", SAVESLOT_NONE, MENUPAGE_NEW_GAME, +#ifdef MENU_MAP + MENUACTION_CHANGEMENU, "FEG_MAP", SAVESLOT_NONE, MENUPAGE_MAP, +#endif MENUACTION_CHANGEMENU, "FEP_STA", SAVESLOT_NONE, MENUPAGE_STATS, MENUACTION_CHANGEMENU, "FEP_BRI", SAVESLOT_NONE, MENUPAGE_BRIEFS, MENUACTION_CHANGEMENU, "FET_OPT", SAVESLOT_NONE, MENUPAGE_OPTIONS, @@ -407,4 +426,10 @@ const CMenuScreen aScreens[] = { { "", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, + +#ifdef MENU_MAP + // MENUPAGE_MAP = 59 + { "FEG_MAP", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 5, 2, + }, +#endif }; diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 3824af7d..07ddb5d8 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -80,7 +80,7 @@ CRGBA CRadar::ArrowBlipColour1; CRGBA CRadar::ArrowBlipColour2; uint16 CRadar::MapLegendCounter; uint16 CRadar::MapLegendList[NUM_MAP_LEGENDS]; -bool CRadar::bMenuMapActive; +int CRadar::TargetMarkerId = -1; #endif // taken from VC @@ -89,6 +89,10 @@ float CRadar::cachedSin; uint8 CRadar::CalculateBlipAlpha(float dist) { +#ifdef MENU_MAP + if (CMenuManager::bMenuMapActive) + return 255; +#endif if (dist <= 1.0f) return 255; @@ -132,9 +136,12 @@ void CRadar::ClearBlip(int32 i) if (index != -1) { SetRadarMarkerState(index, false); ms_RadarTrace[index].m_bInUse = false; +#ifndef MENU_MAP + // Ssshhh ms_RadarTrace[index].m_eBlipType = BLIP_NONE; ms_RadarTrace[index].m_eBlipDisplay = BLIP_DISPLAY_NEITHER; - ms_RadarTrace[index].m_IconID = RADAR_SPRITE_NONE; + ms_RadarTrace[index].m_eRadarSprite = RADAR_SPRITE_NONE; +#endif } } @@ -146,7 +153,7 @@ void CRadar::ClearBlipForEntity(eBlipType type, int32 id) ms_RadarTrace[i].m_bInUse = false; ms_RadarTrace[i].m_eBlipType = BLIP_NONE; ms_RadarTrace[i].m_eBlipDisplay = BLIP_DISPLAY_NEITHER; - ms_RadarTrace[i].m_IconID = RADAR_SPRITE_NONE; + ms_RadarTrace[i].m_eRadarSprite = RADAR_SPRITE_NONE; } }; } @@ -233,7 +240,7 @@ int CRadar::ClipRadarPoly(CVector2D *poly, const CVector2D *rect) bool CRadar::DisplayThisBlip(int32 counter) { - switch (ms_RadarTrace[counter].m_IconID) { + switch (ms_RadarTrace[counter].m_eRadarSprite) { case RADAR_SPRITE_BOMB: case RADAR_SPRITE_SPRAY: case RADAR_SPRITE_WEAPON: @@ -309,28 +316,39 @@ void CRadar::DrawBlips() CVector2D in = CVector2D(0.0f, 0.0f); TransformRadarPointToScreenSpace(out, in); - float angle; - if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN) - angle = PI + FindPlayerHeading(); -#ifdef FIX_BUGS - else if (TheCamera.GetLookDirection() != LOOKING_FORWARD) - angle = FindPlayerHeading() - (PI + (TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetPosition() - TheCamera.Cams[TheCamera.ActiveCam].SourceBeforeLookBehind).Heading()); +#ifdef MENU_MAP + if (!CMenuManager::bMenuMapActive) { #endif - else - angle = FindPlayerHeading() - (PI + TheCamera.GetForward().Heading()); + float angle; + if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN) + angle = PI + FindPlayerHeading(); +#ifdef FIX_BUGS + else if (TheCamera.GetLookDirection() != LOOKING_FORWARD) + angle = FindPlayerHeading() - (PI + (TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetPosition() - TheCamera.Cams[TheCamera.ActiveCam].SourceBeforeLookBehind).Heading()); +#endif + else + angle = FindPlayerHeading() - (PI + TheCamera.GetForward().Heading()); - DrawRotatingRadarSprite(&CentreSprite, out.x, out.y, angle, 255); + DrawRotatingRadarSprite(&CentreSprite, out.x, out.y, angle, 255); - CVector2D vec2d; - vec2d.x = vec2DRadarOrigin.x; - vec2d.y = M_SQRT2 * m_radarRange + vec2DRadarOrigin.y; - TransformRealWorldPointToRadarSpace(in, vec2d); - LimitRadarPoint(in); - TransformRadarPointToScreenSpace(out, in); - DrawRadarSprite(RADAR_SPRITE_NORTH, out.x, out.y, 255); + CVector2D vec2d; + vec2d.x = vec2DRadarOrigin.x; + vec2d.y = M_SQRT2 * m_radarRange + vec2DRadarOrigin.y; + TransformRealWorldPointToRadarSpace(in, vec2d); + LimitRadarPoint(in); + TransformRadarPointToScreenSpace(out, in); + DrawRadarSprite(RADAR_SPRITE_NORTH, out.x, out.y, 255); +#ifdef MENU_MAP + } +#endif CEntity *blipEntity = nil; for(int blipId = 0; blipId < NUMRADARBLIPS; blipId++) { +#ifdef MENU_MAP + // A little hack to reuse cleared blips in menu map. hehe + if (!CMenuManager::bMenuMapActive || ms_RadarTrace[blipId].m_eBlipType == BLIP_CAR || + ms_RadarTrace[blipId].m_eBlipType == BLIP_CHAR || ms_RadarTrace[blipId].m_eBlipType == BLIP_OBJECT) +#endif if (!ms_RadarTrace[blipId].m_bInUse) continue; @@ -338,8 +356,8 @@ void CRadar::DrawBlips() case BLIP_CAR: case BLIP_CHAR: case BLIP_OBJECT: - if (ms_RadarTrace[blipId].m_IconID == RADAR_SPRITE_BOMB || ms_RadarTrace[blipId].m_IconID == RADAR_SPRITE_SAVE - || ms_RadarTrace[blipId].m_IconID == RADAR_SPRITE_SPRAY || ms_RadarTrace[blipId].m_IconID == RADAR_SPRITE_WEAPON) { + if (ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_BOMB || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_SAVE + || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_SPRAY || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_WEAPON) { switch (ms_RadarTrace[blipId].m_eBlipType) { case BLIP_CAR: @@ -372,8 +390,8 @@ void CRadar::DrawBlips() TransformRealWorldPointToRadarSpace(in, blipEntity->GetPosition()); float dist = LimitRadarPoint(in); TransformRadarPointToScreenSpace(out, in); - if (ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_NONE) { - DrawRadarSprite(ms_RadarTrace[blipId].m_IconID, out.x, out.y, CalculateBlipAlpha(dist)); + if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_NONE) { + DrawRadarSprite(ms_RadarTrace[blipId].m_eRadarSprite, out.x, out.y, CalculateBlipAlpha(dist)); } else { #ifdef TRIANGULAR_BLIPS CVector &pos = FindPlayerCentreOfWorld_NoSniperShift(); @@ -394,8 +412,8 @@ void CRadar::DrawBlips() break; case BLIP_COORD: case BLIP_CONTACT_POINT: - if ((ms_RadarTrace[blipId].m_IconID == RADAR_SPRITE_BOMB || ms_RadarTrace[blipId].m_IconID == RADAR_SPRITE_SAVE - || ms_RadarTrace[blipId].m_IconID == RADAR_SPRITE_SPRAY || ms_RadarTrace[blipId].m_IconID == RADAR_SPRITE_WEAPON) + if ((ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_BOMB || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_SAVE + || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_SPRAY || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_WEAPON) && (ms_RadarTrace[blipId].m_eBlipType != BLIP_CONTACT_POINT || !CTheScripts::IsPlayerOnAMission())) { uint32 color = GetRadarTraceColour(ms_RadarTrace[blipId].m_nColor, ms_RadarTrace[blipId].m_bDim); @@ -411,8 +429,8 @@ void CRadar::DrawBlips() TransformRealWorldPointToRadarSpace(in, ms_RadarTrace[blipId].m_vec2DPos); float dist = LimitRadarPoint(in); TransformRadarPointToScreenSpace(out, in); - if (ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_NONE) { - DrawRadarSprite(ms_RadarTrace[blipId].m_IconID, out.x, out.y, CalculateBlipAlpha(dist)); + if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_NONE) { + DrawRadarSprite(ms_RadarTrace[blipId].m_eRadarSprite, out.x, out.y, CalculateBlipAlpha(dist)); } else { #ifdef TRIANGULAR_BLIPS CVector &pos = FindPlayerCentreOfWorld_NoSniperShift(); @@ -442,8 +460,8 @@ void CRadar::DrawBlips() case BLIP_CAR: case BLIP_CHAR: case BLIP_OBJECT: - if (ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_BOMB && ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_SAVE - && ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_SPRAY && ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_WEAPON) { + if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_BOMB && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_SAVE + && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_SPRAY && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_WEAPON) { switch (ms_RadarTrace[blipId].m_eBlipType) { case BLIP_CAR: @@ -477,8 +495,8 @@ void CRadar::DrawBlips() TransformRealWorldPointToRadarSpace(in, blipEntity->GetPosition()); float dist = LimitRadarPoint(in); TransformRadarPointToScreenSpace(out, in); - if (ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_NONE) - DrawRadarSprite(ms_RadarTrace[blipId].m_IconID, out.x, out.y, CalculateBlipAlpha(dist)); + if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_NONE) + DrawRadarSprite(ms_RadarTrace[blipId].m_eRadarSprite, out.x, out.y, CalculateBlipAlpha(dist)); else #ifdef TRIANGULAR_BLIPS { @@ -509,8 +527,8 @@ void CRadar::DrawBlips() switch (ms_RadarTrace[blipId].m_eBlipType) { case BLIP_COORD: case BLIP_CONTACT_POINT: - if (ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_BOMB && ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_SAVE - && ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_SPRAY && ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_WEAPON + if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_BOMB && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_SAVE + && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_SPRAY && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_WEAPON && (ms_RadarTrace[blipId].m_eBlipType != BLIP_CONTACT_POINT || !CTheScripts::IsPlayerOnAMission())) { uint32 color = GetRadarTraceColour(ms_RadarTrace[blipId].m_nColor, ms_RadarTrace[blipId].m_bDim); @@ -526,8 +544,8 @@ void CRadar::DrawBlips() TransformRealWorldPointToRadarSpace(in, ms_RadarTrace[blipId].m_vec2DPos); float dist = LimitRadarPoint(in); TransformRadarPointToScreenSpace(out, in); - if (ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_NONE) - DrawRadarSprite(ms_RadarTrace[blipId].m_IconID, out.x, out.y, CalculateBlipAlpha(dist)); + if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_NONE) + DrawRadarSprite(ms_RadarTrace[blipId].m_eRadarSprite, out.x, out.y, CalculateBlipAlpha(dist)); else #ifdef TRIANGULAR_BLIPS { @@ -550,6 +568,14 @@ void CRadar::DrawBlips() break; } } +#ifdef MENU_MAP + if (CMenuManager::bMenuMapActive) { + CVector2D in, out; + TransformRealWorldPointToRadarSpace(in, FindPlayerCentreOfWorld_NoSniperShift()); + TransformRadarPointToScreenSpace(out, in); + DrawYouAreHereSprite(out.x, out.y); + } +#endif } } @@ -701,8 +727,8 @@ void CRadar::DrawRadarSprite(uint16 sprite, float x, float y, uint8 alpha) { RadarSprites[sprite]->Draw(CRect(x - SCREEN_SCALE_X(8.0f), y - SCREEN_SCALE_Y(8.0f), x + SCREEN_SCALE_X(8.0f), y + SCREEN_SCALE_Y(8.0f)), CRGBA(255, 255, 255, alpha)); #ifdef MENU_MAP - if (bMenuMapActive) { - bool alreadyThere; + if (CMenuManager::bMenuMapActive) { + bool alreadyThere = false; for (int i = 0; i < NUM_MAP_LEGENDS; i++) { if (MapLegendList[i] == sprite) alreadyThere = true; @@ -834,7 +860,7 @@ CRadar::Initialise() ms_RadarTrace[i].m_bInUse = false; ms_RadarTrace[i].m_eBlipType = BLIP_NONE; ms_RadarTrace[i].m_eBlipDisplay = BLIP_DISPLAY_NEITHER; - ms_RadarTrace[i].m_IconID = RADAR_SPRITE_NONE; + ms_RadarTrace[i].m_eRadarSprite = RADAR_SPRITE_NONE; } m_radarRange = 350.0f; @@ -847,6 +873,10 @@ float CRadar::LimitRadarPoint(CVector2D &point) float dist, invdist; dist = point.Magnitude(); +#ifdef MENU_MAP + if (CMenuManager::bMenuMapActive) + return dist; +#endif if (dist > 1.0f) { invdist = 1.0f / dist; point.x *= invdist; @@ -930,7 +960,7 @@ void CRadar::SetBlipSprite(int32 i, int32 icon) { int index = CRadar::GetActualBlipArrayIndex(i); if (index != -1) { - ms_RadarTrace[index].m_IconID = icon; + ms_RadarTrace[index].m_eRadarSprite = icon; } } @@ -951,7 +981,7 @@ int CRadar::SetCoordBlip(eBlipType type, CVector pos, int32 color, eBlipDisplay ms_RadarTrace[nextBlip].m_nEntityHandle = 0; ms_RadarTrace[nextBlip].m_wScale = 1; ms_RadarTrace[nextBlip].m_eBlipDisplay = display; - ms_RadarTrace[nextBlip].m_IconID = RADAR_SPRITE_NONE; + ms_RadarTrace[nextBlip].m_eRadarSprite = RADAR_SPRITE_NONE; return CRadar::GetNewUniqueBlipIndex(nextBlip); } @@ -970,7 +1000,7 @@ int CRadar::SetEntityBlip(eBlipType type, int32 handle, int32 color, eBlipDispla ms_RadarTrace[nextBlip].m_nEntityHandle = handle; ms_RadarTrace[nextBlip].m_wScale = 1; ms_RadarTrace[nextBlip].m_eBlipDisplay = display; - ms_RadarTrace[nextBlip].m_IconID = RADAR_SPRITE_NONE; + ms_RadarTrace[nextBlip].m_eRadarSprite = RADAR_SPRITE_NONE; return GetNewUniqueBlipIndex(nextBlip); } @@ -1050,8 +1080,8 @@ void CRadar::ShowRadarTraceWithHeight(float x, float y, uint32 size, uint8 red, } #ifdef MENU_MAP // VC uses -1 for coords and -2 for entities but meh, I don't want to edit DrawBlips - if (bMenuMapActive) { - bool alreadyThere; + if (CMenuManager::bMenuMapActive) { + bool alreadyThere = false; for (int i = 0; i < NUM_MAP_LEGENDS; i++) { if (MapLegendList[i] == -1) alreadyThere = true; @@ -1156,9 +1186,10 @@ void CRadar::TransformRadarPointToRealWorldSpace(CVector2D &out, const CVector2D void CRadar::TransformRadarPointToScreenSpace(CVector2D &out, const CVector2D &in) { #ifdef MENU_MAP - if (bMenuMapActive) { - out.x = MENU_X_LEFT_ALIGNED((0.66193402f * m_nMapNegativePadding * in.x) + (0.2348f * m_nMapNegativePadding) + m_nMapLeftPadding); - out.y = MENU_Y(m_nMapTopPadding - (0.065807f * m_nMapNegativePadding) - (0.66563499f * m_nMapNegativePadding * in.y)); + if (CMenuManager::bMenuMapActive) { + // fMapSize is actually half map size. Radar range is 1000, so if x is -2000, in.x + 2.0f is 0. + out.x = (CMenuManager::fMapCenterX - CMenuManager::fMapSize) + (in.x + 2.0f) * CMenuManager::fMapSize * 2.0f / 4.0f; + out.y = (CMenuManager::fMapCenterY - CMenuManager::fMapSize) + (2.0f - in.y) * CMenuManager::fMapSize * 2.0f / 4.0f; } else #endif { @@ -1331,7 +1362,7 @@ CRadar::CalculateCachedSinCos() { if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED #ifdef MENU_MAP - || bMenuMapActive + || CMenuManager::bMenuMapActive #endif ) { cachedSin = 0.0f; @@ -1361,7 +1392,7 @@ CRadar::InitFrontEndMap() CalculateCachedSinCos(); vec2DRadarOrigin.x = 0.0f; vec2DRadarOrigin.y = 0.0f; - m_radarRange = 1190.0f; + m_radarRange = 1000.0f; // doesn't mean anything, just affects the calculation in TransformRadarPointToScreenSpace for (int i = 0; i < NUM_MAP_LEGENDS; i++) { MapLegendList[i] = RADAR_SPRITE_NONE; } @@ -1369,6 +1400,62 @@ CRadar::InitFrontEndMap() ArrowBlipColour1 = CRGBA(0, 0, 0, 0); ArrowBlipColour2 = CRGBA(0, 0, 0, 0); } + +void +CRadar::DrawYouAreHereSprite(float x, float y) +{ + static uint32 lastChange = 0; + static bool show = true; + + if (show) { + if (CTimer::GetTimeInMillisecondsPauseMode() - lastChange > 500) { + lastChange = CTimer::GetTimeInMillisecondsPauseMode(); + show = !show; + } + } else { + if (CTimer::GetTimeInMillisecondsPauseMode() - lastChange > 200) { + lastChange = CTimer::GetTimeInMillisecondsPauseMode(); + show = !show; + } + } + + if (show) { + float left = x - SCREEN_SCALE_X(12.0f); + float top = y - SCREEN_SCALE_Y(2.0f); + float right = SCREEN_SCALE_X(12.0) + x; + float bottom = y - SCREEN_SCALE_Y(26.0f); + CentreSprite.Draw(CRect(left, top, right, bottom), CRGBA(255, 217, 106, 255)); + } + MapLegendList[MapLegendCounter++] = RADAR_SPRITE_CENTRE; +} + +void +CRadar::ToggleTargetMarker(float x, float y) +{ + if (TargetMarkerId == -1) { + int nextBlip; + for (nextBlip = 0; nextBlip < NUMRADARBLIPS; nextBlip++) { + if (!ms_RadarTrace[nextBlip].m_bInUse) + break; + } + ms_RadarTrace[nextBlip].m_eBlipType = BLIP_COORD; + ms_RadarTrace[nextBlip].m_nColor = 0x333333FF; + ms_RadarTrace[nextBlip].m_bDim = 1; + ms_RadarTrace[nextBlip].m_bInUse = 1; + ms_RadarTrace[nextBlip].m_Radius = 1.0f; + CVector pos(x, y, CWorld::FindGroundZForCoord(x,y)); + ms_RadarTrace[nextBlip].m_vec2DPos = pos; + ms_RadarTrace[nextBlip].m_vecPos = pos; + ms_RadarTrace[nextBlip].m_nEntityHandle = 0; + ms_RadarTrace[nextBlip].m_wScale = 5; + ms_RadarTrace[nextBlip].m_eBlipDisplay = BLIP_DISPLAY_BLIP_ONLY; + ms_RadarTrace[nextBlip].m_eRadarSprite = RADAR_SPRITE_NONE; + TargetMarkerId = CRadar::GetNewUniqueBlipIndex(nextBlip); + } else { + ClearBlip(TargetMarkerId); + TargetMarkerId = -1; + } +} #endif STARTPATCHES diff --git a/src/core/Radar.h b/src/core/Radar.h index fb10967b..6d5bb196 100644 --- a/src/core/Radar.h +++ b/src/core/Radar.h @@ -69,7 +69,7 @@ struct CBlip float m_Radius; int16 m_wScale; uint16 m_eBlipDisplay; // eBlipDisplay - uint16 m_IconID; // eRadarSprite + uint16 m_eRadarSprite; // eRadarSprite }; static_assert(sizeof(CBlip) == 0x30, "CBlip: error"); @@ -108,12 +108,16 @@ public: static float cachedCos; static float cachedSin; #ifdef MENU_MAP +#define NUM_MAP_LEGENDS 75 static CRGBA ArrowBlipColour1; static CRGBA ArrowBlipColour2; - static uint16 MapLegendList[75]; - static bool bMenuMapActive; + static uint16 MapLegendList[NUM_MAP_LEGENDS]; + static uint16 MapLegendCounter; + static int TargetMarkerId; static void InitFrontEndMap(); + static void DrawYouAreHereSprite(float, float); + static void ToggleTargetMarker(float, float); #endif static uint8 CalculateBlipAlpha(float dist); static void ChangeBlipBrightness(int32 i, int32 bright); diff --git a/src/core/config.h b/src/core/config.h index d813a1f2..75ecbfad 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -192,7 +192,7 @@ enum Config { #define TRIANGULAR_BLIPS // height indicating triangular radar blips, as in VC #define PS2_SAVE_DIALOG // PS2 style save dialog with transparent black box // #define PS2_LIKE_MENU // An effort to recreate PS2 menu, cycling through tabs, different bg etc. -// #define MENU_MAP // Very WIP +#define MENU_MAP // VC-like menu map. Make sure you have new menu.txd // Script #define USE_DEBUG_SCRIPT_LOADER // makes game load main_freeroam.scm by default From cf8249fa05ceb5267363a0d584aa25c840e4d11d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Tue, 7 Apr 2020 23:20:23 +0300 Subject: [PATCH 020/112] Menu map changes - new texture by AG - map now centers when zoomed out too much - background darkened a bit - mouse wheel up/down switched - cross add target on gamepad - LeftStickY inverted --- gamefiles/menu.txd | Bin 10244648 -> 10244648 bytes src/core/Frontend.cpp | 38 +++++++++++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/gamefiles/menu.txd b/gamefiles/menu.txd index a2ad4cc9ce9685b897bf28b472e8bff32db070fd..8ca5de168facf75936cbf40ebaaa2484fa07e818 100644 GIT binary patch delta 1239142 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

    d;ceQhShm*P>Nj@L?s80JzHp4lqav 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%0A)obYE0fdTXQak_(0kC>-d!YV5c*7yc0!V`Z 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

    piQstkPnrgLxM{&x6X`Q%DgA;$KBN+XKY^|7w*b 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 DSq!ukyhMc0NKJYeNKo zWp}bAJhlG+|39PIH7F(`AOK`G2oqIm*43j<{>Rteg%2u#;y)B=mJAf#$n&b8Q6Voa zL{n4esB2JYco_UBKu`i-1?#SXd=5_Gyoi0p&{Nbvb2=aggA(v$d`(YKDftg+^Err* zRA^%M`L~?j0-Lo1*$*x?kx!}z`7k~<7M>}4(YBAFH$5|&K_`gH!w36#_AX0eU|0cf zRdlaembGHVD>$EL@3AZFoyzfPKuf_juNU1E=8pwj>s>)kr7r zfzAssHAO72;zqNOXD{k4o4EN9`~Txs0Co@Uk!8wOD2)U30Wz%1;5Qp=CN=*%o1t@*~?$yv0As{0`iI8xq zi8!q1^cHZZ9G>$)xk5n;QEyx(3N795~SMzaM1M|NjacubpxOx5&0%% z(553$9~4dg@Q{jnfEauk80Y!@WELv(=zkQaP`H0*;Y0GkM&{QT zAUg;mkGisg3B&wV>miW<-C~Tqf(&%y0rKV7E4o#KkdC(ipQRO#G|QVBr5c5t>ai8U zFMj=iuh#+U1zIz(Y89f$0iQVZml=L+DX2<8zLb~{AJi8| zRu3w%B4R?|6WpLO71pQ&A5)2S%|IP&u@-1&#_27{$9jQM!}ags@YDfH3=Oc;^PofG zixgJDhs3d6y}o)8^c*r!ng)$2BM(SoD^pkP0CV1p~4lQl=tZR|oQ8Y&c>tfY9t9sG37Afk1-;|Nn==^B3q^ z=Kudg;n@W=^#$dF?f{DXdzB7@`GjMEL)|9^Q_I zS_roQosVQ8*nIVBn0*lY|AWfJRSOv4W4`LuEFcHLeSmHtAwH&sPdt%52-gp_|39XN zC64>|&xiX6G@=?4gILf9Zq|bR0wIVgQ-Az;fs$?i@B5E9r~*`RBQL8bs!WYVEHww^ z0;W|=@F)YNq4=+eGz8*bue}b>H6VUzXsIQRWr{P+LAYY+ni z_}J3*|KtDr|F@t1F@nib9&`>mtjGknVSoHD_{Y!$69Sc@f$Z}C<3YQoK&{OH+Lnya zmIBz#pb#acWIVkEt-}vWB#2>4&~h}ba&nm7RaAJW<+*x~+qwOjOZPHP!uBX=Es=M`U9# z-yXz=*blxG<=PYrctHe8M2irElK;UP&CAC0jDo zBL;hPj&jafj5KcvnmR^0-t#{waU=I$2_86#t%UrK39Y1(ZV3OUSGx;7zD8px6ds$dVSsUUqEj_>ueXpxlGEKfdSm7R-qxwDS#O zW5eNlMoBFpL9_A56G@=lgWS4ay=6r+1H%f?_#VjrpuO!K%?u2y;JM}WmX2lzhb(xz z0(6ec%9X3(gTy?0u}mb@)xj^~0;P#~ zwD1eW|B7@-EQlYAw2>KP0b-fhfA9fXNXJ)!FRp0nLX7W$LO^4Y0{r3%ka?k@pBP*=vwnPN3_n(c}0Z(&QneghZ^+#a2T8`hl3qfb_>TsNEm$g15Foxgc9~b5mE4;^S|8x`v2!aWm=|_0<0c3twrI- z-bJWK-#`WG@GV-k3Nn8NDoD^nt@7w-Nf-Ge+M zkF^sHy}})2Ke(xhZ$=(HNYMv2pJzFv9YBhC98~E4*RZ8j|9#GK%?XDL^MUREpZ85` z4!jio|NsBmt1G+fvk(I_pgZGNAuV;&!LqEW?#B!GupKCh?%xMrN)HYZ5dZsk#Nm{n zG*eq!8wxK-K?2u9k-87yk{6o>uzBEu^FFfrEvL79|Blqfgw$2=ngFNy5dT9;Vu*_% z7J!yHc_DQ{u@$7CQUap-KX_yod2cWFf)p`Q3ob}ktUxPB5#ySmrYFIsCi3ldpsIpN ziwQo#4k{?`|3#aTM_LRBR^P?s0oMQ$Xi!)IAG-qaH99)r+3@t1Mu7we2lzr4a6!nx zz`(@7&cMwe58AKv5u-f(4=E2>y%-omK(|i7E~2AudH8D8BKQzEs13hy` zK}k?%LLQ>#d-gnQ<;s=t1wEj&jJQM)(kS?cbU`;LsolSiNQ&s07yWoVQ0W0nh2Z=E zI(Cy2>6p&bdsw|t4lqRLZ$Xns=VPcp;&@>FR`^~%(Bgu>|Gz<&fr4D(QGLV{x#tQx z{}_1{CCG=!?L3~NPdw4f!+)TNhh`2?!xFjceR_*C%Ah33JdB1VC0%dKx%T5($aC$l z_kiZ!5$(p;dzNKE+mRsugW?n}0QLjV(dStQ4j?AyK^@P(uN&Y!W6;2}sVU-2Nr-`n z$$bbPtA$|m5%LiG|04vz@*sW^)P-OH$Yef>frR8?J_PH>5&{tYQ2Rj^V$skAKQ$9{ zT+6?I|KRK8L4%UvNDDrQX;}V1x)ug&c}Rt>H+-2Ws66}|9}D*Yh#wmN9bW5!`K6^E zZ~;*Hr=WnC9|iF{I1uOcz25Uk!QlWR4S?orKuccY8Rj$0XXwXU9>U5_(9q=n`v3Z% z0Zl5l4=GvpetOFy^tDGvJhPD60_f!-DEEH<{vCdJIjDR@UZV{PSbVdz=;h(EBvsI1 zo6uc|_5c4r&vFe4{ks~T*^XyD@kHK|MkyaOXK89~55MaLbTL|ZcsOLJ5|kf6_g2iG zKYt!L=luWwAJjfX?o@$%9E&tlhqXLJ8kPc;hxj_$pb*6<4?{6J+K9Rxy^29^AA*7u zx(WmA2T%(bxj~DE5Ar`~@KhD$Xll^JwmqZ)2{v$9l4}&xU(nDYmpiU7lU1Z+d!~1LGwTk2HOX<|36#+qW?dr*CdT}bm9pt6W`z|3#fWx z%EMp3e!$lzfy%>Gi?mQzY@+S8AlyDgxF?;p zDySHYk4G$f1}%U>Z)PHussy{;AoDPaRg7*op1JRp-L6p~A!y49{@26Tj)2N_*g+?t zY!Btba}bmdYJxzD6{rB*0M{stb4Q~7BXuo6jV$CLW-uS=dTFSB_>wLtAKrySsE61O zUY_&+KBC+PEBKDaN3sAcPpW#P86mKK5Fctk!~q}yPVJFCOgLmN+_v6;;W4c2Gx+xy9GF>4 zKm}(gd>aR7>8UCwVyA!ZS+6CCF)L7c;B0sRG>?8Bto{G%Jq{e9VLuoc8Sa4&ko~W- z7j*7Zd;$XlGsAl3|Nb!hK=ky#5lkj%oqyhc@9%4{fMh{<`T<$-5b71hn5*k?_xRCA zKrxQiBc{h+ULFolGoUC#@1BN-B9?-qH^FWKJeKnp;tu_A%bcl&rxFe5c~gQY5)(r!+SlL^2AyIaUxFr zQ2Q|)0N#>;bWrq*$)MUV3_isQD$C>HsTec@O2lOQuOIMbNT3!jMo~;@kH3ovbs5st z*!a5;|3en@)n302uWdnzIzAMwD87Fed`kitfE0v=!k2P_7i4S|MeL|}d)JX89JFc0 z{y!LkdhxpT1`HcO1s(_+{DUk_0I@+BY$|w}AOnLcFC%=4<@A=WH9ywxhaWDrYRhWS zl_c=edG(f6YgVn=1s~%CsfUl-f>(B|==Or{mQev&@_LT~LugpU16GE7hX0lS|AQ=t zVP=N&Vj!1-W)&G27#SHEw+r}HoM4>JKbwiFll_Rb@8B_6JSXo{Ttb5i$og`4>lV^j zCZWTOUYtNyE&hiN34lvz@KzB}*n;ues~#wq+O5U71n;RQQvdirx;(mmp1sSG5)vF> zdGSAcF=&v)?unKWr7w8C*fPjF2|Mvg; zL9KjP83>_SrXFOH;{V9-mEkADUx*L`17vvY`O3K4O{n|1L-g4nF~M^_H$R+S-V-LSFCDoO23VVuQ@&-h0IHJE-vunE}-N ze|n1oM|ey?3VcEUt*D82j11h^oSzkbM>l##cmzUQg#*eq0 z-h$C9N7|lFs43{t>>8yCpFXSq|6jfMiRT?qAVYC$66g>(C}2pbj|1Kv4=^5(2g# z?0`_D`F}#!O`YDt>a`UqNI?t2kx!-LIr?%kG9P@X9MZ{z2tLIA{|EuF1L?v;jK~6z1M*Q`3AuE{~85WtwtO>xoXQ3M+OE4_z8KSgPT?%j*Iwz zdP~-tRjU}_h5zX-N}3D|4X~?6|AQ)rh6-@g1njodC*oz0a*maEH$<{0A)yUfIon)UrRl1)aYFO&-dJ+W#M-p&ls&wC0>TeextIxImb_ zn8gdZ0tY2J(JQy@DKoL z2o3)ZAN)ZttU-&zuoc$eqMCsd)XUy-Y{Y- z-)b{ZW~nbPhoww#OA3A00D;vNC@0{7#-8_smzjYQa{d4Ry;oVi)^c{jdp0^px#s+5 zKpag(n9qr(9-V(YE6V|KmMN$JU%7HMVjBZh3S6Y-F{r>LJhFk_IwoPT2>m=PP!uB1 zSz#O5hzITQ28B52$cR0sw_N=S-ns{gR#1r?3hgg|)DSLkmspyco5RmM1L^-&hkSY~ zX!swo&j6H$&MKD1sB3%FvN(P~!xNmd?m8OdpEh4@&1vvn@fzE?voEWJv z#TaYAXufVay`>&npMY~S$i<`#-=LSK$Fo?2kS`hp4F!Oj0HDwV;nQ2tFCGLfE(Z_e zg6+q+Xb^OPQA5Li_&j)e^AX4Y|Np^9NqLSgaYQdo|NW|hPriVn2)X$R@?dy)J)$YJ z=k%7nd-v{z1_G%0`EoLPY5EI(lNq?@J^4R;F9w8PkJyd>|MV7*YHn_%(iFUx0WrA& zbr2{pz!=mPrGGzFc5gS?&_)O=mFY8`yA63i!YQN;p{ z6$>EY58ac5RG5MmS&%%|fWDU@9&J$t#(@H*wGk-AZEQGVI|(?5IACo~(Dd->EuvGm z!iVf&Yt_Kv`5)9>hm?ItrKy!Y+Ia(i{yV&2K-xzJ(tG1SLkmPF%r2z%ZNu+sbs6~i zt)Sb{-)pGDR5Pq+W(5`6swk@{s6H$A3S+0ldiYIWgsyzS7}+Ie2^(UO0%VU3ybA)F z1_f{O0fid`qi?}QpF#q)U14PnIJbcYO3_PO=z&pS6Cqg@(N_npo45)e8ivdWUoAyF zgZ=(}_=GWN1H9vb0|y|paNv<**Pz9V7K4^8g6#*L(}}WE0=?-6%Brz=1`9yNH)xa& z>{^HgQOJV@=sU+i=3y*hLmw=_w{8Nxv;{Sme<5vk17-dH@bMVPa13a=1K~i`p#A^B z!!MBB4)OuA0^Vn;L06FuLteFoSrfUdjBV#wRTbjk3Xl(xuTlWjS9sg5puqz4()J(H z3EQByEAm19AU^UASZt*&(k|}*pfnR&is*nsiV`jkqDxzBg9Yo5=7xzGEco#Qv4joe zfz_+muY-g?w6vvkut1543*MRs<(j|o@$fT*K>X0_XoCfzr6DNOcA@czp1K^VR0L|@PVDmoD>N5KmkFmKEHU;ht2k_^gs zh-H?LhUxXMh?Xiyz7%o13)n&b5hdq;(CT3aq}_s`C1>!<5_Kg)^6UjoQ>;TYM7MxWLqH6af`>_w)(e29IT#o~ z(;5)_!E;hEF(GgRK&krIFGN`k;v;waA$)kl7^9&IN)xrUf8p0Eg81?ANV|YRGrOSm zR8afD-Ts1t0{9grplQC&&dzRdg#Q2kp95{26@5|+l&X<2YW zCsTV_* zy=Sgbt6;knKy6es`O{mNG+}LfkdYYo-tSprdEmf$_;PJfh`{ey0R;?br7Cj&7Br-Q z&p^=ZN&zAW!6*D7vLL91<{E|XumMnm3Zu!0uY;b8d5|^AlpW?`fYV$4APpXZa{Vf# zGmxNsP#OUFA5xVdUpz!;As6UW$f;8i>nlKaM}>yIfS>9F8mnVk-PHk#4iE7)3KF% z7$Xk*AYB%aec%v4^D)UCbo5;hv40Wm1yDH`9*P*)0`Y6FqAj&WzHI}fi$dIh1jtUIyv}1(&=_k zd3dh_)DvB`dNsWL2g(B=bHKp?4RS3l#7Srb4;8?+#Q=FE^z2>KB!@owKxkeaxu69( z65MgDj|UBSK->+=1YfTs>L#6|C%e78yx=DXgAQ4NH<7`sx}SI=cbjyMdM$bN3UMe4 z=$62a74Tzk{)5Unq&>G_KBO3g*pDOtav!MNTLHRT9>M{4BuV4@9Az&?J~Hj~o~|{> zqZyzO0eK&(+*`dxYZcNOqCM=z3=Ie1TLhmMv3mVOx``YV=kcfuSc6urdIb-$my=b4 zI5`pP=t0dBMDrEo!IP8s{YN|Ll+vy;`WAz)q2M?MhaxD7L(%5dL0b%<5dax+LLLwT zm3v$a4DjQx=w0p|eK{HZ`mtA!h@aj*1}b*y=gWgV51!g|jS7v1&*MSbd#jMrET}aT zx)SLe)4hoT$TNlO|2_3YUf4&7zu_N?7qWUD6!Yr;|6l))6-B}Ne^1aXKmAs zi~uV4%0WXVQ2W8>n1+TQ4>xWh?S_H2OK>QUe6sUZ70Q$oHShRjF+QR+P(o)oZ?%mjW_y7@lWen-( zBHH-0Ztr0!_ekmIf+s2E=fmRnKj=7R^J-y{xP(cqc>W=<_T_Mn-UL2ucP0 z-%#6oIcGstF9ST2`k?XA<=0;A09D;^_4(gG?MYYy09|vpcOhtQ3MTR&-9VqC_$|ax zkLDm$3;+Mmf2SG+X>34uz`x!Dy0nYoCCIlRtaDUr$*NTdAA%0mL*;`vEWv{C|FNuO zL*#qF(fK}S!Q~#jqYXM47iJzfUU>Fqp;(Bl0OX*Yvsp{_@7IF2U^^hY`{DD#(Doku zrcICsR;*xvk9wn0E|9{*HK-&M4E)TwC4H1P<55hz6^`5jO1_p*IczX}jb3YJ) zSSStJ)dtT3&<#rQpkv`6?t#{IaP9v=?K@FbR`?MWpcd~6r2A1o<=m{d=Jz~>w;%<$Z-w(5&U}axjM)f&@4-8ar}o+ z@E>$$G5A~^aBzXPtSxb*9>1R229jtVDBpp`_nM);15uzmf#9VuctN{s)B>csKBL(+ z3VE{v==3S%#mw&2u83n({{R2q(d-&kR0JPV{SWF#!^Ryz_JalByT-vsYN!Tb@WCoU z&insgz1lU3X)U5#s$T6H#PABi2U!3=K?G_Zyv%~~q2@zO1!;h( zyFfO8I_`H?uUZ8!xIlAJNDF)*qd!QuAc4m=R;_}2614InG;}Jw4gYfTAqghXZa|Rf z;Ewsp$^YvS8#zJc+yb<6Phr&}4Y->?3RbN`oY4y^_mJ1cVJr90&#gzl-VKb& z5s)$5|GN-;P^awwf5heVP(HjMLE?k$hqYed3P3mdArFtO+QO`eJgN`!!Fr^+5#52H z5JgO$LL9hi6(Y@mMgqFPEA=7v{|5;$fdxQW4yFO_9Pc;OG?uUduL&t0`hV-d`L$h-#903xWtNT}QkE&YyY!GdO}ORu6F&J-K_ zA7x!(csZh~0u^hav7x9753eGP@q!eTqOBfUwF0_c7c{-NrxCKr5jxHdS?>ZO85vj^ zI6=kWLz++TK0?F?`dRX*#UOfoa?SyrQ4BbkflcT6>GQ z4UAO&3N-!QYd{Gq6q>~A|NqZDyHMgk(z)E=Vh-sHIY<&l%o=!9FLC_;|37@^f=9Ii z$EsDU;B$+R?Ss&>;-Nj3`glaW2DJ|od!S^v{vX&ypx^-G4QTv~<|8P#fq}Y2$hU)0 z!Ux$8Jvjss#GtVwWD7vM(~ z|3}y0wS?7c>eQ+5#t!JN>5ve_b!N~YhW9}r4nj;6K^+7i>cGv1*bhsDL}&oV5XtJH z4ulsPP!Awh`FAvfvju#A@yp4sL7}GH@F3%y<5As+G*bgA_7J7;|No$3ZovY?%npdJ z#kC54Bpis})wBv8Wgz~l6=>bwt5^TR=h8qHAl8qAR#m*5%*e?JFNZ;;)Yb2(n@=#7 z2%z<1zlI`?I0xyE4Mo~Mh(5drQh>BW8ayP7yw@9kP6s4L;CljL>#q~%iqN3sByvyl1q|Nr}*W%WW{ z6bmW_G-~UJKi39Qf|A%ba18IQp5hvV1_>gfJ zkp18bBG4_^k933{Xu;%qq?@x>b~ju8LpnPLG*E%OJke{(%gI0D!mfcV2Vt!_Cnv8$ zy4R9(4tNhSD362f{|{22g`^;BNk;RkSNZU{OVHHW7o=S8wZt_j6ls+UsBILA)CbHx z`$z$Kq-6D$)TmIT)+0h5V*h`H0LZzbudr$n z;<|Q_023D%{G>FHg~&_6K?{jkk*3Z-^ERQ-ds#qX1}e4C7uQ2~%7di;V=LuC!^07q z`arY0N@z#OGbk{?9R!j`E(UQOc|oIM5KE_+lts?yS>*HI;SXD? z1`1#hA7$qic)tjuPyopzs|T64fB*LFAidzlPCiF5i$Ubwbf97kxfsk^f?5n_EjgBj zyg~!yW8@VYpq2pg8Wf(rXvHANMgRZ*y9aR*WCslTZU$r@fP8cvx%&X|F-$wSR6|w| zF@HO}iw5CC$~|y41Q}Rc{~x~Z6vV%NJrv${0UZv3;)A1)6p;IbDr;Ce= z!(8-w&+0YEr4p16nlu61{~xrp4Os!9MK4@)RD+Ngy@2v8!ve%qCz$^VvB(3=hxbS! zOFkIDr3%D;P^mJR0ckJ}w+4ux!15%jUx20_+(m}k4|V{&aSI#FL%OmVWZ{3LQ=~zq z)~YThrYj8j!8N3<$WH)A~7-{ksq=AbIaYQltaz;=wh`fRTltyZ6Q4a{g zJaXVZyi<%`41!9vRSTLT-~}^CV9^2v_$p!$pG!jn-mM4SBN~cymg?(03LF6uF*x@& zQ@J&Wr5Ge-E*Skx9gGXsh}kBGUML`6Cjp9&`}YxzHxR!Z=?DxEAL)>A@K%iJ)3<{U z7{FN!B8^6aCv8@(LJZxJUJSZM?cZ+?pSZ+c4Bop3Z|y)_j3~)lpFK>YaYh+WSh z{&l3=y}p+FZzkR61 zAlian=n`g#{oqpQKUz77T>~VHKo2J|_Y;0I2~E=Eoz3 z(me%4lxA3YG>_Vh+`#-i~u)e$&Wh@Z0 zQw%z`2ohqTM2bAM3o7Nhy1LMcK?S6-zb&h`XmB8^w%4G0x)>VZt06&mR)rw#WdMx| zf-s~t$U*I~K`g}}{w2_^C`+KxJH=!cgOIQUk)ZHIZheC@J)(yQF6NMWh~TynQkejj zpFbBieh=RAhT0m04_||9gU-y-yfygm-hFs62=d|eaMaZU=!ZXC4@KifouOB}UCv1a8zgMhS1+Hho#lYFSUQ3WQfDDWWZODR#0D3WqzU7UWVi0^c z0n|K@`Opp%*nV&^7>cwvgwRqz(8dPz)*yN@h*S!K^E9~e2Xz3bkb&fJi2Yy%`~D*e zLXZNq1;LY%yNDq9eMpl)ApUx!9b+K=>;LcJvrZsB((p5AC~q<-&!QBA$RPkK<`y7z z<3W64I=N5}f-LCfScSNi45S~uQ>?UVkrLGZkOuPqzlfq7;$lc3feb}220?L%RBVHz z5II|dPC;me{x#U6)-27Is*#Bb{A3PNcODlA$ApFaiFmB=UC2>eeJ$jYh$U3>y^ z4}2^TbYQ~&`G|WbSU?5fb1F`bU@HJgSPKmrmzGD`{07?lR*+Bt3mEvCKzI!XIxB{m znHgRqy}P?C33-PE#r&tp=79@9@MS9S1!dR^KyaXg39UKcL(kz31T{(y95?_^N}wWt z^=iZ_14wrmv8(}WJMbP-cNmm*u3tyo@(SXIhK8e5xyXl`LF5tJDKQH`(8((mpg}mW z2XfD{7sC!G0J|F04rF9xhARLWaR2^YXj2(9M%J|kdCC@jEi`&}xO>gZ$>QST@LM22 zX*sM6sT~M9BsCV?RRY@&&OOKtPxJy1G?%b&G4zCq|NsAE=?-_VSn&ex0now@?0*z;gwt09!?MdGY9Ps%rPyyK0)#L%6t^o-wTBM)^wf{f&-qlP5Shof3nk*dwL;3(oXN6_{%js~6~08>sI< zO9DX~RH5AekQH^vO9E4)SiM4#j^Bmw7r~P_gueof&jsg$R$n1+0RiPv#E27kNnnd3 z`bv^jtA4?!dq8u-3y{XC+mfC*{zCE*C{JER;)6yF;rRi&mk(tO4eKZ%Vh|8q2weY; z=nR5W6w)nQAb#vsMArz!zy3WOK8Oe6hlYkCipf2vx2(O6IJX8=3ax@3unJE0pknTN zE#kBWaEe2k_4YY?ddt+QQ|)1qq=PmJ2wKxPe?DUW0jR${bw6^?<@A=Y`cj00K*b(p zz7T9b*vF{F9_rRNP$F8qcrkp0==B~}lu^Lfd%Tt)@7N&3KX=z_31t2kV*h_o%NHU5 z@gr!@NcaoH%9GPuGSE&eB*<_6{|eDt1r>AucA?&Q0&ZhL?FW@Q-K!QMw)lcHATBz9 z6^oFzI>?D&d3c!ul7HFFz`zAxR|zU6N$UQBG%#==vJJ=r>s*}G7p;XnfX%tuEKlvA|f?Y@2n ze+E7VaCeuQ#ok#gJKyl^_|=?)+T8^e8mo{dr=Y9BATyAl+7>kBia2ovv`-(jLj$oM z4OFTiMl=3{FBrw(gT~Q8sR7(ORSkk~D2DOj{SI{f@EyNU-OyqRsT6~b`oZf_$a*;> z7l864a!n8N5MqZn#6tv&y?^%*gF>KU>w0-Py!i>@*CMTr0`c#njRJm0o($P?dJD38 zP^tF+FJhGgsMz}s-Aw?_c4zNCFIu(gRTeA^PH$liV)%zBS68E5lzwuuYg9-~6ujs0 zyokk19_g%x*Ly%W$S}aSBY-TdtwmhZ2J*oD*jSJU!S;jmOn5k=JqzlfA3!<_7qm9~ zKhh=ITytE5kXOaN-lI{?z`(Q+;Q`P=b;u{YWUXOfV1Vy|0XgV*J*b?A*bg2Pfil5n zfE0v=BWfN{CT;3MOre7K$bB;qpJN50cL|!-M_$+fZVj$LR0Nav5k_RuFcPH$0Qz&5$@ z|NsB~|MLGiKrKCn=^IXp?w&3%o5_L3{aX^&K!Z;*LE7sJ>feS&!w>I)^lw+KLhMfm zoo5vK7qQp(^`1o%$a{VBzp(}(H{3v5%8>aydr{TDLDP@QumAraRp9@BbPIU)Hla8G zv^^>GKO*&N&2fzitw$X9*Oqj|an&lsr9Ge$kzk2;|30Fn2g+{Hb{Hi4fwta;B8HT~ zi3PM|0xS!emIw{Kiq_CWQV&X;{}Hpf;KT^c&fshgId$s*ylo6>3$I=czDy2m1*mbJ zm2ltznDhVt|5IBYD#c(OY+Dl|MS1jYwh_-fTYcys#n7T2iGrCZ_i(^_*@bg%mVAHFFs zYstyU_DD@*&_)IZ1}0`ujSDstTqz*!#RUfuQl$b4@&yfu0tCcgv}gf5#6Wxvq+6|Z zj&jaHFY#8acvT0s4BUGJcd+61{|61aB3HA7`Jj!M7#(VO?*vj{AqF+kXKx|$`{5-n zsK<_SrWLvdYz@8dNIL;Qi57j0L1-v=3np%rLU3wf?j?;Wcb(isV$Mb1w= zv$7E79N#nc;*~2`t^|h;cz5^dEh|>Nf+s0ZfUSD{8!jHdyABBG%Njz+hA>G^!D#?*s@2~f$22B+;g>S&(IeL0aSQxlm1IH?;6bXea`v%(&ZdjF; zeuWQvfsTMezOoCnb2XyC0Ujmb*8Yms@H7H)fRPuXwGC3wz|3n3w(bA_|D1D9f=Lw)PoXzXy{eFy-*MS z2VJt75D)>sH38gmgCxTH|LgzDgZZF)ual=2%oSNd#S#w7kln6Vs6mCgei?Hc2ht&Z z|3NqX79n;$gG#t1j>tiIdJAh1^It>;MejJR26e2EuI9wT_hLYmN9PA2 z1=0u?{{P>-2GxP+{M8i5gY5sm_O5Fb@*#Qo-xLr_zW#$|DpZ4zzR=p`O#L{8OIbSk_h1J~L=98|a%gBEAMCt(3zp6?yjlf0=s!{c z0h(Mo;D9LeyVqoZHiE-PSh~>oT65Tok>_q;e0U&%8o$U}b)bBBrSf{u3eb=pKR7(0 z4Uhl-|Gz`#*Vg`pI{*}-_wR!b?*=OY@xOmZtnmSz`JuJSs~)~aJ)_x?BP1Nr*-bWN zU;wwJx!*IsZ~y;)i6w*&D(N~p{{LSn0p@eT_>UC8{8cc1Gn#tPS)L&CVDb?4mZ863 z0*L~s1|ai0MgPACo!tpq&oN9A zf{La8>!F)!!9#YgQSXtewA857pj8Zrn+iedU#3PYC%jUmE&x1e;6A^_cA z2UqYP`?ll#kll7*AE8@-&IkGU|7yg+jUYZOL_zk0Ljd`}3XlTigSXS7Sc8xo`=FX7 zDhg?g5bbVP(1L2@6)K=SR*SZ$AQpK>7+i|{M|9snEj`qha|ltG6eFL7L@#X6qFCr3&w=_ZBb7=SFKtFABRUTg+TMCh<)(& zpiKG16Z!B{LKaX}9+d8(2Eu{_T5$h^k2-;-KK}pz4{8oVLjW`s3J*fa`4mWlM$lpt zUM@k+#~Pv_`@shRAyqX0)1p|tkQYCJTI{c0y#lKRxgeu?iRFh6h=D}(TLZC`yY*;u zGqLwWL8TDHOi;NCVS$VX?TI}(xuBo`-W&v#v;Y79{{fNx4^D*0RiD-z^=dDqa~MzW zaSaL$kE?>Ihqiy=jW71%N6>N@YU}DXu2EXxf*7I&RPZw}al>~FgNnt{deru9csSSx zU=1Mo>sPPBo5Ub~Xe{#3E9jnLM6m~!4-G|>yP#r^p$YZQy3){4(4uv)1z>qDEtK}| z-@k}Gn4l1Z-trAm4;h_?I|wQdKQb7~NAx^FC*;P*hlAn-Y=Hhd)Dw8UmMCi?-%|z3 z*T_Q-Jy(x7o;`~wcb^wIYa(yYdi%6dz}_BFj;mKQDXv+wrhX0BHt^1_7+7hvXr9Q+GutrO&` zF;CQ+8($!8c?7i<>gy4GmW}@z7?4XsNQuk9z{_CI;Ll)BVYv&k4cR+b%iUMM;FHkc z_U?K_V@hid`nbXo$5*SYtYF?>y@fR>z5sspCum&Zh$r%CuzK&7C50l5obo+emV~^g z_1#nad{9Lip8&VuKj@N?RjUybHlP`(tERBCQS1Nz2Q8^2#R8JmqdWL6k_SNfo@XzM zS3Ia9g@#dT6zJe^L>_yy=ZWW6*hcFApd@E zNPj4JjU_|_ln*afq5P{b`@usy@IK@J|KP<@$g5uSzcDZ%x5q$(*Gx>W;3F+LSC^oa zyJ=BJ92prA6Ch{N%3bziv~rid_$kV@X>XrC^+cJVSkr=5?k++pcb^wAD#4Czqr;vZ)~ zEq6grdZX!CpWfAIm6zDq;L8S~cGxE&*=`HJ!T63UG{2#f~3aZ)fBPwoCxtoAg z?t1U~jVF6fZ~2S7;t^y4;xq^F><04C8rVU#NLdD?9(k4*#77#6 z1FMH^1_Gsf&=eMOuNqV{|3fTI`p>iXh$noC3ta9#@kCdTTnf2H9a3m$K+Isi<7G()POrZy6+i9lCxDz8U+Fi!T6j0 zGcau3x)s_{fAMKQ#H|EpI+NB5xo*RSCo0ENi^UB98N9jN@ff6&1>DE~KXbP&ql z2R~r~DzJV(G@C;CkWnMh+{8Q7d;H$L1DC|`jm+=ffl6vbNeuD;a!CyGplZ+x_-g%k z??3|qpk14AAMiaphEx{uP!TQr%YT=irf&@-)xevd!9K!$pH58HPK*ucB!iFj! z@^|4w8xVduXs810B9Mivw={HhLC0nwdvLU<_{r~RWn?0;ScJLK4@7~q>oL#*J zaeNfSf_LzVI8Y)|4PsaTyD;kAJD;;@NT)i3_{gU`gY+NqWMBfV_W%U}h<|#^u7Cfa zZGH&<9enrmyLxa*_8Wdc7DNH!9$gq8mh2#@z7}44LW1`&IXNsOBn-v}6~g=f|KE?y2kqHK=7ZJ@!}#2LPfi9Ec`!aG|NXmvul^rQ z0F(j${reB+zuuFzC*ROwv z%YzyMrKPnnK4>6q!Gih)3t$2u7lnpi4MpYGqVeye@xP<-NmO4SN}>iN^&lT8XlW@R zJNWK)56E$q2Y*JvFG%bty8CNg+(#w9wE@E0+b&Kp5)lSfBkx>0Qh#&wQJX|h4DcJ z%{!!g4dR2gNFmFE4i9(-I?wC<|MwtyP(id^z^}pvxupB@|HuEI|9`?uI#3x7!msx@ za)44jhz-JCOICCvS`MH-)XB;Jf9-K_G^1KnpuTB^}5t5C-Lv?_a;x zLmOX^x!n5uh>1a1Ne5C4!l1ScvIAfx9Y_v@LD{hG-aYtgXHXQPZ`elP3mY00+94@q^g9*S& zIv5{T(!uzkAO@9ma6YJQgytahJ@DubLW_d>EzlJPU^9t{GwQ0ZKfMLbMf7zLsH7th zL^O2}xTK?Qke=QWinI<3bR!zdMikU@4k0BSqMr&XSey;Hxw+xTT!RXhf4>mZy&yi) zt}AFkvkz4Ey#Eg^=|CKek`7eLfiSEo2u^XJ1GV=OF6sV}a2yqSNe4>Q_x|0l2bIKN zJ3&Psyaxgre1W#@#}|A)2dV0>&P-L-r7%3$)KY#EAlOCHF=(!Yp<6G8m&P^9CWFVr~2r(}f)Wm_h2qcf8z8>C*B2ojI`cSmHjLSC zCcI4tb>ROA-xwH>hcI=HuHFJ_M#JPmLHhmseR$;r@)5d^L*r5JO1l2_I()bci~9O4 z1cM08$JA91D(Pry!RamNA%x-qa7jmLBBHew)&7s(raP9EY>B)A5nD<3@7_Q7 z!WNKu@H`1x3%>_6m;5`Md-ueF@OG&3W2RX<=L0Vs5 z4_`e6ibM1>vp{`6n0X+1P}dBZkER~ddqq}2Km)ihM?Lk>-Yc?!B>I3d2Z2gD`uZ5s zdxd!zT+&h7$DyG}8?>OkSD1yMk$q6_70L&dbgDsJNT(Ta&Pj{nUHkGURKfq3li7zZ6oRl(B6Oe_678k4wP%Yen;!Q{zF>&0Xj?C%j*<;djfjz_4F1dO?`d+ z^{^0mclTHp@|wbTcbB2?Pj6Y`2p<*)P5SOVmc_tOkGOh-XYaBs1_nCw>uG4=>ph?} zfbbA#-($mrIQYsA&lg^h(rmx zBMEtZJ?H|+AMp0kfAC5J@RBfa-}V1{^1-)DYrTKgR?!&vPpgeNMRm8<}@9sX&S_z+Gg^ZKNL%SUy`@!Ro=$&D_J+UpPw@^tv*nY4B zP`Y~5vjCiqL5UK(`4IcT4xp2dQ5^)eAM5}s1u3cpU>>BZ!e&0qey{^#<746L;Xy%m z^($JrhTON^b9&3vxqIRJ!_mq$@bm-f8Zyw@-&OE!Eug({|NnnAg!h#oi+$h06}U#Z z1+7}OY6YnE2Eriu6{}WpVU%kR{x|#=_{Z=GHYx`y*EH%^bfcDQoKryiHIdtI;FCz; z#l+dW$Fh(I5kch^`avP6ef91&r%rj{YM#~q*P7E}xqiJpd>a$b(I<}ok;*Z>XU~g} z%O!Mqoukf%$m)6arbUH@BFaJh{QCd@@hhOQJSbfea=@ECX;Gn5wcsW9>pjP_z;`M^ z(=6zYdE}epKv7bTye@LfX`J0Gkp18^U5mCEkJ`N&w4N)>L16pA4j7nz9K?RG1L)*q zaHN4s4X}ry_JbXOBZyEnfO(K|icdh5xh?TDu!0AS_N<4fGT68x)o9xuUe%DIu{RY2B>ylwQ5y7s0;&P z(9r;(9j9pJ*hhKzdOk=&_V@q6{{nv*9zl2v43J_C)XPO~uAz5J&!H7#pl;^>zleS^ zD1t&m5xbB;%`xP0ZuDN}$?ii6a&mHVV6T976@b?MppSE}g0Ibi44|!oFU^7R5jXpS z!h6;K??{c6(_2>6B5f$xb9&3F|MyYlzr)l+S65?bxQ|N%)B)%gkg6W$AW*W#=7aZ0 zJHj^tqcr;44@(mgh59GgcT$t zAQfYfv(3=Uv48)+{xA5?@C~&bTfIer19^CD^%?~ZIi)I)~Bk+ukc0j!6 zUPqnJ3oS*R&qGWwg32+_Do(Tsz|iYx8cNYDh()u2kor(m^;coDXP|Th^5Osg-w~r* zpfpG2*)3dsDv=megvyhX;R7X5zSgSs`$0t(2!o2PgoFe} z^m0p(QQiSoLP6;N|1bX+_``4!!h^NHCZX)9fV3|DUAcqUTL;?f1r9n0f!@9%v7ACL zrs}~lR{QlUBG>K#b%GGXg`gO_j?|t7@oUlc`P@e?NWsf_QS~FAI}Os0P!BD)@Euf* zssU0k5>g+Jb};sLbPvGfLFop&1=pdQI3N~M+J(T?X9C#|iGot3$t*nmP*5rWIhaZg z0^1LE0JxV0G96kuQpp0ai694KHy>g@*a5hL2xJ1t0Gc=mYCqTkge^d=y^$9(g32ic zq-&W#< zlnBJ{>S{ufU$h8Sy@m#{>gz!(Wmaz?UIR?M28si^x;jw!L^}wSYCu^6vD{MASDVgABP5zd0=_!sE61O zHjw6>Hf$YvsQq9EVEVWo%lfILG4>Q9CvDi!deqVH&3=vw5Poj|+z zucDs$^c~h?1vwbB(+tgm`)D0jJnA8BXLJpOdOvs3EeJ>LqSvC00sOy<@G&Sv5avVM z&I8il10@nr+@rb((pILIgFyC!i$Eeel+Yd65C>98J=lJ*1L)vmv>x$-1)#BWP%MDE zz*-zgSB8R4^MK2OS{@nI$W2ddg*v!I0-N?9bjeKjf(3|^CO~C6*1NL&kTihqiiUE* z2B2%;(pm+tWk7{Kc*!xekbgP(sb|6ghVA@*6(&r40t^KV2SBY;Q0e|{dgJeE@%l^u z85oe4CHovby@dgEJvP)z&{}!qB`u`$Pj6uWRcui6)?V#e17EHI3QC`&tG6(~Hzfc6 zkEY;%?%C5@x=_xv1Wh_1I>Df`Dp1e7M3v{+yLt=5s{img9xz|)KQz+8mydR>LG>YN ze2{?)R=^B|4m12io#dzukB3?al1Ca21toO!aR#p?&W6Z`yRE&NwFJ3#0M!=gg?Vi$ z?A!oQssvrs$N=4h4#}6H;nxuk0B_`ij8=l|2j{cyA`EmR&R`cLv~jed_WddnE(I(7jz{yxHt##wbt+d z51Pg?Wa9tC@P*+s!)I7|K3ze-L$V&NGzS$G$frqx`2Xwc;TI=^`Ty_34{rh$#>j_E zzuvQY4bly$;CAHy{|tzt1WmpkQv<32pz7oQ|5b1U2=RILcA+=`RN9CBUj<*v1m(kO zl=}Z@0u=K>^&#@oAF%nch$V_TN4wVKzh4DCUA6xIe~;?asPM25_z}oHM_q%aP8Efp z@CGs<1o;LRNSgw_whELFLSbX5pj|IpR&P;YKn$mV@?+s%$S+CjQ{Nccnhe}sdS)Zvr`@Ujtn1{(u%;r()QL|AA&ykI$rc1j$m@cjQD zaeytT^hF+41@TvraeFs7zW+m-_Nz3E5Lcl<3`Csu2;wtwtyl#bF$Q7K{f{fOxK=?+ z^Ut8NoQTpKc~1l6wq$$wH5=S}Rf8BF#K4=nTyvZa;q~4B|NmEZH(SC=N|3uxqVZQw zMwPE;FFqu}fHX3WZUE>Ae`NXRMNEqL_$#`Xpg4eYPO>4ggFLDoIFR($|97uG;s_rl z`41{wQ55_~)9~K|L%jmBf&V?KQTbVGlr&Kt;2QJ*KDSW+|3B!o?-i?7!Eb5>-OQ-U z%gGE1J`e^~py;<<-491?m6Rg2%|S&?{8hwJ)*wD&*a6a3hj)2Fxe26zN}Xzud%L9TFU15o?H4!{Ufw6QL-EC7cWTB1XW0+{_^2VDPt9lwu}CaytKLK?{9 zCR1tYqSOK*KbX_n;=?xD-P+|QGUYkM(um2c&e=moJ@qf@Qv<(kFz_&ji%Sy3Cz8dV! zo<|D*|L=z%mC^rCH3+$7x&e(p;Tx)aJ-Pq}pMU`q(B%8kEC7{_pkZ}rs`~$C57+^) z^1J>&c(Y3=QUEMl!7i2waM>d*}G zP!33*TIxaegL5+VEkNy!;8>CZwjb;O;UwUmh$U}vJKneyXcd_U#}yE0YDBwUZf66BMb};D3<^+Fd*ID z2GUT9mdNUnI(#5`#3~+0BE$><)F3BDJ=Fi8fez64pcV%x3xY7%#SN&b8gc$JL_LSb z3V2y~dW+T^2F$iMJW4=?^RIvZ;Y%o>O>x9&zaRz3*$l)lMVed!@nezp=7I`ejFA)c zfs<7T4`5esgt!YGq@W3#26$XkT5yRRb{(r=|L-qf`0!Zl?oeydn|3{KX=M$rTJ(~W1_wPd2 zj)7+AK$D~h4}fQD7#JGhJswcHUa?34(P!LqdJBA*1yr=`IlZM6`TBxAr?*^1Dtkah z({-d3ksuG0!pbU8ZUQNYMbZFLfUE%|57z)1%Gq;z3$l8UJh|#Y_Ja#cN-aRn=^zgv zhY-kth_me>yHTO)!S;j41Ce3?>>zXvh{Ik%b03&dfPCWw$inz|s1?vC3Jnd1@1F&g zjgWB)i2dNw9DSrE{Q7s4mTG7%qQV8G2?hoQ=z+bE!WFqF0?A`8<4}T^=AaM?4gLBZ zo>3tJe-UduK}*GvJA8XiZwZZs9f1r9fza!SYzxtkxM2Xok45+xq(2l>J=FhD1HXQS zM;j;zk)r@~ml0|k2DS7C9bi@whgfFqf! z1xVMbfs3a5_u=jV^S^&btVf5ahqh8cxd|k2|32dW9uOa=258xI|NedW+%`o0clg6BEwV#S zq+3>R(cnO|^FZpglvcnG_5qm}ihL6XB+Zq>OLI^v{*NeZ!S&gHMBxk$q5nubBB`Yw z>VHUS{{8!P=z;VQe(hgG>5Q%IT@Zti2Nk}nU;TowrvUN)??>DxgRL|VM>?|&JnM~t;*mCnfYLbwV#i=TxG9W$LpaDnL1i2AkS~b;59z!q z5P$!FL}?Dli{in4gww73@*<>27vk+)Gf_1+UEcNBQ_?2k|pBiBFOO8ibV(~g9=mR z{Vnw%fu>c9;8h%mucU!kkpbd&A>Doj;xAgHgrZ)918sjwQx_LB4#0)=qD6>4DM-JD z1_x}s4N{tOaWx@n04=#^fNvP@y_(UCe4HS4`St(*`@LfYo$mv4@c+}GjKI(k3KMt@ z*>VNvznl!(>;Mmd|1T$l4)8%N8$#!6&2g_rnr8lw!UyFh6oLQ$Q5F3E|6g;C2Z{mc z7Er*nvw5TN9TjC*Fw(5PzS;72RQ(g&%wbBBA^ODOfY^qxuba% z0|R{G8Iq`0ECx$L3tv#li^@k7&!EEi|NecT@))dS^_rKHLqm-!L9PZ1fEBD-y$sBO z8u;(kq6W}<77&K`xWR$er8%N72lvpBOLIsg0?{Y{@nezZ7Qk)uShTYi?q5Y*T8nM| zCpHu@?f@#C85odTC9Ah^HKA4?3zQJcLP6@0=E9++c@yGp!qr=tHIeU#b&GNhVp@f$ zg00lt`@)ptN!R*J-(3Z3WEyz)W5HpBDL5fJU=<@8v zM;uW@XfeqAdbk)oNWkv@kKrItns|jW&b};(nURqZsvJC0^Zz}foB$Wjh{7B!Utfn9 zrw8@Vn3;_bmn(x>asMhD;G<)la}+rkw62DON^%h9oTI>TAfX6+I;|lSKQSv536Hd} zpp3MD+Ty={p^mg*l;*LBVF6HS9vX_6TL72lp=b*#?#CjgP0=-g`LRfwb3oHINVh71 zO6#VErY2Y*gZLP`2sGfk2taFEy4S2)wF*8~w0aAxS3yAm{4|1>lT)KYLqp-QeiDuE za}+EOv+qB;`dl=5RDL~ZfDUW`+=AS*U_RVHbPK(fBpd$!k66Ht&d+FejY3|<^SsD4 zD0DrdegpGicl&~JQ%3USa8@ReU+K6u>}#D0uKgPw@I&>Vy=kIqMrBAjUmYX5(n3P9fb|NlRsASEP^ z%Y2yq|B>PZY$dvejAqxM(5w65i4q(Is~O;l5+e%GqXd)-UNyk_R9XZ0oA_71qIS7Nd<1>J_f*Mh)FlWUq%>Vy_7loiPU*y6ZRF*O@Af^hy zWiisiCvahoevf(Rb;N80R0GO@A+maq1qz6P6Y#(a=4Ac?#GEGTLZ zd(F$q$V*r_=e(T!3uzP^6iEyXuv@r6W%0?$i2fdozaHMW2CGNZ72qlwp&neAV>1Ap zqQL~j05B6w5azG!W>7%%HC|3`iwcWCoR|u3wEX)I>C}TV)3PL2P}?8Ggj(Plb>EZ~ ze!@GbOUc-Pn9L{a08|fg&N_=c8MQE|1PfSC5AewjV7{pm7L4 z=^DgOiz+yPs1HGR0Q?UPhwt}-h9EffKm_>aicrMDua}eCk~mRLYlMXm#D44!KngQF zJ^<&PR0?e{%p`oZcEizlFw2%p)2^5HWfP(E6J3o&y7EzGHD0c3IoQSyLNVZOaRymkRM z#Q*()tU3iH=3`l`LG|_X;m6v8E?QzlD|%l2LhNw{hX~m|hK2|oc3c`O4)&O!Iguj~_Q2@0c;s7)Y5UCVmAvF^zI7;>*%|U_% z2t)y55Ci0()F_7oh*lz~@c#ez?>9*J{QrNl+coMc(tc`CF8K2Yk%*zW1i7V+t z4uTp0@121?fK>2+`6wZ}visF4L?aM%kMhcuhAUUXTnrlI2#-f>JzaaXQ6M5BA_CMZ z2Vpw3%n1#%AkEB!%3`Jl#2yAnVa~(^4--gXj%X-@G&FQ{z`IuJT9WvL9^Vf2756_%whlh03Fc5J(D) zLGt+S8wJVl`wwn(f$ax70E-5AsDd;g2PyRYV0d8;nkdoYVuFwDy`1bC#mUKuQkcK{ z_YY<59Ha{lu^;RJLO}|54YYFu^#MK~!?l1sfW`dxpaoTM10XH}b8$Hc9?c*F$xsh5 z9N_`D{a_1;hyr*825PAzr)tmzY2UtmLoUow)@pzp{Nu+D_#Q|QAGDx_P!OTG`2YX^ zNK>FEC;zKQT<8E=eyD{sIR>==#r(SZ`Z}0_SPS#`_;_fF`2W9`;==s(o+OTjh6Z@q ziDj)h#xTpjf9NgqdU!qqmAx3lEMLFES6G6FSwhj)hKI(Z7Umtu_Z5Iv*&^+u0iBb* zYSpS!urLCxVoHbzgU{qc!W7Z00`ZaRPe@^2Uk?v+aH>Ld3_xY!$;qMcC9qIF+0 z^1Z(x3*fdxlPzvOv@pl50Ac~MJbG|lH$0#3U46o9M+$^U=-8$Rp+;-g#e6zQq<|8jhL&|AiQO0=cO6FY0!(c;u`8Knt;vuKKG7buLO{5xX=% z20&Y_U_XKQ$j!Xhdsc7x|9^izSQ50YX3NRR2MQ2p#(={7?QcZJ0r8RYIV8>yX$Df5 zQ*YP=63N7ONTG!}@fwJ<;2*-zpk%+_em~sLpkbCjf1o83C^3W1ZpJiN#n#K6D= zKO+Vlgh;nVgZYS5j~=8DJ|Y!E_&C&q?1v~IQUfU7!49B~da(Tv2fzae8pP-pK$`L( z`@zF31pyH;V9tNgEvjx&t5zX0BB*7~%gc&%f%nPD|K6b`O0fA5`ymd%5kw$MaQGN( z1YDkw2lgS7IoLdqdZ_&n2f&Skh5$AVAlsl#6ohePt4D2_la>q8q8bi3z&l5vyYbeq zTnVr6LDL$dqEq3mMo=#J2T%4;2meOc4+#N0QGl&*M`SXnfuJD88A9N~9PU6!VQz#N zW&xFS^+@*?fDVr3{Td3tR(|c((_0q(hg`Ny=5iKLPXGJ&FJ!vxKX@A`M$`QN|M&1g zXONR18{8nC0`Xxf1|$M1y#FKZFb9|B$Wx}EahChBaQnc6;Pw9z83okzK2Q*WG6(>^ zh!tcyG@1Q+h1ePkO1HcIBW967{P&2(Adu4h_y7N|q58qGioAgUO#@i|H^Klgf7k!t z@C^r~sfU*4NG<{!h;G5Y|Nr4Z47C8>+W_&A)oaaJ(fuE(=mA}x)^MO80_H(bx?jB# zI+p~B8_bhag|L zMx_NI_pv$WxJH>yMXZ#2IhheODm^G;`08@B^N4K%)ZTp@_wd zpwb3OtP< zhX~02|HuNM+=Cth=~(A87d>6l4+MNI^Io zHN-$c3=dN96e*^>>Q#h(h=V}Y9mIZ^1K>xp^rEF&hz3Nery3t>|9`3(2#P=OVn+62 zVxjA$pL%BoHMY)vR7qk*=EuEiq!?6bA>W8!_*C5!^HjoQI z{8jKa38>TS8ic5k3G(azr$&*afy(OZ3Azxwh47*jvWo@YBKZIR|FJAqFL;Fy-ZX-G zd@y_QQ&0E|FDN&$7e7G={Qv*Iqj?F+9*bjHu2Bn+)@OpYSil?V;Bf{lA&AuH#23OK z`?32Fo^QzvA$0xlMiJCJNC<-M2VYswg|s6alqivd5HvW2WZr-D6PHnf6ibjF%W^hE zUplt{Tu?#m{|`#V$PGhqkRb_x`RG1CauHY_ollHMEq$vCs`f4>71b$S6>h{)h76tsHdq$b7IS zWC4%~l=4AylK=nzj|G_p!cabZ!V1ZJu>BZO0QCWU&=nj)t5(4`EI|42lnmnkU%wh9 z1otB~K|sR*3=CTEMYlNK`{FI42ea;#mu z65iMb73avy>wJ#Bob2U=7k)s4;|3HQS*!}@@0K|R_2OtL#C}+`(54Hb4 zx&`Rj3Y||a^)UPYQ)&Uaesn&1B82i0BOOoyc#VkeLv%j6dh+=7h~Y2t44^A2|)@#^3dWO=0HesUjLopkHUY0|FB!+K*}h$79|fUZzx(3%Qw_2--g zO&F|L2vQ5epy7Drt(YMGKk)HEAX&&cmhb;VHyVNtPu+5QOZET%h*f+b4f~MRPlNbK zJ#+B*KYaQFWWb)&TcB$&z&3!?|3;cH0P*+TM;zS=;=f1gV1W3)|NliSn*<3E;Q;tD zM6i0a!@sdufT|wp{B@B2_y6k=T^^9Y@BfIEJRtr)3=R0z|07ZTzIqG|s7FY)E5 zdZ3avw$D^p;XIek>aQIvSrM^`MK!X=wrIkpEc3GE(r7z}NS|i|7B~ z6%YT>eDr@cB4>kx46)z=Tn@ZPDhNRGpcUfaLI7GWV9CZPQT7|Live_i$LTF3XaGBa zdg`MfMI(}n$hQDmz=J~M{r~^pK?S@4lYqnjg8vEs1K=h6^oHNn8ui>q6&N^G5#_nh z(G%UPR;_>^E(01}|Ns9#d^8>0p#T0IzOoQx2~tJ@JNiFTX$VsP9cg6?L_K`v4D^2Y z*jN+;|JRqoTM{4*$OrR-_}`I+7eE#uZ_Nj-ltJE33RaJF90ExGe`q)~D}rv1*m8PH zJ(_{*k;($F1xTeCi2oa{v_yB%dnENB2Ov8Tq#s_^fV>G2KrQcaY5=X&1Q$LC^&tJf z2sjA2I0mVQnGdob9B1f0fGGfFCu9vEKFCK@QV+HtyqXEwLZU1{@-f(f$WaD5m$|D8 zHPIq(YygGeb_W#GJ z02JQfNi7@(P$&aX%6G@RvnM zyOu!PqL5D21Eo`FFDazO?t|A1VKdQmet65u0)APo&@M~R_Z zpuofcUvdRf&%l52=phC(%f(mL1x z>Zk|X4{-px1%Lm-&*#B*lxFBxM4am!)ta+v6&GlD6Xd@CpyCzzc5zI8))L5VFVn_Q1WF{6Y7b5G0n?82?+`L{omj@g91bh zM1lhP@Bf4UL2M9)6zAM~85o$DnBjx`{oh(Fk(U_te``kLqs!yx`y4$vdDSY!a1AKd zlol<3l~s^KX%#q7?*!yRxeiD*2zkx#>pjbo7#Ntgg1iI5pj+)jL&K{zt`Uc`71sKUGt=>UQ32WPeG-x2rYfD9~K0v$%B=yLp562?V7DZbo6Hti*DpioNz+Z+-3<3xdP+0x> zpYR7JGTmWWdq=&`(L@2{0RhnV8uSu_V*%0$AfSzip`q}^!M)cts30N+eheCD#km;L zLM70WLhh|d&F(F(Q49>au=Zm8f1RV8b5^Zd!3%O82!oPBXlW^YYYQm3-j790oPzkF zpq_F4o7WB)ikk<);%)`kCl>lG`Oo*{Ckc+P)wO+vT90++ZAL$@*Lh3>CC|#i~ zr?^wL=%QFO3l|{xulKB8V`sk~z6dktY@)#Q8nKyQr#midZwF;= z0nE&eXj_2#7~%0~H|dt57I>k^LqwqV?RC@wG8DIZNFODXcn#nJ@G6PwahvZ2Ew0G% z0W@=iVhm&fXeiHyi3OCqr+x-ifN36Ne8)|%sNs1IU5 zFev<0gBZBC!Yc^S{of1>Ou7(x(2`xyU_odVj1Tf|DO!Za#@>Z5=mE)NT<(d~2?oiB z*4IO82WXboLb|C1tN`gYGjI-4K$PA*dm9B97#_e667)F=;v??Bz4V`fVbv-Ge-l1F zC`)hpuYjh3eta8Huo7|r&rwjC*#(cHwO1WEVq(HVLCsS0`uiYB5dQ!FfB$$&2pEiQefW?O=7#bKRz?6W7)g|hE&Mw4g&mb>T1SdEK z4tN%X@DU{{4nBNm+vzQ{k{sPGC<7Z76Un?0b# zN^$Tb;oFj)c&=KtY8ylry2yLgD)>MUc-i3ZU+_2pEg?fHck98oL5PBi7pMt5dtHN& z+g6~q76St}tZfBrTEP#x0yV9W=4Qb4UTtkDyqyh-)Y$u|V{hNfuR_h!f<#()IN~;1 zaI#&o3ck)z=V+opK|w(Qq@~~ZyINkUvxA9&g@FYUc?=8;h?s#0Rj_PNoGT*F$UlJr z0wKZ-kbI?cv{8VSRTW-LefW1s0l9yCddndR1_tDfZK!;7^(6A^|C6WzLp>n};+OXV zwKh?GgkJ-adT73asYlLNiE~93C9lpz0uh68w!ij6mW+LGcL5Lp7$5(o`{0PiN9+2a}%8X6i0vKoXzO^a2l zRyBgyAY2d16aSFT^8w|FRl5)q$!$@rK~+dAU$d6D2I(R>0AwLbQ)CNh{DJ}A6!AF< zZi>Ji0LlViufy+Q^@QXRPEW0v|LM!5SckxZ6V8gNbuRHVAA0O%j0i zz(N&F#};XzNUE(xoKphg-;YOJQVrrGxA#D~dW9C^wq2gRtGB@SV1p;8R&*zDAu6vo zph&DhoZMLt76^@p7kr>T;i^@uQ3}5Q{}2X%BXu<@p9`sAJ)XrHWR8@~Uhi>@VnXUu zp5F4*lYxO7HYip9pL;K8z!)*B4T{y!`$)H7?>W8Y{&mEi)46B6)*$vl{Qu9h_mM&c zQnG!sM}Y%5*{T$Dj9|+9w7LeQ>hAdl#ko^8f$cyD(`;KA<^Y55I-)*Qy~L zbe~xQRQ~!g$~Q1LAcP?<{rCR|qBwvJ-UQ%JlN(|8#lQ^1nIw_R5l{rh*2Y3x@Ssv` z^%f2eh$}$l04PZ|H8sIkV}tmMw2($6KwZSESK)&Kpd^hL68QhWp6BT4EoTv<5dT5r zm~lv_x$}T_5h7(<$Wii2+XIOZALCX)hCHYYM|5K#BX*EJed1gZ z;`2*rDAMs@drohOk4FqTgYtuh78hbnYRl>^U8}U<`301}LPP(;^B0K!_3Cx_Z2bCv z&W5X2Ax=!I=h=J2k%55$J|^Jz?l|byM|eX_=O}2D7aExV|NqZD%U)d3z+eiAEzk)$ zu2G=G2IHUJk_NgCsRG7NjZy<0aRA>q0NKk1-|w4L&Ig(=gztY-FJ=ug zg^v(`N(|K?CS61h2Uq-vIssHAtXZ{c1-xYe%1=n^Qo;3neJm_Qoj`*WtG9q|!i2f_ z&7MX9P*di;6+{Fy2N?>=VGNcG|GobI2hEd&hK9yKGD|I?rIv>Dce>QGaprqkKGi2__mwX6J|3@F>md278J#Z?ha`G;(t(g4QdNCis5MnG|Yr(g#54n?;4dF)P*QB z|AWfVI3zx(+D9%zL3{=##4yv@yWsu#YoYf2hm3puM|8UPoZj-c7Li0yYkkN6|NFl! zaRis4(6+#vJq!$?RSgU*4ENbUD~hw$fZB4PE*=Ae2gCmyNL0f}CQyts5*g#5^ErBv z0vmL49P*MVbUr9`A`o#lTRF;7@m7)}B}oic#bM1)XV&Tqo%qJ>vKR zsZP>4>KcTcslAqfZukmC%GBU#%H*m+$hB%l^Abm- zk;MO?7)H(1pc9CgVGX_i+Q4czF5;_0*oOR?t_I&Qyg%S-&C7RFKWl5m& z2Vxqizye+1hRA=Q-MIh%|A$-)0VzR2MK0=a!!LLf29*C?(b_PqLGzIEAE*h#jnssB zy@fT1feAj9^S}3M2k4qwc>V)*7XSah4|f2Bk2sSV+*yR1X9S9kMu7@YSF{)6Cvg4) z6)_Bb%%CIV^4~dffO?CdaAsvVF9ynR2QXqo9;s6cQVBZI>hXVt8z43agJP$d|NVa* zME>Pqn9kVEBxj)T0(r_FRMo%uFR%=x34%e+`u9H(F@*+-xak&k{Q~tlXB8N<;hq6i zfQbSOOt$bM+~+8Jaa;ofd@LsaTUu0TcolrG2YQbfys(1ygi-R+FQj=jNM3pm(+?RO zLh2*^U)kMkiJX@}4NfLq#ELwU1qp9(f?`kqKV%saC>+k+ zWiPG*b<)7QH4H(WCP<6Zg5iHONCD{BrBG0>iGh(}9rOS73nk!riGhIuJnSPUoA=6l9Om6JlVv`Jdq!R31!$e0S_WLo=8IO0OV+|NqeP zGw8@AH<^&~^XokwATPp`EGPxk*4M*_3P33Yd0YT= z@Zx!R7Dxo;=R|Om>AX4EMgMh)s?)-!`>I2H(a1!prb zFt~{Pf4{^MtUeYZ9tFz&j>stpByfSzAn`Y5E><`W(F7tPj#=^##0Fu|oQFp}Xj}++ zOEjo*L>^qtIol|JT-xQHJ)RZ!0Fj|}Kt0ItAMobQ%gN24%OKG+G`vX;ioW%T(iK!0 zx<>uKejVaE@YTGkL7+A_Ou%ai$~4=5aCB)S(i3F#7ct8QZT_HS=)a|iK@iZ;7oxsN z`v3pJKW9Va=8w)%M~=|A1q`qP96YpT$_@7+&)#OsYS1VNbg2qxPAN3*0Rt#1K_|ei z=mtj@s6+=fp)5erqktY?9~t!%L6LyKfBpx&LXJR?|DPk5-w$}&BI>i2FfgFxE>P=~ z`zxZnJ-bL^0n(hK4=8%-5Q9{!w}3_-5w#_xyj`FJvJHem(en!tJ&;ok5an+@X#aN5 zDx^Ux(CEG$LcxDfd5fHWUZXC2z#N?40$N6Zv`lBu=`H$5iz-1YtbhEEhj!s&LAmSn zmjB<&;e9yJmK*!8$RV(@y8zzU0hP}T;1K~UhX3GM|J7?iwP`rGuiwk`zYh@u4AT{k zh)RRnI=2{++B%TIjE|8{TE=MN) zDM<0kz`*eDf73sPB7_*oMf2O$hix&!UMTy;B&Ou@&QuMAopxr z5-96~OatN7Yd~$$aCq4R%1x_Qt1wh)=&KWGS89I1K3v)45W zxpVq@i)#>a@_{TdUeO7%41__kv1$=4ae{^mR&QCM0b7p+;WIVC#=Jr65>3nwN=5x0UaIx|ARVwp#B#qoI(6W zkk*hEh+oP4|2$M45}Qm6Y@q0DM32ryCVQkMr68?0{xhINFlb04;SU3Roe0S9|Np;0 z%Z#A94pH=jk{W1v2BIp_IjX?Hz`zA>8~Pk|i$czfpwI_ZT2jBg*NwIv=t?2(>Tz~2%p9QMfajbO7O}S zbwxUKg$M%!V)Zb{097OlbI!h;9D}qb3&alvE$M)I8J*8_v{4{#0RuQ=f|P)YGf)UI zfRcmP|No%W2_GF|V#opaH$WwJ0Xp4n)v8sRBJp89>xu0)x%1g$Ip71xlS2q*+W@SpEg~7sEnA85ndJ-ZT7Xg@r$uo}M>X z1U)Vpnf1{IkAD4Ez}Uud<3Ga^uo0k9LGZ4;oU@J`x=5#HaPI}xpXhDHT6kX&G;Rr+ zdxM3P&)M!Z*+?Z3sA~sGiZJ=ppp`^OjbHU@RxhON3yw-q+`=ndQ2Po#844Nui`oww z2!omks&8*}A%+4#X-6L^BtZ^fU|I{$J?KO0ps0-vg)QMtg0!DBG&G?5Iw1U}t}c{C z)#w*Pb|J0M1Z|-^;E(`cfe8!W|J?uO{`>#;U!FKu1if%IU{?70-{B8K157cjs`!p* z?tnMFvwESIo(deujmOhlK$D@I@X|ErENCDT(Rc)vCG|*m4}j7ga%uc}&#^3Uy#Wnf z@WQV+_$C<8>O4?q6QgQ{kCcLI&R6jE5h$xh{r~?9KG_AynOd;HzW=AUuzIl~T}KPb zI13sO)8Qb#mKGPZundAk2fj^@ARmQZ6@{-;q1&r?;Rc{?4 zXkzTQKq@*wOE*G8ufiQD@ZW)>Dk=`XK?D>OAPl~SApSouhz-I_AcA3g+FTJP^sp>o zHgGrrmWC7m|1bW}fYC2D_z6=0X@`M^07OL*RUr3XWza+$d<+-TtciygW1x)4(1fVr zKuH(8>J<`K;9c+k|0Bk1z%5kd^>tfTZ&|fUK?|xp0K9HjLj!deByz^qdzTuu3h9`4 zp1lkVVMr$(z`XOH^*uvBgFGmu38IJ2L}v6x>#P3)Q(-zmG^i#?#OP)ILMwKkXQ8G% z(1ZZ;vMo>p2x-|CY(xxYiXM5nDkv};&~|(>F>pb4X2aT$2){~#L$~(tUwB0bvhYAc zK?G=RsVLw5|M4KdfG{@$D<~vHQ9|NisrUhA1>}KakW$b9e8GPKgjYdRK=nCi9Z>pS zpwTVl!Q$6@K%3wYgTd@1C7`JsQpvW>`~X6|NHIXx3zVzapZ^zL0q*7atR3k zm;cZ8pZPw>@rvkMKaK`jXI7$`_HD2zZwr~$n7 z4$Aj|Y>fR3`V73FU^YZI(t#y#$$#YDImis~C>wl~6yzaLmVwv+l81;O@z4L)n-3|l z7#JXfKju)2>O(?c>OeX{V}5ky*E58M($zvV`|9cLV^jx#mOu|=2-Jg`2LtE;(2Bf) zjDq?BN%e>{09wsEkWm1#pMhQuX!;9T1q`$A|GJEN@TFZa0oWWZj1MarXvYWpe*n{f zAJmIf@*!yXrz9I_3`t;=9CjhV!8lzYa7sh{+jpS){@?$XlTS|m{r~^(ckduIK8U~X z|Nni+{P+L=zena%L4Ex{n1LrJpPURzz_|Dz2Z08jVDcb7x`X!b-@h9s@3kaRAR;0n z0>%fK4Z^7WdIknm0Xp+RWyU}{0A&9_h5*?90dxSwe!4jz=PU!m)vH&p!lJyt{+}bq zuV24@!301Xj8?2zwF<@ujkke@3t)WCIW3m<_V)HLKKI_PH7izdz*9NoK&n-tFnOP| zT64U-yu4w2&}_)cl`B`m`1K$QSFL&lx6o^jY7pp11egL)Hhb{k#RC}sTKhI;@!0{IHzz^pZ@L7knPyfF2z_h>EQY-WP02hX2(uUWN<;X6V>7l{9#cs^Kv zJwp9zkbZa+yxxOq-svrzb7CqUIDplI77Botzkd1he;%gGBDFJ1`azup6Oz^m?cmOvBo%pwrBm!eRX0vnxQS;jV@8LF>g=t_KcW{`VgOLD>#8YzsCGd>`w{$w+qw zgWC)L;nS|5-J>9R#IeT^{fKL~AbiB6JB0rm8vbw#5W}yaasl~{ClH@&6%%}B0mNru zLR?=5F%W)!FW7Vgkg z{RhpDsRpe?TFnQp01%<{A67oY90cEO zg7WMCgUjPpt2CejP(GRlEiES4Krb|$5f}Nw%4e8^TtRmNBCS3I@sYO!f=V|o*y4VW zN6~|*E$N6Oa*)xI53>LNvMg4w2KW>kXgXRoXf;xlz{+Qs4?(+skY}Somj*6^Pe}d$ zPlAKN_LHIk>;@7nAfO&%|NrMj$(D!ee?b?F{r}H>l+`PIFBN!2VJ{-ax#X7|A=W_uz@HSs-K)3ACEYi3{O z7Qi<}f(sGkOn!3m%kEVRV6#j0pz4Bw0o00vg&)kvJslhjJPi6UF2*4oRM}(!ZS;dJ zp^AZElOO~!<{{fp8y`a40w%FI2*v&ZZ~&_Pba%kd`v0H)fByd&KAQwfguPcGy)zg; zYmKwvhYue6ML)gxSl&Bvfo9$1KgLSWVE-|%)Nn7?Wtyj=<5zlXOgA^g?5QS|Rx z2fy47EMJe*a7A|jrF@VD7#@JR2D-ipaTyd;0N&Vw@)50IL~jsg2FQZ{{}I>sf%xl@ zT9hFEs{e>{XFz=Tf)q&avL4*Mgc%5mlT}D7nn6prK%Fs|{L9&{L7>hUj1Q{pL7g!K z-!%x-8H4dbt9L=2F$DkRWaLEt>3=-~LtI=Od*pqc4Nrg~8E3&Id- z(4+}O19}mRz5j)9J}B{OX(0-v-m8Zcko#XcN1u4c#31&%&vFcTBv6lhS0{i=s`xS)5O|NkG)4Ko1L{rUet6uxrs6S*6<26e+}`&sx7Qup2b1% z{uH79*0Q9dj;oOlMFEu(th}7?1=^qz_3G8>(;=q+|DRib7IcUv;-KtJ&;c@-0+0se z{uhW}TMOIL2kM`>Mll?4aDb@??HEQrSlj2U0tYfbYl#B~@)DTo9?RPM>ff(L%KrP` zOTbU3Vt`HF!sKDaC3~@JR74zNi61C2Blly#{D1G@Q4i+--;cysjatP7Ep9-~Fpz?O zNIfV0cd9|40eYCnyq2u!Mn2UIHcJJQ2j$*XU5L{t!Td$A;S|{D3F7=#uzXh&xB^xI z8S?I_0taYt7sLi(n2+Nb)-$|k{14uI9zkh&iP~gEE-%mBU5GMX1zKMF@83UoKNb}6 zUF-kX!%tp(_ta}iettfDy;ob(6UWu7SE84fAg_QiG2>M$R-lhpDZpb49AFytxCX4C zAxy*ZDsbsizY4K?0aOEYc6P!yo4=e48j3~S1MqV4%I;NKX#6fz{_91k{8bvL{B@8^ zM8F{kGQWP+s(0}65hSn*ML~-t149G6$~~5)8uaBmV)O&F#2z$<1U3!4T@yT-4j-EU zEd`B(2RLXI^64#z!V%1`-x3P1@xcOHLg6*$|Nr21ud6`W31S6kzjmnoR-~rTAq9SZ zetw87R6pE1P(G3aK>LFc^$n=BsXx6XlmT&MfX~^JleM%~dBF@^y@grx4^pEUy@?9i z^Ml+(eSJhVDD>)7_+nVlv3yJ%JZv!YK&gKE)T!`A=DF@@16GrWC@*7U5vRoIziUkb z5C1qUYd^r=&tMN)JPkT1TeBWkw1G+@(8L=Jkr_Y=e{w*+YBHzr1E+8qPC2n zB^%<91gu5dD%3F^B_%{d;>F~Xli|ezxa9}V2k_o7=bT1?0|^1}K|@%{_MhcHGYCTX z+tcTY1d&p{Ie_O&K_LLbpio=20x{C{?ieGuYz4`Iu-2Sp@O&wV4Z@)EEi4W(P6r++ ztgWqwA2@bWaG#Fc3!PgO8=}LbO6&?|JIU+lzD> zG3bOu^sCK~)`x=<9qJ{npi5Tk>*0sQz20+3;lP6r@SP2yZ6JT~jJIR7|MsW`sh;&r z200#tea^CafhP4qY!C*8fc*XY@DTBFKiepP+)eU1n0y-m)#2%Fu{v;P~Y(`==dmzufW6h$YV(_K?|hdyK_KI9|ndnq*)AjATs}F`Ooqm zyd08&VLC@QlQ?LFyEQ4rEM!><)FH5eN_ZEHP%#VI5sEzW2}&=ap`nNrj$X_z%W5%P zy&82?s~+jHY(m8>DCh=Vw|mtp#FQ5(v8<{`8mZvf`@|EanB8-FOKd#S9#r(rN1(fo z&xak&0o^UcsrRs_4zTCW`xCNCP#L z3y^{cq~ULPIQ%3t(6W;T__P^lR`OVumzNj3seF11=%AI*g8z5_GyiA$?+Ysc?)Jb~ z5E^!<{q&5vB0G@ELzIJOz-t*uX>o$e&#y=~^?{Q3`}OPL+qiL*hk@{hIw;d34aI}Y zJN#=-5<#a;z!L!H6b6QfnD9{0ejagw_Yl7_FzjcDXW(N1A8Sg|NF!#;a>c3@@URB? zZWU5?KyO)MFY@9M_Ye|Op7!L_P7OU5i0WP(T;n+ zj+CH4*&#f>yd0LFKt)<+xI^_ zIsX4ouqCaTG53#Eavr|`bQ`&N%msapjxC2 z#93?7qL5c^fNm*Rxq4L=EXYCI>s8Ns7Q^^$Nl!i3Bdz4{Ig3{0fetqL3or5hpRV6? zdJA&J42siGv@2l45nCa_+eR0mZJk{3U;#WxL1&F76coUhaV^UN9dJKY^zJ=~6MfDm za)kb8U^v?W;m2oz4i5_t3AytYA^@6~3H{5=e9jZXe|OiBBQ!oD!to>|A$ToO-~eqf ze+RwjHwS89H8bd>IM9Ru14C#yXsa7DLq5ZQ$Y~n_vze@s%2n5(U$0)lPpbf>vTzF9 znd{fDhaY*uv-cp%90#-~?+9@}xF>#cGSbpKNV$rLlmD7?JgSk4GR`>)90>&xVW4tU zkuCl|&v^!W&^%2hWevtvD^N>M~mMsVpl z*!tzj2iv$tK}t_}1%%#U1T}9$>k(JnK!OZ0<^(Dm{v%bdP(C~zfcVfO_`x{=RCsA{ zXu$^}K;7tibN53oMc0LeSY{RXaSCBquPj8tsXCAaH{r^87w2KCGsUOI25C(0jW@cuFx4G9|MO`Q7wZxG_ z6ltAY&e_#lOiZ>QU8n-Nbof8}f1dyR|JTFXY!KQEG$iVYQjj7q0d|XWjfzL|J*WX1 z4j(iD70sZtqrSq&@<8&Xa2{m24HHs_y`#GsWpL07GTD=eQjmi77=e5a!k{MD|Np9P2Z^Foww*)Fn41rG&-OK3##B2}kdezq{LrGPBcr z6?AGR>>wP-4O#KArS;GwQUCu3rGA1VpGXZA3`&sy|KEp?=|K43(fEi{VIcB|>qpV~{@AD2 z4dEp&`XrRsl9!W1MG+O0do=??OjsDWsVdF~@ACIE$U)Acs3xUA#T?^Yg|xK;y+A#O zR-l58A3`4E1m*VYq2aijtgcbYipVQ*z=4Apk0ZFc^W@}{-E{BpBMnFYC$zK()Vu+; z!I26~)G zYY;OdGrWNZs-%&dsHf3pzBT96qc%}F=cE|^K$;r|ZAc0YMNEC8H&MZf5}q9~m!D!Q zP?5*%ART_B0u?-&AO0PFk0EHaL1-xQYR%JILa&O#=ioOUp!>;-SHCs+^2@MOm1}fV?xZVeJzB5BlAPhM&_yc?|hz?l2 zK76tt)CLX>oh}Aa3&OouL8FfU;G?{t(`y+R-owj4P=Oi(D$$w#v;XJ(&&UZXQZ3*` z>dDEfL7)K%kWnD~5{-XyGAo)qDj!oG)4ZwXi1MCu&dKgSe;@~^gY1L!{^3p5|Npbr zoSY2W3<;L}|NsBnrwk0pV@QyuI0M6fo&Sve44j~WfKCcaRiuFc^itJpiEEUos3`mZ z=eJM6V-xVuJ$o0-M+~Ea?!RkjXn>b7&P27C!niLS|6|@2s?qg6R zjk6Q6~8dof}kBxu^=c@Z+ddkrdI=V(UrDx@3*)eoO(>|Wy7KH<*v8j;08#W=&R-SB2Cs7QbhYk-bJ+jDx00_=upD4zj-K{ROn z&*}Ot@M$5af>r&!WI>bN#db1RCWgF@!X+7F7 zY0?wV)vI5@he>tLss^#1J$V>p83=>+Fs@&Th$8f6DLUWhDC(+Wkb{v<)%^e39W*k4 zSOE1Obd(vx1H^_l9#A2+3QoMm7@Ucvx64iGe12O8p&s85YzU_kGs-@7+w2FU3k zocAqJAPi|Y8|VV3g$o5Vf=fbs8C%5Jv%n`3;CJ8knzu#^*reBb|m0R=)yqT_A|xv}zT6j0MF1_3M`< zJn^G9Kru?oyU^0|{{Q&@_W!}-q%%k<9`X0$K|>s&p`q|jdDj|d&GkrgYOYbNUVE7l z2@BLi3|)m-j`SaNUhZ|I?gJ?EB30+$nfzC;kXAE7&wBtx69|I>1bLPT#2<9Mc;wx< zAP<5X(eUE&^&S?lPNelqIcHaNBd-w#ouv-1UcjeSdo4lc=bT-Mq8>EOysDuAzSbGE z80X7>#4so*%0QOGyNsawIi`x5s)B+OgmsRdoV)_5ygj|;oKuh5$n5{;3R+(YuhjXT9RsZnf)|(2Ivc)d7`-?|=VNPh{z7VXo)+J-dP~EC z2k=`wK=%WJw)}uL-+0u6t~5Y73l&sYG9bDkp!-Q;LJ*^>pe800Gh#g#XwE4h0wJ$C z2UL6_#sG3a_hoS)x-HsTu9!4G}RE*7?h7_ zyHQ8|Klq9Z&^}$znj(1j0==~3eFiP<>_KH68KoU&7aRHX1W;QIc{TdW$*w_5mzpB= z1z5e1dr#eKz$-)$8zn#&gN26H!&d}AwtoDFkNJXnGf10v24@$0|9+_Koa)3Hy$b+z;#vk$-+Za>i zN%g3WKhQ)OFDEnHhwttlr)p_;de7@EtJWhr1h2*Sbgx0)Gje)MqCh}EKmh2z$fGj% z|HDsn`TzfaUlw#3AgEi%11f&(;ayWm$oz*+bb~hKpPY<5-UF6Lls=H+2;Ovps)ska zp?q}pNHdTi^LDRVZ3*8>@b)eP1M+3goO2Wy7#_sI6Q^qw0|WTHc{Zc7Odh28}RS{%N53-ZMogcc!!Ekw$!T60{Z>XCOBgBnxe-+AE^lAyNE zf286BlmBuuCljK$0Xg{lcf_DAi2wipe|Q5N%7-`ZPVYHgzvVyD)x97Ep|PMAD5OjV z9q*L@x^4@?{SRtf{r~?DUZB3547xl8v0KNZ+BFK)GlMGs&wbQ2XzJFb@EaFEbI!;E zcyIR9s|JNmMQ&c6-V%${dU^<$!XBW$le@y#G1>Gw+|yIGZUF zUQmHXzE`b6J^utz$wLYr^m*Ff{}KIvP_qB`e?R=11I{U+!>azn7m8`k0aY1SPs4n` zIVF*Up`kz!KJNuOnzAB16ui<9*Hq(OUD41w{h;-EE0LOOpuz!t5jMu6ZKM^9AP0tqhQb{Pnqh8g zYJ#`VL42h}h_=q@EvxIdpj=4-9w$O{PC+4nd{7dou@n;%1HVv&bB=3NK|~BZp?5Tc z?ti%o9}MT5!|K(12yxpDX#L;n)miYK-0MB{Pdt%B0OW)4a714Ty);7a`hj}S$al#S zQyTsL{U1J-_*xG~V+fX)!9@=P=m-K%22KXfsRx;)>c6Akg7xaZKr2ikq;5cLL4oiq zP|mjh{~t~Meg$leHFzh~YrN+1{{R2p3cjah`hlBb$?&2Mlm`&e2PxYA|NjRcpVEXB zRlYFqaZWj;z`)P|Z=-zoq}{;UoH>0U1IIQ;C^0_i%Nw`i>_9Oc?|n1Muzk(|Sa< zvcRPpWSWkX(E+xb7@XwZBNhR_ob1TKz;FP*Y+7rM0;r<}FD4Q>AU!S6fLSPCT|fMW zkN?&_pmxq$+~omissVYGX4V>KP2^LvKqY*9IAY-$B=I4x2t!|}2C9_9u9?A)*3&tv z8pN;)WnG0^RKqDmkp}5?A?5%e79iGNle18bs#|nHk?|Mlb{`O*P_GNyQeb$2f~`D2 zF3~{QH8wmHUW;?@eWZXqr~_)(AO=K03nx{BR=vuCkLiHgHOQ6v=`C4H>KT!GO&|;6 z@5jUE#6kHR`RXnZzaD-mCS)vLaKKK#T=P_PWR_4-^pP0jQ!!zC9RLMdNtyHTj(|b#BO->ybsEX z^+2Ntg!{3&0W9cJJOB5paTdP7!VV3-D{R5A=mxx)u_`| zpyn2G-49xFf>QS%eWdVzzdigoC(w$@c;u>o4`_Qn(rL3G7jvvYTp@~{_o*@B^6U41 z_(&^eTVM}lz!wypAPmi|p#BXAgEB2AqW~=LgSr5qZLFZVe|0nX=6I0CbCHPA;s5{d zcf$AOgL*N@eVXYXW{TN^R;(`}zA(Vn5I`>sw2%q|^o{}OE(5!Lh{*@gU83Rt7!b2R zJV#xlLhE6t%7PABe&V?b?JOe1z#Msn!77S71}hL}7lA5%^v>P>|M+KrRv`^1fJ!@p z10J#A;qZ#z|D9_T@(q-r;t_enBWN~Q+A8ASxlvNlQ z5Emn(UmpmP$GjzS5qvHMWL{|KefaqCYtZm(=+)^+J6v8)PKbzsw?sf!2OtmOJTFoW zLY~dxob%L^xe0c|DJac6^<205HGDwB@11JU(zPq$olj8lT8pwr6-!~D!NCDvp7a)D z_U9?e0W#jiff@D8NJ+7#J2W`2PoV zpbJ>2_%=unXpNNuL+Djr=C{zzSy1`R`KaMZ7W zSEL|;uBKJ+*)kA+k-{qY`9>f<7gDDi%ttz~31k7GZpLbqBP!Cs`?cW~a-$tlfiYRr zjCx`Ov}plv8GyPGs7;HL7)=YrZaq*M1eGqKNV7$tGcZ7j28uy(RF5|If?WE5GHYlk zqVWLXBaZS1=?BFz)VTkUt65gT*NUFrl2PB>@Zbl0z8kz#Rts^^*otn~ppY=c=%(fz z@QD%d_2i(^2YER4<>X|`|NHIXr>}yp=~%pC1-!I6y#=(EgbCgaKfR?MbQdjR@eV{m z1CoN{Sq=^k@FOfh7eXUX=wT~enwSucEA-L@6e55BBIZ&^9Zm(6E>-mp7`_YqFMyXR zu;2x)g9)7~3a^cF&c2+Cy0zu>7DQhF68}|5`!)66wSiAfgP8{_I=C6^8Rj$GhjAIE zo?;SE#8TeWgO+2%RI!7~7k%Q(m-YV?7(h2O!7K+QZsgVrdijE_D}%J=5qydd}`*g5;6cCW6}8$n%2Wnr$`W2prH-l6d4peK5N+ ztX{}iaDk7)lv&QC{LdIBn6kUQz1VG5Mi3V5vxECM0vs~%(e1-W4l)_^FIK)K`p zf5i4%2p=AU(2J8+Rl%$P&8~nJFd+CZCnv-qMyg&;K3P9`{pwdpaikh_AOUfj0cbhr z%B(E-#T%gM7f$9T_>no_VNIkh*q|Us?%KSZe4-n9aU>{;;7u9u$pG~yC+~ufnn1dz z|JT8fZ29lC1bo5_ynF$jOpCmt0pviW#XOK1u~qPK8;l*zpb+~7@5ucB&#kw2^%mq> z6Sh(h7G$vO3K`bq0F^J5^#}fc`v2wsCyWASWjE>+D`@C2E-nsU0fEZ@@88Ser6-7A zAB$MnhpT}34>~}L`9EwBbm|EvL2>l*Wj=#H121H<#FF?@h16EdJ1pn3hJ_){P6zqu zFLJ8_z14zkT)MUvv8NS#se+hc1f`%=s}S3aLHz$nr$>YN`|1(JI9T948XxU0lK=Zr zM$RD;k<7339hpaBw;B`G>bpL%j~c0!N$`2WA7`H15eL=E>JRIVZq zfOsu&MVb5ntsgVrj>xn=XJ1Z6UY-l8#gO@@w{T9WXJA+jUvvl(U_eyi|3PDusC=zC z3=N1KEnxXqh(-m-0ieYOuq*)zk#$JDz?YLDlYB6F&N(ORyZ`^UhnMuAQXwJ+v4sl6 zzdBVEz91RIPbi3huaL{AUgG%w|9^NZ<>lnIBt~XLll|r77u^k@5do-;AO|6zYV&e( zJ(lZaR;_}!WM58RmgL~j0H4M_*$rCPi8%7Mqxp#=@*XMho~clTJSa+4RrTQwQ_#r3 z|Nn?>d*Fk$Lcbyj997^5C_wlCbp09VW@;}Nh!_06H421=u3~V3^8L~He(&(hqpPn+ z*MQE~gBth^V*h{tZ;cWl2SB<1bIv9TT%C$=Fle`aSPZcM#~0Wp67YTF>4lk^`{jDd!B;B_;oSW1jV6hola6TDyY|37#m$10?a z9Gp{BgE%=6Ax6jpC(%L()R?MA-ZJDh$2AC<4^n`SPsl|{4<5PBRkA;l@W z4?q@hA<2XI==$;V>j@Vsh$!h=;~Irr6RhY)4KZ{+XsDeFX;vIGNworLR@|e$ z`l%=4w1)rxL0e52;KykH|Ic20Py)1I7MAKkgIj3ogGk}8>~6M%Cpb{Y_<0d4ngOb4 zd{lYRabn08g1V!~eD!KpFJ!()^%E2idNiZ(9sYwfAbPw1|F7(BL2)76$Dq0G_y6C+ z9L&K0hSL-0ip;4uF!=Qi-d1E_*bZJx3ED9i8XC&Wz~Bll^z*-g2CzUwT#!ltlkdn8 z3M!(Zl?0Of2~haIdkU%|LbVte=7NXBIOi}hgocKPFfgz(Ft9PK2X!|!aSxXJ97Vlr z3R`!xyuK8^4i(&)TD1y3MGM;L&<}D46oW=`k?)O!4g?_jDj)-pD{W8-`u{&-3Kt}g zJd+0EBcE;y;-ky&LfU8sl3$0$f4vH+VF*%ytO4ZWRa%HCTo8X<7oyz+Qoj$$Ku`e~ z3U6eACaqng;0F>zE;fP>je!CMq#tBIy#E6Y5|A7iqw^slf~bT*2E0RYfNBu(T@j$Z z5c0+{kO%f7sRtGDh~Y$Nk&PULAPW%@1S!&yqX=Z+FC+ueEhK_pAB65gfl9U05i5JQ0#B5QiiDuLlR||NDsE1tbIzvrr%lR)M+>&=M8QU-kb# zs64%U1~ftdD%U{eBm=`4lKIf99w7xOIR+p(K!Bm)%pU|F6q+Esq8s8s5F3R1|20bR zu3Zbs_MjusbIz{bg1p}noxlFy=`H_}s$m~A^?c7xZ?T_>2-HydiM=q^O(gB*msBn`y>`W11E5s3f) zKVr-P#1D^03|nE0{T^dfKrYC^neOlZ|L~?8DA)e~kGLlh!bdE@!e$^SBw-ljfY4Ax z6oB~PL*<|f+@f6TqyGQ@4=)Iy3gAT_l#ebCFMGlANGI)p`0*G~whA66pdd#o$N#&6 zN_u1gkOB9Rf)qUpNaaH;MC@A!haggzgG>6qUlEBAqM-@CW)8$hu6jTnF64nNkUa7} zMJOLWW7~rpoJ~1;Zi~7r#b| z6Oe}gpqnD$B|Z53?=INL=Gv>Lw;*?C)?Qsr0>2(~JUJ;Eh*6L3pwnBpkT%kbDx|36}bBWUSSXeeSSDrofq7ZVqJT*>dLk8z%(2PKei!bInH zG(Yh~zIhLHUKTPRbh0qAe$Y))|NsB}0xf00#oG1odPEOcy_m)8|9`~ok}JAVEdX^e zkq7F~EdU)6k8B~P`a_^LJ-m+!zP=I3{{JhxLHkug;p>`Hqrhnzp6fw7%0oj#;XBGP zLIAwqB{T-+LvXQzbn?o{?qpC1!*?r#LJZ~dLUaQ$9poDI>pf!Cz)47y!55o>3`C9s z^bmk-$O(lHkFyuM)<=bgA`5_m9I=-T)Go#PR=s#44|q z-5@^VKCqSbXab-?1>_(k#Mc1b7ld@dC8_*+QZ=AENTV8jqb59rGMYih8XzvbL{AfF zQB?mQnkW{)QmsZcC>tVz2<|{=Ne|=0N_tSaw`vt)JRZVVfR`f>K4LT)m0u5;NevAR zy$^E$sshmX?&>Y8kappM3TAxjq4Mz24hTOMVLoVE8?3VrE9v8r&dC9l?Du048bJK; z&`@}L2joB|ttNP?&;N#A(mQg1XY0Y`{Qvm`N_zA?4_(-93P+kXgOv1$;b~Awk34k_ z%CyMC*=O%&Em`>UXZ=rD0Q(#T^r44f6Dy@3NJ-V44lCq&z|<($pjAjW2IZpNL;#u#WPy*`u=E9o!%W70(G0{kb9U;m#(4V0@t|L>6o+`*udp6^*((yCRf zz+?EJln<&JV&f585y2(>_3!YWE~umjojCwf3&NlvMIL_1`$kepPt1knD5nOa4X%I- z(ylIe>j%B02c4+BaN)xGg&?GVH3+WhK#HM*(p+5ih)xjbx<%xY9^{~V|Ng)aumE+cU{x{543KF36Fg98pr|l;q{0!KtMqlinQ_$-9g~0XBDDN4+>J`o0>odB9GC6_*1v; zg@?)NE$qcFUcATvg&qi}MXA;YtzW&Qg#_Bb$L7`I- zXXb*^cx*@*ymAFu7#fP$4-ASDxb6SJTWYra|Nk4lyx=rwhs*!}h@Ao85crDdDDypg zj&h{Y@hoSQ>-q>y6!@HN6wue#hxd9whmdCQ_q>C=hms;eht7l|+8%n(AnQm$8(6X)5u7AI72~P;%NQMoc{Qv*| z-BYbO`;pp&6ql5kM_nRc350Ff8M#gD8l|M!(16(8bM~&+lAp+JVoWh zXXWeF@N;p|H*MSH!RHb{0*Fr6|NmG@%Ba=9|HIE; zM_+yp(*O52qV71e2en()wMI4Q0n++d*C^I{uR{(8;9Y0VIm@ybnGu&#znttE6%&G3 z`UYzCo0=k;n4l1Vhc~<={Ew0+u75|pqo}kNF%1vi2ON7Jamx}YQI*#t5*^Rp=b#1p z@Y6z%XCrTNZhCcP=MLHiD6y&wYw;XLby#-?^EgZ2a0+dHW zOOb9>109WUKQY# z|7XsGu|YJ=`TYNXfp;l@ECXRsV^g9Ybd)eNFJj=Y@IUCpOT+>d?!BPPB@ld`qmCR2 zNJkBWOafu>EEe;B`2Otw|L=lMcn3*=F{~8}x?l(Cc8&V~XafKJ!Nd88^&}Yb??7YG zNb(e^um6wX0MG%m|NkSVNiq4XUYwlVh_PsJ5r(*{9+dp9BlY(|{L)fHfB5ZPq*kmj z=mgYn4x|k2qIdYS*06dZUzrCg5dI_WN&@lY;}Okl^fKEuD%lXZ8N2ps7PuMv5tcte zO_KkA5jh^@q3hQX9ez*&umI^i1(1Ac{a<*20^)}v4Rur8j0F`4b#;h4W55=CN9w?D zIlTor#KH1Ny-f%ob?ki=7vgXzu!rhVZY6vIx)?kG79yY^ef#@2ax>NoqkkQW2y*l? z8x#e|^Q@qr(yv#jGw=1`@rXq38l@WafB!o8APvZX_3PKe`EH=G=2eJ&qUg<7a1

    cpC2OJ#Wtwzvt_tmdoXTw4SROoY} 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 literal 10244648 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

    !S|AW^0V;lE}wE^(e{UAA9^*?BTKdA13)kC2A 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�FuQ9EgVTk!ctkBoD$cJ~|DO17Vmrhz-LaF%Smv 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

    lszeza`>N&}#>5tN2uX$O>sL3Jf){vWg_9$!5T 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%0Dh@;xZ+fX3fJ@kOn)1F{>GFG1x7C{Kgp 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ì@9U45`Lpn0b&6k4ubRhl2Vo+HQvK!RL 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

      1pf&=iYy#DZp!G_iJ^vs*;CdOf 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 z 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

      JCsCj$%mt4+;-(|2!bzKe+C< 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�O!x9?+RPSmq*NYCvTqhz+X0L1iVV>;r< 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�#I27s^5|A1dR`X#6jkOFvu*> zcmc>hkQ}ml5F3P%^@G?TF;M>qq#k4j$UKlaptEa0c7x_fK=m6k#@BWLodW=>=fL#@ zDRl}ZYN7QJN*zzYJWv}2gh74=g#!qK>LgH|MvB`(Z3xgFbC7;~7*zj&)RJO0scJ!W zI|#${!PqbwCJv)P;vfv;gJ^UB0651Q*o>hmMd34r?lpn4rtwt#3-Fia1) z-nX~^52^z}Zh@60#L}R8733FCy#lr$sm~1J!|VaggW|)Wwg*T(sNMywWdgNBKp3VU zM8h!1E|5BqJgCkF*^i7tVVOB8oBWVs;@xx6F!Vw*JH5ptp5X*HK4i_hH>#h zbw8*cMeZLGD%X(ZLG>X>KX}X>RPUqBvxDu&C5}z4t?hqMI{<8+y*-!>DnsGsz|4Y< z&7-IVsfS^ZI_RCNpf&;sgW5NsFbCCtAa}#YAV6yrLH-A|7eIA9j0TB;>U~iBz~&i1 zG^h>)%{_qBg2ENlFUDH$LF*4tc|1@UR{w+QW>~y|`~a%|L2@|Vg~jcl@eWYi2WAdB z4GLF~xv=^br`d$sIUu`17^V)H4HEP8{EyELd~z^15u*mC78FjPb&cr$CBz4%HBj0G zr4dRo`WgUG-4DX`sj1+70iZMra}Q_?X0%=zx%J9u+z*Yo2bB+?e2Wj`?f(;5|AWdN zQ2hy_K^Vja)%zd}sslmw8LaFemIl?0pt=B7PlL<^nN19asRhv>OpG2vYLLwVvEdlh zPJp%vK>meckh_uDpmG}2mVnVPHnP2-F$YjP0@Nlz4<}Gqfa*t3T>+~%z-aJxS9CeOh^u7HweSj zp|jEIfAqQ>#0Oz`JiyFBq6x{P=!M#k?q7U-P#D9~AaWWamklzjG$sb)93aqm0B8&V zd42+vr$J`}jn)H0qaGNIr;!;?B-Q^o<^W*h|Df^#RY#K zP}>AlpM&kdp${yFWDZCVXs!b^UV>~EGCRV}?LRyWKzfNa8>AK&Mm7VP4ONe=E{BQ1 zXpmn(Y!C*qNy5-|l%TYa>{onjP#p})Ys98UV$@}ahGIPn7_1LLEcht7wp1J(b?{X>x3LF3t=Is$G# zR4oc0i+LckKx-dBW?;i0dqC!rRnNlQfW=-Ecfr(=xc?vICJ;t83!M*_Lv{o7{3Fnq z7dAhmi-GE2P+9`zIrQ{H2|vl#7i;|wS{G1=v<3j=9?+cBXdN*4>wwWX8o6-mR z{e$FC=KP^`KJuIZ?EYU+xdJY8Y;FI;*kBqu{taS->;siepz?uO3{nrO_d(;wpn4zF zrvcdmG7m(9Fftp&Cl(W{51%@Ga`@bVtPjKnVO;8w`G_yed1C0TI)({|@2V;Zg zNI-1_Qq4tCPlTUf>ao?|*u-G!(P^A&(cAzED^Naw`4b-v+II@dC!lmgO$>@d(B6O0 zm_KOlABI8a0#zp_{zr}zP+lLcTSji(G8*@TKkh+!6jaCK!{GWKRPTc@sPB)Aam@dN z${bK#2CAz-G-#}!*uD#Lxdxga0GS0E^9Ge?AhSSxWE#XK2E+8>QcJEpNFNB}G8b8# zSaryH(Al6c1+|5c!wJL&wUa>Ot@!+ptQJ`vG8cMO@H-W+mltz&KiH!}acR_Ripfm--AU)K?IXKn;faU2TSjKxG8*rLKi-M1|3P&>2!q-IAdJLDUjGLwZ(x|%u}b7J478^W)VBroUqJO7 z$ShFV1)^aX#z&_?@-Q(F8yCi<1|$x`xb&fm!_>lPba`YxF=}Ayaj6A~gD^}TsJ=%I zI}jUG$C6a80w(=3P523G7lMp=N7!Y zu%9ms^B*DeVd`Ksx_YQMsQw1|4Mv05=onoNosX^_%!jsfz-;Ip2%tQH>`#1b&|Xte zJ_3agH8E&iKd7#Ujs3%DkQiv(1=&rYb($dcqjkaHuM0-wXynBaQT0Epu7}ZB>VHuA z0;`um^qL+dM8eL`0nRCjuM{zo1Q0<{l`s{cWH(cBJdN| zgW8y|bALf~KWIGwhz8aFX@P+#<1wH#3W}@Ix@F|mEu(Qh_~V?Y`X5x^gD{@@A67qs z>TvXOh!7t%UkMt|2K7~7=HR12w9=4$R zA5>3(>J6+IOI-?9hfN$=44I8q7lZW^AqH|6sLqGE89Yz#?G2tAz%T=39|$9x3*$rk z{jjzKs6IkJ696>tL{j|^GaK1H5E~{Aqd{U=FsOb;_5+9y!Z0y(HjIx>gVe*sKx||T z3O~@^23YtJLxa}Ofc5}@(i|wAQUinBP?MPWA9n5!sO|@~0YGhn{P1v;`XA&*kowWO zVDQ%kqj5Cy;)tyJAJz_l(xCPKpneI+EKq(Y7K8dHp!xt*Hi0mxYy#2vFtQqCHb@Vt ze2^Y&7-kNP#-#=%55nm3Ffnu*T^%KSPt92AZqKO=_)sBHkM|3PYD`sht#tH*JPp^IbVgZu(o ze~;`>V%VTO25K*Y(jzr6D7>-V1q9j?P#zbDQU8O=h0(fY=m@P0pH$|9H=Q27k%^TYZkpfUx9L1h$(4WdC9#D-yX zK1>`$ai%kzUF_?OEnvhy#c@P_fLG?eVT!)1xj3%l6$5U71tSgDp zgF_9d{s*}o=2pe^Yuo_}pJm z{~v@w^*?A_02Cj{?gQ~b=LU?{2ZO&p7>%Qm6-PwZ|Iqp#yzgIE_rH~%9vGWxYyXe% z_5Ba(%OmG`Tx?LE6;y7c*Ma2lLFE`OefZ>%_25zm6Nk~rddOiTn}f_oHVcjQ-ozH^U2e#VAD=R&~R*`TyT4GgL$Kxh7f>U>b$55gceXbu2m7qUA*_JjNZ z(ld%jR{b&>--A28Nvi*Kbij2!sO~q_()zEXto&b1UjDzIiwnk>AA0@=tqVY}_hID_ ztbPOWVQh37pB%bcV)!ugU^F&8$a2VRm|A2pQrRFgV0u6_2!q6k!63Du@m$cE3drFM zVuR`joOK?ko&#aDdJ0z8V9@x~BFiDOkV0h`C2+kDs{270SN#tf;|G}!9_I(`$%mc^0IK6aWe+k9V#6>@4#o%3 zATbaIv2kHS@-Tfcb;vY~4N?PQgD{9qEQYCv(a8E>VlWz64j&s`J&X^cLG?eVOh+ka z_4WS~tpCZVpHS*Dq&g2poCtG4bvCF@Ms_pNeRM45gX(tVIS|mC2(sCrvjISA2)YxW zpYX{+-Gp98BlBTwbQ+hNVCt~SgZ2ZuyW?$ZBl{nj4H_E(jTwQ`4mEJFqvL<@n!nUk zFb!gZ+5n*XKRYA@!;PS}>S+Bk^6Hn-I3L_`4yvE=&HaPqK>dAdef|F?nwlu}KB(>o zVf6YRw8tA{F1T(3)%hR{s{fJB1qRDu;lsp1G^m^c(IAY>2J!J>WVP7XATba|HUq|o z(fH&*YCssK2E+zoWIl{dh{mT6CI_R@%>s!dm+>GrXnh#Y{y((7g4ZoX)NOFJ$a=}t z2de);^*zX)FbrxBV0ACZ4iHAR7sN&q1L*_RLol<@Y0w=}pmhSEH3nGy0WuF4MzRM( zFS;B$AD5XFh{M_ipfCijZ9w-cAwFoX2-H3Tr5S2qQ2VnYJ|5#7Kv4Y;S{s1w9?%*9 z(73>8eK5G|gVFdIS@8p^r$Kc*J`9@UH&9cgrRjjsLX-Y zUm!LN!^F^OkUUHbnT;-nO%A38orbAJr$OpqV(4rT9~VZ}gG~*xJTe=bT5`oeVUAqZ zg6cz1y$G(eh^d!wslg>qK^+FGhmqY3nh$`xmsGQ%ZUn6(Kn?>K8#M0>HXEuA945rt zL5?0`&4#Lj)#)&I!T2B=ghAryG-wSaD9^(DNGuK72MFr_gVGr&Em8x6>UmIo59;^B zFo<6q9gWfd2gOmOyZh)Iz~~&nXc`zqX#iA~;H&#Va_aK(IO~2`{SRv2gX(=y9|O6Z zft5EP8iYaR4l)g5gD^-Ogh6Z&#>EE7fiOrOhCzG~2Jt~OItGb@Fg9_J7)TC;(b*tA zJ`B@?O$|s6gt5s{A_g)Ogh6J2`e2|vbjWqUfY$%$btW<&$_DjcLF>_BZU*fQ2iMWi zIuTUok%B?v`^a+uFmquvsLcU3A8J2}+1SL;-9bnVA$er;(A2`}c9@%Bd=L%7AaNKC zVuLWqFQ73KnE!~SL2WKjngL-@`k@8}^%X(&J!st@a{Z5O4hRU7{rIsAT|tx#6TFthtVK5I>skQiCSEGvDpU_gJDoR3)Jocm8~!gu1~$a@t=E( zTqogUqt#cS`UfvYSC7nxvO)EiiyZ^dl+^zQ>gxYNX9Ixt|HH}^SX~AyUtoL~jVumg!^A-} zIvOmOBhS4xF5FZ`mlS5YvA5{N?#&wa) zT2LDdR3~E8Q@H9AeB#uouh7f~)y1HC0On>88ze@qdqLv~ApPj$ATaYm;Rce&Yd*-I zFbs7sdcPa5evlqC{RGv6^x(rF^N{3`-2)o)Kwn1z^DizMH2w|>3s^n{u_?u%wiT$~ z532uR>;FJ|0;FQe^=!5!b^)c>IQ0MJ@M(3(Kd`9Glhe_&+^ za@|G^HppCj=D_69X>>g>d314fJ~nmO#L)G@_{eIJ*&umzJ}xnA;>dbIY!C*G|D%t6 zgT$#;|0C5u6xU}^vp{Y`J_8WseuDKgR4>>KX!RmU3{)S2<~?Bb3^EPc7l_Y%Q2PO- zALK3+?B(?zqz@zy>gS?hWcSdD4f7|IMy~%sZUNP!xY|6({)e$?QU8O^asbu!btx(E zbAUkgKd4OrT6+nz8%BfXAV6U{S|<$dI$<<^Mo#>YTK|Lg{(<%Yg7yS}`u?EvfI#&> zsLn#ipt=ZM44n^C1EbO9vGIvjORPFR6B)L2dYp+1gK97+CvH2-wv*GLFzp{!EFJMJJB)7 zY!C*U4^<0hli+?*)Pvjv!l3#eH2#C^S3+!1xP#h^ptM6RTpAnuA2bI5s`Eh@#0Iqi zuU{L)JD^Eam z6Cq5BT0&-_%Y)2D7X$HeiNoYz@*o<7LE<0`V}ocA28qEiHa=j0e@RIO}0h9Ysprgsv8(AA~{TFdD=LVRSx73=Mx9wx89DI-D%(J1Fg~oS zqVnHdN9R9iydPBmgZlhn8dU%5>i!4S|CH2cpt1s_A4Y@NFbom{VGtiigV-PpSx3122lSTRG)$CLL%xvoc4nH=-%G{k=GW&>;U!YLG>=!9wa+JZ3fW% z156#MG|26s^_QSI2GE=aC{94_3D9~(P+J7lMgY~(uyz92?Vxb<^aS5|1acET3|5ci zUJxJd2dEh!HxTP?kUK&Be^{CWxtCH5sw+VCJ*e*w!m#=u6b{(j1!_Zq^o-(>Q^$

      wV~XfUq_Ia{Uh~PeA1hE{shcBnHADJs=u{(b*tAHVjjXO%9tF zx_V?jG8?3q5Fexl9fS0MFi0Go28khKm^`u=AvU@m5Ffdm1;r<*ZwRU@2x3rOgjT;0 z)Pt;^4E><`AJl(Fb~C6CO;Y`j!(Nctp#CMY*&sIP96*p9y5G?2e^B2T)P4f#0oALZ zx*aq>0m2|QXiNYk4jLZ-sUZe~)PvgApmqr;Zb0J*pg0EAgRrp#Q2PYAod6q80EY>h zUt#q>hz7YI)b1e09UwIz_k-*PVNklE1_rqiH0BSg`$1~}L2Cg)_X2?Y1F{nxgT|*u z>x02tAB@J$$ch_KnFK1I@L_O0532J)7~1Cti$U2P8&3T1S#$7z%c_I_tCt`AU$FS# z|ICF4|7YRA=yD)F2&1dVCI(W2OB^Hz!^moo*)VxRG`b#SK8Ov%Ff)+ZATbypM&l9# ziGwgq9gGHvA!A(PAT=PllsS9;!*Is@{r~fq9{r!U^vM6bC1@C%7`hs2@bTD_zx2re z+$Bfg?ghCU#0QDP-HS&*Tn!F)g8ZJj-~fvGAU;SOT`x!sBnNT>2!p~Cq$Xp*0dV+% z+=ReKF~Sw(?%c(P|K}_|{6BlqA$WQRnF)%A^m+UKr_SAr;uerSIPu&)|5N7f0qX&~ zW$BUsAp1dX!iGU|Ap3Eehmy8?Ao*-*nB}|0aVR!`us^sqI#f|3T)$u+b{)VFFSIO1Cg|AU4P? zFdD?BCI*=c!XWp+?8HZd)Pd{=xf4X=!uZTUmjl^PZEU{o{eO$~A5gIA+IR3YiR=cD zpFnb>_}%}}Fc=MkfldR~3vUo#|AYGbpf&&qgV<19adfo)r*@f2ig}1L2wpzs5k4Z|QYkUhv4B!;XG#D<9>tD_YgWFIKLU~a@kgX{;n z3q+%1khsz6H(2XhZ03RN1KCSWOnUwQcC_wWJ6iV*blo><|GWQsQ_hf9|3mA1_?UpM z?*F`lqxC;E%TrR#0+s2ovL3_+)d}eJ#9-os+y`+1fG-!oeOQ?ooJ)htk%4k}kc7{mtE37|4|uwsz= zK<)&&7lc9n1&LA1y)d&tX2USZY?wHR4Z<)!Oby6QATf}8K=K2DL3YF3gHD6o19BgT zM#t!C@$o@+P!o^V{{vr+kJhE5aX?NQ&}iI5T>TH~_rvOb5E}_c?HaBBsac+qY8I&8 zf|d6mHm*7Xz0MdYKFEC_Kf>G$VuQq}F!Mn)K0842APfsTkXn#iVCI0>^u{2! zfZT+RLGD0z7l@Cp4j&)1Mg-(XYGF`cA2k1Oj<=p^*^Z22ekn}7{=Ds{Xbg&5A51UPHwIVL2Qs1HQfv{ z4`x1y#%Bje9)>~sKx#p50kJ_ey)n#QkUL=Rg3+M(1<8Xj%v~ThHnlK4=rqU-ka}ui zP?-#>|B*3hOaR?p7$0OWNY5yyZdpDWo}=MOY8oKA{)g51pn4yKk@%za|G?J&pz;(} zwt{F_y)am5P<>^x1~ESms*fOI)Z4cJG7n@fC_F$I#5P@v-F%Qd41>Z96rLaqG6TdP zC=9b7Y`kJ@!{T?7WVll`}YGIH&kn4UB8?+`6ms>#Y2k9BbqxIEj z8W`9#Kvew?s_Q`*RPVzu5`VP*AFcmE^%1ccRFmL2iJxTVQU4(I7X1+yYVa?mzN45KIj&8l;z67-T=F&PT?h z_5Z+@>!bDRX!sM82FR}eVeNp?@qd!n>r<=TMK%YyoCnnjgBgSB3y}M0>1L1}pzuMr z10)Wz8yTak0qLVfn*`ZTQrR$fgWQGeUJx5(7AUVHkEwvf@nMiTAb(N=gX~AH`$25b zS^$t8*xUdT2k8O1c@&SU5kG%H}#2)SckM{pT!3M$7$yEB8mkel+YsX@IEuA5YysTK^Ax-H%?*g38vRfRXD4TDce5 z4p2CO>PTd}KzvYL2vY}A1Cj@cf#|`AL2d@+U69*g?gr5yKFHl5HZd6FS88C;xC5xa zPg?!|X7mi8(KCQX)4%|y0ix@F(0o4#V`&SF_WuXI4S-zkgX)37jzM)8x|=~_)O0t< zJmh*1RM&yTknI5Rk>|}pYC!TJw}EJoJcu5Q7=2v;$n7AE>}PyzkiS9dse!T8|DZ6# zWk1MHP#b0xkM=`H)4;%`0ix@FP`y7|{|}0}eo)zojzRSmtgHoQzwvgY0II z7&YAuG7mXiKx~j0vK=5kC@f*_0I@;xAU=o&$%E*@iec^pxfg^%?gY`qU{H8~{7VfC zTJHzy|0A~pKyJh34v?Lr<^I5x`=en$8up+xKvMk=Y6E~UtQ`QQNBjSy{eMusLkb4f z4WK#zRzHB)ATd(RAfy >`pn9UvNA54svqod{9`QVY@xk_YhzGX~{jkXu1+2DuaD z2N0VW4AMsp46FY^Z2%YsxeJ#YKy5#e{3sr+hep%Dz@-6_>VIf`51R8w#-sKBAgKRW zBklkM)d7PYgX&dKy#uQsKx~j0HQfy|4`eRP4iJrQKDruE-3bx{sRii;vC;JmHa^Ua zFgJtT4Pq06L29XivDN?h&Hx05^8n9%j@CN^SMQ95{on|DlInj@-yaJet^Wr@{f{_L zXRy^z*xUoDvk-0u)j<$3>}T{~GlN($wnlBz-awHILi3Zx^^@kaHRo?>VN2Xz-awH@by2a z{DzhHp!L|WIssG{3`PudAI!}l_rt`f?OvE2AR0YvV0MD!Kp0dXg2X^H2!q(vb`Q19 zgSippeh>zk52A^|AU}e_o>B}t?-w@i52Hb1xZD7;7qos6SGhDQK3ZpurUBZg0ix@F zXkCvy?r#AV8?FBbSN#tv%VBi_s4f_c80J1${Q#~HsC)(>%-=9OKs0*Tpt}R41|$Y@ z4+w+UFmnbo4RR;Q?I4WI2Js1DP?%7PL3KT>-iOhkF#%k5!@_p7jHi7WKN`lPVT>yc zkW~Le>w9n;0EssAcLXg?G>;cJx+yava(ICFjYRKFK zh&>cA$R8lLgD}Xw$bJTi;lq^H{UH6M*8d>)fZU0zTpAT0t+Phc0PWKN(e*#_yg#V! z2Vtn#X#GF9>VJ6IN~8WXsNAL&My{tobr`kGg_#2~6IPdl!Ucq3a>z7D9EL&SpgIl2 z2eF3&2K#drWDO|Dy)gHK{6GkU;sB(c5{$L}U;hEz7R6;h$ep8QJnhT)(J&qjV_a!~ zDPxL`9MQ-0|6 z|6%?F(IAZMCwy#B9DvkQg0a>Apm_k0*|_Wm#RE8vj_v~(JqK?z4Gc&cAgcZc)$=e6 zs`p_SBsO~g&!9RJ2)V2U@398m54-m5fACtXLDm)k)y>F#b5MOiZ49ylRIee23y2RA zhuH;UBg=!<2!iB5VjvnM526P%2DuUBFOZu-G{~(WHnA9_hY}20>kq2$VHmat0AwaE zH-O|u>;KWd>1Y}lxHLdi{ST|}k!fh%4_XT_+W#LM{eMt-imj{#wF5wMpgIBE4gj?W z20>c@xy}N)8|*$Ry9;Co$Xt;5FboO{m^erd#76F?g5*KsAoU>FQ^WHxeH`JNDM?%6NAiz*#V=G%?HVY z!UHA;nv(#Df!v0yZZNY!?ghCIAHZ`E~9#mJr>JJc`UKnO4%v~URVPYUQ zwJ^v`P@N952SkI+28qLHP&k0ZK^PRCAUO~Q$qxk#b1TgKAUA{9q+n1Okc)BE{~&ka zasxP=N7sD~$ht3b>x)r+!>g@9QvHvk4KP~&4_y5Z>O-NIub?sljC z1cT~(SlJ4y*Fj}4D1U;?1j&Ighz$}0$-ywF%!TPgra|gKa`eV9H^9~-(87Lf^&za@ zhtVK+fWwQ*dk|>hA6#aF`~bor|AOKZ#3mMl+C(7#lY>EN3%TBh?f(Ob;d2MbAE5L( ziicOdG8&&lBR+|$|6$|)Fd8%tfW#i{|I@z>fnKJ9@*Aiu#Z}gW*!%%Mj;2(kk-?hJAR$X*a1 z*$>oWL(GMo=?k(8gh76Xh`;?0vIk^8x)?}&C}EJlKp5mNkY7M-VlmABAbq4_P+CH- z_hEccn#1J=kUb#zQ9Ly2i_v%*Uhzax{SR#ijMo43tN(G8qoDbJZ1ohVOh?xPsvD5= zF{lhiR|DdM#6fDYnM*A(koh2cK=y&$3gT1CY;5L$?15oq`#|=B_#n4{*x2+Ab}^8< zVSWR#L4JYpiKRh$$iblW1gr1SX?*tpgX{w79mT_|UKx$gp%I@H*Z(>?|3~Y8`qclR z`UzJ#4k|}+)lcYpK<1$5Pmo@8bs#>>Tu^-iQbTPFG8beA$S$zEXt?$cWEaQ|kXF&30B`@qe1f6+yH79faFH;@Tylv<8x@lCo%QEk%q>9@EQQL zdLPy%814VlzWy4lOTW$OZZxg`Edu%kQJV(|KVuRFy>U{Kk3K9p&W5XbO zLG27sJp;lZwUlC*IWYSuH4mSDkX`6u0a6bV2VsyLs0{!T8;Tg@2T&Y=!V>0w5StVX z@;@jXNX4LZgst9(iQyUp0J#^WcN7ne`eHPmhF3fhQ~zr#DgC$7)BA4$s{f&VepuZP zqDSk0+SdP|G7`BA2kqap-t_rDs0{!rr$KTc8dm0G(x~g+Kyb){U9~CFvu=Y zT?4`(wbZ~cyFg}9(_D~wFbp#nW*3M?_6vv&3Ky9Ap+e8yjnAPGpTyMvYVz{`;d216HUNy))%_o~<1Jms z!AUKfhO&B4e+;?I1eKRo8$bOA*Z-S7|A&>SAU}f2eC!yr{s)KPCQ@yWp;y)b(~`aygUO)Ctu3q*s$4P+k(gV->C(aLUGnhWy-$X_6P zKztCJ6b$k|C>%(|p!9>Q-bWS(xeM7nAp1aiNAb|8FGk~Oc*T=i&8q(n#>RLtsQw4d z0pJ<~@Zb7+wEkaBn=t_7vJ%7w)y=TFA4FSjAZ88#d;Je8<3Z&y41?+mSpEjt1FG9W zcH+Y@Ga!23{s+?}uHgge0o4N_dq8dh@j*1LFvuPl2DPt1_JJ^HZUf{FTG>l$b3uLp z#Rtf5AQ}{xApd~)#A1+okX}+T$S&l19>xZZ`@`5U8Wax5?g6VFUhiNR

      HAbE6*t`3;qz(m#raSKTripMyU><>MNNuK$fSG*H(8Le~H|bZq!< zS~lmuVcw+w`sp42b>nOQ>%>%yVlu-(H>UExMr7%KweS)Y?3mN}-=nAx1KVe}gVkw9 zmi;$OsQIrSU;SS{4uTEhtN-i8R)OWw%>&7SFib6s){CnG>o-iO{coI9_unj~;lEL0 zEmkwo%|z#e+@u>@`5$Bt$Za5VU>IaRObq5m?dbCVFmaF^t+09oB5aZE0EIg!9FWC^ z5*rlGpf~`9J1Fiz`4Ge>1%u*1C#I65{A-d__unS76@oKb|J&fhnXUh=(p%u^Nh`V> zoX$Y*9mRE{VUaW%1~khDi8cR?V#@v-hUfp+^G*D(?w3li{x?!r|F5I0{2x^Rqs#$7 z>;Ht1kpF(Rwm7jbnjDM|qG1@Heq3@Oy&yRl4Pq0*#HfX-fzco{k=YOk@!>~C-X-^0SHUd|NpiI1{h`` zn~RGL(&u7k_TR_G=6{f*BiN0xo}T~XyuAJ=`uO}0cXb7u>tSj6KhE3xe~gC*ZLp{3 z{{(OE|DdpjxfNtL$Sol3Xl(pH#M${jhz)Z?G}JBVG)x{FjY}=EIEW3x$ogS?WE#ds zRtI9Ei-X(@ihq#5?2U~6C;IyS4{~q-hbu^oSPY5-e>*#H7=glx7@X?w|GzFJ1&nKx zlmFwwHAzWeHH~R$@O18IVggQMp!7A0{lWQcG#p05fgWi9l-EIX{P?hyzCO6$Zw{*O zK^SfPAG!Vql@*{m4@847hz-IpHjD;|p<`m?Kx#l3T`w*^NG%A%R@DbAT`)9s4fJF$9sGK&khOs4{`^#_6fTA#PHqB&B1L(kom!mj$rqL#1edb!0iH1 z+aT7{le+ByP@BWs`#*A<2vkRc>;hqDQ&VuA31WllSQtjGYq7DB#Xx!p@j+@}7@t~@ z904JZyk?NCsfBo>3ps=DN4aNUlr z?g!QT$l^`u>EN~}$X+``!~Y=ngUlGkqxIfs8lYbqAg2DuweKIa_aB7ggM-24IJ_Q1 z>+gfaK^Rn)Ak!c=IT&URHof@du&GBDL)Q!A!)Ro+AT~a6Tyh|NFbq=zqd|QxP`?~h zCZgl!^mM%Se|vT|xZDTn1J&!WdLKlC_#km)3=#v44S?!iLKxHr0M#Qgo}T~H0|WnO zhlc(Kr5j}PsKo}=1t9xCZUfZ`p!y$%LG>IpFlc-MH1+{=GbsE)^*u-&T=&`8f!iM- zyFhLL(IAY@2Jt}{BnQICY;-=l97rA=V^aeYgV7*8$ZT{z$RD7(ALKVsxPihE#3luU z(jX`;g3>7{Y>2_2GMkwGKdcSVl$Q1%)Xsys3l!%dGe$A}%Kp)?9t~?yIgYRI50V4b z@!&Q9dfy+)NACZF$_x+&l^GzKT#T$AnGG`!SqzyClcyC8vI~TXF&~>cY+@j@K>aOu zEaU#5@)0CHtFjVr{XeU!>c6X*8MqAq>Pv&leNep)s{cWC9cWw|WEKqjSX+a~|3UH~ z3{wlDabZv!0HhW)UJq&qfZPo;kJ>b-4g>iI6kZ^|fZ86Q`V53Ybsni0xy}Tcfm~05 z>U_}n1_*=3Hb7%2AbF4-$ofEhbPSV+(a7>JF&GV#L+8W9K{QAXgh6a{3=#)nba7-p z$lai^e^7kD)PmTgU{D(j6t^G@3V&iSX#5G*|3~iYBeP+3KZtHfO$Co9!Q2H3^U?Zf zv_2Y51N2P;B-Q`0aervN4{jIe>i$RW|AWd5To_c2faE|l2!q(v#2_<4m{>DmYGE`n z`f#bmB~FZ)puU#3wKcfzhLwlNG^n41Jl2nkof{SgHUl(<4eH;+>Tyv04;te}HWS1S zu(t=#!-MKqP`wVqFg+j|oevTVb9M%gorCHY&|Cnhz5&(MAoGwh$ZSwQ5?PE~HpqNX z_(r(7LFVP5D2G2*daw8l4Xk17VQ6Vc`x+1E4VtQ23D=_MrOM4>}(O3VT8r zx&8;$@5mTi8=yWl^?zw>EI9l@ZgVv^{|_=_wEU-U`9B)oBRjmws{di_04NRX|AWd1 zLiHW88W0$>1J!q+dL5(&R_DWLkbbP#*%>^43tD3aD!0+=7%yw< z|5+g+|3PMg+8-b{fYvaA?84_)kel#fkbY1-2db|@V*(&H9D~{g(6xFnF;G1T!^mQw zx*jx60<#Nb7Dx;fU!Xhzsz*WkkoCaWglJ@aFtso-bQ&ZN69ch97@ZFigJFDfAT=OA zfZPxA7bxC9e0xJfc)9?I6N5qRQBvxE&>B%#{~x*T$HfMz1+@!c>sCSIjG!X^o@T|Spmv>_%N)WkBbJ?|AgvBUweoD_7*n(rNkuui|}y%7vkplFU-SW52L~2c6R?k zWi7rkc~WsP-m!mJ8(>a#^?%S@0m!T%M@Mko3#tP^7*q$tLqkDLH%{mz5&o&0SJS}3(^7u!Rwnra|ob17vwfjc!1I&x_(@IQ2PO- z57f5>*$t}qNWmbtg7ks>2(ts^XV7{%P+JT%9{@5NW+q5Ihz+7a7{mr)Tx@hXY3@PnDZpuLSSvq514sw+W$2ZbHjJm^>g zwz?Oa7_wb3c^D0n1F>Nk#7D;^}{~O!~MUB zh5dh>jGq6x&0GKLwrq#cAT~8{%Z~rLOBH)5P+1GAGhyTjZ(3F_m6+5p(n z9;{6OZVLni{D-v#Kz;_*1?Y1M=w^fXAT^+Qe2^bOeR^Biw2nm(+gG)Z41D}Ks2&Aj18he7$lF5k;P$b7!6VjV#6?q z55gcmG7VybFiaf8M#dm_gX(>dpFnF$LG>~ykAwK6U{D(f6egf_N(=_s1FGX;{eKV} z7lw@ifYtzj#)M$*0*zZ>ODCgZ)USU=!*t-nG{VK@zoBdJe}kD<{u}Q6`rl~lF9_c9 z>%S4TFw{(t`3AGD{5Nt9{vYA$0v>xsj(bqq0P26@!zlGW+S)&m9BBO?sEmNsZ6F%P zkM1NHZhPq2qVjZ_~;m29-R+Tk1ht|gJ@9MOiW$em77b{*gvdo0Ga~;)nA}8 z6;y_U`naIF5rjeYHK+{$avMmVR18{=57G;&n?Y?0SX%&8|G?@aP@4hST#(xQh=~80 z!NC}54>=uz*r4_RtPKEaGl2T8ApPij7m&?IW`p{qLDGW9EcCX$Z9}rV#Hu-U^GY{F&L&EM1%YU z@&m|EpgkU-dKu(55T6tbI;#m(|AXQilwJv8(0mT4z6aI+u=*Xu$A>}t1&gAh;A0b@ za0iWFfzrY#9=Q5xH0)^?_MpCvwYlwo{pn}_8}0l5-)P7G|At%t(F}vk2ic=H_4I!m za~p7f5;=ZJuK%%&1)z`rgUSj}xdFmnE?)m_BpLos@rTs?Ep80|TVdE8mEGdb@E;p) z1*!93_z$LGdeLZ*xgb2rkKuoTCBuJ7A%5`rWgs_z+ylZeHi*WCVQP@&u!-T5$EO}7 z2g0B+eGo=pmsJoM2`>vlWi_Zg1l8xTx}8`WwC)b1AA~{uau5d92_Ot=1AzMOpuRe& zUk|D?LF&lGp!yTk{|1=_Y7ch*pkATuWXe|J!zlWUuaIrz{08kqMM1%B#>SIv2 z!}{y!b|CXXV*;RgWsrM7bvkHF9MmQN)sL|H6vPIJgVH}pFR1+sQVR+zP`HECgRzGP z_-q=GdYE1q4HJXWAaNKQMuWsa7@ZFiBZOgkU^KdVY~rB$9~8eJKY`kTp!y#a{vbXn z7}Vwh%}s&A9F%4WVURtbx*k-ggJ^sh);<8Ktx8CMpD78816*lhRGfD8(rDPyCv3wU z9slcQb^kZo|Np&hQ`aj&!38fzfD*r(F4j%^f z@!=TO|A*1Ky8mJIKd6iVl^4iZOIh`Qx-rB5iGB?KLG?4d?nkS?>unkS*H|$8uSLd| z5V0C_hX1wJ4F6kP8UD9{+5%{LVP=BNZ}(vM-|fZlUt63VrT-6e6E-&zlEbG5SuZ|y z$a0|a7}S?WE{{QVBdD*BECx~sn$st?-iN8{KspNuG=2}N2SIf|41?-uP#pmh2Vn;z z$l1Zjc7xcUxd~9ci|$sC94-t>Pq^ejeRdfW}2YbtR~d1GyK}W&pJZK;j^OgJ_W7k?U9x8-zjiFglG(3?vT2 z`1F9(z~s@{=zL^#AUO~QiGeW4%^?4R`~+&7fx-*a)&ucL!JzO3wNXLo8Z+BKl|45(cP z@+&C*355|hdC>e6s0{#0*MugW`jjv@oiMdUeuhSkf;n zja>r&8?65D-)Q@P!gcrNfB%j4{{L^h9|u10|G&|m|B&_psGpB(9AV?1|3*9i|JPss z;=h@l8~OczXnl`T|Lf?0`~RTw0hEu?v9dVN|5_)=ygYK94`a8uF#PXuXZgRVKJ5Rr z_KN@gH5vaW)@Q--r23ryQyX*t&udEhKR3(lf2#}ge^7e?rXQUK)&HRWzn2#F`XAYS zxZDgA2hku5(}T=L7K4eyXqX%}8q^;JwW(m`9f$^<-3zMUL1iY055u6o5=fj>4B9V% zT;_xNxS;wBx!y-+gX#{D+hO)1)1WbA(78gOGk-yKFK8?trXEzUBC92Z4Vvo*)#K!p zJ)rf1Ah&?V5kPYUpn4tD*Ck{>$i1NP5YSu&C_F&*Kd7#R=>vrsh!3j&LG2|_T?(tC zL4Jm@K{SYuj6q@`3=)IUFgA>jOoQ0iFtQ$yJctj&AU-1&es$Pr zSd$;t`rdK>4L1DzZ@2|iZ{r#F-wf*W|NgHx>*{~K$tVBoO+AB(r=0$;H}m{|gLUu! z8}0i4-w>=Gw|Pce|Nl2w_wB!dS1k4Ff9MzhsQ(WtA3%8*9ji+4{jYJvUH>;bG5ntv zF8Y6BQ{jITJHP+BM%Mog&FudhnArU{Ftz({XlnQ0%*y3|KuFC02`v@>XQ%1?Z*o9d zH-I)50I&ZwA@x7Hdyx6aZboN=_#li;J+e5A4Wp6OBeOyBpt2M+FAXc}Ky+SsIDCB{ zsJsM;!7!+QL~7j+Q(u*s2p>xT^#eh5WEgb6J~|Dm>p=ZpTy-d@jsexxAPl+#2sBp# zs(V4@07ze$vorkM0hrqf(V%q)pgJ7Xrw5rs4hD@)z}y5f2jma*wiPaSfcnRvu?Wz5 ze^5OMQU_v##>+u%1W-Q|)E0o%x1cZpVRSx741_`AAR2`6u|aak7+F2CIE)RFhhbzf z7#l=`VHt&!`uaGdx7|)nEX0sH0%a%*cp1p{5M$t{lDQ>0`>on|NjkEy!fx;8u?#Q&-}lV zspEeoQ>Xt*W>9Qm|6kG6@xNMV(SQAg_rU#o$UFg#HUOypU;q8TfoBZK^*{K|U-Z5| zsP2biQ2mcw*CDe(^?$Vk?)o28m(NSp{$H7&{-0Y=`ad6^$bWtT@&EjSQvdmdr2q5s ziT&pn5c|)`Bl_RYE#&`#=9K?E-kkqI;|Az`e-Iy5|9fh3!q@-7+yg4ZKx_~V!XP#b z6XL_vfoPCg5C*Yf7@ZFj2hkuoP#+w`hSfEo@(wh=538?1G^jiTiNi3c90iG!gQu33 z!s~yKd7wHP)Xze%`@wu?XYg4;pf&>AxZLVVCz2dJ(D^?N~U48ZFF zpkw=>Iu?Xsbu5Sm@j)2G24N5zgh6a%3=@OVxa5%Kk=e-VL2Q^Dj7Ap&_4#4#Oi-MH z!UH+o5ef&GJZN4XmTp057#{|u4N&?8jpu{b^wlIL{s*;R3AF)0^*^W$46_ro?husL zsF5Z{%^1A(;7E-dL(gb%Kb%ng4;uH^n{np9yoC6F87_wZviuzXWw{vs%WyJ4_`IzD zWqDct%d#>2R}0GdZ@BpzWDfzZIRH@ozwXeSq5U0gF*Vy^H;0)8TGI}y3&8a~ws8PwXYd&jAa}y_Ak(0_8Z$FagXBSV6UbgzeS~Z#hz(K$8p8*fLk$dS2Y}oF!l1ewl)gds z5Q{y(kQg>K zATdyV58C?&@-ryTKygLvxClrO41?Nzp!t7L8V03pd>9l~;QBu`^*?AIOMZCxf6)GZ zkQhD;O5JsY-s>g|ANNh3D*Dn{{Po*-}+x(QsTdyjLd&| zdBy+ovU30BW##|N$;tnhlac)|uc-82PC^8%MtAx}$UFcI>VIt|B}n}b?eD|S07R?* zLFEIetN>vcn^6D1)tTY{qB6JtpVIT+fY|65=0=z}G9Q_ZE)SA}VVE2~8Z?HA zUJsQ-N2ApJpgJB@7Q)J25Dh9nLE_|Mh>G0e~>5z6D`W-2|fXVQgw(VlWzAKQ?h}V%YS- z)WK*_{SR8>0P-VfJO(r_gDp-$^7t@l-UybiVd)(g4XXb^eSJ_G2A%f+N)w>=EC_?d zakT+JX&f|OfZRR_c0%2wM9p+DYSw6*U?9@~QT6}kzud||C)Kz{;Rk|{FjrK{x1(|3y2E-*Xi6(v-)36UjDzarsjW)c>tvPA5<hB<^eiW5NR#|y&eYfLG>>P!`L7igkfUHY?v52jjRU5M#dnu zFboq1@j+~48ZVI70FCaCzFwFn3^bHCNTo_c}gX($Enf{>uJSaVs z$HfsG0|3nzfabZ7-3Q7q)Jy}TW{uYQgCz|RRsV1K2d>N2Vr%}(iSYlI6BqrjZ0+;k z_|X6V#>fBvH#znHzyAE&{}og<|I15Df!hc=9s9s~aGoVV!T7(ry!?M1W##`?dU{yL z0bt|*u(APEUcfNE`oGzQ;eW3;$Ny>7G5?Ls?EZ7I^Zd7W^7_AJYRUhFDMtV2CF%d) z(3S8%E+*zb7bo9;1vR7p6Kc}`PYn^lxd#9-{?COm{||E$$ekcII*lv_ViUqJ{dm>c z+5Jba^FV9!K=m^^2F(W`m&Krd5xN>u`Ji$cW+teNMX$q=>vI?zRG)z6@L~EuG`9L5 zrXECt+5#X9VuS1e^_f9?^g#Iz)(!ym^FeI{ka@@$R9AuOXpmZ3Vo+NE)CK^x1wd^M z(6|h;J8-c<^ENO)f!YtC@F9d@^)XBxIv*wuqha#sG)Nwo7)%_b283aJP}qaq3-S-B zE(Oh}gXZx;d{Qw;KPY{J(mFm2YWIQae^CD)lx{(1J%HjA#0QN5fZDRyFh~y6W&pJz zVQvGB)6g;VH)Y!~X)jLjSF;9sbYgY5qT}v*Q1Zj>`X~1v&p!RW$yy zaR~emi%I>zyeaB`hbt5KEFe&SAG`(tX&eAi|6{KIhm~J2H-h*uHZqMa4&%dUWVN{1 zV6}F3|3Pc0VdWZ#2KC40)z)H+{e$ZD35A6yYxY3>D3CZM7}UQ4*$cv;{v4?P52|lL z^)xOFQUe<22kC)f&^$1xPQj%ISsc_30FMhm=MzBd(O~%v)CNG`vk$6=LE-27uMKu(}t<2hku55+@eJ)Wc|8`jF*uv0-im z`2*CB1NHwwb2lJ9sTkB|1jRilJ>$cmb|$R;2i4~w`#|m9ium~dpfrfB?uUti=BYq! z6qwsUYXCv!f#PNqkJi=0DGd-+|8M{Q-(dCY|4Qbrkp91<*nhS7y8j02KK|EV`s%;_ zvd90`6B_=@Ns9lMdba|LKJ{nmMG8?1^oe%1Bf$9xd zxdx)U^YXCP{h&G?bZ!r*%mk?e;ev<=oN7VpiNT9r$-!ulIEW3RK^Vj)1taT$v5{$HHpp!t z4011M+y+#ag5squqc18*awY_Xo8JC>Z}Y(bNRj|5)b$aGd`OstZ9FrT&N3 z(Xjd&RR7OT(fD7Go%vrxRO-K?ywZOm5y}7D0@DAv_@)2z@Cg4G6Os6@sI2*aVsGdF zHI?rF>#Z68gXRrjW}wrE`XBrJKgdm>x|$G%sRPk4jIIYHjx2`E2i2FzbMK&X4OAxL zJI@z1E&y5^08$IWg^`gI*Z-h40%-glWF82E_E&@Yv4rYvkQ(H61IRz*)c;_6p!*9! zc^FjxgX$xYTVNPe-h=945C*9k2n^f90BWPa+=Yt)QdK^@Lfy7}n zh>Z^;tAnvYGzb&Y2T}vVFm)g|f!qcPS5O*^_x1+gbqHz?;PMkLanL$QV(Nd`_&=zx z5327$V^=UULGxXpaei2Rk4}Ty3!ps%F!dlBlx_wh9gNyJ+SZ_D8X&g**X=*?UrtK$ zzr3vMe|b5%|8jyn|7AgY{)Bn|%S(!b=L8hgwEk;XFZ*w}<17BXe-zgL<~lmy`X4j~ z0Aj=E0Fc)IA=iV*Y+Us}XzgFKBg6lNg|`1=ViW%J@(TW!mskED9U1k%rZoS5abC`U zM@QHH($aGO#l+?QCnqNUUsUYyzuBJQKd6oe-6M!z_k;K#Ineokp#A^I?ts z&PL{gXYLG>{%3~C#I>RFf`P+f^jEh*y2_W^*+ z2Gw043@T%>VUQfC{zo3W0L|x;UH`kd{0EH#fX2;1bv&rA59(Kf+ycX(HFh9zTIM}M zW`o)QAU7bl!9eaq4hIk)hCy{JsNMzDx1hQg#0JsWFtQws4WmKok=Yqc z$$z7RptFQP=LLc=jxhiV`v0K4|C)-5;5LAvx;n-_0MPxv$n_wM4XP(`)&I?|4FAD< z|EdH3yL$Nj=i=o3uc>SLe@0v3|CJT4|Cd+#{_m~J`LCg6_@9qY^uMc{_x}Y|0sp() znEyAqF#KUmshLG2DuKMrOt$ldtra?qG9sQ!nk2hkvRfy6;H41?MUFgCF?sGkTL z>jl+EAah|DROf=k2Rg5V+FYP^3d~&~8g!mPNleUtP<;yGBV$k-05qNf(u1uo2E`#r z97coKgfKp}*yON@f#zF4=l6itE`rtrfW`no=@8lN#IQlgX(qA zm_Eo}kR6~kFCach9wdj3L3%(KG_C?t55k}|BA|5(1Dzg5?H_G_P%{k>tp7oK|91ZS zub$NWUrt2eKd7!(vT*sY+kfc4-h^ZSwQJV?SI{vA?+FC$4OI0_1>YeII^Q33W)Lmb z|AYGbps{~Y{~xp#5X1+y31Aph|AXpF5C+vPFbv|O)c;8H|Df~xI^3B5&u>To&-H`) z|F%xv{}(q#{qJ*Q{y*85^Z(Me#Q)}2PXBrNME`qu`Tt*79sGZi7t8;6eTM&u#ti?v zJTcD!CRG0;yA8&M(IEGN*f1KzM#k90k;Oo4Q2!k?#ttgOU>H>1;i{X_#XKOau!s-iZ+z@O_zpi%Utcw(0DSI`oT$KmWryJZ#=HLi*WdKxzvjfV|Bbf% z!+xJI1^s_eeGgj$2-*t>tM|b)^!^`M8G%mYtpA-E{`dKC{GVK#`d>~#{XZ|C@c+P| z@c)Y|ef~FCG5qgzVfa70I`qGVwbOrIe$oHFe!>5jSNr|%bz}Um%E$2EO_lL~uQ%qM z!pQYMsH{SF4?aFI>OpEi7-SAI4Q6B6>kq0&=i^xKkF6dDrCnGV2pS^?_1&?lBUP+3 zCkJJ30jMtzs^>B4Xcw3NAURNd4|4~|uOL25EiQd9dAzilR{oCwSg5Dluc zKy@!D31-g=!KmG%Z3$|p0fO~E=w6_WpZ_aaxcvv! z?{Z?o|26WaLGJkjoeOaA|9_3F3E*)7IWd9%D&EQejgS8SuhDn-zlv89cz+<)F#rnd zf7lv8&=>&vdBC9c|Df^#ghAy4h=yTY^*`wR-f0nH{~Jm&{&Vw-|L5Qp|DT+g{C{b& z)Bi?WhX4J(Z2xD}ME}>(H~Y`V&iCKbE8ze7dY}Kk5GDf6zLBc6WyV zZP2j=ME#H0|A+1-nA?b@3F(K)gZeM%eOg$(0jfKQ!JzqPSQ!X9i*|Z>IZ^Wlgvo0!tUqMU%zZ~f7Uvbg@+HE_* zYXU%b{2A^3|6e`65qu_)yqM5`^~kdSntT5JcPZ`r9~cq)UuX5F|3+J}i~&$s|C?)T zgXjN2^*{O=08sr8s{>&)tZqfA|B=@JH`+1$pO>clzqP6Uzm9?Ve-j&z|7~>@|K}uY z{co^i_}}Nt_J4ML;(seUxBp^dGXH)3LjEtU3;XY_$^XB#XUczn3#I=p4h;W$JQ@D? zdNKU(gw6#}tNus!2aFA)VSWSgVHi|aq4%#qYnqYk3}V=zeiE$w1JR&+e2CFUNDXNG z8dR@?%miVOTS0XPw)z`XUx54wQU_|!fcV(dkuB!z{2x?bfW`no>(fB?z%VHPg2v!M z^gv?J*fl7OVD18i2l`yh#Ny)rp!yZ221J9}fS`H|G>-!cUr=3)4P%o-7sJMfiGgSk z2AK__VHm^*VNm#j;s-Q-4{E=G>VMF>6p$N9#h^F>>4l|rY&6I|(3n4{-iP(?L3~hH z!0ZFHt3YR5g68^RYG5>IYycz=QwyR&XJ>%UX&T6MFlzT`n}V8Y0B`-j@elY6Ki$3~ z|7C@E{>usRg6ny`8JGVX?)d-T5Y+$Q_5Z(GVAg+GQKA2m0zCf}gA4zQ_gwiudHU@C z)8{SzFFW=6f4x2b{~PRpoD~Eg3!tF>2aWTC<^Z&yYXEgsR3PU7Ag%ugl?k9S5{6-X zl=>gqM+dFf1J&^}l6C$spH%n1uO|Edw6@Cs%e%7vcl+`F2ki@NcVqZJr_BF1Ww}8q_kbW5M$b zJ5W6dvImAic7f^vYUVj|%mTRqRA<861)_Vg#6=t0nav<|pnf-~{|)jRs9pxu#~=)1 zgD{AV4a4MMG(I&TIgmOShVel(2!qBTK=BJolc4wl`32-Iko!o*p!Fi4b`2=4ZvU^SX#l?WSJ^S>zroTM{|&c6>;K*V|Eooof!75{i3GY}l=!U-@;^)$vM&%@{SR{s zh(^XBcfv489K?pvAT|ht_#g~o+0eTNLHb}A)aC$TklDFmVgEtv)IfHDFsRQ5ngbXNc^Bjk zP~8V|7YKvKB|ve6j?wq7fz*Q54}j`iP}qU$Xi%LDqCptO2GKAK69@6Jv600jn9bs#n<-3^AcFzSZU_5?N30N(l^v`>H2-~WbdKL0mZ@#eq5 zir4=Q*L;H1;hRBw`~Ln1jsI&lZ~L#MrSm^FGUC5~aOnTeuAcvYe*OA??)>@x5jhqA z)0-y#x9|-4uTi}Qyf=X2`d>!}+}}6W(16$fCR$qXeSp~Ne^6ZsDid(k|Dbbwo1Gc{ z*H}PswK>E8IvYqI9yC4xs>eHA82-CUG5j~s)&IX?)0Y1S4;}jd`O6nj_5c6Y-MjzS z@7Vv}#x>}_f&kVX@s(V2D_Cftj7zVWwKx|O`4x&M3p<|FZsEq)smq7ItsQm=94@86P1FeGq z**TCHGzI|jAIME03|c=itEviX+=A{p0I5O7pfCW91AxK_y?%y?foK>;Rs$0Q(I9aU z4ZBR+2gMO+ogyf$g4!aW_7}4Ih-HKJ5WvQ`V0i%>4GIHn^*X4pkG>}c zbU!dmEvT&k8!JF}6KLJQK&F9FyGQGNYNi3g_5UAmU*BlgfACxYXkQ<^4-al1{QIxJ z>;HeT_Tt-C>WKMaG` z_JPg_@K6`{KWol>6mS0g_4|KYNAG`E9nt?a4h;YMydir5k>~$G_Jc6UO)wh7M#dm< z5Jncm#)hduq3!IzcMQS$%Am3fRBusIKZE8BkjqL?T}z31=z2l@ZIC-*7*rR7>IGOE z0K^8>*C2UNzYo+02Gz%)x)9{Itl;4PFbom{_2oe0_#ic)v0YHw0<{xB^$o}zP@fYN zo}hDRLH&GCTM1+?$b4KFwAKt{HVlKz2AMk$7~}>}9~$OXP+f%{rXW5j-avT?rVd1d z(gi3CK=m-T`WYk!s;@y9#74#-F%U);LuSL|U^Gk)#s{^lKxqdwE(HpEP<(*m8ssig zF~}dFI0Ru(`p1Pq?Hy2E530*y{dy1$s^>v>0wdcCau-M~Y`g%(2I)gj8=$p^0}=0| zc8=Ejv`7O))&Jmn9>+O8pfv*9|NmE8`ToCsLdpLJH?N}9i~DwL`EMFi{9k49lmEuM z|Nl4K2sMY2@qg$%KWMyPLqP#N1^_w_2*d|rQ2h@o8$cLTHXzf4>VH^WkBtVM5j4S% z;eUoM<9}BhoBxlWy@LC7$+Fe|O{Ka2S6DIr@AroE`$1+P*Z&}QfH2HWAT}`=T|F*7 zs80kc$6)0eNF6DA{Xq2wHVo<)!^{NLpV-upD+XG(4l^4>gZkm1avQn+2h|gx_8@5N z8&v0m>UGdqGN>*Cxd$|F0HQ&Ceb6{JNH3_~0b!6?p#D6l&OtBBLG}@gL1PmjcYyLB zsEq-thXzCl+KT`RM^L*2)D{56AIMGQU{HL5+GU_LjthhG186P;G?ovl_hA^c-Vf9U0O?1z z8#Fco5(m}&pmr6AjlM?#bPfVMEZf6zGq*f~I;F#ymU0BBtR==>jC^(spJ59;Sb z`~9H08UtgI2leaYH5mTqWTgN9`~Uy{H}5}z{kv%Kvj6V#4F4y9>V6MM-ydWiqW*`R z{|73oKyE{(VQi2%u^3$sc--I85@kNUDLozQ*f6g80+%>wj2%`^g33eK+5lYYNfihA z1!g{|ZUfchpgJ6eLG=Wv-U6us3Y@n1RlZ0J#Cw1_1T{LHa>_axkb30ZIcPzu?25aeY{y9#;Ru>UNMEy4|2N z0zmBrkQ$Ia9V( z@18#V|KrQ2{~;B9{}opK_-_naF9>QYz%Z5Sf8;fQAU3G}NACZl*QY4;KfbyjiyUkX zK#0EJ|4lm%{NJ|wz<);v`~M4!A7`R`-Kw5FZpaAT^-5 z2vGeG>IZ}BTu|Ku>gR#_WgvNaVo?7P)Q<+$#~`W_oQQ9xk`s*6E12qUwx@j+rRjII_#9D4RY@>zeNxB~UH zL3X33S(y6>(I7v8#&tk>2OkEdEl@oUtNW2@Q2!p(Eb>xb5<>tc82kp%QjkAO5Cm05eaf8+Yfcyl)pl|`@30OM- zbRIsaP6XAzpt=_{whU4anhOB+-#{3~2Cd%$)f=GkW6)eKsJ#KIOF;7rpt=Y|gT@*_ zbrcAL+B=}I1-T1kH#Q9F6N2IoR9ArPhq(jfMrvb_`5?c7`~-6gs1Cz7&(n%!PatR= z9w=Nv?H7={G3sp(kN+Ssg7rHdbuhi4x*inXF!zGO7}SRbVURmu;-t`^cmehQL1_UL z_P8)8Er7=Rk?VaJ8&to8!T{M`(Aq-K9zoC?0B9Tl6qm^IAU4P^)Q;Ct^G56Wfk*?? zsQ(Rj|NpO5H0yt1bin_R^8WuylTZIw>^bs3t+4Wcc5eQE)%g$p8}5Xz`=dtvk2L=e zy8jO}_7B5m+S>oo`~RS_0aQ+aFsS|qt7`ab9eocVHO~M5wHfBt)cgn4#h|hkgh6xpp!yqD|AT1cF#wPn zP@M}B2jv-1pBPjxf-r~;Dzjm215jOwj6veqFsPph(g(sIc@Q5&gD{K@T2Bs&1CZSy zH(A297Lfa>jX~}K`4!oILUTQp2?_8v7P3CjTnnfk2G#Y*7*=<~XkU(q=RR4qA zfo>;gz6&G=TK@++GYefF)E*qY3uv^yrgpv_2=gee|3UTn&j0^4qDuc8#@GB;nttuS z-md>(tlF~czoA$3f8D94Am;_c*8YL?fX4sV|M+j<6-(Coe^5UkwALRq2B4*+1YQFO zY6F1g01`t(!Dpd@$_8|-BF^)_))CT|2krSosps+3|Ddsd(EUC^I*k9FlorrOnF+H4R5nt>Tx2sqXYawx2l*3y3; z-~T@d!}NgaR1h0ZgX9AO;OP_8Hh|T=AoqaA31DtUr$K#kQ2h_m12U7E800?CJ_zJ? zAEAAjpm872*ax~hL49#>UG3=!?(f6ucCZ+u^|6i@^@PGXU_x>Ag|A$!n4>Ett|NjP{`rkVaUcQ3-4;qgJl}Y$8 ztnLTVp!#1A=^P-?nSikVKdejul@TzkD8~E022}rhG5jZ3|0A^rK>Gqga{xs)j9`7B zb$}rKATdzepvRj5Y;Ggy9$;jBZVdl>ycqwxX`r6}4{{sGO~^Dd8zhI0k>x>b(D)~4 zj2gLof}Ph3+TVm+zf!^m-T4Dsy9KffWCtbYVbcpbqX1+!2!rebm9L;W78!&3s>tKs zAhj?IDzicTd|K4EpmYgqCxGf+kR70Q0EhcR>VM?1 zYfxJN6i?W~7A6Kd4+q(OFg7U9f$C_GUqJOZE)1*Fk!fT$NFR(3V#6@VY*5<+6nCID z94K#t;ulo^gWL^s2dOkD4}jVLAQ~Soii-LVYO|u({~$hSZUEGNM7J9hR-iEz(0Ny& z`W{^#l)uSN}uz0D$U$(E0zMzCR4d1_i#3E4f!?gOzw7?(Uu9Ha)+mjca0B9}{`wacJ&%OJ6m=xB_&e^@<0Dh=v8g6cAm zxgZRx_eeE^kouXGl_>YwgX%U=UlF)IKG|mrd3xL`t=;%m-mmy$>3@2gM_({s*OLm>Wo?L30Vj)c>Hi60Z6m zBo4|e=yrqB5@>xOXp8{c7zOBDNNUIFsClF90D7kZTQi&gdJAs1H2)8(|B=rD0<{4m z{rvue#{EF`B&d7=VHn%S+~&WF9K-*q0f;;LK=m|H7}OqcN1O?Wt_L(0fL#BB+6xnX z82*>oF#MMkf?gyW3c~`{0pn^L4L=^ z#w7+*52igm|AYGdAPfpOP`e1!o&?1Uu6P8wi4X>j9f0xyC{N(Sp!s}IT@LE+gWAU+ z3}S;YXq_KO4m6*SZXamg05k>wG8`AZxL4AJ^hPDHc?*atX|Dj%9|3Q63P`(9W zP~8c`p~>Pk>q1uEMJ)di%;7e+?H=Se|zGbwtBRSPO_L2d_OP@fA_ zcYyqZj$v&8&>TBREjk9tgX$U(jSs`j1*w6t$)Q2|LH2>#4WN1y**%~-ju!PlsEh!$ z^+4m$F#ACL>jianc*lKaS5?8|5vC7DgTfQ!UXVY)7}^d%uj4`S0u#eVW0ME9l|bSk z3`)D8Gz78>G$#PFpHv#u=0(oupge;OgTe(=&x7Xkk?Vd?9syyHI7l8e?}Y3IP`(50 zodAUevN(thS`P#AJ18DT@o1erRMP;c4QpoY{$GFbga5{$F#ym${VmWwJE-4IO$;)3 z+yDPY`~LsepLhMgg@wa^P}>|i>_Bsop!q?37&Pw>#?bm7v<^^1ULL*%(9gvMzSa&_ z9)R*P2nRSg{&#V7`>!v`{J+tO;eVG0WW7G99Y8G%TK@;aAoD^r8UCv&D*cb~3&5!V zLGB?L+u8jGommSigJ2lcpM}l+g2qHa;-G#DvGp!7>Og%YkhvfX+RF_ZYam7+DQYGZ z7NXQmpgI-Qr^Z$%gX&yRUlP>c2e}CugZh^sy`XX*)X&6!E2y3a)%oZcG!Fop zKSOr|$bFzP30)k-2gNzH;&RlS(Kf_DrGXH8`~SKDss9aDKKXC7^XGrVt^XkF0YUXO zweZ&e5Oa6@_^-eG(SKd4PV_4k^|TMp#DD+2Ce%8_5DHE*V*|$ z$Qh99`PPj8^U$#k7BO@+Soj4tjQ=yt z8UH&dvHTa{=J_A$k42maESmMLe%F0mM zSs;Bd3~D=p=0QMxUT}R4ngfB31AxLBBnG2FY#2rt!^Q`-D?n{kP(K^Ab_EnRp!kK^ zO)3oEdjUb`NRZ+NP+OZ8aXM<|Xj_2Z zX~5sc=D)66_jScwBGf=$%Dic8E13LD1aQbheZ}MM6fbYKqAIE=5 zeoiW4j{l-Ooc}e|H2=F=*`U<@Aa}sr1foG0BnHADHVA{*AdJoiwP!$cp2%essN8~; z_5Dcw=MD<){DYZ?OoR3SBHIf(TOL`ST5Ql=J}`SgU5ACs1Aa)dtiD& zVFjvNVCsmWL1q!74wo8Gdjokq9^@9#{68)0f6y8LkUv3ofiP&@Ix%qpn&$_p$A&?E z0M*l=aD}%6JUrlM1%u)QEC&^X@j)~Q!{k6Th!3(0_)~|rt0HFFGB#$0< z*xZCo4AfQunFY%$p!|XlgW?CYpAWRA4^;Pq#sWb7{+7(l|G3uqW3v|~1{!|=t^EL% zTcdci&K~M%Akx+Kzpb(9e*;_h|Auy+{|#+DsE6%5{~OqP{I@kU{2%4&inZkXbMq z)Ym~?^9QP1kjr{doewLUI&yOG&I2RsBZfV@s_H+eK8BeO>Pr!$k5o0F{wvH55Dn^6 zgUW4ObuLI8REMCCyMxMRQ2hgvCl*sw|2sQ_*SLY|IFP$x7}S>r_0d6Tn-&<>wt(3O zs=J8^bI|+{Ob<316s91zgTfFO2C0EzkQ!t*h!4UbF;M*v!l1MZs0s`o){CQx62kbUU#pmR4sZ5Ud_ z>!_Kd?TL|?20(oQSUr!6hS&d~`F|aq|DgUq=-fZh*gpuH=;(m!Do`H~R5pMxsB8ey zFpSP8Bo33uM#Id4(b&`wBZjOWnGMnlDxW-%?)L%J#j~rcQR;ZmIwn{d1sV$=rXCt{Zymlm9MnbtmFqA)FdEe7q^M3u8}rBK29O-6 zu0swZkUK#29B51fR!>tqPlNUrg2n(qbs@+;5C+Wy5ejoqdk*9_ka}zwBnPUWk^BFk z`WzX9{0rkFvq54oKA86O{14h&fLzam+zT2D0AbL6Kx}RxBnB!gVEF_@6N5o{33N6_ zO=9AIP}uocTjQJyA!I*D9+bwY9jBw_jn@4mH4T93aa{F2OdO^D*VP5r|Hx|qL3aV$ z85!XmcL$XLq+(Fn0@DLy!)TZ|h{h%c632#-)grTDYGGoaem{D@5_E0}dKnMulY`16 zP}w@QtPG`XfUcHQK4@+pG~Wp_AA~`DLsHEkRz30_HPHG7Q2h?7UvXj3_yDMl0CE>H z2B`;$gJ^1EP@4i|C&*ne465hQ;|S&!&^km=8vt}}04?%0XnX-QpANGRc}@sln1j~D z!SrCGL4E|c0ig5$pn4q_2KgT*2V#RTj1OuTXaP0*Qm-7$#0C4N8-s z`~u1=_%KKfC?A353qX7QKx|U&!loV+=d_5^Q8P!|03$68fXXmXxd5x@anbPlAGH1t zGzOrn`yX`gAM#zm##&mCJpgug@OA*Gd;paLxG*7kWPLETFdA777aN;ekQfMK(*qL+ z)m@!5K=kQz`w3p8JkO${YtAa{Vw2Vr8znaQya)PDup0mGm=7GyUr z462VoVFFVRqe1)G2Kay8Z{P{|4Cs8lwQ!D=>Sp(V+Se zR8P|)PlL<_xeaD7=sX)@!X5eEC751h8dNWX>S)jyJ-jZ*(G~#t4_OU5A5_mHr(uvi zpmqUh{2a6v0K_K;gZ2P|!XA`YaAA-<2!s0i=x!j#PGmixc_&)L>8P2b_5Vmq1E6#K zaMk(9;_&((TK9wc{-F9Fq#rc?55l0k06nd(!RG+M>Q+$s0Ar)mFgX~FE)U|v%z$A~T@PY| zXmDNc=Jp@N2leAYbv>xh391`Gc94QW@dFyGr*^&unF;FC!rTHnZvZ_^vGGA;I-oFu z>BB~Y{0nLW!0L8Ty$-@KJ~|DO17UP=Q2h@|Gst#;;taI^7!;n!;-s)a^*N|+2jv-b z49i0xaZoz})GkIh8zcsj2i4=~a>VdKX$};x)Q;0p^G56ck(35N`507(BiHk|*r56z z-Ufh<0f5#3m}qIi_W*#}0HC#oKDM@yaR6Ie_&5NpTtKElWdMv1VuLV@PYarm`CxfF zyZ@j%2e}*qmG#)la*!D4j1`btP`FLSa`!Jt4J8;<&VkH_VQSAYAiE7Th7Gd^G^Y-# zE3nnuFfoukXiWr64~PbxErVYFgX(b@2G#G_*dQ@bxP$6OP~8NoJJ8JrnNKPP)qkMA zI%wXRnt2DcObm>i5oRs&*#>VHt0hPe?$ zgTf!wZUMD1KzwqrtC`t6ho5wyk_RtACUpcxevIQ#XWdJCi$q=y#c z|DZW+kohnS8b8KYw@@MnYQKQSF<^Fq>L8H+VD&vZ4Ql(K_sK!y2B7*Mqz{Hcbq)x_ z_@J|aK;aCkCqU;Kfy}^GU%=c!DGh2vf$D2&=5Nqhz@T;o$n7Baf&2p+Lm?*oLFe0n z^nfr(KPbFFY-9{-n}gaE_}T!VIv!iy4-*5`|Dg4_$mW9DSfKhJ6i>+Fq_9D8gV43fSb9l01( zmw@__AoD@%*g-U?E(6ssAaQKwg8I6kzB;w@F=#&qsJ;W)3Az&!b{-_5cmSybjjw?8 zfiP$T^?z6K;xRoWe_MWfbQYLRi1<9;z4GD^nmLBNi>-M2c4Y`G9QLPXQ|+F z4>iO=eKMF`pfPw*9S^JT(P@wzX#FTmJ%|R)>4NGu^mYMAjt~ZgAxJOCOi;ZFs{cTC zfcn9pItzqBaRQoa2Vqd39z=ucb`S>j$3f%5==OlpI;ftZ_8b7nK2UuMvk!E}AF*)& zY9qn)<%fs=??XCA3MLL3Qv&%NVJ^g=2ZZ1yTl#%ftwEqF5 zPeoSte`R7KPPO>V!6%m&83}h2$R5zV3O@Ce%2gyLqS$9|Yz#g>%ErLpKRO1b4Ny3N z+(jx@mzVz!(hEu}Aag+J6Ldxm$bX>qBj^|;j*dZX4VV~=9pK>bA2haw?jCD>{r?~{ zy=-j$gVa(3``O$72km)<*_9s|Np$?D1_r{z*<42ltS`*f6)pxd6O?yc%+3EhnwXG` zL1Pl2HWkb)5N)8Y{@=~Q0$c`w_~c^HI3Fl4gYq;i55UZVl{4shJlM(Ue|m86|0I9^ z|0#iiV0NOP-+yhiyazJ}9}ThtR=$kVy8lPRU^EOc(twW6e^A*1%A=Ngdf+?{Dr?EX zV6&0?{-FLp6obkrP~8v0nhFYtv&(r? z>n>95Kvv(KpAWw42o@Hg`U6ytfckUD7?g%U;-LB)rWTn7)$gD%0fi5!9sq?kNDr)@ z2ld}Tbv0*fTgT!DM#s|?L3=)UYAiF?yDad>f28{1<9i_UV0u9Jfq~qQ(oX>8Jtzj*n-d=XKQ}!5KWH5wC@sMBl1hW@2enN>X=)T3 zQ&hH(hTmxT5lRCnc^XuIg7P$ohGOKh1XQPj>IJYKGI7_Zp!yh82gBS5>f3_a z9oW=TOAOTZf!POYdw|MmaR1ZT7(AZ?YX^YVc!1b2wICYgR#-nCRL6trN?5&%udWBF z17T48ii|;GFbon0u|YI4Miv9jGlS$nZb8SOx-!Vg30(h!)POLuUTkcT7zl&Zf-r~; z!XP$i4jMF90kbE;*O%z{2gNIBtqDvoXdMYC{y=LAU}7*D)P4emDY*W}SMQ_Af$D#d zpOMozsNMwC!yxmJ(=N;|QfN?GgsBJh$3giXC4YnR9ufwn6;K-qQz{thO$9*J#v1Ajq8H-fYgH2;leO^bQ+g> zm^e&5j86;=(t~t%F><+xT;_nvWl&j62-l{hfcyS1y`{0SM3?`B%tn?6mDeykKy+Pd zDoyNx*$HZ2Acqa8{|O2cQ2C9H(fgO6vK`bf4s>+<52_zQG_2kSw*&0$QR-h%JqoK& zL2MX?iNR=)IEW3xAT|ht*f0#@!!XExP?`jV6*2~`0|2=XrVd1->qq8;*f2H7G>i@M z4~Px31GE+q7KX&op!s>2UeH|{pml(tu^rI52ADXE28BDQ&IY#uK>dBRx*k-|gXPe~ zLH&Htm>kR;P@V5#W%VD_Zb8noFnMxl(A*iQ{sx6PJkLY(8n_PtIx9?HA3T2ql84y= zatkOvvO`0`XFb5giJ?L16J+0L*-m-cJ{pFjVMr(qfbuOEgYq?6T?@*GpguD!--7xD zATeC(!Qvn@u$ToaFW@vt9SCDn3loRQq0=yV7!8t#*8lj*K2VuXO!*Dk8vye&h%StZ zqDj3BDkDMW!!WJd8OVM{ZgYU;dK`7!4Zp0m*^Xfy@NaFpSJc zXM^}4jI0*K2aPp=+BPurL3SgDAt82od^}3~F)tzlo_=Dyyinvo{asL94#MDi9@GZF zhSBSPE35yYdKTtJ&^R5)3{d?Kn!|^QlS_l#Wv;CaKMx$7Z=v}N#0G^qXr2I+MnH8o z%pOqR9n}8G2@CrVs{cXb0-&`xFnMBV(7GK^8XU!=_19<`pluq!S7(FjdgQzdDq}!- zAFKyd7J%ws5QedF(a37>u|aY$3^EHDgT!HcWHv|)+7Cf?E4FebEhq?H4&y7sL36mE z@(*T4L1ZLR`tX^FO%7C_!t4Oip#9s})KOEcI3@;O|A6WbP(L4($B^rP5F0cH0P0tR z+y%m*ITcVn2&!j6Z2?gI2&yZQF?v0U&PP^@jSW%{69=(j^)SdT5F1qYgVv{m(jmxA zFbqnQAa{Y)K-(oC{pc8EHb@LagD{K@qCprY1~LaU#sTYJgZkj4!~v+U4{BS%+y~n8 z0J@72WJXthK6srXOb$eY>QYd<3}g=qhSm8X8ibMB1)wnl(4HKSeh>!L!63b$b(5ez zJ4lQY44Ur;xeK1xLHP`Xp?M9|HbAx?)HeXl!GPwNKy^QeP7ezD4`PG%B$DD5eG<+u z0j1qhOxrqQG<=6|_=58{s6K^ZXdVZZsUSH}K1a^Gpn3o#4wFY=!}Ow?h0F)3fnj8E z7#p1isl_1%DxW}o5Kub>W zg2uP0Z3nt}p!sP~c!BH#VbD5vP+bqosMHP3!`;)!F%Xn`4&{>fXf9Wc?>f^=3$cuiGeUo9vd4Z2f`pZ5QecqGzde*KyCo_ z_l?xm!RzQjbrZ~u*l1Ay3f2e1S8jvkKx+g+{)Cx>Jbnw3rxr$^4+f37Q_F08=77p& znBPF-x1h2clo#Q3KXg4HsJ;cA`wUZyOoPH56sDkc0HA(3sLlk{ogfTigD{MZjRuK< zFs!Zz)1bb)o!x&>e;HO6g4_Ud8)(lwhz5lba@!2#CXgJc{s)-{vKNGr*~omDIEY5a zFm)jRfZAf9umPD53WKh^Jfhl;uy6;h`v>WTVNjUEsOdKD9^+CL7=<}YU_iDPd-V_BDaZY-;1OxHy#lKWN?-WH+_#K{pR%2Xfs3>i>fr!|<3aZcT?f;|mLF&Qvy@SJl5F1qAg6b{MxB{pS1MNuwxdl|O zgD{8E#Hawi!^k5T8_*!)MX^Fj3o41>xAP@NCMAU>$> zNAKH$>LF0yAK5Mt8-zjbfzco~2*daw8ibL>kl7$V!TbzLcck|JLGc1Q;}8~Bpfm_N zR|+H!!=QKp`3t57M1#igL1!hRv;jc%9)&HPyf{Bq! zgX&*U9tZgyL?fqDP?&@A2Urf4KS6m^N9R9i-UNLN0F-}V7?kcnY*1SOG%f&Y_u+CQ zC{Kg@G>Qkdju;L9;T!&-G7cXG<#W(JWmp~st&0PR!S#UhJ*W&o#>iqYHjD6M z>L`#Mptu2HuszUu2aq@n!^A;$gWLcbe*)PF!=P~sP@MyE1IRuQ2Dt--k=e+6kT^O9 z$%8OR97Kcae^C7fvIo?j1f>b&@FRu|ic64w7zXu$(e+iJ?G*rxIe_YRP<((fw7y4Y zgW65#Z6VM+1*rZ9jT^x1B$o!YS3vm+l+Quw17;2={6XR%3~CpkW00Fb>ufVaLjJ?* zdQg22!!R)r4XXb^=@aB%nEA*ws0{)ddjX|^Q9OL>pwYM;xVU9zfPnx1nRrAQ7#KAfq{WZkbxmLu^=SBz`ziqgA9_HfdOPL0}}(203!=C0|N`(kpKVT zOfX}V4-N)6F&ZB5pa3&Q!vh=)aAGt(;6VXqjD`m|7~sTE3lH;i3I;1ytXKi_z`gIC zMgRXJd@;%=Ej$9|7|dyCXlOY69|B9)o}JCj&CLx8QxM+wU7!a)2Mr4DGfr8h6f}ZVB~0cz(N8-kA?>%9AG59 z!(+7mr*8dUu%s)h!NI}d%Kz{Gzy1IAzjSMxB{wH0CwhHMZ~j1~FM6lvQTt#q4WUQF z0}>7}ax^?(ApxOB!vhiyFmj}Y$7uae-TL4B*<*=UuU@?Z)%_q`y0y)abF}`4WiN)2 zmcK^*3y*p*V>CR#!2l;l!vh`^V8&>8fP(=}&^kOu>;KXEAD-A47)I;o(e;tY$ze1- zjHZXt^nersw62foZT@KeKU)7ICGXMlezd$tP7b5#VKhCArU#@D7;fdmX#GE0|05;u z(ei$@yhlzBqv>HZJ&dLYq!1Xb|EXJF5?W6`)Z|C!|B*7w=zPLx{W)5HqGX8SR)388 z2PJxkTz(fn$6fvB&!0aqUlc6ipR#Jzs?bqBBm_tgk5x$y4h~+RwSOQCTK_+~{tptC zAab<40EGeqkA?>#EI_Q$@BoDZ0*{6VA}m0x(eMC;0s>PS9^a34W+B)A@4DA@|6jEV z-fAD^lNugA)maA|yuSbc@&Eh(@Bd4;o=zIA|EZT=DNXOA`VnyfVvU9eC=?KQG&~St z0b-4Y2PhN}c({d!_&L5QAt7JBz|EpkJhEYDz;UT~vz@SjDkhMP5jLb|-^xp4}ZXYZ{hg6k6DFH%{h6f}ZVB~0cz(N8-kA?>%9AM;d3lE8N>$<=E z`2(;2CoXwEc@+Z#y#62M6B!;23=4;*y+Z)cSvv zPgHm;WVp)ko#C6wR-fkGtF%mE^>5kM(6u4q;bAcTX#EdMX%L#!^g5~@5^gYZG(2D- z0ij330}>7}ax^?(ApxOB!vhiyFjD;7yU8J6zQFtc1xwC$uVP?;um2n66Bix=KNbEM z{B`&nvXyU&xV}CstiBIjYc`jIgNp&iAFcmkDGx%A=0`|4z{t_?fQ1Bv9t{sjIKar! z@PLH`gdPnKNI1YqQo{qZ{_o2d#Qgt+CF>?LFd!BHj`E2MkAnXj{~!AQ^nb|Kca!r9Xz_5_vFvFG4Th>j!x=YI* zR=9F>QJ6O0@U4_HV*=+W?igaeEm z4G&mIK=I@Wb3)f z_WZ28u=>4ptH|6Ht5(7L|Df^zCM5o7{SQlt5E?x_j`AVl0wYJm0~QhxdNe#B;Q%8? z!vhu)5PCE`AmIQb35Cb^vznZO59#OcCx;>R|Mi!=pZxzn z;{Lyp&i99ghr;iGe+~aP{SV#BKS!07mlIZ>hi)}l+J!W~AG+3L?W)y?{{CqF4@z|i zjGq2R`G~Lqu|~rK6bcAD8XkzS0I^2H0~87fJQ^N|umG`04Ug|fbDO^)o&R6Bq_6uw z()s@*nlHeh0Q3Kq|3ChN#{5IKzMsv>jkwPTG~Umkgc$E1sQx{yJ%Y=AP}%@tQq#w% zdQhk#@Mw4-!UDt^4G&N#An<5-Ai@H~8VwInC?N1)3lH&gud0yO{~63VH+j{6#Qy&g z%THjKz;KA+ipf^~IajYv6$Q=pgX-AQy{1cl{rLyu{s*n^U$tr#e7_&A`WK`Zga=9< zmI4P``Wtl*EM_3|Xm~)v0Y;972P`BY^k{fM!U0B(h6gMpAT+7ras6m-_m>dF`G5R# zdYc(SSHWi;M=D?7hr%Dwh=1tT-fn$WUikjL(6u5y^N}dgd2<;4G&mIKY(@PLE^j2!6j_Jgo`F|sfuke0yZ}b0G{~17M`9j9~*L8C;Gc$qeS`aQWGXm~)v0Y(nD@c4d~yZXx?#QDDg zOLCh3uYyOh~e3#HEX-C?zh*14e*ET4PE-{7wUNb{{8!R4Rn1@s{O+? z{SLSMIO-o*N`=s);Q02Ed5n|1kKI z@NeP&kiF+7tEwW__nT}DT^kl28V;*(!Rz~1t=k9V4^)4iRQt(IAEc(IQT4EphR~zo z0SN~fIT{|Ykbuym;Q)hF-M-t?&Q)|NsB%d->*wEl;rQy59>^g3!j zETkdyXm~)v0Y;972P`BY^k{fM!U0B(h6gMpAoTaMT`1@OzMCCTjOhI{FbrG%M25o* zPX&IOZaqKw>QqxzSbw@~ugTg!`Omk*_@Qemu|2x}Z#4hI zQUZh?4G%~-z{t_?fQ1Bv9t{sjIKar^79Q7+=5~jKe1YHp6FA4W`#;hGfZ@gufcnqi zZ^8df|DXO3-MVhFDlaEDtUd*u-}is--mNJ7U#||p_=Dvwj3zgwVq+e~$VG z60b0FG(2D-0ij330}>7}ax^?(ApxNYg~#`^r%?C*gU-8K^*X3! zCIrkmH~Ign{qmr-{h&2|*S7{PS&4LBAE^E}-3zN-|NjT^5Bx&#N9%uB%7D;>($}aw zB%EO6Xn4Rv0z!|52P7O|or-+z{K1%)ar9m-3yCfdZ({Z`(Pmtp-0055)LqOG(2D-0ij33 z0}>7}ax^?(ApxPO9UkK6-cLqe|6d5||09n7VHm=E@Qu9_m#pjl|Nj-k_y52C|Nj5) z|Mjf_OIEI4y&6`3hORYTs-eLJKi_Al^ygvjC)T}?)HAyNkJ|ZX)I3dTV7 zrc05>`$6aTYiVg|!Q_dpPluZN!IIt(DGTDFQ9dLbVB~0cz(N8-kA?>%9AM;Vc)&se zLXUhnjjw>Kh&ZA8h$=)IG42386>B0}>7}ax^?(ApxOB!vhiy zFp|>nusFA_J0t{g{{N;WzRk#H4jDdZcV8pJCgHW`yF)`?Y5n;R+THj6f9clGYZfj> zoYx0B&qq&752gNp4X^zN?tUIxw`uUkE8a1LLGre!vhf(Al7Jj zfIK*9k=j)n&;Bp~!? zctFAdMvjIDEF>WGU=I)RbL%F5L8|{ht?>ob|M2<$p~Bzv|MGv(9X{9g>d#rbdgV%3 z{RrysuUdh)zlYfR5~hE+sE4G+(fR+uo*zfu2TQ3CdNe#B;Q%8?!vhu)5PCE`AmIQb zNevH)Yv*T&gnWUo|G&IPU`{Av`5(iegrF&-rx!2|=v?o4BU8n;{f&1K^DJJt|NiaU2jhds z|5vSopZ7Of|3lIdjHGsY8Z{3VvJiSSJRso!BS*sn77`G8G&~^T03%1k0~Qhxn%3cQ z{itWwpFfEH|GDnGZlvm;VX*QW{%-{D@RvB(*S&V_N_hPqy4Gav;^xJ>;PwCL_%9AM-~3y*7ObGk#m{DJTPGg#8w{eKlhC@ee%4IgxW z?+=CFB3sW*o+_%Z3aZ;cIAm|=+Bl^1d_m{={RT-uF|7WBa{rH1J}f>*TKXRKFD&LE z^k{fM!U0B(h6gMpAoOT>K*9k=4)^ewwwI?k1nK;Hk~`&4H+F)%Q^ z3i#LXf7Ab`|3kL=H1qOuBAw@Jyq1B9i2+u>L+|s^fbmCaeUI+{k&>Q=dww1DA1oz9 z=+W?igaeEm4G&mIK#aOqalwSVt|cK(5Q|Nn#f|K;`d^$;HBc|Rky zJphYO^!Oj;!$Jl^kA?>%9AM;Vc)&seLXUE?K1H`|=@YCRL!+(>lz1^a!yzuki5vCCTss8j`s!E|MjEwKP-6Q z^Bs`XIlBIDsO8U5_rg*xgdPnKNI1aA(eQwU1cV+94@fw`NJ8Op?PyN(moJF(fBC2M zcCTUxg^&N!m9M}M0I~0?=;i<4|AYGcph#G`X3e=i180%(*vROGAa)XNeDd}9*}T=k)z=O3ke848Xk~vfRUr&0SgHT zJ<#EC?QBL7^8UYfvwORd@Bg72e*(i5h93%lN{_Cae08cRe0^W(T9dU0`g(uDYP688 zp=%*G`$0rPw}!6$k92e{|7pMjoJ?>=V0V$c)&seLXUP^A(`xze@PO>Ho9;zyF7BUE9se z$;7}ax^?(ApxOj9Uj+?=60iu|Ig`dWswg;2CDy&&-cew-@(+6%0t=*kkm9f|4-}uG-^I9 zr9tS?@PLE^j2sOQSV%zV(eQwT1B|41cw9T`+Z=*){%^n%o@&s1I?O#(<_o-^tkeAe z|Nn-7e+&OV{r~HK$ktUw{M?BCe(2iZrR!F$f}iIPs{c=(M4aaXn(tq=VikP8f3$vw z)bE7aJFxhqclsK&4;JzedNe#B;Q%8?!vhu)5PCE`AmIQbN5caa5)hi&;c@L~2Fm*X z_mg{@SA`;Mp&CDcVIjj)f#289uIs)!b?R1Ff4_9E$=ct4U_8)zzL2%Q|F47B@1XjA z*Q(L_o>2WxNFI`UM*IJWlnn`yQ9dLbVB~0cz(N8-kA?>%9AM;Vc)&seLJ#%u`28%W z8F~JHZFer{{vU|v7#J8R=5AqWrk^g8N(P%I+wXm}vP0>l~(4^Su|@Mw4-!UDt^ z4G&N#ATWCW|J~%A=2b|mrpe|vFkBY+>G02Z>)P(CrmBej`+H57{`fHuQdxob?}6(3 z)$sZsSN#RkFe*>nct3i0!D4(g{lh{6LXUan0K9|Np1TZ~FfOyh&eT-?_!wtDnIA|IzV%Sa874>wyVStGxqBt)t`rLp{Hax*wL3A@pc?K*9k=j)n&;Bp~!? zctFAdMxuuY`ue{DwDo_4_@Mg%LF@S#o+|ul`2YNW$kuhu_WGQRu==ZXtI5)T|NsAh z@j?6f-o6DL;R6w&R{aJs4YA*Sln)63Soq?KfAsV)%7=v%gdPnKNI1aA(eQwU1cV+9 z4@fw`$kFhCg#?5i?BQ|!Xm0Ztr2BsgmYnZiwQ}W3i0c^`0_GUZS+#1_RaAaMD1!sT zLWb`Ff2V@>?`=2Nhppf%-FkV+!WFBUAhpl`|Df}Ezx;pr9?oBDx_1Bm{qX)jtbT&Y zkMhYI-zOA)u=pG7>2cJ3u$Y3-qu~Jw2N*dT9*;3}tNZNL&v zX3)4YnEO9;tLa*42op?}ZvC=k9n$zdXg&XE{SOWrFhQ^O4lF(irH4^@SV%$W(eQwT z1B@IE4_HV*=+W?igaeEm4G&mIKo{?%FBsGHCX)qRq9_;CJ)P0b6f{~-) z0SgHTJsKX6aDb7c;Q|0^(TcKBm?Z(Vn2=+&)_{~<^2n`}Kl z8M(d>-5Rp=*B-?Fd{BKK`t|?okzT(JcK_pwfAsV)%7=v%gdPnKNI1aA(eQwU1cV+9 zkH~8b3=Ht|QgvY>;*X)_~ zf7Pm01I0f#d3Dj%{rmUB?Ekc-w_DWS-X6ve*_+#a=gyrwF#hE&In_5dY}f$f8*g1Z zdCrU(GhqBnYu-;@#=^n^<8Rusc5?KmPoH4?jcfR)q@6i)2FBm8<$Uv6ZEbBBUw_WJ z?rSN2J_%y5W@bJLo4d(Q9zhz=#g7HE7@9H}`I$-<>OU_M>ef|11 zj2|$^r}^HF9Xnur{UtulzZNW50OdOrt~ob(DWBdv1_y?#lmCIv-+4bfbUQ!OA83Uo zxo_?4)hP4xB1^d&5cPk^S~JjMefa)-QP6#RS@oe%?f*m9mMmScV*vx4zcqAiXlN{4 zezZM6oArFK@Fq5Vq3HqXWCw`IXn6(+2N*dT9Z@0;!u$KeTYb9iQR@Fbl=@#}@44<9H*Va3xi@65 zcJmIT`qX4E|CD9RmMw$HPujvaCnzW=2*$s-#$ZlPPEHPtzhR5P6kT0iT^Ju!|LY*t z{{eH>O}=&O)-9NP;F5K)^>tt&gE{XfcXoDmf;kKf3`n`W2D2_lF z)Sv(T>)KZk8-$6iPe5uxcvSu1sNX?x0m8WA1D0M!%P&|+KY( z@PLE^j6@HQ(fXgh^?$&UcatAKe*75JG!Qtp_p8Qi=Mu5v=RzMs668`LiYbN`oZ{k)_JWj&tB+U^CbRzqY#_v4zZeY65GUJn|- zM_#`-T0alX@p)MM(klKSr4=Zh!B`M_q?cc#{)eOk7&#gqu#kYzqu~Jw2N;PS9wV#% z7ciW-<=x~k5O0OV{o_|OApin{J(eOZo1&B2o9-vS_;L-3vgawE-$m@SY)b;lhfO-vaSK z=h;nMbC(O$kAl>QCVNBIu2}USzTYi$tH{z7T@*lKDE@bQb*`}OK40j>b_kZE7rE3>K*`RW` zbnDkO+-T$N`ioY;_q&76t6za8&&0F}ZUU%(&cM*H9%L2>gZI;c7*ISqK0jLDLz4oS z8mRFDP~HS#^!z)@2Zag(kA?>#EI_Q$@BoDZ0*{6VA}m0xUC*9J?%A_v4~PxIB71YY z|Nn~#0I@;1aLMZ`&}cP?4Z_ssgYKVYVA!wDa8=-!!{3SjL${urJk^wy7hKpv*2gW) zr~tVDB4WC=Wa-}h$o$Z?zu>hwsDB^2_W%D-cz+%=UcVk*yF=E`BXmRfNZP^U^{bKB z>#Yr43-UL__R;b4fvW#TdiaCVAPA3^U!YJx;L-3vgawE-8XllfK;Y5vK!gQ|g&rQi zpRMb@a^(uV|NnVQlg0wX`Ev}p&A!dZ=g(5i@6K)h|NlSeeBK0xD+Yf;_U1NUy}DKP zIdoH7=+=NGj7anCqxH>b{~K2KgXoc(9zb~)gwgZwC?6Cm2s|1dh_C>$M#BRX3J5$J z9*D32vC!*(;jKE&2?+-pKyo15+s#w`|3CaVTZZ25>@39Tzzn4D1sDPt4i_%bX$}p& zFTW6WAKlizZeC`@`F5cD=vJ*-umV)pgYZZ#??HYC;ZgsOwtqnB0F)O&c(nWig#rSP zh6f@nK&;X50EGeqkA?>#EI=&u@IbHsXT39+13GL5q!xtvru24){`>O>#0KHB-M!tR zuU2V+*dWXgk`Mh4JFlLBzo)l5G!(vmK;S({eQ14yz^{UThyVZhAG)=-+mx4+8C0f$ zaOmF9r9b}vg)Fv*j`y!e8h;RSP&$F(k(wSrc@2co^Y17h6ewlA@pSN7Ue*HQ~4uk{d#EI_Q$@BoDZ0*{6VA}l~G66=3~cazt4-@kt!)c-Fs_>KYHH4 z=y?M@psWDOs~|jDet|*(fk(pw5f&iUXn24^0f9%u0}&P=7J7J~*Z(4WKX17f78V9l z3&Nkboa+wzaDag!fS~{c_2+PBYcVj0g2waz{r~rW>Rywrfw8sl{yJp8{Ys?sZcW#& zT7|gZW~BDtKxH@xkNSUfJOh*tV3^qS0LqIXjGli-`Jhli;L-3vgawE-8XllfKww&j z$Nm4k-3$zWLSQ!D|DV&%!0B7n1^v588hpACI`eme}$RrhioZXnhGw3m|%=rUy`d z1z}p3U!&%OLK%Ta!vhf(Al7JjfI=~ja|TbUR*z?}d8|CekvUAy8ve7XJqscTKv9)?N& z|Np;uYv|hlp@{Qy(D@+!T1e{4wwkPc3t!Fm|9{xpkhQOntwS2`AF1UxEJ#NE zKiZywr3Da8Yb|E)b>~AGDi(6T=VTt!ukOuTC}n0X;vb@|bov@_lmCwwkQ{UyZ2mOSguu4GWEj zpN~gu`2#AeKzLOBX#E9B2QWOE9%!2$Lbryl4Gq0|6;yVBF!jqTkf{hfYCa+?K&;X5 z0EGeqkA?>#EI=&G@KDP_uK)GttnFUKunOKPrJR3u@+yY^p$dNr{w@4}=zqx8cav3l zIXPkFap>Ccr5qX>8VJ70+6ANiZ&+}QuBRJaPX}I42TKrxz5N0jKU=j5aoz@Ic>^ki z5O`D`5f&iUXn24^0f9%u0}&P=7PZ4;-~YAUAt52~^KuH8eg;)O!6!8TZ6d?NR z8=n6E@&D)l-~Yew)t|F+C1SlDc>MkQcUbWTInREy{)dOhU@z}S-ACL0^k55L(0G$W3~XJ8Mgepd*46OQ`X5>V6E1(D3Zc}fdT2mEsnPI&1_YF% zes~;1S^qD56m;J$qWw-ZUxA^3;jq9@k*&Sm_4`d#e?tq9JLe`YL9FKg|37rC$x=Qo zCHVe6Q2h_D{728v8(r@=y55hj>-|c%ny&qS|318a4_zy=wu#|THZ=SGFWs6bz`$^z z0LK5kgn=O@9I@Zlk%NI@J=a_K{u~Dm28Ph^|Mk$~ih=s&70hG^J!(EA9AM;Vc)&se zLXUHn|ozR=9D3UOmD0lotNly%*qSFegX{9E|{+5bQPL$|K&X60pO zf|VB`Yt7ecX=%Z?;D@XQov*h7eqV0rTC=qp8d^x}|3gO4--89-XnSb1Jw#!92(-Rt z)v8rpup|ZQ->+J=3f{lpx>Xc(mlfy=O|X*Et!;)33=Ixo&j0`ax9)Z1hzLW}_n`iL ze0+2rOded{U%d*SANc>@kt6i#*0s3H8<-4)#w?E@;xKYl9u^W1dNe#B;Q%8?!vhu) z5SsMxct1HLBm{o`AOD+9>o z^JnQ+leO=o?xus>3c}xy<`%Eg;&KA9L3rv`1%`r{aCm;Fw_a=Sr`@nHty;wSuT_`m7@;r}69&&}rNMC|7;U2C#*@t$As^?acEebuT} z@bmQtx_lh9f3&^^)l)D$+|mQ6zDKS9P1dgJdIieTU@u?WYqB={uBbnl^Z)<XIGGUlWtMIgS^9bxV*HTw z@(5P)Kn~O^wRvv_|6@CJG!#hzJ9*K^WAZ4-1WhkLQE>`&UCl?}Fq&n7@SqRNuq( zm#$S{;6=J08&u!#vg?Ak??K~zD^?)N57NscSV;z6)+(=p{|)~)|G)Bo;*vxT)9F{?atmk$G7K91TyT3>_eH5eXl>0#$J(D}QeS7H7Gl?SU{RmH*hy~PaR{dq7x zsK5X9@AsuJ{xM5XeIF_cgV-Q^ZSR*Qf8K#u5Nx(JbZvZmJzPI7|H4WzL`eb>8RbL50Y;97 z2P`BY^k{fM!U0CoK0J=0-2Z2=#HV}J|4{h-e>nM184fWNFa(^N-NX@5QIG&B9sd0n zS*yUIs%i=!FPsKCKO{U1KHi9{ynyH*J^yDkd`8<7u)F}G!S(y9RVeknR@b64AUO~& z-FjGpfuRAK|3D%N3~@;7^+5Igz3+(otU>(v>;I9~`zvr;DS&1gu%L3bFqmCtm>K!+l#n?s#UA9V0@FcXzTSk z7#QyVuZGv}p!xjp(9lwt`jE8@453pI>-8m$t*c(R0(9axL%9AM1B>;4~#=>HSL zx4#;?%HW^D--Le~|C?-8;4stUg75z?+iJ4*5B#+M(f&QI@)B0Qj>?bh_77-1-Ktf) z;QME;?=@K)`d$1fEPYJds=$y?5d&{egVyi;jYq842lwx5RaIf?|D&zfpSo2=5qZ5n zsJ>@dya?XEr&jtKKIJ3KClGq*m-i5Vz{pYmz(N8-kG$~cEJ8m2H(<`XZU%<`*CC<7 zzz{I!-DC!a|M2rXk@yM>2@F>*t;ua(waVW7*?-81e<5oFmT)4i4-N&*7sihE|6%1Z zwaV8~^B^HG)WQ=~--7PPg}DCz|5DKWSZFA`zYgy2f8TD8kay$&-KPWNgXZf?_S(bG z+X40OuYUjc877}w3|hZ;6+Ztqbt?k{FEbN-{T|5vm8(`QgsBJZ7hqsOoX;LQ1#l<16V_+y)@@{fyT}}>^p8y^Y*t*qJ z;rGP<&;I`d?f>sq$5wduHOUI_y7JQ=JQ=OLHqI1*6SnXM^Jm>%iT(N`vN?^fHK}6 zvbGCpyq{X}4J|K5&;J?iZ^M!Tm>&504(tp#G3p-7`d?feUjHW)EIBthCnskO!xe`= zSO5R}U%K~P_g2-;CRll8yft*~=ilY<@yM{XCToAch94L5AGH6EnE67OdDJR@M$LnS zz-V|K|PCVFm1H`3egO2t67ekZ^#J zqu~Jy2?$O9@Ib2n1sEnyT(Y)%`t<4I3{MmOT?6;;`RACkbHm3EOShUV-IKf?zTYTx zZOBso)vMt5`GCd~SFBh;_4!0t35Kh@8I^~Gz-ai;x4sVn-)FH3<-FZht5&Ut#0F@+ z9O(QjE%^S|>w67)R%vN@!Q>(9_rl=kXMpX^wXd}4|5N(=?hYtjjsQre|ZiIc?dmfKO`JrmPcl4_Rxr_SGuX`hPW2{R`Sp7h5}B9_Aj<`FRHlBH-s`fco=$|Hi}XcM!k4_WpI4 z`s<+j9_jqP(6!6J=j+4dLF4=X|Nn<)Nzi!PJ|z1GDty7E3+OK3(eZCsP=M*t`Ue~g zaAGt(;6VXq&@DUy7$!0tX1Fr%`?<+6F?Zlg^h5TBuC0m-gOBHf?&tmf|1ao{FmRDG zP~{2O^3nFjXnSLjwKqWX`Kw+b>VI&3ock4)T>qDX=JOj8;P>b1WGgU)A)Utq>hJIW zj~I{7^a8KnL!7_27IXdHWhKP;8fbhUUilBA`~fb^M(h94^$(-%KUh`(({!uf!M5QU ze|yUCjNv)Mv;Y73=UlmR4%R8 zgZgXe=OrWG&kB`?s~>LRJ=FaJs(;tN|GyuWUap~y?+Y(g;E0GpjPHZ`_jPeK@cuoh z{trbuuLm?fV2X79-qfvMmaJH}9-e+6>0vc|ynnEUAGG)xt^Y>rKUh)#(}Sk|1G@%K z{W#p^pE5jQc*5}1`nv+hiXAs@z{;=Et)G{yTCoCYe^AKUd-v|`g2{u*p9KpR4Epj1 z=3YYOBecFoI$zCn?W$FX^NK%^fBk^3umYL)3aNnr z(hr{u{{R0!Xuafrr1OwM*M==+U_d_46?8&N1H63&3UAPTDiGU7&rcu}pR|?-_xD$= z>Vn0`RM368_3`lidL?Ta7!D*9M8M?1^?PhQd^`oq{rmg(zQfy>wDuph%!d}AqxJu2{SQkDV0yIv2L}V37_jho%J59!2gCE2_l^t^ zF){G@$dIiH98AoJ^ZTc+HCg-r`)|nRe(-%Cp#J~xxz86=o-g=erw1#qOV^sN-T!|M zygZ+}Rb=U}_3M*h@*!*Wr!X)uRKfXMxr-SX7~uP>Lbe`OU|?7PFYiI|yK2>c`1-EU zt%(8*4C~?i-S<3$R;^kEpI-ruw|xDII-k3G^=fz%f?DM>%>AS0;a@KZN*}9MX~EmO zp!NH!9=(IFe=S|R%#wkj!2uSY73Ul|!jSs&;QBs(KK#C1S546PKGJ@@wT>LToT&Tr zZC9?+hM5OyPqrboCx=RW!3sD~`iHSW^e7(`3J5$J9*D32u|~rK6bcATv+#JzaD`za zL&5+5iv(g~VrpRJjqp|m236Ck@cYBIZJju0)ru7>Ve-)NYxsTuP<{3P|9|*>qh?z} zKy?|?dT3C4Vc_on3)yN08gGZYrwr7d`F|f?pGq7%*NuFhYU$P_0fq;0@cQ{&GXui| zr1HGYl7Zm?()?|c1S%gEbFlCt#J{vgkwbMV;{L?B{|_mwTD2M!hF~K=`zx4~IN-jzN|f?_b+1vh>eC_;UaMp!y#9{9Ta!>-VpNw?9Vfe^Ba2V49VWP%B2w zhXw?c8VwI8y*G_58V5|%rT~>=Fgx1KmH&7U+~XOk%1vREDk;%0P3$YbMnH+ zCqec5tN;Ju{aX`AeGf11K=*_F|N9qZy#VrhXnL1lp!P}pe|>#e{RAqn85kNWV0@9a ziW~_Mi1Sk+p#qv0f~WwUw-y=--+%oM%7?Ze?wwgI0PfF0?n8SQWzrd?$PgMD3O;{r z^==`-%4c9c*sxu11%oW^f%(w!f>-~c`r-Gp8gES$P@Rfc4;H$0kpcq)6a0P_Q2nrK z)v5-tfr#-Kc>4x4Uw~X+(L20{x_zMVZCJ1XDSW~6LGbyZ(yfam7#a@1@7p;Y#lR4P z)ILN{KfT4E^Lef!*7I$3(L^~PbC|a05a9r0LFge{UP7EdI-fB*p8-t?5NhbB=jY)2 z{~Z1b{9ri5kZ^8t5=U4F;y%A?XB9c7UPaVLAzN8A85o%1^-&0DJ{)ELkqPKLu|cz5 zEo5tx0&;o%I*S2${q_514siVq8t<65PgI=Y^A<;r(9o;8_q*H}K{0GFCy^s`F9SnI z7>LKfAogytKr<`T-QN$9Wnj=>a&9um_wV0f ze1kc;)ec%(s{;QrTxCdLVBnvV$PgY=0IqNT{y*}cMH1v5#C^)2wcmIRhhwIn>EeA)&|Ns9%=ku7VBJS4%?GLze9ns&XxBuv6 zA1u8O{qhm!69_%(A4oXB$kFhCg#?5idg1Xr6MX)^0L1;D&m6bRTD5A`um4y6H~u&H zb2>|rAv8P;J|1AQmw`do6fs^My7p8S0|OHyth@u&KRb4;fX@$5ySxGQ=l|DlhnL4- z{@*(I{wk3Dt5!XL_s>eVGHWIzBtZD*?`xda&K>MFO1JW z=iKCP-@a`_=0E3L4R1voEIBvXbk+aR0BC#Q{p=);keGr4pz!?n|LXt40t^hIp@{ZC z=+;FF$m=se>j}Spg)a{S???Fe?;pJWGTB>7 z+W-I8bAjv!VN>woXz#`H$p(kbh9uQ>8L|NqjpjRMH+M|LOF{yyk@ zp8tRE!rc=%g@GaT>QwOf4=DUfx1Nq-WI~K5m2Nd%d;9-r{SV6zL$ADqxg0`|x*rk_ zFmg0JU?Bma2Y-0927>E6WZ+8+yM8N@Y|MbuQr~em& z`^$*-0BAgvlNZsy30)h!ltBq`p9rM9N35r(v^@Z-&$N*C*MZ9WiuiDN`5U@7bZuzq zR?zuq=l}Qrj|AvF$TO1`or8P7- z7_Qzu7KnTw@}(`u0v9Y;H5DdLsQ!O9Ik&sPA)x`L{#>_j_y171^$Z1ba=Ssx31IT? zC+Buw4GmpY@K4|uXoUu7JSIFQ0^Yv4yoP~+SJf2m-)UPn%~`byu|5NI-@<>8fuPFg z|NsA`drg-9|NkF8{}H-20MwSLgG&FuzO``4s#UAt9oSM(_=Sc(g2{)jEnUj+>L0wm z2ZcBK{0{Pb12n#2+W&*bC`?WwZ1hE2~-Wm}5Q9$ESNX-Fod*uK7 z_wWO$LHd#Bqd@mlA%fwzLpjue^8nq2CIHpdLI1cAIzl?deps;aDb7c;Q&MS)K(qVdq5pj$5Y&I(^7ZRin1@z& zsTltK`}Z%5|M3a~`0Qe0`8WTydVtmo>V@jc?uk>R;`DxuPDzTh_w*qXrBM8J-%i1@WhvU-|zBTttR$ z?QKTBKOEGb`}cnpe7qIJ-@hNh2lcmBtw!+C%U@FYpy?Qm=UEec{K<*}% zKXJ{vX027LRu%kL_|5Q)VNu``M}{z@@c=~z(0oQHe0&{lF36Jqh|~q;g6F40Lqp;H zeW-p&|!{-O?{ZHgT?eCkcmHVF!v+h5rebK)P zv7aC09xW}zd$XdfQ@bCCQ0`g6`r z236(?zXSd){QvZS$yWY3y1bn5^?so7U&QKu`kzM=y4EA8;lKgNe(U%DqZSD;Foc9% zTmOImeGN+nMuvBj9T`He+H#750*`@#!GB4jz}r^`4nVmK#{yj(LF3&p{$_F6(D>-`WbiYCz~+PJpFsA7>;?0|_U-zo`1`mc1B0mO)DK_*@OV>iGXoRy zdKA;O$miih)-xd11N?rL>9uOrt1Os);iU=;$ouy}VFJQ1`O>Wlp!K1M_Qux363j^R z`=I)M71I5>L#4ik`Hx!e1%(+1)4u!y*@D2M_94Oo#2O6`P$(eqXm}vP0>t|NAF}=* z#0FvhIep!r)6Ad$e+GvCt_#cojhDm92k`td(t3Ytl@~Dc@tXJk|9z9S#~mFU91`X; z>M*b~urPeu(!{Y(J3BjJ{Lg#d&sJAgSBLRMw!WWi zW@csv;~VciH(6)fHu!qRDQAWEHpIrp!sM^s-M9wSeuVR{QpPvl+uM9#!JlxLd7sy; z>;Av$e<;HbhRYymFh`LgqM!gi{}Zy7MU$DC5#C+}k3X%4FAw}5y47TDS?l{CSb77U z&+mYIULOYo!`8o{@CB8i@&54e@9^>dkhKa7rmC!<^(9~&@ZwwV?TfRjXdS02i+R|AW_$ty;By|Nr~{@Bcsl ze}Cy#70rZ%f&vx>W(Fn(CWeVi77H+PazZ+{3=9myYhO=7UcW$le!vpbP;l279DyZ! z`RDZZ_IH6f450oqW#j+w{y)?}^!k6(lC_if?c28xD$Q_t4gZ{&n3xzCzi`g`$!>0L zZZJNj^}os9caygv)&ItOKka$+=+PsX`NDgJ_SVDrRM6Wqk+t{-6IZ-FjGpS5*~${tu`;U4e8yKBeUqsJ_?ILY%J( zYF}`3bHmpcmTmn4TA#k_fB*mb|Mma#Ox89DBoq`xKw=NnpM5OB$jJ$xUpHBMuA2eW zKZGh62z~>S{g>AGRIggGYCY6B4CwVasr*8;{{K*`{~`7Ls$H<~__)V(>#JY?;PWpg zTTQmY z-I`m>&;Xr3`v3pGrL9*;Oiwo>j^;Z z9Z*{UgelDr!$m(R?m&2?m#?G#2c-f89t{sfSb$gq9Uk}p2cXpd1#{9g9U2-KK;!>c z{xAH$aZZzfswtxUo3=G{ZFpD+yuU(7m76WNB$> zJ^BCm|C9eu{)cSstLEkB=LglrAPh-gpcyR?@BjbMwQYt692_9$L4ejfg7>qA#zJKO z{|D9oSFgg)d;EWGuOo*kQu`Nl-`}5q|KL~dj@JL!?@xe6-{^UH@RltkLMR{w+66aL?C z51*g~)&IYK{eYLRp=;NH*84mBm-;XHpW{8NPO&3LNZ54v{(Js88bJ%0V6h20Pp`K- z6fu0vz&~f;`KDY52lCJ12kpOyJ6L}X{~YA~grM_+bTu_KVG07~oa<&<6m$v3ht&W3 zcEI?Q_y0G7=KoK^%!ADTKS#{BZ{eR}_6@OLa?_e~lU3rPqG0MLu36Vz6Bic;<1g9t zdC6C#{g(W5&UK$Yb?OvMe&U+*ljV`tFPQAj?PlOo-wu-x*(*X)dmwc0r8S`abfCH) zglAqmowa`bdieN$Dd@fjr2V3x_5GmvBUpL{t?!Qwy$|283gU-`BK8M>?&IY}TK@{F z|Ns9Tt^Z-+hpYV$i_g*W6&4Z@dNe#B;Q%8?!vhu)5Ssqsv7!oj|KEfy`g1_FvBGbG zpA6p^zVc6TWH7U_uz}@wQ2iekM&0^nPB0AR*yA^M0oFjCl-& zOA&o>OZgP z>27Lz1n+Nu-oiH}DIVE^OW-~DDg10Y1_X=e#u%DO-@Ee`1zKg`v2>H#C-o~|9`aq4@;XM zn*QZC$W{a%wI2}{Al7JjfIGRFd?{*McT?>EQQ{)ee2Bo7*&ZD3#kpTPst1G%qH3wHnMeG~A0?1&g!1}X4* z|8tWUbEvW+*879{_n^&aFdq&)f8AsT&;bch2cg&Z=zLK7fYkc`0aE>+*Q`@*^$IcI zQLrSpdC^rweO@rfx4C20TJWhrASdb1c{drke!u-+1AMnJNDhS2`Sh;;FRfWOxuBq+ z0OS@B7TFpwhu^#$K7U{Wo=@Ob1<8SM=~0udQ>RX~2lf3yxDreMAGvr;@&7e?#<(fS{h4q+I*d>!S(LIy&Qh6f}ZVC2Au zM{hUs{{P-?pJs4<`iVDCR;tC#O(FCL1iNdgT_;T{6TDZB2>Q8VHIPSb9R|^G)%s2CavK$)nfrg!ltp|4&>KIH#tjrUvHz zfF({Pb4GI$w2A#LFYSk>zmP8QuKi2vm z>HI@*{U47w?{KvK$6mjK0~62wMOb_deE9}*34|VX4PGX^31(s~( zM!FARYv|G+@YDYO{}p^JI`8)$s&)hon(W8aUSulDlt@`9;%)ns4@565y|D^x+~S_THtdFoK^ zf6)GL(0U>mA5{M!kH3w^A9dqzG(1Pc6PDLN^k{k*O%I@S0K=o{VKhC!(gKJ^PY;m# zA93FM_oL_V*8iaKw$M<-1*Rcr^*?C*PG4UizCL`k{vS<$pmYbr=;?2iKbk&ZX#+%$ zrian=07?fiJenS8n;t;*^D3nKS-&4$hqwNRjrG9drxZ*5zg}B=wEl+%&}jOlZTcMz z-_h`eW;HN1njS{e12`c-iP7|cKRrPD|A_H_@ne0($m9PkilmMIgZlsLQP$s@tQ{Ty zhbBfU%)gJOXZ-1TG<-(G2a($_=Q~H!$7uQ(O&^F5AXNW12{14q?;l6+|D%upmu@v( zi+ukKXnbL`{zruOX!$c*{vcArX#F&rA4c=TXnsJ10KM}Adj0?XC~E(IwEiE>pNP~s zT3^vSe~#KWn*T=gA0h-s^8i9os{aft*RF->2bn+G|A&RfX#F{wf2o^)N5gY8JQ1bKX!$alA4tm&p!)gME5!Q$(yhMP z4)FUq|NnoCR{x`q|D)IcC0k9`j_&_MSfYeEtt;{r~c%>ygg$99{oEnm!RBKx+CNRXBF+Z_ z%`c43|07~-H2;p~Uqosct|Ns9VH2(kh zKlmy-un?$yF*^Pa4hk?q@Aw_HZ?t>?Cp;)InjS{e12idssnPT>veN@-{a@(StML8& zHt$mnNvi+1I&vV_{~>G5*6v@w4!)iMTK~iOqv>sAr?=7gAB}%-#RDZq)5B z|38@iksiLI{vR!GVR->WkEVyw^Z-f+Fg%(bM$-c_A?NKX&o@&8q;;Pd~bTNxP8>;L%pc=-MRMGgjrt5>Ir!ou(W z|0W6K^?o4pR;@$aCp6N-chvu*HZJ%G{y43DOVk)0ku_5c3;`|V-rVd_>#4&?gZfrEh|G&~%B{%@Nh1H)8NMEyT) z>!vvi7bEI_Q2&3$s@0?W{h74J&dLYa6*6*1DzhGZ8cfD zfB$@WsB`}R|F6Ih7Z(=?j$K}|fB$~?{J(ySBS%a~NC?>R;L!jEhWhVY;rsaldl(o* zO-)T<^4s@{Ed8_R4@&*NV#R3v4-22c9{;268!fM3X%$3|rian=07?fiJenSccY3(C zH*~G&)~!!r@x88Cfg>a&EDXj6jsM60e_IRVo2+GEFh#2Wx9tsGi>w~B|8MoG(e?kZ z@EXlO!#n?s#_wqS!ty$Z9!(FU=>e1uV0f^nhi!W&^mKKdIt6pDh7$urNEo922aW%K z6`%eWCSST$fk9PORTaiB+iJ4*&%b~0@qxka-%D??=y7pE~8`1@bEht0*!sgoK2_*ZYI&|K-o0mV@L#cDI#%2OJRh{etTIr*CUt!tw}+Ut1aqKmT{y z)ZO(eyBy9zf{;hDX!GXnKI91rR-&9_X7MAoc$%_<1~2x0ob*m!iykGcvKj`QEdwPM+`$ydO13vF};o?Ogy&w!4Pgu2T^t?Y%Sb*?o z`lfIC9u4o&@CM~O7#>Xzqv-*b7C`h!PY>Ywe-)zszqU7Ittis@eVgVmU^(wE6n?(% zdC+-(Nay`uKN_+&E+hngJ^;x46{Gw8K}ijaM|yf2_5W!33(g2oVl+LBrUz(J08^vs zfwt+vbZh9^(5r~^`N917c=-H1sQ<67uHFugjQ{`t_ZBN)?DxMKiWvV#Kkw)J(a%f% zA?^1E_y0%F`-27N=>E6S{cofD-{84nbp63-eMj5+ZZv#R!#8xT>DpJXUcG{4K~Vi4 zk5vC(-}}D03u(XqF-y>SKZyJN(8vF`?M>t`MLO>XbYI|~KR@8-{f>q|YWR)hhUSz_zW6BoY!53Si-b&#ze3vo z7qXUtp`f4uUjKv6`}-Ro3%~ydG#(Hie_s^lKG6AqjEv08Fg~r_J8J%D{(z-55Ive6 zM$-c*9l-EtdKgU)u(SZ8N7DmpdH~h;tC05hgZk_L=gW(O!U}}9ZFS^`h=_sj_XF+s zUsqL?4Uz+4b|(ggt5*^G{jTlhZ&|o_5q!VjXn3QB_h@*Gh6gC$!0>2#7)=kbv;d+< z)5BwT=4UKuI)8hJAJ;XDa?N3rHULeF{tIt&z~oIp`wQyp;r9X1+CQV_kLDj(+5^#}>0vZIfYJdBkEVyw^Z-i> zAbO;y2T=X5g*4uOeXsD+{p+8*gTe-cUq>mR-tWi3!0`2J=vR;&2t)V#!SDCozE@=F zpD*9w_xpnC|N7DT9~4wzJkrzKsQ*XHUvNf%5~Jy1G(A9*0+eZ|8`hOe7{l2Damn>Vg4jh^P|NkGY|LGf_ zqxokvykU6{M31J2(ewaH2QWOE9!ApxEG>X&Q2+lC7h=8t)UBz84oLU=q3`bl&HtAo zo%aK|-xqPeAIQ8_ix;m1nGM3A{ROMmuU`*hgYanj8%=+pbO6Jn>0vZIz|sPU9!(FU z=>e1uV0bh=&^A4Q>g%jm$o0P?M*`A%e^7rvG&D9A79S8k;=JF|t*M5bjEwO0{vh*K zE?Ce6QxB^D*N@i!u;3Wo|2Mk-Z}hxBcy1Uy?{Bnzqiy{*8ov0$7d-yI-`*aUB}=y| za1=x!?)PKhU|qhVQg@xB>`7>Jnz|sPU9!(FU=>e1uV0bh=jHU-zS^&|sP7mPoeUKLX z|2W!Pe9Ftq3uHG4t7s}PgoGo`_XnN#_x*qUG>{w!mu^*HFf}!W@AuobS7a&j{eHA| z|ET$+`2~~?VR$q>jHU-zS^&|b>0vZIfYJdBkERFI^iT>qkEil3{78P#dHu-u`+)lU z>%Z34!om+!|NkvTv@%eI=Vg-;HQp6@@pzHfAW-{|^2Sm7{Q9*mX; zqvgS%Di1*G{ocRd4?mA@+SWvYgapL-{-FB5wzd{7532u5OKai#|EF$E@XRsV9vE#8jJ5~p+8%(+_pgHA=Lf3)|LVM?(`at|z-%9xYztXkn`~5=Ju3E7QzMf#TydN#^VQC9QkEVyw^Z-f+Fg%(b zM$-cPhd zk?!{a@AqS5M%wRZvUbI2{~wf;!FV)1Q#U=2hUaK_f-@GB7)=kO=>eJ)z|?4ZKur&z z`u{3Y{cpN8bZvZmd^|X?{{R2~eedTb_V)YV!}z_R_5LA<_4}ayerRZDI7~jb7=6EA z$lBnzxGH^k{k*O%I@S0K=o{fx77dR3EQe zg&6M#?Z@Nd;)0LQU)y`Gy6cpe6D<5w4H+0h!VvrY(9iq*yo3R5y?@BskTQgNkolwI z|FF;;-CsJIpQ)RlN5gY8JQ1bKX!$alAMob~aQ`1^{2tUE`2YVud_7;u+QSm)>;3D$ z{{0C{W9apN=~_n)mA6Yk$M|p!NRYPgCLJ z|5LX%3Gi~FuJ>26UxjqO-{|~5EbKt^Xn8(bo`cc>43DOV(ewaI3m|$lJ&dLYP&$BN zYNrQq{r_r}7R>zbM@`m-hE5lU@j>hTBO*}G_pN{a|2j;5u>=D{Xy{e=`M#xV*_{|s z*87F5-M@c7d_IBN?jJR8G=IR-B8VPM52NV;ln!8cG(C)_2UuDF(WB`BH9dgq|5aM> z`v2NqleMO{OI<->1;Xd585m+h!r=XT@O^$r>jn8+6d0}|t@q!yw{XhhMJrZ-^nx&G zJt6Y`z|rtW4gb;b7!40lK7rxU^e~zpU}*tFkEVyw^Z-f+Fih?AP`cH0EzbP#<$OO5 z28P(!_-b(A{r~?T)c;4`?;o<3fdS)uzvi{@@qTFi4?hoZH2hJ+e>6Ns!vmJLK=f#O z7)=kLbO6Jn>4CKL09{|c3l@H$@$FYyi2ZG&;fWfap!@ic&+GZN*O4P4CI-G=AGE$N zG(HY~9zc@-c)ousJbbr4QD9_7J>O?xXCJ)&9}RER@E#41(eQxf9S}X59!ApxC>_A? zXnLS5J%IMFF(I8VcWrOz+R)Icrla8t2?5akJILex635ye$ahEVMzN4N7FN9>3KB#M#B%B@u0+LdKgU) z(4+vSM$-dodH{|0zplQw9vnFT|No!5b&*8FfrJ1Uf4GMiXg_~wC}MsdIvxTKkJ7a! zYxl43ho9#+ZR=x&0}crVun|7csjjfU@N_(Dn&2sxS_P}2jrzSq)%&o6J= zYqIu!`BeD*G-aUmYXyk<4Ah_f`?vNMBs7PA{}jFchxY&B?W6BUdyBQWy5Qse>p;J$WM-Jrm0n@e?PFc8U0epWSC_YxKS^f!M7?1p=Mfa~K!T}q&|2g29) z8uYBv;)3`0#g931AkT+@_Ve5Q`3qm)-)ab|{}Jc;g>G#U;ACcE0GS2Cp<7Lsu3FVK z+TRBS#_0Lmqvvl^c>eZqFONq3M_K(h(!vj1e<989TO0$g--q}ALHpASB4QBd(J?SE zT)loB&Ii^1`~M^QuT!@=a$Ge-&EoE$}nl8iF|d|NsC0p!V4cr2Q7dEqq7) zGg^MZ@&bq+O%J2#0hA74cr-mwmL5R$*D9p*XF>JX|NHmh=gEV{s~ZvuVqoD78lV31 z^(*}Rc~E^HT3QdE|2J8xz=6EquXOD)Lq;YBc>i^%#TRHl6tSOwEdv8`e;+j7{}+DS z&;S3U=lM{U-iKQH8+Gq!e8b8T5Ive6M$-c*9l$WD=>aky{U3fHAL#tKRjXE=hM5Q2 zU&g?IsK5HE6&R4~FHn6SURw(v?|Dqa^^|wM#lzPFfZJn84S>NG9;5CVEstPn7etSyhtc!^N(V4JnjQvMdI0zL z7cn)#;>Y4#U-2rfRq**~(0Fx33}U|?sJ@Dei-+Gw&%nXJfO`I{0>e~QUif;zYez+v zA`Mp$`T0q3c%kff5Lx>F{eO8__-)(j$bmjS^5pMt`2D@0@QeLl4j(TOSdKGbg zPv}+;FXZtN(D^;nkk(Iv>|eJ6(cT!%PlGEzjmF1le89>A5Ive6M$-c*9l-ElOAny= zC=>DHC`w{d1ApU>&?85NhFG(mqM&(D#Q&?UB(WB{MG(CXQ z0Su4y^boSvZ0)L5i2GweK-*X>8-X9>cbp7g~+g}CEx7T~ahdcg@AA8rl zN=pkqJ_2h0ppTE#)+5G8K=uFC&`|hzKj^$3)bV|hr9b{5DtJ(Q?ca~MAZeth=TZNU zmhZ5#2Sksihtc!^N(V4JnjTQogW1;5waE9uLiUHPg5M_xs(%<74#3ZsJ%=`*52~-? z%ERI7_dSC^`_B;P*MjD!Re2HT&4K#I`}Eep%?H*0D^{&uFkIqC{8$LeeFamuGB7+q zI?o6+{}CFB2rtn1$k(e^x5E7Yd5!`@=v7hp`u)HZJ%G{y43DM<)bs#4Pk#OX|M2tVr*2I(WMF83uRjOf7#oK+KE3Pr z?w7Fe1l9lb|DMCg_d)gjR8yq+{Jme6Aa0id?Kd-7yBKLc8dCoco&J8wTGO>i!y%yk zdQ1QR|1Sm$4^VxNJU)^cgnFJ4sJ;)6{|)cJzm5X6mypIsK=<(??bip5C)DnNEB_B_ zKdnL<9|70@qx<(@!9V2Ji;R{}sO8gWc#MVzJadnp*Fms+!#vz!j{(o~*_C z&#`Fe)bHr!4S4-LQu_!Lep+0s9>cb$zpGV_+G`?YF z35Xs|52NV;ln!7RJw1Tu@3mIJ*Pmb8YqGYq^sYKgJ!pUafrN-K7$4LhEv+nq*H57O zzBV)zKA%5v3V3|l6sCUa)`f(A;c(lpdp>&=c$o;EO&L=iq`+xO&c>Cx2 zUV#?m@sa=k6&R}G5c?ZJ;Z^kmalj6!zW*P86~2C7cqsz|^7x3vvEE|j{SKh>6yTQq zhn&yDwGO`B4}3n~=>2@K)Hk}H0X@Hu@<;0fMD7^PA0sV4fa@x1g6@UL6p;{zUE;QeOs^ZP*K1FD>e^W)35nk-%R z|2MqC1NBdbR(&6`cGaq1@b(dCzkFzDDEvGf(D^yx^|q|A@B{fDd4D4)ylQX%htGe2 z+E4ZI@x3thd%uIi53!!Fbn9aYPNee-LGiV6!6Nwh%t%YGqy8POuV8rvM31J2(ewaH z2QWOE9#GQ*c)b@&|5Rk@s#UAt=i!0&-9nA?|BcO{{Ii^uYP~~6MnuNsQyP@k2cuj4^;mydX)vgU++3-d?fZR z{Ji~XTa!TTCHVMAq5uO!NNGLF_(*6dqW`~X3TS^L;{07ueb0*2UIMKbM4k@;hu5lA z@b=nZ53f=8q2|ZY@E8pbSX~98N7KV-dH|&Z7^Zf50MFmouZOSC2ek)wELtxOvk$c1 zo&o9pT%Byx{yk`X8u>n5P=EDzZLKU!|F*q}0#j8v;pgvtKPs~H&bPNP>HnbmQe)L> zcz+edU(q#m*7HHaFCKm#(bTObYyba^hp)c__3s&w&NC>QgSuWH6khMQUWLzpV4laL zz+lRYIIkGAe(%lSukiEx!1MV?<1L{2e<+QYP&+-3nm1Zr!V8ySus&!sJ&&emQqnW1 z{9lE19&8Bc{GIg(6F~dD{%^kz?_Y!JtNPkv=HqR z(0IlB_wV812^!x(U9Zo;5QDT{9~55q>g(b28=(5%^lE4vEQYr2P2@m6uNX8wa^pEn z7P7x_$6`c#X|#M8Egul6V|0FYG(U{yhmo8g!1ezsEtLNBs#RJyU||9}|Nejde|;Dq zv|f*)0WqE*vQ~iueg6J>SU7w>8r0u^|34Jo-woNyz;G31KfcJ)qCGIvLG``J($(wM zz}+*{^CzhO*II=*zv%ye2aZ*%URA+-4BFp_T;GGj>-yKf@FjSl`v3p`|M2h&T?-CB z_`oZHR|Ng<(?}7UF|NsAo&(GUDe{Q*I)v7F5cy8OP zzz`9Jn6C$g*T3suufpU({OkW-!}WvKPavjy&DnywvPpAQSo z(f%#H^TVipqxBOa_l@R1dgljle;#Q(A2fdcfAw~Fe-ku5{Qv)c_RFfcs5e;-~yfyVQz_iu*}=!5F3*#Fg1usDa-_we&$B#vEP@)2!3|7SH! zHDr8x#RA0mIK9J*Qv1N+`~N$9#^n3n^PuyKoM1i#olk&%eo=K@Jxcgp4ZRBAU?+ae zks}o4JcDJ1sOK4oEM2z)_57q&D-h=!QR<&j{iEeKEbW5m(eyBy9zf{;hDXx_ebWP| ze~!E#9LnDTi;vK)p=(1!x5DR>A@%!z`1yBJw>}0P2v-49U%FL+p`ilN|7`=Ozs@bza?w<<79)kW;b1MTm>R8|XbFM!quZdv>YKAsP5 zpCIkeAL{Ap``*t>{{Of4hlOv*S_TG`{do)w41f3Ehqrh@<0X4yc38pGn=A$I&x42O z|Nn^`pbk7tK6Goy(v_bqwc3~eKH!}gFC!I<@>5ttB}TX zP1b64X}y4zc-!}ytgSD-4zJ%!w;q;YU}%8X@7MP_av<05nO+JEF-YsZLG@2dc;eLA4<`+D~}eEkE6fA2qH|HAre)boo#>;I6?F9O|vU;_)h|NsAk<`+iC z^AQ0u+|$#j{|0yYJQ_bED}F%xr9%HA)?d~O8pMH&+TtK zV*DOd|NJd2h2Pf>;)nj-4?j;2G#(HddQ}(Z9uR*kFQPyHeeahgkI~lOGa>D_1NpCW z6=J;^h(DCp=Tn-Wk6WUyhX94|)%)M!?J3ZC2gv6cOx>Eup^CCUFLZ54Y%F|z1*rYE z8fkwcrS2QmKeEcJ(fA&XZ&+ClqDRvMYI*?GPpej~(g1}G2t)W?CLlHlL-}t&Y!C+V zwO+lN17d?Ph`(ah>LL&ugs<%t0o}Kz4Pt}vwY{MGR<|~Q*dScGHq(oNfdSq>p9-$e zU!c^#3=iVrK{ULjvg;qsvR<^8{UI3LuXkB_f~-)|4%U%mPlzFs`y z9QZsK_<4F$w>AlcnsPIM+y=tp$9ju7k>=k){rPL(cY~zB806mtT^*z6!+=8rbG#W8 zAK_tP@c3LLz`$@d6mkB}wXKIGrm7e4AvCQYf$4f!$cUP@ig~T^myJ}Ta6WH+op!HIq^FmksLgT~NPeaXz-)CM5 zz8~~Iyaxv=&sVKl1z(>9<#Qm+1KGCp zo*K%B`v=O0?}vu+_rlx{s=xmKuZQnf+YYIp;r(xkbD;V1&@PzzZF?t8S+$A@UO$&^ z4kreNIJEKi(Cblf z_k-$d)(0w|8Oj1-hU3>Q=;g2H*C6 zS@H{>`~Lq&KYwqehu^6GN9#{S-ob2N5BBr{8vjL}KLyu+|NkSccQReO3W*=G)^zQv z{ri#XZ99bz6_KRUm3E9i!CgnLTC>(AiM|Nr}0X3(lt ztKj-ew}MW9Z-Dn#x9tVhw+Q)dVEqU_Xg?YQ!z;M{lC_`;^FN&bZEuqR!z)C6JawxA z2g82^UwEkk!wRJOxhsf);Q>xK7=R6(evm?&X1JlA5i}XqkqoTgtFfH|M#o#4a|`F+*R=V zNWUKitq1;(RDTzO`j_zfx^!!*CIbVaz5~s-GBEst*I(QAI&vV_Uz_GAFf<^|=Yr~o z1xWSF#5oM0>J6?RRQs+%l6Tc)VEBW?XVyejkIrX7lSk*Ht7le3H4juDBA@RHsw+Vl zmZm{$5QgzV^hsdAYm0S}`s?5JhODhZia*ePv-@}8 z&I6x+{~xJBr!@VK>L;!K`F_-(Wg$}i4vL@38_RQH=`9RA{nW!OuVYe$-^`)!3`>`n+`Ob4TR)+-X~z z1Q-~q;Puzmt&SWGb%_3AZ?OWy52W%NJfC}YJG}h>s-HrCFMzKH1M$P-!r}d4P+bYa zAishzNIo<)6kb0<`5-AUhVtS1p?vuGF_aHKUku8Js|VQy!eGPx|NjqSgD|mtaQzq> ziZGu8+@FP?2Lmz-gyH6)$%EYU^($(B8L4~vA0!Xzw!-v-`0?>b?Ewz({40F?12iA| zH8j*3rXI8&J~T8GJ|7U!0;;dS!t3W?@P4fI@cJ1vUmuE6UndG&)kdzbIh?j4)z_f) zd%8&T>7enOhVXE>dqDl~e_!Ft<-z^)RV&uR_m6|dli-O7djBdiAH3fWX?-D~^gk+3 z+wv0Bzvt*&3%_pf?B zSEs}4ZxFx!`FeQ&71TZm{T&V85B%H`Tz|sbAMcw%_0?5)eRXLLNd7;(zS;=BA05F* zmj~78p`nQR32O7f^=0U4xO=wkZ4w9#MXVu>`2m0*k+Gd(T&gGHAfZzo%{8G)I>Kp?~Vu(6z|%yKSq;TKM9I z|Df||L)YF%YQKTX_aA8G`7R_rD7|IFEC)4I)|#wcj3f`L5B4MTw}!6$k8C~>eB|+! z(eiCz%QsMZXhQ1$kH*Kq#>Z&*kL>UV<;PW8AK>Hd;QKT~r^C-Xn+EEvF(CF+eLt$e zQGqlc4C=p5{fg+Xf$Hb)|LfuXHxNHQ{wjRL6~qq>{R*$YA4`DhW5oF==OFui;q^CY zzA!Wt(Z4KR>&Owh9#Malu03Y?6={F<^}PlyYmxhtTTRz8eGM&#RWYFTMexe)|NsBf zwwkVGKpY1S<}W~8H}-$)R#DJ;1eo^!rE9;eLGGV`=8xf(H>mzwYqA!Z4_cpqY#%xw zRR2AIn+~c!P1df5hZcm7tRJM_4oN*|KOB5;1X_P0*O#FAmVf&Y^*5+J_ZvRi09qeu zvi49H7u*VvdA||E<>3DI>Q$rXrNM%Hw7eYI<>hGnkH$Z&ECA8;P7k2|&?=<+F(CYP z@bVj6pRdw_uP=wJ??xP`0g>;R4RSjOmu^inWME)`@1LHwRRQHZ6wrEXkWBbTy*>4qeNl2wIW`atjD=+bg_O7e2f2|39d{ z{PX`6yhbDx-eCW|dW9MuNb3o~@|5z|uSYW9bS+Z%^gn2P6N8VWo{;-Vl?U0kV#Nyh zezX7IKXik_5suOLAoZ(9=TqUqLuz=Bsvj-?;fZH-y&2utn~n7R7qT^U?Ny}p)u8hH z-#_I3-Ipb=b|LuN_KK|i`@J6NzHHD8@B{e$qoDmaamf97(D|EJufnHLLG}IL?^ogb zbwK>r|&dFWMD_YHS&I| zkskk}{vWM>V0jNjkEVyw^Z-f+Fg%(bhIe`Z)sL%Iq4sYVDKvG!;{W?m(0=WyzA%0% zXg}A32>5urPd4iL<)HcVqIlHxV^{CLJ_*wgnGe4TpI>qU2C?Mfnk9HEX{-6KU&|zf@3uOlbHTT>(9~p6P|fS>(9~h zW0;p8pz(X;@omt4rp2pY!_OxT-D&BFuH$~)c6@yKbpTm`4Wal)5B+x2tdIi64^#6Ya2ITd5p!$95S44dc>fc`vkAb%r_I?NLr@IP2 zUk!Bs880(py*+6E*Rq%J>(RjHp}qX|4_^PHyML5Fn!XWfbLgEnJ(_+;)9+~dMTEd; zexPlB0QHxV*RO->`)-u+eABi2;^XrXF_OrEuf7M>?`&o3;aj{x^?z;X_j;KAZF?0t zLPMv*&p$8S>d1jSUk`E*@_kvL`Gzi}_4T9afwt*kG<-+H7nWB+^k{k*O%I@S0K=o{ zVR)qnP<@NMKOeMS?|=4s_t^Xmw&wqKach@=={2? zro1ru(yeWVsP(`^87o*YHYTqwzT!pRl|SqDRxiXnFvp0~j7n5424Wp#FR) z(s}LB`W|V0zUWfq`d{LhPWCFTE+<(0T-(dQP=U5y@BZEY*J1LY`o8wwKlpsXCeZn` zNcDZ$T31c<`hMl;dV5&#jjop+=Idog%QxDVZ=>Nm8ouztbaej(MtuUFuSYq54|M-~ z7yN#7iDQ@Nyq|CH4-3O>TNxM52U3BQ2%??DlPbZFQEJ7 zR%vm0fx;4mO_nNhL?F%QgU0h$uU-vb?+2>?zh13}pT|?ORe{4)l^1?q{p9*8mjFdBcP#ouUnjfNK}U%~KbdKgU)u(SZ8N7KV-dH|&Z7zW)} z6B;@det#|K{?t{g-dZ8#6+qqn7#JT^zt{eagRkEM)&KAJ$-%E^1@-Skr<%g&^S5oC zIA!4i#C@uu^Zk(bTf1u2YIu8NG<}YyPgq(5(WB{MG(CXQ0Su3(htc!^OA8=+ zG(C`(9zf&!3=9fL=hvI8eWms47bq-2ce7&K=f#O zplx~p)%VEv>w@mP`~LR6JSglzIAkpYXgwdizYnVKzt*0G&;K((0Z1(fgYMtEioBk0 zugKER|GvQ&?1Sd>N6+U0g%kvjrf=G&@6qrb4PQu3gOH=?VKhBJQUZh=>FEJf|F3%W ziVG4N|Nob6)yYQg?@yY-fYINNyNWoEZ?VXPw7?%4o+q!_c(ZI6pCTt=U=z1_s3Z%-WE(t5zk!=YK%$xmByaenq4g)1?dy4DkIQp=-mI zGB9Yt&w~WFFITOCpZ^R=e~9^?(!HT;LqlWX_Lc25S^EF~e>flHzE!LK!|!u6-CDAA z)v90c@u$$WCQBI@xZvkQl&m#f`~N?(e}v{TFfhQ|w-EF8!|#g}+X}KD=9~Zj&9;WD z{r~?T+H^zO(^`&Yd{lF|Ka8fgIX^P2tL?8 zhE;I+kgba(7#OtR=U0TRW%puWV1WDQ`rd#!t5&Uo*S8{DOV|GY|NjTfKP6j3LG6a`Tu{_E~NHN=-Sn*{=@gv zfaL!nt+xTi&wr%*EuegOdjwSfuNb}W3Ksl>uD$}r&nhl1czOw48@iN%VZ~^B4H{#k zCAaftdk)sTT91}Xi3YG)9J*#}~S@L=I5axgHMBDr@}5(C3(B>wqs1_rLL z2>(r7!oa|=AHfgZ>&SuJK7q71_QTs7p<7ur8Iao_Yh4W)7#Kip3UCmFtbIS3fq`Kw znDhVtf8niDLG258eE=GtTfP1_qP+$lA9)QQATR;7M}8yn8z}#+S}}S)HY_{`TX_)- zZXbSyxBo)6p6f==UxUrPqwb-syd7-ew{7pHDOy^q;OFxiuLbw_;pI7~YzARi{yFXl z>hFib&+92&%fNsleV!bNYSnc_i|DfXP-x4&?g140IoJ zJi-N_v;o2}^FZyz(9lpw|M~s>EJp@Vdf5s(zxn-cPbJ3QW=D?D&`{g||Ie;67Gz-P z?RI1c4gJdS|NqRDf`SYTYnzi8LPLKu{QtiS%3e;=lW!Qo+DbxCCrIxPM;0l0k5pp&~T+`U^#iA53Qo=|Xo z`sRO7yDFF;3mu=BaT~&iy8r*b|DgRVp`oE=X#R_Z@j-qEVRHGP(Fa|m_C;nCxH$oD zFX$92FmNHsgW3~Je-Ytdx_6NPsDT2rUj%KuqZB;8u^Mik$=YL}D1pS!|Ns9()^cSt zFff4H7+@o|ZJo4c)v8tS^aGiX35T~Yrfvn#$AH5Zq@f&?zCvRoL2M8%UkjQ)L7eXe z>CehYfaE|Jl0H|#6C{)mk^*BWAKo7UrT72;5%W(F{tEbb6omf|J|7vn7BpkYfHeMr z&Iiq>Alkc-`WI|9n840QoJS66FC)wkTWhlR|F2z0^Q9q6SFKtApZ|h}7dO~&P491@pEa30!PK@`6sa88g%0|gT1~W!f z1bBJ{^?#mxjfIyFpt22wVG#n#O;b$~=krP&3tbzBG9C%aUyI=71tIs0%HwZOg6jWQ zuMp+czwaNqVQ~SXq49}Yp4QjH$B)ZF<;14F=) zCXTOM5H^Usv}RrRq!}}2fY=~Ban0JvF)=YQAT|i|&sp33==0~#AT|i|Pg&c|$Is6X zVuNtV(Vp(rt5>fEu|fFLo{ej)=gtMq>4Ufom$sZkG0$L5Z@0a;xHwpnfq~)kmQ70* zRaREQ_!rk`1chj5Xb3n#L?$eGA`!oUfgyD{g8)e6(wZiY(5!}r(|47OLHtQu5;;Oc zxtRX_Z(YeC2=X6@U&rwO|LJ#%DGUsk*MRu3A3)*Naf89}br!gNQU&6_dlwqo!~qJw zxDXKk|Nm`gA^cG2eOPz?LE9TIA@cwKD}vikq44?*rXNG%A1@)z>?;gI$O@_G}qwF{6OWC~uN z0(buZ(5;`>G(E6@m!GA3A8Rl$Jct9C4ZkB+63X!tqKeU1rhM``9S0Q|Nni5*Z&}XXe?sB zzjP}D11~2hs6PkN{vTxCs@E&w^*zYGRf|UJe{kUZ|4(uI6;wXqt^c>0tlh8w|31vV zvaN-47Odieug??N$^e>vhmYrg%5&uY1*q--VW|H1(DDZq|M$q;9UnC{!TG{lk2~&XVhU9Nw4d2-jfvZ#)gs z-k5r|Ng%Xp!T(jK1VQrx44=0+a)f?u`2X+!w3z~e3=E!L3=E={HKjPb5I?jqmCp{{R0oXEq6d_~A7W{;mH>;Py!9 zCkP+j-hj6sVc`msrGQic3Pfq{Vui4UqD|0D5VXE88vBk?b9apYKq#0P~B z@_5KSQ2PUE{YWWjy$Di!zI(s$Ke(}p!x!BJ@ndDNay*0 z*5iws+NQ(uv&mXTj+n48c>Mr6pLhCn#C^NI#i0JnRm6Dz)>Bc8Nc;If_y2^~BKiZv zEj$O>Kj863EyViykgcX`|Ns38?|{tve@J1~s#oCtB`8kIwk8QAAkDvn3l&fW36lK( z|2(vQ2hA_vzi;WmSaKFTUcU9crw6!7=bz%p5o(I)um>#B@B&Lf4O-u<8HL8dp*A|NrTKO05hGAoqsWp6moAubDFi1wiJ9hE5d)@o)cgN&~qkG&Bx6Uoia? z=ys6M(9j1UdC(jVG(AG^1AF%t%7>3`(SSFa-Eb&?fO^n>J4^(S(amLk;qW;=2q>px%oL;~5p=;q}nCo$mD zzX>h;K;|Qxmz#}hKYI9r!XrK&-h5&}R}b-++FfjCGCvt$|!`K-T zM6md94TkXZvJ)9V;W2$TXtaZY!8civAv`{u;q+TYu!_EHM~2Y9r40Z6w{?JY=q4*L zgocMQ{Quu^3ewA#i&_7hp!EMi_w6JUAg%8QkN?HO=NCc!f8_Bw zQ2npUi@2W$G~PeDo*$AoK_soy4`_VlYG^6AKLxU{bnhaG1lWAd`TsV@Ey3m4)c<+= z#KjmG7~X@{(|vt=2wEI5@K0$oG&MCfh4DA8Ip2-kUpJU@w)^+*-@jq<0RvqB@B7{w z$&A#0|NkH6G6+4&hlB%+91RaxNI>Y}5+0zu4#Ko9Uq;OzUhNBTe{q);e0|Hcy(Vj? zikd$Mr6mv+UJ4p7L>ljBU|{(Dd*3&Z90G@Rk&*^TEeMaMAJWnf zWPU~qX}tt!zb_Zkc{C<#S2Z270fj9Hmu{c{jPR zu&@}WVzmB;g#?5iF7*k-H=uEH7z;v=`VSHgFmkYj2QtTh40|yfR`~H`F&$^%KJ!t>jRZ)0<{^!3} zMWD^Yu=4Be>cT0jRw3$tLi~a`?`GG>!-vlq0_K3n|9`;Dqxbm#X#XD;@(_Bk)JG84 zjJ6->6(6t}y8r)~ctjZ(7)lse7(i^$TAUat8?^A1NsxgdH?bfjzrX;xq7)WWB+$$Z z3?OqEm>8G@7+IJZz~)0rAX3Y>QT6m~uYmgFO-+dX_1_`;Q$Xvxz!6xwR)Ha*ASMjV z`TzevXgz;yXgFg13Q)5?RbIq-<)Hrlzty|o{e4jT;@|&& z@bUlA{5`nS$7uYF#t$rSgXq!pFq$4f=>Udtrian`9~?wD!v`!&|M_n4d^`L!&j0_X zZ8cdN|5w%w>Kt(Wolt=o-v_PVe;fZDG$jmH0^)zYE)Hgc2vB{06={4QWZtEcdvNvO z`2?i%f(Bc7jJjvEJOia;7#>Xzqv-*b7C`i9dLT1BjMo34p2*Q~0I`1$be=}ZRmAx_p!xl{>xlDvKZfsD9PbLaf&hS!)Wq+XB8{uXO9{DCGJ4YkL_OBH|GDM}X$@|Nr_A zKc5@a-~azL6MnxqXubbbRbKe{{MYxItc|&L6)q1N-$%aB0_2|2^L(I@MTPVFX`OyX z%^xlQ5vdikd>Kt2qv?aJ^f6lhgM*FM`3JO~{{Mf(g#NUxm*%WmrF9By`Tzg_LG^b+ zMGSns9;kk=y?+&QzBF|IUTFBP_b~M)YZ(|qr<(G@_}`DdZ(g`!1^j#&(0aZ{>k;h@ zQ2oDp5rR)^|BjkJS{}jDCWszQ52NV;ln!8cG(8NG^e|fggOens=@HbQUWIhOE~vg; zwQAKNu;JkK_9koV>-WRYdnsL;$kC7x0pFhwy6>VSHXgn|57gh6+qDl~pKsf%z!4gH z6~13@>eeO!PA1T~91t5o?Teeasqp=PAp2J=SOC{gssBdx50d-}iS7YkuQHk*M$-c{ zDT1ld^e{xz!)X0aR{90i_gYBn84{R8yKfhIE>ArQZq+tAzwF(RjNbC1J zycAIO=Y#tD|LgDngsFd>1UldSDttbF+EzyaUQQ;&eEwFGwf}y+MVikyLAkGbG(Qf} z{0L0|qwzNyf6$}=rbg4lXnFuA1SmnZ^e|fggF}?m@C5a*SFKv51=b8+KX0;jLEmEq z7{7FFlK?|QLIjKty00q)={z1#egFOb|L-vQoNQ2ik66E7x>k|Hlozpn4|M+?^zv@7 z7Lfgmkk0=j)%~ODN6Qm%LV^;b>0vZIK$8NP8ch!)Bt4AQ|5($z+13!y`aF358Z^ER zx`zd<7+T+Jt-9nB@BJ_S4{n7MJrSuLB;?eLN4NquN08^vsVKhB} z69SYNG3jBn{s+f6sJ=xW&!4tcWbOa|)$jxKO1HKeGB7kGfE9z+^C@sdAf2}hs_*Y# zN1V3{s_*N+Zw-a1zqZwpBXp`NCyf95S>cqQ@Y8i6^?eu8dV&#?{-6Oe>fh1w7n&5n z)M$DbO%LFN03}A#1C7$dFs=W={dtu6`H;1%R;_}spM%OTfF>_+e_Lx6;(qqu&orD? zA?{!QZ?cqup&$maA0JfT|NXxkK0XgRZ#OjjT0YFYYkL(rLa!q2&)eHq+_(UFf1c@D z_+r1&{pX|W*+=iY?t$eU5ItJn)2O@$1@35hGg{uj%9~+a|7)St|7L4ftysYYP5%EO z^ZEDfVSI~oy~V3mt@48L|NnR7s6sk_2UOpO#>Yj&_A?XnGh;53sZVqN$c1hH?GB zYSk=idLfM>#+5KmqD` zdoMN3QP0~8`v$MTx9(M7Kt6xx|9=IBwMh5nfX>_N{I?t4-TnCWM84WKQh1U?N|Iy zT=;o=pz-`yRdMk1bwRuJ!fNB-`}4u$`B$&P`}c)YK>P6#=k0;k>+>=rpSNeSwsNP} zS!nVEw>SR%`wQPM2wG3rgf!ld?*36ejnXqTLPo=PG<=~+0Zfgihtc!^P6$w9G(AAm z!w{+eA^m;Ccs{6pUA2p^2^yXMLHFm~zyBZUeB4D6$mi=O3NSES2}P{W2i5=gzHWu9 zzcdBZzYm>?FmI87D%yE_cW(ZN*YBYI{WO?j=y?F6_vs)4WHf(4^A|KoM#Ez?JfKMd zOpT_8(ewaL2vB0c(!-Fc|4r7eLRz1{ZL7)J_;AGfJ?QzmG0@=rpK8d!fPUUycz8YN zOdqfk9msim@cJG!p1*bNYWR4B7idxdQ={o&G(CV50+bj{52NV;oD>FW{SU5BS0T>V1@*W8|NjqP zuMZl}U-hag4(x~j|Nq~-#=sDcv;Y7+o{z+DGeqs*hpc5_Kt5l0`(Bf^C8gKl=lg)h z7Zet(S_w0MG{21I7g$;V(WB{MG(CXQ0Su3(htc!^OA8=+$fSosTK|LA@9lq|KOYp9 zAPky+XJ|m2ue+|AfguFxygg8T|6l#RxaNjK0vZIK$8NP8no$Qfa-tH_`24rRT|*H`Tzg_^}Qx*%kPRmhw-=V zb>t|B2!pTJ2i5P0-(azIfg*2WI+CMP5 zUJo9eqvIQ+;~S&n8;I;Mnjc2! zJka|5lG<2!e;qWwe?K%7e%|iZtqL5WR}ts$?7FuqY9-QsyRfY$YvGsc{{Ii|--m~X z!`l;swmk+7kWu%I_8*{00Zfgihtc!^P6$w9G(C)_2WV0NQ)H(H8rA=x@$}HIU*YvN zsJ?%tg;*ayb?c=$T3lT4^YcsZHj z=l_7l^S?$ShW|nKYiWUl226ykHCww1>AW7Y!wYQM==mk1;Wt|TK(hjv8ch$Q=>eP& zpu}i;7$WI`hV}nfwEBP5u2t~!d8Ten6hQ9pFA_jqzYiMUzj_rh-w#@^Kh;!~7n;2O ze?J;0k0<^TI?28Ngr#CSib zzaM^mEBt)^_st9pSEq`?&*!_oS9s~gUq9e0`at#nidBo?=kbiDzag6bpb26${zl^u zniRm)XnGh;58#9VB}UT&jnV^+>VMGrJ->b-F2F0@>fzOJzyZFWk42GzAq;K*{yF>o z@1W8B|JvR}4pUQA`2BjI@q;f>zxTrALHqN6A#KnfO&>H$AJ70F4d2o5g(d|sHJTnq z(*rmmK#9@xFhtV>jp~2UeLSmHy~=_nkN=?cdJYMQ_5BP`0Fwu;?|++H8w=x4-Rj7} z%gf0LgtpU*p*-iBy;gGT6R{EfyRG%0|o(eyBy9>56!N{prlI;961)&HRW z`v3p;p|Sb@f9Y07j)H;+_L0#-zY%m^UnpXIf7#Y!mYj@?%rFB$_5Z3BFJ7SV zSFMJh?=zZS=#*Zd5ilCwqu~ur3Seq9J&dLYa6*6*qv>IYqz4++|DgN$_S@UT&+9i? z%fJwUyxtGm0DvZ!|E`*#`TnW!^LoD@eP6wB@#4iWc~JfT>eVaw{s9nw_3F|39~M5N z`E7{gH)w>7#@A?kL6ZWQ8ch$Q=>eP&pak901C8qcYkNhOBG>Ti;>;G$ezbyIu>krC$ztQ?17J8%S56~@tK!beLzR~g-niRm)XnGh; z58#9VC5CKzpi=!0TJN_C<$NELwd%`{!`J(F1u-y$;Hm!&dK@`KMG@=$E6#16^Y7n3 z_zFMp`8}&%!RP-$`wLc$_Wz-&Z?ruyWb+?121ngLTAx6Z0+VI_im2O>E&CqZFzTQ985LEvo_WPmt|F`W`bO7%Z@{C^eVeBaWwEQ$vXI3&Q_06O0%^lEJ-jE`Rbmu_WX;N|6opYIFa zKiG{}-v_Gik2Ho!y8X5|}-)|atzdtX^e*dnHeL5huAPlPS zSFJ#pKN^3~_yYyb|Iz-=XnGh;574Xtrbg4lXnFuA1Sm0@9&n@wD%Jn!;S1XDpMZ4U z52*kD_3z!g(CGLNI`5~xv>tw8-?Y7lB{(@z&->Asu&E2C9z6fQVg-EuAKkuDK92Z> z2HC^4EIM$-c{ zDS)Zb^e~zpzzG3LjHU-N(*u?2|LuE)m+s%ce?K%j{+Di5V2Fu{iGlG!_5Z*7f8p!@ z+6);`&imW8x3Fj7!o{Qa`9cG1G(D4fF=vvXKi2nSfDGV6(|Nrgx;q&>{&q4iv#C!qhyx(6xe*6GCZgf5S ze|Y>r17wsxnt!250Zfgihtc!^P6$w9G(C)_2WV0NQ$(i+GV6cP`8-#zUWM1^KaPg3 zojP?YeE#2Lts+NQSQz}ge^CEF6lr}xZ?+=GR8i#f{zKQs#KeSv9Y0$CkJkU+NAoi* zFMw#G^D{{CX#N?^Kco4l2bvYY)M);}QJxZ6|AY76|N4b;{@$w9+TGy5{r~?z=)PZd z_O&qX|M$%d3@G(K2Lr>_uZaHs#3>96qDbfcUfXNfvtq@H6)*!v;|oW8K?7(sd`80u zniRm)XnGh;58#9VB}UW3XnKGq1u%s(J&;iU|3az%P1deLx{v4jUV)ZXr@Xwtmi_<# zf4LH0!N71e6jA?&tYu(8KJOni{{QFCANcw}obH7hI4VDyzM)A0OpT_8 z(ewaL2vA})J&dLYXi@-Eqv-)hdLXU-ho8Swy47?oe6ipE|Nld`9=B{jy6-1RfPo<_ zBpg0J06OpQYA9lU;QxO|j;&j_ZUslq|Ns9%`v?B~L)`Z}8ecf#3mRaf;WHXO(4+vS zM$^M+dH^Q`C^4EIM$-c{DS#=Q>4E6_-(>A7wEn-=sxJ8Xe5G4k4ILa1=l!Ce?+>p3 zuOjaM5kHnBpsK2>3w9i+{jk<#?Yh;gJ7IjB?u9BCl^;#t(4+vSM$^M+dH^Q`C^4EI zM$-c{DS)Zb^nfEhkWl|4kN<~lHCc<;?FX9wKO~WmfO_6vXlQIKIPm}f|Bv1tn2P1R z|JAEI7sAw!#utwGf(FoN_>6`RG%0|o(eyBy9>56!N{pt5(ewaK3SbIndLXU-M;ZVB z|NlSI`MnAZ3CQRDaxgH2#>T_v|H143LrdZF0igQ7HCg-L z9I9yAtxszy#5F6A3&TAG+O@=9e>aW8C5@;|Dj0% zOpT_8(ewaL2vA})J&dLYXi@-E@bo}t{Xcc9$=dt-?d`#af!hNL49MsGg6{W;4@a#3 zKPHZJ%AGe zlo(A9qv-*f6u=bG>4D7pU;NnTCCKOfUYY|s?+6f#E9B`GDK@ z2J|dkvf&~DhhSKKWM#wZteYjV9Wmh|9@$YBgfRKqNXtZ zwY?#0<3d8<=ly}|{{>Bm@c_8{pc+Q`qv;o#6u{JIdKgU);Di7rM$^M+dVnScFg2PU zh)fSe*Z-jNepYP)2QFy5f9o>C0|y)uV0_ShzGbDM@cuq%{D1p*#CpGLdmTAUO;uH4 z>Ou1dU;e;&|Nn#P|E5KwNwFqv-*h5TL|pdcct$ zh^+swZWRF??h9Y=SGqNkBcY%m0vf#k!R!0K{;h@cIT#pfYir?r$bLUgPMAEXzF)n1 z6&HdZvUc_A(eZy+c#Ni39O)GrK%?O^8a~jZ0H#LM!)ST{Cj=-lnjVNu4>;<7Q2o4W z)haD$aQ+wH7qa&1RZ;l*f6)285iw!#{e9@``&|tg7(zp@io*1lZcR00WM*Q3@j>$m zt5=Wq_hI2NnqG-auh0M+4X@Ggf+htpHJTnq(*rmmK#9@xKxBHrQU8PX-I6#B*|D-tz z3^8G-^ZW0ABi8qGCxiO?q44{ELFfDMax%mF`=ImvfByac9%de>{$I6fwEl;M$7p&b zGQC0rY&5(^!wZ@ez|?4Z7)=l0ga9Q*(*u#|0Z08GvQ~j3As{9U8l3+@{r%9;uoxI0 zw7&o9)vNIS{Iib2jM#uYM;WL^(iAXj(eQ#M z1u!+59!ApxI3YlZ(eyxOdcaZtgU;)@5{la2kK1YrpZ~u!M*%dy58uyMy0y)ak%dXGHZJ%AGelo(A9qv-*f6u=bG=>bRm z58A&M8XEc+Y}o(*;Qs&L(pp& zPk3VZKYCsh(fJb^Xrt;!^A9vBfT_{+Fq$5~2?0uwogVPi|L?EPuYwx?|N349j;mV{ z{-0%?37G~T}siBGospbi+-Kbqd5NdZiarian=08R){Vl+LB zrUz(J08^vsfynfLqy8`G0gdlZg^%yYzHc>LiPXObt>=Ru?)M*bevj!|bRmU%FM11ATmd&HB;vd7;U1bUtHr zKBEVg7C`i9`9!1g2^6@a^F^cO&1iW;oAL%n{eNw*$=awd@$miqp#J{LZ-0J5v*T!b z98Hh3NsrJ3Hd>#K)~C><0H#LM!)ST{Cj=-lnjWZ>9&ptErCUXob|KB*mu~&CWHl0h zH2kR){-fy`90H^1X*4~769SYNO%J2#0h$!R)M$F3QF_2p|A($MUAyWPV!wXKTC=sQ z*CY6&@j;{b0H^lR^#G&kYczd9vjUhJO%J2#0h|z^#Ate;QhLBq|Br?*mBM#4y@Eqv zG(C-`CvZZ55~Jy1G(A9*0+G(JY_Yj8q<5~Jy1n52i% z`X8L4N7M5#NzdTe9Bn_1rsvW049yB)YBW8JrU!6BfD-WZFk1hELj)ckVBTo`F&ZAD zjJji{0;M4rz^}oqlR#sM4n2OQ(9o+Fd8b71)1Iw!*dNe(ZrUy_ufZ@^fFtXEw z>DJJ-U%!6+3QG_FzJKV3u|ag`R*|KvR;^kDJO6jz_tE+v6fQ74ntw)i{uzz`(fEgz z1t5AfJ&dLYP&$C&!JZxn)&HeiP1gqB4=;z+|MR{J^zieuvkw*j4fgOKb>C=t0n1Au zdNe(ZrUy_ufZ@^fFq$4tS|;Y&Bi`|NnlZ`k#TJpdcdRKBEr@7=mmj1Sgh%6ZaK-0ne2m5iC||<3HPd=JgEgx)V9Bii)a2tAB=l-`%tL`T0lde`tV>=BLs8 z1WgKHYBW8JrU!6BfD)tWVKhBJlLD9;Z0R9%?UpGG3=9ll$Nm5R-()KTLqb77L_dQb z12+RJ!@J2z9IC3koQV4W+~m>ue^_XZ&QA`u^gQaG(ef6NJ4f^9Xnq*Y5BT!Kw7nur z|Npnw|NsC0{{Q*^{X+LTa>Rs$g)=iSf~$P~DJ+tVjLcv*h}idCBWbk%j|kDx{56`t z5UF9bz8TFAqxoSpKOjP2u;qu)wI*vU7O>Ut2?pVL>pI(!9)3C8ojKaU)(|6!pwTHX(~^gZgH(fS9GJ4f^9Xnq*Y56Jle zRR4D+2MNK%Lf3-E`wI%{8T=V+88{gV=Ol5Ms;csWD|-e82Cvm-y`b}dVf=mH4d#rF z|HDFWw0s#YUq;IpL~a<(52N{EG(QYveh6I~vUb(0SFd1h2whvclwk#;zhAo7Wa<9x z;PL+Z|L6brD?RGS5fKv>#>T(|uHw%(H*s(>GDA2F3=BTq1}&lgSFHj|GB7aA`+nSW zwEqta-O=)Hw7eTF?-03RG(U{yhtd2nkof`BzhAZL)hd`9Lf3{aU9kYMzAt2}Mi6+s zU-!S{f7bu3%PbWcu51?-h1Ku+OI~L!T)6^1;QxO1+U`}Mi28ru_hX5p^*=0hN6Wj> z@@}-eL*$0h{4kmyM)Si!<_FMze&qXnLO|#F-bc6yw7&m9LPEiP=J^b93^EM*a}qhG znyRwG>i>yr_~-ol|34JQ4_LxKXVt1zaQ?pU8AYS@KO#Iw^ZRIiN2G?)`foHpjOK^Y z{D24ndgljF{l8pY9kiYw?1<8>CQJYQvjg$p|3Ck~zI1PrKtxPP7zYCjc*OtwWGj{zd*Adm>NwFqv-*h z5TL|JPYG(U{yhtd2nfcatCT9dV)gM7eFIRAfs$W{f8f`W(`Z3cD*&>%nmoF)!c zUQWp2J`4;D`g7h*{vY}uzP_Ijf8Tet(er=6feRr9y1h4Q|LFK9Bqc(~(eyBy9v~?J zLXM_~;hi2zw~8!Xwdxe83lEO)YkT>7w6s=v{h$B8{=e^korz15I6}h0;p_K4?r~LI zxpFnUzJJ&4)6B5yKYYTU5P#qImeKw{IHV!OX#N`B`D-+ON8=Zg(;?(&dKgU)kdy!+ zX`LRx`}tRC!RvPjf0Y)*_W%ESZw0(Pkbk7NIrKkbeLo@oyzfUx&;Nr3_UQco=y>nwc<<NSFKtFJMZUy$x%g)n6U8BI0k734hCk1 z-sWZwQ(naVJ(-*PibF#Y{e4pT^SQwl7KIdky zN?N#ZHT*oE-pM}Apwob0>-|XO&x7p$V};p28vnG7|IzRr4PRJZ1JR@DVKhB}(g6&Q zriY=G9zwT6=Kn>eDQH?d{g7UctZsAMXe8S5d&9_dU0HwEqtc z{n7FN(eeM$@&D2Be?)OGnjc2<1K#`)y4G~i4xKYZaPa z^p;xcM=lA=%IlLAkZQ$ph zvpVblf5iHJO8N7?vpA0K|AWQG==k4g|6^$NKStwgG`k7UsvTX)usGTK|B%9}Rj;aG{L;ON0uiA4{{R2`|MT9nrzt8hgoaL4kut^Z-MGn#+soqtB{8?C<(xo7~;Y~EA;;V z|9}3!Z<7E6LulyLsr`)F;2Pgx$zlOhRZjT*d-ZKqxo-O^WSLrkA^=qD}t%f^e~zpzzG3L&^kRp>w9>I9yEWii8Q`ny4Q4R z?EnAvQ0M#)-RsD~&`=Nudxd2E(K2VKhC!(gKJc==1=p@4328ae>?d z!rS*6^sHK?3A4 zAOF7rrUIn?|NsBL(D?8TpJrP_*8Y$G4?q6_%>Vx%KHdacPqL~>qYb7Xlpa^DYT!oU zH?3L+<4*yNKOwC*Ed}%I;O;Nm3L39^yB?;#bge09{0h;2UAtv20|V&9D2NKvty7mG zHFy7;ZY>4zw?bt9|A&|#zW~7png5>&#^1UZydHKnjK2lKhx@k#yk7P{156$~e)j+W z2N-|aR^he(|F43Nw@rue;rXp}?dLVCRxyOb)Q7Iksb*kcfVaPGpSL<9yWjSHD`-D0 zO!@!NwV6>23=DAdp?tXcp=&)s@<{wc8VsNfHc%5n*HX%VY=CMW*gZ)0q04tAF)%Q| zsKCzTUVLG+z1oKRmq{gYFOg{~vB&DL6j9 zeue3Wq_=f&{Sf}DeK7eD(E8<7tMp*}(5)e$^nsM#OF(>>^nd7hD%`w*F5gG(M=kFL zIy@lh1Nl6h(xnUx4A)=@D0D5D4=+DWx1y#mXn!4EenR;7;pKzL*0QGfhL|&gKyw#B-AqKHOA68F;NAs=vnASEsa)gG4n&vS;uG}qHvRL5i z+U5qBI{i65&D@-b_4@&Hy0RoBBqU(+qxJvbN{^uW`|n>w{r~U#hi+I}1ks@S`Tzg_ z@bm~uKdb&j=Xap(gK#$!ML_l=`S0=)P;G`Vzi?(SA{3!M`ac81euTI#S9EuNc>A{7#JA#Bf>XyYoY)H*H(CX2;I6!fq{W(FDPw+@U*>?=B!$^ zKo`UYVNiPg_4Vry5F3QS^*<;|K^$oMUbPBdT!P!j@vpRYL#6+lZVg!*`u{)|j1S5$ zt5&RlxBmvZz8STDaFw^<^ufgiPamdRLzjlXW`g%8K;?1he?J8A1pZjL;2A5*ZbX|`ZF{%Gzg+# z_iohi!sI)G^Yd3#n0g2wHXgBi6)Jz#swZIeuC26~;G(^w$yPE$AlPhB|oqy|l)WV*#Q* z|DS5ezz~C!-cj<)`~SI+{C2hVzt4JRaRyL*p2QJ4RTp&C4p`~LH9FNR*Q{Fy<}ffY zyqoRYJZH`vP%j58G+O`DHvNLi7v%AIX!?P7NTB0I@bN~-_|mHDu=D~R5Bnw2n0OH=8WyZ+B-vioDQmX&||J}Pr#taObmMAiWhK4eL_{PQz43YQ1{8b>nvJnGA z;T$j@E?+nYq#vyQtg$i!gTy`X_|~fb|7Xnu%x*4PDLf|9wRm$ZwmrfaF(k zy?Yl5K9l0o7La>ZF}!;ZHM0ZEWteibNg(t;7gt9I zNS1+N&wmDn(EqDe!T8lU_z^-7^~QUjD1`EJaS1|5&%8GKOqA^N{-LqUAd5_52fLCQbG zcqepz=LJ~uKW6y|3IG3(VDhDFML_Yz4C909?^THA-T$rN`K3^Jd-3|-f;p>Jt%C1| z3th_$8gGa9uR=lThv65z{uTz+=f4m!a6tJgD}K>_bVXf?bX}= z|NlR?R!xLKrx;W|edS-r0_oAepX|u6l^4;WFI>{wZDM9-1~LPL_2;ac+|tt00%C*k zX#G#y`W`*Mfbu(X{~W}Rhxf++{|{Xox^%??#Ds0=+OVYz3@hO60Z@9c|Nj?0pB)OB zPlcbyU;;{S4T$>v(;7vN3Z(WUD9%9`lAiwmhxS(?{iA(rMPDa@(o-mCKS)nH69WVP z6j1%Tm*H%bGWd?hPivAmLiZ{txIpVKp}k2QUso+y0G4E6VEDAfBPf)Miwk522w&Qw z5fs|6U;&5?!opiu73u5i>x0-JEWCH)8lCUozk}Ey{CP`n_ndk2=7HECT)H=4&YCrA zK)pH;mtoVA!Z{2pR>04X4B1<_#MIOje%{3AEt{77`S$G_STO?w!=*LvCnqE%B*6H6 z-MP*8@7}!&<6qvgDht^?lh*hzS%GB!#Vr%pl$Ms3!qoFmS=()fl%GnrzMHJ7inzbp zcB1bO{Uz#9KGzkdDt1vBs8_YBniHx%+g<|EtpAI-dgHTp|-?b@{qX8*=D zz1*AiFWgkA3uJ;|9{6nff7)9bz}$)tpT?$xBpW}@eBgD9||Dp{mwt=_`^F0 zAG3V`a|bT@-f9Ju@dgvn_`+I5`ECNP?ern}=|AYalw+VF6L|fx^{B|w|Ns9Z%}K}M}9+dwXkmege`TgtFt8nws=kw6{pz@?1X+t-9`7_x0p!N@ZbT@ z*MuU~&tYp#*8W0iZ<(ysVt5b%(_ebj1Qg!QFn;7YpXybsR>22!Lcrsl3*haoQc!#% z%|8mSRbXhSL&Wc?BnE~TNcA^pK92bM`~Q7t`UAP?|Nr-UTtWT$(9lp>(0qKg852Wa zGpPLi%JqJ26u5+)`3*E)zj_s{fV;G1k-%4Y>B_)hu;f(I!Uc;K!P2e4oZN0%!Gje$~TL06xzDLh*p!EC|slNdlpI=`c4^QAA{`=Q6;P)woZUyy_8Q}H%y#I*; zt6m}IdqDknJoWqgCP@DXTzYj5{Fr20Q}>%=7>0FndYNlP}((bCe=0-zuKzjxj7@$vDXxC7ykt(rv(79iS>o7VJpKYsl9 zF-Q)CMYf*nUcP+!au6GYH!WG$Ej@eoY!DlSLyoTNj!|2-OmQlR$H1UJWf4bQ0|UeB z|BlNU1Q;0JPj=)8jX%Kf|Np!H&L^&zTyAdd{Fxw zECebq{{R2~2h4%4Zx~GVKd8L>|NlQy`DVKI|9WJ;$=X#9t|Hn)TSJ%bi~9#J|4O%- zEd90r7koZ_=C#*Jt5&UokC&HjT_nN4@B&_cn`~7;nXml3MS)`lQvc_vZb>UTh;S&BS&d$!xAUP18 zxP+$|dB4YK{Xg3Or)B@2()zy;RR2p$OM}ub2ur_TH~Bl#_|m)C1yfpETU$YLARMyw zb=CX#@85&iAbfev`N@JaXU+t*4M6-)Yf>#UIyyR1UO`46K5c0d2(N2W`u~5~9RWiI z1_N+@s{)U2FaOIB+zD=9hrfa3?;HO>o&V6#&_oCyv%LUX4U4>

      PT6dIk~DcplPv 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%0AJ2&~6Cn*0R>wj2C zLugp}4dIQ}@1x-XO9>E~*zf?AWgrYHuYcO^hu0?x91IL=>%-yW?S~aW<$EZ+{O^ha z*9Y+R%jc`Xe0Y6pvKFNNFT8%3wiQ(Wu1BhG9XUe3g3>L>cF=gV0z>F(1b^Dr#|l@q z5d6}uo?f8B2BI2t9_qSkP+#fKqaNO#(9H(%Ll;1F|NjpfEeH(_h4=SC?VYRtL*erSApZLGwebEqi2pr4 zR28P51=1dZ_y1Qx;s@S7`n&`bKZyFebZa6vs70wEzD*a)9rjhdKz9p2EY!;q4y~KQuHJ9v`J!8wEi3uR)dn2i5

      -y;e3bbm$aoaoz0mOxcz8kQE0E?}CNE`RV1Uo3l0Mvkj$xmFu!0-a8eFGZbh=a6m?*GsGFVSWQY9C%T zm12MldaDO57U1QCA3x7v`VJDdkle~J==kbE&plVIT9pNJpTQD#uh39c`1!i;CqMJ# zMRHhzq`Op{e(Q43r z?AUxCi^g1HBM{+kdVR39)gF`%5M%D{l1zhcD-xOzh76OsqHe-+Ys_#i&l zsx|QX2Q*)z^#9*=nEycc=T&S)^!K;zHR!2F3eVE5T~VMTtYGRv^Ch6m+hKh4__@A! zUG-HY{ZqGIp2Nwo8ty;P`UQC7i_TmzQWT3sQ!Wy(J->b-(ie!o3hBNa=zJC2f1viluU|jl z<1?XKLze#kw+r4r6<+Hoz)*lVpBOYAk39ba8czy`)ZgGBL6i$%E+{I%LJ%Ivx8U|0 zWWC7yd(lTEK>Vxb>zQmBK%4enWic@9UAuY#SQ7&SgL)9V7bv`8{J~cL2hIW2@1d$N z_g!4W9(0wrsR_paw1$7qm220o!T1Jq)^&gT_U#*tKU)98LIOgM)cOSC`_cBsP>Fw7 zc~-L3bS-EC8pa2e$9-t^^CL9=;x6R!*<>vTn!FPle=!oDP<@In4|2~ctpxb~YEb?4 z|Mko1aQALCS^Mw*UwC~B8PEL>uOC4C{ri#lYeDC)t%CO_!RGyck5oU2EM2v3)g!q1 z;Ql9~e!_I0Dd;>GB>O_wBG)G%_a9n>8eX4}!UHsZ0bg7JUY}>W7Je8Ul)vmhqP+mB z4>geVgZQ9ahj6dSS~)cNWk~nOgWR(KNgmxl=zNg-{{R04s=~lllx{s0g>?Vye}fjt z{j*@n|NsAk<`eECrgQ$6ZdKq2y*d>>e{*fGK+D2KD-iLuHe~H;r1AgKts+ZTX}yB4 zzl6+BJ%G|0^

      g&+E5czd8lR)Pc zhhCin;-A|iD(DIxPr1tc|Nr}HcP0jgOc?ZIwTa7{M z_u=&+I=>7uehRPOAnVD^5$eJ9=>oWX*jmu~|9x;isDHj{)e87{H-wLdu(D+rfv^(h7|=mW7qm{filhJKx51}((?EztV!u&|^PAhSUj;=UC~{so`s zg2sOZcP~UeockZ059+V3TD1z^B?r~tt5)p_0NDk?koxu?e8dD)U$0ukJq;uW!XWkk zK?lBrIR8Q8DWYpvt!jDz<^BijzkmHLj1QXc{{R2~I~X5q-l`372SVJp9^PLD$!j6C z7eM{}`TyfBVfwf2Z4vZsaq2{RCzh!^ZlUt^L4Ac zk?c2FyJ|I}eFfToA$nC5?*IS)6+q()@c9qWctU7sJ$!y)ZLtD}sHiBUKmPy!|L=PZ zT2`%CvGV`>|IzQ+{&R%xO%#Z!Sg@cv4N_r$+|$Gnx^~qn5lHrDn6T!F#9t=FdAcTR zS0)`iboxD1nqkwC_02nX?%WCEU)pkR^7-@U&%^i=m*i9@B_$=n_yb-4>rZ*4@&EsR zeVBU;mZ%49J*IMSFK%q<;s^YFur%SPcgi5`2YVuh!3xf zu<*63eTwVjL*ZIP)_Mf(-@hN;1qaoah~06Z^#&mKAxuPfKd3%N+26g^6m;Gj%z6Jo z_uKsc{~x}>093!O(n7RvO1FMlvPz4~38o=*Yi~93di+pOdxe1szWxGSzyJRWUw=Mr z>*Xb@Uadl`KiisH44R>anHPCYCwtW@#QM&VwYk*{3{3F-2q5=pFWS%yQx6&s`i}^X z|D{_qgOL0Cp!Jq9VTkqpkop)Ae^b%=``?f9w=7&m{Cvyxy#_7F@eNu(7Zw%<->(U> z@Bjb*@cJLr-iXbujfJ^i=J|8Sl`B`S{BQHW|NnhZ{GIJiIM4wu&R7_v7)_zyCkHe*4V6WB#6{pz%$36Qyv9 zPjP5yD7=3O8XrJzZ)~2^8HL<`o-{`%d+OAw@bTu*wdboD7#iUF+QKbC>CTn$y8Ga$=13oYDDXu{BpiePR_I@TN z4p?~gR_heke_x*qZ7-=O`2sQrDDwZFbTg|E*;pI-pAr;zstT;FTZL#Y0TJNEzo|Dg6jY-}vtLGbz? z>H*Mxg6`M<>+2cLGyj+T9~ZjSr#T{`-~c2SFfgp^)~QC?Zci5fD`LAoLvOc>;hz;S z(-{~hu6gbm`X4dAKq-IImS-sD8O-TQ;zYXd9#r3N-@bi2%mpC+X#Kx>H7q>#eLpvu zkrA<9VYEJgg$#rq4G%~-z{uem9?;_Pf9cxXYS3w8IQd&qN|A#`cwar#=jdS8X6kl;dsZD`4t#s&%qot%i61|L0b7XRlth9^T%`sn#jpw;r*dZR%d_;?S#G;o}FP zTh}#%mZQVW3)^b4_V?{q@bhU2_V+m$7`}fmhmX&L_Ya`V?;G?W&+miB6X3D`|37;D zkIqN0|NE*@&l3XG_pe{ShVK^y@nd7-;p;a-w>okl?=Jw=|8aHy|Nfu<|NQ^^|KCsB zI&q2DsZ(8y49pBH46F?AC-*l0{}=uRmfzQP_ck*yfN}&xWU%o;?$y`VRff2Zfx%!- zUpMmox1jod1lIrX`+?t0&YjGK)E?rWb8a%|eo0t(jn@CLkbuy`wSI&6Zgji@SNy`t zfAsQ~5Fa#O%+%BbuWzcZ@nnPU=YpB%Q>~M|di82}7cHlnCmU(G*?&;`0C{~rIv-S@ z{rdF_e%?*wx!h_{{)L$zx;Av_iWP|cbs+bwqF_Bgc)i&xU#{}0~Y z0kuz<|H6m!|CepuG^c`L75sc9P_Z}kq|9{9< zonl^9#P~d9egQH5585vo8-E{uKi@U9`F%t_f|v-}AG-BzE#ChAKg96-f6#mi@_v5M zd;{`&esKJ)S_R+FS9xyJoc#R!e28uT|F6YT|0AadQ2mc;K5G4Myft*~*RNmU?G;e? zww}+=XJcSz0O7(VYrDh3{&B(lS+E3jejR*xpJAZ+o7SA`4!t@Rem~yEHS4_W%3;?@QLc zn;g1|p@9+Hx?^SdwC3IHP^A5e^S-~E%*f0PSquX1ckKHPDvw~{32LE^@(~wG4}5ss zLyI3$`RMUG7tOp{D)Z6JN4I})@L}aEG4(z2{5Gik-W8Al@1KUQ)h&Ji&PNavL)X4< z4n^YsIQqUh6sZBQ>t0tB=spvO>i_@0qsgPIpSE?-hzGP}lQ=>et)*|HIp3==1yE_P%dM?(c*4=e>IM0$!hk;tREYHd(8Mvi`wj z?f>uJ;o}qE_imcw@9hs??{UnMfdPH~ANl+qko!>0$6x=O>Q<4p+10C=Si$wbHN&SZ>n1Zal!bxxGYBvg1uXHY{&M~L zCI*J7EWf1w)rB18ZmzFRg6`j7WGGm|Q_alDjc56!c^CME`~pMimae@QlY@#K>1>Hgg77AE$w)p|l{mL7ctm}SIR8$0( zWMBZdf4O@*J7N4uYtD5yKU}yF#uwh2UA<$+jvX-mr!8wI7gSVK!1%&j-%Wm8TwDy} z>o4h<{3k375+4i<4DV)pqlD+Qy}gq;I}!Gk?iJa(`s?4nF#V-_O}4HIMVyxj;#*z4 zdKDoryj5rWwrwze!IHJzd#+r$0^_gBN^wLEkE4MH4M62JOrBEy%B&Pe`>9jm;lH-o zyLv@9!oR)EE3=U88z?@k{)P0vU_8)z@{qNN-D=qQCTsVBGB{KVsQzr=N37olnTNFf z9=!gY6h3JE;Q#*!7nFg{uZPz@|NleJdx7^qLG~e3V{(f>yJ7{R1pu0_N1S#9n(xpljwnbt0F9piKE2_A|Nd_!>U#da|7+pn>!9<4RCzfWVfsPq8($&31Kxjt zG~E9mls;B)qKd6Bq`(M36#1CjbVET4@ds_wwEIG>GvwS%}J1qZyzdB(F zDE$o-zvL+Ylvl5A!29=;)~uUsYinx@a}TKhKall*0NVcliEDhD&CL<(4NCSJELpXJ z3BCleWbed1NXsJ_h~+2z3;65sH{h=^=se5^3GnqeCTkTq82%&fZxDg-p|Sn{zwulL zkbL<04v3KOUIm5)|3kl4K+BMdd!XDI`XAI*0I4up>j+Z+zYD5fe~Kdq!~UyRGZ@b^ z-Dkef9J1DD^1p(B09g2+o&CBCbh^l3P`t~uAea3OO2?}bwT3vFH7U4c^nzn@%; zRR6!5y`pNxiWTq`GCh-Xx>L`C`hsU+Og>$lAA@)~Z+sjiN8vYNQ z#zFD@Z7+ASE_WCF{94fc2$<{nL*eT^FM-bwyb3=L`1ZZdDA4_FAhST2(D+g5R-I(z z{R1XT6*(fp!r|tF?sEuT%M5ql|Nn~wLaVCa6Cj}V{eQpy%>>y6!mxY;VuLWKy%HK4 z3Sa*xjaL7I+9yccFaCqh16;q}-rkqNk0FjBkKxi9^&q}w+t$F${k$co8FU;ro%!(n zhJ{OdyH$|N=fPh83(WCtR##V7hlSUay#h;EO{c>9V_S}v>zi^YXKL3 z3Rr#URR>V*|F7VG@KyzegoK0)P+Ws>Z}npZMovz6dzQb&r&#;y)vF*m5bh~vU;v%J z0Ahpil)VZJp#Cn14Z`_7tFqvQ9cW{0wNG(JX=y1)4usn*85qRG#Kb^#KM30#Pp$m* z>(?)sdwnMRbgx>47#|;KzW$t3UH|{@w}-heXEI+;O<8R%j4!lwbrW*^Gg|+T*8iY% z4#S}Pc0l7PqkKpR4E^v>cat_4wEJ zCJIb7MT{4K<}>~vb@0*af6(~Hs#S;)0nqt92NDqdx9@usIi{K-<{vDMg{%!h>fe`c zZ4xL*K+I=A&XY!3KLI{p8lAr%-hK#Od(0Aa{S4H5|3Tw5uU@@+0po+}fBXIR`gsg- z41Nr@4DTniXmW7ysKLt1bCYwM8IZ>Rsm(W7vbOvG|Er=f`zB5~*X`-)=?&w5UUCj) ze0HeS|NKiP%{k=c%)y35is}X%+>+j7X|N6`%Kp92Cesj$(Z#6TES-v37$Zyn`>*480b7z~H- z*pC#yp#JpzueI?05{Mu7cKsQeF2-w&uNIkat z|J5r*{r~@eq5$&x&}(}WIaE~<^*?BQo`Yk}8jx8a4B~HS;DUG2uI&|Bx&VHf5aj$~ z26$->x}U*h=>xcL{{J`I8nX85*VXX-hT!?5_3Pz8W`i*3eE)_61ra(7+6=x7c?|2C z9U0hpc}-#Y<6QT;X5{r>l=4C2r=g)=dtv4mE;%=O{-jBhVf;^X-gW2Z=H|lqL%sf= zw1j_&xVX4D%s+v1G=t{MnKK8*H@o(J@~Tzqm&5p5&j#=PABxy-0p?%5ss*Y28~&r$ z|GveF49v_c;VB@e8Z-ig*l*lZ47!gx4leJ&z`(G1H{w2OP=5aN9&sK9h#&sH9c_DK};|%0N?Kh&kq0T&L`lW ziD>RC9OZ-VI|Roah#(Xmpxb|u??(im&l~y`eqRu%zi!HlsP8S#U7mx~-3PDdSiKrC zpH6!H?}$%Ts2@oi@K{~vV41vrR4?ePKeLnr*7 z@c+>NC;vZfX%fiDN&@Y<0YxYHyob=grttf&K(&8uGUEO(5dZ7{|M2xHU_+7CBNO5m z%wb>vjX!|ueh>~ttN-u)XO09p1ZEDUe4oiWptJy8f5^b_X-h`c|NZ*#`<9HizMCv6 zCME{64^;ny#y4R6(fWUM{vSC#;;Qdq=>;Ya(gVUJYe79gM0>boEvQ92aC}gGggib6 zIp3WNp5Lc!ojBz`1L8d4??*o`L7esj>K|^J0$RTf@*4_84q1!8|4&){ z4_Xg-HS{XHfm*uObnW;3x2i#L4Z`U4{d;JA|Ns5}`TuRsGxN>?wRf+YvNAxnfaPyt zQRIYN)d$WZzyGi30+|EmFfcF>;=enShcX`Px8~erQ2PR=f8vsJlh2+VLiPWecSz^| zJ59T^hJVhrYuBcM{G;e{>Mm$MVt6=c%M=5HFvA{?No#zYw{PDLz3+&L0i*wqrTz!) z=Kz@p!sjOIR9C!Mp~1kwV8GD8aCqVppXSiesdnH0{{cnA|EYTu1(J~Fk3gjp`uflH z?-A#df#-|X^1|1*PTdMQ%>iuK|Ns9Z&M9z&h9l0C1i1l(Ve<5@|1YlbnH+l66uy5# zcrX7PO)V|(eg}}djJKYf3|fx>VuSE#{Xe+Z|Fw8JJFa?#*gxb`-Qvl_$P4dZfX>4~ zUjIK(d{}x13Ty5 z{~ze2S%@0Y{_=mnuWyI&pz8nshgYc}`TvOHdm#GX*Td^C(D*k4!y>r-gxpW6Jjj3L zi0uR5_4!RZ5dC?Oc_`;KuQgi>TC5B6Pv}~+wV=&WFg|VS|8RJV1k}F|{fd~s1@Zr{ z)`t6F+SW-+w6wb5_d|$mRp5vT1CRH<|DX4sox=)r|M6ARI0nd&^rtgP9I9(q!@KzT zTXa#@`}GsWzY0Gf;M|$KYS8!yD35^f{O@ewzAA_f!UJ3X3j_r~&i@6khZaa${^s+R zzV4SVUve`rD7K#Z_y51i*7cLOZ`WclY`q2Y#{bZ@Z)d;cVqmxf=KcSFam%!|NZUL9 zgZ7(%H*Y{sm?+yTvNmD;|NqrY|9e1bB6KVNlKbG+fGXoT%m4RH)^d2wn+Mq*Cde?m zW7C>*lS4wnet^P;A+X}rr8Rxs*RNmIXZW7*_vL@kc@^(wo3e7l=bJ$HM}XF+gUkkD zPc>5fJ}rKD>GQUt}o*11~S4{{O!B%MyEgd-#=F-}WkUfZ87*vp^W^4y5q` zTG#)ZmY|O3Z(P&ct*WjDUw2uiY` zE%M-`w{cD)=)4%Z^Fe7Jgu#wLO8*1R2M11QIK00P;&1&L3SXc0X^sNNRHXB8OSi78 zW?*83??(gGpXlcmtXj2-3*=W2o(kGe_#biJ-?hCaYp-723g2Hebt~w^`Gz=*v=>&9aK1izeNAmXsQp0A{y${>KBC1Gy4GYV!>TSd zP~3oU$l7I&2M!zn?PqxZKlVTSaZ5#p@X)KGc?@jeq#Q73F^4HHqJuwi$@|%%{~6%< z4Rjv<|5b?d{?YlE>eqJv|Mv%;pV8}kbUsb%e*uO?6PNfluV24jpTW`LCg_sslCAG1 zhi>I&nEnP7I{*KduAR7KD+6LZWyn_3rAXUP|A(#>S*pPgTJr)?PbfWr#($9G_uuyq zp!IMN&7kq3ttM+;@%Z?~G-X#Ee)tPBhcLw)}rdi~$xnc{fL zYZZJvXK5gV!2kc@@b#~YG#CUx^#jcR^y0(vOT@WEfzbb;9jy=%`tzGm?7wwSfgv)z=o;tA#+lKJ5KW)b`ASQHr;Op)vp zUdq70jWqr-b?YJl2Bxj>_QH>&zS*l*Er5@2g4#Q)SFK(Ka}Ve|edPUcgvxVj%Trqa zgZAhDj|cbP!CnHLhY(-Ce;=3w?jM5J=fT@+##e*KDr+i$wH6mkKl-<45THjeEfL{VQ1dn6$*V*;G{(KE6M3O>Vc9)oA?> z3!mY({~x{nN9VVADhR|x6o8hcLV`emfrEiz75sh*1_&RXzG%gVrT-=Y$c5-IeySy? zHG&v_r#Jtx0s})FQhf-j|Ns9lg^&NUD1ygx;p@}4Ze10`$jE#M=6-Ph8>xOj->kq8 zgJd44K0h0d=)Z&33&n=Mg_{qyuNE<058{Vbeua-(ddNt)M5|Nnm;gAE6*hXaile7#!;;T`@T|5qe}{0_-%3=HV}wX@ew2HnpHlRr1RO_QM^0lwes-Q?F<49tl8V$kb% zLVN=Czaq-||KO=_KCc1q|Kny5P*`>XJU)MZ^3<)|3|s$02IPNiF`CcY#|F1y!547JS^g2v8WWH@Bg8P5l-ohTPu2b;& zp;J)|3?Y#DA+RdYcpNX%c>-d`zAOP}2Cn}y|NZ{258b+M@`r>3=zUR)4E%F)n;Ak8 z^ShXQ-QolBQSkILX^C$!Xuk_AeSO|?Zu0#3^XJ3(pz;6F{(l2}{o`=!|6|twi!>Y> z7~uZ(X=dOE4gC+_zv)vA=EIT)1FiVr#1FkcZ4m7LL#cm}s%!B6^iag{GygYEQQ(+r zikJ^JUaG)Q5Qb>4fa>43_3_hT{sZy9*WQPh5FmbND58JqstH;T77D-5_!4-1*jD)Y z{8P6oa)f^6g3m{S_NRwxBl;I1YgH6MgUK-aV&1DLBA<5*R{siFJp)5%JmUTW(0oQ{ zX!rw|eo*@-G&B@m-+|f-S3?mO?t$EY>uW7adnB%E7QDT1ZLcE-H`00krCUKK=rX|1 zO971+ELgy=4zmx$U$h8Oo)Rkm3CV-%7v%9_Li_(f<@>*X|H|O*0oC^h62Mc;AhC7L zDC05jLE}H6p`oV#`~Tn5Yt_wQ!s zHfwo#!S}24t!dW;jsL(h;Je9cicCyQ%n1IvZqRfYQT)jPe}%WM?SA`qEiZ#Y@(IwS zwaM0XlW*^4VkiMkzJtay*6L4L%fP?@sog>2^~P)eu0ourS-RD9>5u<=K|uk=pzvLU zRG$)xkKry48ZQ9tcLxW~|NpT2w&5)XQ2K8;-~gH*0xJRacf!IEwEiDi=l`MC_vrj3p307(@)1^k_*5Sa1l?B#O%$whVbQo;pe@NAqFRsgksGqm(4OzPb)V~Dl2A!vCvKCw(K>48h5;Xn`<$}+bLDZiA z3GzYX+3>{-|Ns97tv_(OdL1qlvX+6N0%^Pxw0+m{#11;qJ0GF?=Ubh!^b;Ix0)>dwR}B%1{UN$km-T8VT3%UVc(9@M1;t3Qjz2h9ik-;X%2mVb^;@u5S94uKUj zFfc4POw$DIM}+ZvyW0&J898}j{B_+u-N@s0=em2lLGcfk7hrHWH@Ua_RaX7{L;rvL z{|z~xeljOg{Q?TVSFgbS`ws%3^zeW6YWVy(h`(OzA3QyXZUvuD4Ie)O>0h;KHGF+2 zdiaydhnTktG2XHkWFKPw9n>F3P7hE%()bZrJ^Z`{sCjVrLHY0{gwXT_UylQohnq*p z{ZREt=@q;m6yAP@n2%V`3z|PmNI=>;Lb29Z}Y=fya{>wBh~n(ygzP7#I-!$EjOQ*D{2D zg_lpD`!*Q<|A*)QsarRr+?O+TtLR#I=lMVAeh$;M46*m&^%JQ6TU9$9-v0)j57Uqk z0bkGmSVDmzBotA9fyTq%{zc+*Ffe@G{|mh48dRQ^fcE=@ZiUxxp=%cjs4^q!chLH| z0C?{iGM;!EX*>~Be&{3huR!G;`gkU#eDv{K3ncqM^&#^90?__E{;lxf{$ILQfg=v- zzTo%G;Pwr?eFSO`eEnVy*8pk{{6`AEz26xawxY}*Fe@@Ja3b9YWU}`6_pe2uumoXH z|LXtxb@2Wam|uaopBcTp29?jG)c@1A3a{1M^)B!K|Nr~{`~H_OnBvG06B2e^iviMy z2kqbEMe5JL@6OL&1z&x~z<|!@pVL?UA7y;DuX_JfF3^?*Q1$|k-|pG7XAhVIy3d6` z{Xc0=o1rdJ`Od#&ZFhLcpEq#*Q?#4G&5r_xO$<*3et`P>SEri7uaFAe8oKnyk2~=C z3Va{o)~)dMo}m4V|Dj|1pzsETA9DIK-CD8~nGcdjZhvBizv7*|BqPzx^3^5CIA1gfDhS&-4lw)uju?~TTR#gk6#5}b9j9($o^RP z_!h+e|M2@eLH9`%6coV6llqDkIHrms>VJ^?{zcS$0r?Gt!Tv=wul|F^1EN6^(ESde z^(of>|NpO1{(l!FynSoHlIg2ftrB8bn+D>CZuKpW1D*EnR0b{+O}FY6FV$yY*a7X4 zgl-L3vlgkp5wg{6DFf2@TkzJneuw??Yo?+SZLr;<#3=>Y4$v?f?H9TlJQJ z(g$R>B&dA7w4`$Zs6`5q2d$?B9S#KHf%o@9(i3P<LAJahV-?>fU@}T?LSFKvn2s017pKjHv zT?oD@Xs-JXj304s^PKL=V0T9ZZ%zsG9S9uWUbZvb?_mH z(zT8p1xVusrCUMmfv^f#c!0t$G&Hmqng6yLv3}a1g@M5osXYKbe}M_n9@w_GXbSRu zf}r~3_iuQ26%wASw7^rQAUigG~e<52RYcw1(;GX2Q^RO+~oJ&|Mm6t6@DlD+w}j}|B$WkCadxy?so>YCz-jp zxjsG{l#Gv{g9+{wp>}yTdu3EJVzTX3~p7S4k0sv&*s#S>d5yAE2|Nlt! zCwPAdyuJn3Xa8T{2H6e5(E1VHK8bmsW{A8#7L&~BH1Na{iItC9G-(DbA8LF$qB51g-7U|>Sh|9Orh z2NzO$2HjT~fi#{MvR0A96lpvR)IMNf*bjGK$lAja3=B;0_Sv?*6Q`_NwF2J0fQ0`e z=Rq(tW_&k!S7eR_y4g0DBpr585kI-#Rr)Q z!l3^2k6)Ie|Fw8Vsmez{9 zLezrldqs`|1&H-+p!(_iPxy9u@cCZh;fVX}LF3(5Lqp-?byL?ma!gf4l&_%igUi?M z!q*dn^53`j|KLR`sQs!}%d=&DNr- z2ak8coDc4wRaZ}kci^UOU1o^9Ui#7;1%}Y@7?kmW@bD1$_zEcezm{Ho3Nvu;e+35Q z^Z!FZ_p34U!pCPo{iSPvp@*|T>#J8$k$gud6d`PW%Jv;Dzpe zKl!REV!wLnUel#J{zE%^;P5eBi#%TssXtbM&lm!Q5j4Kx`#nMF_x*iD`*_=4leJ&# zuO9}f1>tF11E(xl#Q@)5w{34=&#G036Op&=HALZ0-KwI=z|a6%vkub!f7{kXj)n@v z`qxuY3>fQUr+&W7--3|) zLHXfoE#iEEiBlLD^ikRqjvNf!i2XP=?~j4@7lHaX;2@Z`HDqmQXefMs43uB~|Njqf z9~0#7HCc+Hp33}E@OdVo@cEK52p{Zr5CLkBA~mO=?fX^m@)SHjg>=3mc>F?Z)xY=9 z70lDNZd?<$YSpS)>X1>)kgfc4iomPgm>DD);ut<{>Fo{=4};$ioIQD6^Qu+<;rT6e zZ%;QT=)iGkL=Cn3{|MFh=<+R|DUQhF0R}xSo-5Zbh2PJtQ>+cTI~g(I+1WF4aEHoF?pG53`1LcpeVW{C7{`1 zklR6c+g{P7p!-}wY!JQ%9fdSrMpSBe=9*;QBeCk%v zia->;1gJ*^aXqL#^%#W@3V((J74ZIyhZoBFIdJ+hAF`g{6`cQR2?N6cr254t8??R>ai74{y^b85&4&{HzyH7ffB*m3 znE#F(pz$77=y-o_Ga~~h(gMEo-Q3ln=@Dpgz;M2s3x&U~I|nrWz7i(CwtFpTeIAU< zK)C+zZ9cqs@nWzB1%YD|w`2x|u2`id5LEaEbZJoORt~4F`b_XG^V7CoTC)~ud=)ev z3~yY5>-&(k4gV1HBcS^H|Ni};Ay#mdfzHo~pZ;AN%mIzJuLa#WgB<^k91IH(`%^`h zDljaFNA$OkJ2Ei*K#C7ge;PHuK&bV7&gu61kJ7eh4HD~{|BY-(E3_< ze1;!WK-pgwer%CIOj0Mj{}<2$Y7d0N_s@d#U!D5D9F{&n{M9vx`2!IDTP0$A3zUEU z*Zqg57m$2tXgPd9In_{s0lB^bjW4c3%5Tx2x*mydO(7q2-wkMi8O;5Znny@Ky8A)B zGvxh=E|C2Q@cuvayndMT{)5g72n`K|uU||QU|b?VVXfe6rk4XO8R`a+(u4LZ>3mKh0_OY5xD`4`hK70|Nt?|Nnm$ zEd8(T_G!L~bfC}L?%r-t{~95WxBeGE8vkz!`2GC9$=0=#WAExRFZl=QvxlzbpTmnX zKO4F>EEW+S;Qspx4keiXLG91~|KGx1Yu6+3!RP;i?~4G*m+S?f{|_D?Oe=f$FJv$H{vSJ#einvUhD&SKc3-=84K!;7 z5@G<&w}*v=g@8E>3?%p0(d%n!^TGQAzzd2XF4QS@c4X${g|82wcKr{r1<`*7#W!+! za`PJMc<{Hqi5w9{$<46z0xF-vV`Jg<54w4v^cIR#{wy^F^#>8zY5fk!yim0B212hQHZ+3PBO|Xz`o5RHVHW1BI@UBdk;$>&!2qXyJvKm21_t-!XP#XgV-PpVuLU^zON$cR}g>ubVPaoX^taDXlN+>ekag) zHuC-&Li}I%5<&XmwDifuUfSLKAr%|f2$anKyxHuCxG~`8oJ=~Ev0Ks z*4~fi@4wIbKlcB5(EXtNQz9O5b%ET>%n-@+x~Ng(&z~=l3oIBI7*vy#EkW%ckUR(v zHa>UpBLn;Wi1`tpYMtVL|NeoFWCuBy0kl34G+zYfFfb6!2M6B&|NjFZ_wB*+w@xy+ zzJ-^MIoS%J{0^_5jh8YoG!-GrcToLbR*PsK!rTEf9~9qj*Vb3U_}lg>aDe)6Fh1z~ zJ|WtNe*A#Bx3~JR zM7;yzzI*iW0Oeog@y40gp!bbI4FIiYxD|EF4$A#+0@@soRNn_oQD6X#m&4>i;q~|T z9(a3cJ!C%sJpY(1WnchxmtpF!Zxvbl=O28z!2ch61?H?;wF=(fD%}b?@dwL zd!P>9;BwJaV2BSu^iM(UsRE?(6~({z|68|#+izF5-e-wr09}HiV(7?V$_Z}ngO#dS zsu+T*UoeM(f#Kb37Q@i1Q{nC18Q(mjK!pWN{_Nyl(AsbK_y7uDfT3XGnzh}bp`lw9 zel7a{w6qo}lC_wSS zZ~#7@VX{_%19^QJD1QGUofipC|488j;@2YaLF$p?6Xs8teIR+{`VYkaz2Fx-JsPxt z>rYdd`e}Qc1g`2L{0qA8X(cFtp$aUHU51=*1LcFpXW^OsKd8JES&GaDt=ENT7Lfeb z(6t;$^~tuaB5M(+hl1|kLgjmu>%L_HfE6BAe>Xo zz!3T$(LY>U4Qfxmf+vxjVo>^vhp$%!&1Qv$hQi0Y5;zzb?mkA`&jj*+MLp{LV=`KP z2#CE3A0IYetAH{d4W4gg(uJ3A-}ZvmTZCzX+zP@|w}R$F5#w!Jw<>TvhzJjTC;30_ z|NQ^&l?@d*RH5tb7#Ua@T0IXL{Qut#J3fS=)sxvW6chl^gf|%YqDb!XsczI@VB+S7 zIuEoSkgW3pKw$;Kpz&G;h8OVhA@gI291V4d^tf>f>Un&i`1|t@v0nhh|9=`W-VbvZ z$ZQY>rRUmwMEiC7-opyaoSg9bJa7sF1A6_R9~TcF&jZz`oJi_Rx9Sw@BISS3`sna* z#C~PS`g6qkMF{^L{QO{0dA`0r7gVKyocDj~UX!(_>(k-u)z&q0XMfp(=cwoZiWTg6jnIY=_ zM^JtL{vW7i3%2fmsv{`>A^P{A{d1;B<;lJO3LMDuk>|P{IY12vi0=RYGou(7ULfVa zCJ6?RG`zk?k55J9^NZh|&j8i`p`ll~|NsBLZm*ay1OF6I`EXTt9kU2nEB_n?hOhq- z`=Qb6`;Tjw4MRf__5H^+t)6QUr(rT|*?X!Aw0;9@7y|>t6*Rv7l%DSY|5vPFxT5fT z;{Wger|exjd8;ZvyoLeopRBL{4ll1D`^6CBK@!I<&|ZiSC8>d#TJ1dWfu(xLtwgpTlgq_3D0@ z^B8)Yxr_h*`}YSXpi}LGwto;i9~3tr3<{5{{}JbLgVN*Izs2zNc`$Q9YC#wzk361_ z&c~*{va%B1|G$3pi2`zc4lYk)5bM)H=2cfC*6Ze0AC^E?&)@SpOCQmF{l9&$Pcia% z7=I6UHexk2Xgu4eSRbjq0BH}rhqqTlx0b7VpUZV{Jb&r@BoGP)~ks5kIoBoFot$di_Hx< zeZZ2O=FUaX^>m>9^;1+VBO)T;=cR32q5`V#;rshOu6b;LG#tQiam_|>eGCgXbpFRR z8<*JI+siWuFa$6hQTW}{?I5tCq9Woabj>|zJP~=lNW?Km4rG2nPa+5MdJl_Zi74`$ zrhqz+i1sgk3+DKJb#*zsM+*w?umAVM&qo09!^08hF~R%+3184@_2BU}c>e{YJ~R|D zfAk7+UKPAQ58A(W)fBP60JPt>aRp+$CKPo46~hX6`3T`7){BO&?JH(rV1mzwPuqHV z$*NVW;PV^k?E!Fm0cn3BrR{@(uK&^71GMIY+XHtq;r0L8YMo-$dG+x5jGSuJ^E*0| zK2a_w^1m-+#&L zB2fPm>^SiHD4pUje}3G6@%MaXu>zGfg!mveAPfq>s@I6|CQ$n;_WyeLc)&T(cvfhr zE=Vm1m#k%A0NpPJVuP^Qz9xZq$a!rbE_nPd7HPi?$b3@k|N81`c>4pr{|{>K|3X?{ zom1>n{1+*Gf!eeG?;{!r-;VkeBd<>Z_2(BLt?#{l)L_c$l`G-AFSsJQ^D9;P$ z=oE(`-526r?OXi+FSN1&)&JGn#q#o^@cQ54T&iJGQWAJh8WbR~cmT0M7!}ot>SXFn++2wcQUNK70t{^G{JRjEIPU zr_YO9mN~LAGQsEX!`{7cT(xQyoPTjkGw4Q&^)UUPw&YYZFfdF7^Ai}Z2<>$-e2|b( zx9I1yMu1mKwcjX;v>t0;sZJTpvMP@kD{J|fuR^Fy@BNaUq!SR zK>S7U-tB+z`moS?#Q4}UOK^O_%cHG(6&R4uqr7(Xv4SoW;zqn{M|Fx{#39T-*UX(= z0dEcd|DRLMo&6WIK?0OG{{R2)Q~Wv$G&ut0{`V<9odh~e4#vN<#HUyn$^9W)wTqGW zvwc7M9(2DQynO%~FZ=)hFMPZJv|q6c>AnF%?Sqk5|LYVZb~FF~59%+3-bKV8s6Vj{ z78(El{|Ak?BcI>VTMe3Tjf2`9JUfdC>VtIo$~dAlnm|7&sX8m-Kdr z{tv$bE`Jyp7(nNHhBAP5bwET0n!k3kPH|O20_aK&u!BJB13>%l!5jt#23+j{nE%1^ zJ6E;g<2xY!RiyLnOV;XSb0W1Tjo0dAgBox!{Uuu$34r={Fg_^!k&Y7sw+BeA|EuxV z|31a>@$vBX9(sEol;5tFBF2Y6?SVS@YI;a{nO%k0pH+E{yBKu-BFz1u@d0~#efavK z(!Cl%|NbG)6EIn;QyltL7qnyztYzxfoZ`@{tKi`maZW`uDJcm)UI2>+u;Txq+shaj zLQB!tFXzIf|3k*Z5c}mo>uY^0<6!G6_d~|pLrwqJ-52*^U}jj?>-z`Ee1ReV7mmEV(Dkkk44W>k z$!(rGb*i|)&q@D4gS;VI69vM;et^w@1RAJ5MU2;ja%N~Ksr-8QdOlG44Mp0|3M#Kc zuY#KzVCx|3Wv;^OZ_s%Lp`rWX?zz4fG(Lhz4@6!_!^amu^~H5~=?|*kK_kKl^U%{jAwFpQ`zzA^g4}BE?0-n@2T=M} zMJkU$=h-nJod*SN55QX>p!qlC@muuvz(}kA357qpd`_`W@%sPS;IsuI^rsxNL_WU& z)E)@0NPw@81f|FL`+wo42Vv0t)N8kH{c6jw zo)L87bLif6-C;2W39$0&TsKcM0|Vj&()ZoIp!2`s{TF)k&volGA3$;ssQzEQW*w*t z0CqB=`oFhYyLio2#Dr5$v34>0`gylNVFAK9#oWbOs}Scu_*C;0&$tx@AHUrBtVtj$ zDhfV72`WGT|3~y+LHx?9DtP%y-1vVre7*p)|4*R)FV+E_mjIs+^MUZ;^G!a*+}RHv zJb<5X8@iP}h=~bt{|Bi4*VosF-ya+>MW;9ap9TM){r~&FbnCm> zro7zn{dU{7iY|p02B7`(p!299K?f#5>)Al#V_*(wz1m)prO15HdZGVQL1#ihRD>T( zm6Cw*~udV%B3r~;t{wE4-UAh)NUIaRi_C;+hJpRqLhOUi;*XE$};Wo`# zrN!k0Gp}^3PjNy7qP_>!?^}N*!P66n|L^~Ac>U^A>|M;Dh1d_`Q%qU?k6!Qju_9zYym44FSbtj7V>|EpH5g12|*J^zpH-@(oY#s7N5 z^#A|f=2J;tU5N8F3zjHwgocN~@B09y23}QD`2O2>%{s-eORwF7rMKK_o#F-Yi2F-H z{h_Y^;qVq^ZZ&r?!zx630G$tV55p?B^8X<77+xV3$bv@a3JMC~{T)zw|KWEt{61En zY6b>VQ&V_*d0n%1@tSX8@C`7%)!fDK%O{}Yse2I9AOB}v^CkC2WT{82k!rixhuj$&arJ*69 zwSpi!uWt=plD%rxDnQS&n^I!CG_X( z6#x5k19Ctk5&eHq{r~;_)q^0vf^beXck$=`7x42#r|$Ks4qeL&Uw3qD2Yf$+CYu?XZ#eg_JZ_}Fhvs?T7;pa;c z?*Ds4IXOAO@5kwFUS@g82sT^5z!0$Igdu3XF~l{X_4}*9`y+_upPLO)FL2G^Pr<)K z|3kNSC7J4T!_RXD?XUmy1+jh-T)!Zl-wZlG^?x|xK1Wc06nQ=ctbWxhczOoSUokWs zfbZ7>jkh50pM<#^7N3)*FffE(oeD1>z8~!?UbqPP{$!K2$oJ_&?l0DYH&MX#eMJm> zy;o1QPVw5cZ{h7>P<{LNKVp0V#791FhuZZ$q52QhUItx81M@$~z4z;XgN9zfLYtT9 z6pJE{53KbqW?(?<&w++F{5(U`t)WZz??=q1jn@CD>l4xA0~G(r^Hm`JU-)PzXud#! z19bloI5PhK|F5jbz3k80-2APtp$y5=@ct0SO8z2 zRl3z9NM9dmJa(<=+F$PwRSGU3&G_Rvj z!>pFLCT#H{`rNCh&QNpSS2VhlYp6z{-tv&99qQ{Ri!s zfQZnW&)u9`{q@y>R}kAl`vHB5|Ns39KR*aI9so-}rCZN6XC68LA728s_ul3{g~wOn zlv7FOh~a_%p=(bkF)%U1*H_b`{;x(_KY-r<583Kd92&Y6-X00vs#6TwuL1K9sDFaW z*C{qN)q;;FfzDG6505v8sW07nNP>X@v0r5BRuB(yKB~GC>iKz~^!*_YF`fkC|NoAd z--Cra%zQ$8`2N53|M&lY|Ns5Ay`Dj!{R4~)ObjdxtPBQo6d9PAIpO2$o0hzv4O)H+ zGnX9x*8Pa_0R!;(KM$zL2OBwQNp83E;pAvAhk=3N(w3D)kC65)=XCpk&f5cRfdVTb zhyQ=os{ITC3<(TZ4E_jj&FwDTYRU@Qs|O0RvaN+n8dt4=*B_x|4df1s`7uS*w%XfOLOxZ}sb}HS1UJ0z3Bq|No%+^dEdS z6I7mq)>k9a4|;tt(0tH*!CR#I-nZJP`1^cBfdI;Xx~5a%OHh6)FMSHnKfTqC9K4*I z@b)~YeaVb;A11o}Ao&FZ>VM?rczYjIUWZ<- zh404#@qZzmX9OA#Kn_2Ud2he{fsg-!#)oVF{r|t7@jdH*ssB1ATXVZ33Le1c-}&cg zH~(M703UxZT$0-jnqC1HmJAFGwC01(KM#G?0Jk4BAFyim$~7?i(d&QEdE!o9Uhwfr zd)M#78(ir1KPdi@&kq9eNuB?%k4LQk6JGmRVeQ&Z zMp$_gvh}&AzCIVcJ_ohW{{8z0pFq35R|GT{24AmOx)n5Ij;Pe9-#6(9lr$cpWSrVD|ZDGcZh@ zIu$;CSGqMb%E944gCv7CgEj*@L%@O*UOs{Q z^GN%xF!*at*REc@8a~7iIp6$iDlB}bZA~*o?(b&?DS*}+!$;^r>GSIE|M2mfccAsI zSEs_`zjW)VC`Kgrm2MST`ug!Mc!OlxR*|K>{k;X63%frFO2l;2e{coi4xz|~{ULo%LGF{7^&BV-!RDPJQ{r(kE-qNW4 zhp(4MA1@hh{N8GvVsmpu0}`}e3wb=C)e?0-QBJi32l99TsQ&--@i+WFC{X%CUcUk2 z*VZD=X9Tq$N<%~8<6j{A4kRGX9|Pr|(9lqL7hc^9JYELRKj)e?f)*}b1aJTGRQnVo z?@vNc-=x<6p!9^gzZ8653Vg*^>Dpz6$n7PIW1#hw;qdV|(0nZN{(*Dd3@G=Xgn&j$ zk;Vf+=Y!mji>v#e_kTWQz2Ljq4&e2Ij10`+^18P>G!(HPZ^9Z7A2B~lYd+{clu)Gm zPkXz$v;Y131K%HrUjKvY_l5%%@bi5_w(4Z_sv^#VHvz5pV?eB5HeSn}jeH*Tx1)^$ z5fO1X>o-vPKwi&BX#O8GejXbe3vZuo+p408y#LSQ*k#cDf$;i16cj%U58(EL?we^q zI==vPIyG|r4yup0evO5v&ugId*P&ZM``5u$#@4-#99vH#()ZP^nEUbW*TulwKhX1f z;q|xiQb&%^w};{D|3T|h{~@)fLH_&t^((x6oC~Y}q32_M-}-q?)vsT_SQ#W3v>ALE zF0DB?`TxHd`1q3k9MFs!V*HawWH*SC<DMr3;2gJXRv>q2UKBtN@9`I$!x)lrH<2j)6nv(thp!sf9 zr2V`)%|6A|Rq*D>f6)FQ(0LKC@E(4ApW>@m5%vGt=FBMM^#R(T^SF`513>5VAopiM z?T6auR{{{><5L`0hsY10`S^e9u>>&p#GFw4XG+Hdd(0JRTHRT1~G zg7!atss9UaAArV_!b1`Bb?E6GlwU~c|AW#Ka{UkLA6yT=4$t49{;GL3Vnf*d|49OI zQC0Bq3s8CR|L;}!d@_h%9(x_Wg#)x-5IOv=@BOmo|NnpR@qp5;CUf=l^z=dfHCu)_ zhD&R7y8rz_l-K-octH0X!N*JK&0jZLr#LJoE)G_Hqu2i-Yq_(L@5cs(KXVs@0zCeU zb&BDgEAW05pJMaB@8LU~&Ne%8Ag}+2*#py0YW)wo4JQ<-z4>h~X#f99czlA+vwMIx z|9)w;-yrutzI`3O zUInxsKeQBaetvItqX6=Gy1mtpB|zi%$o~KT7criO9zO8#f2an~c{Mj~+=!@W*w6Hy z^*=|*R-NLAhzR(4j!9EaXCX~5F-)3riZcG3RUrNF@v9$KwX0XJ{R&^tTJ`K`Ao6~a zec$+|fSd~R2hn^`?SF{j^5-p}`Qil^KxTk2=sdn~r1cx5*8iaX_^MyO;7RoR-gVVl zT&KK1W`i*3e&ZOl@yWP5-{I*AvL6qz-=cKuV+GLlV<5dC9J1DA?V`m^@cIih{`Y@B zV*b-)t#)<+()=fA{YiXWJiPsiUcL==KB&G&uK#_Cb&I)?&c_7JcUbLu1>e6Ay7hfC z6Eh>cJq0SSNvZ!q`7iV<;=HWjt&S+?|A6|Zq2ZzM`QqN{RcPnm3@`q>GihTLz57!LsX_xg22`{Yy*1A{2ic|_vJe6v?9S`6PWP`ovC?bWMa zL-QE&80s13Gm32O>yC+uf%muHPX^7G!mEDVHt`s;;hvuV}q~lv$CJ zlM}xGvT#bHKuE|R`1(=M`QU4-5c5f(^ZUb)*3*IROF?cQSe$DT2)(KcSuYPd=xc4G zfG%i*2FS7hLFbXK2kqB@&rfbz!oaZNMFqUR2c2gdf@D6(y=vVb;4?^s>wBN#s<3!O zf4-Vo5xxFLSq}(0fBP$`I3wit>bU$1`z>N?8wg3Bq#+X941}rH^0Nv;ds&N?^ z`tKA@3H^`g|M%Z1B8k7@PQaYd|Eu8l=}cOpQymc&4zKUEn{}$MU%!4GWE%*B+5>Bs zZiU~^3F^Ot_S=BuK$z(I|1kp?e%`Xoa>IrV8=%qi-(+j)(tZ2(?St`2um4Tf{y(1_ z4AT!<|8pRr0KOjyl%K!;MJm5I7#K>||Ax2_flZ!MJn$=_a`8a$AiYh-^C&J3xHNfg@z*LLqY9>tEPzi*L$l^ zB{i-<)UTlS@2#(u*I@Y(R9_%g>p|ALAlJ|6`GM5>A2c5S_b+0N&jp3|=l@^e>s3JK--li`MVe1^}+H!-NSJ{`dd)`|tbT7Ia@t!-EF}(Bt+P3XT{|VPNx5~|M#OIYeSLd>qEApu1AKs8yfuoLFHR$C}KVuv_6EFlM%i? z33R_XQt<%3|Ga6@B6$BlbnE%%0|y-7>xn?^>8DSh!uRii>i_uo;oJX5FR#)0pz+=B zrKRxpu*q8OVpUbd{x8sao&QMZX~e$AJpUhgd;yeS>XGi#0k!ACvz*nm>rRUJvg-f%=E*pm%42f)rHWBkylQPalN%q}KnS^``Ym z6LKMIK|MCa{vObMC7}j<7 zfX>%~4+zkjzqZ@EI3NJAK9P5Ib~Yk3{{IKv2MekWKye4c(EA%eOfW|0gVf)R1)YEd zmImtwUB?FD{r`_mee6|)`c%mMe=z0$LAR%chF*oQ*L!BEz_7Km06yO|b*qXZH#6eC z08o4GGkmocXnkkl6bA<<`2GdZ{2+3DzswP{zF$>;4SwGZD`>q6(*3EJGa7s>dLR<{Iy^zzaQ~cux z;yiwzYMtu)_wV0_xeLAi*QwU72JPR1$?H^~%z~Vb1rY&_4-nNJpi%t~x-UuIUL7>& z4-VpW)eHXh-VHZ-Q2k$ubl#iETAyN3l=ZEqYu~Ke1z&H3t^P+o zZvZ|1wu0_I*s2QO|1)*#Aqmj+DB#Hd4?6FA5ng_8aiajT`clw&GOL;3`!%O-#jihP zYm-3eIxYDA5_I)o`Co|n#kJLm9HCYC?*j`BMO0uJUJ4AMQ$^wHlZv-0Fo4GUVE!}4 z;DhexL8Mpk`8xk`^TFvqGz@m0*nd#(Ko@EMJ81kSDeh|-%s!uD?QA8a{tKwSU%D2) z+!B1gAyV~E@pu=>_5WIvwTRnd{{I(V%fNsc`jj-?n)lc*HeSezIFrRTh(|wkbt-Z}LF^KXu zU`|eRC}O!a16}y_@a+H$0dr0jA+KKmohOcbf7bQA`aJ~rEokzD_$cOmKiXSd-+;(J z@0%GIs*ukA2e;qr5&b9h^?%>@eg>Tn4`1H}x(@~UKHOuD3=GKg1)%s_zuF4EUkh}< zO=xJSI4r(;s}oV???Lm4b)fs{p$Z`7IpTa1Q2qb+FXDVbpW>WsEiEhfegqu%|G?Y- zAom~*fBZ+=|NkFUpWV7OYu5ku|MUL){VNHO(0)6RT_CJe%~cF(?Sgm=3^&l$ z4}9LTwi`S?0jmEmGd!_))|GVY7Ggb4$llPU|NbGyU!ddv(9p+R{|DOdw`vvQJe2Q8 z&sBGIA?Ev+88R@0gdom?Ko9Rta~wIQP8BtUSpXXE4-Z4^2P|1@y7oU}dmFg_zo@AR zKA#EN?}l8y_*Cm;uU>`Ne}JA|hFkqks(%c6bkOR5leNFJ7sBTkvDN>W_uox=#d|zpk1)+pZc>|Gn=myM8i*!8Be-Izu`3J4fs@5q+=JQnN6z5lG!^0ai9vTx-03W~d z2vR^fKVae#X2n&jR>RM?0`>R*|Njp^Pl(j`M^_IjKatBn9DMi?9Jc-cNW(|}LGyE~ zR=t9pr?LOPp9rM>fAIhR+%#qe1_psSp!=&=GX4L5^1s4QhC>tAI5LEWBFegFGKVZ~o;i+SL&SS&;Dh|Np<)){wQokOGv@`f5_;LFIWp(tdu> zeoA|L#0(5*{as8<47@)8TAv@9n-9Ch;lIRtw)d>-na)ja;<$GGx;QNTY}~ST@`@FR@%w@$ zI?bToElmE?mYn9eFogWS|H_`AvJECrdH)}^{s)a8Ade6DG;0@YuYUa+X5Yp&KGpwu zRYMt`G5lco!SGXL>)P(AR$B1-xAdsV(tq&Xe*gc2&X-4CA4Vv>i62{6?d9bKpN|La z$3UK61cf)Ky#fjY5dORb^*pj~N53pV-A^0>+D{0d?+1+sta$O_1xPOlgZB3$*Z)}E5KeBn~<=;r-ziZ~smY0`DI)A}r?a$x8;T0(Q{68qZzM{?lBcJyjvQ&WqdHsLs z+TLp9`W1AZF>-u^#v@{p_E&<}FCbMwAU-09wC)|L?aiQ0u_`edP09LFOahcS$IHgX(+Gd?U=f zJO5Qs?`tdu-`5CVFNRV7Z#7wqoWDTp{jY8f4gIh4-xdTzwyx_ASg-(oKA-U3b(2>y zFoZHpWC&nT0G*e*SfC)m;Q;7Jq(A?E{NJ?1kweu~6uw@(Y^x(jK?34D98me4nTa^j z6FvSw`^}K&x3=vyU3>LgSv)t^&P@L&N1cjJ;!2E=_i zAzO2rvl0S8w|;?@^mJ<%gN|nea~K#HQ27E%InCO|KYsjzo(H9*1ggIg3tc>NDLU+mTC*NF3?*Xp3|m#Nk%2Kg73WI*LJa`{B4JRI)wp!i?aO zKf}TcTm2szinu=)lFmRaT!;?gr3xIXs;cnzGpK)`kbszP2la>7X1;{?A3^m$a{UB4 zf9e1H{qXuFU<&yBCHVR<%X6Uf#X=#L{r~^ppa;x{pRYqGzCiW=ia}QY|3%t=3>x3x zS{e#(Z-CC{K^_kPtsk6I@a&EFO=l)xl|1bPs@ZaI@`EEy!tJe_og{6BlqYgDO!_S*J1-g$D zG`|nE5IsGD?yohSirAlWeQ#jTiWQ3%g4!bg{r-d8GkHOR1H3&_dUS0!Xm|={&gU)X zx*3oz9Huq@(iWZSg!*{Ungp*+7dU;HU z53T=U#{UPc*Vw-wv{C{hv~8>K(sTBR5iL;vK0E?(-#WPdEJd6L04mQzL&I-FbpQX) z1HSJ9ao$c~Poh9*XefL=^7o^l{eOu2-l@+AjV~e02kjRP4Go2dFW9~D_u=^s#7CqS zkoy%t=l{Ux`=)Mv*X?kip+TELnn8+zli}RtCladaT(IQA@NRPMWCo=9{d1Fjsso|| z0$>Wft9?M{dH-h+U@%}XU~mBQyZ-;5eD}})e-ZDPLH9e9u4ejm=FI>9X=w}$KGodW zt5$`FgZW_~K2LUomg!ay|JwYG`JnN`Rqy}b2k}$E>R)FytonW(#7F3_4+ZmE860w} zwTs`sUAy+oUr-DC@Bh-ZKEJ%3gAjX?P_09kPKX=0PgX(|KvDh#^q4IFJ$wTVfTKI)l6Q^`0 z?MK=#3CjN$|F40MC!^Q@uyhOyKXkrNF>3!GbRPZvdDGzg4MFu=c=%Iz1?~g7{{v~g zaBi_rap_aU`B0$t1M>MIAouOrzaKuo9|~SSjp%=a*0+a-mcq}M0-Mjk@B!vtX#EeL z4;<+JKYIECxqoS?D11J$U{0zb=sa7P``0!rFoYtF2lNy(FrbbHfcGE5_rHVc|1hNe zwUGEn?4Jk4&;S4b;QIkU^BJL`Tl-=5fyNs^C$1v%k3=E85XuNmglF(I%`$mPfUYPvrL%=G5UjjcEt}q-b zTmqV3jewtr5V|!{fSD7q-mG-3B1ag~_%x_I2@j2juYUxMSIgGc!q>Y_+xl373AA1f zz5_3kmheo*QOaVFf=&8;{Wp;1%?=;`FBuw z|F?e)Jss!&f6)E6;ia{*F!kH^HlfVlTbv7B`wQuO>1}&Omclb5^gbAB@-5C?o&%pu z1g}3*QFL%Xv|m8(zj_x@ z7dJOAtQ=h1-P;Y?j{)QNcAxSB?U#k|VdtGOI6xq%eGQs_dB*~QI@LMF`s>%j@7D$0 z9~&N51wStu#NWDg?dnbW5D3!$66yXx(EYM^J|I>A>Qr-QhlZN6GXyX!VmQpONvE2- zSo4*G18hhiRKD^e`d*W@s^;?ZVdjC>_lAcd z%4=A-z~n*uNs;$Mm#$3|Kt3N0RR6C+x?cd4enA}$n10ZGc%c3Tj1OA>w|eDD_<0zh z`hW{*KRkN*JKXu;_Rw@Y_<5|Km*^Bv6-BK72bC}Pkmeg>-nSZNA?@Emk1uq7@Kyzs z{r{l!{QEUxfhH*YL3s`qKj`5Nn$NC>mnQ%JPnzRXjJzLd`(E}Sc;fp1|No>Zp!s~n zct7ZTqtL6S@cwVeR(3DYa4yWg%4<5=$m{h$K>bWXJb2l9Bpt0V;m{Nn*R#s7aJ*1v$}3;xIN?S`2T8ed>wK%CF^uGx_T z`TQ2pY%50n9v%*_-$CIM8je^`0pj1id-pEPe9--W;QN90|3Cl#{{Q!7TMOrSoH*eD zIzOG6frUYT&b!G!|NdPG3wPnIz1{rl|JO4#FeETIFbIh3JuFa=kd+1Lt^E3LveuD< z6KOslG#?Ow)ZPc#AOCghUzq(Me*M|E@bizRZFS&4Sx>OlWbHTkzxnJ8+6?m<|7)3S z&1nwb_5*(2%Dc%v)uAg^tbn=Cf63}B6Hxx)pQ+E+@Rd z1{xn&wQBVfn0iS0y8@m?2$$EUYqhix>$NJbZ3dm+2OpmU)qg1Gv2!pmtpARPe^7hx z|JPD@d%kq70>@NS#Q9R7^PK|zAm+C~`-|X%7od$iYeUvDfCj{&9srf^)Z~NO7ytk7 zhp$Hj?LRMwh=7k5g4}=gJK{brPpQFA6{O>`PiXbk9jsU9B^P`;9!tskYvzb za#(+oS0T>t*I)7~>DPx3KVa$S&wUn0kXIqKKZ66P{zk6lqG#XV?OKs$Unqdi4r? z|Hi-n|NfV5^{GbgUxCukqNY`PAUA?Aq4a|;52}w>ty%@|pMm;o_Q|i|{R_~1Tm;hk zCQx|a|NZwR$Sx2D#YgJ??eH1^l>U+XH=y*sdexjYAhjS2vTq%7`q^qQ1#~_$NDhQS zIUM3#k4Fr7w^i2vei}N4c*C z)Za%sA0OnNt5?IWgX{ufP=9pQ|LyScDb__=9}v3sTr(3RBYgb0bZe6U^7;f=z5(e4VNm+~|NlF@zeVf%A3gnn z`s>K+qtM3#_!)IC&B6AJA!}$n`tuyg}sp9aNhjua5xvcV9T-d>PRE`v13x z^H4zfGyW^$#%mBi{5$G?$NRVbW7hxgLAR%X#;*(KczAf6U;*Er!p5+1&FieyD_4Vt z9Kk`qaZO)ybv z<`=JqhQrrmg8cLUemy*WZQGm3VQPvPUj+3}zI~~QfsJ@?-_hqr$~aT;sv$h^#UdUPnj?k%y z{_(ZFfjtWsAle_G`eell1RuS=pp*}4FCh0fLG{i5|M2SLKWP0q@_8_z`{B{go4a>^ zDm=VCc7yU0;(o&0_d0`+?jL*)I`1H%ARoZSzH)FV6OoU8|GLi?p5y)L#33{U5x(1f`e%|G&c5-$3~P;p4gJ@dv7pwUFv# zaC{)5hxIt+fgdzK#5cw69-oI|Gg|9Eo%|>1S3>uF{p6>*&k6E!8u^wQn z$lCMz_EsRXLHP0#pJL?s22gzy9*>x>LN9NJI^Vn67j*s{sL2TO{(tcO#0(7Z`C8C; zNY^XG`W{e!nU|9jULS(iYa_4k1cf&#{eMvXg1r6@)c$<^8nK=b)IJRjg-`GQ2dxKO z^}7f@9|zjM8M>Moe%?dq*4%33{ebBF(ycit^87tM#idB|OQ8PrqX(cHvcSOsx*x82 z<;s=t_4CBk|6eJn|3TyLp`nQNGY~$+Eg;gT+9!L}s&()t7bJWT_mP0cL;nB&KOLkN zgwHi+My*<<1wX%hZLuRqOhg2{y_6`xz+fML9o`=U<)^T#i1T(q{CKqf`qitoXF+Cz zFsOWAwW=R}UWN-~KRA3nFlhgF=v7_#{O#ImM~=`c#CcvI{XhRA_7B1P{~*J`^Vgr( zt>^LsWB4B5)x6M@wKzqF(?39(v%fq__LHqZsk;ZG$>kDf0LG?}aZ$yPtx;2sGKmzJ`|I@p3;p0P~{P6bab@=+0 zvb~Nd`&;Rc~*A1Hg2nz$XUqOx5f+bE2oSe*{tt{Z6+PH*& zj+Pc;{olqlp!z2Ue!lbl@5+{-umme+U|;~%N1*y2#s~HHd3kx^^9ef5KGmT0SulB? zZk}e)a%nifIj8u>jT`XsDer2Y>PP?J_gN_TRCgt>TD58gxV>?#<(^J;Pw}eNYuAG6 ze$chH6PGYBXlX(B=lln?2SGgoCir?Q(0Mz^e@sOPF7QRd*s{RFH4a3%Yx4Tw?`}=1FvU{i9nQ3 zp!$G;fg66G#89vA(cKSPPxAFDVtpQ{{?}i<8eU!oPFavc9fJk~aQ z1g%)b1V8T%RNpc*RKV+Zoni%s3Z(iBRDOk)#=#p@p!xz-?1IV|5C-wXG3tB7d7IB5 z=L^B>cW`}i{NmPQmQ2iu@t}~cW^3*3`T5_o z-DlpJEMykGq}XS+eiE5hX8 zP4+1c$VviD>4Akn{r&&{|3laJ6R!V3>;FOfKf#(AK>d9m@O=*mzD_l0{EmTvL4jeC z;me$Ao$AnQ|Kb=9x0k+Wna}7`os<3J$FHXU))nA3N>BBvtgKh7w0``*_CN5i!tYgC zp!*aM{cqv53JknR_rrv)73g7LP=NOj!RPJ#N0hJV;ZKMUTCa~N{Xyr!JXT0J&;VcZ z!JW(iTHk~+ez*PmU3imn%39R>zd-we8JLjQ$A~Q5wSGPPyeCk9650H<&D`1l|Nh?s z%U_`R@PEHnKZo(r>(ime2elvJl?k+dS-<}tyg>{)9|8G1<X()mB7dqL~-q88=(69_hUqT1X@pbAL+gn$a*>k_$24(KQJB7fCArO@ z@hAj8hbDZO`$D&R201V=z{kTt<0+xxaq#m2K=B(Iy5AP29>o89AF*E|pa=E7$xzTp zH8U@~y$2e6(EK?{{kYa-?Sig;xO&j|@2_8o z{b8W?IxXvekbSFGA1>S#x7~cf7*OAYEhs7H#yb7l%Foa&63J;HMTLXF)E?NM; z4>M$It0m|>Sw99H21y1EhK);_1WZ*C{qs+2^r!r1_zypyADu6>R)0!8lDs~6KT{a= zygN2zbP!Sh=XyZ(dD*U7F&Iu8=GzCZcH0(g58G~V<0 z@rO?^^|$YNpo}ko>I=gC|F!V+j(PqMsQ$mB0W&|R`mqE90|WfN6mb6?seaF?R$xFs zPyOwydX)XJ^`(gMT~PfW8u}kT9uMOG{r?+2KXxh!lwT3&v+5KxFof0~g8Lt|elIpO z6kfjj6f1D3iXzT8f7i|Kv`rnp;e+qXo4-W?mEFA?bc|V(fKcf5#SaLdvf#Hm& z@bzz?{z%=w_3-*<>efUKqE_lh3~%q3LI;vP8g z3=Ht`Sx|i(8Xf^ZFA7xu#~_`D3*ukhdKJDN7PMayc|8ee{wUz2Dty1mIq>Q zK;s9f{r%9jfk^#*Lj65j%Y)h%t6m|__XWj2@_0YU|8Jk(h4=4a@dOLs(ya;%$m^d# z^WWe8e*=Zb`~TC!u^yfH%#s|QCX^>f$wyXuMrG-xk5#krF z@hOh0s)Fw~1=TDez{{8zmNDhR3iaV1)``tlo5Z0e_Dho8831Wk={v4fZ)2&~>PW-R%o8c-$ zK~A+JM_5b&bic>H{}bmhFsPa$(x3G6=g2R8+Dot2;g3b&0{~zgonYAXM z`##|Pcl7iCnvc@bLX`L4j|%j7A+1LRr|&St`BR|sFZ60CygdMl-`J~&`$ewr1?@LN z%%&4r!{Pl?Q2oFE|9|*;FVOfo6BE;*t^Yyw8))nY z<{!{}`m0r|;Nu^l^Y*5iBF=LF&5!*-IuI5V{s#^r@(=avf7J7Fa;sk_Ayw!9DdmI4 z50JXA|9y&IgU;H3*9Rc^1q)ul>&xHwG)Nx*U%M7jAA{C6OhvkH?rgIH2l9S6(0n;^ z{~44%Ys=x?wf~^>i+nyQh!3y)LFbupFfbsGr}%)&V?_N9vj3_s6Q~LTM|n>1Ge^*2 z<6sVWyho>4$?`pDk3LukRNsfiAkGs6-8WS99x;B<+pNIBscH%;@4)KUHTx9D#)iQ6 zZ$sA~z}H8C#+N|l6Ie0$JVOPP^L#=6!8iU7N`E>!I&1tGAW(l!R}^yppMTE#*$oT~ zkn&W3L15}#7D>?j&C~xs!0>gJ0)r{?dd{th0u0=$@cF>fwW*p34xsacAT9*C2l;+V zaQ(maI{f~bYkM6zR8^Nk^85M!^`EyWGJx(A*J0pbU}j(tGJ5LBuy*ar)u6HxgxAjI zLMiWQ#fP~5&;KOQeOsZ3^&llj9XWK7`#W2k1R59+^R*#s9XUe73gG=GQ2N_mQw<;A z1ce7^yclBsfAD=P@!#*l%Tu3h1%|__i1L2wRt5%MZYKDADX6?yv}hI1@*KTVxL=e|dH}`etzEz1IUY!c>A8p$kIA!G`#QIxM ze}4s11q@ox0WbXj{|BGfO6vGOvU^IlDx#eK^ZjUU@xN7w^E$sB%`N^Xi1l#b z^5<zB5yO3F%TV0iZb z^8Zc$1O9yipAU?f&j-y{iz3Cxwxi67hYlZx-(L%w??)~#K=r@r|Nrpz46`Bw!`a+i z*8ev5+430T1o+n|a)eIZ$|@k_z*5AV#^}GKXYyXe@h%MSR!>-hJpWHC{^9=yza($%v^MyeC=ga@W=L=1iGB6i@s+_Rh4eAbCW6AG)=-niJ_fozk_YYuCd|_y7Mv_5J_92p59+{}JsqP=3W% z|AX>RDAM|42p@6YI%vL76{$Q1wa3;W@j>M+XuK4bK4{GcwGTlHN?`Uu_=xkSKic<*AHmmWfa>=@@YMJJKV*C!5ufPk38eqk3@f<#pVlODR3Xim zfbS~`4TqnX13JG&JRC8;)>F;Ez{I;1-u|5kK5uXpyng8|#_a#c$0OVWny*G(|Mz*# zyEip8klNpt!DR1oOLnCCfAY~SYry-XK!qs-14GE(!X;I&92yv|G8lk_E^Rq15RuTe z3N+)H_?O}8)T^NT0ub)Mv_z4ER~0e-_uLV@9{^t8F>oj_{QsZ*7@QvN|9{W!#lT>? zb*rh31A8NLTcu^dn!^IDyxd%t4C3JV(|{%Vb2j`5`2w;VgahX2&jDRe31WjVjrjZD zv;VIHZDR}F+B>=600Tq8KZa*)0kI74Cp$8P#~c8U|NQ-b_5X3m{tUSP_WfsI*ow3s zCv+?5Mjd9P`wtvBViFMRttNryzmdj2LFv1yz8;<)K>6V>l6j!~EnZ&>PY?h8J94bv ziiq#ht)Ngrtluf!3c68{39jDe{W44B^C4~CFEb>C58Cg^z`y_*ulfJ~zr-=ncp{>I z0XjdhpdtcZK7#!7`G5U+aD0Qt*BBTWYU}Ia;~k*&AISB8=vEcYh64@-pt>K_0syUs z4+#&2uTOn9`Bc`*g$tQMz69ZOlXIGp&xRM zyukqDPy8?Ni{UVX!@J3e9O3Z!fxrK|KmC07{RMB&6KZdP*3W>( zS3!C~n3(z>{eB$e^Rqj>K>KGy;o)&{4!Ax984bplXw1(H0^0|#@7f^i+ZTW>|NsC0 zOYnR-yg2#~YJY@=hQjAhLFpwlG!(wx9>On$mlqvTVDsTaCZP3v$ot`XtD7W{>vzz4 zy4U51@(~pO|3Qb@Kph0)lX5;Udio&52bqt2o{+|6j^L)lQhSI&~CRYbU!1w#>&*|-6 zfmFZ;%*p9qMF&1KdHfIEYO-|Ssa?13v;Oz}e;#yy@%zaU2@MPZe;KYaIj}SIHZw59 z6g&WzFTejUg00_zkJn0}wFf}!8yFZ6<#Xv)7R3Uj^Egb_g7+K1$6rD5dG)szJU@f@ z$mtbS2ZAuny&yIS(~1wWAAS7oI#T@uvKxe9_Jh>_y^84HuqY}pgoa;*pXXb;mBWgW z5wU;q^BM*Q@cBRz?^*g8wHelRCo)`}stVta$3N#y(f@Gx_EZM`IXuPxK?_ttmNGC< zfzMrBTUrmlkBZv!|2fU4vOxQ@q0VJEH(93|R9M3J?O1EBKvTDT&`1}B&`UqVf)PCSX8m|VeFF>9jow}7-5qW(- zs60X*?}PaZmL4+E?iVfH`d9(=d_mK-tC0FfAp2LXS_Q8^uI~+)QibFm(0cmt3Z(V{ z=se}nxC1cza*DOH7c4;BKME?3NvZ!q;}4+ypD^=4?UTaWKjA~Xp!JtX-NFCR^_KAQ zHuUgB=aX9hqlYItAN~Hn>wATlB2M4_|9{%nO>_P;Al7@(nqRtAC%dWuvH!ETnmfC6 z#VYs~yqsc34$%A_EPNsLJ>vX*5dZCd#Cra)dyx79rv6>CPjOsW9K8PpUf=ldAN>4e zP<+ELQvlxwgn6G1a(POqJ||TkWIuBK58}foZ$b0-#X7~Okka$IW{;pGE=2r*TCd3I zn;Se|5f85)K;tK+_iN$n3qj>={k`w-{+GnDMG~f}i2I;H`31C}3UqclXb)h>(Z>=? zmo8<6rK3x0&Vkm`!MF_Q{Bx7Ft3wgntr%eZh5rqHGhAUPINJ^CA6G!v|Nr~1qN%_T z5fKkx{|o9L{0|R@*Jq&qov5hj)i?$a>}QyIlslVQ`ab+Tf^A37bu+9&6!7%o!_rsS z){wRFNaLYpdrg+w@BP1Dn<0*&j-j4GWb3)fVSiS{DEwwv#2^5=Pf>v(rT{WN@azA= z|A!^O?NxaE6wE>09~ioofrEjG6CNJZ_HLTvr1feM%zn^*0p$3HwBN%K?L*LfMCk{3 zdl|I8BsBEHFPMH%{s|4OhquQd{BU>@1jPqZ^$lK+KnWjW-c@*e9ps*?U;n|=W9eE) zj;p4s@b#11wu-FXvE$#q|L_0r|DXTgrf`WP=sw?TtPG&t{R|9+OOhBs>!o1{612W= z6~iic1AyB6Pg~Y?XF0rro3B&6D(UavZ}9OaO4tAKgVz5oT?tw;1ojdisQrSJpNQr+ zK-%Byx|0|n_3!Wh&;C#R-)5-5a5Xd(-u?{T`d9;e-ZnHrlz{K=MU3Y|#-G2!(;tM7 zxN#7(z6x2p3TeIIjB}gkz!$HB&v#Z}Kt3N8k{)8=`-4FIRK)V9|Dg2&$mbt{<^%r! ze|87z-2Y)~jn}SPg}843)W1eLUI2U_2Yhoo=wgAR{5{C~*+J{qK^GRn%=0Y@jgoVp!5Hcob!M8wN8}vg`oAG1q;C4BXAIb*GH^E?57G@ z+bB?#fVeLLR6c$Eis-L{`1|)G;!C?2d>;sWy_tT`sVva?TCm~&LF4f`#dq!@(l4mK z1)T>5lgGvnN7~O%C_RuWkIg>3?y1%(?uM^k0PU~fDKv$lL54%nuX!>78XTTMoxHrE4-C|4g=DD zDdDa9a~hENJHLU>gF+NoThC@jfeT9kNJ^Y~mPInEp`qdX|8M_){Qv%6!%LAPDmn;$ ze*h>xb+_Mxr$^9y(ERzaq34<2v;61yFEMe+aZ6@pM$l3(uz?%b1k6Fc|L4;dfhoxS zB|?0N{;Tlw+cvGyDP~ypFAQur0|UdRHM!l$;~krp^n%AfVCeTGS|5XeEKN%)62!PI`T`Uk5;Q-D6KmSks4?15R zdA;*t1=Ri2pz&K~UBrB22&jL=zyzN^2;I828nk#F?!K*uCBhdV${SF70n}Q8$xqt~ zYJaQ(+Yb^WmA`E-s(y6-G&Fg1^FjATgd(k%{jv8$^FpNdZs^)eYZwkBB)n%k&%B?p zok?y!TX6czgsX$iYq`z5ZXBR5wpf4y+lJ z-jFfcJNF$AA| zA^|#&5f<+JbKXr3MLIuq)0%gaLqkR3=K+-*P4i@c?GIpJVA%QYbP=dHhv_dpx>%s0 z;lQfz|9|{{_W#NMfH?{r(bYxJ@c__l1Or1{TpYYV2#R0u{ne8HK~Spn=wk&&PEL6L zsPyRPEy&{yQ%U5T?Def~a43L}=lWE?$y&8?HGDro-(;U+ZfwmWYk|tZvO=kEI@ByY@c<?Wo97K@>hJ$w|DXQ9{6BPWlYpwKD*Su}ldU0Z>*FHe<42(R=2x#?!OvR& zrSH|N5%-m#*I%IhhREjyfa*VF{$Reix=4W3ZNniEJUh&cCk+}a{Ua_ z&&0$9zi$%MzIgHA0et?3y#4=({{LwGPiFlOy8mbY|M{U?Rl)nIL3KZyfjLaqPr#ovdIPk_n;aQ!d!U;BUD|9s=UizGNZJK^)am$rcB zLqRP{hzmEaIX8J#sFe(a2kyU5UKJMuKhNd!mQzij#0-<)xW%`+s=B%w#s}5^p!O$> zPfY!fG#vBabZ_X=|Nraj|AXAC^WQdP>)P216dr)oozyFW?e*&IAKg`pIbJ7@23RW&cFbw|B=%VwEhQmslW;*tvMO=|Nnk{Fo%JGp=iyU zBINN3TJtAC?VI?&;D5vag8u?jngqKlNzn+OROhd6A(0{?-4W`@JA4Lf3}Q zWne(;w@0u4(fJ_#p`nQV|5LY`tVP^5`2YX6z2N&p;q6;cen%c}1@S{;L*e(~g2pSD zLHC0~ob!L`TJU|_@F59M`vWmM`X7A0<*HTi;fMdBTU){L1=apPr}|CS>eZ{^^Ig8h z-o@+R!@D2$WH#+})^Q$c6@qbWz_~XaVi(%%2+_PfUe**491{fIvPkKX?W?Uz6vf2NcVs{glc zMc5Cj|5vR-q#scIzhJ=&_PI0)~kU&kFzj`fswe zZ}N0=e)xGEpp$w*_QCuN8vhH8twq@n7GGam`#=AGKWJCk-v0~?pz%78=`0M|3;}a^ znziiBO+b7QHs0!64H}OJu|as_n%>Ev@huP=gxAjQoeWyv17d^lge|$%AOK>6Fsb!F zs6X`U74m#(>C#`I^KRn)*Z-gYe}3s&gCz+G55VWkf^JmawC4S6YWoVH*R(#3i8d zf;do={QvvE_%&odSUh~c7q~t}Is_@^xk5*L#%@2fv&p+JL$;hw_ zydUB#c)nrAN(KQ4zaGp#{ZFtJbenN#XlTLz`~TPfkDDphrU^Q4=pAS@jS5;TR_g{x@4P6Rq-+C7kA6N`EK>UvRDYEs-OuuEuOkO1QhOA1{uRS2MEi8wRt3;;wD9^Goxg3bB1gk3 zgnH2FwaEH=s!{b5;)B*>BkRZF9u8!AboUVAqnkGs&3~ZtKMo-I2Qi@X^e*gXc$CYk9EKyKU z0Pn9(T*95bawXDy`;zyQLqlJI>oZW9^?vf&$^ZXD7h^FnFub3A4kZ7I;gGpJ?MTnaDRa4@&C}ZB}+9lEG(eT1MlChs>;gxzyAMuko!v41}*{J zr^d*@%)rXP&QP?ZHE`9c1Mu+OyvD_I)hfjPZsD!3tN6LO;3pbf+Ow{^v$L}k=Dxxu zy_1pola`#D{B`SA(5^19l1oc^o5iQ?TE!3q<}&CnQDgw^UTeL>U<4Aec$df#8nRY6UR=|NrHyK~-+ZR?vQ-|6Kq7zy2S1lEHv~i6cX3 zXgqkn=IvS+VaRy}rS|{tpN~{$U|=}ktjG|0b#GHRXz+-Ef#KX_M+Q@PZN$JZan8B! z4^dH|Gr&OBGi+RQuG@a<)Tv+&0|Udhv!}8mcI?;z<4-x;nRNBX5BUAOYrB1#LFc2u z53!wrL1gR3HI0pp zjR?N}62#~eXuq!hod2P#ela{}xWaIl;qb;ajtmh<>w`kpwplVWBgWT3^*5+}3`^gj z^=nMbi2L8r>w9!QNI!c0U$kl${Jht#;PXHc`+s2WhS`VC2i0fD?E`dqLVS>Zblkoe-LFqR%G#?ti}zbjBOV$oC<8L)Yr+ZdIMfn8yGbGZx;P)BPhR3_ibFxFmP-|Er>= zuzY-Ji*Ge(`~k)%wf}FrwPfkOU5F7!(EK>!^qT+wLHnUhx5n4AGiWp9G3;kD+4|U_ zDxzWm%)U=+lpRB_YQwk;A$tRsw6?dk!32n@|3T+Bz|kbMEg0@B&7y_nn6@%LQF!jcJwTqGauc1fZO}=sC z2K>I{s7H(g4(Yjw}7xW=zR76pz$ye z@Be>F`5~b7vH!W?v|IhzlU%GW& zH>f`jE1%y_Uf0dAiVI%k>Cai$y=uQbe7*d}HT+XT|F2lh09{|SaSdqw6NAH_|G)k} z`~UQR=vMIgGVt~3Wm`?x{{Q+PKEW2cwG}jfg_3>`9z2M0-|@eHi19k~^b0y~(?*%_y%aav#F_R)qlpA^*7$T=A=UpE_vmCJx2J|${ST_&k^A=_x12*6uh*Z$HwUyn3KCkN^%w)o zM;`wd5L~tjx&JRHxN4Q~R$VMFARG{<+b*#oG&U5x{s&~{#5u}}$om;V z;g=hVI3EtgzlwCc3xq-8wSN8jZ6G!XL&6iWz9OesyLgpT z0(`x&#IbkHe^;)A-$zlpb<>Jtl zw)iyv|Nkcj()(v{I5)Y8xF0E-2V9+qT{y!E}JOBSbZSSTvRjYQaWMB|y zsAqW38oD*NJ3KrFzCYmnYVB;K;_!dzRuRyAD7^khFaJR80p#;aejLrs_VPLfU;hf) z?-w2(76Loa_jM5igYDI;SI@11r0{D;-#4#Xym(=R$$Rh^NXXWJC8Y~Mt(9((|LZ{G z3+pC-{RbINU}2DA__Ri+dey356=2UYFfbI%;i(2qh?2r@Kwh7?R;QSspC3NI&^y~; z3TXZpX5LV*|M}Q)s^W~BLt_su-nUrI{g^?&JBo#L;^_l2$1DGo>4-v+vWXO-QoU0}=q|NmccZC!IH z(*B*^YM$)uoV+}kJbL|ayp(|f`8*i(`u{Ab{$IEd9{xSW3LFcN#y2{n6gU`=);Fwe zRsbyzfUj2|l@D5%SuIV=mSyUf0|SUoQ!&|KXPX|Np)bKe45y@bh;;{I8?^e^~JRCwu&V|9>!? zwl!eRi;Rp6&{{PR7T!B?$?DZB;rstTZ@IK(Khk{X=Pm2HVkUEY`-09-0o4U843Z2R*Z5S2eti#b zzk=2;BA@3E>fdN-ITV8Y3c_YvL)Ibw2f;ZsagZUueKrpHNce8b>5vvgx7>0WNU$BI`8hQSqV2S?{PB z+EYvXmkchx{v0m{2Z!Qxh>J^(=2U~$$EKx0_!rkqTm!nF7{hIyiCt2jwTTwOkx4;QeV(|DS=03BF$xy}gUh2emhl z$Nxe1L&(pUhu>EX%0F>&aq#m#!1X`UdLK}K0CfH*%sr)BS4A;0GQ#fRA-xR2Qkn`rv8<;$)_5aqR9zn?d-LhAK1Koe2 z^@#hHK=l{$dV2_eKm7g>5P!d!3A};^@qc{S2j_#%M-L4RJq&X%NIto$4!%bj#791l zu>@5AtEwXE|E>Hzpe7bfKlr@m?bG2MdW&<^;t^O~qMGTmL{5M+vBO-u;`X985 z`~I}822(QN^*XE{Bx2x!Xhfb>%~B>G}-DXz{Jc6pAXo+wXg@dKdj*dYF{JjLzulFy&!z9nSsI7 z6j6VEKl-s5R9=JRK)7Tp==`1i`*j%N82TCJGn#BY*Zn63vH#Ct%DV1`RjWclNz|5kkcJY0&=p|NsBP?=JzBf6_>$-?Xiu^Xw4wpP=+y{xu$cBqiwnTTWiY z`HUd_p!4P+wu8!N)3wO!SxUE>EajJ8zn-1Jmtj8Rd)AP>{BuIXA_72u1>t}>=O%+j z6G3bcrUqYr6{r*knFcz~h$lNC39%lIe@ZeY_b)-{$HJ>pr8OhuRrqKx#rhM{r}wR z*I93n>i?~1 zF*$gN1X`bMXsZk#zu2^7Rn(t9f8ggW`V@n1#AATh?`y&11&H%IK=UV$m^I)hqJCcD zQ_PGs-T~qtK;nbu6IQN9KJQl>v_20${)B%1FM4=^%FEIE9~6@iOm_W$|34Vsx#u1Q z8oyy?fWS{%Ts0XPIpOQ!g}3H5Ga#L>3c3%lAmKfD{u&fF`g44mSFO5Uz>vU@z!1RT zz`x|NL_tAO7HD$%Ahh~xJdjQ5_K3_5=gWF`oM#(P8K zqd;S+37|2Ice9%qK=U7|F#p?C@?6@L#(F(<*)3w zU*YX>(EfK$Uc`ASp#9FF;Wd9??gx#3?z{FHKK}ta@3tTTaUU|M|Nr+b;(m6}erHpp z_Qkfnlcua#u>hVwLG!D~>#0K51}|N)XV1R>lK*}G`~9~G*(xxn;6Vd?{$kS_fjOb8 z7(hh|$omZR=5O9|t~)*|0lpq>wEm~8eL<-HzjD?9v^EyLUiZ?P-sTl6!r}2haYchu`v@vq*v3m|G#~Mr(bY-`;Rz36}`Sk=cCvE+xLnr-M@c7 zeEc6Y9u3-`3$qWD{=>r&_q%|`1FwpT!pF;|ZuRg&9xon>^*{3c>!A88JRUI~kWa~I3YBTi%p z-THZr_U6rq@@4J&X3$}%F!euFCz%lAB4$+=KGQ5LFfM>&%gLq`xGPJ zM+CaB9;rF--=|o+7`Z<;TK|)_ACT<&A2fdc|NsB8t$}kqJWi}&VPIuoV_;_}ShFf? zCF1%q(0(n@d8Dvp#ZWkhf6Cf5Yu3R8Ot!9TJ`FlA4?G(H8ZU6w%*tqJ`1Akg|119| z{$FkguHWJFeN*=`Ycg|k!pFCbmnw3EA+4{0nF~u_{5=c|Q<2u&T;Kb7$uE@iHbd5e z+Ar_f|AS%3QQ@_#*CW;|h8#878w#4>f*K4uzbN4V0|RL80wgqXkA_#)s#Pm~{BL^8 zV9dY}aujsm&OfgI+UuBwLHnuCGB8}-x*k3r3M#Kk!$aZg8GW)97(|io<15|jqKSNe z38?i^6StAtOnm9Av~83!Lf0gVUz|9%~Q zUP2l8Jd|Ib|4Y7SyUz^j|EC%*Sg-?r{*l3)b)fqjI6!^{VSWf7!~|n{^DnJA*FAOW z)cIh`L3b65hR|DTtagLGdt>iR!w^#AYQzYi}jK=proIAQ`Gz5WN)kFV+w`}slquW#3a)^vis zjII8!jg5uRAHd=rtoZ-`|LFC9Zm~}By|{IHFnLgTF>xZD@3nRv=xj9j`pEg;4SGP+ zLNN8SuDwD%&wp(%NIgvYKdAmk4uA0cK2n7bYR@3wH#}PZlUCoO?@uJV{)ficw6!8@ zYySNCBgx>)P{(+mHDvF($^U*tz|XJ!yyo0weqLVa`g8_{!Z`+0zJ2@l4VKQf9W|H& znty}wzaQ=E2CYvu_{;E|VH3lm^WBaNVG$qT>q|nmvS@NLGQs(v`)k6G*6V=sM<~4Z z`~M%bn?MxlJn-*(4SE(YMy$61l{c%HnpXYi_%HRJ^FN2lRu)YKg$?liWF~vhO-5c1 zXR>!48lSuQ&yQd5{%Ofx?Ph&_efW88V&^)GklW)R_r=G=!^;;CANjnJkhS3ZOyTPl zzaRa)1o?hRPNm z1>HE<;P7ASzb^>tPjTdk2}AVv-cMH11RdxIiyzQ>cLt>U66wt^ShB9$YHBFFe;T?M zy#Mbu%zd=p|2N#~|BY)_MuFC=!@_Uk67S|e@YKw}P`dYJ74rSvFuucI(27`wX9eK< zm15xcahQVE+c6^A=b-xk-@iZb_50}cJvtvWUVuCwUU_a4_`D)mdfhY!wf={>8zxVv z{(sl3jWYfZT7O=zu?xQb9K>J0$_jozJ81oU?N_AwwphD(%eDr1dmyKnJNxi~S6(pt z(dYk#39SD^AOG*I2HkIlI8S*I_`FWU`Z{J!@cCGvB^h8VbE+9QR8>{s_c4I(Ct9^? z1$=!msQyO|Pi*ynED7~LX#D-pnmzFLTyM2b@q5q-;9%GM{|}P?x_%WrzCrr|el7R` zcdt*iPIf)geT*P}#xJZSvl>+82r(+HnuH(LJ>Z2kXZZ|GX^{96okJ^a>2P1=NP4Vc5r3p&20yd0!n;#h8X z)~i*k41b;mN&gSsx^A*A(*B`sdrjAxZbj^$1?8`pm>87vK*2i`K!*MQ|NpTB1H;s* zi2Fb!j_G7CUc4ASUN!67DbV$wuRy*3_w4W41LiO=%$PH6I>^N!9I#|-vAwn%?fKQ%&LbTW(rYup|_IS_A`w>E41Rpw&how}J3r<8NAXcJeDk zcb;L>nsePNQTXpBBUWR8&cnvRzsfL?A%H<);*vy;0O)+wzyF~91g?h2=K+MQH3MCj zNA&zZM*V*cwf>)o*8c~Mr-gMXQt$R_||MgbC%8Ft_ zoDb4leJbfX(*3$1KJtCLAoWWd5b8ngm(C5F;NcDGFH^Jr2bov<_b=(K=@bT^P`07|3m@Q`WZA{k9@wEt0ww(ETX(@YT2f|9?N4BoG!80bf4}YG2e<)JKBC5`@3+O%j0buYCXi z{?x6DBnk==4#Y8NGq5o*GfZ5P#G$In3%|d}cvC2RctMrx|Iug5lg`%J>u4^md1aA||*BmVo$(3UtKqLHBbCFbD)J$x6z4 z#lZ0U|4;A+Sbo&DC3)~4PCVxWHcCq>}x&Nb{x$4|NnpS zTJZcOe7p~o|B?G6z11E;jSCU`6LPD4itqnl2cM7Nsm>`zUhfa;UxQLN%zSitkpA%h z@ZpUAy`cMvuOco;-Z%$y{=fF@!GkdKK;x02@$vUze4k`nD!6*E;a|VP`&S_TSELHUBM7uUY${xRFPeGi<`Z(yP?JaZUvIGjM?nE1 z{6O_*56o`n3 zg2x{ye(V1u(mRM>g%sc0_NF5DPwszSqsS2v6Ba(7F^)lsftBIhWJLy5RbKdgfd+GW zn^z&-SIj>LG+zE6ULT^%hwSZb*4IbeH-|p{-zdPqfIMFba^KafSK;mlg?D^vE}UPw zb&&w_dWX`jp=-mVvf=We{Z*@0A;!09MF0=Sa^&Wz5;^+g9AeY%)gM+J3#wOKCj{IZiKJT1@CA1jmVGa^*uTt zz5kD1|9@VhfO4J=EZkw~J;MuiyzA#Z(Cy=h{^qY|)aBnoGf(P1s`)E|(DFM6cs&w4 z|F#-3Fff7gBh&-_J*fKgr;x_?M^lf^2ib?bo*q>GJUZYEwH#R z*CfHfumFj#tcmJAka=N9=j(v@rQg59*Y|_Ux6rkJ;r<87hpzt)A0GhoSN(@ykp|}P ze~q$VF%;grgx+6dzZan&v^nwLS5)&u5%V`7^WtL>=>f#A-TD>2zzW0<<%1u;1U@e) zbk#rjcnVk^9$Npw{man1rO#nP=<+n@b1*Q3{;!Ak073n|(EtD8^HW6G57!M1&+m2c z_yU<%^)(jWUIX!?w+$AWd1_lNYAJl&uDf~@q ze5;q5n!@9E)0%bNs~8aH{froX1H%Lmg!*?rC~tvq=vv{m%*@R2^*N$jL)XTIg~9jh zqu2N7d`jzoQ2x346}9~Te?Rmz$Za4DlK=l7-n|Bw@Bb0Y=^=bX^*|gSQ5=HRhyT9{ zUx5U&FEk#t{<#{8nC}CXr%2W5f2#9AW39;k;a~t=7YzyuFb25~X*eG2ehfaE|K9(< znhn+ronH+N4TY~SJOo*<0H4oa3hsY|!q5N72HhWmQ2!(pG=v8>viut8{t$Te z{olh2%!iL3gUZivr1>6@`;pHV2J^$i;pq)lE`be))jy?({SFZOufq3>aA$+u^B3U5whtcOp#7ksp@{q6 zLE-WL|35_i4N4FH5&JK}^85e8&qw){+@N+ zF|`bE|AO*2@_A+0(kChPKYIBIS|5PaJpMm*Yoh@2c))W@wB z9g+Fx(D~hH@@V{b&5sr89g>njW`i)OeEPZff3Dte?y4k((+J|mG<$O<6`<|it z7tKHC(8A|jHycWLt!wu1`ic~Oz0Iehkj)3JS5QS-pKz|(rx-MU3JMz#UR&)`%u$bM z5Uj1{Db|3`K7iH}GBAMVXF+N~7*t;&pZ5$}@BDS^S9txU*W$<#TAG^)QVYVcf(gV1 zVNm&ty#K%ao&p1C|2IeughB3m5q>QU#0KGY&Dz;o|M$aFa89uT%KnprIgb@Ok9NBB2jicc}}eumy^?qUYefh!=(!RI5ME&|=33+4XT??F}n zuK9HlymI;f|Nq)*M-JrsF+kykJl>2R9_al4{~ZND>+xasf$|>%e01dhe~V+6=OEj+ zeedTb4FA`|>)Y*nP1bUShQoDi-)p*-Av7Kyeqi%phX4Qn9}9mi1H5jM%|)(3#fr_%6Rc>ej0Wxv4mkeI-J#``S)+5c;o?#=Cv`GL5v2XsF|DAEM` zaOWG$(P{p_3f{b9FxlJJjeLLarZwEv$m>IgE&qqYZ-YM$e@(XbcAM&R!OsJR)c=U} zXyEaw1q=zLP^e^7o2tw)rvp!I*EqKNum{FqMhqD6@Q&eW|w#Ssw*^`P@; zUoTw>Z!&}U{}Imrp949s4&EU}=l4|W6#st@@9zKatybVjNJv1ezX9D(_O}*Z{(<(V zPn|jyzP|@FUmx@154=5&ZvLR;BZW8melkLQpJJY328ITB{~EO3|NsAJ_y}}P^)p8X zh6V>%`E@dhfdRB13C0J-cYOT&WElT!GpN6J6}}z}RR1L>CBW+ojPjL(fdRSxH$$uc zCoWOee1&vA(wb)QcnLiILE{;5NCP$#<{VZ)K3{5Wb!XHeCoj+%2(S}D^Ct{Q;}vVr z%tPmce7_3Ge9-PleWdf9Kc7_Shj%Cb3oljRNGOPa?=J?`S6^!@;p2^<@Zs$| z3~z5Al2Bj>L4@CZQ2qZjv-om711|$BBO{}Wr2+#dqY^9_7}%qfEkVj*0_;K5<)=6@ zTh_bOgAGDGOA_C)s(l=%Gzv?KL*ShX8a}ZC;tasAP0#yhJYox-J#*D;Qr^IqY;JFJYX2Ee22dQ{~G^q`X9Qt zw_8<}pBtK7{+nzKTMAk)0^^5l4FlbG0iTaUukX?Mq}Kn?Xn^N0?`qWbf4$W!vlcBv z^#4KS=c1o~;p2fI{{R1o`{{g&QSU<`T%YL_D>yhjfcZD48nk|@0KOj*l%K!;y$@f% z?41odj}&n}Cuo0RSXdZ*d=}k4(0cn&r1=8S`uNb$Q26{Ex_d$U?HCvslwj^bH;>+Y zsC(e!_n`WI|9VME`NAUhQ zsDU8;U;nN}nV+R(D3NSit~qkLXWX<_KDk1vMVl z|3?WwJ|YYQ+oqeU7*9X*jJ~^$L6k9mr3w(b|7K#h~#sM1LRD|3~ic zgVv{nUY)x2zs`S-{fyiU&jJ-Vrke7??<0I3nCgfatz}@KHD4pj#qqx=VtpQZ_@nbd z;YUjS59(hb_xC~kMMwz()V|_E;)BmqLE>-Q>&Ov$};U+=%;iLFupI0iwST;;&k{ znr8JsD8IzlBIa{J_xB=?=Yqzc(d&Pd^W=(kijnspf!hN}?O#ImC20S9{r~;&`A5+F zVnhVud{Iz;r55RYdeHiGzOF@_hZOb*XX0@NB{GE8gT{CM{lE4<;BQxuB132> zVm$`vJX~F*@c~eKgJC_Qy&e z{ph*L;r|iq13>3Tg|0%Z2LYWQH5~Xqz_tH(aQ)BB#0Bqvg{=)ixnBa5-jL6?CzL)( z?f--F3-WzD==DE;i%&6fenPKbDdn$g=FUbwpE#!&^?V{w`L+FPIlR6DjV|!=BKoV4 z{xM>|B)WS*?Th*Hh#5T4dHg?+&O6&M2VDNc&Cdt|?T$i}rx%x?%F~;V?jBHm#eme` z1dXR3KpLM0#plNd_3-;lK>d;M`q%LF+o1Us~z2Wl*XRBR6_rb#FA3*N;i`2e^<#SNk4Z^+Ej}nbOlpdL42hCKTk2kDtL3`KPY`L{6d`Q z4x0Z!ng0i`e@C2;f$n|;|NWfxLj4S&@rwBU%*^k*!@zgI9oBGU_{zn=pbAx(+k9BV z6tn;k%J1u5ta0EiV!b|Ns4Ccm_Tn#DF8HiJ>Cl0C@c8-~ZqLn;`q&;qzUN zU_N5~C8&KA{Qnz#{=TPJf#K>@QTTk>+G6#?|L3`Qg4$14r|K}UF@PNWEO3#; z%GID2F~or$Q7MjV*RF-{*LxnQpn-fJJGJ?pQHv}<)hony1_qyM7e{@5Zg86elwM%s zAT|i2^Fiq?HWslzVA|G20?6m7fco=VT1w3zy&w!KUstVK#ROu5Fro4lq<_^a#C$Di zzkoQ>c`2at)k2WU7j*ZP!uBI*|F;3n2!w9spOOT>{+W^C{p7XX4F6ZGf$4+r5%Dq9 z_=QW>b?fsogOV25ONC1c=d3`w&+6XY)8M!OOENGppz{lt<$z!4G>0x!S7`MJEj4ipw3oKxJ0lAl5K zKNAB3JpZEG51JpCinN{))P6uY{}{BM`!`}kgLbw8L+DjgczId86|_GLv7jNC&V1vw znD$@YzY2apK}Qe+Lre%_e*~z#bnhQxJ_dAOacC%Fejn672bJ%jumoYy`9BSZ4uk6# z5TBU-|JjqBoglR!e9Vyn<^1)NQ49+O^FiYw;Qqcg=(L{sjG+AvSGTT(uiy91cJV~Mug5#v z#Sx8CSfihVxS>_Lo7i1Ug;?b%qQ{imQX0by8tfZ{(W`Zj#L3v{0kCsO%Zx>aQ9 z%6%)~*1>Khp zoewAj-5;pGyPA!`mtj5Qd$!QMYrDh4BH;H2y2oE;? z#5JJvfu>FcxebITE(x5oYSjw({62d9PAb1}NpCkia2P=Cfpy)X;V&QyDi|0T_`%~1 zi17l@eTbp|2NPeXIzP+7>*s&a2*8j3m)C&K%Rt<(9lF<{SPWHK;tj4^oid8@2x(WggpKanm_;d4>2AN;v=um1@ZsyN0Kkr1(jRy_KOc1 z|6KFyto7^P`@`%9^>0H$5cBz<{2pG4=#S@AAC}-`M9i0<*Z1iBwZ%Tg$n}3tHtP5S z$o#*E>%abk_N$qiBIKvGRY0j_K&R)m03O?Tr8XrMl&wn*E z9A4gm>i?y-TjA@`a;g;=ko)^;tB2@o_(+kplFrf2)knf8M zn6k_z{+lf8_ly zC3{itUjpqfKweJ(S^u{mzJ3y;{s$Fepf)1JJMj7*%7ybGwf}qu6-z~u>VIa#MH>76 z|6dQah5^J!J|7;1FTmgc=HIW+TKNCz|DXT={%^5VV2B7qhQ2c*IYENzhpVx;dU%~hH{6UN-QC|O>tlj?~ zF@E&@Xp;c)_z}AMKQ^43y6=YZC4Kx|`Rn7G8J z`CkQmIRQh!oSf$Wq2WJZ^89nSt5+fIw-^ZitNr`6j{M*Bf8qavf1W{#4A(z6p@Qyf})>J-Rq5N1|nU!Kd65KB&DE8d?gOABL{y`(K+2uaC|( zdjx4|t%9$I2enVo=lA35-V}kt286SVLHoNA{r!SDE}F>web9P{`uaL}e-YgOZ)hO8 z|Bqh(d!vp2ziaj>4hxHeub%_02l*TO6W(73@e!><(Edcwems!NAs9ox+Nb#cROJ3S z_A5s5-(lc`XKV>g!|DSgCe?J2VKGtyLU}Qwhmp?W*tnvRpVt?EdgF_%b zynbtRIBc+$mlJ+oUZcZ83*_@)mO3^%fc6tGG%#Ed_~G!^#ZrOeKtck-{|pQa``^~W z=lkC^qxSb*4H+0hK!K=%#*M>;Q2{1|He59(ha_ph$)JuHE|ehIW+Ry&X8|lcHmx}~c~vNUItFz9{9xe2E8I;nMOvR_vKDnc7fAodkDuZ5 z$>8+Qv;y892lE-Y;QJFp*P1Q`9rp;!f8g^A*MEigPeJ=>en%m0yeZqN$kEVn-~dcL zX#Y$}8KOJ~onLeH>Qs1pB)9r?(!#}y;r4;|_l1VS_v?V_)Bpef!p}1Ut(X6gw0{T0 zZ?65f17=@uHFx%^U)}KaexUjx4(UE0O6zw*`a$kTE+0Va8NY?zgzw-7tQx{7o|00H3c1jSrZr^1{#40o^zJ?S5<%%)cQ1|NmFJVEi1=c*Y9Ecqn@RA7noA zehE}%x(~k&IiRGviYF!K;}d5cY@b{uzUMoFWwr zKKh#xK=bS1@>768z%V1K(P6KtDr@8aE8zZqilqX|d=GyOXub;3-{)^pfc5wP z|3Ck~ZkZ#vJt%6!z|H_##J{#VQ3CmX;dRX(Nr>8>fnmV;-5E(s*CWP@xto2e5v2iS zJ_va}1{B|+p@{K15I^?zEBJY3pz(scakaUiv;o4UYZEz`nK_aAS0QWv|3~zHK=tox z&;kUI;{X3K&RYSMcgW`lUf*l7HZ**yIaK+73rPJBpTC5~D@=ad-bDf!_5VNQ`yWi! zuF_hy>c7o@o&Uc7>qEDmo6L{^zA+hWl*!(8-3*`urNBG}hJogX?tMS`!62&d3AG<4 zEh${`^eUnORk-9_cX$lEdBwm#CAWLkDhBxY7yp!A5FeZ$K|xM6egb5MujK4v0nq(Z z|Nj5_fAxRE|KpB|45Cx7!`JtOZatO7z{Ct+|6;l|bnVrvi1kaL_UnI82jf2k{QLd^ zbeu+tXjndU%xeV zE9eHX2k`mXYkQjn7*-(WtFP^KRsK*D_ zcVGX(`^)E=GlEuWb;0}l+MxB2VTkYom2dw;5%cH#H4F^M?zfLZ?m@h4Gg zG6RG`^;vjrF8uy^^!fc1O$A7QU;91Vd8YHsJF7lntM>r z=N}M$17b(vxn`Z}m>9%;K|0Oa;Q4Qm-$57@zwz;i^CLn0($K5$^a&a-oGXtwpI1BC zfg?0L9zH$>x=$Q@UN6Y7|NsAA+bg{E|Gzr;eVm~F`2T;u;p0`H`vO8k5$kEHu5FqF znxBAb|37uB0!PDv0(kiY8b3rnFAC(oP(=3me~n=MZ@LzI9`XGD^Z)mQ>i?YXhK7a& zMh3``4QRg{XoWH?{m_XIZ?6_E(VqjFn}FF5s!u`wh4Bg1zk^L4eg8q>l5>+o7Qlxy z7y_2`PX50NaXx|ml5>+m=d;25OD(>_ABOJ?ml-y_o9)OE6A%FJ&zWv*l3->=+y^}E zsL0a)|B>2@TSM0(pMM5wA0W49LFGSX^}q1a&z}+ff6#qd|Nq~IU!h&P78DW>;QcZ2 zV~!jZpz%g%1_7skcuvv8#L0ciYtE7JO~ zo?-wi$_fa-rx?O)HZNJ2rN5>NfV z)Kfvg)KnF||M{4wGH8DSY(Q54%D)=$Z`1#0|9}5)b!1=w-LC@+f4&yf`F#){I=>H6 z@*bo4dP!lMV$8lY9AHWm%~e#khP8+#mNWZ z>s3=V85l&7_RCD&%D}+D%nM(CJZX~2WZG6m4u%I2@cv9z z5XyN;|3lV-##>?^f!qqhpx#etXeivh*Y+;L9RL6K4}LyJ=~`1zUe^8}_uub-{{Q)* zTiYxX9y~~Zga;$Tr8O*ys~DIdjR6Kw|G&2zbw3U&b%Gii;%l&UH%(2_536o_n1cU-j!vHw6|$_h`=4l%GK0|Nuu`~rpm1_uTO zfhkP_2??O)KIjtHU;jfv=ZWyD!qaEzUX!)g|Ng%MN?RZtx;A9#f)y*^^_$7oQqXxp zASp0Lum5wi!Rzbc;|rkt6N;1{LNNOOCTlMS1`2`=`~M%*-eq7wYVYp6hIT&>0|UdY z+W+wTMnL8x4X1(Y`~Uy{PluTYlK=l7(O(DgLqkL17A`s;Ann}xUUYhAD-bqBLBUL0xjl3v@c$PZstHbuz#TWp!M@HNbM((|Nj2J4-b#` z&7krHG2Ux1CDm}{YQ%gDXg%Bg-~Zw2LHyAFi2D^m^*zddB#iQ$>S9~Vmoj)n&b1+WQWQ2bwyMeMgk@9(F==J)IVYrkiI&w94o zkz=ZpI6IlU`p+Lk|GKC7bQLH+!rV8|{G4X)>Q$>=!TXmw)jGwiR;`AYx7g}` z%=;@4<6)rkq7>=As%d*2IXFS;`u`woa`vzU^8S)ZYfcq`M(<$pNh&{ZiEs0& zRa13g`Zq1%pR*Nd|0k*S<#1Pj?d%CpPzHj9*R``NJVV2);OSMj_$g>U?+;Ag>@FiX zZ4k>p;mM-t;K0D}nSO0JNzbZ3Cwfy{{WK+Cq8u8sY*bP6aG{I96{;r{;p4Qlg)oe1(T@_BQh{{B^@ z^JS;*O%y<0&u`FkD(lZ5#CQ;B{^RfKSFq{>a{h8CV*OkWXuX5hA^3T(rCW2Vd3h1z zOQ8M91ke9LI*)0z{|`x#^$hbF?=#N@Be@QPXVRZ7{vY;@Oe!r>-ilK^ZWn*_i2F7Ke{?~J!2e$ zBm)zJPxWC1PS8X@$aDq<2Jh}SNyzoRcQu-8Kw>po?^V z38?)3xBox91fI4xa0+<6ukU}I|2F?^K5cR20Im0h`AdI^PW8%_3*j-$zhvEH@Sopu;f51P57t1Xb7{X&B;OhflXE88<&JTg4w*UW4 zK;u{3i2KAtw}N^EOnYJSV*5aettN%{{R0y*WvA7PE)Q;Po%4 ze*BBpKaEG?gX*hLr2S!_^|zs+p@{X2p#Ae(5$)w|dml@Lu0ovmyS7+?A^Zh5T>ZIf zP=7ZJKED96KQufZejWg*z6?cb?}OyOBDL3#Su!xFiX!?4Q@1XX2wlYlUmrJh>mdo` z{Ep5C-Or9JkIqL|4>2E6UZC@@?FHKh?|+<%QeX%V2>}hkf};%N{?J%Ne}7#uczz$g z{;_nchZkcLV!i&lYM$ahprInL?*IQm_5UyU=>QBg;Pv`YiJopy|5j@+l*@2-va@AG zSa>)CxWBLP8?>Ik;Q(rX|J&PK_-j0rx|oUuPUfY0$Y*O ztkWD961E!5VPIhJY1RgvuL9%Jo$uYvQ@rX|9DKb2nExNK{>rQXasw)Bod^sOM9Zt_AI{LLToD1+~4QyYWHmV@%inum2A(KTEfo zuKf8_fNTJlT#6p;Jv^$44>f&&h3OTon$RFJhRm=5-dR z^#P0E!X@0G^%D9B{=3Qcn(*cV!^9k-k#Xm?b2!qZKV_1QZ-?Rigez+7Q2g0EGDFkW#8M=Mo`U>ehy4T?TNGQDj z4my8B6)C-M+iS8mrt~Yk|6dAfUlbI;+c#kI-oAxr;8Rfw9LY-&^Lx)M!R-O~dK+~2 zp!31yLuo18ywJ6dDCaGOtOc#NSp`22Bm}&^5pf?lgpb%Ch@HP4ULHWr0|gxzgVqzh zdKn3yub&1wFEpV5UVef6`}FHy`2GkG|9>rVd6I~7K7YvC_stFti2V|v@%_JlzkdT; z_W%EXLhJ27=OwLJu>w3M1=3@(7SujK?5_ZoU!(nh#Q6f~=?Q}mUjKjfDy;vX)9fhF zt2-55K5JJy2rw`l_zu-)@XXWM@XO!-^$Gt#{rx}xoefdv_s@dHmy!DWd_740{rCU- z7lHQghh7!WWAJ0pWME{-scsbDWM+b&ujbR-1v+aLJ|0PX{_7yn7DTB37<`&vS1nkv z3U0qn^_eWt_%=-b-v7m*@lkj?%Deha5pw?t#9y^)6}~cg5Ga4Y zf0+x+@|}6*+j3)(e2jqx}gdz3$fB5(r`u@L? zwWgr`{vf4b{Qaou+R)JX@cDqNdlfj4?^6(73Oaw$6yE>Zx;12NUdpeg6tdQeYvFS`Y?vp!dOltu=+8XK`@~=zLaFczyugUm6t?1E2o_ z?Vm|XLfr2QT7Of3RR4p_24R@_;PL!Y#QmC}{(MAHG3bmEuo9435C(HV3;RGEr13nE z`;o^ZOx89D@FLv@2hQ)H1xHW=K>L4?*B7AYe{?=*|HZ3Ui1q@A|6iXQzCZZd-oPF$ zEiU+ae$ajg(0CryI`Dc3g}k1B+SW~TvQC|X@81KRPw?&A7x?+O zgzA6v_4lD$eTtFiheqpv)cb#-$qC+G!r(*ee{lbwWj_;(B!j@(wZ6Wv`S)j@jsnZp zuU*UlTF?JY;Wub}AJpH6#XqQi`gRpDzYiM!QsqTGuMgbc*ZI#5+Q08p?Es$Nhq6g7pMk?#NgDe zjRMH`D|0xZ&W}#p+9aUL%LyNEG~HUVbp87E@cqVDw|-p%E^pTVkNdB6pGA0WB1cTj zojtJhV|1295_EnCEc^6kDO_@*2;TU^a(*to>$6e&Xxp9ujVDx~j3@Y3 zXMtAF218QFwX3R{aayZZZGWdw0uq_H#E~O3W&y+Le>s81CJ5bpi29 zk2VQ})^;(x{a^Ag;9tW3OKTJu&K^eeFG1^@wjzz^gZQCH_o0CD+uys0@+)|$0t0e= z@_p}@C8+0Xnye+I{s-mPQl$R7x)TFKa&j_!d=%sd5QgMNEcbyz%V(H;=-MWf{kNd{ z|KC5v0Y9YH|Df@~|Mw9G41oIk|F3;5gxR-kZz2bHJP#@W3a_i6^S+>bkpDt!5%R;sfeb9Z-FJArn1Xccj+E$UZdHMPIFn(XPPVpC{^+llljq&k_^LNnedvt#2R*fL! z{UM|C|D@Odp!t=0hJ1#4hW#pQn-c}DZsmoR&&CQq)y$ej2@VGe{zKODgYM6bhzW!D zPeJ$bAn)G;W_QB651f?&~eIzjRd76ES*RNlXkZ;zh{!L;1k2)T} zQw$mpfTeeE{>q0RkMV!%)%|AY8nk;=16a}+qHBFz_q z#w!_^IN|L9@P4Pi|9`;j|9&)dZRl0eR2bi6DFZ`6L=1fX)MTjw2WY$=CckZO(3FJ> zR=_vpfW{9#fBp=gQ3%}{y7pGoy{Y>d!I0_Gnq!u8=FFJ`3*XOc&US}}Zf%9}OZNuM zsVpukg7FKN6fS|WLG)<-OWXQ)sE2Rq(ZVHLkg8vQw8~zvkFPO8; z(!s;e50-vG_5IbWi1~96AN~9dxS_IP%x=;SpsaG#xd{F%#5)uOMuV`2M6eDh*`~M%rM=IVh_=M_z zXnerub3pvBU%!HiXs{D7&;J4M|A+6V2CYZ<{Tr+lOb~JpsD23zy$WwofyOtGj`RPI zWB)(gK9KwV{{0KDAf}+5{|h<4;Xi0j9PA#D`}Xg*hxhMDJ^vSEUubA)=zr*lnekRf z@cjST4zTh6d#V$`^SQ7AWl;Qot*wX8_w*JsFsSl&9)_s?{~y%81^4&!K>fl093cOK z*7JkXGzhQl)-GPLVnqgs4Z=OmI>lNIkN$$#Ae_^zQw$0W5F3Q={eNr$G8@DOVN&@z z%|69NMTq(a6hE}A|8b26fcyZ$p#1swJz~7=`_a!!5Vw2%|37uFBS%4ZC*lC_iLSJg1}2#+6;B|$+!pg9*1mtnO2AFb~}=@y(A$Qb`AK3cfMbZTfQto}Ec(`M=C;pYxA z6NEwK+t;s%_3|J-^7;V~zqYm(-k(9Q|0~XgtVOQ>r*7RmXVt1#@bxdy`X4-h0kRLW zzeX3Hf6i4iFuW~7?6(D#pP@+gEzI8_y&#OvhuoKjSbr0`7IfbnV*L&1e2=iuQ26`^ zdi_p_4;deXcgO#4-3ux2L2dzIboYSDqpwK!-)=)&&p&Oe>DoV`hzox~{QpYckzFu^Qj2A2VFhrJi*Y=zj|Q9{{R2Kwi@mHUj_z-e@N%A zg4}mK{5pJp>6Wdi=l_G+6W_!B!Ph^6!Y_2|diePZ==cAjw|CLw6P+KtRS{hOBe@r) z{RcYV0lB{)yw{PVIw}snKm3pc14C?lxafZlFw_K{Cxh6(ucQnLzpDEBdYHYS^RM2% zeft*12i4D@@f;YR)cPJ>{Xp0MKG5|6u+}vMXLf?VU2q@jEle_?QWh0EgS0{PZC_glGG&~^bgXHv};kAl^;r|lol9y?F zHN5gc*NZ_j#I~)89H8?hpxpmkw?0+~UBv+Je;4#Dk_ZJ|Q3q8pu}6_Zl>xDz4|JXY zLqk2heNeJifq?<(JfBZ<9644Xbx=X;2P=^Hp!)tP8owTik1hXx{d*PK8~gwN^AZP+ zt5Xr{Z$R_s3m2_|m;a#hWAzHe{&_<6J-R&Tdha>NgU|?V< zMP84et-!#Hy6*)6HVJfLu!Tn`(*8{EYz2jfg<{SC-^%24=zKu~=B{TqG{wb)X;x8wuk7zj_zU1`%NM;IfeR#;Wh@;Qj-tUww5xeEk)OzbgJ8eEdO?1C(F> z!`%brgNz2_Q9d|)z+nL*M#BR&JV5K~5UCY(dnKqmM2t^D_RED{g^#C~u5IMtyM$*@bNp4e$agnF!iH+&{}px4Kx}a zBQiYT?O9O#hlYm2^B+e3;Xv(gZruwS{6f@6^S&RF*t&K#ynYAu4~juIib69SdjFkL zzQnQ1OTg=Qq2`0u1EKf-zkmM@ukRBiqvxwYOuebn|ZXubl} zIfnTc-F(pae-!fl!VC-yVMyy;LG{DeuV3N!D}(BL)n3GUeNg;JJ=Q*JL!(ZY1b4u4ba)f^6g4fTXYgH7#GJ(rra13qR+awSg_W&+mI0a;0cm-JU zKjc25P^9)LD1C%JMfA_X*Qr&j!@LUko|` z4VuI#t?$wGlUo0S{EK{FPU%(+CuXGjUt}$K{T%#!1JHiHuZZCm@O?$d{RdEgj1)e| zy#4=QBi0|U)hSj*Ivh#K%9Zf*U3I#> ztAG9a4?T}SKhF=;{2ahO9cjodc^oIs6FriX}%YPx!^(+j` z42%p+3_8uJiVO@*o#4~Q1Q-gut2?6@7??~?F)d@-#`2HNr#RD#!2!~~0Ga9A{W5CR zDs$6-(*b`4eklCXsRrriR*z-?-H6c7s8bBu5kCPw9^u=}Q+##lQfPaDfg!h>2W7nh zE^P$v5S|01}01_lAa|NjyCL1BQZ9%K^2KBzpBevmwdel&SRctZ3e+Yi#e2+4gQ z{y{YT2hrpSs@DLS00W9$x72#ode=9_ajq4yfq`-8^dZSsYRATQ?cmefR$BG&3;N z*Ms63g#Z6f4MbJnipF0Wi7JoIzxSPifr$xZ76>CsLJ$vG=O`Z(0;Ayr3Izlndg0+y z9TE}}0`q}SwNEj_s#UAd`GtQD{onL|(|@1poa`U3Uaa^J1v$k&#bIILp-}FB-(sKQ z(EtAjEg$4RgzNtQ*Qxd?UiCK=?p`qee`x6cwGbbH_^@Tf!T{30YE}1o2%mvLyV<9B{rdHA zeonPc_0*|Tr^4iOs!wG#G&D58_&&|r+4}nW`Y^su^O>hSRJaF{&EJacn% za~NNz`Ajhr6QVrRY0fGB@#Du2n7mK1ckzM+3l_lmzQx`s?(->z$v|jyzHYTo@!!9H z|3YLL82*2MYyk=>TzpV?#KpzM!Q|1+L+57~`xJlu`t>VJ{q6rMhREiF+|R|u#RZes zsm?)h|LZEB;;UD$UWLi~RO?hDhsV9|%#O(B(VGuSk6*rg`2us_o&PK-{-cx+3O^M8 z7kd|LYin!6?Bi+nDPFsF?OGWB-v7rQDB*#|*Xj1D&dSQlf~n7`&OwQPxqHk`$ofg; z=b)vhb=^MIwzjsmF#F!m&h6f?VZ#O(-{k1J?(FRBY#3jEj!(6&uC6YO|8DZy?sec>_4zJr)x+*_?({Q7#_YcS{k|Nl9~ z+{IlQdaLG&{GSUF^RD(OHr>1bKLZ0ZgEm87s!p|cv6i+zynO(wucywJ(}TnY1H)+j z4+{wh4XVFJ>wiS4MQVEh6n>-i|7iUW$xWl<7l@n$36W8Lq5^XNe~|`*00YB+Q2pP? zaGBxC(m)0Q{r#b#SN{J6RcHTmiWNARLH%Pe@BjbaY6XyTc>lR)i1T}^6*w4B{l~$u z9x*-umS_44_is*hlK=w)*Hvh6{6E*65wvR6DqR>K)IRwC|8K?ne-M$JYVPb+U8_FD zGTayYzyJUL+-mLO^-K5P0;NV~1|PaFx2@V|Hg+R`HzEv0hzDB!N3q&`4`eS`v3nwyAuP0E|Pkm zVg(Kc-K+5SLT`1G1Oo&2R!Hdl|G%zTJNy6te~;g@|IY=9DJ4TVdhI)0_hue}#{Cj*kC(7mtqrBXT)<`(U*HKRW&oD?30mBBg+MqvHXi z;o%6X|6?Gjfq}tMf`KFS|Ej+XR~Vi$JY~3&D8Rr`dR|K$R5yWeXAo%h&3^_E8-%O> zJ8~dZcmKPhP~`_3zZ1=UtHAttxPOj0g4`e40P-6MAC>^~e}LE^3~CRAeq9<4VuP>) z0|P_p_wDfdA0+>^{trkBj6wYBT15N7QGkI#G&C089stdEGb6PRa*7iL7#Ns%|KA5| z|KAH5FWB*VohZXR=Kq}keSMmJio5nB=EFhr*$hA8;qeD*A5>RYRl(wObpC&I{(p4* ze{}pGRvwJjcd(Fv(4*n;$l%W(#QOi7=0pMT5zUbP|CQd!jvV1JF%gj3=>Pwm>O}&~ zoSd96K4`w53DN!if3BLl7(V&`|No%pudVheW{SUBitvwial+~-82A6$=FFgYhE;Gc z`4lH|#5aK2%@8G^{(Wft0(kr3brPt(5dHun`~SbICWs%3XfJRuFx)LgvE z(6#5AL6tA0cK-i=+E(GEwOYU6>j6vGI&#E4K&TH{tH2Q&8kYc5@4&&p@c;Gyr!YQf zydbn5#{2*OkOXMF0MTB^tybV*;#8dqQvsSk`1kkE4{e71%>R2q`w@JKxz=w5uXk5v zI3EFOA22un0ypUx7#IaX{D?T%{y0HF(E54A`hP|S(E3K?{RyD)2}n+Xkm&r;_5YOZ z9~fQ#kGfxAbp1ahpTWq{`Uw^i5PCE`AmIQb$qx^K6oo$ufBygXDF)B~D};gPq|a6B zWY^cn%Nt+63$9{Hx8_!FJTU%J+0ZNYvR@BjbMtszTStU~mUL)V6^{XeAn zrfdJ9xZh;$p+%_vdyOPtvetC%YD94S4_#}rR!aj}y~$cW4g~-D-oPFwEd+ns)9P8&~au$iw(qO7FoD4&uj$hW)*dH^`Q33s#RKA$b2p)1_ooMyS*SEf%pHt zfB&9=A=K>u{QvX0s}cQwMg~R((0mCK(<*3thyl!JV4yO;p{p5|KSB1P?5Az^DPHyJ z)hmR&Pw_XT{gdeP_muKM;Wyg4iFf0BR5Pzx@wikJ;VKz;G2we@?L@ z2Lm%FJpOWub&6Mgo)rc){(ld6zb4`Y1kiqi|48RGK>1%`>V2wpijkT-|IzuN`u5ka zf45-jLFYk)hStN~2jTyPH<7f#`@7#FnXg^EYSpg~F#VwO6jrTTg`z$_J{&%O0y6K_ z|F7`&4~YN&{r!6|{ZRk?1J(T?3_5QCRR4kMeh>!L$E#MY;)CU1C?CcJw+E1pzaYp5 z&A0sDzuz8aKyI^k@%#7h;paPGnBVME{0go9|NHkZygdTy|AL|uW*(({^!h)i*t>Z3 z>ecY`J<#|6`*iCx|Ns9VE|1Q~vHu^%{mA-3?k9u48s`7?82kTw@$dg%;)`wn{~DNi z?PjPH$7<{}0biPn+ZEfxU`TzI-zyJTf zPcerVL&Jdspt_%lfr+6#OM#&xARqviA09)tuY&fwf`vx;;O)GFCOkm9YgdKB=BpSO zR5VfDrwTfa6iJ>1O`Z^+ZwdngFE1}IIP$^u$LRS#$N*Mfz{E!Ru#kYzLp3}=bw3FI z|L=fO|A%hPE#^d8-xs>obnVw|Q{e00O}2)vMVg)lk9Y4{y&B$MBenh;>FPtbnk>~q z>R?aXYO)q_y3qgs62~sj@n4Uaa0y+@zz`l5QvjF{SMp(0IzOU5NDorCUwcW=(@Pul|>Ab>K)i&;VbL z2$>%Uhu43g_Q3C|eem&qk+ljOrc)8;4}3rRzInxpMGL`>1+C}UYP$B{zyI(m92B2g zT3Yb=2}=D#seX`qR;*Y7pI@4~Rb=gZr22o;oX)6!|Ng<<51POD_3PKK|L6bT|9}4f zexKqt!-j^21W?`2#K6dqmZZQC5D*Xq$sMEQNDqP0`X4m~;HocRsz&8uApxO>YIuO^ zeh{Af-81OQl`HW2Lu74c5WoI@c>l3%>!dlWRxE&@_d8nuqt543TECI1|J&X#OY9ND z0spsx<_BUTP{sqo!s6lQ3xM_)-mNVKcZorD{Ow0W|&(!k&8= z8KR@BA478QC^^zYV6^^6O#wr-K7;vU)cvrKfY7+Y!{85S^&e>c|6&Q`{=ZJK0(d?Q zR9Ap7X#SO3Utb@@24T?n|Nr{>S`ZtALFF^(z6=l>gh{Q>M%9zno&e1kyn2PGKTEeh zmPl|o0N+1w%o20G;QtxB;p+jmZB67*RW*h09~9pgvNkjvF@GMi)^zQ9r15z|@dFya zU-jx0ygmn|4|wAPw6Jik326QRE)N>NpI!YNexB5>d#j>Wt$LLON;@E2x;0UNL2oMD zecSe$u8sX376Xz4;n1xnYy0}oLr+8a|36>~=>DlN_;?3sz1jVHVd1d-4*_#dC4uIv zSQu;={1|*0wAZL;I(cPvL2?HJgB$oZInas-h)CLOaQMO3zoGNp(B#qi=;{v#g3Swq zm_AAlwh$Pt|50NESA79fH7XAa2?#w@!vj+LE8P13zX^2yAGH7f_CIF*&mIK2e-2dk zf-q=)7Ifbnhz-J^{u^@tj8J_sDox^jb*d>${fu*=Ys16C;p6*|@&DKG^Ob~``V@zUhr`X!t$v-g zYSk+E2uW_WPI3MJ_x0Q1er&CicPPA){~W$gAC=|;#2$wynd{_9Asx#w{A9Q za)p5bJOBA^pJLGZ1_p-oG?01(zl`<2_WwGNd7HrIL&}F^MG71tAt9snKO{H?9XVS6 zqejV4twn7XZ}j?{R6eMF2JIgM#RUk9AN#xnbbl#`4Z@e^Ffhc##K7xQQ2qb! z3Sz$?=sZHuemIa?5dMDjUG>6+3vt%}+d%d8enk7CbgLuBf(V591}&gP(}?ql0(wyS zrE3*97`VT}hXhJMH_bjk%ulQ>R$z!hS}!lqpJ5$hR3 zLE{CW^O8ZH0gpH2R->G^v{k1#H2ejqN(ZYD2JLSM4TrC11>Lu>V%0uq`}hBU(Edb( zZ7@D)1Ocr5e@?Ma@&Esb`=3DjAOF_BUjKjo|GNL$|E096bBp)y-vu8(aPMYd2n+iI z$!rV^4C>vW@c{UCIhyl9_J@KtWI$a&h|kdsI)5TO0;+u2Q=|1iY82zDFJP)hbPR3O$LUfa7!0Qvk! zP=7u&^c8$Q0<<4t`~NifeuGbQK=t2W_LIN&gKEg`bB6;)BKy zVCNUnn(tffQ(TW^KWP6y*Xq@)jg{~A{-6K9AF}^{EBt<`-XkMxf5d4052?pspyLQVkIS)z8TN|7&|g*G`>^m@mgx|6fO{|FQJ{o6+n4bx8F; zc>KRh3uXTP=SzfpK>G=&$06DW-;b`V_Bz!C-#>75FX+7EaCm)vZLcE-Gw)XTctGh| z(29iy_l`uYN z{Xr7LFfH0^& z`v3nweE%C{z8zkD{s;HZ?d{?ACvzCl$LQU8~2Wnd^MK&}5{V`Jgt)hAUUDTnW+(!r0?;71DVJVM`el zR%n3Kf-opPcdc3gcVFq&%S*htwBX?nIv+DMJO=Ln-s;y`t5^MlyT7;kRo1Fii2E^V z&(|sb|NkmHJ%Ps~{?})M`~t$@^Odh6)_Z{X^>uae;Pa8z|DW$ud{}^?;XndtZv>+N zgF;s~14GmzW@b>CCn&gcRaP?t2W)kupx`PHpMg&NCc|H+{(s(*Ah1BnpJqG=QAPz`)?iShxn%z6?766<`3J_Y)c#8V=(VqDSk0)DRke_1mcbkV617 zen;znP&o<1*y;=9{x+z7K;AD`y47Uq>(#rmVfstgf_m5u@cVs0=l3;Kgu^Rr(EZ6j zkmkD=OE55)Bk?CrVE|2U!_|Z0YZd6gewYRSL8sLt`p5tOD{vso7ffMbh>44bp9cuq z|Cbw&u>Y|HsQyQc7i`_yB*63=alS4g`?hU$R4^XC7yy`pQmkq$TlwO`-f7Qd_3A@6?-S-T5q z{{tw#JCOLG_DwRpH3vGM@bi*-r28RDw+b%}r6IozWPSs}y`^jWs;iLhqcj1Xrx+dq zZ=Znff7t#l5gtFF_Q5~U_yjac-cNq+ShZ@^s?gGR??7>SuA4g>v{)22!UJkAfR$Y8~Ap7np; zr8Nu;aTW090E168Xuc^Fem^#HSqNf}*8iYTKwwb*NAN)Bej@Wm`NJ=KM(ck_Ndh6U z)(@)?=iz|rv-*0(_%NuyuBD~r1=0Qg|Hdf{33lKfL}2@&AT~q457tMU0<=M$eJ^^FG-O3~_OB@cuJMe{K9-P>~LH zBBpu;6!jqY-HG|13s(Fe)Vg3`_+N{-{{bX_@+acFox&akl=}xj?H%O%3AgPPS^NL* zpBXUoK;s3lx&s9!+&6CZ!#6b6R)IK=vVQ2if@ zH2)7?|2K6il6x8j!hbWt?{`Euf9lpmfzW!y_&wlla0vK(Y2@)2(E5K;#{Z$_!^3-k`0)7y zO4}QR^p~zRUHe}i(Sr_ME3%YJ1CgFU>6>Za0{DJS5T9Wc()|!?O_nmC+;2^F{#u4r z9Ps(AP^|W?K#DJuwTsp+g3m{R;}7Y4O3-=L$oG$if$rm6y?XtB-~aRf-~a#KWNW}0 z2ZsX<3=E76%na-d0ZYK=XT!$>^heMCMXnAQK=~h8V3dy>8lZeM-1sA}{zqQ_6|&Y0 zwB8P0pM%C1x5sD0M|iL8HCY>8`*#nlegd6G6B>%RpXUGnM2@PeD)@RmP<{LM@6Vku z^&(3Z7^WhPU;a31x;7>RF+Kn~F9&%%A#`oX(p5}MNabJP6b1$c_;`5P*1{=WS`6^< zfbDyOrf6wtz}LrJ#!#)=Ro`a;P*RT-y1juG#m_bKRW;W z(ZDHPR;%FlTby&`2#<+C_#f1k`F8psO#jxs3LL7YTjA#ogl^TzW?3jeC-|!(HkbSF3a$m^WUwG7m!WVSEG9rDLuH`~f4{C4j-*0a( z&EU&$pXooB_&EiRs4CE|SV%d3?QE08(xodFKzN|?ef0hxSXhAQ(fS`03J5&>!UMJb z&#m?hQd3h?gXO2;w*DVfzpPq?SpRkZe6( z|NsAk&ND_nF9?$lUQYn`FK9dgx&IFuZ;6eKg|ELyU;hWHACRhp|Fq|utXWP7g9j^@b#3& zTSM1g{aOnik_Y(_Bu`3xPpSVv{y|>9QM&cZ9PoM8T>n8(#^T(@H5)Em_y8->E3fg- ziHL~!0ptJwKU)98!U9AOzxod3D+C_(pHDI9{9oAq{~WaXKV+*;v8pO!{SD;&AH;dF zWotqE(+~v)rTLfE`oDwEtGf#C|AOYL6Cz^5KxGvOgX)vJaq#Iy@O^sWwXyK|d|1i> zsRdzlKB)e`dKIxguN1UD9jX71UjKvox4)3?-vh6|-)}DuG8=?LxB3)E#30-U+F$nM zdM$i@VH;Zgk8S<`@87?FgUkY9Q2j42FAq2W99sPkT7UH$X*>hO2Q3!^=>=gZA3nc4 zVGfICR#q1L{9aJ_)q*ax2Pyvl|390P0)r@0c!1VNa3RfKgZK=1_!B{+A4u|><}ff6 z#3RBNY+r0CJbpsfDljlJuY|YX{{L6xShec^pyA*D-vnAO3EDFO4k1u|wQAKWczsIi z^iQh!p!ys6zD7{{0I50oAH+w@HbCaf=vm*R`vXa9QmaNd7Vev+4$xBsvEU-!T5 ze?NDJt81_mZhaNz}77`)YF>FU+1=r+HJp5IC3 zgZ9sD{kj#to_Ny~1%|LN#QE`{`s8hSIDEa{w5^UDUpblK=e_)X=HV5J)S)EI*Yw(o zq#o2C`~$DOLF?H}maaltUs$?TWUbzMe}7o`PMqUY91@0DpU(|C&!s*d?!Idj*8k}J ze^C97JU)TGpB$YJx?jh^!NCFMUQqx4>(`~AGk(EBApY>QqGkf6^SCVqK*1?(cgIr>w@a-;_G@AMjY{7}38 z2kq}dUXOrY-=p&j=CCLt_y0llvFX#NPocr_KO;ziA#^I@yuse;Mgh?NahN=*{I%7I z0->)O;OoIa;~CekA=+TT&xe4<+pi(r4-6V_L7y+CHosw&7JU5w+Fk{Yh=>Th z_5Z3>tKkWX)bu~99`$^#(5)dT_5b&ymqF)a>;DJc2f6?Mdy8}YQyx4>cmO`{fPs}^ z+R?tr44*ImMwEx6A=8N)^a$F8U(j`*kq==g5h zpHoQ;p!sX~eJ!B+C#K>9{QUH)bKJ%F`Y)jIL*)6x5YYLxt5(5lKqwzRUTfhJxZz>UAM*VNP7I{1aG(L=M zAC36%_`|6Gx1#p{LFpZNedB0-j#{4+3J>V{TJR}|h;yN9x9W1k_p{8pHg)fQr17_1 z*FyG!<}=tCq!|1d<}-djyRJJtJPf`cV08Q+QP+W3pz;qy!|*5{77`G8=!eH+aQ!d9 z2=R~Ezvqsi%8%hG!xM&Y4BvgKIlOi>>;T>Q1}>s=tF^O{$JeUPX%npfk;`lFew`I7 z;PVBb{`Bhg`tbcgp!Ee;Lqp;7^R@3)G?DA~saul-7?94>0j(yl2t}O_4*gmW@4tik zqoLvD(Dn=>w!ohGKk$68`?ezHBf$LkyW!&%0X+&F$m1=b^$HByi2HB0ZUvp_!v&w8 z0iCapeE$zG z<3q3iLH3oRDa~9_itC9ZypMOvE7%1JtFpU46k=j4(P7DljNPJNE)Fa)e z2dXb+N8E8WQ05xvYv(UPPvg zw7=*2c3AHI|GyNn9}&J@;o9DiwV|P*%`g?9^L+MiT@SB6C!($Y2iYGQ9|m7vx3;;} zvazwT5vCt>|0@F%;=DZc@oG}}AoD=CnIO#fDF&q_7(b_)JG%<$eEPyEE0f@d6aD}H zf9hVH>?U2rdH$gB|1hNab&!AdT=bF4=2gZHA|ClI_>fdTn` z0d#&&F$2SaR|x%}_S)H6Xy@wx|Nm=2^Z!Wu|E7>=KDv8A?rlJ_57gfI@*Qy=^E3kU z|D*LQYW+Ic!vj?RgZkUB^b4zxsl~6nW^wNSeo*~y$Kc1{$546ABZy0HwEhQ`K_EQz z>NAk55qQ-7h_C>$FvEk^^}oql+i$I18cv#psf#3 zI;j57f{&j3{}1ASMe-j52Ll5#A0&SjK6(IA{~xKn1(HYSzeiea35w6^T6pk+?fZ`4 zg8Bd9qbbChAC9=r=s&1^aUZEY0dmhDr1%}J|A$unj^6$NjgKIg7ts12zCMWB_5aLk z66Zkq2U7d{G0eKw6$Lu~3{+NvFw8y>8-z#u|DaGnV9fdiAqQfO%7a1yfd^lBP`CaE z&0nrsg*aaywBK(3etUIT{Z+cwkpuZW8&G}m`|EaijRRWWW~z!9?*q;M{X@D>w{)!{ z2SY;ve0_lUF$IkI?z8{@!q2+}nI9h?4_}X+n++N-N30Lva01QmBj(pZ^-E}IIK2N~ zFsBveK3P!x%Y@V(L9f4aihYVhk>)!fe3 zEG5ER1gbx;e*F(`e}VY_|5w)`%OkIshsY!LLqPc3;pf?a!aFoHJ_=Po;(S?%`aAIW zgYePK!_NuX^44Yu)r^!ja-kH38as{fJK3(vYYbu04zB3OM4i*HK# zGp|V;1J(bazCQ@hy5>1r|HBFi&{^L9kvOCLVR$|Qwd;SAwX1gRg3nij&f78Fx)na( zUO0sTjGl zx5E1i+qOPdxXR4{Ur&E+@40GThJEn;1)Jtzp8pdX8xHT$qSycE^*uTtbbikN|A_uL zXg?cL_ZPgsjZ*$rcyIsz|AHy2lI-p6;qx8X>i>K9?!oWd0fpDqtD*1}3umiA?V+{s z`IX*k(E19*c{sgbdEET9XzD@p{h^_V^C2O8#CmN)<`I&I*!K#){~y%es1Eq_{|07kwgRlRHl@xx01C!#mMX7LHDDJBDn{2UOw{vF_8K3@rVIuLiImreE#ay&{CLx*EM%Wty-l8 zKM(g@v%1%+RfrXS=bAOp_#PDTH_q|!vbWcQ_lJd+g2(^i?IBS3KCbu!Z;yfa;q?gr z^;Uy+Ga<%XKCY5U&i@Ck z?*pAT0aK4|9y(vAI;Xh)-z)g}IM~+zeJT3}KVN^e|34h+f5iITUH3xQu3o(s-hZI9 zzmKkewEsU^ePP(VxGo;Z>M1 z=ss~g^*_ix$o0SV|5n4lNaxu@$M50i7xh;A6qlx!!n^c7#g7$`&%*_^Cy?jwLHz%r zf8p~T5I*7nK#={2(QoMdINWs5X+{hT>qGa$>wAd)`*0N?eqAkMh8+}sfB)WruK)m< zA0LlcZwWfh8F_sbXuKjSq8?t}g2pqD?>j{2gZz&izuLv9<0;<73LMDi|A5pZuTMZX z51kKk&&suH;qASNOH>q*$A>}d8NYo)oc~8^{SP{SXVt2I@FVRZd|2xH|DRGmWIhaW z-o;?=e-AeIMO?c)2WhzLzs0%Ba~R;c`9FlOg-}s>?fTJGt5(C?ujutXI)AkON3Q)q z=N*jlkwakkw+9Be{^wu-^%vp&f6)5%q@toCSP2ZO&uU9kt6}_-t&0R$c{}0j@!vOd zXMg$j9loLrR6qYitFMvIvn93uNALfG%tt=|2*gM3@Ag(RD<&i)!0+pYr6rjAQw>4m z?V<4d_r#BZ*B`*7|6kjSpZ_`uEDtXMuN?*R;rfqTg3X7|uY>FV_+pg#{m^j4eFB*M zf1hIH_RgLEEQWBy|NsAw&Ij%1L$3eJuA%n-DL((F+NT(KJtnsPKXQ9=D#rOgCMf6s zLF!|8@coCLKZ$Z473zL`(0P-H{wQca3u*EpYgepT0k@D){R%RF)v8sCU|~*3{ira_T;Ooa&6hZYFV*YsQR(7w4k3Yft-?`N~#c$WXMXCS){zvTB2i4Dmss0C@ zAB5Z=Ha`}!HtY|g|GI6j$chjr;P)Azn@5PhwmKuo%gGCV-w-JMgp`z&K!fA|)V-+Z|AY36eEU<*0hixuviAS~ zQ26~nAbDEy#gB!8_MgJ6{|`Fv>ihNo@b)2S|LWU++fTw2lx`JSx^C5~Suj3G{ePqj zc}MGe)cPJhJizM*koK!coC{sciL_q?bY36>6DNH95VrmwwD!-A!H!|pJ&n=&A6D6o z&gT!o`Fy0vBP#v|zW$#&bvk@K-m54DhJb(o`2N7mAO@8A<7<0;ild{8AH&MW+-jce zRjYQNh4Df4{r~@eJ|go6bNwIvK6EW|eGKl8{zvpTvGHI1Uj@H!UHsS;(ETRx4iC2a z|2jtf4+|a8egp*u-mi%L``)0_2axXL1D{4f0^i+BfguEGKb|`1{2!$9msInxxu*fi zJ)r#>CI1lj2^z0uU{FQ!4~UO^zp%+#P^Limm)?Bv{S@mF_J2Q`$iaZb2cL(X_y0#-&vE@bVm-(*Lk0#@r2Q_S`wf|Nr^4F@x9?>Jty;Be zB_uTdgU1(sBfS5AbUp$9cmZg9#uPL@wI6aKaO63YtquncG%zqQGjK52GDMzRH<_7} zRUMJeM$i9+g$0Nn{`Dismk2!k{5!bo|5iiP`u~0NtE7cLf5Pj3(0cNitM}pS13>lv zzkmPX@*w_5um6$PGlJ@$(E51z0eztL74e~=@cCxYc>33?i1B`q{C}kJe{B5gv7zw$ zmqGIJziJWZ2XHVj+`nHB-=7FF|9UvWd=Ni06fqtT(tkg`)C^Xif#mOB4Q+z)LGtzg zL*eVYK>qn&{~JF30g}I09}7Qk0>lrEkA=@?fcS*`Lrr;*`~L6$4_{vZ@=twz=wXe!79ov~6KZb~k_V4BtU}!93FX7AgWQje7|x;<^xdonOE ztU~Y~ftK9Rkk16Nj|*WRj0K^GU;PB}7mOVBA1ovwH09wjxa1DAL2eAO6z}Y>;HfKLX0=(g4U;nKh1^NkG}p7RDOqk zeG6aj|GwFgLsV20KHmWvj|>S3f$!IY^w)5&7bB|NkGIzqZ=LE0lqY3#K2m-#-lLJ_QheDpLG~Zp{e# z%FPWwpP_VXXAmfh!}N!)J!bh`PfriVFWq`7s=ndC0T};W^-{z71E)^G_#pp$FGH-K z0G(g3RaF%}zsujF?iGqu-}P2&c!e^ofbUOv-;FAd?mtrb=;q}XgY0X7pFdHuc4gFG zCT944RnYxF@hJBLF))P2J%FEYpzZ};-wBUD(EU%Lp@{n|K<$C^?-2Vvw(WJ~;8mRp zA3wRaS7hnmdtY|J!V6SCuUN4N-X21)4@u=)fbQGnWrd&DVe|g_UgY#bYyPZjp=;x- z5a*4}ycW7OG!$`OMddZn`U?bqCK`X%wbHFum#%_`w`AxL;o|w#|I+MX*Y+05;UZEW~fBtZ`+&G9U2}I0+nWXKlxP^ zD8CWQ|Npez}4tp7t^|KD58fO7wD zZ?$&uzq&g3ctq*eoZ_`e=S!7sy)-8jX+34>)=Nt$;g^B+Bl?qCoaP=6eLIm7?||4X-Cn$zXw1-^q5lx9HdC1MH=z}G7-k^rAi4Zp7n)V@TtcK`oR z6kuQw4Mm(s0iG{l=0rMw8G%gu~v&%oBpgWL|n zwB}o!OA=s6K-?c@^Im~t71Dgk#5oEa40!mJ_Z&I2rXps9DzBv)GB7Z~+cW6yhqVX# z8Q-)0j{}Vl@FR^6urNfP<7#GLVB&_=AE5OEp!qo%f8YC*z<>Y#{e$s)yZf3MR;_}M z7ZBqA|KA$O&(F^f(?9&{Czwwm^r(L!;Q%8k509Z$|6kv`t~xmxaXtWO{ol&9E8+8> zp!yzZ`V)NKF0Jc--(O(lk zc6rJFe?Q>s7eVFiiWRFnKxHWi54HN=!%G1)-T~k57`ipLm{-*lKK=o!|IfdB_5$QL z5Vkn?I%)g%?eH6&Lbhrb7Zf1s|A}*4G?CXofZ8+o>wlf%y1IWz^}kOsCsO?nx}P!} zaU8;b5Fe?!Aej%kpB_}+gZu)*_y7A8Be%bH-Rs1t|5xotq?gjIo0fQadBN|;0-dj< zzWqD={07i|im;dnczXy`|HBV2`2YVuD1H5X`V}6&pz#1zQ$%=Q-)pk=Ykk-iklR2Q zl)e_MTG0bygD`r1kIo16_opJAp8={5|NcXqpMYLpQkxI54|HBH$gLp!{VW4RMMMOA z{0~tsf@Be;BZNnoFa5kpKozAu;HpVXd%%|AKGT2Q|K}sm@y{`ncmSO*U}BJYzG(?) zeFn^3)An{|f!6!L_~&Nlg64MM^* z+iPHaPb)s z_WdaG_zB2;`uq3)XJ@cwSkL&MHS*lr$^2?IGeB+w;a%6(O$N1BL2M9yyLf#!Xfg)G z24O<{|NoCAj`sgSAqByt*LM(oFmhD?;I98c^`qQ%MEwZb4}d(r2P)r?`5TuofVO+V z%fo^>sC>}*`2UeQc%4BCDEIw=?2C<$i-nbEq~8ArI=>F-IzI4u|Ml^R^LBEI4@rP# z4`JrNN&=m45C$)ARt2HY4=^w=Ffqf&BSGuAu6+4_7p8x()&Clx{eK~d@ow<`KT%P5 zd#GTFismY@1AL0n`QVZWD*OMx zPcbu^dQ^T+F|*=hkyA3Z~uTzL-G(Pd_<=r)(4hueeTH2%nWaDm2UmAWYr?# z$NvXM{cpejKl^#+^^EHoE3dg~UYTMd0`vFpXBOwe!b3x0d|3Md7k}10iDRJoeS<#? zhe7RuUH1+PghfEw1Hb-n`mZVpT7Q9P4}4z2z%Ui5{HVOvB*4JD6&@e4?+d4_TD5BJ zf9?PE|M&lYA92oLNkPJa10egE7+4wZfA8xCoo5B&gK%GWZ#M&C_@99g|NsAWqx1iu zfP>=E`WqS$P>S^M7~J(gsDJbL4`go+sE`DeXMg`9){lewJILp^faHc$APZ@dz*EN&CL<#|C>ESJ^v5npU}|KT2S19FoYipZ(l)^Eqpu%oexou zIL`^fN8De8T|M#Uqw62;{MzrXnk!c#=F33yFUb9O^znXl{y^9Nx9^2)UG*v}Yd&Kh zgDrzCL&Ukm5+>&C?67zvRNoVlhqVV3elawH%-nTvu|QbF0|w9$Oh^73{Qkbzks~xT z6h40kQUk)Ev<q%^Y^f$tpC2W=8yzvy)7uOg79-k1_tEy>Y(;S9G?4sK;!@T?*B!v?|q6P zJxY*WAPmxf;2h|jZ4mGO|A|WuOCXPDgX*{1zli;f-;O$>oELCyZ_tz#D-h?&iy!;E z1Uw!JG44OM{r|Ka|3|O?(a-;X<_PLPg~I2fxgqy2gN8i8F8+EJH2wkaKK)XA2ePO8X5{W|7|ze{qXS%E{OSX z_kB4FmIql4#Pz1BQmj!`BNyi#d4vs`k69A!_|^igrG->DpDR z5cgLOw)#Kv+}X(u4Gj&x489Dy3_1)J=MGD-v$Mn3!x5_A$(C<|gkjCC4Fc9Sb|F7&hI{ps}El@d%V1rnr^*JaM5SVay4F39GR1`6O z+*|CT$;8A2uP}0oT|ncd@cmxk^J7C1{X_Kn7}Wn>zkWS@zc8r&4?!BQ2Gu9X`{mK+ z|Iy8(l;2zZSONLI0FeDZk+4qiN6atr_jm+( zWg+g5(gELJqy?`(LFyO$`UjtHKsS#b{DxEcNZ|#(KLhR_$ov&zz6n+mfcy%=#MJ-D z?a9Gb|Npu7{V1q$W6R*j;Lp&{U~%sKWL7pF9hg7KuHT^skgEUoJ(IOwt5&UY_{~rV zGNSTY5=VFiXurmv|3zI443*a$LE8_0urshTFflMNigbqAJE;W z&0t9e1_mf!6~_PnKP7Us{)dIeX#G#Pen*5Ah=r+saM%B!`Y<%K7GB?j%D2$1Q{nr? zI)WG&z~^^?3b+6N|AWfkKQ}JH*L$JY&mj4sRR3Swi`xI+w%26sl|Ogj=f7Ut8v;82 z4>W}d4gqZa|N8LiDzN1L|NlYtrL3&{fYtw?{em$uA@KDM@4LCP|H~uX^ZS`b5c2rU zZ8U!A*3(J#2N350fL0G6k8ku;qn`f{vJY7vv_A9y|G)6`1mcGw-G>O;KZ0022R%O$ zuKGWCJqNOW(0UK#^ZaPd&#C6lK6MIl{=wQ})cPNk$3Ykt-yk*!!}vqJ{s*nE1FfcA z&v>8dKi7Zm$a9z0h{$~S0P-UU&$=dY?*D(p{yI|Yb4u02+y`uf$=A0-sV+Nix)10?_UDdzhD2x!sll}<$EZe@qc3K|8-oi z_QC3#rH%{?tC80GF0}-$R!8&@Ddj6`GB6xKG9Of5*M9#Budmluquv*w-*YMpdA*i? zi%&6f_;4p<*8ioYsP#WB_y6G-|A)uV#yQHG$m{P5=cu5p$4BQ+L{qC#bYC-+4U%!5# zocD)3-b<+eKjkRu_$jFV4LkiS8CJf4)&stN{T1Fr1<8m0M+^v4gKS%F4}3rcq#pUa1~C6G;yecs|LXt$ z@cut&J}5l&D?CC#{LtE1xQ(Fr3;p{We%}yS9?^V**dLE-K8F3FgH9gqe^7Wtha=Xz zfcT;Hl&$|8%=7=S`Wu{C{{R0Es$cW-^Yb|wq!_drVi_XO87^UEWiM_6^=Zo zzl4EdZ9K?s5Qg^u<3MZ>9_{~wLIHsXzCJ{_1;iTu?ipG2KQZ(FpODu7_g1GG{$)g* zPqT5&Apzv^;fZSwqwFUjmA`S#B8hsW^K3xncRkYj|FhK!DC_?Rd;O1X{~vsF<$uWh zN^~fE`y-_Oh1cE?d8FzYtNc|&^8tL`UHJ9uDEAM3-Tw}yJ@x(O({M zAR(v>0%4d3K-x{xzkmk^P@pw z2Evrq_n`L0|Nr*(3zR%B<~G;X)>nYs3c{n~|DaGn;Nf5Y zBK!(s(cizL^*<@=|Dp2>u;LhezA)18J;{8Z;zJS+Naxvu%JZK;_rlK?1D#KVyncSr z)&JGt_5b>?06`!B@2Lju*SiYe|5vgVv_A^bpAIIG4;rrz4SfaQp9kvCmxd$G8v>pG z6B@b|z8{2C^9P&y5CY-z%n}s7i2Ef#=_j@pcl%*@*8lte*E94p%x5^yP||6kt< z|A&MGjHG}42(uYN4?p`y>wlE`A9P=Bd^~)AU~YA)AtNIr{Ji0uVhzyPA0+es z|NmdV=a?hX^>QThLFWNFI5@!1vjvskU$0(;pYJ!=>wnPtdgSw9%dVlG|3hf~A87uD z@OnDLdcTQtRPdhvZ?aX9W9wGL{eNX!J%axKN8JB5>zXghdC{}3f!6;a+9LzaFWrmk zUUWWxk4|xEX&8LJ|43W^53A2%84$)l&#)g1E3X;!$cTu*&jWrB(!elGRWN!F*6Vvv7Uh;q4KKT7)U$&I4MZTX2a=$0y zzQW+Gp!*47zWM*ZY^%xI?N#qz-;V@~%{STles%=|!vRJHEd~h&Muz|YJ*r06|AE3B zf`?yy4DlC?q`m(}R{c-R`oC4XcEQ*GHA$eZ|6^7}Jx>_4{|xy&VN&^^^Nn614IqH( ze`NCp`}jZQ^}kOsvVTGQ@$m5p)&HRT6I4~V!pq~*t-dJd`(yC;5|H1TgQg$-ynb~3 zgyhlH6X2t{kH5z!yQHiZu|5=S{~sv*gkD9=kbwF1_3-s8!>#`htKT8D|9*y9*F3#! zY;0^`h+UZ;}o;I5-^se+4`O06O0%CKPeLq#_3c!&RjGTe??)gL^At#wZkg zzBQtKFn#OBHLF&wf?rVU#5zrx)A|G&rR`hO%q`}z^dGVr$|D*5!+xPArYF0vq|H$8?o&Bw(qy%OjdjB6(-y`n_0r8RVza0Mc ze_yePhz#}W|9cY0K&K%#{uj6ox*wqO8UsUk9OyjY|NoEuS2+H8jw0xMANY9|iQx19 z5bH4yOQ5z7o_jJdFd?-UG=fm~|G;XO_mC06{fjvm7&NbjUIon$XfrS|{QtjLfR~k( z7p88s{)2@CgdPnKNI1Yq!r?Kp>VIO^|3&9#!|VUt>Q>7}r1gJmtGTm784xSlAbeP9 z{Qp1c{KpDO4hhinLm}(m_HNw@?;i})`X7FO0cbo1sW|*kh)<~g2dy_iKHmYfUITRB zDlCRT=P!d+U%~m1`u{$R|Gt?!TOR2=BG7#9@87@S=>fF93;Djc(6yo9vs_{NLHGZL zUPav35OGeYc-23|{Cvn-^&sT)2hsVJ*L1R1A)Qa~{pk7TRjU!_^}lb{&Mq0P|6#%X zAG+UeKdAq|o*|#1@>-jrg@p~x*8hXn1A-P?g4zP0GPd$s69?!%uN(gjUNQuL&ihN^ z2n{O$uTS~?zwkEb{NK>fc=&zGp!Qg3XeccGzXzRP5gHmg{r~^}@88E{Gi3&W+Y`L+ zHNC)R7(~2tZARCP(VO2;rb1#5K4`zhXw?c`aj6`|5JPaA2IcR zJ<|Gr^z(l~^~ZlE(76+kB8VGQe;`$0r1B?XJO2mi{NJHg|A*Z}o&N`&r!NY<4+Rur zp!@4V7c_#{AWVqwQ>*}_WVbJ=&2Bi8CwEpkQx2y2_8~yyBo@$-qf8P-I(}U(0 z5W6k^{|BAdhjg9Nf1>LD)rj!`^!k6>UXi89`{%ap^(jUkUjo^OJih@N-_Qb&D}sCn zy8n+Sd)0#n4EU=@87@AXUJy&tpWUg)R99? zO-&72ywUxhULT{MkAHn{=vw6QcTkOvd>%y(_`JdYb+GWtsn#j}|9>fbgJMpxPH}zxs}(T$ zkgYz&%*=@Mir+Vb>i;_Ue8t*o)blGq;eGY$^?NY=pzuN-|Brc(djAh-{rZX(tKst# zp!I3U?H6?a4fOqgu=#wL|3Lk5Q1xHWkk1guV9OwWEKxvBO^pjyE5Otb6d&Y16%9^t+GbCQyhl3@IRIp-$NnKNe&j6Yic!$JZ=lU~0;^ufqc{jiXL(1Wf2 zAJD_V5ET^_1KqrF=s5f7Evc4&?e|ZL?1CojZ46A9QP<^>z0iwNuUO!ITYO)r& z{=BqAr#L1g1Rh`KnnCu5egL@@ghAsI`~UxkpHBpuulSF2A5l)RHt2pNE|6Lf&MEGU zYG^p%0Aho%ilzcXNC;xTAE>^+|Mxb$eFNen*Z-wk!TVVlL3%+L?4Kq?d_e1eczX)n ze}l392krmYWq`na-_JEKUAmNR=l>CEUyRoOka`A2j@G}hkbuwwA07kS{|EI4r{53% z4l0X4SiePqAu1lRein58zwA^5zqeX}feC5+_u~=<2ITotLVTg6sOncnDKLbEBg_Z& zpW^@jh3?M%|Nr9>1%}ms5%Ql%w2zQ`E-q1E$f`$}53>L2SHyXCYl;;ZrXr1>3#~!~5Hy`Vx75oAUere2Pik{}&e%179x%noj{uZi3<-gt75| zfyebgvj6{2Ah7?hbSr56AEN(Xx;3|$feW!8uykwaTIBKfkgcI>SO5JFUms`!lK+o5 z;1QhJa^VpK9)6 ztw)EnAif8UCLEGLuKz*t`Q;kwc|dRL!?(lKFP30n2)%k0et%@?R?i?tW@h+)b&&g! z?~?|tZ_q;8&^q+$|8=AFKcs2_lLKGBfSmy+M%@Ds3NT~f!()K!e+CAI=gXhN>wi%F z_g8;E;`~+y28KV~-0=0^p#BVV?fF_*`36#tT%MD|5B*w-GM@aq_B*^j0NJ-c7cu?{ z;;)KD)DPs?hwNUEd9Svjj%VNBwF|{P@Av#d;qP9(9)-W^|1XsD@9KX$o`i)D$o#sv zx^fsFRA0!;%FDv|15y8j?mvOqkG|d?oe!EHCuRMAF53G4(yczl$m;-mt!Z$SOs zRjXDa)rY1_SFJ+y|3lYO#)sHf5ARQxZp|qM&F8}WpHr=!z54ZQ_;?hk{;#i(hsP&q zeqj3l{jcHbixn6W3JT!o&w%3h@8wvO^uTBL7ry`T(i{bjt5Zec=SfK%3tbzJbYB9f z{%=~m3O?U}Uf-khNBjSx$3SrbF1(4jPiVCN4+|*>J@EA%#2qkl)I9@R|AXqIaHRFp z1w9H3q49|E|3m=>hS>S?@czr$W=D?D|A_nlj6vt4A@#RL8XtUK9g_dOvlSRZ!x8;! zQ2mgfQ3pRS9u(g4vbgX61FcW{hgdH6AH6y605fBgr@6Uk7|HZ{c;q#gAnimNyVp;{4&#eaS z&>z11oNCYx2ramO1LmX}u3EJUeggj5YL6f-4F-6Bj|Znf6~nGM3zpP{b*4}Ye>fNURV{yRMG z&kvAV5XLYM%|6imj-jE5{`lJJj36&B2l)IqX#8c`x0EL!vp^Vn{~!GPUyy&o!{7CQ zl$ekp@E*jPFwnDi$8V`~TX-3=9=$ z_5J7h(?BQ8gSCL_|2zL)!TI6mK<5D?&Red1pK7>rHDdk&)ZbsRg82SEdV63{*8lnW z`JmJPLAdgoPqn(b`e^+RN=D#$GbjT}4SanAbqJIibq_QkpcMVXV_@rlQ2C|b{v2GE zfe27}{uQbJ1(IL18&Q6N_@VIL5M;l6XeeU56dH^SAhSStsPjSVBSQby!s~xf|J@X6 zfg`AQsE@=4)$cJ#d{B5*A%!O>eCNg@`j5vfQO_g!xCXr44sIW4{Q~lQ1v+1FEvkC( zdNd^aRWunGM3MOD>e0=^;G?-`nI!{51Cn_l|NM(WjDLgtqlzStVcrr{_tIN_sUfQS zA4@PWJV0_UD85DCBdzD-U|{&S_bxm>K>jVgikR;QwSGgx>*41Wm9AxAP~}C;@0V^B zS^8=HI(T~yT>s;l-$$?S(fNb1{(ry!|9?M*dg%GTxz*}AHdH(RpVILG^#1>~qwQUw z^%k&lX>|QREF>T_{p&x7y)bg*+5gA_bUq5q|J=oJ`7slkGvlmR6l|C!+_L+FsOVB z4Go2_2LP3aUqk=D2g!jjNPT@M;(RTbyFqdwOer5^erRYY%KC%Q&`|jPH3rD}Uhw`I zhJ6ruxO%90@cmji_~`b5yaL8h_3-{anEw^79CDu>;<{G|KQt7#`=Aa68xFmXFZAkH z`1lIQ{8B`7>OWLD&h`{2ez1fW%y_7KP|Xhwjfd~21KEdE{Xx~kt2+oEX}lV&K0F-0 zKLp)A8GwRn2(hHJcGdJPr}nf=~_pQtEQar^$X(1J}>!! zIG*ai>DJJ-@W}oDpXBlW!CwEv>SxgTKOj8o+NvmOp8pFoAC^u?<)hdCmDl*Ee7hDF z1~U&@|0l!vqx=70ApxOBUVRMlH;kmc{|}+m|2oau#h~7{z)yugAgEKlDrts-fS z_pSEM{_*SAFBqR1_5b(f=AiShz(&3U-xr6dzd-GQ_wnK4V9Edg|AYE}p`oGh^6tVM zaCr!m{y$*}8h;Hce*>C4x_(gqEHpF}Wq(;|>{s~yGEn_r7l$}c7F0g(zyG@$=73hn z`M}ID{!$1ZKHdvb|KQat`1m)7e-)`ecgztqejC~e(|Iqo?pt_;4e}4~wrY5lW{?zrosP#R1eNAn?#W@p{ z_B^P5LvFvr>PMLS>BR@t{U8iFKhef!@b>?=9qpU^=g*%ISowZw%eu*jUi}9h0R$Eb zn6qy3o;|zvf;kKf45R!1VIcvbXi-|N>*4)#Q2kko)B*0TP88teTS-9s%HST$RIAtDSiw- zPYlBQ|39aAkwo|cM19a(y+|N*75(^Y(d_dGQs4*;L)^!EuG*0!bSfhLw(WhQfb71h zTOUiH@>vv7`HxZ5Z{7P?0(t*Gs6A9(g0S!RvqX+ir2GFOuN_7)Kl0ikG(NgKZTXdG z?y0=yqKWL^(ygbXbiwnskQlzcH)L%Q(tb|R`2z66eLxM9wWe!VtU#m>YS;JZ=3PG; zx)yo<$>Q9$y-du^@b)gf>U&7&{QnQL4^;Pq@T_a=ibbe+{~yeJSbab$AJjfVKL6+1 z+1|+^e^#u3nHO?&-Q>{!44^HrU?C9y>V5>@_$dFB`nm+T{Qv)%qxb)TLkdC+|N0r? zPZ&vk|6PK`a{U;$JV0N|Dg5iTlcPq z*Z83GUH>DMm!R|1{v)lA2g@Vvrw8$0KUe^75%gA{O7bF5|Ns5J9==}-)IUT%FR%u! z{s*n+La+akju(QAZ-+r2a5yJwC%K#Qmjf zn|+G6ZruvsUxt4EpYd8n4&?UTw!PfhACTHZ=bE{*n-J3(|3UUMz(*7Q|6d1czlHvX zx0lW}dw3nlLbT67?Z+=qu7$z;bL*KS%KHDxYawg@g@wW8LFefjFlguu-t~Xmj-H$SCnRJItUSN8CAWJOQlUo*Z-jP zY{>OTZ}TdY^Z!8gBXa$F=f8>}tn2~Ng!rKP4f(v--e%PL|CuA|`KqA$9=U%H;v?Hn zO#P31pA5Qw^!`7{f5_vjp!&VGwidp>3w^&FI^PF$ew;!B{C+`!9-ZQ;;-c{V|D{_$ zFNtMX0YCq>Y-{0^tOHI?ps)ksoMN8rHEJFFAT|ht+Ef4j{eri*K;tR;`uh4HIS}?P zR$xFLFEL(gfKsFK(13tanBg%9>i_A8@qf_z zKz!%__BO8sjsL^@uR7H^#lL>l!Ov#})sM*ieL{SY{{8#+t_9T%AdFuBgXZs%&u<6S z*O>KxIK2N}FvrCZxj%%h|Nr~ffB5`3$UNls1NG~Fo#F!xi1i!%J?Qt_nXdhD3$dQV z^4!^KHNEBF`-r;N@h5U8h6$`+s2mgBG_8 z==J}+_s0@J?Rl8I-FNmRP`D7w|NsB|WL8#IR+xIs@*E}up-1H*;Q%8?!vhu)5c>cB zfv^9kPrVMWKPU7kFhoVg!-qIQ^Z(-FqHwebh|A&wNqu>A6Tdc?-DvFr@pSG79TmK(EB#+Vm2i>pu|Nm}~+d&xp{NE-4 z)bSbg@qh7Sp=(2s&ff>kpa1_K3b&6if72Y)^8iiOu3EJU=lwsU^*?Rv|Je6|Q&zpo z%KE?mf8GDM|28_=iVPv)p`lEW;*7!K++qPnCI%RHwEiEh|DY)YLXFn{kZ^#J16}`v z>O)X_7*w`{Fv49R9%O$%dVd?fIS{&k4QYBGT%U#_y5kT&VtF;a`0(|J=>8$Zr*{7z zy*>rqR|I$5f6#gItCB#Aiy)y5;&W%;S73nee*mffe{VZtJz_Nv==>UZ{dulgr+DjD zdu@b%)ban^Vg&|KQN;Mp)V(^z1qF!q9q4@9*Dv?agX;(1kB5jrko@o8_u)={-|gX* zm6eqRQxBT|4+{%{@6Y&tRDpq&l@)&e52*k3fAxR(df8gPXgK$tIaE^7f|eO=@^ zleOVU>nkJAg|0IMOt3> zA5=d7|NrkNOdeK0(25VTA9;QSRG+R{vt|v^x_%h#avHCq3}LIbof3Bd-j=wIJ~Y(?Nv`vf#nOK-AB+{47$$% zb^l*@80z@}p`oGh{w=opANf95(D-|3=ymvc{@URFGQ7I`PbnX?zRzyo>(j9MD5sc# zp`f4ue&QmieRXv&>Ulo@5z`sq_FHIZEXw+Z_49Tk`Hz7C`FwuJ_(BYP{RU`#0S8ih z4s<^ra(#LI==)|*&rVI4`!3H>;0O&3hu-GPY*AfLB5+Wl0bDU?cXV77oc`cFS>Qq(u`o3NFEY5+(|6wIMEWQQ{ zf3*IG#RP;Nt#2XW03!!JJO;l0pE?z_{zqQ_hra*sT=S}^l?xZb*Z+a$pTolu=hH*Z zS4Z%3!TZ?|=f~5Uk8VF?{vWCS=U`xnM;gBX)u;9Kwea)l)}rnIgY4h?3m>rt^_Tzu zrJa93_FbKNA8uc7b!Su(7Z<#Kn)5x?5YgHIonN0Q0GeWi)t4DT3Jl>Pi2e8w{~^XZ za;ri2^CIr!1^MUnx-Hvb`a$(S6BDSP01@#iev{RJwBGQ?(f7^B>no>iRpf{$H~^oo z0Ik;uj}3+2F9d2|P7S>Zum4N8CUP)ys>0VRSe&~&$KHPbK8S7qq2mF6{=oRK`h;5i z$a50sULg%Yfa(WCYK7Vl4}H@4=;I5Z`32DzeOUT{mFMVukbg$||FF;jB{49pLgr_o@zLc6m=7AgEI@KEETzHf z6HxsaT8dbppzfr=z=@=Op#974!~i~!4(8r3M^VT7xwBEjpSOj9Asos59$pFz$mjp$ z6gzV8qSWs?#fOpj=<^YT>i_RYKQFOIOjrCb-KxM47E=JdUNEt6u$=`p!)+CN=;^KOcd=nZPc}^HK<5Y{r zhn}AYk~aa#Bk{rN zC;Wl)&sm%st^Z-6FSzajv(Tp(!yFrXExNbru6xFMR)P<+WvwVEykPI=-LPDPFN) z>(+NrzR6afVulqVAuxW(R-bGJE>%@He=q1f(C~0LAEaJu>Qp#?FUY+yF))58Sbb#pO5bUhXo#Zo)C#M%4a~-aFB2z%pY9! zKe#@@sDBan0f6LVk;-cj|3A|GcG&pgNaq29i_;l+_whe zhlV2VXG2#{Dj#ItSETa@LHzo7M2mw|^9ZR2nUC)Ot7!Je*CXy5B*whENcR_j%>VcQ zFMK}3yI6q%`TVAL-Q3xr@(~ic|No=c_vn03{r}*>hXpY8AzRNiGcq#6_am5W4PA@8 zf3j?=$=Z1P@9^~o+xDKXcH&ZkpKtX4zXC^ScpUt`T~K>q_v`<$F!M{+DsW6iN?#VB z^JRundw@`Tfsj0?KFiO~hu8lGJ+HIAeE9<3f8kTCoqgcI0r>cf@mil^XJ=<;Soro< zYiIxb`4hh0a_U~~?B3qqUYI;6zBxE}cwqdHwLZnj_lJF6k{N`2o>R$IpJL?oB>Fwv z*~sph^WCQy`TWq5t?XVue*A#nzmZ$*Q~dS&cldf^@nhWCyu7@;F#BFoZ@0z}K6D_WxfM7l*H>2hER%u401U|C0k+4~VoM3xi+m z$bq~+D<@llAv7)`0+zo)^;LO!IlR6&Tdlwmx)zcDG0a1=544^g*?da*y=dlZgTf;$ z2EM)x4a4 z;v;qc|AX2C|Lfnw&o2UvA7mko7lHCWdVApO{~fbo_LZzvU>I!=z(NDE9s#xf2iLdo z^%g$Gr;{2Q8sO_wP0;H9+-mOZm7R+tVJ4RD)j_HMbBnpN*RA7%*T*4ibx`X6o%dQT zLG>qG|5l%DRXcum67)#lR2{fT;h`&;Qk*aw-YA{{T9_Z~dxO@D=Ew_3^)6 zy@!wAgVwXfi<@o*JpK%-Pm$MSudP<#KyLqo>Yu$!L*eJ`g3Lo6Zvd^A zN36yJ-N&O-ObH)UKib<*g|~M=^Z&@@6{x=&SC4#OfFsI%0igMKWc8r=@9gU9@b(R; z{udXQhoAp@t~oOZh!ExbOb|4_#}zcGW(_d;n;EVBIYoJ{CeKv!YA9+q3 zW&Ps5|GvfHNC$A-|Lari!jJjlNNNd1GzbGg-VKTze7-BbI$w|eP% zM0&v)f8g5xzw~JR536Y)G~xONq7Fums)vOHgocF&Gla|V|34FtC<6mS2?Gn54LaB| z2FeEQlVTENV8~4@aLO++FobF$onmHS0GZ3c#K0uL$imFPzydb|<{p^9C?6IQ5PCE` zAmIQbhkAI}yno#k^5+kH{C3hBo@UVa4$ObV@(cbu{0sQ!@GoTVV+C_FeGOQB7rHih zDF+iX7mRPZHFW7Or2DiX?HNRiretgATIBKT!YM10kjKA4?Oo*dE9kuIuV25y*JJcn zACgE&NPxFz7D+Im%*U*SoTt4I<{prF$meaLkH?I3{=_*fipb|rf%*@nrKRxsF3^5i zl>S4pPcicO;Uhi#M*Yu%c0Ua&A9P>Kf&~lU^PScIQw@>xH>@0j<=2UGQ0G^#?G0Uv z-2Vghhmgw`5FdH{6t4X~2zy{G2tCxx_fhvl;t@uUh6gMpAhgZYma1A6C*r=+XKK5)LqOG(2D-0imfK9yZT?n?phn{r|!_tFl&s z4mf~V$3TcLyw$h*f9R`K3;%EW|K$Jo{~=rZy16+y;pc|OIU_5Uy-Q2!ozeIsZ-E;O_hK0lOGtiXWW z|JP~uDGm*dCwjjNsrALEditgpT8B5K_5bywrWpPIRjUy9b%W+ZSFc_VzrO@@o(E#K z3p9TUy59s*sv=mB0&tWM2?rQC8XmBafY3udJYwJLRD;IXA--W?*tBHQ5{6L3dGf^a zfBc8Qkgb!JG_ORg&n(?)vh>xTf1vYiz*S1<+K{!YSFMI`$s4Wz>06$I>U-q*4iNwU zf5iS;F}&)`1J3|NsA&tThGgy@ju!0?DshwQ3)%{2S`!`KbG0F$tkZ!vhiyFcLjH zY~J$}|M`QspMBDjwd;#f^XQviXdT|9*8iaWa-yP${pqD!LFEtPd>9Cy z8@~Si``&fct5$Kr_rHDLd#-xbDhBuvm+4xN{y$+L5`@vq$5B2gR1kPHJP=_4Vh#21 z`2EZ?Dg8(DMv~bZ1czA*0=MOx#37>aC>-uHX z{K4H`AhrGnwLe3@BKB*6_Iv%VNAP{KQP0nP->kq9fpoqMX#HwE(s?H!^ZwU{LeI|x z?UMnOdI&t!%lA?DBjOUo8VwInC?N3fd*J&23rxhP`i19zq(CCX&uv!Z$a=M^;m7~) z|F8T%{9i?pfnjPq;=BXUX|qhsyzu>kp!tCP+rPnU2=IK|y45dX^%02A#DqAXfztK= zp!~fz7jfRBizWlZBBcE9Vu*U4^NJ|c^PYzre({Sv^&tM}`hQqz9&P^+YJWlNfB1bS=w=t;d3B90~7rIx%ZRLOe60|P_AlGj;YS+7=I z{@?UZ;5);nbKQ;%;o(v6^Q_KwqqfIQwkmKiaU$~Xw5^lotXj3A5msWBZVg>q8+sp} zze%tEQTzX({eO3-io*NTeM$-$&&KcmI2!Hs#i@o42N3D+R22BWQ~3E-p!z(nydHjj z6{tUd73qB2WtQOUTj1l5`Yj;+@$m6~kotPG^K(OM-@;cs5B2hV)cvrU2||yC2P7O| zBzkyAKUa1{UjKLR|6>bK$q!TC+pSX#Iu8)W2ek*7Fxm$Ux(o&o74IgqNG2R$VEFt0 z$N$Fv0zZ439T`HA?kk3Ljx>Mop_v?EDdseMl0Uw_aBzgZoYW@GrlYs&G zJOTcmS6LY6X{|=gCxGr_1YNxc3Ih-Z)pwxtYC&ue9_oBh|NQGx#CR!)|9%yMpIfa{ z+?xyXDFlP$SN%fBgZTBM^*JPgu6q-3xTSEJXeP|B(6zaee@(d_kT6M?L?C%?q{uU)!7+wRrJj_8qv-*EdH~h`$n!y<{E2jZ-G31O|NsAQL178P6X%>t`d|Ow9>fOW z(5*Ses+@@W9&~=`uKEAq>Otq5U;FnPe%=>ozHk)>VtfkBUxCmc3c4@lKVm=1_r0H& zfX=4|*#*L&`X6+D5TvvMwIg6G2tCxw^HKLg;tfWQh6gMpAT)Y-P+I?^w+GPqI@PPP z4nV91lfB)VL7`5sw0``b{8!)zLqcD-B51zg11K;4|Nrm5!5l{p(W!{_y#;faHCL=y z0ot#AyA5zkV7GAKHcwdVb6))-C?^>J@x_=%hJ1#i5~B z;p>4yLHC=W)%Ras{=ElI%>QBg^B2MQ^MTF}S+#0a7fc@4d49O$zwZ_3(bCe=g2@~7 zFffeP|KOq-OrX~fqkM3%zzNdBgR7X~UpRce{Qmz12B7<1VFuEhfA4!Eiv6|kb*e+c z5$j*k>u+lFb*goW8$g~H01*rf?gWGW{{#Lh{63YWzz`meSU;$p&A`B` zs;Uahub}!L`Fv3H@&^6BP=XzbpIcuI40vhWvE6dMSA@R)d;1AnSRA< zXODS;#+M=9Q&QUhl*tK{atDMj7&KF-I=dLOz8+-1py14zI?X!O_4W1O^?qP}wN5oi z4uomJ_o>#Y{{R2~evtVBAp5Ixir24Szn|eL!$QHrmAibZ4-3RZB!Jfg|NH;%zfWAK3jNtJ^)c!x}{6A>@pQtEe{U3kNE42Hxe2S6x!;jWaL#uuojW629 z7pVTnH=dtctW}KMAD=V_G=F~;zTOsF|32*P{p;Y&3+>-8SiB0H-$7!8>T^=%LG}NN z6ucP;mst!>s-pt zf8_zY2eH13-h5F1{r7J~dEi^^Q>^>{D||g5i2vvRfB1d?X#EdAfCi*LG&dJ6kKX?W z)&EnkBGwn5YxY37{}E)~X#EdO9HZ;m{*SgNP}>ur{Ds`U29M|e`n3y|VrsvG>ibZ5 z{tMlji_*WJw$)_qweNr7?R8Lpo@3RjMKJxO*5{O}2c19m>KE#IfknR%=bet$|B!kT zMvjIDEF>T_vElLQ|06J*IHxlTw7wpe-a+-*|No`%{L)(uI&Y>LKHvrB*Z+s#mjmYi z=eq{e54yj771D*vxz*a)t5(CCxBo%+HHU_-g4dtue6V_S{R7J9&c^T$e)kmr|IYxg z|9h*ov-khra32;vImHSb2?+)8{XWkuLF@kz_e-w@o&U3V5&Zn2(fS{?ydSOqhIe>? z>hn;f`!d0NSmycv|37$rK72Lq|No%-;Q!zM4_e|2Rs~+K_y0c9dOaVM`aX24$qcaD-mn3g0jAu3IB$;UdI% zUv9NeaY%UV=>2ri6f|0&QdXZ1weSP=?~%{L0P+7L-N#*ou^$h0y&h=)-JSn$QO5I| zRw42iXnh_B0~Z%Gc@22~p4j#Sq_iKc|H-ZIM#B#h0M!%duynb-=prOZG8=@58;z% zu<>wMX2inR1>GOoUziqJs}Efp3cm3NW*>|XDZNMQe^~uB8Xk}kAU8Z<_5Zr+ zj;u9n)~tc0H}v`+be?5pbv=B>EvI;q1ScaSBTPML{ysAjzFZc(-W_@V3^bk>A0Iz@ z-zqe~M(an~){nzId_nmMw7wRaoWS|*|NHmw4Q)BaI>oD2DZ$s9_!M(zGk`A4glZV< z{K6>@4OXpM1>gT3x>W~d{vI?xf6a6{d_59qJm12EkL>;Sw64zynGdVqq0s~0Pq=Co z;yi-TttM;#|KF_+DeXt=e{$=)(eQ(W04)57uKyVr7?A7loZ`m{j7atWo&PF^u(S)J z(fOeA3R(YPFP}m4?V+Ke@bVOV-Y(Mo<6w9HsQZRj`@*Lfbi)y-+y~{Z|NlYz-TwZC zutDVe=GR&O|0B+)3)$*Z9J-bnK7Y3Ro=4Dsr19?`N6$5f4r0E@eg$DreZPJ+VtkQM{W{R{p!NL7`w!9G1C@v0H(t8+%MvZ5^N7m!ep$2bx0OGn z^aiB^7z;wf%5w;BRDLu(U?~AY;|dRQ>;H*M9xJR|xpE~aFM=?rekXMPd_2@An6>LAa;5Nq~W21$?|Cw;HrV4|%`B(Bh-JpHhDB5DyP@ z_fr}kg!B`#4_&^udXWHV1uZBof^beX=!R%S`pd0OM3EO>+a#c+wH`htP`Vd2eU@$= z;{3G(?EbZ&@<0o|z7Vuu@c!?Ab3kze!l3rZiUo-C|3LE#|M&lY50V4nkhMD53=9hj zKx`0}ICidi)v8tS`aX26$l3-5y-grF5C*MJV2b|(Z@-0ZRp2;KP!Itr%}48ZT=m&# z_&`E{*zloN{Xfw4IjQ!8>i=4l`ky=7E6WSihXQ54|ICUC450f4!JPm9|AX%13Jpih zXn^_f(iSQ|(EO{2{t?)H_v_*Np}>5C?nB&HzyMl*iFEz~RzA}GI$-l*fdvb%LCgpH z=PzPC3z(1OUxuY7FYa#hxb>psz+#tq%U;-et7gjApM&A8|eggdYlTpA&K) zR6WEqu=E*9y#Bx`3Jl2S@qIsPvNkU64*dLI(0s&yMDg$+bUxt!{r}k@HZ5(-yo5LfgwIN6n?${sQg2o zFNX5r=R1J-^+@Lzf%yMl{fC#YApTzj7g8U^BN`N-^&v>ZJO2kgpMilP^e>Y8L3_XV zqw-h(4~4e}LH_^u|2Il_{r`^$5Rm-;|A_J)#NTiJI~bOJK>Ys?5Df@0A5ncn!V7Wz zJA{vDo>0tJ1hwao%p2@{Q21O$T(1F6Z@*q|y^b87fB*mc1LHe@;t$68|NlQaA7tMD z`goN1t3?WbLg9g4|6ku5x;7>zE(T^LsQtA1Ap7Y z-ILp#C=e4C2G6hXdT8E%ssHTvSvZ^&7_M$LHHC{0)Om4G2aJ^Z5$av~oyP~YkY3?C zQtN-v{Qgy>3Jb)qhp(3U|9@SxM^HG@{)KhT87S-d2Rnb_5*5vQr1{ge)e0P;VG;2C zoS^b>x5EFQu=4A55@LTtZlQ`y+jl3UY*zwPy`mb!OhF3jGo#Mz5 z8dn8hkPg}p6aGII-aZ2H@6WG>?>F1F*O4Q1D=#xFe9N|SIQ>O3PXf(8Qp3~YoG)5@ z3^P7j_<-)mje7vTNOD%L#M*`Bme*3B=8k! zy@13q(!vWA-d7tC>kUBT|9=p}LH|MX_v?`I8)p5ljnefHT1ides+T%fRUv z#)8nJ_Cvw}Mh=zm7^(F?sq+PcT|Mahv(UeY4lQUu;r}Z5@u&ZDij@@|4m7~e9{`OH z{QZ6<1Xf;7+v><+igbU`w!I=tx75L8|NjS#Z@&HY3oZba@3|FTj?r+$(chZ!FNcXu+-D*3Sq;PiL%J>tBP(zOZ<5d{VC`E*eGtG*5~AXT!qNr0CV zu|KJFt;pK9{oU~WfS~zyCT=~X{RITvzt&`J!zx7nL0`Xz&L>p=`xI+sgYGx^&klwh zKE>S03=9ktVD*P~bx$#9aR7`DYA^g}V1SQ+aN0;KvM)c;3b&l9qiMG<*_63D#Ot5?HM*Z{51L%yGrQum_kC%XQZ{xAJs z>c5Ro@iEH{1s_1(09Oz`)f!$5?0jH0hyb035E>d62V#TpV5vVqZUNy@_kcnHfrmwB9p>VM?8fm@#psD}k{`dbs|Np;lwRZNteUSTom>Dz~d_eb)H#9WCY7|g={@1TxzhL~K zQooG47ZL)4HNHmce@GcM*z0pr-3K23|NlQ4;=BL3#R z+uqQ%ad9#5`2o;)_W%FC;OoUlTKJLbU(oo|Dy}a01lCmW`8WU7Vc}o0R*|EiAOgN# z4mAEBS{o0)Z)@t-CILoHPF|RLuz9Oi!OzD-+vCOQ3h*$0&*J&kGc;O3J5${!vj|T6FUDFG%$sHe$Pg<{r{l! z`Tzfa_Q>KM)`>Kk~q2($3 z{uEGu4Qcrkcs_D0r`HW z_uUE%Q<1{2bSr3vg$X76{=a^G7i2aFL&NJGhz-I}K8Oj%BaaUXf38Ph&w~mQP<{V? zKYagW>DK3t$l-6ilz|~846$JXRR5RX{R>}DFMdpsL)CODod5mk=OzFD{rLzp9}>T- zz;!K13>x0+Kx`0(@{!IL3<0GVkQ5k0<-u$afyp;ro0XLXUvE%#4R!q=eEuJ#`Tzg_ z-qpUv@7J$~&rg8PcmDdn8?*!ftU{+cCwu?;^{Zhu%3!TeM%@PqfuRyVxaxnOVn>dG zgamkb2g+aJ-{axu<@8oNaB%YS!q?ZX1)ZPsbEg70vHt)6zqdN4I5hM>JpDuXkhUyH z%_tufKE#K|+G?NT`g%loo&}xfjugJ2{Rpd8aaDlA7KC%F6*w3kM8N0wml`rKAfJB@ zs{g;o#K9XRp#6GRr+yU$=>_3ydmTAcry|+|Qz7jE_0#IAzr;26+Dz>b@1Aum|CR4ljD!4<2v& zzUUCh?;s57zcVm2!0#U^S*yTM5QAFZhla<)(>Eym|8M;YukS(p_*zGJ`vEjxz^sed zZ(p*O-HCyL0e*i8C_VhIT?M~y8x$Ym6r^YH`q9uPc=|8h%I@{x!Gi}Nzkx95y!6n} z=0zYj2%oKfUG)DyBLAF2o5@Bi~DUTW#k07_?| z)cOB^XOsd*XlOWmJX76^fx#51yaV0ey9$X9&Rt0SuSZeu!yV;Q79Qx~3*uKGg*T|Z z_B0n!|A5NFtAA_Z^*th8LgE*s9=ZPt;{QiF4+qryMcyxYu9|^iHIjYnszImKA?zFM z{FwKs;h!1Az_0+xKgTQ?7{ZbGpzzywD;6GpAU<;cA3Z!l?WwI-5$e&y4`d%VlKF!@ zylCydt{?`62Bh!+-3JCdC>iv$w=ottqNjb z*ove+8ZA9g>R%f)^E%PeSN{^!^w&QJm45*TACb;rEC@YXA40+bMvjIDEF>T_uJC}> z|LdwdQSSc%wKu0CoxcUT4=64!4&EOEm2dIU@Z+t(=W`%(8}$4!cxgGx2bD+E4C9nD_;gz zczpc|zdi(gZgDK7KFxCzC&b3)sKb`EG0l_Sa`td|31k5 zzsq0=5_CW4dc^Ug|9y%R1!5u;;Nw~6nwtbdLsud36FI2MM>YR!b0dxIqqh4;&7*F5 z7-`{&n*P^Tqw>!+CywR^nwCFs#Q z%^%fI-S`>}PwIvzDE%WfzyE{y>+d5n1n54>6-Wy#N5h}G;Xhcz6H?lb*8k+zccbA4 z2?1F6L2Ca`|BG4}7{bEB;OoO*Wic?QPDLER?Nbe!K||a>rcxXozbBYnG zZ~p&>$fKKw;DgrRBcG=~%J%_2T>mm-~RyNhr-vZ zLem?lDGSD+`yp1XS_Mxpxy`SlkgDJRBc1=g8+`vTe26=@`gPW-Rjc6n57d77|9?MP z{u|9t;KcPG)W0Dv|3FIb(fS`&e~pF*Bm~F}k3)YHn?WWR%xMw`3tO?~|Nr0rzy6=} zUsaKTAv8P$e!eznzj)|Z#0)lfu>ymws40B?KPZ3y`SS-pLIAE$;k#%4{|B8%^B-xw z4!FEUn(#vBgUa9aNc*Wk@=RQB;pGX4A5&KkFK5$K}1G%TZ{yn_C0OH5jzlN_b z2I&tEMckkc;v;+qssBSmzr))f5P8ITd8F>gA63s{2rKJAG_}J66#svb(x*>xXA}bi z1AIMyPBpV41H%G%d(o#Dw7-!FzMpYjb0?@ihqqq}<~&wFuJ79{85mZCguv^6?QGQb zS|gqB8Kl7R0VzMH8ltWT1M{#f8RS89~4yo|NkH9{Qt1WXq?s4uF3j}L&f|IaUpGbsq@~Wn#fl@gGL;sv7 z5}~VBt%C6c?-gX{-k?P3KEd&`k_PX$`Ty@9e1-xf zUmuS+UxWd4UwSQK|8{4T0)sA6hRgx2kK{%g@2CdtP)3X=fc8&@)?S0wFOd0!{cjQH zlYz>+SFhj0&r<@`@4tQ_+;iu@3fg!%Iv@Xdx=-fnPKEuH94^qMX2c74@ zz`$XS7!T0_kB1=UV|75aDZ|j=`+(fv@IUmw&wri&I{&rPG#MC7%(re;f+pac<}^c9 z1|}v3sDMv%nqdqd1A`Kj@4qHh6I7pr?pg(D@u_YztOX?s5C?SsYW8wNH7FZIs=Jd{ts0UGzuz8I`-AF#pW;+YE-uviAEX`>W*`j852Jj<3?#1b0EI0GBSId;8*LAah6f}a zz(`WVgV_2XX1-5zXB00lFE5PW+r27j`6|f$6(F&kX6w6#jAe!?2mbz^B@gAw0eUTA%*@4;sG}of-;Xujo^(qS?TNxbHKk z7<6Ad;y%}$V(|Gz@bmFN;{l=H_g(>&Js=F`m)67Ai-GF@tD&Lr`WaLetojXK4ghXH zocay#uK#ZmKs^tsw_1S%c|0KpR6j9j!`mz8nlnJ-2`fQ%gD~hku>Y}J;pdTp+5^9T zzh4fL17Xbe0KxiSBLV5Y-y~3fH!K7mUZ6MtVUXD%3}S;Yhz-IZHVA{*APi!IFo+Gp zAT|ht*dPpIgD{8b?KUp2+%gCTnMd z=D$E{LD;9-yLjKeefvOc5cV#9m4qxm-0S}w(0EEiLj%a~Ana3}Q@nQNYWVrHpzvWp z%J1m>oa*P64F?V!c>4be7;4C1d^ zwF*AI;8UGl%)o#spCNoid!na#Rg#yM)~dt*1O5uUWGK?kR%8f|tN8&c!~g&P_a8JK zz|73d4B><38+nQ~R;>p$Ilw}_)vvP>xL3pZImHYdaSuT4X0Y^sQ2#hIyrKcZ`~Ux# zBWV006uw>z+&%~mgO8_!+5=y&#>2{A>X8~y@jKB&DA8j4u|;8T1mi-CawKL7o``?=>U z@Bse%doiKe%%_qV7{bH;Fs%6_dW6Y=fdMps6I%b812lIHx>aOVlmbI&=wAjHe_c0d zyalu#{@pu}JUZX{KUf|-_l->+T|Eu?=R#c>7|uc6DOuZpFXy||VehEn0J1nPLgS+wy4@OU=^;yn4a;PvZ> z^$DQ)|MGu-!~a|VKL>JfPP0$3<=3lU85yD&-?RN^%W2jwRx#gR4-5aCY7HkD1_t=} zu1~X0vDW|p|6uaH-8$&wyTz+&YinWhxy?S+uR=jB0flK{ysWCr`x9*wEq?2dIkni zf0mN|KdAm>U|?7QGmlVxJJ{qw?x&>w?`iffw%`B%Kd8OVu#`a{2Q+>cSMdRq7H7>A z6a<}z92yFlADlT;P!M^(aFmZbJYeYwkrN;yqkKp>z{t_?fQ1BvCKMjjum8QPk;_le z_+i6?Kcv_95a%}eL@*e zs6}iq1kW!ZP0#-awGZ|orU$|N>qzSnK<70ew_kdz6&OGZ8bReP2UIhie62lpF(0pXW zqDAojGl<{a-Q5k62Vvi8?dn~-cI^VOK^Qdtvtq>xc>R~%%u~F7|Ni|TIS>Zb*Qnz~ zI@PaVzkUsp17Xnqi$#kTEdsGY*r%GOcokB84r-tL|NrU{NDhR3saF84b`!xF$Gd#F|AH)V>kbAd?i;02QAPj1+tXkCszkfZankzdz z+zx5H$~*ga6JmTkrrJk2@9q2IS}2XjE{2|)K_ zMI3-}8GNd9vj6{o1!|Il#e9l;KeX#XBjUo?ZyU!fYmU=3>h zZ!pJ2arJ6M{~x?R5b1tAQu(0z?dny;eS6^Z43rS}h3ZdfwM5<@?o+%7)TIYiwP4IY zWtpYcD#Uq7ImL@4DiF&N{`-K|Bg8$>2P^*n|Nm<&;|c%&|A&t!fZGdStKbU`K$gYV zSHtf&1I;gN{aXtkKLE8CvToPH@23OphD5%v33NXo(_Tb_!nYc9!UH$lzTWCnN#Oks z&>0R;dni8c|DO)g|KL5AzSY{rzkfaY#lT?7aL?lZc~JekV8H@&Q2JtI$YcW5rz=*h z=m7CSm>Tsza(xb}{~tYigi`+8eof9+QnQ;gg`0k>z7#>ah{xs$z+>i@T!JB>i;5o9(9gYv_+ZQHhi z*dWYP{kn>upPwJZ24T>A81i~TooesmMO<9)@fe-voa|pK5c6R^)ji3G)&K(o$i1PV z_3-=!Z7;yb>mlun|LZ_@fiS3k2hA6O*dPq$Bk9k{ZfIzL^GO~5N3Z{Vn!QolfBU{N zJAu+Z$ZilG<&zd3=;ik)AC!s^cr-i^VF6+h3J*%_f1PHZ>bSV@P>@|93@Tp{r4?vA z)u))6{IioYgI>ML$^!NNzyJUC-=}zy02328{5&_v`Z`4YODW%{`nhMrfdlaMfi8v& z3?bo&4m-%tAPg$gKp0d%Bd=!$@e%vU|Nmc=#K3@jU)iZB28ITt`}S5wF)+kGS`Dv{ z&ozVQ+vDK(qk~Sf2@OSzCxFb44~>JLhXis92!q@L!XP#XgV-PpQhzmmZ7+xo!XW({Se4`PEb=sfJczP>&X8-zjQ6{zDSKE=rE6}_8%ikB{3x)h`qgmt=e zvi~8i-_z;#DF*F-0Lg){c6UzpexqBcK&iL2(TSFc`u z`wxMj{o89o5ce0bXri9aMkzm00Qr8>ni(vTp!xq$X#cyT!wtfRRDSH>|NpIs{eU3;kKeDa!^{Kmb>!ekyRxtiw2Qe|XSf{x5`uYlY!TaDa0*$w5 zt=}6f$Y8}VpXq-MsQALtkaA# z|AN8Su0D0@)G1J!1Yz{`y`b@xSfuqI+0EedYvJP!qxC;^>wEO}0DAd7$_J%V1Rf0! zL|A}Wgu;Uw^*{1>E4Ax;bn|kmJ%St@92!8i|CRrRXO0^xGK7bRL+95~&vW_zp922- z|NH-+KeGmWe$3UY``HBz z88!i&Q=O{05)=^=L8})*;~|SVstzzP+|jU$-G?3; zUJvc>|NRfPAL+bBkWnBEsZIa?2i+%cinN~qG+wY^HDY`pG`){GO>i_RW)c>IQhv{Ko;o}#e^^)93 z?&|@cuY_p7Oqj#0xoXua`1lQIJ!a_DP=`J0|G_g5xz*am|9<>h%fR5y_}&Y$KH=4? z|KR?;62opb(EP;Kty|&!TTuOkT;GlK{y#11|5~K_-@DqUcInA9>y}i6o!5jt#2FUvJRdDsR=J!;;$^y-=3qa3r$*E4$3}<3k1v}3L zRNsa&P{L2s1nD=19B;K4j346nq3tmb}+13{NDgPhkiP%i6cA& zv>#~uKZR`!0zBD{456Vl;PVjv{h#(5I^F>9?}N+)VOV{w$bov^;o4@<`2>jiTBlfn zqoP3{USEUvL&iT~g6a1N0*`0F%?H)*wYBl^`2bLRAT;zV{5(c5|1Y@e1{(q5|9_7- z-w4!Ri2n;8UiiN<32i)~T7d(3JRzqVGy;PdPgq;6UHmt;q7$+j0kS@G{jJ|sW(@n4 z|DOTfr=nZTz`(SUfq{u3oAG@WXnvoWnF+d{PlN$9KZQE~f3gU9zba@xeW2(6sX6{n z>-rxQp2+)wLHjALUcCxlKMG2Rpz;50c8L8Sx!s`kB?$>2IS_uo7<7LSVt=7eGibf$ z|2mKy2&4CZM>-$9{2t|lQV9Z&h6f@nKrBMx@h0ktz?UyyzJSz%aGPct_&hWa8-y|W zu8LI;9y|cafpD9qn5(f5F3Ok<+~~#7T9lP zWd$+|gxfS#C6WCLl8^fE;R8qxgjE$;B;kjpFfcHvDlQg?`|;xkNDhQu6%R|O>gwu( z*dUyysH*sPHR61gc1>5sP^A8qt0IeJHPU*wG{q+py4>8{42Ky&O9L5P6_W%&h3WtQ zr|u{kgY08q2>lOgFZ}&~^uNP2$bC*R(DMQQ{ci%DZ-~_22e|=+!Iky@|Nk?i7*OW_ zeTo$r8j$82xU(HO!Yfw5?_&Vn*AN;S2X2pm%mCHaq4&RrfY=}ms{bEXeE{$O0`Woh z|6ip23n2OHp{0oZ5F88)@ksKZ-3!R`A#1A@81#|G6F}=38JO0Bq6B38|J>q60njpg zFz5gO|LdxCvj6}8e`l`B|Fa-5P=EFB)vKY53@i-Q6`=M)Z!v=&q<&&zuoMQ@|2uZT z_cIK{`oG~+|Mxa?S0k@q$n9R41iGIAl;%Kq{p5})Zi3ubJ!XW z1~C8scX)mpY3%_*<@u;QDAgeFXm}vP0>nZOk2g_IBv9-BHcgN^7;e)<=esFBc<=yJ z<$#r>X{ITHj++5<7#JAn&Bv_&pGbi2=Y_e4MUpbUtKt(0d3pKyF!Nj$RV5ja_IJA~ zE*AKJRR6mwsw)2c`7;)#9#sGTK&t=SG@nRp-MV!vOkPFPO))$?JPgJM)&I!jtDyS- z(W6I6F!?r37D?ps)-+93#pTPF!}ph^DY7W4v$M0q#uM5!RTaaks;aL3cX-KA1Zp2B zFvJyrHYB|NpZ15L88m+q8VWlP{}yb%0e=1w%wAC43Bu1E85l&7>R-@(3k>@a^9?!0 zi2`vAi2Ve)pz|2RE8yb^kogD1`AVSnz}4ElTR~=nFo+)-i#YEY)IOMc^*?<714#aQ zd^~)-0wiAzItU7+`Tzg_p!4RC@Av6#c0?IZ$gKvoD45{(oofc2zaIAbK6C~GRR90K zzle#6AzSGE8pwLa*ROwo@5eAzxwjA0-)-2pe=j6lm>GPkxs$z4LDuUlxGcGs)65;s zxfF7Kpo_}gbs+Q1OiiKfJyC|-=GRqU|G#<#(GQvr(y2yY|3A{}f8_Akca%8^6t(d1 zYWAr{v<4U;?STq}2&8@Rf7rGU(97>pJ}hNG=+W?igaeEu93HjrLG#rJ^^wQmgWKS9 za0WZy0?oa&=0^~)kB~gN`v`?Ex_V1A`_c8ItH&=Nac!Ar*`Ggu9B(ohg3^Fb^BPVg8vh4;-_hAuDu>;`_dC?W?^6cp0bx)X4ZXFA2K&uJ=hL@s@C+z?K7cpMIz`*eD|9`~(M+OFl z`1|1qc@74KuT!f*P61=k=zwS_;(iCvc}mFVHAC-zf{!NzOgRSH?+I-kfX;sawHL0& z^vnPo2R;L*+un7>*{ZCb~U*YFBgVra6|6g%`oh4*FgHCmBu~yTn{R|AIjQ1@6 zp9k%SSh{pM`1}J#hAJk|`p41wAJP9uum1`0LG?ePH2`TJe8(6+_zybb3zSS5hT8Z6 z;qn~pEjTf%9v&26#%Oqeg8@#Ah6g+-z>JX=9uenS1Cj54T-(i!a^7oicUM%~qE)LH z7BM)20%%>giehxkoreGaSDq9!WMFummBbMm`W}2f;_-h9Q;u7L?r#c*-pBX%|6<5~ z2zdPrG6RGmwdeo;=;sskRwoK@Ek%qcfc6_yFqp#Y<5NkB9HHSA;QRbQW`NF94h=<& zCxFHS-uAvn)c*_&4B>xawex@Q`AUEPBld5C)c>nT*azYx@7Dyae?Yna33Q(W(s|9f z#h?`yi1V63_euZ%9s!>Z0gV^bRma2kXM*2p)|iR(#oe%|AKNp0*{6VA}m0x(eMC;0s@m79)#+DpJr{8{dRrL+{MWA zx4qq`lH`%rFRblel@!LMr`PgYAPD5DwV?Z8!zvE^|9|_fb2Ed$sU%SQ;6M0$#6SO= z|3datBF<9==>cI--44Q_`uHo-d;{pdX5{@2I@t;w5BL%L34DqZIYQ$a;P*k~R)h9C zghTI(_z&LC5dZxz%6^8>@bB;wA3=*MLPP)AgX{)jko{}#hr#bp02@&Es>e}YRH1h|Vq;|q1*^@IQZFZt)H2;PqX-R}wM&&MLI z7hIL3z_1sI4?53?VJ)J6ubu745%+*o6;$_vFlc>aXei?TC(w8V`uR#RF=6ll1WQ_i#9i$(`|NnpeX%HKPLHxH-_wIw(APics5c>B!d^`d)UV(hR66pK{6BPzHvwG!P$jzO(jv(EiD^bO;}G12ky=PMZ6_`TyU8&PQhI0;y+UP-Hyq0aE|t z-`{vh4q*cCpJ-?}1mEuhYF{Al|3zQ_Kh)}fa@q&}ZVfBp}0UIOeq2uSJlcNAN~HA*hZRuof6A#=;NaSdXup8QKNuJg>nnS!GlCXy zG{D^l8bA2Id{qR|Knwt>XWG(0SO%=Tl}E>lTB~`va*3VPCZI2GD#3XgzJU z=zp94=l}l)wI{A$y;{$}pv168^#3|g|DS2WZ|Hv4cIF(&d5_5VJ&?TqpO)kQgz9%n z?Kx+OTRSzmP5O_2^5McpgjfMv(6cBi%g~#Bl|GBG+ii*H>Jt$UsnqOBT-yf9I z%w0U~+O=ySIS|&VPE)*=z`&3+6*iu*SRnin1H;?@Nvj0}85kh#gEbBR|Nr^F_`kv} z$oho108m{A+BN_>%ozFnBhdK%U8ME`=)7iLr1KYZiWN8-m=NRnpz{vHA27i8H-PSQ z4h^k??zjB^A9P+c@^}KMeenP5zts@?A@dQTp+8|<@cIPPy}zLACm`(?h5ps+VG2O) zhmb#r`yxT-E1`@hpxytJQ+*hG{}W7qZ?$&u|N4J$_xVJ^9u z!Jz$;?~%@@&Mo#XzWN`bz^Ax3n_G*4;eQWAJ*fS0|K7j<%nY^6ATiK*f>wSkxP8#c z{NJLt`BYLx)i3D$10zFj_v<3i{hgq=1YuD9Ih5;vLhT2T|IpVb{wHC6VWgE$qy7cu z3IrYv4@6jiSfk+q3IzlvH9Ur1{r@@(`F=^AX6|C-^K3!u>3{zG`4bi*+0AX55g-nz zqGtfD2Y1zsKh?mnW0jx-sKuaN+{6+3`oV_(|KGfGabaNa^a8I>&;zv%uKl0*pVJE5 z-^aNh61;yv7qR{zry4ZEz=Y_J7ax)UEjEYLj-c^-@OjPP^^zbl&}mztp@{Vlp!)rH zEuy~<;;;W34nI%{#1BV0zX8NA{fe+3#IOFpAHH7FMH6#80r~zX@caYPebVszpFocL z4_ROE|36~>0#v`h|NkF){x!%yp!o>IcnA9ZnmyG%#aBV&E8yEE|NjS_|6KQP|9>rp z{gI$K3!P@)VlDms;PbFp7+4v6nsurfK!-Ph;tU*LI?X8ehcpj+e)WO|259>TlwQH- zA^n2}2Lq}3dsICvWGNDGhQUjO?vXIF#ni-yE50|V$hd*t&N zKQ|KzIenK8Om) zcmm>lCD7>wp;r<2KY_**YU8VGA*vzc1)-r=;r4;r1F`>q!Ou?s@k2uq`w>8VQ6%-C z^$^J83E=aZk?w!;DOLfk_27ls2f9C-fq@CW-V(k3_l4E}Pz|8@gwU`5KmVWiU;Dq* zebye(`3qOKs>06K1l@o8|3Bh}L!RcIYS8=zC@w&Fr15o{bE-kH2l6`zkF@e>)W4uu zN8r)$K!gQ|H5wkEP(WZ(!(+7m*9P5B2%oRc>DH;Ps;a7jg=kN=PqiuNK0(l_f(#4{ zp!25lCp0u1`5*9`;V6URsvt*>@Ho&(g8%>j{lDcup!SHWDldF|15*EU z!|g|}|9y(RiyImc?U^pn`hw8V(EH5qqe1|>p6w7fx$7;3v?dyVd!|l zkN=?6{mAP9VCKT=-^U6J47N!1J$JDJ2RG9C1JM3P1}08;`=Gb_bduI8uIVuS=bAl& z3XsMVa*9FcH6!X@(E35-^OagG!TTxT>lH!kAL8Td;p+|5K<*E{Iu&OA#5s=@R;~v1 z$RQ%2^?#t24}|ysKW6<8+F!tcI1iy1w8F6=;s5&oHvgsHvv~$Na)eyFZVEf_SEss7 zlM!+J4}*5IPWAuL|M2nfk5F9t{sjIKar!@PLH`geEmSM(cml>wlE{ zajSW$M#BRX3J5&X!eg}lr*8eP-RxbBykCKL z$?GiS^#|U~I@!8N_doeGuS!bPSg}G8dc%WH^Am~i1O|o^?+w6rLgZ8@afHV2V*3C8 z*Z(X36OX5X&R-6Xf$k4@_YX9`5E>d<1*?x?DH+B;=E%Unj5MB*Q|&0g&B^-}Cht?+ z2AXex?_W4u%~K5T{Qv*|e{Hc(@vC^mdIp~AoZ|N|&Hpj``{?yQX#W5I{{8d8TK4_- z^{sZ~h=>Ubvti(5U}a!n0PW{g<>iInr_Ixx1Ky7a^T#M3H9SUI`84WZSWbY@qu~Jw z2N*dT9aPX#G#$`rikw{`YQvU4(r8GN^z1`t@t@eE^^sJv-UcD{IxNRgl{r zLH7l*NY>s`U~qfJFo{7BbYJvgfzawZ7XSa>`XBg;Aut!zUV!f>_zjzHfS+FoG82Ts z^)YCDf3X4sx9V5;e1A?cXa<4_zCIDOUT^>VTk!o4AbvRF_+%{O{o0@tlELRYg6!}C zpJ#L+;lJ&F?e}c!88y8W8A7gah2Dq6z`#?TX2{6IzzlK|2=i2PS2L^voks-Xf#gT| z$l*b1{vK5iNk=epG(2D-0ij330}>7}a-@aFX#GF9>wlkW?P}!n{XysNAn$(!%{TO~ zUk|+x0MtIgAbE|!dW2+J8Bl{F9aDdK> zp3m6NXv3hxz+LRfVJeEa|5~RyGm4P`vEMDX`gPI&|Es{~1%TW?%0~^4kybv9`WKW7 z5O_2^5McpgjfMv(6cCuy@EEQChkpIP9;N>GDgO8GAAG-fPxGpzEUi_mKxZ9*Qi)Er ztKu^r28Lt*6n-(3FfeczD>8(~6@c$|{Qdvf8|ZxuHIVkf|No%d3y|+OSX<4&fP8)+ zsJG9gi@49x2Xr6Of+EoQ#P9#l|F6xRt;i7(7kX8jfepMQVpY;(0aZFO2B`n2D#@@a6yE>xX-4JuHnX70SGy`AtItJ~U)!vTBAOmKL^9Ti#Zrp#n;2buNlq#XzoS# zFNXWk!q2BV4JG_Q{dtB}q3|oa(c{Ob8a2Mq!^@}H4aGd|YBxoOSD~S>^#_?jM+E8* zU%&qM|F!=HHy8q36%`pm!(jI#{QVDIZ%_hjAHe(#E+d^|6w@^LXU zs`x~rt*xyM#!pjpRYblYCQVUQ5qUpdniD=I2LN9ci#Ow)8# zeEIU_OE3rQo>WET^>!x=n*@-}b5lGlfxJHdgrTeA_3PKc_vwPnXxCI#%*x6Fozes1 zGPG+h;#iGzpJAG!ilV;0zCKtIWS^p{;+;Ep?!fqMnn@fF9z1veFoah$fc6XQc`Y8q48EV~t2)Pg z5pU4)1O`_{1qNRD>^=iSPzeJEsI36AZ7}ax^?(ApxOB z!y`>G47}1D79MSyh~61!e31};xgo0hG&KFo(fEYSLzhR_k8U42A63m2&g^{D> z7c3+o^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 z2P`BY^k{fM!U0B(h6gMpAoOT>K*9k=j)n&;Bp~!?ctFAdMvjIDEF>WGXm~)v0Y;97 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 SCREEN_WIDTH * 2 && in)) \ + if(fMapSize > SCREEN_WIDTH * 2 && in) \ break; \ float z2 = in? 1.1f : 1.f/1.1f; \ fMapCenterX += (x - fMapCenterX) * (1.0f - z2); \ fMapCenterY += (y - fMapCenterY) * (1.0f - z2); \ + \ + if (fMapSize < SCREEN_WIDTH / 3 && !in) \ + break; \ + \ fMapSize *= z2; \ } while(0) \ @@ -4739,6 +4743,11 @@ CMenuManager::PrintMap(void) // Because fMapSize is half of the map length, and map consists of 3x3 tiles. float halfTile = fMapSize / 3.0f; + // Darken background a bit + CSprite2d::DrawRect(CRect(0, 0, + SCREEN_WIDTH, SCREEN_HEIGHT), + CRGBA(0, 0, 0, FadeIn(128))); + RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR); if (SCREEN_WIDTH >= fMapCenterX - fMapSize || SCREEN_HEIGHT >= fMapCenterY - fMapSize) { @@ -4799,6 +4808,17 @@ CMenuManager::PrintMap(void) } } + if (CPad::GetPad(0)->GetCrossJustDown()) { + if (SCREEN_HEIGHT / 2 > fMapCenterY - fMapSize && SCREEN_HEIGHT / 2 < fMapCenterY + fMapSize && + SCREEN_WIDTH / 2 > fMapCenterX - fMapSize && SCREEN_WIDTH / 2 < fMapCenterX + fMapSize) { + + float diffX = fMapCenterX - fMapSize, diffY = fMapCenterY - fMapSize; + float x = ((SCREEN_WIDTH / 2 - diffX) / (fMapSize * 2)) * 4000.0f - 2000.0f; + float y = 2000.0f - ((SCREEN_HEIGHT / 2 - diffY) / (fMapSize * 2)) * 4000.0f; + CRadar::ToggleTargetMarker(x, y); + } + } + if (CPad::GetPad(0)->GetLeftMouse()) { fMapCenterX += m_nMousePosX - m_nMouseOldPosX; fMapCenterY += m_nMousePosY - m_nMouseOldPosY; @@ -4815,16 +4835,16 @@ CMenuManager::PrintMap(void) } else if (CPad::GetPad(0)->GetDown() || CPad::GetPad(0)->GetDPadDown()) { fMapCenterY -= 15.0f; } else if (CPad::GetPad(0)->GetLeftStickY()) { - fMapCenterY += CPad::GetPad(0)->GetLeftStickY() / 128.0f * 20.0f; + fMapCenterY -= CPad::GetPad(0)->GetLeftStickY() / 128.0f * 20.0f; } - if (CPad::GetPad(0)->GetMouseWheelUp() || CPad::GetPad(0)->GetPageUp() || CPad::GetPad(0)->GetRightShoulder2()) { - if (CPad::GetPad(0)->GetMouseWheelUp()) + if (CPad::GetPad(0)->GetMouseWheelDown() || CPad::GetPad(0)->GetPageUp() || CPad::GetPad(0)->GetRightShoulder2()) { + if (CPad::GetPad(0)->GetMouseWheelDown()) ZOOM(m_nMousePosX, m_nMousePosY, false); else ZOOM(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, false); - } else if (CPad::GetPad(0)->GetMouseWheelDown() || CPad::GetPad(0)->GetPageDown() || CPad::GetPad(0)->GetRightShoulder1()) { - if (CPad::GetPad(0)->GetMouseWheelDown()) + } else if (CPad::GetPad(0)->GetMouseWheelUp() || CPad::GetPad(0)->GetPageDown() || CPad::GetPad(0)->GetRightShoulder1()) { + if (CPad::GetPad(0)->GetMouseWheelUp()) ZOOM(m_nMousePosX, m_nMousePosY, true); else ZOOM(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, true); @@ -4847,7 +4867,7 @@ CMenuManager::PrintMap(void) // CFont::SetRightJustifyWrap(10.0f); CSprite2d::DrawRect(CRect(MENU_X(14.0f), SCREEN_STRETCH_FROM_BOTTOM(95.0f), - SCREEN_STRETCH_FROM_RIGHT(11.0f), SCREEN_STRETCH_FROM_BOTTOM(58.0f)), + SCREEN_STRETCH_FROM_RIGHT(11.0f), SCREEN_STRETCH_FROM_BOTTOM(59.0f)), CRGBA(235, 170, 50, 255)); CFont::SetScale(MENU_X(0.4f), MENU_Y(0.7f)); @@ -4859,11 +4879,11 @@ CMenuManager::PrintMap(void) #define TEXT_PIECE(key,extraSpace) \ text = TheText.Get(key); CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), text); nextX += CFont::GetStringWidth(text, true) + MENU_X(extraSpace); - TEXT_PIECE("FEC_MWB", 3.0f); + TEXT_PIECE("FEC_MWF", 3.0f); TEXT_PIECE("FEC_PGD", 1.0f); TEXT_PIECE("FEC_IBT", 1.0f); TEXT_PIECE("FEC_ZIN", 20.0f); - TEXT_PIECE("FEC_MWF", 3.0f); + TEXT_PIECE("FEC_MWB", 3.0f); TEXT_PIECE("FEC_PGU", 1.0f); TEXT_PIECE("FEC_IBT", 1.0f); CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), TheText.Get("FEC_ZOT")); nextX = MENU_X(30.0f); nextY -= 11.0f; From daaf443cfaa0532aad8a0ede0cad826c66650593 Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 7 Apr 2020 22:26:01 +0200 Subject: [PATCH 021/112] finished CMotionBlurStreaks, CSpecialFX --- README.md | 2 - src/core/config.h | 1 + src/core/main.cpp | 38 +++--- src/entities/Entity.cpp | 8 +- src/render/SpecialFX.cpp | 259 ++++++++++++++++++++++++++++++++++++--- src/render/SpecialFX.h | 31 ++++- 6 files changed, 294 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index d63b2908..a0e93bae 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,6 @@ CBoat CBulletInfo CExplosion CMenuManager - WIP -CMotionBlurStreaks CObject CPacManPickups CPad - only cheats @@ -53,7 +52,6 @@ CRecordDataForChase CRecordDataForGame CRoadBlocks CSkidmarks -CSpecialFX CStats CTrafficLights CWeapon diff --git a/src/core/config.h b/src/core/config.h index 1dc6abe9..dfc454a8 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -78,6 +78,7 @@ enum Config { NUMMONEYMESSAGES = 16, NUMPICKUPMESSAGES = 16, NUMBULLETTRACES = 16, + NUMMBLURSTREAKS = 4, NUMONSCREENTIMERENTRIES = 1, NUMRADARBLIPS = 32, diff --git a/src/core/main.cpp b/src/core/main.cpp index 674527f5..fb5beee0 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -162,17 +162,17 @@ Idle(void *arg) } else { CPointLights::InitPerFrame(); #ifdef TIMEBARS - tbStartTimer(0, "CGame::Process"); + tbStartTimer(0, "CGame::Process"); #endif CGame::Process(); #ifdef TIMEBARS tbEndTimer("CGame::Process"); - tbStartTimer(0, "DMAudio.Service"); + tbStartTimer(0, "DMAudio.Service"); #endif DMAudio.Service(); #ifdef TIMEBARS - tbEndTimer("DMAudio.Service"); + tbEndTimer("DMAudio.Service"); #endif } @@ -181,18 +181,18 @@ Idle(void *arg) #else CPointLights::InitPerFrame(); #ifdef TIMEBARS - tbStartTimer(0, "CGame::Process"); + tbStartTimer(0, "CGame::Process"); #endif CGame::Process(); #ifdef TIMEBARS tbEndTimer("CGame::Process"); - tbStartTimer(0, "DMAudio.Service"); + tbStartTimer(0, "DMAudio.Service"); #endif DMAudio.Service(); #ifdef TIMEBARS - tbEndTimer("DMAudio.Service"); + tbEndTimer("DMAudio.Service"); #endif #endif @@ -222,16 +222,16 @@ Idle(void *arg) } #endif #ifdef TIMEBARS - tbStartTimer(0, "CnstrRenderList"); + tbStartTimer(0, "CnstrRenderList"); #endif CRenderer::ConstructRenderList(); #ifdef TIMEBARS tbEndTimer("CnstrRenderList"); - tbStartTimer(0, "PreRender"); + tbStartTimer(0, "PreRender"); #endif CRenderer::PreRender(); #ifdef TIMEBARS - tbEndTimer("PreRender"); + tbEndTimer("PreRender"); #endif if(CWeather::LightningFlash && !CCullZones::CamNoRain()){ @@ -251,17 +251,17 @@ Idle(void *arg) RwCameraSetFogDistance(Scene.camera, CTimeCycle::GetFogStart()); #ifdef TIMEBARS - tbStartTimer(0, "RenderScene"); + tbStartTimer(0, "RenderScene"); #endif RenderScene(); #ifdef TIMEBARS - tbEndTimer("RenderScene"); + tbEndTimer("RenderScene"); #endif RenderDebugShit(); RenderEffects(); -#ifdef TIMEBARS - tbStartTimer(0, "RenderMotionBlur"); +#ifdef TIMEBARS + tbStartTimer(0, "RenderMotionBlur"); #endif if((TheCamera.m_BlurType == MBLUR_NONE || TheCamera.m_BlurType == MBLUR_NORMAL) && TheCamera.m_ScreenReductionPercentage > 0.0f) @@ -269,11 +269,11 @@ Idle(void *arg) TheCamera.RenderMotionBlur(); #ifdef TIMEBARS tbEndTimer("RenderMotionBlur"); - tbStartTimer(0, "Render2dStuff"); + tbStartTimer(0, "Render2dStuff"); #endif Render2dStuff(); #ifdef TIMEBARS - tbEndTimer("Render2dStuff"); + tbEndTimer("Render2dStuff"); #endif }else{ float viewWindow = DEFAULT_VIEWWINDOW; @@ -293,21 +293,21 @@ Idle(void *arg) DefinedState(); #endif #ifdef TIMEBARS - tbStartTimer(0, "RenderMenus"); + tbStartTimer(0, "RenderMenus"); #endif RenderMenus(); #ifdef TIMEBARS tbEndTimer("RenderMenus"); - tbStartTimer(0, "DoFade"); + tbStartTimer(0, "DoFade"); #endif DoFade(); #ifdef TIMEBARS tbEndTimer("DoFade"); - tbStartTimer(0, "Render2dStuff-Fade"); + tbStartTimer(0, "Render2dStuff-Fade"); #endif Render2dStuffAfterFade(); #ifdef TIMEBARS - tbEndTimer("Render2dStuff-Fade"); + tbEndTimer("Render2dStuff-Fade"); #endif CCredits::Render(); diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp index 8bec1ac8..7a050818 100644 --- a/src/entities/Entity.cpp +++ b/src/entities/Entity.cpp @@ -394,13 +394,13 @@ CEntity::PreRender(void) }else if(GetModelIndex() == MI_GRENADE){ CMotionBlurStreaks::RegisterStreak((uintptr)this, 100, 100, 100, - TheCamera.GetPosition() - 0.07f*TheCamera.GetRight(), - TheCamera.GetPosition() + 0.07f*TheCamera.GetRight()); + GetPosition() - 0.07f*TheCamera.GetRight(), + GetPosition() + 0.07f*TheCamera.GetRight()); }else if(GetModelIndex() == MI_MOLOTOV){ CMotionBlurStreaks::RegisterStreak((uintptr)this, 0, 100, 0, - TheCamera.GetPosition() - 0.07f*TheCamera.GetRight(), - TheCamera.GetPosition() + 0.07f*TheCamera.GetRight()); + GetPosition() - 0.07f*TheCamera.GetRight(), + GetPosition() + 0.07f*TheCamera.GetRight()); } }else if(GetModelIndex() == MI_MISSILE){ CVector pos = GetPosition(); diff --git a/src/render/SpecialFX.cpp b/src/render/SpecialFX.cpp index f126e197..0d856d9c 100644 --- a/src/render/SpecialFX.cpp +++ b/src/render/SpecialFX.cpp @@ -9,9 +9,12 @@ #include "TxdStore.h" #include "FileMgr.h" #include "FileLoader.h" +#include "Timecycle.h" #include "Lights.h" +#include "ModelIndices.h" #include "VisibilityPlugins.h" #include "World.h" +#include "PlayerPed.h" #include "Particle.h" #include "Shadows.h" #include "General.h" @@ -19,17 +22,247 @@ #include "Shadows.h" #include "main.h" -WRAPPER void CSpecialFX::Render(void) { EAXJMP(0x518DC0); } -WRAPPER void CSpecialFX::Update(void) { EAXJMP(0x518D40); } -WRAPPER void CSpecialFX::Init(void) { EAXJMP(0x5189E0); } -WRAPPER void CSpecialFX::Shutdown(void) { EAXJMP(0x518BE0); } +RxObjSpace3DVertex StreakVertices[4]; +RwImVertexIndex StreakIndexList[12]; -WRAPPER void CMotionBlurStreaks::RegisterStreak(int32 id, uint8 r, uint8 g, uint8 b, CVector p1, CVector p2) { EAXJMP(0x519460); } +RxObjSpace3DVertex TraceVertices[6]; +RwImVertexIndex TraceIndexList[12]; -CBulletTrace (&CBulletTraces::aTraces)[NUMBULLETTRACES] = *(CBulletTrace(*)[NUMBULLETTRACES])*(uintptr*)0x72B1B8; -RxObjSpace3DVertex (&TraceVertices)[6] = *(RxObjSpace3DVertex(*)[6])*(uintptr*)0x649884; -RwImVertexIndex (&TraceIndexList)[12] = *(RwImVertexIndex(*)[12])*(uintptr*)0x64986C; +void +CSpecialFX::Init(void) +{ + CBulletTraces::Init(); + + RwIm3DVertexSetU(&StreakVertices[0], 0.0f); + RwIm3DVertexSetV(&StreakVertices[0], 0.0f); + RwIm3DVertexSetU(&StreakVertices[1], 1.0f); + RwIm3DVertexSetV(&StreakVertices[1], 0.0f); + RwIm3DVertexSetU(&StreakVertices[2], 0.0f); + RwIm3DVertexSetV(&StreakVertices[2], 0.0f); + RwIm3DVertexSetU(&StreakVertices[3], 1.0f); + RwIm3DVertexSetV(&StreakVertices[3], 0.0f); + + StreakIndexList[0] = 0; + StreakIndexList[1] = 1; + StreakIndexList[2] = 2; + StreakIndexList[3] = 1; + StreakIndexList[4] = 3; + StreakIndexList[5] = 2; + StreakIndexList[6] = 0; + StreakIndexList[7] = 2; + StreakIndexList[8] = 1; + StreakIndexList[9] = 1; + StreakIndexList[10] = 2; + StreakIndexList[11] = 3; + + RwIm3DVertexSetRGBA(&TraceVertices[0], 20, 20, 20, 255); + RwIm3DVertexSetRGBA(&TraceVertices[1], 20, 20, 20, 255); + RwIm3DVertexSetRGBA(&TraceVertices[2], 70, 70, 70, 255); + RwIm3DVertexSetRGBA(&TraceVertices[3], 70, 70, 70, 255); + RwIm3DVertexSetRGBA(&TraceVertices[4], 10, 10, 10, 255); + RwIm3DVertexSetRGBA(&TraceVertices[5], 10, 10, 10, 255); + RwIm3DVertexSetU(&TraceVertices[0], 0.0); + RwIm3DVertexSetV(&TraceVertices[0], 0.0); + RwIm3DVertexSetU(&TraceVertices[1], 1.0); + RwIm3DVertexSetV(&TraceVertices[1], 0.0); + RwIm3DVertexSetU(&TraceVertices[2], 0.0); + RwIm3DVertexSetV(&TraceVertices[2], 0.5); + RwIm3DVertexSetU(&TraceVertices[3], 1.0); + RwIm3DVertexSetV(&TraceVertices[3], 0.5); + RwIm3DVertexSetU(&TraceVertices[4], 0.0); + RwIm3DVertexSetV(&TraceVertices[4], 1.0); + RwIm3DVertexSetU(&TraceVertices[5], 1.0); + RwIm3DVertexSetV(&TraceVertices[5], 1.0); + + TraceIndexList[0] = 0; + TraceIndexList[1] = 2; + TraceIndexList[2] = 1; + TraceIndexList[3] = 1; + TraceIndexList[4] = 2; + TraceIndexList[5] = 3; + TraceIndexList[6] = 2; + TraceIndexList[7] = 4; + TraceIndexList[8] = 3; + TraceIndexList[9] = 3; + TraceIndexList[10] = 4; + TraceIndexList[11] = 5; + + CMotionBlurStreaks::Init(); + CBrightLights::Init(); + CShinyTexts::Init(); + CMoneyMessages::Init(); + C3dMarkers::Init(); +} + +RwObject* +LookForBatCB(RwObject *object, void *data) +{ + static CMatrix MatLTM; + + if(CVisibilityPlugins::GetAtomicModelInfo((RpAtomic*)object) == (CSimpleModelInfo*)data){ + MatLTM = CMatrix(RwFrameGetLTM(RpAtomicGetFrame((RpAtomic*)object))); + CVector p1 = MatLTM * CVector(0.02f, 0.05f, 0.07f); + CVector p2 = MatLTM * CVector(0.246f, 0.0325f, 0.796f); + CMotionBlurStreaks::RegisterStreak((uintptr)object, 100, 100, 100, p1, p2); + } + return nil; +} + +void +CSpecialFX::Update(void) +{ + CMotionBlurStreaks::Update(); + CBulletTraces::Update(); + + if(FindPlayerPed() && + FindPlayerPed()->GetWeapon()->m_eWeaponType == WEAPONTYPE_BASEBALLBAT && + FindPlayerPed()->GetWeapon()->m_eWeaponState == WEAPONSTATE_FIRING) + RwFrameForAllObjects(FindPlayerPed()->GetNodeFrame(PED_HANDR), LookForBatCB, CModelInfo::GetModelInfo(MI_BASEBALL_BAT)); +} + +void +CSpecialFX::Shutdown(void) +{ + C3dMarkers::Shutdown(); +} + +void +CSpecialFX::Render(void) +{ + CMotionBlurStreaks::Render(); + CBulletTraces::Render(); + CBrightLights::Render(); + CShinyTexts::Render(); + CMoneyMessages::Render(); + C3dMarkers::Render(); +} + +CRegisteredMotionBlurStreak CMotionBlurStreaks::aStreaks[NUMMBLURSTREAKS]; + +void +CRegisteredMotionBlurStreak::Update(void) +{ + int i; + bool wasUpdated; + bool lastWasUpdated = false; + for(i = 2; i > 0; i--){ + m_pos1[i] = m_pos1[i-1]; + m_pos2[i] = m_pos2[i-1]; + m_isValid[i] = m_isValid[i-1]; + wasUpdated = true; + if(!lastWasUpdated && !m_isValid[i]) + wasUpdated = false; + lastWasUpdated = wasUpdated; + } + m_isValid[0] = false; + if(!wasUpdated) + m_id = 0; +} + +void +CRegisteredMotionBlurStreak::Render(void) +{ + int i; + int a1, a2; + for(i = 0; i < 2; i++) + if(m_isValid[i] && m_isValid[i+1]){ + a1 = (255/3)*(3-i)/3; + RwIm3DVertexSetRGBA(&StreakVertices[0], m_red, m_green, m_blue, a1); + RwIm3DVertexSetRGBA(&StreakVertices[1], m_red, m_green, m_blue, a1); + a2 = (255/3)*(3-(i+1))/3; + RwIm3DVertexSetRGBA(&StreakVertices[2], m_red, m_green, m_blue, a2); + RwIm3DVertexSetRGBA(&StreakVertices[3], m_red, m_green, m_blue, a2); + RwIm3DVertexSetPos(&StreakVertices[0], m_pos1[i].x, m_pos1[i].y, m_pos1[i].z); + RwIm3DVertexSetPos(&StreakVertices[1], m_pos2[i].x, m_pos2[i].y, m_pos2[i].z); + RwIm3DVertexSetPos(&StreakVertices[2], m_pos1[i+1].x, m_pos1[i+1].y, m_pos1[i+1].z); + RwIm3DVertexSetPos(&StreakVertices[3], m_pos2[i+1].x, m_pos2[i+1].y, m_pos2[i+1].z); + LittleTest(); + if(RwIm3DTransform(StreakVertices, 4, nil, rwIM3D_VERTEXUV)){ + RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, StreakIndexList, 12); + RwIm3DEnd(); + } + } +} + +void +CMotionBlurStreaks::Init(void) +{ + int i; + for(i = 0; i < NUMMBLURSTREAKS; i++) + aStreaks[i].m_id = 0; +} + +void +CMotionBlurStreaks::Update(void) +{ + int i; + for(i = 0; i < NUMMBLURSTREAKS; i++) + if(aStreaks[i].m_id) + aStreaks[i].Update(); +} + +void +CMotionBlurStreaks::RegisterStreak(uintptr id, uint8 r, uint8 g, uint8 b, CVector p1, CVector p2) +{ + int i; + for(i = 0; i < NUMMBLURSTREAKS; i++){ + if(aStreaks[i].m_id == id){ + // Found a streak from last frame, update + aStreaks[i].m_red = r; + aStreaks[i].m_green = g; + aStreaks[i].m_blue = b; + aStreaks[i].m_pos1[0] = p1; + aStreaks[i].m_pos2[0] = p2; + aStreaks[i].m_isValid[0] = true; + return; + } + } + // Find free slot + for(i = 0; aStreaks[i].m_id; i++) + if(i == NUMMBLURSTREAKS-1) + return; + // Create a new streak + aStreaks[i].m_id = id; + aStreaks[i].m_red = r; + aStreaks[i].m_green = g; + aStreaks[i].m_blue = b; + aStreaks[i].m_pos1[0] = p1; + aStreaks[i].m_pos2[0] = p2; + aStreaks[i].m_isValid[0] = true; + aStreaks[i].m_isValid[1] = false; + aStreaks[i].m_isValid[2] = false; +} + +void +CMotionBlurStreaks::Render(void) +{ + bool setRenderStates = false; + int i; + for(i = 0; i < NUMMBLURSTREAKS; i++) + if(aStreaks[i].m_id){ + if(!setRenderStates){ + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void *)TRUE); + RwRenderStateSet(rwRENDERSTATEFOGCOLOR, + (void*)RWRGBALONG(CTimeCycle::GetFogRed(), CTimeCycle::GetFogGreen(), CTimeCycle::GetFogBlue(), 255)); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, (void*)FALSE); + setRenderStates = true; + } + aStreaks[i].Render(); + } + if(setRenderStates){ + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void *)FALSE); + } +} + + +CBulletTrace CBulletTraces::aTraces[NUMBULLETTRACES]; void CBulletTraces::Init(void) { @@ -201,9 +434,9 @@ C3dMarker::Render() ReSetAmbientAndDirectionalColours(); } -C3dMarker(&C3dMarkers::m_aMarkerArray)[NUM3DMARKERS] = *(C3dMarker(*)[NUM3DMARKERS])*(uintptr*)0x72D408; -int32 &C3dMarkers::NumActiveMarkers = *(int32*)0x8F2A08; -RpClump* (&C3dMarkers::m_pRpClumpArray)[NUMMARKERTYPES] = *(RpClump*(*)[NUMMARKERTYPES])*(uintptr*)0x8E2888; +C3dMarker C3dMarkers::m_aMarkerArray[NUM3DMARKERS]; +int32 C3dMarkers::NumActiveMarkers; +RpClump* C3dMarkers::m_pRpClumpArray[NUMMARKERTYPES]; void C3dMarkers::Init() @@ -627,9 +860,7 @@ CBrightLights::RenderOutGeometryBuffer(void) TempBufferVerticesStored = 0; TempBufferIndicesStored = 0; } -} - - +} int CShinyTexts::NumShinyTexts; CShinyText CShinyTexts::aShinyTexts[NUMSHINYTEXTS]; diff --git a/src/render/SpecialFX.h b/src/render/SpecialFX.h index 1cff55b3..8519ae79 100644 --- a/src/render/SpecialFX.h +++ b/src/render/SpecialFX.h @@ -9,10 +9,29 @@ public: static void Shutdown(void); }; -class CMotionBlurStreaks +class CRegisteredMotionBlurStreak { public: - static void RegisterStreak(int32 id, uint8 r, uint8 g, uint8 b, CVector p1, CVector p2); + uintptr m_id; + uint8 m_red; + uint8 m_green; + uint8 m_blue; + CVector m_pos1[3]; + CVector m_pos2[3]; + bool m_isValid[3]; + + void Update(void); + void Render(void); +}; + +class CMotionBlurStreaks +{ + static CRegisteredMotionBlurStreak aStreaks[NUMMBLURSTREAKS]; +public: + static void Init(void); + static void Update(void); + static void RegisterStreak(uintptr id, uint8 r, uint8 g, uint8 b, CVector p1, CVector p2); + static void Render(void); }; struct CBulletTrace @@ -29,7 +48,7 @@ struct CBulletTrace class CBulletTraces { public: - static CBulletTrace (&aTraces)[NUMBULLETTRACES]; + static CBulletTrace aTraces[NUMBULLETTRACES]; static void Init(void); static void AddTrace(CVector*, CVector*); @@ -84,9 +103,9 @@ public: static void Render(); static void Update(); - static C3dMarker(&m_aMarkerArray)[NUM3DMARKERS]; - static int32 &NumActiveMarkers; - static RpClump* (&m_pRpClumpArray)[NUMMARKERTYPES]; + static C3dMarker m_aMarkerArray[NUM3DMARKERS]; + static int32 NumActiveMarkers; + static RpClump* m_pRpClumpArray[NUMMARKERTYPES]; }; enum From f7ac85e4925f6133f359385b9efb35c8d9d63a5a Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Tue, 7 Apr 2020 23:43:19 +0300 Subject: [PATCH 022/112] weather stuff --- src/render/Timecycle.h | 1 + src/render/Weather.cpp | 471 ++++++++++++++++++++++++++++++++++++++++- src/render/Weather.h | 22 ++ 3 files changed, 488 insertions(+), 6 deletions(-) diff --git a/src/render/Timecycle.h b/src/render/Timecycle.h index 235d559c..f126dca6 100644 --- a/src/render/Timecycle.h +++ b/src/render/Timecycle.h @@ -136,6 +136,7 @@ public: static int GetFogRed(void) { return m_nCurrentFogColourRed; } static int GetFogGreen(void) { return m_nCurrentFogColourGreen; } static int GetFogBlue(void) { return m_nCurrentFogColourBlue; } + static int GetFogReduction(void) { return m_FogReduction; } static void Initialise(void); static void Update(void); diff --git a/src/render/Weather.cpp b/src/render/Weather.cpp index c1988ab4..cb19f6cf 100644 --- a/src/render/Weather.cpp +++ b/src/render/Weather.cpp @@ -2,6 +2,22 @@ #include "patcher.h" #include "Weather.h" +#include "Camera.h" +#include "Clock.h" +#include "CutsceneMgr.h" +#include "DMAudio.h" +#include "General.h" +#include "Pad.h" +#include "Particle.h" +#include "RenderBuffer.h" +#include "Stats.h" +#include "Shadows.h" +#include "Timecycle.h" +#include "Timer.h" +#include "Vehicle.h" +#include "World.h" +#include "ZoneCull.h" + int32 &CWeather::SoundHandle = *(int32*)0x5FFBC4; int32 &CWeather::WeatherTypeInList = *(int32*)0x8F626C; @@ -32,13 +48,195 @@ int16 &CWeather::Stored_OldWeatherType = *(int16*)0x95CC68; int16 &CWeather::Stored_NewWeatherType = *(int16*)0x95CCAE; float &CWeather::Stored_Rain = *(float*)0x885B4C; -WRAPPER void CWeather::RenderRainStreaks(void) { EAXJMP(0x524550); } -WRAPPER void CWeather::Update(void) { EAXJMP(0x522C10); } -WRAPPER void CWeather::Init(void) { EAXJMP(0x522BA0); } +tRainStreak Streaks[NUM_RAIN_STREAKS]; -void CWeather::ReleaseWeather() +const int16 WeatherTypesList[] = { + WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, + WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, + WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, + WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, + WEATHER_CLOUDY, WEATHER_CLOUDY, WEATHER_RAINY, WEATHER_RAINY, + WEATHER_CLOUDY, WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, + WEATHER_CLOUDY, WEATHER_FOGGY, WEATHER_FOGGY, WEATHER_CLOUDY, + WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_CLOUDY, WEATHER_CLOUDY, + WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, + WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, + WEATHER_CLOUDY, WEATHER_CLOUDY, WEATHER_RAINY, WEATHER_RAINY, + WEATHER_CLOUDY, WEATHER_RAINY, WEATHER_CLOUDY, WEATHER_SUNNY, + WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, + WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_SUNNY, + WEATHER_SUNNY, WEATHER_FOGGY, WEATHER_FOGGY, WEATHER_SUNNY, + WEATHER_SUNNY, WEATHER_SUNNY, WEATHER_RAINY, WEATHER_CLOUDY, +}; + +const float Windiness[] = { + 0.0f, // WEATHER_SUNNY + 0.7f, // WEATHER_RAINY + 1.0f, // WEATHER_CLOUDY + 0.5f // WEATHER_FOGGY +}; + +#define MIN_TIME_BETWEEN_LIGHTNING_FLASH_CHANGES (50) + +#define RAIN_CHANGE_SPEED (0.003f) + +#define DROPLETS_LEFT_OFFSET (10.0f) +#define DROPLETS_RIGHT_OFFSET (10.0f) +#define DROPLETS_TOP_OFFSET (10.0f) +#define DROPLETS_BOTTOM_OFFSET (10.0f) + +#define STREAK_U (10.0f) +#define STREAK_V (18.0f) +#define LARGE_STREAK_COEFFICIENT (1.23f) +#define STREAK_MIN_DISTANCE (8.0f) +#define STREAK_MAX_DISTANCE (16.0f) + +#define STREAK_LIFETIME (4.0f) +#define STREAK_INTEROLATION_TIME (0.3f) + +void CWeather::Init(void) { - ForcedWeatherType = -1; + NewWeatherType = WEATHER_SUNNY; + bScriptsForceRain = false; + OldWeatherType = WEATHER_RAINY; + Stored_StateStored = false; + InterpolationValue = 0.0f; + WhenToPlayLightningSound = 0; + WeatherTypeInList = 0; + ForcedWeatherType = WEATHER_RANDOM; + SoundHandle = DMAudio.CreateEntity(AUDIOTYPE_WEATHER, (void*)1); + if (SoundHandle >= 0) + DMAudio.SetEntityStatus(SoundHandle, 1); +} + +void CWeather::Update(void) +{ + float fNewInterpolation = CClock::GetMinutes() / 60.0f; + if (fNewInterpolation < InterpolationValue) { + // new hour + OldWeatherType = NewWeatherType; + if (ForcedWeatherType >= 0) + NewWeatherType = ForcedWeatherType; + else { + WeatherTypeInList = (WeatherTypeInList + 1) % ARRAYSIZE(WeatherTypesList); + NewWeatherType = WeatherTypesList[WeatherTypeInList]; +#ifdef FIX_BUGS + } + if (NewWeatherType == WEATHER_RAINY) + CStats::mmRain += CGeneral::GetRandomNumber() & 7; +#else + if (NewWeatherType == WEATHER_RAINY) + CStats::mmRain += CGeneral::GetRandomNumber() & 7; + } +#endif + } + InterpolationValue = fNewInterpolation; + if (CPad::GetPad(1)->GetRightShockJustDown()) { + NewWeatherType = (NewWeatherType + 1) % WEATHER_TOTAL; + OldWeatherType = NewWeatherType; + } + + // Lightning + if (NewWeatherType != WEATHER_RAINY || OldWeatherType != WEATHER_RAINY) { + LightningFlash = false; + LightningBurst = false; + } + else{ + if (LightningBurst) { + if ((CGeneral::GetRandomNumber() & 255) >= 32) { + // 0.875 probability + if (CTimer::GetTimeInMilliseconds() - LightningFlashLastChange > MIN_TIME_BETWEEN_LIGHTNING_FLASH_CHANGES) { + bool bOldLightningFlash = LightningFlash; + LightningFlash = CGeneral::GetRandomTrueFalse(); + if (LightningFlash != bOldLightningFlash) + LightningFlashLastChange = CTimer::GetTimeInMilliseconds(); + } + } + else { + // 0.125 probability + LightningBurst = false; + LightningDuration = min(CTimer::GetFrameCounter() - LightningStart, 20); + LightningFlash = false; + WhenToPlayLightningSound = CTimer::GetTimeInMilliseconds() + 150 * (20 - LightningDuration); + } + } + else { + if (CGeneral::GetRandomNumber() >= 200) { + // lower probability on PC due to randomness bug + LightningFlash = false; + } + else { + LightningBurst = true; + LightningStart = CTimer::GetFrameCounter(); + LightningFlashLastChange = CTimer::GetTimeInMilliseconds(); + LightningFlash = true; + } + } + } + if (WhenToPlayLightningSound && CTimer::GetTimeInMilliseconds() > WhenToPlayLightningSound) { + DMAudio.PlayOneShot(SoundHandle, SOUND_LIGHTNING, LightningDuration); + CPad::GetPad(0)->StartShake(40 * LightningDuration + 100, 2 * LightningDuration + 80); + WhenToPlayLightningSound = 0; + } + + // Wet roads + if (OldWeatherType == WEATHER_RAINY) { + if (NewWeatherType == WEATHER_RAINY) + WetRoads = 1.0f; + else + WetRoads = 1.0f - InterpolationValue; + } + else { + if (NewWeatherType == WEATHER_RAINY) + WetRoads = InterpolationValue; + else + WetRoads = 0.0f; + } + + // Rain + float fNewRain; + if (NewWeatherType == WEATHER_RAINY) { + // if raining for >1 hour, values: 0, 0.33, 0.66, 0.99, switching every ~16.5s + fNewRain = ((uint16)CTimer::GetTimeInMilliseconds() >> 14) * 0.33f; + if (OldWeatherType != WEATHER_RAINY) { + if (InterpolationValue < 0.4f) + // if rain has just started (<24 minutes), always 0.5 + fNewRain = 0.5f; + else + // if rain is ongoing for >24 minutes, values: 0.25, 0.5, 0.75, 1.0, switching every ~16.5s + fNewRain = 0.25f + ((uint16)CTimer::GetTimeInMilliseconds() >> 14) * 0.25f; + } + } + else + fNewRain = 0.0f; + if (Rain != fNewRain) { // ok to use comparasion + if (Rain > fNewRain) + Rain = min(fNewRain, Rain + RAIN_CHANGE_SPEED * CTimer::GetTimeStep()); + else + Rain = max(fNewRain, Rain - RAIN_CHANGE_SPEED * CTimer::GetTimeStep()); + } + + // Clouds + if (OldWeatherType != WEATHER_SUNNY) + CloudCoverage = 1.0f - InterpolationValue; + else + CloudCoverage = 0.0f; + if (NewWeatherType != WEATHER_SUNNY) + CloudCoverage += InterpolationValue; + + // Fog + if (OldWeatherType == WEATHER_FOGGY) + Foggyness = 1.0f - InterpolationValue; + else + Foggyness = 0.0f; + if (NewWeatherType == WEATHER_FOGGY) + Foggyness += InterpolationValue; + if (OldWeatherType == WEATHER_RAINY && NewWeatherType == WEATHER_SUNNY && InterpolationValue < 0.5f && CClock::GetHours() > 6 && CClock::GetHours() < 21) + Rainbow = 1.0f - 4.0f * Abs(InterpolationValue - 0.25f) / 4.0f; + else + Rainbow = 0.0f; + Wind = InterpolationValue * Windiness[NewWeatherType] + (1.0f - InterpolationValue) * Windiness[OldWeatherType]; + AddRain(); } void CWeather::ForceWeather(int16 weather) @@ -53,6 +251,267 @@ void CWeather::ForceWeatherNow(int16 weather) ForcedWeatherType = weather; } +void CWeather::ReleaseWeather() +{ + ForcedWeatherType = -1; +} + +void CWeather::AddRain() +{ + if (CCullZones::CamNoRain() || CCullZones::PlayerNoRain()) + return; + if (TheCamera.GetLookingLRBFirstPerson()) { + CVehicle* pVehicle = FindPlayerVehicle(); + if (pVehicle && pVehicle->CarHasRoof()) { + CParticle::RemovePSystem(PARTICLE_RAINDROP_2D); + return; + } + } + if (Rain <= 0.1f) + return; + static RwRGBA colour; + float screen_width = RsGlobal.width; + float screen_height = RsGlobal.height; + int cur_frame = (int)(3 * Rain) & 3; + int num_drops = (int)(2 * Rain) + 2; + static int STATIC_RAIN_ANGLE = -45; + static int count = 1500; + static int add_angle = 1; + if (--count == 0) { + count = 1; + if (add_angle) { + STATIC_RAIN_ANGLE += 12; + if (STATIC_RAIN_ANGLE > 45) { + count = 1500; + add_angle = !add_angle; + } + } + else { + STATIC_RAIN_ANGLE -= 12; + if (STATIC_RAIN_ANGLE < -45) { + count = 1500; + add_angle = !add_angle; + } + } + } + float rain_angle = DEGTORAD(STATIC_RAIN_ANGLE + ((STATIC_RAIN_ANGLE < 0) ? 360 : 0)); + float sin_angle = Sin(rain_angle); + float cos_angle = Cos(rain_angle); + float base_x = 0.0f * sin_angle - 1.0f * cos_angle; + float base_y = 1.0f * sin_angle + 0.0f * cos_angle; + CVector xpos(0.0f, 0.0f, 0.0f); + for (int i = 0; i < 2 * num_drops; i++) { + CVector dir; + dir.x = (CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) + base_x) * CGeneral::GetRandomNumberInRange(10.0f, 25.0f); + dir.y = (CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) + base_y) * CGeneral::GetRandomNumberInRange(10.0f, 25.0f); + dir.z = 0; + CParticle::AddParticle(PARTICLE_RAINDROP_2D, xpos, dir, nil, CGeneral::GetRandomNumberInRange(0.5f, 0.9f), + colour, 0, rain_angle + CGeneral::GetRandomNumberInRange(0, 20) - 10, cur_frame); + xpos.x += screen_width / (2 * num_drops); + xpos.x += CGeneral::GetRandomNumberInRange(-25.0f, 25.0f); + } + CVector ypos(0.0f, 0.0f, 0.0f); + for (int i = 0; i < num_drops; i++) { + CVector dir; + dir.x = (CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) + base_x) * CGeneral::GetRandomNumberInRange(10.0f, 25.0f); + dir.y = (CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) + base_y) * CGeneral::GetRandomNumberInRange(10.0f, 25.0f); + dir.z = 0; + CParticle::AddParticle(PARTICLE_RAINDROP_2D, ypos, dir, nil, CGeneral::GetRandomNumberInRange(0.5f, 0.9f), + colour, 0, rain_angle + CGeneral::GetRandomNumberInRange(0, 20) - 10, cur_frame); + ypos.y += screen_width / num_drops; + ypos.y += CGeneral::GetRandomNumberInRange(-25.0f, 25.0f); + } + CVector ypos2(0.0f, 0.0f, 0.0f); + for (int i = 0; i < num_drops; i++) { + CVector dir; + dir.x = (CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) + base_x) * CGeneral::GetRandomNumberInRange(10.0f, 25.0f); + dir.y = (CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) + base_y) * CGeneral::GetRandomNumberInRange(10.0f, 25.0f); + dir.z = 0; + CParticle::AddParticle(PARTICLE_RAINDROP_2D, ypos2, dir, nil, CGeneral::GetRandomNumberInRange(0.5f, 0.9f), + colour, 0, rain_angle + CGeneral::GetRandomNumberInRange(0, 20) - 10, cur_frame); + ypos2.y += screen_width / num_drops; + ypos2.y += CGeneral::GetRandomNumberInRange(-25.0f, 25.0f); + } + for (int i = 0; i < num_drops; i++) { + CVector pos; + pos.x = CGeneral::GetRandomNumberInRange(DROPLETS_LEFT_OFFSET, screen_width - DROPLETS_RIGHT_OFFSET); + pos.y = CGeneral::GetRandomNumberInRange(DROPLETS_TOP_OFFSET, screen_height - DROPLETS_TOP_OFFSET); + pos.z = 0.0f; + CParticle::AddParticle(PARTICLE_RAINDROP_2D, pos, CVector(0.0f, 0.0f, 0.0f), nil, CGeneral::GetRandomNumberInRange(0.5f, 0.9f), + colour, CGeneral::GetRandomNumberInRange(0.0f, 20.0f) - 10, 360 - rain_angle + CGeneral::GetRandomNumberInRange(0.0f, 60.0f) - 30, cur_frame, 0); + } + int num_splash_attempts = (int)(3 * Rain) + 1; + int num_splashes = (int)(3 * Rain) + 4; + CVector splash_points[4]; + splash_points[0] = CVector(-RwCameraGetViewWindow(TheCamera.m_pRwCamera)->x, RwCameraGetViewWindow(TheCamera.m_pRwCamera)->y, 1.0f) * + RwCameraGetFarClipPlane(TheCamera.m_pRwCamera) / (RwCameraGetFarClipPlane(TheCamera.m_pRwCamera) * *(CVector2D*)RwCameraGetViewWindow(TheCamera.m_pRwCamera)).Magnitude(); + splash_points[1] = CVector(RwCameraGetViewWindow(TheCamera.m_pRwCamera)->x, RwCameraGetViewWindow(TheCamera.m_pRwCamera)->y, 1.0f) * + RwCameraGetFarClipPlane(TheCamera.m_pRwCamera) / (RwCameraGetFarClipPlane(TheCamera.m_pRwCamera) * *(CVector2D*)RwCameraGetViewWindow(TheCamera.m_pRwCamera)).Magnitude(); + splash_points[2] = 4.0f * CVector(-RwCameraGetViewWindow(TheCamera.m_pRwCamera)->x, RwCameraGetViewWindow(TheCamera.m_pRwCamera)->y, 1.0f) * + RwCameraGetFarClipPlane(TheCamera.m_pRwCamera) / (RwCameraGetFarClipPlane(TheCamera.m_pRwCamera) * *(CVector2D*)RwCameraGetViewWindow(TheCamera.m_pRwCamera)).Magnitude(); + splash_points[3] = 4.0f * CVector(RwCameraGetViewWindow(TheCamera.m_pRwCamera)->x, RwCameraGetViewWindow(TheCamera.m_pRwCamera)->y, 1.0f) * + RwCameraGetFarClipPlane(TheCamera.m_pRwCamera) / (RwCameraGetFarClipPlane(TheCamera.m_pRwCamera) * *(CVector2D*)RwCameraGetViewWindow(TheCamera.m_pRwCamera)).Magnitude(); + RwV3dTransformPoints((RwV3d*)splash_points, (RwV3d*)splash_points, 4, RwFrameGetMatrix(RwCameraGetFrame(TheCamera.m_pRwCamera))); + CVector fp = (splash_points[0] + splash_points[1] + splash_points[2] + splash_points[3]) / 4; + for (int i = 0; i < num_splash_attempts; i++) { + CColPoint point; + CEntity* entity; + if (CWorld::ProcessVerticalLine(fp + CVector(CGeneral::GetRandomNumberInRange(-7.0f, 7.0f), CGeneral::GetRandomNumberInRange(-7.0f, 7.0f), 0.0f) + CVector(0.0f, 0.0f, 40.0f), -40.0f, + point, entity, true, false, false, false, true, false, nil)) { + for (int j = 0; j < num_splashes; j++) + CParticle::AddParticle((CGeneral::GetRandomTrueFalse() ? PARTICLE_RAIN_SPLASH : PARTICLE_RAIN_SPLASHUP), + CVector(fp.x + CGeneral::GetRandomNumberInRange(-2.0f, 2.0f), fp.y + CGeneral::GetRandomNumberInRange(-2.0f, 2.0f), point.point.z + 1.0f), + CVector(0.0f, 0.0f, 0.0f), nil, 0.0f, colour); + } + } +} + +WRAPPER void RenderOneRainStreak(CVector pos, CVector unused, int intensity, bool scale, float distance) { EAXJMP(0x5240E0); } +/* +void RenderOneRainStreak(CVector pos, CVector unused, int intensity, bool scale, float distance) +{ + static float RandomTex; + static float RandomTexX; + static float RandomTexY; + TempBufferRenderIndexList[TempBufferIndicesStored + 0] = TempBufferVerticesStored + 0; + TempBufferRenderIndexList[TempBufferIndicesStored + 1] = TempBufferVerticesStored + 2; + TempBufferRenderIndexList[TempBufferIndicesStored + 2] = TempBufferVerticesStored + 1; + TempBufferRenderIndexList[TempBufferIndicesStored + 3] = TempBufferVerticesStored + 0; + TempBufferRenderIndexList[TempBufferIndicesStored + 4] = TempBufferVerticesStored + 3; + TempBufferRenderIndexList[TempBufferIndicesStored + 5] = TempBufferVerticesStored + 2; + TempBufferRenderIndexList[TempBufferIndicesStored + 6] = TempBufferVerticesStored + 1; + TempBufferRenderIndexList[TempBufferIndicesStored + 7] = TempBufferVerticesStored + 2; + TempBufferRenderIndexList[TempBufferIndicesStored + 8] = TempBufferVerticesStored + 4; + TempBufferRenderIndexList[TempBufferIndicesStored + 9] = TempBufferVerticesStored + 2; + TempBufferRenderIndexList[TempBufferIndicesStored + 10] = TempBufferVerticesStored + 3; + TempBufferRenderIndexList[TempBufferIndicesStored + 11] = TempBufferVerticesStored + 4; + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 0], 0, 0, 0, 0); + RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 0], pos.x + TheCamera.GetUp().x, pos.y + TheCamera.GetUp().y, pos.z + TheCamera.GetUp().z); + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 1], 0, 0, 0, 0); + RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 1], pos.x - TheCamera.GetUp().x, pos.y - TheCamera.GetUp().y, pos.z - TheCamera.GetUp().z); + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 2], 200 * intensity / 256, 200 * intensity / 256, intensity, 255); + RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 2], pos.x, pos.y, pos.z); + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 3], 0, 0, 0, 0); + RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 3], pos.x + 9.0f * TheCamera.GetRight().x, pos.y + 9.0f * TheCamera.GetRight().y, pos.z + 9.0f * TheCamera.GetUp().z); + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 4], 0, 0, 0, 0); + RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 4], pos.x - 11.0f * TheCamera.GetRight().x, pos.y - 11.0f * TheCamera.GetRight().y, pos.z - 11.0f * TheCamera.GetUp().z); + float u = STREAK_U; + float v = STREAK_V; + if (scale) { + u *= LARGE_STREAK_COEFFICIENT; + v *= LARGE_STREAK_COEFFICIENT; + } + float distance_coefficient; + if (distance < STREAK_MIN_DISTANCE) + distance_coefficient = 1.0f; + else if (distance > STREAK_MAX_DISTANCE) + distance_coefficient = 0.5f; + else + distance_coefficient = 1.0f - 0.5f * (distance - STREAK_MIN_DISTANCE) / (STREAK_MAX_DISTANCE - STREAK_MIN_DISTANCE); + u *= distance_coefficient; + v *= distance_coefficient; + if (!CTimer::GetIsPaused()) { + RandomTex = ((CGeneral::GetRandomNumber() & 255) - 128) * 0.01f; + RandomTexX = (CGeneral::GetRandomNumber() & 127) * 0.01f; + RandomTexY = (CGeneral::GetRandomNumber() & 127) * 0.01f; + } + RwIm3DVertexSetU(&TempBufferRenderVertices[TempBufferVerticesStored + 0], 0.5f * u - RandomTex + RandomTexX); + RwIm3DVertexSetV(&TempBufferRenderVertices[TempBufferVerticesStored + 0], -v * 0.5f + RandomTexY); + RwIm3DVertexSetU(&TempBufferRenderVertices[TempBufferVerticesStored + 1], RandomTexX); + RwIm3DVertexSetV(&TempBufferRenderVertices[TempBufferVerticesStored + 1], RandomTexY); + RwIm3DVertexSetU(&TempBufferRenderVertices[TempBufferVerticesStored + 2], 0.5f * u + RandomTexX); + RwIm3DVertexSetV(&TempBufferRenderVertices[TempBufferVerticesStored + 2], RandomTexY); + RwIm3DVertexSetU(&TempBufferRenderVertices[TempBufferVerticesStored + 3], u + RandomTexX); + RwIm3DVertexSetV(&TempBufferRenderVertices[TempBufferVerticesStored + 3], RandomTexY); + RwIm3DVertexSetU(&TempBufferRenderVertices[TempBufferVerticesStored + 4], 0.5f * u + RandomTex + RandomTexX); + RwIm3DVertexSetV(&TempBufferRenderVertices[TempBufferVerticesStored + 5], 0.5f * v - RandomTexY); + TempBufferIndicesStored += 12; + TempBufferVerticesStored += 5; +} +*/ + + +WRAPPER void CWeather::RenderRainStreaks(void) { EAXJMP(0x524550); } +/* +void CWeather::RenderRainStreaks(void) +{ + if (CTimer::GetIsCodePaused()) + return; + int default_visibility = (64.0f - CTimeCycle::GetFogReduction()) / 64.0f * int(255 * Rain); + if (!default_visibility) + return; + TempBufferIndicesStored = 0; + TempBufferVerticesStored = 0; + for (int i = 0; i < NUM_RAIN_STREAKS; i++) { + if (Streaks[i].timer) { + float secondsElapsed = (CTimer::GetTimeInMilliseconds() - Streaks[i].timer) / 1024.0f; + if (secondsElapsed > STREAK_LIFETIME) + Streaks[i].timer = 0; + else{ + int intensity; + if (secondsElapsed < STREAK_INTEROLATION_TIME) { + intensity = default_visibility * 0.5f * secondsElapsed / STREAK_INTEROLATION_TIME; + } + else if (secondsElapsed > STREAK_LIFETIME - STREAK_INTEROLATION_TIME) { + intensity = (STREAK_LIFETIME - secondsElapsed) * default_visibility / STREAK_INTEROLATION_TIME; + } + else { + intensity = default_visibility; + } + CVector dir = Streaks[i].direction; + dir.Normalise(); + CVector pos = Streaks[i].direction + secondsElapsed * Streaks[i].direction; + RenderOneRainStreak(pos, dir, intensity, false, (pos - TheCamera.GetPosition()).Magnitude()); +#ifndef FIX_BUGS // remove useless code + if (secondsElapsed > 1.0f && secondsElapsed < STREAK_LIFETIME - 1.0f) { + CGeneral::GetRandomNumber(), CGeneral::GetRandomNumber(); + } +#endif + } + } + else if ((CGeneral::GetRandomNumber() & 0xF00) == 0){ + // 1/16 probability + Streaks[i].direction = CVector(4.0f, 4.0f, -4.0f); + Streaks[i].position = 6.0f * TheCamera.GetForward() + TheCamera.GetPosition(); + Streaks[i].position += CVector(-1.8f * Streaks[i].direction.x, -1.8f * Streaks[i].direction.y, 8.0f); + if (!CCutsceneMgr::IsCutsceneProcessing()) { + Streaks[i].position.x += 2.0f * FindPlayerSpeed().x * 60.0f; + Streaks[i].position.y += 2.0f * FindPlayerSpeed().y * 60.0f; + } + else + Streaks[i].position += (TheCamera.GetPosition() - TheCamera.m_RealPreviousCameraPosition) * 20.0f; + Streaks[i].position.x += ((CGeneral::GetRandomNumber() & 255) - 128) * 0.08f; + Streaks[i].position.y += ((CGeneral::GetRandomNumber() & 255) - 128) * 0.08f; + Streaks[i].timer = CTimer::GetTimeInMilliseconds(); + } + } + if (TempBufferIndicesStored) + { + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, 0); + RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)1); + RwRenderStateSet(rwRENDERSTATEFOGENABLE, 0); + RwRenderStateSet(rwRENDERSTATEFOGTYPE, (void*)1); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)2); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)2); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)1); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, gpRainDropTex[3]->raster); + if (RwIm3DTransform(TempBufferRenderVertices, TempBufferVerticesStored, 0, 1)) + { + RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, TempBufferRenderIndexList, TempBufferIndicesStored); + RwIm3DEnd(); + } + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)1); + RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)1); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)5); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)6); + RwRenderStateSet(rwRENDERSTATEFOGENABLE, 0); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, 0); + } + TempBufferVerticesStored = 0; + TempBufferIndicesStored = 0; +} +*/ + void CWeather::StoreWeatherState() { Stored_StateStored = true; @@ -71,4 +530,4 @@ void CWeather::RestoreWeatherState() Rain = Stored_Rain; NewWeatherType = Stored_NewWeatherType; OldWeatherType = Stored_OldWeatherType; -} \ No newline at end of file +} diff --git a/src/render/Weather.h b/src/render/Weather.h index 63def9b9..9e4ea378 100644 --- a/src/render/Weather.h +++ b/src/render/Weather.h @@ -8,6 +8,14 @@ enum { class CWeather { public: + enum { + WEATHER_RANDOM = -1, + WEATHER_SUNNY = 0, + WEATHER_CLOUDY = 1, + WEATHER_RAINY = 2, + WEATHER_FOGGY = 3, + WEATHER_TOTAL = 4 + }; static int32 &SoundHandle; static int32 &WeatherTypeInList; @@ -46,4 +54,18 @@ public: static void ForceWeatherNow(int16); static void StoreWeatherState(); static void RestoreWeatherState(); + static void AddRain(); }; + +enum { + NUM_RAIN_STREAKS = 35 +}; + +struct tRainStreak +{ + CVector position; + CVector direction; + uint32 timer; +}; + +extern RwTexture* (&gpRainDropTex)[4]; \ No newline at end of file From e556ffd3f650d6dea89b79abc6cdb3400cb6eb50 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 8 Apr 2020 01:52:08 +0300 Subject: [PATCH 023/112] fixes --- src/core/re3.cpp | 2 +- src/render/Weather.cpp | 42 +++++++++++++++++------------------------- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 6d4ff252..6eae8685 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -458,7 +458,7 @@ void re3_debug(const char *format, ...) vsprintf_s(re3_buff, re3_buffsize, format, va); va_end(va); -// printf("%s", re3_buff); + printf("%s", re3_buff); CDebug::DebugAddText(re3_buff); } diff --git a/src/render/Weather.cpp b/src/render/Weather.cpp index cb19f6cf..73807d5c 100644 --- a/src/render/Weather.cpp +++ b/src/render/Weather.cpp @@ -211,9 +211,9 @@ void CWeather::Update(void) fNewRain = 0.0f; if (Rain != fNewRain) { // ok to use comparasion if (Rain > fNewRain) - Rain = min(fNewRain, Rain + RAIN_CHANGE_SPEED * CTimer::GetTimeStep()); + Rain = max(fNewRain, Rain + RAIN_CHANGE_SPEED * CTimer::GetTimeStep()); else - Rain = max(fNewRain, Rain - RAIN_CHANGE_SPEED * CTimer::GetTimeStep()); + Rain = min(fNewRain, Rain - RAIN_CHANGE_SPEED * CTimer::GetTimeStep()); } // Clouds @@ -356,18 +356,16 @@ void CWeather::AddRain() for (int i = 0; i < num_splash_attempts; i++) { CColPoint point; CEntity* entity; - if (CWorld::ProcessVerticalLine(fp + CVector(CGeneral::GetRandomNumberInRange(-7.0f, 7.0f), CGeneral::GetRandomNumberInRange(-7.0f, 7.0f), 0.0f) + CVector(0.0f, 0.0f, 40.0f), -40.0f, - point, entity, true, false, false, false, true, false, nil)) { + CVector np = fp + CVector(CGeneral::GetRandomNumberInRange(-7.0f, 7.0f), CGeneral::GetRandomNumberInRange(-7.0f, 7.0f), 0.0f); + if (CWorld::ProcessVerticalLine(np + CVector(0.0f, 0.0f, 40.0f), -40.0f, point, entity, true, false, false, false, true, false, nil)) { for (int j = 0; j < num_splashes; j++) CParticle::AddParticle((CGeneral::GetRandomTrueFalse() ? PARTICLE_RAIN_SPLASH : PARTICLE_RAIN_SPLASHUP), - CVector(fp.x + CGeneral::GetRandomNumberInRange(-2.0f, 2.0f), fp.y + CGeneral::GetRandomNumberInRange(-2.0f, 2.0f), point.point.z + 1.0f), + CVector(np.x + CGeneral::GetRandomNumberInRange(-2.0f, 2.0f), np.y + CGeneral::GetRandomNumberInRange(-2.0f, 2.0f), point.point.z + 0.1f), CVector(0.0f, 0.0f, 0.0f), nil, 0.0f, colour); } } } -WRAPPER void RenderOneRainStreak(CVector pos, CVector unused, int intensity, bool scale, float distance) { EAXJMP(0x5240E0); } -/* void RenderOneRainStreak(CVector pos, CVector unused, int intensity, bool scale, float distance) { static float RandomTex; @@ -386,15 +384,15 @@ void RenderOneRainStreak(CVector pos, CVector unused, int intensity, bool scale, TempBufferRenderIndexList[TempBufferIndicesStored + 10] = TempBufferVerticesStored + 3; TempBufferRenderIndexList[TempBufferIndicesStored + 11] = TempBufferVerticesStored + 4; RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 0], 0, 0, 0, 0); - RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 0], pos.x + TheCamera.GetUp().x, pos.y + TheCamera.GetUp().y, pos.z + TheCamera.GetUp().z); + RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 0], pos.x + 11.0f * TheCamera.GetUp().x, pos.y + 11.0f * TheCamera.GetUp().y, pos.z + 11.0f * TheCamera.GetUp().z); RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 1], 0, 0, 0, 0); - RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 1], pos.x - TheCamera.GetUp().x, pos.y - TheCamera.GetUp().y, pos.z - TheCamera.GetUp().z); + RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 1], pos.x - 9.0f * TheCamera.GetRight().x, pos.y - 9.0f * TheCamera.GetRight().y, pos.z - 9.0f * TheCamera.GetUp().z); RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 2], 200 * intensity / 256, 200 * intensity / 256, intensity, 255); RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 2], pos.x, pos.y, pos.z); RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 3], 0, 0, 0, 0); RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 3], pos.x + 9.0f * TheCamera.GetRight().x, pos.y + 9.0f * TheCamera.GetRight().y, pos.z + 9.0f * TheCamera.GetUp().z); - RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 4], 0, 0, 0, 0); - RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 4], pos.x - 11.0f * TheCamera.GetRight().x, pos.y - 11.0f * TheCamera.GetRight().y, pos.z - 11.0f * TheCamera.GetUp().z); + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 4], 0, 0, 0, 0); + RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 4], pos.x - 11.0f * TheCamera.GetUp().x, pos.y - 11.0f * TheCamera.GetUp().y, pos.z - 11.0f * TheCamera.GetUp().z); float u = STREAK_U; float v = STREAK_V; if (scale) { @@ -424,21 +422,17 @@ void RenderOneRainStreak(CVector pos, CVector unused, int intensity, bool scale, RwIm3DVertexSetU(&TempBufferRenderVertices[TempBufferVerticesStored + 3], u + RandomTexX); RwIm3DVertexSetV(&TempBufferRenderVertices[TempBufferVerticesStored + 3], RandomTexY); RwIm3DVertexSetU(&TempBufferRenderVertices[TempBufferVerticesStored + 4], 0.5f * u + RandomTex + RandomTexX); - RwIm3DVertexSetV(&TempBufferRenderVertices[TempBufferVerticesStored + 5], 0.5f * v - RandomTexY); + RwIm3DVertexSetV(&TempBufferRenderVertices[TempBufferVerticesStored + 5], 0.5f * v + RandomTexY); TempBufferIndicesStored += 12; TempBufferVerticesStored += 5; } -*/ - -WRAPPER void CWeather::RenderRainStreaks(void) { EAXJMP(0x524550); } -/* void CWeather::RenderRainStreaks(void) { if (CTimer::GetIsCodePaused()) return; int default_visibility = (64.0f - CTimeCycle::GetFogReduction()) / 64.0f * int(255 * Rain); - if (!default_visibility) + if (default_visibility == 0) return; TempBufferIndicesStored = 0; TempBufferVerticesStored = 0; @@ -452,15 +446,16 @@ void CWeather::RenderRainStreaks(void) if (secondsElapsed < STREAK_INTEROLATION_TIME) { intensity = default_visibility * 0.5f * secondsElapsed / STREAK_INTEROLATION_TIME; } - else if (secondsElapsed > STREAK_LIFETIME - STREAK_INTEROLATION_TIME) { + else if (secondsElapsed > (STREAK_LIFETIME - STREAK_INTEROLATION_TIME)) { intensity = (STREAK_LIFETIME - secondsElapsed) * default_visibility / STREAK_INTEROLATION_TIME; } else { intensity = default_visibility; } + debug("intensity: %d\n", intensity); CVector dir = Streaks[i].direction; dir.Normalise(); - CVector pos = Streaks[i].direction + secondsElapsed * Streaks[i].direction; + CVector pos = Streaks[i].position + secondsElapsed * Streaks[i].direction; RenderOneRainStreak(pos, dir, intensity, false, (pos - TheCamera.GetPosition()).Magnitude()); #ifndef FIX_BUGS // remove useless code if (secondsElapsed > 1.0f && secondsElapsed < STREAK_LIFETIME - 1.0f) { @@ -472,8 +467,7 @@ void CWeather::RenderRainStreaks(void) else if ((CGeneral::GetRandomNumber() & 0xF00) == 0){ // 1/16 probability Streaks[i].direction = CVector(4.0f, 4.0f, -4.0f); - Streaks[i].position = 6.0f * TheCamera.GetForward() + TheCamera.GetPosition(); - Streaks[i].position += CVector(-1.8f * Streaks[i].direction.x, -1.8f * Streaks[i].direction.y, 8.0f); + Streaks[i].position = 6.0f * TheCamera.GetForward() + TheCamera.GetPosition() + CVector(-1.8f * Streaks[i].direction.x, -1.8f * Streaks[i].direction.y, 8.0f); if (!CCutsceneMgr::IsCutsceneProcessing()) { Streaks[i].position.x += 2.0f * FindPlayerSpeed().x * 60.0f; Streaks[i].position.y += 2.0f * FindPlayerSpeed().y * 60.0f; @@ -485,8 +479,7 @@ void CWeather::RenderRainStreaks(void) Streaks[i].timer = CTimer::GetTimeInMilliseconds(); } } - if (TempBufferIndicesStored) - { + if (TempBufferIndicesStored){ RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, 0); RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)1); RwRenderStateSet(rwRENDERSTATEFOGENABLE, 0); @@ -495,7 +488,7 @@ void CWeather::RenderRainStreaks(void) RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)2); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)1); RwRenderStateSet(rwRENDERSTATETEXTURERASTER, gpRainDropTex[3]->raster); - if (RwIm3DTransform(TempBufferRenderVertices, TempBufferVerticesStored, 0, 1)) + if (RwIm3DTransform(TempBufferRenderVertices, TempBufferVerticesStored, nil, 1)) { RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, TempBufferRenderIndexList, TempBufferIndicesStored); RwIm3DEnd(); @@ -510,7 +503,6 @@ void CWeather::RenderRainStreaks(void) TempBufferVerticesStored = 0; TempBufferIndicesStored = 0; } -*/ void CWeather::StoreWeatherState() { From 560fc655388ac8cc017b4127e9444fc8702ffd45 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 8 Apr 2020 09:58:08 +0300 Subject: [PATCH 024/112] Small camera fixes --- src/control/Replay.cpp | 2 +- src/core/Cam.cpp | 16 ++++---- src/core/Camera.cpp | 86 +++++++++++++++++++++--------------------- src/core/Camera.h | 23 ++++++++--- 4 files changed, 68 insertions(+), 59 deletions(-) diff --git a/src/control/Replay.cpp b/src/control/Replay.cpp index 2e325249..b8e2318d 100644 --- a/src/control/Replay.cpp +++ b/src/control/Replay.cpp @@ -1107,7 +1107,7 @@ void CReplay::TriggerPlayback(uint8 cam_mode, float cam_x, float cam_y, float ca CStreaming::LoadScene(ff_coord); } if (cam_mode == REPLAYCAMMODE_ASSTORED) - TheCamera.CarZoomIndicator = 5.0f; + TheCamera.CarZoomIndicator = CAM_ZOOM_CINEMATIC; } void CReplay::StoreStuffInMem(void) diff --git a/src/core/Cam.cpp b/src/core/Cam.cpp index 5b7a53e9..dc9ef74f 100644 --- a/src/core/Cam.cpp +++ b/src/core/Cam.cpp @@ -4672,15 +4672,15 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation, else { switch ((int)TheCamera.CarZoomIndicator) { // near - case 1: + case CAM_ZOOM_1: zoomModeAlphaOffset = ZmOneAlphaOffsetLCS[alphaArrPos]; break; // mid - case 2: + case CAM_ZOOM_2: zoomModeAlphaOffset = ZmTwoAlphaOffsetLCS[alphaArrPos]; break; // far - case 3: + case CAM_ZOOM_3: zoomModeAlphaOffset = ZmThreeAlphaOffsetLCS[alphaArrPos]; break; default: @@ -4705,14 +4705,12 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation, } } else { // 0.6f = fTestShiftHeliCamTarget - TargetCoors.x += 0.6f * car->GetUp().x * colMaxZ; - TargetCoors.y += 0.6f * car->GetUp().y * colMaxZ; - TargetCoors.z += 0.6f * car->GetUp().z * colMaxZ; + TargetCoors += 0.6f * car->GetUp() * colMaxZ; } float minDistForVehType = CARCAM_SET[camSetArrPos][4]; - if ((int)TheCamera.CarZoomIndicator == 1 && (camSetArrPos < 2 || camSetArrPos == 7)) { + if (TheCamera.CarZoomIndicator == CAM_ZOOM_1 && (camSetArrPos < 2 || camSetArrPos == 7)) { minDistForVehType = minDistForVehType * 0.65f; } @@ -4904,8 +4902,8 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation, // yMovement = 0.0; if (!nextDirectionIsForward) { - yMovement = 0.0; - xMovement = 0.0; + yMovement = 0.0f; + xMovement = 0.0f; } if (camSetArrPos == 0 || camSetArrPos == 7) { diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index 9d927354..46c17cd2 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -65,8 +65,8 @@ bool &bDidWeProcessAnyCinemaCam = *(bool*)0x95CD46; #define KEYJUSTDOWN(k) ControlsManager.GetIsKeyboardKeyJustDown((RsKeyCodes)k) #define KEYDOWN(k) ControlsManager.GetIsKeyboardKeyDown((RsKeyCodes)k) #define CTRLJUSTDOWN(key) \ - ((KEYDOWN(rsLCTRL) || KEYDOWN(rsRCTRL)) && KEYJUSTDOWN((RsKeyCodes)key) || \ - (KEYJUSTDOWN(rsLCTRL) || KEYJUSTDOWN(rsRCTRL)) && KEYDOWN((RsKeyCodes)key)) + ((KEYDOWN(rsLCTRL) || KEYDOWN(rsRCTRL)) && KEYJUSTDOWN((RsKeyCodes)key) || \ + (KEYJUSTDOWN(rsLCTRL) || KEYJUSTDOWN(rsRCTRL)) && KEYDOWN((RsKeyCodes)key)) #define CTRLDOWN(key) ((KEYDOWN(rsLCTRL) || KEYDOWN(rsRCTRL)) && KEYDOWN((RsKeyCodes)key)) #endif @@ -124,8 +124,8 @@ CCamera::Init(void) m_WideScreenOn = false; m_fFOV_Wide_Screen = 0.0f; m_bRestoreByJumpCut = false; - CarZoomIndicator = 2.0f; - PedZoomIndicator = 2.0f; + CarZoomIndicator = CAM_ZOOM_2; + PedZoomIndicator = CAM_ZOOM_2; CarZoomValueSmooth = 0.0f; m_fPedZoomValueSmooth = 0.0f; pTargetEntity = nil; @@ -623,11 +623,11 @@ CCamera::CamControl(void) if(CPad::GetPad(0)->CycleCameraModeUpJustDown() && !CReplay::IsPlayingBack() && (m_bLookingAtPlayer || WhoIsInControlOfTheCamera == CAMCONTROL_OBBE) && !m_WideScreenOn) - CarZoomIndicator -= 1.0f; + CarZoomIndicator--; if(CPad::GetPad(0)->CycleCameraModeDownJustDown() && !CReplay::IsPlayingBack() && (m_bLookingAtPlayer || WhoIsInControlOfTheCamera == CAMCONTROL_OBBE) && !m_WideScreenOn) - CarZoomIndicator += 1.0f; + CarZoomIndicator++; if(!m_bFailedCullZoneTestPreviously){ if(CarZoomIndicator < CAM_ZOOM_1STPRS) CarZoomIndicator = CAM_ZOOM_CINEMATIC; else if(CarZoomIndicator > CAM_ZOOM_CINEMATIC) CarZoomIndicator = CAM_ZOOM_1STPRS; @@ -812,7 +812,7 @@ CCamera::CamControl(void) else PedZoomIndicator = CAM_ZOOM_TOPDOWN; }else - PedZoomIndicator -= 1.0f; + PedZoomIndicator--; } if(CPad::GetPad(0)->CycleCameraModeDownJustDown() && !CReplay::IsPlayingBack() && (m_bLookingAtPlayer || WhoIsInControlOfTheCamera == CAMCONTROL_OBBE) && @@ -823,7 +823,7 @@ CCamera::CamControl(void) else PedZoomIndicator = CAM_ZOOM_TOPDOWN; }else - PedZoomIndicator += 1.0f; + PedZoomIndicator++; } // disabled obbe's cam here if(PedZoomIndicator < CAM_ZOOM_1) PedZoomIndicator = CAM_ZOOM_TOPDOWN; @@ -1223,7 +1223,7 @@ CCamera::CamControl(void) ReqMode == CCam::MODE_1STPERSON_RUNABOUT || ReqMode == CCam::MODE_M16_1STPERSON_RUNABOUT || ReqMode == CCam::MODE_FIGHT_CAM_RUNABOUT || ReqMode == CCam::MODE_HELICANNON_1STPERSON || WhoIsInControlOfTheCamera == CAMCONTROL_SCRIPT || - m_bJustCameOutOfGarage || m_bPlayerIsInGarage) + m_bJustCameOutOfGarage || m_bPlayerIsInGarage) canUseObbeCam = false; if(m_bObbeCinematicPedCamOn && canUseObbeCam) @@ -1468,9 +1468,9 @@ CCamera::CamControl(void) // Ped visibility if((Cams[ActiveCam].Mode == CCam::MODE_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_SNIPER || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER) && pTargetEntity->IsPed() || + Cams[ActiveCam].Mode == CCam::MODE_SNIPER || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER) && pTargetEntity->IsPed() || Cams[ActiveCam].Mode == CCam::MODE_FLYBY) FindPlayerPed()->bIsVisible = false; else @@ -1524,7 +1524,7 @@ CCamera::UpdateTargetEntity(void) cantOpen = false; if(PLAYER->GetPedState() == PED_ENTER_CAR && !cantOpen){ - if(!enteringCar && CarZoomIndicator != 0.0f){ + if(!enteringCar && CarZoomIndicator != CAM_ZOOM_1STPRS){ pTargetEntity = PLAYER->m_pMyVehicle; if(PLAYER->m_pMyVehicle == nil) pTargetEntity = PLAYER; @@ -1532,7 +1532,7 @@ CCamera::UpdateTargetEntity(void) } if((PLAYER->GetPedState() == PED_CARJACK || PLAYER->GetPedState() == PED_OPEN_DOOR) && !cantOpen){ - if(!enteringCar && CarZoomIndicator != 0.0f) + if(!enteringCar && CarZoomIndicator != CAM_ZOOM_1STPRS) #ifdef GTA_PS2_STUFF // dunno if this has any amazing effects { @@ -1549,7 +1549,7 @@ CCamera::UpdateTargetEntity(void) pTargetEntity = FindPlayerPed(); if(PLAYER->GetPedState() == PED_DRAG_FROM_CAR) pTargetEntity = FindPlayerPed(); - if(pTargetEntity->IsVehicle() && CarZoomIndicator != 0.0f && FindPlayerPed()->GetPedState() == PED_ARRESTED) + if(pTargetEntity->IsVehicle() && CarZoomIndicator != CAM_ZOOM_1STPRS && FindPlayerPed()->GetPedState() == PED_ARRESTED) pTargetEntity = FindPlayerPed(); } } @@ -1566,15 +1566,15 @@ CCamera::UpdateSoundDistances(void) int n; if((Cams[ActiveCam].Mode == CCam::MODE_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_SNIPER || - Cams[ActiveCam].Mode == CCam::MODE_SNIPER_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_1STPERSON_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_FIGHT_CAM_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_HELICANNON_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER) && + Cams[ActiveCam].Mode == CCam::MODE_SNIPER || + Cams[ActiveCam].Mode == CCam::MODE_SNIPER_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_1STPERSON_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_FIGHT_CAM_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_HELICANNON_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER) && pTargetEntity->IsPed()) center = GetPosition() + 0.5f*GetForward(); else @@ -1856,14 +1856,14 @@ CCamera::StartTransition(int16 newMode) m_bUseTransitionBeta = false; if((Cams[ActiveCam].Mode == CCam::MODE_SNIPER || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_SNIPER_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_FIGHT_CAM_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_HELICANNON_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_1STPERSON_RUNABOUT) && + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_SNIPER_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_FIGHT_CAM_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_HELICANNON_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_1STPERSON_RUNABOUT) && pTargetEntity->IsPed()){ float angle = CGeneral::GetATanOfXY(Cams[ActiveCam].Front.x, Cams[ActiveCam].Front.y) - HALFPI; ((CPed*)pTargetEntity)->m_fRotationCur = angle; @@ -2184,12 +2184,12 @@ CCamera::DrawBordersForWideScreen(void) CSprite2d::DrawRect( CRect(0.0f, (SCREEN_HEIGHT/2) * m_ScreenReductionPercentage/100.0f - 8.0f, - SCREEN_WIDTH, 0.0f), + SCREEN_WIDTH, 0.0f), CRGBA(0, 0, 0, 255)); CSprite2d::DrawRect( CRect(0.0f, SCREEN_HEIGHT, - SCREEN_WIDTH, SCREEN_HEIGHT - (SCREEN_HEIGHT/2) * m_ScreenReductionPercentage/100.0f - 8.0f), + SCREEN_WIDTH, SCREEN_HEIGHT - (SCREEN_HEIGHT/2) * m_ScreenReductionPercentage/100.0f - 8.0f), CRGBA(0, 0, 0, 255)); } @@ -2631,8 +2631,8 @@ CCamera::ProcessObbeCinemaCameraCar(void) if(!bDidWeProcessAnyCinemaCam || IsItTimeForNewcam(SequenceOfCams[OldMode], TimeForNext)){ // This is very strange code... for(OldMode = (OldMode+1) % 14; - !TryToStartNewCamMode(SequenceOfCams[OldMode]) && i <= 14; - OldMode = (OldMode+1) % 14) + !TryToStartNewCamMode(SequenceOfCams[OldMode]) && i <= 14; + OldMode = (OldMode+1) % 14) i++; TimeForNext = CTimer::GetTimeInMilliseconds(); if(i >= 14){ @@ -2659,8 +2659,8 @@ CCamera::ProcessObbeCinemaCameraPed(void) if(!bDidWeProcessAnyCinemaCam || IsItTimeForNewcam(SequenceOfPedCams[PedOldMode], PedTimeForNext)){ for(PedOldMode = (PedOldMode+1) % 5; - !TryToStartNewCamMode(SequenceOfPedCams[PedOldMode]); - PedOldMode = (PedOldMode+1) % 5); + !TryToStartNewCamMode(SequenceOfPedCams[PedOldMode]); + PedOldMode = (PedOldMode+1) % 5); PedTimeForNext = CTimer::GetTimeInMilliseconds(); } bDidWeProcessAnyCinemaCam = true; @@ -2813,11 +2813,11 @@ CCamera::Process_Train_Camera_Control(void) uint32 node = m_iCurrentTrainCamNode; for(i = 0; i < m_uiNumberOfTrainCamNodes && !found; i++){ if(target->IsWithinArea(m_arrTrainCamNode[node].m_cvecMinPointInRange.x, - m_arrTrainCamNode[node].m_cvecMinPointInRange.y, - m_arrTrainCamNode[node].m_cvecMinPointInRange.z, - m_arrTrainCamNode[node].m_cvecMaxPointInRange.x, - m_arrTrainCamNode[node].m_cvecMaxPointInRange.y, - m_arrTrainCamNode[node].m_cvecMaxPointInRange.z)){ + m_arrTrainCamNode[node].m_cvecMinPointInRange.y, + m_arrTrainCamNode[node].m_cvecMinPointInRange.z, + m_arrTrainCamNode[node].m_cvecMaxPointInRange.x, + m_arrTrainCamNode[node].m_cvecMaxPointInRange.y, + m_arrTrainCamNode[node].m_cvecMaxPointInRange.z)){ m_iCurrentTrainCamNode = node; found = true; } diff --git a/src/core/Camera.h b/src/core/Camera.h index c22ba9c8..eca4518a 100644 --- a/src/core/Camera.h +++ b/src/core/Camera.h @@ -16,12 +16,15 @@ enum }; #define DEFAULT_NEAR (0.9f) -#define CAM_ZOOM_1STPRS (0.0f) -#define CAM_ZOOM_1 (1.0f) -#define CAM_ZOOM_2 (2.0f) -#define CAM_ZOOM_3 (3.0f) -#define CAM_ZOOM_TOPDOWN (4.0f) -#define CAM_ZOOM_CINEMATIC (5.0f) +enum +{ + CAM_ZOOM_1STPRS, + CAM_ZOOM_1, + CAM_ZOOM_2, + CAM_ZOOM_3, + CAM_ZOOM_TOPDOWN, + CAM_ZOOM_CINEMATIC, +}; #ifdef FREE_CAM // LCS values #define FREE_CAR_ZOOM_VALUE_1 (-1.0f) @@ -412,7 +415,11 @@ uint32 unknown; // some counter having to do with music float CamFrontXNorm; float CamFrontYNorm; +#if 0 // TODO: FIX_BUGS once GenericLoad is done + int32 CarZoomIndicator; +#else float CarZoomIndicator; +#endif float CarZoomValue; float CarZoomValueSmooth; @@ -448,7 +455,11 @@ uint32 unknown; // some counter having to do with music float m_ScreenReductionSpeed; float m_AlphaForPlayerAnim1rstPerson; float Orientation; +#if 0 // TODO: FIX_BUGS once GenericLoad is done + int32 PedZoomIndicator; +#else float PedZoomIndicator; +#endif float PlayerExhaustion; float SoundDistUp, SoundDistLeft, SoundDistRight; float SoundDistUpAsRead, SoundDistLeftAsRead, SoundDistRightAsRead; From 7eee938de2fe18dd828347577756ad06594e07e7 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 8 Apr 2020 10:21:40 +0300 Subject: [PATCH 025/112] Reverting tabs back to spaces for aap --- src/core/Camera.cpp | 68 ++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index 46c17cd2..0ffaed1a 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -65,8 +65,8 @@ bool &bDidWeProcessAnyCinemaCam = *(bool*)0x95CD46; #define KEYJUSTDOWN(k) ControlsManager.GetIsKeyboardKeyJustDown((RsKeyCodes)k) #define KEYDOWN(k) ControlsManager.GetIsKeyboardKeyDown((RsKeyCodes)k) #define CTRLJUSTDOWN(key) \ - ((KEYDOWN(rsLCTRL) || KEYDOWN(rsRCTRL)) && KEYJUSTDOWN((RsKeyCodes)key) || \ - (KEYJUSTDOWN(rsLCTRL) || KEYJUSTDOWN(rsRCTRL)) && KEYDOWN((RsKeyCodes)key)) + ((KEYDOWN(rsLCTRL) || KEYDOWN(rsRCTRL)) && KEYJUSTDOWN((RsKeyCodes)key) || \ + (KEYJUSTDOWN(rsLCTRL) || KEYJUSTDOWN(rsRCTRL)) && KEYDOWN((RsKeyCodes)key)) #define CTRLDOWN(key) ((KEYDOWN(rsLCTRL) || KEYDOWN(rsRCTRL)) && KEYDOWN((RsKeyCodes)key)) #endif @@ -1223,7 +1223,7 @@ CCamera::CamControl(void) ReqMode == CCam::MODE_1STPERSON_RUNABOUT || ReqMode == CCam::MODE_M16_1STPERSON_RUNABOUT || ReqMode == CCam::MODE_FIGHT_CAM_RUNABOUT || ReqMode == CCam::MODE_HELICANNON_1STPERSON || WhoIsInControlOfTheCamera == CAMCONTROL_SCRIPT || - m_bJustCameOutOfGarage || m_bPlayerIsInGarage) + m_bJustCameOutOfGarage || m_bPlayerIsInGarage) canUseObbeCam = false; if(m_bObbeCinematicPedCamOn && canUseObbeCam) @@ -1468,9 +1468,9 @@ CCamera::CamControl(void) // Ped visibility if((Cams[ActiveCam].Mode == CCam::MODE_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_SNIPER || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER) && pTargetEntity->IsPed() || + Cams[ActiveCam].Mode == CCam::MODE_SNIPER || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER) && pTargetEntity->IsPed() || Cams[ActiveCam].Mode == CCam::MODE_FLYBY) FindPlayerPed()->bIsVisible = false; else @@ -1566,15 +1566,15 @@ CCamera::UpdateSoundDistances(void) int n; if((Cams[ActiveCam].Mode == CCam::MODE_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_SNIPER || - Cams[ActiveCam].Mode == CCam::MODE_SNIPER_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_1STPERSON_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_FIGHT_CAM_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_HELICANNON_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER) && + Cams[ActiveCam].Mode == CCam::MODE_SNIPER || + Cams[ActiveCam].Mode == CCam::MODE_SNIPER_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_1STPERSON_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_FIGHT_CAM_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_HELICANNON_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER) && pTargetEntity->IsPed()) center = GetPosition() + 0.5f*GetForward(); else @@ -1856,14 +1856,14 @@ CCamera::StartTransition(int16 newMode) m_bUseTransitionBeta = false; if((Cams[ActiveCam].Mode == CCam::MODE_SNIPER || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_SNIPER_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_FIGHT_CAM_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_HELICANNON_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_1STPERSON_RUNABOUT) && + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_SNIPER_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_FIGHT_CAM_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_HELICANNON_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_1STPERSON_RUNABOUT) && pTargetEntity->IsPed()){ float angle = CGeneral::GetATanOfXY(Cams[ActiveCam].Front.x, Cams[ActiveCam].Front.y) - HALFPI; ((CPed*)pTargetEntity)->m_fRotationCur = angle; @@ -2184,12 +2184,12 @@ CCamera::DrawBordersForWideScreen(void) CSprite2d::DrawRect( CRect(0.0f, (SCREEN_HEIGHT/2) * m_ScreenReductionPercentage/100.0f - 8.0f, - SCREEN_WIDTH, 0.0f), + SCREEN_WIDTH, 0.0f), CRGBA(0, 0, 0, 255)); CSprite2d::DrawRect( CRect(0.0f, SCREEN_HEIGHT, - SCREEN_WIDTH, SCREEN_HEIGHT - (SCREEN_HEIGHT/2) * m_ScreenReductionPercentage/100.0f - 8.0f), + SCREEN_WIDTH, SCREEN_HEIGHT - (SCREEN_HEIGHT/2) * m_ScreenReductionPercentage/100.0f - 8.0f), CRGBA(0, 0, 0, 255)); } @@ -2631,8 +2631,8 @@ CCamera::ProcessObbeCinemaCameraCar(void) if(!bDidWeProcessAnyCinemaCam || IsItTimeForNewcam(SequenceOfCams[OldMode], TimeForNext)){ // This is very strange code... for(OldMode = (OldMode+1) % 14; - !TryToStartNewCamMode(SequenceOfCams[OldMode]) && i <= 14; - OldMode = (OldMode+1) % 14) + !TryToStartNewCamMode(SequenceOfCams[OldMode]) && i <= 14; + OldMode = (OldMode+1) % 14) i++; TimeForNext = CTimer::GetTimeInMilliseconds(); if(i >= 14){ @@ -2659,8 +2659,8 @@ CCamera::ProcessObbeCinemaCameraPed(void) if(!bDidWeProcessAnyCinemaCam || IsItTimeForNewcam(SequenceOfPedCams[PedOldMode], PedTimeForNext)){ for(PedOldMode = (PedOldMode+1) % 5; - !TryToStartNewCamMode(SequenceOfPedCams[PedOldMode]); - PedOldMode = (PedOldMode+1) % 5); + !TryToStartNewCamMode(SequenceOfPedCams[PedOldMode]); + PedOldMode = (PedOldMode+1) % 5); PedTimeForNext = CTimer::GetTimeInMilliseconds(); } bDidWeProcessAnyCinemaCam = true; @@ -2813,11 +2813,11 @@ CCamera::Process_Train_Camera_Control(void) uint32 node = m_iCurrentTrainCamNode; for(i = 0; i < m_uiNumberOfTrainCamNodes && !found; i++){ if(target->IsWithinArea(m_arrTrainCamNode[node].m_cvecMinPointInRange.x, - m_arrTrainCamNode[node].m_cvecMinPointInRange.y, - m_arrTrainCamNode[node].m_cvecMinPointInRange.z, - m_arrTrainCamNode[node].m_cvecMaxPointInRange.x, - m_arrTrainCamNode[node].m_cvecMaxPointInRange.y, - m_arrTrainCamNode[node].m_cvecMaxPointInRange.z)){ + m_arrTrainCamNode[node].m_cvecMinPointInRange.y, + m_arrTrainCamNode[node].m_cvecMinPointInRange.z, + m_arrTrainCamNode[node].m_cvecMaxPointInRange.x, + m_arrTrainCamNode[node].m_cvecMaxPointInRange.y, + m_arrTrainCamNode[node].m_cvecMaxPointInRange.z)){ m_iCurrentTrainCamNode = node; found = true; } From 7439d6482ffa8ed7de0a6f3fb8fcc2e11401b97d Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 8 Apr 2020 10:21:40 +0300 Subject: [PATCH 026/112] Reverting tabs back to spaces for aap --- src/core/Camera.cpp | 68 ++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index 46c17cd2..00c838cf 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -65,8 +65,8 @@ bool &bDidWeProcessAnyCinemaCam = *(bool*)0x95CD46; #define KEYJUSTDOWN(k) ControlsManager.GetIsKeyboardKeyJustDown((RsKeyCodes)k) #define KEYDOWN(k) ControlsManager.GetIsKeyboardKeyDown((RsKeyCodes)k) #define CTRLJUSTDOWN(key) \ - ((KEYDOWN(rsLCTRL) || KEYDOWN(rsRCTRL)) && KEYJUSTDOWN((RsKeyCodes)key) || \ - (KEYJUSTDOWN(rsLCTRL) || KEYJUSTDOWN(rsRCTRL)) && KEYDOWN((RsKeyCodes)key)) + ((KEYDOWN(rsLCTRL) || KEYDOWN(rsRCTRL)) && KEYJUSTDOWN((RsKeyCodes)key) || \ + (KEYJUSTDOWN(rsLCTRL) || KEYJUSTDOWN(rsRCTRL)) && KEYDOWN((RsKeyCodes)key)) #define CTRLDOWN(key) ((KEYDOWN(rsLCTRL) || KEYDOWN(rsRCTRL)) && KEYDOWN((RsKeyCodes)key)) #endif @@ -1223,7 +1223,7 @@ CCamera::CamControl(void) ReqMode == CCam::MODE_1STPERSON_RUNABOUT || ReqMode == CCam::MODE_M16_1STPERSON_RUNABOUT || ReqMode == CCam::MODE_FIGHT_CAM_RUNABOUT || ReqMode == CCam::MODE_HELICANNON_1STPERSON || WhoIsInControlOfTheCamera == CAMCONTROL_SCRIPT || - m_bJustCameOutOfGarage || m_bPlayerIsInGarage) + m_bJustCameOutOfGarage || m_bPlayerIsInGarage) canUseObbeCam = false; if(m_bObbeCinematicPedCamOn && canUseObbeCam) @@ -1468,9 +1468,9 @@ CCamera::CamControl(void) // Ped visibility if((Cams[ActiveCam].Mode == CCam::MODE_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_SNIPER || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER) && pTargetEntity->IsPed() || + Cams[ActiveCam].Mode == CCam::MODE_SNIPER || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER) && pTargetEntity->IsPed() || Cams[ActiveCam].Mode == CCam::MODE_FLYBY) FindPlayerPed()->bIsVisible = false; else @@ -1566,15 +1566,15 @@ CCamera::UpdateSoundDistances(void) int n; if((Cams[ActiveCam].Mode == CCam::MODE_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_SNIPER || - Cams[ActiveCam].Mode == CCam::MODE_SNIPER_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_1STPERSON_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_FIGHT_CAM_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_HELICANNON_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER) && + Cams[ActiveCam].Mode == CCam::MODE_SNIPER || + Cams[ActiveCam].Mode == CCam::MODE_SNIPER_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_1STPERSON_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_FIGHT_CAM_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_HELICANNON_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER) && pTargetEntity->IsPed()) center = GetPosition() + 0.5f*GetForward(); else @@ -1856,14 +1856,14 @@ CCamera::StartTransition(int16 newMode) m_bUseTransitionBeta = false; if((Cams[ActiveCam].Mode == CCam::MODE_SNIPER || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_SNIPER_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_FIGHT_CAM_RUNABOUT || - Cams[ActiveCam].Mode == CCam::MODE_HELICANNON_1STPERSON || - Cams[ActiveCam].Mode == CCam::MODE_1STPERSON_RUNABOUT) && + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_SNIPER_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_M16_1STPERSON_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_FIGHT_CAM_RUNABOUT || + Cams[ActiveCam].Mode == CCam::MODE_HELICANNON_1STPERSON || + Cams[ActiveCam].Mode == CCam::MODE_1STPERSON_RUNABOUT) && pTargetEntity->IsPed()){ float angle = CGeneral::GetATanOfXY(Cams[ActiveCam].Front.x, Cams[ActiveCam].Front.y) - HALFPI; ((CPed*)pTargetEntity)->m_fRotationCur = angle; @@ -2184,12 +2184,12 @@ CCamera::DrawBordersForWideScreen(void) CSprite2d::DrawRect( CRect(0.0f, (SCREEN_HEIGHT/2) * m_ScreenReductionPercentage/100.0f - 8.0f, - SCREEN_WIDTH, 0.0f), + SCREEN_WIDTH, 0.0f), CRGBA(0, 0, 0, 255)); CSprite2d::DrawRect( CRect(0.0f, SCREEN_HEIGHT, - SCREEN_WIDTH, SCREEN_HEIGHT - (SCREEN_HEIGHT/2) * m_ScreenReductionPercentage/100.0f - 8.0f), + SCREEN_WIDTH, SCREEN_HEIGHT - (SCREEN_HEIGHT/2) * m_ScreenReductionPercentage/100.0f - 8.0f), CRGBA(0, 0, 0, 255)); } @@ -2631,8 +2631,8 @@ CCamera::ProcessObbeCinemaCameraCar(void) if(!bDidWeProcessAnyCinemaCam || IsItTimeForNewcam(SequenceOfCams[OldMode], TimeForNext)){ // This is very strange code... for(OldMode = (OldMode+1) % 14; - !TryToStartNewCamMode(SequenceOfCams[OldMode]) && i <= 14; - OldMode = (OldMode+1) % 14) + !TryToStartNewCamMode(SequenceOfCams[OldMode]) && i <= 14; + OldMode = (OldMode+1) % 14) i++; TimeForNext = CTimer::GetTimeInMilliseconds(); if(i >= 14){ @@ -2659,8 +2659,8 @@ CCamera::ProcessObbeCinemaCameraPed(void) if(!bDidWeProcessAnyCinemaCam || IsItTimeForNewcam(SequenceOfPedCams[PedOldMode], PedTimeForNext)){ for(PedOldMode = (PedOldMode+1) % 5; - !TryToStartNewCamMode(SequenceOfPedCams[PedOldMode]); - PedOldMode = (PedOldMode+1) % 5); + !TryToStartNewCamMode(SequenceOfPedCams[PedOldMode]); + PedOldMode = (PedOldMode+1) % 5); PedTimeForNext = CTimer::GetTimeInMilliseconds(); } bDidWeProcessAnyCinemaCam = true; @@ -2813,11 +2813,11 @@ CCamera::Process_Train_Camera_Control(void) uint32 node = m_iCurrentTrainCamNode; for(i = 0; i < m_uiNumberOfTrainCamNodes && !found; i++){ if(target->IsWithinArea(m_arrTrainCamNode[node].m_cvecMinPointInRange.x, - m_arrTrainCamNode[node].m_cvecMinPointInRange.y, - m_arrTrainCamNode[node].m_cvecMinPointInRange.z, - m_arrTrainCamNode[node].m_cvecMaxPointInRange.x, - m_arrTrainCamNode[node].m_cvecMaxPointInRange.y, - m_arrTrainCamNode[node].m_cvecMaxPointInRange.z)){ + m_arrTrainCamNode[node].m_cvecMinPointInRange.y, + m_arrTrainCamNode[node].m_cvecMinPointInRange.z, + m_arrTrainCamNode[node].m_cvecMaxPointInRange.x, + m_arrTrainCamNode[node].m_cvecMaxPointInRange.y, + m_arrTrainCamNode[node].m_cvecMaxPointInRange.z)){ m_iCurrentTrainCamNode = node; found = true; } From 8e29a5ec884842e0c445b3fb00b359386b7dca3e Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 8 Apr 2020 14:06:27 +0300 Subject: [PATCH 027/112] bug fix --- src/control/Garages.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 9e10af2d..84d49bee 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -1679,7 +1679,7 @@ float CGarage::CalcDistToGarageRectangleSquared(float X, float Y) else distX = 0.0f; if (Y < m_fY1) - distY = m_fY1 - X; + distY = m_fY1 - Y; else if (Y > m_fY2) distY = Y - m_fY2; else @@ -2358,4 +2358,4 @@ STARTPATCHES InjectHook(0x427AB0, CGarages::IsPointInAGarageCameraZone, PATCH_JUMP); // CCamera::CamControl InjectHook(0x427BC0, CGarages::CameraShouldBeOutside, PATCH_JUMP); // CCamera::CamControl InjectHook(0x428940, CGarages::Load, PATCH_JUMP); // GenericLoad -ENDPATCHES \ No newline at end of file +ENDPATCHES From 8ee98574ffa61abf1d14e9511056dcadd537fc8b Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 8 Apr 2020 14:16:59 +0300 Subject: [PATCH 028/112] fix bug --- src/control/Script.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 6b79265a..db36d766 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -7117,7 +7117,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command) case COMMAND_CLOSE_GARAGE: { CollectParameters(&m_nIp, 1); - CGarages::CloseGarage(ScriptParams[1]); + CGarages::CloseGarage(ScriptParams[0]); return 0; } case COMMAND_WARP_CHAR_FROM_CAR_TO_COORD: From 24fc11a13766a81f1c8c92ff789a6e866eb6404d Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 8 Apr 2020 14:25:23 +0300 Subject: [PATCH 029/112] rain fix --- src/render/Weather.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/render/Weather.cpp b/src/render/Weather.cpp index 73807d5c..5e19987a 100644 --- a/src/render/Weather.cpp +++ b/src/render/Weather.cpp @@ -210,10 +210,10 @@ void CWeather::Update(void) else fNewRain = 0.0f; if (Rain != fNewRain) { // ok to use comparasion - if (Rain > fNewRain) - Rain = max(fNewRain, Rain + RAIN_CHANGE_SPEED * CTimer::GetTimeStep()); + if (Rain < fNewRain) + Rain = min(fNewRain, Rain + RAIN_CHANGE_SPEED * CTimer::GetTimeStep()); else - Rain = min(fNewRain, Rain - RAIN_CHANGE_SPEED * CTimer::GetTimeStep()); + Rain = max(fNewRain, Rain - RAIN_CHANGE_SPEED * CTimer::GetTimeStep()); } // Clouds @@ -431,8 +431,8 @@ void CWeather::RenderRainStreaks(void) { if (CTimer::GetIsCodePaused()) return; - int default_visibility = (64.0f - CTimeCycle::GetFogReduction()) / 64.0f * int(255 * Rain); - if (default_visibility == 0) + int base_intensity = (64.0f - CTimeCycle::GetFogReduction()) / 64.0f * int(255 * Rain); + if (base_intensity == 0) return; TempBufferIndicesStored = 0; TempBufferVerticesStored = 0; @@ -444,13 +444,13 @@ void CWeather::RenderRainStreaks(void) else{ int intensity; if (secondsElapsed < STREAK_INTEROLATION_TIME) { - intensity = default_visibility * 0.5f * secondsElapsed / STREAK_INTEROLATION_TIME; + intensity = base_intensity * 0.5f * secondsElapsed / STREAK_INTEROLATION_TIME; } else if (secondsElapsed > (STREAK_LIFETIME - STREAK_INTEROLATION_TIME)) { - intensity = (STREAK_LIFETIME - secondsElapsed) * default_visibility / STREAK_INTEROLATION_TIME; + intensity = (STREAK_LIFETIME - secondsElapsed) * 0.5f * base_intensity / STREAK_INTEROLATION_TIME; } else { - intensity = default_visibility; + intensity = base_intensity * 0.5f; } debug("intensity: %d\n", intensity); CVector dir = Streaks[i].direction; From 5966e627f007d7d28b9073c01db73428e0b2796d Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 8 Apr 2020 15:17:07 +0300 Subject: [PATCH 030/112] fix bug --- src/control/Script.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/control/Script.cpp b/src/control/Script.cpp index db36d766..18572573 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -9141,7 +9141,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command) assert(pVehicle); assert(pVehicle->m_vehType == VEHICLE_TYPE_CAR); CAutomobile* pCar = (CAutomobile*)pVehicle; - pCar->bTakeLessDamage = ScriptParams[1]; + pCar->bMoreResistantToDamage = ScriptParams[1]; return 0; } case COMMAND_SET_JAMES_CAR_ON_PATH_TO_PLAYER: From 6288d36f34444eff6900f889ef6344358e7ebee3 Mon Sep 17 00:00:00 2001 From: aap Date: Wed, 8 Apr 2020 16:35:23 +0200 Subject: [PATCH 031/112] implemented CSkidmarks --- README.md | 7 -- src/core/config.h | 1 + src/render/Skidmarks.cpp | 247 ++++++++++++++++++++++++++++++++++++++- src/render/Skidmarks.h | 24 +++- 4 files changed, 263 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index a0e93bae..dc5988d7 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,6 @@ such that we have a working game at all times. - Since re3 is a DLL that works with original GTA III for now, you need Simple DLL Loader. You can get it [here](https://github.com/aap/simpledllloader). - Build re3 or download it from one of the above links (Debug or Release). - Make sure you included the re3 in `plugins.cfg` or `dlls.cfg`. -- re3 starts the script `main_freeroam.scm` that comes along with it by default, so you should copy it to from `gamefiles/` to your game's `data/` directory. - -![#ffa500](https://placehold.it/15/ffa500/000000?text=+) **Notice** - -If you want to load original script/story, press and hold G while game is loading. -This includes both starting new game and loading save game. ![#ffa500](https://placehold.it/15/ffa500/000000?text=+) **Notice if you will build it** @@ -51,7 +45,6 @@ CPools - save/loading CRecordDataForChase CRecordDataForGame CRoadBlocks -CSkidmarks CStats CTrafficLights CWeapon diff --git a/src/core/config.h b/src/core/config.h index f653f724..f7ddbe0b 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -79,6 +79,7 @@ enum Config { NUMPICKUPMESSAGES = 16, NUMBULLETTRACES = 16, NUMMBLURSTREAKS = 4, + NUMSKIDMARKS = 32, NUMONSCREENTIMERENTRIES = 1, NUMRADARBLIPS = 32, diff --git a/src/render/Skidmarks.cpp b/src/render/Skidmarks.cpp index c2725ed6..87881fb9 100644 --- a/src/render/Skidmarks.cpp +++ b/src/render/Skidmarks.cpp @@ -1,12 +1,247 @@ #include "common.h" #include "patcher.h" +#include "main.h" +#include "TxdStore.h" +#include "Timer.h" +#include "Replay.h" #include "Skidmarks.h" -WRAPPER void CSkidmarks::Clear(void) { EAXJMP(0x518130); } -WRAPPER void CSkidmarks::Update() { EAXJMP(0x518200); } +CSkidmark CSkidmarks::aSkidmarks[NUMSKIDMARKS]; -WRAPPER void CSkidmarks::Render(void) { EAXJMP(0x5182E0); } -WRAPPER void CSkidmarks::RegisterOne(uint32 id, CVector pos, float fwdx, float fwdY, bool *isMuddy, bool *isBloddy) { EAXJMP(0x5185C0); } +RwImVertexIndex SkidmarkIndexList[16 * 6]; +RwIm3DVertex SkidmarkVertices[16 * 2]; +RwTexture *gpSkidTex; +RwTexture *gpSkidBloodTex; +RwTexture *gpSkidMudTex; -WRAPPER void CSkidmarks::Init(void) { EAXJMP(0x517D70); } -WRAPPER void CSkidmarks::Shutdown(void) { EAXJMP(0x518100); } +void +CSkidmarks::Init(void) +{ + int i, ix, slot; + CTxdStore::PushCurrentTxd(); + slot = CTxdStore::FindTxdSlot("particle"); + CTxdStore::SetCurrentTxd(slot); + gpSkidTex = RwTextureRead("particleskid", nil); + gpSkidBloodTex = RwTextureRead("particleskidblood", nil); + gpSkidMudTex = RwTextureRead("particleskidmud", nil); + CTxdStore::PopCurrentTxd(); + + for(i = 0; i < NUMSKIDMARKS; i++){ + aSkidmarks[i].m_state = 0; + aSkidmarks[i].m_wasUpdated = false; + } + + ix = 0; + for(i = 0; i < 16; i++){ + SkidmarkIndexList[i*6+0] = ix+0; + SkidmarkIndexList[i*6+1] = ix+2; + SkidmarkIndexList[i*6+2] = ix+1; + SkidmarkIndexList[i*6+3] = ix+1; + SkidmarkIndexList[i*6+4] = ix+2; + SkidmarkIndexList[i*6+5] = ix+3; + ix += 2; + } + + for(i = 0; i < 16; i++){ + RwIm3DVertexSetU(&SkidmarkVertices[i*2 + 0], 0.0f); + RwIm3DVertexSetV(&SkidmarkVertices[i*2 + 0], i*5.01f); + RwIm3DVertexSetU(&SkidmarkVertices[i*2 + 1], 1.0f); + RwIm3DVertexSetV(&SkidmarkVertices[i*2 + 1], i*5.01f); + } +} + +void +CSkidmarks::Shutdown(void) +{ + RwTextureDestroy(gpSkidTex); + RwTextureDestroy(gpSkidBloodTex); + RwTextureDestroy(gpSkidMudTex); +} + +void +CSkidmarks::Clear(void) +{ + int i; + for(i = 0; i < NUMSKIDMARKS; i++){ + aSkidmarks[i].m_state = 0; + aSkidmarks[i].m_wasUpdated = false; + } +} + +void +CSkidmarks::Update(void) +{ + int i; + uint32 t1 = CTimer::GetTimeInMilliseconds() + 2500; + uint32 t2 = CTimer::GetTimeInMilliseconds() + 5000; + uint32 t3 = CTimer::GetTimeInMilliseconds() + 10000; + uint32 t4 = CTimer::GetTimeInMilliseconds() + 20000; + for(i = 0; i < NUMSKIDMARKS; i++){ + switch(aSkidmarks[i].m_state){ + case 1: + if(!aSkidmarks[i].m_wasUpdated){ + // Didn't continue this one last time, so finish it and set fade times + aSkidmarks[i].m_state = 2; + if(aSkidmarks[i].m_last < 4){ + aSkidmarks[i].m_fadeStart = t1; + aSkidmarks[i].m_fadeEnd = t2; + }else if(aSkidmarks[i].m_last < 9){ + aSkidmarks[i].m_fadeStart = t2; + aSkidmarks[i].m_fadeEnd = t3; + }else{ + aSkidmarks[i].m_fadeStart = t3; + aSkidmarks[i].m_fadeEnd = t4; + } + } + break; + case 2: + if(CTimer::GetTimeInMilliseconds() > aSkidmarks[i].m_fadeEnd) + aSkidmarks[i].m_state = 0; + break; + } + aSkidmarks[i].m_wasUpdated = false; + } +} + +void +CSkidmarks::Render(void) +{ + int i, j; + RwTexture *lastTex = nil; + + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); + + for(i = 0; i < NUMSKIDMARKS; i++){ + if(aSkidmarks[i].m_state == 0 || aSkidmarks[i].m_last < 1) + continue; + + if(aSkidmarks[i].m_isBloody){ + if(lastTex != gpSkidBloodTex){ + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpSkidBloodTex)); + lastTex = gpSkidBloodTex; + } + }else if(aSkidmarks[i].m_isMuddy){ + if(lastTex != gpSkidMudTex){ + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpSkidMudTex)); + lastTex = gpSkidMudTex; + } + }else{ + if(lastTex != gpSkidTex){ + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpSkidTex)); + lastTex = gpSkidTex; + } + } + + uint32 fade, alpha; + if(aSkidmarks[i].m_state == 1 || CTimer::GetTimeInMilliseconds() < aSkidmarks[i].m_fadeStart) + fade = 255; + else + fade = 255*(aSkidmarks[i].m_fadeEnd - CTimer::GetTimeInMilliseconds()) / (aSkidmarks[i].m_fadeEnd - aSkidmarks[i].m_fadeStart); + + for(j = 0; j <= aSkidmarks[i].m_last; j++){ + alpha = 128; + if(j == 0 || j == aSkidmarks[i].m_last && aSkidmarks[i].m_state == 2) + alpha = 0; + alpha = alpha*fade/256; + + CVector p1 = aSkidmarks[i].m_pos[j] + aSkidmarks[i].m_side[j]; + CVector p2 = aSkidmarks[i].m_pos[j] - aSkidmarks[i].m_side[j]; + RwIm3DVertexSetRGBA(&SkidmarkVertices[j*2+0], 255, 255, 255, alpha); + RwIm3DVertexSetPos(&SkidmarkVertices[j*2+0], p1.x, p1.y, p1.z+0.1f); + RwIm3DVertexSetRGBA(&SkidmarkVertices[j*2+1], 255, 255, 255, alpha); + RwIm3DVertexSetPos(&SkidmarkVertices[j*2+1], p2.x, p2.y, p2.z+0.1f); + } + + LittleTest(); + if(RwIm3DTransform(SkidmarkVertices, 2*(aSkidmarks[i].m_last+1), nil, rwIM3D_VERTEXUV)){ + RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, SkidmarkIndexList, 6*aSkidmarks[i].m_last); + RwIm3DEnd(); + } + } + + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE); +} + +void +CSkidmarks::RegisterOne(uintptr id, CVector pos, float fwdX, float fwdY, bool *isMuddy, bool *isBloody) +{ + int i; + CVector2D fwd(fwdX, fwdY); + + if(CReplay::IsPlayingBack()) + return; + + // Find a skidmark to continue + for(i = 0; i < NUMSKIDMARKS; i++) + if(aSkidmarks[i].m_state == 1 && aSkidmarks[i].m_id == id) + break; + + if(i < NUMSKIDMARKS){ + // Continue this one + + if(aSkidmarks[i].m_isBloody != *isBloody){ + // Blood-status changed, end this one + aSkidmarks[i].m_state = 2; + aSkidmarks[i].m_fadeStart = CTimer::GetTimeInMilliseconds() + 10000; + aSkidmarks[i].m_fadeEnd = CTimer::GetTimeInMilliseconds() + 20000; + return; + } + + aSkidmarks[i].m_wasUpdated = true; + + if(CTimer::GetTimeInMilliseconds() - aSkidmarks[i].m_lastUpdate <= 100){ + // Last update was recently, just change last coords + aSkidmarks[i].m_pos[aSkidmarks[i].m_last] = pos; + return; + } + aSkidmarks[i].m_lastUpdate = CTimer::GetTimeInMilliseconds(); + + if(aSkidmarks[i].m_last >= 15){ + // No space to continue, end it + aSkidmarks[i].m_state = 2; + aSkidmarks[i].m_fadeStart = CTimer::GetTimeInMilliseconds() + 10000; + aSkidmarks[i].m_fadeEnd = CTimer::GetTimeInMilliseconds() + 20000; + *isBloody = false; // stpo blood marks at end + return; + } + aSkidmarks[i].m_last++; + + aSkidmarks[i].m_pos[aSkidmarks[i].m_last] = pos; + + CVector2D dist = aSkidmarks[i].m_pos[aSkidmarks[i].m_last] - aSkidmarks[i].m_pos[aSkidmarks[i].m_last-1]; + dist.Normalise(); + CVector2D right(dist.y, -dist.x); + float turn = DotProduct2D(fwd, right); + turn = Abs(turn) + 1.0f; + aSkidmarks[i].m_side[aSkidmarks[i].m_last] = CVector(right.x, right.y, 0.0f) * turn * 0.125f; + if(aSkidmarks[i].m_last == 1) + aSkidmarks[i].m_side[0] = aSkidmarks[i].m_side[1]; + + if(aSkidmarks[i].m_last > 8) + *isBloody = false; // stop blood marks after 8 + return; + } + + // Start a new one + for(i = 0; i < NUMSKIDMARKS; i++) + if(aSkidmarks[i].m_state == 0) + break; + if(i < NUMSKIDMARKS){ + // Found a free slot + aSkidmarks[i].m_state = 1; + aSkidmarks[i].m_id = id; + aSkidmarks[i].m_pos[0] = pos; + aSkidmarks[i].m_side[0] = CVector(0.0f, 0.0f, 0.0f); + aSkidmarks[i].m_wasUpdated = true; + aSkidmarks[i].m_last = 0; + aSkidmarks[i].m_lastUpdate = CTimer::GetTimeInMilliseconds() - 1000; + aSkidmarks[i].m_isBloody = *isBloody; + aSkidmarks[i].m_isMuddy = *isMuddy; + }else + *isBloody = false; // stop blood marks if no space +} diff --git a/src/render/Skidmarks.h b/src/render/Skidmarks.h index bf2da7e4..5387d8f4 100644 --- a/src/render/Skidmarks.h +++ b/src/render/Skidmarks.h @@ -1,12 +1,30 @@ #pragma once +class CSkidmark +{ +public: + uint8 m_state; + bool m_wasUpdated; + bool m_isBloody; + bool m_isMuddy; + uintptr m_id; + int16 m_last; + uint32 m_lastUpdate;; + uint32 m_fadeStart; + uint32 m_fadeEnd; + CVector m_pos[16]; + CVector m_side[16]; +}; + class CSkidmarks { + static CSkidmark aSkidmarks[NUMSKIDMARKS]; public: + + static void Init(void); + static void Shutdown(void); static void Clear(void); static void Update(void); static void Render(void); - static void RegisterOne(uint32 id, CVector pos, float fwdx, float fwdY, bool *isMuddy, bool *isBloddy); - static void Init(void); - static void Shutdown(void); + static void RegisterOne(uintptr id, CVector pos, float fwdX, float fwdY, bool *isMuddy, bool *isBloody); }; From 5a034097c90076a8c59e68853f8d675b194e2877 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 8 Apr 2020 19:05:22 +0300 Subject: [PATCH 032/112] Fix target sprite size --- src/render/WeaponEffects.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/render/WeaponEffects.cpp b/src/render/WeaponEffects.cpp index 2ed9e662..3101def9 100644 --- a/src/render/WeaponEffects.cpp +++ b/src/render/WeaponEffects.cpp @@ -83,7 +83,7 @@ CWeaponEffects::Render(void) { float recipz = 1.0f / pos.z; CSprite::RenderOneXLUSprite(pos.x, pos.y, pos.z, - gCrossHair.m_fSize * w, gCrossHair.m_fSize * h, + gCrossHair.m_fSize * w, gCrossHair.m_fSize * SCREEN_SCALE_AR2(h), gCrossHair.m_nRed, gCrossHair.m_nGreen, gCrossHair.m_nBlue, 255, recipz, 255); } From b3571706d1cd89aed852ceecf57b130dff0343e0 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 8 Apr 2020 20:30:45 +0300 Subject: [PATCH 033/112] fix --- src/render/Weather.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/render/Weather.cpp b/src/render/Weather.cpp index 5e19987a..0970b94b 100644 --- a/src/render/Weather.cpp +++ b/src/render/Weather.cpp @@ -111,7 +111,7 @@ void CWeather::Init(void) void CWeather::Update(void) { - float fNewInterpolation = CClock::GetMinutes() / 60.0f; + float fNewInterpolation = CClock::GetMinutes() * 1.0f / 60; if (fNewInterpolation < InterpolationValue) { // new hour OldWeatherType = NewWeatherType; From cf36e09d391eb4d25d84c834579be1fd33c85a94 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 8 Apr 2020 21:18:19 +0300 Subject: [PATCH 034/112] final fixes --- src/render/Weather.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/render/Weather.cpp b/src/render/Weather.cpp index 0970b94b..34caf1bd 100644 --- a/src/render/Weather.cpp +++ b/src/render/Weather.cpp @@ -91,9 +91,17 @@ const float Windiness[] = { #define STREAK_MIN_DISTANCE (8.0f) #define STREAK_MAX_DISTANCE (16.0f) +#define SPLASH_CHECK_RADIUS (7.0f) +#define SPLASH_OFFSET_RADIUS (2.0f) + #define STREAK_LIFETIME (4.0f) #define STREAK_INTEROLATION_TIME (0.3f) +#define RAIN_COLOUR_R (200) +#define RAIN_COLOUR_G (200) +#define RAIN_COLOUR_B (256) +#define RAIN_ALPHA (255) + void CWeather::Init(void) { NewWeatherType = WEATHER_SUNNY; @@ -356,11 +364,14 @@ void CWeather::AddRain() for (int i = 0; i < num_splash_attempts; i++) { CColPoint point; CEntity* entity; - CVector np = fp + CVector(CGeneral::GetRandomNumberInRange(-7.0f, 7.0f), CGeneral::GetRandomNumberInRange(-7.0f, 7.0f), 0.0f); + CVector np = fp + CVector(CGeneral::GetRandomNumberInRange(-SPLASH_CHECK_RADIUS, SPLASH_CHECK_RADIUS), CGeneral::GetRandomNumberInRange(-SPLASH_CHECK_RADIUS, SPLASH_CHECK_RADIUS), 0.0f); if (CWorld::ProcessVerticalLine(np + CVector(0.0f, 0.0f, 40.0f), -40.0f, point, entity, true, false, false, false, true, false, nil)) { for (int j = 0; j < num_splashes; j++) CParticle::AddParticle((CGeneral::GetRandomTrueFalse() ? PARTICLE_RAIN_SPLASH : PARTICLE_RAIN_SPLASHUP), - CVector(np.x + CGeneral::GetRandomNumberInRange(-2.0f, 2.0f), np.y + CGeneral::GetRandomNumberInRange(-2.0f, 2.0f), point.point.z + 0.1f), + CVector( + np.x + CGeneral::GetRandomNumberInRange(-SPLASH_OFFSET_RADIUS, SPLASH_OFFSET_RADIUS), + np.y + CGeneral::GetRandomNumberInRange(-SPLASH_OFFSET_RADIUS, SPLASH_OFFSET_RADIUS), + point.point.z + 0.1f), CVector(0.0f, 0.0f, 0.0f), nil, 0.0f, colour); } } @@ -387,7 +398,7 @@ void RenderOneRainStreak(CVector pos, CVector unused, int intensity, bool scale, RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 0], pos.x + 11.0f * TheCamera.GetUp().x, pos.y + 11.0f * TheCamera.GetUp().y, pos.z + 11.0f * TheCamera.GetUp().z); RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 1], 0, 0, 0, 0); RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 1], pos.x - 9.0f * TheCamera.GetRight().x, pos.y - 9.0f * TheCamera.GetRight().y, pos.z - 9.0f * TheCamera.GetUp().z); - RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 2], 200 * intensity / 256, 200 * intensity / 256, intensity, 255); + RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 2], RAIN_COLOUR_R * intensity / 256, RAIN_COLOUR_G * intensity / 256, RAIN_COLOUR_B * intensity / 256, RAIN_ALPHA); RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 2], pos.x, pos.y, pos.z); RwIm3DVertexSetRGBA(&TempBufferRenderVertices[TempBufferVerticesStored + 3], 0, 0, 0, 0); RwIm3DVertexSetPos(&TempBufferRenderVertices[TempBufferVerticesStored + 3], pos.x + 9.0f * TheCamera.GetRight().x, pos.y + 9.0f * TheCamera.GetRight().y, pos.z + 9.0f * TheCamera.GetUp().z); @@ -443,16 +454,12 @@ void CWeather::RenderRainStreaks(void) Streaks[i].timer = 0; else{ int intensity; - if (secondsElapsed < STREAK_INTEROLATION_TIME) { + if (secondsElapsed < STREAK_INTEROLATION_TIME) intensity = base_intensity * 0.5f * secondsElapsed / STREAK_INTEROLATION_TIME; - } - else if (secondsElapsed > (STREAK_LIFETIME - STREAK_INTEROLATION_TIME)) { + else if (secondsElapsed > (STREAK_LIFETIME - STREAK_INTEROLATION_TIME)) intensity = (STREAK_LIFETIME - secondsElapsed) * 0.5f * base_intensity / STREAK_INTEROLATION_TIME; - } - else { + else intensity = base_intensity * 0.5f; - } - debug("intensity: %d\n", intensity); CVector dir = Streaks[i].direction; dir.Normalise(); CVector pos = Streaks[i].position + secondsElapsed * Streaks[i].direction; From ebba8519d97fb0920d87f5cf7ad3c99332736456 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 8 Apr 2020 21:40:02 +0300 Subject: [PATCH 035/112] review fixes --- src/render/Weather.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/render/Weather.cpp b/src/render/Weather.cpp index 34caf1bd..712e70bf 100644 --- a/src/render/Weather.cpp +++ b/src/render/Weather.cpp @@ -305,8 +305,8 @@ void CWeather::AddRain() float rain_angle = DEGTORAD(STATIC_RAIN_ANGLE + ((STATIC_RAIN_ANGLE < 0) ? 360 : 0)); float sin_angle = Sin(rain_angle); float cos_angle = Cos(rain_angle); - float base_x = 0.0f * sin_angle - 1.0f * cos_angle; - float base_y = 1.0f * sin_angle + 0.0f * cos_angle; + float base_x = 0.0f * cos_angle - 1.0f * sin_angle; + float base_y = 1.0f * cos_angle + 0.0f * sin_angle; CVector xpos(0.0f, 0.0f, 0.0f); for (int i = 0; i < 2 * num_drops; i++) { CVector dir; @@ -487,25 +487,25 @@ void CWeather::RenderRainStreaks(void) } } if (TempBufferIndicesStored){ - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, 0); - RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)1); - RwRenderStateSet(rwRENDERSTATEFOGENABLE, 0); - RwRenderStateSet(rwRENDERSTATEFOGTYPE, (void*)1); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)2); - RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)2); - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)1); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEFOGTYPE, (void*)rwFOGTYPELINEAR); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDONE); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDONE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); RwRenderStateSet(rwRENDERSTATETEXTURERASTER, gpRainDropTex[3]->raster); if (RwIm3DTransform(TempBufferRenderVertices, TempBufferVerticesStored, nil, 1)) { RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, TempBufferRenderIndexList, TempBufferIndicesStored); RwIm3DEnd(); } - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)1); - RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)1); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)5); - RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)6); - RwRenderStateSet(rwRENDERSTATEFOGENABLE, 0); - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, 0); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); + RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); } TempBufferVerticesStored = 0; TempBufferIndicesStored = 0; From b9a20da7d85d06d2b061736120d2713ef6fb92f0 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 8 Apr 2020 21:47:58 +0300 Subject: [PATCH 036/112] review fix --- src/render/Weather.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/render/Weather.cpp b/src/render/Weather.cpp index 712e70bf..d3be7fcf 100644 --- a/src/render/Weather.cpp +++ b/src/render/Weather.cpp @@ -494,7 +494,7 @@ void CWeather::RenderRainStreaks(void) RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDONE); RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDONE); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, gpRainDropTex[3]->raster); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpRainDropTex[3])); if (RwIm3DTransform(TempBufferRenderVertices, TempBufferVerticesStored, nil, 1)) { RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, TempBufferRenderIndexList, TempBufferIndicesStored); From d5f34e425ef1b1de09cef7872b6a61bdbc6db06c Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 8 Apr 2020 21:56:33 +0300 Subject: [PATCH 037/112] fixed random number retrieval --- src/render/Weather.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/render/Weather.cpp b/src/render/Weather.cpp index d3be7fcf..d132ffdb 100644 --- a/src/render/Weather.cpp +++ b/src/render/Weather.cpp @@ -314,7 +314,7 @@ void CWeather::AddRain() dir.y = (CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) + base_y) * CGeneral::GetRandomNumberInRange(10.0f, 25.0f); dir.z = 0; CParticle::AddParticle(PARTICLE_RAINDROP_2D, xpos, dir, nil, CGeneral::GetRandomNumberInRange(0.5f, 0.9f), - colour, 0, rain_angle + CGeneral::GetRandomNumberInRange(0, 20) - 10, cur_frame); + colour, 0, rain_angle + CGeneral::GetRandomNumberInRange(-10, 10), cur_frame); xpos.x += screen_width / (2 * num_drops); xpos.x += CGeneral::GetRandomNumberInRange(-25.0f, 25.0f); } @@ -325,7 +325,7 @@ void CWeather::AddRain() dir.y = (CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) + base_y) * CGeneral::GetRandomNumberInRange(10.0f, 25.0f); dir.z = 0; CParticle::AddParticle(PARTICLE_RAINDROP_2D, ypos, dir, nil, CGeneral::GetRandomNumberInRange(0.5f, 0.9f), - colour, 0, rain_angle + CGeneral::GetRandomNumberInRange(0, 20) - 10, cur_frame); + colour, 0, rain_angle + CGeneral::GetRandomNumberInRange(-10, 10), cur_frame); ypos.y += screen_width / num_drops; ypos.y += CGeneral::GetRandomNumberInRange(-25.0f, 25.0f); } @@ -336,7 +336,7 @@ void CWeather::AddRain() dir.y = (CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) + base_y) * CGeneral::GetRandomNumberInRange(10.0f, 25.0f); dir.z = 0; CParticle::AddParticle(PARTICLE_RAINDROP_2D, ypos2, dir, nil, CGeneral::GetRandomNumberInRange(0.5f, 0.9f), - colour, 0, rain_angle + CGeneral::GetRandomNumberInRange(0, 20) - 10, cur_frame); + colour, 0, rain_angle + CGeneral::GetRandomNumberInRange(-10, 10), cur_frame); ypos2.y += screen_width / num_drops; ypos2.y += CGeneral::GetRandomNumberInRange(-25.0f, 25.0f); } @@ -346,7 +346,7 @@ void CWeather::AddRain() pos.y = CGeneral::GetRandomNumberInRange(DROPLETS_TOP_OFFSET, screen_height - DROPLETS_TOP_OFFSET); pos.z = 0.0f; CParticle::AddParticle(PARTICLE_RAINDROP_2D, pos, CVector(0.0f, 0.0f, 0.0f), nil, CGeneral::GetRandomNumberInRange(0.5f, 0.9f), - colour, CGeneral::GetRandomNumberInRange(0.0f, 20.0f) - 10, 360 - rain_angle + CGeneral::GetRandomNumberInRange(0.0f, 60.0f) - 30, cur_frame, 0); + colour, CGeneral::GetRandomNumberInRange(-10, 10), 360 - rain_angle + CGeneral::GetRandomNumberInRange(-30, 30), cur_frame, 0); } int num_splash_attempts = (int)(3 * Rain) + 1; int num_splashes = (int)(3 * Rain) + 4; From 42d5f65c5525f2c6ec2237b2e46c570751554c1a Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 8 Apr 2020 23:50:45 +0300 Subject: [PATCH 038/112] fix bug --- src/control/Script.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 18572573..db2c93a3 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -9153,6 +9153,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command) return 0; } case COMMAND_LOAD_END_OF_GAME_TUNE: + DMAudio.ChangeMusicMode(MUSICMODE_CUTSCENE); printf("Start preload end of game audio\n"); DMAudio.PreloadCutSceneMusic(STREAMED_SOUND_GAME_COMPLETED); printf("End preload end of game audio\n"); From e6476bafff7af47974482a4e70eaf762fa742e11 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 9 Apr 2020 00:16:29 +0300 Subject: [PATCH 039/112] Cheats --- README.md | 1 - src/core/Pad.cpp | 266 ++++++++++++++++++++++++++++++++++++++++----- src/peds/PedType.h | 1 + 3 files changed, 242 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index a0e93bae..5edfa0ef 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,6 @@ CExplosion CMenuManager - WIP CObject CPacManPickups -CPad - only cheats CPedPath CPools - save/loading CRecordDataForChase diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp index 6bbe00f2..079a3ea7 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -28,6 +28,10 @@ #include "Replay.h" #include "Weather.h" #include "win.h" +#include "Streaming.h" +#include "PathFind.h" +#include "Wanted.h" +#include "General.h" CPad *Pads = (CPad*)0x6F0360; // [2] CMousePointerStateHelper &MousePointerStateHelper = *(CMousePointerStateHelper*)0x95CC8C; @@ -49,29 +53,217 @@ CMouseControllerState &CPad::PCTempMouseControllerState = *(CMouseControllerStat _TODO("gbFastTime"); extern bool &gbFastTime; -WRAPPER void WeaponCheat() { EAXJMP(0x490D90); } -WRAPPER void HealthCheat() { EAXJMP(0x490E70); } -WRAPPER void TankCheat() { EAXJMP(0x490EE0); } -WRAPPER void BlowUpCarsCheat() { EAXJMP(0x491040); } -WRAPPER void ChangePlayerCheat() { EAXJMP(0x4910B0); } -WRAPPER void MayhemCheat() { EAXJMP(0x4911C0); } -WRAPPER void EverybodyAttacksPlayerCheat() { EAXJMP(0x491270); } -WRAPPER void WeaponsForAllCheat() { EAXJMP(0x491370); } -WRAPPER void FastTimeCheat() { EAXJMP(0x4913A0); } -WRAPPER void SlowTimeCheat() { EAXJMP(0x4913F0); } -WRAPPER void MoneyCheat() { EAXJMP(0x491430); } -WRAPPER void ArmourCheat() { EAXJMP(0x491460); } -WRAPPER void WantedLevelUpCheat() { EAXJMP(0x491490); } -WRAPPER void WantedLevelDownCheat() { EAXJMP(0x4914F0); } -WRAPPER void SunnyWeatherCheat() { EAXJMP(0x491520); } -WRAPPER void CloudyWeatherCheat() { EAXJMP(0x491550); } -WRAPPER void RainyWeatherCheat() { EAXJMP(0x491580); } -WRAPPER void FoggyWeatherCheat() { EAXJMP(0x4915B0); } -WRAPPER void FastWeatherCheat() { EAXJMP(0x4915E0); } -WRAPPER void OnlyRenderWheelsCheat() { EAXJMP(0x491610); } -WRAPPER void ChittyChittyBangBangCheat() { EAXJMP(0x491640); } -WRAPPER void StrongGripCheat() { EAXJMP(0x491670); } -WRAPPER void NastyLimbsCheat() { EAXJMP(0x4916A0); } +void WeaponCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT2"), true); + FindPlayerPed()->GiveWeapon(WEAPONTYPE_BASEBALLBAT, 0); + FindPlayerPed()->GiveWeapon(WEAPONTYPE_COLT45, 100); + FindPlayerPed()->GiveWeapon(WEAPONTYPE_UZI, 100); + FindPlayerPed()->GiveWeapon(WEAPONTYPE_SHOTGUN, 20); + FindPlayerPed()->GiveWeapon(WEAPONTYPE_AK47, 200); + FindPlayerPed()->GiveWeapon(WEAPONTYPE_M16, 200); + FindPlayerPed()->GiveWeapon(WEAPONTYPE_SNIPERRIFLE, 5); + FindPlayerPed()->GiveWeapon(WEAPONTYPE_ROCKETLAUNCHER, 5); + FindPlayerPed()->GiveWeapon(WEAPONTYPE_MOLOTOV, 5); + FindPlayerPed()->GiveWeapon(WEAPONTYPE_GRENADE, 5); + FindPlayerPed()->GiveWeapon(WEAPONTYPE_FLAMETHROWER, 200); +} + +void HealthCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT3"), true); + FindPlayerPed()->m_fHealth = 100.0f; + if (FindPlayerVehicle()) { + FindPlayerVehicle()->m_fHealth = 1000.0f; + if (FindPlayerVehicle()->m_vehType == VEHICLE_TYPE_CAR) + ((CAutomobile*)FindPlayerVehicle())->Damage.SetEngineStatus(0); + } +} + +void TankCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + CStreaming::RequestModel(MI_RHINO, 0); + CStreaming::LoadAllRequestedModels(false); + if (CStreaming::ms_aInfoForModel[MI_RHINO].m_loadState == STREAMSTATE_LOADED) { + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + int32 node = ThePaths.FindNodeClosestToCoors(FindPlayerCoors(), PATH_CAR, 100.0f); + + if (node < 0) return; + +#ifdef FIX_BUGS + CAutomobile* tank = new CAutomobile(MI_RHINO, RANDOM_VEHICLE); +#else + CAutomobile *tank = new CAutomobile(MI_RHINO, MISSION_VEHICLE); +#endif + if (tank != nil) { + CVector pos = ThePaths.m_pathNodes[node].pos; + pos.z += 4.0f; + tank->GetPosition() = pos; + tank->SetOrientation(0.0f, 0.0f, DEGTORAD(200.0f)); + + tank->m_status = STATUS_ABANDONED; + tank->m_nDoorLock = CARLOCK_UNLOCKED; + CWorld::Add(tank); + } + } +} + +void BlowUpCarsCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + + int i = CPools::GetVehiclePool()->GetSize(); + while (i-- > 0) { + if (CVehicle *veh = CPools::GetVehiclePool()->GetSlot(i)) + veh->BlowUpCar(nil); + } +} + +void ChangePlayerCheat() +{ + int modelId; + + if (FindPlayerPed()->IsPedInControl() && CModelInfo::GetModelInfo("player", nil)) { + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + CPlayerPed *ped = FindPlayerPed(); + AssocGroupId AnimGrp = ped->m_animGroup; + do + { + do + modelId = CGeneral::GetRandomNumberInRange(0, MI_CAS_WOM+1); + while (!CModelInfo::GetModelInfo(modelId)); + } while (modelId >= MI_SPECIAL01 && modelId <= MI_SPECIAL04 || modelId == MI_TAXI_D); + + uint8 flags = CStreaming::ms_aInfoForModel[modelId].m_flags; + ped->DeleteRwObject(); + CStreaming::RequestModel(modelId, STREAMFLAGS_DEPENDENCY| STREAMFLAGS_DONT_REMOVE); + CStreaming::LoadAllRequestedModels(false); + ped->m_modelIndex = -1; + ped->SetModelIndex(modelId); + ped->m_animGroup = AnimGrp; + if (modelId != MI_PLAYER) { + if (!(flags & STREAMFLAGS_DONT_REMOVE)) + CStreaming::SetModelIsDeletable(modelId); + } + } +} + +void MayhemCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + for (int i = PEDTYPE_CIVMALE; i < PEDTYPE_SPECIAL; i++) + CPedType::SetThreats(i, PED_FLAG_PLAYER1 | PED_FLAG_PLAYER2 | PED_FLAG_PLAYER3 | PED_FLAG_PLAYER4 | + PED_FLAG_CIVMALE | PED_FLAG_CIVFEMALE | PED_FLAG_COP | PED_FLAG_GANG1 | + PED_FLAG_GANG2 | PED_FLAG_GANG3 | PED_FLAG_GANG4 | PED_FLAG_GANG5 | + PED_FLAG_GANG6 | PED_FLAG_GANG7 | PED_FLAG_GANG8 | PED_FLAG_GANG9 | + PED_FLAG_EMERGENCY | PED_FLAG_PROSTITUTE | PED_FLAG_CRIMINAL | PED_FLAG_SPECIAL ); +} + +void EverybodyAttacksPlayerCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + for (int i = PEDTYPE_CIVMALE; i < PEDTYPE_SPECIAL; i++) + CPedType::AddThreat(i, PED_FLAG_PLAYER1); +} + +void WeaponsForAllCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + CPopulation::ms_bGivePedsWeapons = !CPopulation::ms_bGivePedsWeapons; +} + +void FastTimeCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + if (CTimer::GetTimeScale() < 4.0f) + CTimer::SetTimeScale(CTimer::GetTimeScale() * 2.0f); +} + +void SlowTimeCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + if (CTimer::GetTimeScale() > 0.25f) + CTimer::SetTimeScale(CTimer::GetTimeScale() * 0.5f); +} + +void MoneyCheat() +{ + CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 250000; + CHud::SetHelpMessage(TheText.Get("CHEAT6"), true); +} + +void ArmourCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT4"), true); + FindPlayerPed()->m_fArmour = 100.0f; +} + +void WantedLevelUpCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT5"), true); + FindPlayerPed()->SetWantedLevel(min(FindPlayerPed()->m_pWanted->m_nWantedLevel + 2, 6)); +} + +void WantedLevelDownCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT5"), true); + FindPlayerPed()->SetWantedLevel(0); +} + +void SunnyWeatherCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT7"), true); + CWeather::ForceWeatherNow(WEATHER_SUNNY); +} + +void CloudyWeatherCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT7"), true); + CWeather::ForceWeatherNow(WEATHER_CLOUDY); +} + +void RainyWeatherCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT7"), true); + CWeather::ForceWeatherNow(WEATHER_RAINY); +} + +void FoggyWeatherCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT7"), true); + CWeather::ForceWeatherNow(WEATHER_FOGGY); +} + +void FastWeatherCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + gbFastTime = !gbFastTime; +} + +void OnlyRenderWheelsCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + CVehicle::bWheelsOnlyCheat = !CVehicle::bWheelsOnlyCheat; +} + + +void ChittyChittyBangBangCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + CVehicle::bAllDodosCheat = !CVehicle::bAllDodosCheat; +} + +void StrongGripCheat() +{ + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + CVehicle::bCheat3 = !CVehicle::bCheat3; +} + +void NastyLimbsCheat() +{ + CPed::bNastyLimbsCheat = !CPed::bNastyLimbsCheat; +} ////////////////////////////////////////////////////////////////////////// #ifdef KANGAROO_CHEAT @@ -88,7 +280,7 @@ void KangarooCheat() string = TheText.Get("CHEAT1"); m_fMass = 15.0f; } - CHud::SetHelpMessage(string, 1); + CHud::SetHelpMessage(string, true); playerPed->m_ped_flagI80 = !playerPed->m_ped_flagI80; playerPed->m_fMass = m_fMass; @@ -2086,7 +2278,31 @@ int32 *CPad::EditCodesForControls(int32 *pRsKeys, int32 nSize) return pRsKeys; } -STARTPATCHES +STARTPATCHES + InjectHook(0x490D90, &WeaponCheat, PATCH_JUMP); + InjectHook(0x490E70, &HealthCheat, PATCH_JUMP); + InjectHook(0x490EE0, &TankCheat, PATCH_JUMP); + InjectHook(0x491040, &BlowUpCarsCheat, PATCH_JUMP); + InjectHook(0x4910B0, &ChangePlayerCheat, PATCH_JUMP); + InjectHook(0x4911C0, &MayhemCheat, PATCH_JUMP); + InjectHook(0x491270, &EverybodyAttacksPlayerCheat, PATCH_JUMP); + InjectHook(0x491370, &WeaponsForAllCheat, PATCH_JUMP); + InjectHook(0x4913A0, &FastTimeCheat, PATCH_JUMP); + InjectHook(0x4913F0, &SlowTimeCheat, PATCH_JUMP); + InjectHook(0x491430, &MoneyCheat, PATCH_JUMP); + InjectHook(0x491460, &ArmourCheat, PATCH_JUMP); + InjectHook(0x491490, &WantedLevelUpCheat, PATCH_JUMP); + InjectHook(0x4914F0, &WantedLevelDownCheat, PATCH_JUMP); + InjectHook(0x491520, &SunnyWeatherCheat, PATCH_JUMP); + InjectHook(0x491550, &CloudyWeatherCheat, PATCH_JUMP); + InjectHook(0x491580, &RainyWeatherCheat, PATCH_JUMP); + InjectHook(0x4915B0, &FoggyWeatherCheat, PATCH_JUMP); + InjectHook(0x4915E0, &FastWeatherCheat, PATCH_JUMP); + InjectHook(0x491610, &OnlyRenderWheelsCheat, PATCH_JUMP); + InjectHook(0x491640, &ChittyChittyBangBangCheat, PATCH_JUMP); + InjectHook(0x491670, &StrongGripCheat, PATCH_JUMP); + InjectHook(0x4916A0, &NastyLimbsCheat, PATCH_JUMP); + InjectHook(0x4916C0, &CControllerState::Clear, PATCH_JUMP); InjectHook(0x491760, &CKeyboardState::Clear, PATCH_JUMP); InjectHook(0x491A10, &CPad::Clear, PATCH_JUMP); diff --git a/src/peds/PedType.h b/src/peds/PedType.h index 1f3ecb59..3d927df5 100644 --- a/src/peds/PedType.h +++ b/src/peds/PedType.h @@ -85,6 +85,7 @@ public: static uint32 GetFlag(int type) { return ms_apPedType[type]->m_flag; } static uint32 GetAvoid(int type) { return ms_apPedType[type]->m_avoid; } static uint32 GetThreats(int type) { return ms_apPedType[type]->m_threats; } + static void SetThreats(int type, uint32 threat) { ms_apPedType[type]->m_threats = threat; } static void AddThreat(int type, int threat) { ms_apPedType[type]->m_threats |= threat; } static void RemoveThreat(int type, int threat) { ms_apPedType[type]->m_threats &= ~threat; } static bool IsThreat(int type, int threat) { return ms_apPedType[type]->m_threats & threat; } From 37691701138c8a458bc8b41944745000d27a3b83 Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Thu, 9 Apr 2020 02:52:38 +0300 Subject: [PATCH 040/112] (PS2) TheGame/main/GameInit/SystemInit, ProcessSlowMode --- src/core/Camera.cpp | 4 +- src/core/Frontend.cpp | 10 +- src/core/Frontend.h | 4 +- src/core/Game.cpp | 20 +- src/core/Game.h | 1 + src/core/Pad.cpp | 14 + src/core/Pad.h | 3 +- src/core/common.h | 2 + src/core/main.cpp | 2067 ++++++++++++++++++++----------- src/save/GenericGameStorage.cpp | 7 + src/save/GenericGameStorage.h | 6 + src/skel/win/win.cpp | 14 +- 12 files changed, 1408 insertions(+), 744 deletions(-) diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index 00c838cf..463362bc 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -142,7 +142,7 @@ CCamera::Init(void) PlayerExhaustion = 1.0f; DebugCamMode = CCam::MODE_NONE; m_PedOrientForBehindOrInFront = 0.0f; - if(!FrontEndMenuManager.m_bStartGameLoading){ + if(!FrontEndMenuManager.m_bWantToRestart){ m_bFading = false; CDraw::FadeValue = 0; m_fFLOATingFade = 0.0f; @@ -151,7 +151,7 @@ CCamera::Init(void) m_fFLOATingFadeMusic = 0.0f; } m_bMoveCamToAvoidGeom = false; - if(FrontEndMenuManager.m_bStartGameLoading) + if(FrontEndMenuManager.m_bWantToRestart) m_bMoveCamToAvoidGeom = true; m_bStartingSpline = false; m_iTypeOfSwitch = INTERPOLATION; diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 98d67fa2..beebacf9 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -555,7 +555,7 @@ void CMenuManager::DoSettingsBeforeStartingAGame() m_PrefsVsync = m_PrefsVsyncDisp; DMAudio.Service(); - m_bStartGameLoading = true; + m_bWantToRestart = true; ShutdownJustMenu(); UnloadTextures(); @@ -2819,7 +2819,7 @@ void CMenuManager::Process(void) if (!m_bSaveMenuActive && TheCamera.GetScreenFadeStatus() != FADE_0) return; - m_bStartGameLoading = false; + m_bWantToRestart = false; InitialiseChangedLanguageSettings(); if (CPad::GetPad(0)->GetEscapeJustDown()) @@ -2861,9 +2861,9 @@ void CMenuManager::Process(void) if (m_PrefsVsyncDisp != m_PrefsVsync) m_PrefsVsync = m_PrefsVsyncDisp; DMAudio.Service(); - m_bStartGameLoading = true; + m_bWantToRestart = true; RequestFrontEndShutDown(); - m_bLoadingSavedGame = true; + m_bWantToLoad = true; b_FoundRecentSavedGameWantToLoad = true; DMAudio.SetEffectsFadeVol(0); DMAudio.SetMusicFadeVol(0); @@ -2960,7 +2960,7 @@ void CMenuManager::Process(void) m_bWaitingForNewKeyBind = false; } - if (!m_bStartGameLoading) { + if (!m_bWantToRestart) { if (m_bGameNotLoaded) DMAudio.Service(); } diff --git a/src/core/Frontend.h b/src/core/Frontend.h index a97afb24..c08bc1d9 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -464,7 +464,7 @@ public: bool m_bMenuActive; bool m_bMenuStateChanged; bool m_bWaitingForNewKeyBind; - bool m_bStartGameLoading; + bool m_bWantToRestart; bool m_bFirstTime; bool m_bGameNotLoaded; int32 m_nMousePosX; @@ -484,7 +484,7 @@ public: bool m_bQuitGameNoCD; bool m_bRenderGameInMenu; bool m_bSaveMenuActive; - bool m_bLoadingSavedGame; + bool m_bWantToLoad; char field_455; bool m_bStartWaitingForKeyBind; bool m_bSpritesLoaded; diff --git a/src/core/Game.cpp b/src/core/Game.cpp index 8571e93e..9637dc6c 100644 --- a/src/core/Game.cpp +++ b/src/core/Game.cpp @@ -89,8 +89,6 @@ -#define DEFAULT_VIEWWINDOW (0.7f) - eLevelName &CGame::currLevel = *(eLevelName*)0x941514; bool &CGame::bDemoMode = *(bool*)0x5F4DD0; bool &CGame::nastyGame = *(bool*)0x5F4DD4; @@ -492,7 +490,7 @@ void CGame::ReInitGameObjectVariables(void) CParticle::ReloadConfig(); CCullZones::ResolveVisibilities(); - if ( !FrontEndMenuManager.m_bLoadingSavedGame ) + if ( !FrontEndMenuManager.m_bWantToLoad ) { CCranes::InitCranes(); CTheScripts::StartTestScript(); @@ -566,7 +564,7 @@ void CGame::InitialiseWhenRestarting(void) TheCamera.Init(); - if ( FrontEndMenuManager.m_bLoadingSavedGame == true ) + if ( FrontEndMenuManager.m_bWantToLoad == true ) { RestoreForStartLoad(); CStreaming::LoadScene(TheCamera.GetPosition()); @@ -574,7 +572,7 @@ void CGame::InitialiseWhenRestarting(void) ReInitGameObjectVariables(); - if ( FrontEndMenuManager.m_bLoadingSavedGame == true ) + if ( FrontEndMenuManager.m_bWantToLoad == true ) { if ( GenericLoad() == true ) { @@ -593,7 +591,7 @@ void CGame::InitialiseWhenRestarting(void) ShutDownForRestart(); CTimer::Stop(); CTimer::Initialise(); - FrontEndMenuManager.m_bLoadingSavedGame = false; + FrontEndMenuManager.m_bWantToLoad = false; ReInitGameObjectVariables(); currLevel = LEVEL_INDUSTRIAL; CCollision::SortOutCollisionAfterLoad(); @@ -609,6 +607,9 @@ extern void (*DebugMenuProcess)(void); void CGame::Process(void) { CPad::UpdatePads(); +#ifdef PS2 + ProcessTidyUpMemory(); +#endif TheCamera.SetMotionBlurAlpha(0); if (TheCamera.m_BlurType == MBLUR_NONE || TheCamera.m_BlurType == MBLUR_SNIPER || TheCamera.m_BlurType == MBLUR_NORMAL) TheCamera.SetMotionBlur(0, 0, 0, 0, MBLUR_NONE); @@ -695,6 +696,13 @@ void CGame::TidyUpMemory(bool, bool) #endif } +void CGame::ProcessTidyUpMemory(void) +{ +#ifdef PS2 + // meow +#endif +} + STARTPATCHES InjectHook(0x48BB80, CGame::InitialiseOnceBeforeRW, PATCH_JUMP); InjectHook(0x48BBA0, CGame::InitialiseRenderWare, PATCH_JUMP); diff --git a/src/core/Game.h b/src/core/Game.h index 318ff54b..30581893 100644 --- a/src/core/Game.h +++ b/src/core/Game.h @@ -39,4 +39,5 @@ public: // NB: these do something on PS2 static void TidyUpMemory(bool, bool); static void DrasticTidyUpMemory(bool); + static void ProcessTidyUpMemory(void); }; diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp index 6bbe00f2..2d2b132c 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -34,6 +34,7 @@ CMousePointerStateHelper &MousePointerStateHelper = *(CMousePointerStateHelper*) bool &CPad::bDisplayNoControllerMessage = *(bool *)0x95CD52; bool &CPad::bObsoleteControllerMessage = *(bool *)0x95CDB8; +bool CPad::bOldDisplayNoControllerMessage; bool &CPad::m_bMapPadOneToPadTwo = *(bool *)0x95CD48; CKeyboardState &CPad::OldKeyState = *(CKeyboardState*)0x6F1E70; @@ -137,6 +138,19 @@ void CKeyboardState::Clear() LWIN = RWIN = APPS = 0; } +void CPad::Initialise(void) +{ + for (int i = 0; i < MAX_PADS; i++) + { + CPad::GetPad(i)->Clear(true); + CPad::GetPad(i)->Mode = 0; + } + + bObsoleteControllerMessage = false; + bOldDisplayNoControllerMessage = false; + bDisplayNoControllerMessage = false; +} + void CPad::Clear(bool bResetPlayerControls) { NewState.Clear(); diff --git a/src/core/Pad.h b/src/core/Pad.h index ca44a9f7..00dd5540 100644 --- a/src/core/Pad.h +++ b/src/core/Pad.h @@ -161,6 +161,7 @@ public: static bool &bDisplayNoControllerMessage; static bool &bObsoleteControllerMessage; + static bool bOldDisplayNoControllerMessage; static bool &m_bMapPadOneToPadTwo; static CKeyboardState &OldKeyState; @@ -173,7 +174,7 @@ public: - + static void Initialise(void); void Clear(bool bResetPlayerControls); void ClearMouseHistory(); void UpdateMouse(); diff --git a/src/core/common.h b/src/core/common.h index b58b93af..9b897cca 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -84,12 +84,14 @@ extern void **rwengine; #define DEFAULT_SCREEN_WIDTH (640) #define DEFAULT_SCREEN_HEIGHT (448) #define DEFAULT_ASPECT_RATIO (4.0f/3.0f) +#define DEFAULT_VIEWWINDOW (0.7f) // game uses maximumWidth/Height, but this probably won't work // with RW windowed mode #define SCREEN_WIDTH ((float)RsGlobal.width) #define SCREEN_HEIGHT ((float)RsGlobal.height) #define SCREEN_ASPECT_RATIO (CDraw::GetAspectRatio()) +#define SCREEN_VIEWWINDOW (Tan(DEGTORAD(CDraw::GetFOV() * 0.5f))) // This scales from PS2 pixel coordinates to the real resolution #define SCREEN_STRETCH_X(a) ((a) * (float) SCREEN_WIDTH / DEFAULT_SCREEN_WIDTH) diff --git a/src/core/main.cpp b/src/core/main.cpp index fb5beee0..f024b2f3 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1,6 +1,11 @@ #include "common.h" +#include "rpmatfx.h" +#include "rpskin.h" +#include "rphanim.h" +#include "rtbmp.h" #include "patcher.h" #include "main.h" +#include "CdStream.h" #include "General.h" #include "RwHelper.h" #include "Clouds.h" @@ -52,8 +57,17 @@ #include "Debug.h" #include "Console.h" #include "timebars.h" +#include "GenericGameStorage.h" -#define DEFAULT_VIEWWINDOW (Tan(DEGTORAD(CDraw::GetFOV() * 0.5f))) +#ifdef PS2 +#define GETWANTTOLOADSAVEGAME() (TheMemoryCard.m_bWantToLoad) +#define SETWANTTOLOADSAVEGAME(b) {TheMemoryCard.m_bWantToLoad = (b);} +#define GETFOUNDRECENTSAVEDGAMEWANTTOLOAD() (TheMemoryCard.b_FoundRecentSavedGameWantToLoad) +#else //TODO +#define GETWANTTOLOADSAVEGAME() (true) +#define SETWANTTOLOADSAVEGAME(b) {} +#define GETFOUNDRECENTSAVEDGAMEWANTTOLOAD() (true) +#endif GlobalScene &Scene = *(GlobalScene*)0x726768; @@ -68,293 +82,68 @@ char *gString2 = (char*)0x878A40; wchar *gUString = (wchar*)0x74B018; wchar *gUString2 = (wchar*)0x6EDD70; -bool &b_FoundRecentSavedGameWantToLoad = *(bool*)0x95CDA8; - - -char version_name[64]; float FramesPerSecond = 30.0f; bool gbPrintShite = false; bool &gbModelViewer = *(bool*)0x95CD93; -bool DoRWStuffStartOfFrame_Horizon(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomRed, int16 BottomGreen, int16 BottomBlue, int16 Alpha); -bool DoRWStuffStartOfFrame(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomRed, int16 BottomGreen, int16 BottomBlue, int16 Alpha); -void DoRWStuffEndOfFrame(void); +int32 frameCount; -void RenderScene(void); -void RenderDebugShit(void); -void RenderEffects(void); -void Render2dStuff(void); -void RenderMenus(void); -void DoFade(void); -void Render2dStuffAfterFade(void); +RwRGBA gColourTop; -CSprite2d *LoadSplash(const char *name); +bool gameAlreadyInitialised; +float NumberOfChunksLoaded; +#define TOTALNUMCHUNKS 73.0f + +bool g_SlowMode = false; +char version_name[64]; + + +void GameInit(void); +void SystemInit(void); +void TheGame(void); extern void (*DebugMenuProcess)(void); extern void (*DebugMenuRender)(void); void DebugMenuInit(void); void DebugMenuPopulate(void); -void PrintGameVersion(); - -RwRGBA gColourTop; void -InitialiseGame(void) +ValidateVersion() { - LoadingScreen(nil, nil, "loadsc0"); - CGame::Initialise("DATA\\GTA3.DAT"); -} + int32 file = CFileMgr::OpenFile("models\\coll\\peds.col", "rb"); + char buff[128]; -#ifndef MASTER -void -TheModelViewer(void) -{ -#ifdef ASPECT_RATIO_SCALE - CDraw::SetAspectRatio(CDraw::FindAspectRatio()); -#endif - CAnimViewer::Update(); - CTimer::Update(); - SetLightsWithTimeOfDayColour(Scene.world); - CRenderer::ConstructRenderList(); - DoRWStuffStartOfFrame(CTimeCycle::GetSkyTopRed(), CTimeCycle::GetSkyTopGreen(), CTimeCycle::GetSkyTopBlue(), - CTimeCycle::GetSkyBottomRed(), CTimeCycle::GetSkyBottomGreen(), CTimeCycle::GetSkyBottomBlue(), - 255); - - CSprite2d::InitPerFrame(); - CFont::InitPerFrame(); - DefinedState(); - CVisibilityPlugins::InitAlphaEntityList(); - CAnimViewer::Render(); - Render2dStuff(); - DoRWStuffEndOfFrame(); -} -#endif - -void -Idle(void *arg) -{ -#ifdef ASPECT_RATIO_SCALE - CDraw::SetAspectRatio(CDraw::FindAspectRatio()); -#endif - - CTimer::Update(); - -#ifdef TIMEBARS - tbInit(); -#endif - - CSprite2d::InitPerFrame(); - CFont::InitPerFrame(); - - // We're basically merging FrontendIdle and Idle (just like TheGame on PS2) -#ifdef PS2_SAVE_DIALOG - // Only exists on PC FrontendIdle, probably some PS2 bug fix - if (FrontEndMenuManager.m_bMenuActive) - CSprite2d::SetRecipNearClip(); - - if (FrontEndMenuManager.m_bGameNotLoaded) { - CPad::UpdatePads(); - FrontEndMenuManager.Process(); - } else { - CPointLights::InitPerFrame(); -#ifdef TIMEBARS - tbStartTimer(0, "CGame::Process"); -#endif - CGame::Process(); -#ifdef TIMEBARS - tbEndTimer("CGame::Process"); - tbStartTimer(0, "DMAudio.Service"); -#endif - DMAudio.Service(); - -#ifdef TIMEBARS - tbEndTimer("DMAudio.Service"); -#endif - } - - if (RsGlobal.quit) - return; -#else - CPointLights::InitPerFrame(); -#ifdef TIMEBARS - tbStartTimer(0, "CGame::Process"); -#endif - CGame::Process(); -#ifdef TIMEBARS - tbEndTimer("CGame::Process"); - tbStartTimer(0, "DMAudio.Service"); -#endif - - DMAudio.Service(); - -#ifdef TIMEBARS - tbEndTimer("DMAudio.Service"); -#endif -#endif - - if(CGame::bDemoMode && CTimer::GetTimeInMilliseconds() > (3*60 + 30)*1000 && !CCutsceneMgr::IsCutsceneProcessing()){ - FrontEndMenuManager.m_bStartGameLoading = true; - FrontEndMenuManager.m_bLoadingSavedGame = false; - return; - } - - if(FrontEndMenuManager.m_bStartGameLoading || b_FoundRecentSavedGameWantToLoad) - return; - - SetLightsWithTimeOfDayColour(Scene.world); - - if(arg == nil) - return; - - if((!FrontEndMenuManager.m_bMenuActive || FrontEndMenuManager.m_bRenderGameInMenu) && - TheCamera.GetScreenFadeStatus() != FADE_2){ -#ifdef GTA_PC - if (!FrontEndMenuManager.m_bRenderGameInMenu) { - // This is from SA, but it's nice for windowed mode - RwV2d pos; - pos.x = SCREEN_WIDTH / 2.0f; - pos.y = SCREEN_HEIGHT / 2.0f; - RsMouseSetPos(&pos); + if ( file != -1 ) + { + CFileMgr::Seek(file, 100, SEEK_SET); + + for ( int i = 0; i < 128; i++ ) + { + CFileMgr::Read(file, &buff[i], sizeof(char)); + buff[i] -= 23; + if ( buff[i] == '\0' ) + break; + CFileMgr::Seek(file, 99, SEEK_CUR); } -#endif -#ifdef TIMEBARS - tbStartTimer(0, "CnstrRenderList"); -#endif - CRenderer::ConstructRenderList(); -#ifdef TIMEBARS - tbEndTimer("CnstrRenderList"); - tbStartTimer(0, "PreRender"); -#endif - CRenderer::PreRender(); -#ifdef TIMEBARS - tbEndTimer("PreRender"); -#endif - - if(CWeather::LightningFlash && !CCullZones::CamNoRain()){ - if(!DoRWStuffStartOfFrame_Horizon(255, 255, 255, 255, 255, 255, 255)) - return; - }else{ - if(!DoRWStuffStartOfFrame_Horizon(CTimeCycle::GetSkyTopRed(), CTimeCycle::GetSkyTopGreen(), CTimeCycle::GetSkyTopBlue(), - CTimeCycle::GetSkyBottomRed(), CTimeCycle::GetSkyBottomGreen(), CTimeCycle::GetSkyBottomBlue(), - 255)) - return; - } - - DefinedState(); - - // BUG. This has to be done BEFORE RwCameraBeginUpdate - RwCameraSetFarClipPlane(Scene.camera, CTimeCycle::GetFarClip()); - RwCameraSetFogDistance(Scene.camera, CTimeCycle::GetFogStart()); - -#ifdef TIMEBARS - tbStartTimer(0, "RenderScene"); -#endif - RenderScene(); -#ifdef TIMEBARS - tbEndTimer("RenderScene"); -#endif - RenderDebugShit(); - RenderEffects(); - -#ifdef TIMEBARS - tbStartTimer(0, "RenderMotionBlur"); -#endif - if((TheCamera.m_BlurType == MBLUR_NONE || TheCamera.m_BlurType == MBLUR_NORMAL) && - TheCamera.m_ScreenReductionPercentage > 0.0f) - TheCamera.SetMotionBlurAlpha(150); - TheCamera.RenderMotionBlur(); -#ifdef TIMEBARS - tbEndTimer("RenderMotionBlur"); - tbStartTimer(0, "Render2dStuff"); -#endif - Render2dStuff(); -#ifdef TIMEBARS - tbEndTimer("Render2dStuff"); -#endif - }else{ - float viewWindow = DEFAULT_VIEWWINDOW; -#ifdef ASPECT_RATIO_SCALE - CameraSize(Scene.camera, nil, viewWindow, SCREEN_ASPECT_RATIO); -#else - CameraSize(Scene.camera, nil, viewWindow, DEFAULT_ASPECT_RATIO); -#endif - CVisibilityPlugins::SetRenderWareCamera(Scene.camera); - RwCameraClear(Scene.camera, &gColourTop, rwCAMERACLEARZ); - if(!RsCameraBeginUpdate(Scene.camera)) + + if ( !strncmp(buff, "grandtheftauto3", 15) ) + { + strncpy(version_name, &buff[15], 64); + CFileMgr::CloseFile(file); return; + } } -#ifdef PS2_SAVE_DIALOG - if (FrontEndMenuManager.m_bMenuActive) - DefinedState(); -#endif -#ifdef TIMEBARS - tbStartTimer(0, "RenderMenus"); -#endif - RenderMenus(); -#ifdef TIMEBARS - tbEndTimer("RenderMenus"); - tbStartTimer(0, "DoFade"); -#endif - DoFade(); -#ifdef TIMEBARS - tbEndTimer("DoFade"); - tbStartTimer(0, "Render2dStuff-Fade"); -#endif - Render2dStuffAfterFade(); -#ifdef TIMEBARS - tbEndTimer("Render2dStuff-Fade"); -#endif - CCredits::Render(); - -#ifdef TIMEBARS - tbDisplay(); -#endif - - DoRWStuffEndOfFrame(); - -// if(g_SlowMode) -// ProcessSlowMode(); -} - -void -FrontendIdle(void) -{ -#ifdef ASPECT_RATIO_SCALE - CDraw::SetAspectRatio(CDraw::FindAspectRatio()); -#endif - - CTimer::Update(); - CSprite2d::SetRecipNearClip(); // this should be on InitialiseRenderWare according to PS2 asm. seems like a bug fix - CSprite2d::InitPerFrame(); - CFont::InitPerFrame(); - CPad::UpdatePads(); - FrontEndMenuManager.Process(); - - if(RsGlobal.quit) - return; - - float viewWindow = DEFAULT_VIEWWINDOW; -#ifdef ASPECT_RATIO_SCALE - CameraSize(Scene.camera, nil, viewWindow, SCREEN_ASPECT_RATIO); -#else - CameraSize(Scene.camera, nil, viewWindow, DEFAULT_ASPECT_RATIO); -#endif - CVisibilityPlugins::SetRenderWareCamera(Scene.camera); - RwCameraClear(Scene.camera, &gColourTop, rwCAMERACLEARZ); - if(!RsCameraBeginUpdate(Scene.camera)) - return; - - DefinedState(); // seems redundant, but breaks resolution change. - RenderMenus(); - DoFade(); - Render2dStuffAfterFade(); -// CFont::DrawFonts(); // redundant - DoRWStuffEndOfFrame(); + LoadingScreen("Invalid version", NULL, NULL); + + while(true) + { + ; + } } bool @@ -363,7 +152,7 @@ DoRWStuffStartOfFrame(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomR CRGBA TopColor(TopRed, TopGreen, TopBlue, Alpha); CRGBA BottomColor(BottomRed, BottomGreen, BottomBlue, Alpha); - CameraSize(Scene.camera, nil, DEFAULT_VIEWWINDOW, SCREEN_ASPECT_RATIO); + CameraSize(Scene.camera, nil, SCREEN_VIEWWINDOW, SCREEN_ASPECT_RATIO); CVisibilityPlugins::SetRenderWareCamera(Scene.camera); RwCameraClear(Scene.camera, &gColourTop, rwCAMERACLEARZ); @@ -381,7 +170,7 @@ DoRWStuffStartOfFrame(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomR bool DoRWStuffStartOfFrame_Horizon(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomRed, int16 BottomGreen, int16 BottomBlue, int16 Alpha) { - CameraSize(Scene.camera, nil, DEFAULT_VIEWWINDOW, SCREEN_ASPECT_RATIO); + CameraSize(Scene.camera, nil, SCREEN_VIEWWINDOW, SCREEN_ASPECT_RATIO); CVisibilityPlugins::SetRenderWareCamera(Scene.camera); RwCameraClear(Scene.camera, &gColourTop, rwCAMERACLEARZ); @@ -394,17 +183,6 @@ DoRWStuffStartOfFrame_Horizon(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 return true; } -void -DoRWStuffEndOfFrame(void) -{ - CDebug::DisplayScreenStrings(); // custom - CDebug::DebugDisplayTextBuffer(); - FlushObrsPrintfs(); - RwCameraEndUpdate(Scene.camera); - RsCameraShowRaster(Scene.camera); -} - - // This is certainly a very useful function void DoRWRenderHorizon(void) @@ -412,127 +190,6 @@ DoRWRenderHorizon(void) CClouds::RenderHorizon(); } -void -RenderScene(void) -{ - CClouds::Render(); - DoRWRenderHorizon(); - CRenderer::RenderRoads(); - CCoronas::RenderReflections(); - RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE); - CRenderer::RenderEverythingBarRoads(); - CRenderer::RenderBoats(); - DefinedState(); - CWaterLevel::RenderWater(); - CRenderer::RenderFadingInEntities(); - CRenderer::RenderVehiclesButNotBoats(); - CWeather::RenderRainStreaks(); -} - -void -RenderDebugShit(void) -{ - CTheScripts::RenderTheScriptDebugLines(); - if(gbShowCollisionLines) - CRenderer::RenderCollisionLines(); -} - -void -RenderEffects(void) -{ - CGlass::Render(); - CWaterCannons::Render(); - CSpecialFX::Render(); - CShadows::RenderStaticShadows(); - CShadows::RenderStoredShadows(); - CSkidmarks::Render(); - CAntennas::Render(); - CRubbish::Render(); - CCoronas::Render(); - CParticle::Render(); - CPacManPickups::Render(); - CWeaponEffects::Render(); - CPointLights::RenderFogEffect(); - CMovingThings::Render(); - CRenderer::RenderFirstPersonVehicle(); -} - -void -Render2dStuff(void) -{ - RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); - RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); - RwRenderStateSet(rwRENDERSTATECULLMODE, (void*)rwCULLMODECULLNONE); - - CReplay::Display(); - CPickups::RenderPickUpText(); - - if(TheCamera.m_WideScreenOn) - TheCamera.DrawBordersForWideScreen(); - - CPed *player = FindPlayerPed(); - int weaponType = 0; - if(player) - weaponType = player->GetWeapon()->m_eWeaponType; - - bool firstPersonWeapon = false; - int cammode = TheCamera.Cams[TheCamera.ActiveCam].Mode; - if(cammode == CCam::MODE_SNIPER || - cammode == CCam::MODE_SNIPER_RUNABOUT || - cammode == CCam::MODE_ROCKETLAUNCHER || - cammode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT) - firstPersonWeapon = true; - - // Draw black border for sniper and rocket launcher - if((weaponType == WEAPONTYPE_SNIPERRIFLE || weaponType == WEAPONTYPE_ROCKETLAUNCHER) && firstPersonWeapon){ - CRGBA black(0, 0, 0, 255); - - // top and bottom strips - if (weaponType == WEAPONTYPE_ROCKETLAUNCHER) { - CSprite2d::DrawRect(CRect(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT / 2 - SCREEN_SCALE_Y(180)), black); - CSprite2d::DrawRect(CRect(0.0f, SCREEN_HEIGHT / 2 + SCREEN_SCALE_Y(170), SCREEN_WIDTH, SCREEN_HEIGHT), black); - } - else { - CSprite2d::DrawRect(CRect(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT / 2 - SCREEN_SCALE_Y(210)), black); - CSprite2d::DrawRect(CRect(0.0f, SCREEN_HEIGHT / 2 + SCREEN_SCALE_Y(210), SCREEN_WIDTH, SCREEN_HEIGHT), black); - } - CSprite2d::DrawRect(CRect(0.0f, 0.0f, SCREEN_WIDTH / 2 - SCREEN_SCALE_X(210), SCREEN_HEIGHT), black); - CSprite2d::DrawRect(CRect(SCREEN_WIDTH / 2 + SCREEN_SCALE_X(210), 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT), black); - } - - MusicManager.DisplayRadioStationName(); - TheConsole.Display(); -/* - if(CSceneEdit::m_bEditOn) - CSceneEdit::Draw(); - else -*/ - CHud::Draw(); - CUserDisplay::OnscnTimer.ProcessForDisplay(); - CMessages::Display(); - CDarkel::DrawMessages(); - CGarages::PrintMessages(); - CPad::PrintErrorMessage(); - CFont::DrawFonts(); - - DebugMenuRender(); -} - -void -RenderMenus(void) -{ - if(FrontEndMenuManager.m_bMenuActive) - FrontEndMenuManager.DrawFrontEnd(); -} - -bool &JustLoadedDontFadeInYet = *(bool*)0x95CDB4; -bool &StillToFadeOut = *(bool*)0x95CD99; -uint32 &TimeStartedCountingForFade = *(uint32*)0x9430EC; -uint32 &TimeToStayFadedBeforeFadeOut = *(uint32*)0x611564; - void DoFade(void) { @@ -613,6 +270,389 @@ DoFade(void) } } +void +DoRWStuffEndOfFrame(void) +{ + CDebug::DisplayScreenStrings(); // custom + CDebug::DebugDisplayTextBuffer(); + FlushObrsPrintfs(); + RwCameraEndUpdate(Scene.camera); + RsCameraShowRaster(Scene.camera); +} + +static RwBool +PluginAttach(void) +{ + if( !RpWorldPluginAttach() ) + { + printf("Couldn't attach world plugin\n"); + + return FALSE; + } + + if( !RpSkinPluginAttach() ) + { + printf("Couldn't attach RpSkin plugin\n"); + + return FALSE; + } + + if( !RpHAnimPluginAttach() ) + { + printf("Couldn't attach RpHAnim plugin\n"); + + return FALSE; + } + + if( !NodeNamePluginAttach() ) + { + printf("Couldn't attach node name plugin\n"); + + return FALSE; + } + + if( !CVisibilityPlugins::PluginAttach() ) + { + printf("Couldn't attach visibility plugins\n"); + + return FALSE; + } + + if( !RpAnimBlendPluginAttach() ) + { + printf("Couldn't attach RpAnimBlend plugin\n"); + + return FALSE; + } + + if( !RpMatFXPluginAttach() ) + { + printf("Couldn't attach RpMatFX plugin\n"); + + return FALSE; + } + + return TRUE; +} + +static RwBool +Initialise3D(void *param) +{ + if (RsRwInitialise(param)) + { + // + DebugMenuInit(); + DebugMenuPopulate(); + // + + return CGame::InitialiseRenderWare(); + } + + return (FALSE); +} + +static void +Terminate3D(void) +{ + CGame::ShutdownRenderWare(); + + RsRwTerminate(); + + return; +} + +CSprite2d splash; +int splashTxdId = -1; + +CSprite2d* +LoadSplash(const char *name) +{ + RwTexDictionary *txd; + char filename[140]; + RwTexture *tex = nil; + + if(name == nil) + return &splash; + if(splashTxdId == -1) + splashTxdId = CTxdStore::AddTxdSlot("splash"); + + txd = CTxdStore::GetSlot(splashTxdId)->texDict; + if(txd) + tex = RwTexDictionaryFindNamedTexture(txd, name); + // if texture is found, splash was already set up below + + if(tex == nil){ + CFileMgr::SetDir("TXD\\"); + sprintf(filename, "%s.txd", name); + if(splash.m_pTexture) + splash.Delete(); + if(txd) + CTxdStore::RemoveTxd(splashTxdId); + CTxdStore::LoadTxd(splashTxdId, filename); + CTxdStore::AddRef(splashTxdId); + CTxdStore::PushCurrentTxd(); + CTxdStore::SetCurrentTxd(splashTxdId); + splash.SetTexture(name); + CTxdStore::PopCurrentTxd(); + CFileMgr::SetDir(""); + } + + return &splash; +} + +void +DestroySplashScreen(void) +{ + splash.Delete(); + if(splashTxdId != -1) + CTxdStore::RemoveTxdSlot(splashTxdId); + splashTxdId = -1; +} + +char* +GetRandomSplashScreen(void) +{ + int index; + static int index2 = 0; + static char splashName[128]; + static int splashIndex[24] = { + 25, 22, 4, 13, + 1, 21, 14, 16, + 10, 12, 5, 9, + 11, 18, 3, 2, + 19, 23, 7, 17, + 15, 6, 8, 20 + }; + + index = splashIndex[4*index2 + CGeneral::GetRandomNumberInRange(0, 3)]; + index2++; + if(index2 == 6) + index2 = 0; + sprintf(splashName, "loadsc%d", index); + return splashName; +} + +char* +GetLevelSplashScreen(int level) +{ + static char *splashScreens[4] = { + nil, + "splash1", + "splash2", + "splash3", + }; + + return splashScreens[level]; +} + +void +ResetLoadingScreenBar() +{ + NumberOfChunksLoaded = 0.0f; +} + +// TODO: compare with PS2 +void +LoadingScreen(const char *str1, const char *str2, const char *splashscreen) +{ + CSprite2d *splash; + +#ifndef RANDOMSPLASH + if(CGame::frenchGame || CGame::germanGame || !CGame::nastyGame) + splashscreen = "mainsc2"; + else + splashscreen = "mainsc1"; +#endif + + splash = LoadSplash(splashscreen); + + if(RsGlobal.quit) + return; + + if(DoRWStuffStartOfFrame(0, 0, 0, 0, 0, 0, 255)){ + CSprite2d::SetRecipNearClip(); + CSprite2d::InitPerFrame(); + CFont::InitPerFrame(); + DefinedState(); + RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)rwTEXTUREADDRESSCLAMP); + splash->Draw(CRect(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT), CRGBA(255, 255, 255, 255)); + + if(str1){ + NumberOfChunksLoaded += 1; + + float hpos = SCREEN_SCALE_X(40); + float length = SCREEN_WIDTH - SCREEN_SCALE_X(100); + float vpos = SCREEN_HEIGHT - SCREEN_SCALE_Y(13); + float height = SCREEN_SCALE_Y(7); + CSprite2d::DrawRect(CRect(hpos, vpos, hpos + length, vpos + height), CRGBA(40, 53, 68, 255)); + + length *= NumberOfChunksLoaded/TOTALNUMCHUNKS; + CSprite2d::DrawRect(CRect(hpos, vpos, hpos + length, vpos + height), CRGBA(81, 106, 137, 255)); + + // this is done by the game but is unused + CFont::SetScale(SCREEN_SCALE_X(2), SCREEN_SCALE_Y(2)); + CFont::SetPropOn(); + CFont::SetRightJustifyOn(); + CFont::SetFontStyle(FONT_HEADING); + +#ifdef CHATTYSPLASH + // my attempt + static wchar tmpstr[80]; + float yscale = SCREEN_SCALE_Y(0.9f); + vpos -= 45*yscale; + CFont::SetScale(SCREEN_SCALE_X(0.75f), yscale); + CFont::SetPropOn(); + CFont::SetRightJustifyOff(); + CFont::SetFontStyle(FONT_BANK); + CFont::SetColor(CRGBA(255, 255, 255, 255)); + AsciiToUnicode(str1, tmpstr); + CFont::PrintString(hpos, vpos, tmpstr); + vpos += 22*yscale; + AsciiToUnicode(str2, tmpstr); + CFont::PrintString(hpos, vpos, tmpstr); +#endif + } + + CFont::DrawFonts(); + DoRWStuffEndOfFrame(); + } +} + +void +LoadingIslandScreen(const char *levelName) +{ + CSprite2d *splash; + wchar *name; + char str[100]; + wchar wstr[80]; + CRGBA col; + + splash = LoadSplash(nil); + name = TheText.Get(levelName); + if(!DoRWStuffStartOfFrame(0, 0, 0, 0, 0, 0, 255)) + return; + + CSprite2d::SetRecipNearClip(); + CSprite2d::InitPerFrame(); + CFont::InitPerFrame(); + DefinedState(); + col = CRGBA(255, 255, 255, 255); + splash->Draw(CRect(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT), col, col, col, col); + CFont::SetBackgroundOff(); + CFont::SetScale(1.5f, 1.5f); + CFont::SetPropOn(); + CFont::SetRightJustifyOn(); + CFont::SetRightJustifyWrap(150.0f); + CFont::SetFontStyle(FONT_HEADING); + sprintf(str, "WELCOME TO"); + AsciiToUnicode(str, wstr); + CFont::SetDropColor(CRGBA(0, 0, 0, 255)); + CFont::SetDropShadowPosition(3); + CFont::SetColor(CRGBA(243, 237, 71, 255)); + CFont::SetScale(SCREEN_STRETCH_X(1.2f), SCREEN_STRETCH_Y(1.2f)); + CFont::PrintString(SCREEN_WIDTH - 20, SCREEN_STRETCH_FROM_BOTTOM(110.0f), TheText.Get("WELCOME")); + TextCopy(wstr, name); + TheText.UpperCase(wstr); + CFont::SetColor(CRGBA(243, 237, 71, 255)); + CFont::SetScale(SCREEN_STRETCH_X(1.2f), SCREEN_STRETCH_Y(1.2f)); + CFont::PrintString(SCREEN_WIDTH-20, SCREEN_STRETCH_FROM_BOTTOM(80.0f), wstr); + CFont::DrawFonts(); + DoRWStuffEndOfFrame(); +} + +void +ProcessSlowMode(void) +{ + int16 lX = CPad::GetPad(0)->NewState.LeftStickX; + int16 lY = CPad::GetPad(0)->NewState.LeftStickY; + int16 rX = CPad::GetPad(0)->NewState.RightStickX; + int16 rY = CPad::GetPad(0)->NewState.RightStickY; + int16 L1 = CPad::GetPad(0)->NewState.LeftShoulder1; + int16 L2 = CPad::GetPad(0)->NewState.LeftShoulder2; + int16 R1 = CPad::GetPad(0)->NewState.RightShoulder1; + int16 R2 = CPad::GetPad(0)->NewState.RightShoulder2; + int16 up = CPad::GetPad(0)->NewState.DPadUp; + int16 down = CPad::GetPad(0)->NewState.DPadDown; + int16 left = CPad::GetPad(0)->NewState.DPadLeft; + int16 right = CPad::GetPad(0)->NewState.DPadRight; + int16 start = CPad::GetPad(0)->NewState.Start; + int16 select = CPad::GetPad(0)->NewState.Select; + int16 square = CPad::GetPad(0)->NewState.Square; + int16 triangle = CPad::GetPad(0)->NewState.Triangle; + int16 cross = CPad::GetPad(0)->NewState.Cross; + int16 circle = CPad::GetPad(0)->NewState.Circle; + int16 L3 = CPad::GetPad(0)->NewState.LeftShock; + int16 R3 = CPad::GetPad(0)->NewState.RightShock; + int16 networktalk = CPad::GetPad(0)->NewState.NetworkTalk; + int16 stop = true; + + do + { + if ( CPad::GetPad(1)->GetLeftShoulder1JustDown() || CPad::GetPad(1)->GetRightShoulder1() ) + break; + + if ( stop ) + { + CTimer::Stop(); + stop = false; + } + + CPad::UpdatePads(); + + RwCameraBeginUpdate(Scene.camera); + RwCameraEndUpdate(Scene.camera); + + if ( CPad::GetPad(1)->GetLeftShoulder1JustDown() || CPad::GetPad(1)->GetRightShoulder1() ) + break; + + } while (!CPad::GetPad(1)->GetRightShoulder1()); + + + CPad::GetPad(0)->OldState.LeftStickX = lX; + CPad::GetPad(0)->OldState.LeftStickY = lY; + CPad::GetPad(0)->OldState.RightStickX = rX; + CPad::GetPad(0)->OldState.RightStickY = rY; + CPad::GetPad(0)->OldState.LeftShoulder1 = L1; + CPad::GetPad(0)->OldState.LeftShoulder2 = L2; + CPad::GetPad(0)->OldState.RightShoulder1 = R1; + CPad::GetPad(0)->OldState.RightShoulder2 = R2; + CPad::GetPad(0)->OldState.DPadUp = up; + CPad::GetPad(0)->OldState.DPadDown = down; + CPad::GetPad(0)->OldState.DPadLeft = left; + CPad::GetPad(0)->OldState.DPadRight = right; + CPad::GetPad(0)->OldState.Start = start; + CPad::GetPad(0)->OldState.Select = select; + CPad::GetPad(0)->OldState.Square = square; + CPad::GetPad(0)->OldState.Triangle = triangle; + CPad::GetPad(0)->OldState.Cross = cross; + CPad::GetPad(0)->OldState.Circle = circle; + CPad::GetPad(0)->OldState.LeftShock = L3; + CPad::GetPad(0)->OldState.RightShock = R3; + CPad::GetPad(0)->OldState.NetworkTalk = networktalk; + CPad::GetPad(0)->NewState.LeftStickX = lX; + CPad::GetPad(0)->NewState.LeftStickY = lY; + CPad::GetPad(0)->NewState.RightStickX = rX; + CPad::GetPad(0)->NewState.RightStickY = rY; + CPad::GetPad(0)->NewState.LeftShoulder1 = L1; + CPad::GetPad(0)->NewState.LeftShoulder2 = L2; + CPad::GetPad(0)->NewState.RightShoulder1 = R1; + CPad::GetPad(0)->NewState.RightShoulder2 = R2; + CPad::GetPad(0)->NewState.DPadUp = up; + CPad::GetPad(0)->NewState.DPadDown = down; + CPad::GetPad(0)->NewState.DPadLeft = left; + CPad::GetPad(0)->NewState.DPadRight = right; + CPad::GetPad(0)->NewState.Start = start; + CPad::GetPad(0)->NewState.Select = select; + CPad::GetPad(0)->NewState.Square = square; + CPad::GetPad(0)->NewState.Triangle = triangle; + CPad::GetPad(0)->NewState.Cross = cross; + CPad::GetPad(0)->NewState.Circle = circle; + CPad::GetPad(0)->NewState.LeftShock = L3; + CPad::GetPad(0)->NewState.RightShock = R3; + CPad::GetPad(0)->NewState.NetworkTalk = networktalk; +} + + float FramesPerSecondCounter; int32 FrameSamples; @@ -736,309 +776,369 @@ DisplayGameDebugText() } #endif +void +RenderScene(void) +{ + CClouds::Render(); + DoRWRenderHorizon(); + CRenderer::RenderRoads(); + CCoronas::RenderReflections(); + RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE); + CRenderer::RenderEverythingBarRoads(); + CRenderer::RenderBoats(); + DefinedState(); + CWaterLevel::RenderWater(); + CRenderer::RenderFadingInEntities(); + CRenderer::RenderVehiclesButNotBoats(); + CWeather::RenderRainStreaks(); +} + +void +RenderDebugShit(void) +{ + CTheScripts::RenderTheScriptDebugLines(); + if(gbShowCollisionLines) + CRenderer::RenderCollisionLines(); +} + +void +RenderEffects(void) +{ + CGlass::Render(); + CWaterCannons::Render(); + CSpecialFX::Render(); + CShadows::RenderStaticShadows(); + CShadows::RenderStoredShadows(); + CSkidmarks::Render(); + CAntennas::Render(); + CRubbish::Render(); + CCoronas::Render(); + CParticle::Render(); + CPacManPickups::Render(); + CWeaponEffects::Render(); + CPointLights::RenderFogEffect(); + CMovingThings::Render(); + CRenderer::RenderFirstPersonVehicle(); +} + +void +Render2dStuff(void) +{ + RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); + RwRenderStateSet(rwRENDERSTATECULLMODE, (void*)rwCULLMODECULLNONE); + + CReplay::Display(); + CPickups::RenderPickUpText(); + + if(TheCamera.m_WideScreenOn) + TheCamera.DrawBordersForWideScreen(); + + CPed *player = FindPlayerPed(); + int weaponType = 0; + if(player) + weaponType = player->GetWeapon()->m_eWeaponType; + + bool firstPersonWeapon = false; + int cammode = TheCamera.Cams[TheCamera.ActiveCam].Mode; + if(cammode == CCam::MODE_SNIPER || + cammode == CCam::MODE_SNIPER_RUNABOUT || + cammode == CCam::MODE_ROCKETLAUNCHER || + cammode == CCam::MODE_ROCKETLAUNCHER_RUNABOUT) + firstPersonWeapon = true; + + // Draw black border for sniper and rocket launcher + if((weaponType == WEAPONTYPE_SNIPERRIFLE || weaponType == WEAPONTYPE_ROCKETLAUNCHER) && firstPersonWeapon){ + CRGBA black(0, 0, 0, 255); + + // top and bottom strips + if (weaponType == WEAPONTYPE_ROCKETLAUNCHER) { + CSprite2d::DrawRect(CRect(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT / 2 - SCREEN_SCALE_Y(180)), black); + CSprite2d::DrawRect(CRect(0.0f, SCREEN_HEIGHT / 2 + SCREEN_SCALE_Y(170), SCREEN_WIDTH, SCREEN_HEIGHT), black); + } + else { + CSprite2d::DrawRect(CRect(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT / 2 - SCREEN_SCALE_Y(210)), black); + CSprite2d::DrawRect(CRect(0.0f, SCREEN_HEIGHT / 2 + SCREEN_SCALE_Y(210), SCREEN_WIDTH, SCREEN_HEIGHT), black); + } + CSprite2d::DrawRect(CRect(0.0f, 0.0f, SCREEN_WIDTH / 2 - SCREEN_SCALE_X(210), SCREEN_HEIGHT), black); + CSprite2d::DrawRect(CRect(SCREEN_WIDTH / 2 + SCREEN_SCALE_X(210), 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT), black); + } + + MusicManager.DisplayRadioStationName(); + TheConsole.Display(); +/* + if(CSceneEdit::m_bEditOn) + CSceneEdit::Draw(); + else +*/ + CHud::Draw(); + CUserDisplay::OnscnTimer.ProcessForDisplay(); + CMessages::Display(); + CDarkel::DrawMessages(); + CGarages::PrintMessages(); + CPad::PrintErrorMessage(); + CFont::DrawFonts(); + + DebugMenuRender(); +} + +void +RenderMenus(void) +{ +#ifdef PS2 + if (FrontEndMenuManager.m_bWantToDraw) + { + gMainHeap.PushMemId(_TODOCONST(17)); + FrontEndMenuManager.DrawFrontEnd(); + gMainHeap.PopMemId(); + } +#else + if(FrontEndMenuManager.m_bMenuActive) + FrontEndMenuManager.DrawFrontEnd(); +#endif +} + void Render2dStuffAfterFade(void) { #ifndef MASTER DisplayGameDebugText(); - //PrintGameVersion(); #endif CHud::DrawAfterFade(); CFont::DrawFonts(); } -CSprite2d splash; -int splashTxdId = -1; - -CSprite2d* -LoadSplash(const char *name) -{ - RwTexDictionary *txd; - char filename[140]; - RwTexture *tex = nil; - - if(name == nil) - return &splash; - if(splashTxdId == -1) - splashTxdId = CTxdStore::AddTxdSlot("splash"); - - txd = CTxdStore::GetSlot(splashTxdId)->texDict; - if(txd) - tex = RwTexDictionaryFindNamedTexture(txd, name); - // if texture is found, splash was already set up below - - if(tex == nil){ - CFileMgr::SetDir("TXD\\"); - sprintf(filename, "%s.txd", name); - if(splash.m_pTexture) - splash.Delete(); - if(txd) - CTxdStore::RemoveTxd(splashTxdId); - CTxdStore::LoadTxd(splashTxdId, filename); - CTxdStore::AddRef(splashTxdId); - CTxdStore::PushCurrentTxd(); - CTxdStore::SetCurrentTxd(splashTxdId); - splash.SetTexture(name); - CTxdStore::PopCurrentTxd(); - CFileMgr::SetDir(""); - } - - return &splash; -} - void -DestroySplashScreen(void) +Idle(void *arg) { - splash.Delete(); - if(splashTxdId != -1) - CTxdStore::RemoveTxdSlot(splashTxdId); - splashTxdId = -1; -} - -float NumberOfChunksLoaded; -#define TOTALNUMCHUNKS 73.0f - -void -ResetLoadingScreenBar() -{ - NumberOfChunksLoaded = 0.0f; -} - -// TODO: compare with PS2 -void -LoadingScreen(const char *str1, const char *str2, const char *splashscreen) -{ - CSprite2d *splash; - -#ifndef RANDOMSPLASH - if(CGame::frenchGame || CGame::germanGame || !CGame::nastyGame) - splashscreen = "mainsc2"; - else - splashscreen = "mainsc1"; +#ifdef ASPECT_RATIO_SCALE + CDraw::SetAspectRatio(CDraw::FindAspectRatio()); #endif - splash = LoadSplash(splashscreen); + CTimer::Update(); + +#ifdef TIMEBARS + tbInit(); +#endif + + CSprite2d::InitPerFrame(); + CFont::InitPerFrame(); + + // We're basically merging FrontendIdle and Idle (just like TheGame on PS2) +#ifdef PS2_SAVE_DIALOG + // Only exists on PC FrontendIdle, probably some PS2 bug fix + if (FrontEndMenuManager.m_bMenuActive) + CSprite2d::SetRecipNearClip(); + + if (FrontEndMenuManager.m_bGameNotLoaded) { + CPad::UpdatePads(); + FrontEndMenuManager.Process(); + } else { + CPointLights::InitPerFrame(); +#ifdef TIMEBARS + tbStartTimer(0, "CGame::Process"); +#endif + CGame::Process(); +#ifdef TIMEBARS + tbEndTimer("CGame::Process"); + tbStartTimer(0, "DMAudio.Service"); +#endif + DMAudio.Service(); + +#ifdef TIMEBARS + tbEndTimer("DMAudio.Service"); +#endif + } + + if (RsGlobal.quit) + return; +#else + CPointLights::InitPerFrame(); +#ifdef TIMEBARS + tbStartTimer(0, "CGame::Process"); +#endif + CGame::Process(); +#ifdef TIMEBARS + tbEndTimer("CGame::Process"); + tbStartTimer(0, "DMAudio.Service"); +#endif + + DMAudio.Service(); + +#ifdef TIMEBARS + tbEndTimer("DMAudio.Service"); +#endif +#endif + + if(CGame::bDemoMode && CTimer::GetTimeInMilliseconds() > (3*60 + 30)*1000 && !CCutsceneMgr::IsCutsceneProcessing()){ + FrontEndMenuManager.m_bWantToRestart = true; + FrontEndMenuManager.m_bWantToLoad = false; + return; + } + + if(FrontEndMenuManager.m_bWantToRestart || b_FoundRecentSavedGameWantToLoad) + return; + + SetLightsWithTimeOfDayColour(Scene.world); + + if(arg == nil) + return; + + if((!FrontEndMenuManager.m_bMenuActive || FrontEndMenuManager.m_bRenderGameInMenu) && + TheCamera.GetScreenFadeStatus() != FADE_2) + { +#ifdef GTA_PC + if (!FrontEndMenuManager.m_bRenderGameInMenu) { + // This is from SA, but it's nice for windowed mode + RwV2d pos; + pos.x = SCREEN_WIDTH / 2.0f; + pos.y = SCREEN_HEIGHT / 2.0f; + RsMouseSetPos(&pos); + } +#endif +#ifdef TIMEBARS + tbStartTimer(0, "CnstrRenderList"); +#endif + CRenderer::ConstructRenderList(); +#ifdef TIMEBARS + tbEndTimer("CnstrRenderList"); + tbStartTimer(0, "PreRender"); +#endif + CRenderer::PreRender(); +#ifdef TIMEBARS + tbEndTimer("PreRender"); +#endif + + if(CWeather::LightningFlash && !CCullZones::CamNoRain()){ + if(!DoRWStuffStartOfFrame_Horizon(255, 255, 255, 255, 255, 255, 255)) + return; + }else{ + if(!DoRWStuffStartOfFrame_Horizon(CTimeCycle::GetSkyTopRed(), CTimeCycle::GetSkyTopGreen(), CTimeCycle::GetSkyTopBlue(), + CTimeCycle::GetSkyBottomRed(), CTimeCycle::GetSkyBottomGreen(), CTimeCycle::GetSkyBottomBlue(), + 255)) + return; + } + + DefinedState(); + + // BUG. This has to be done BEFORE RwCameraBeginUpdate + RwCameraSetFarClipPlane(Scene.camera, CTimeCycle::GetFarClip()); + RwCameraSetFogDistance(Scene.camera, CTimeCycle::GetFogStart()); + +#ifdef TIMEBARS + tbStartTimer(0, "RenderScene"); +#endif + RenderScene(); +#ifdef TIMEBARS + tbEndTimer("RenderScene"); +#endif + RenderDebugShit(); + RenderEffects(); + +#ifdef TIMEBARS + tbStartTimer(0, "RenderMotionBlur"); +#endif + if((TheCamera.m_BlurType == MBLUR_NONE || TheCamera.m_BlurType == MBLUR_NORMAL) && + TheCamera.m_ScreenReductionPercentage > 0.0f) + TheCamera.SetMotionBlurAlpha(150); + TheCamera.RenderMotionBlur(); +#ifdef TIMEBARS + tbEndTimer("RenderMotionBlur"); + tbStartTimer(0, "Render2dStuff"); +#endif + Render2dStuff(); +#ifdef TIMEBARS + tbEndTimer("Render2dStuff"); +#endif + }else{ +#ifdef ASPECT_RATIO_SCALE + CameraSize(Scene.camera, nil, SCREEN_VIEWWINDOW, SCREEN_ASPECT_RATIO); +#else + CameraSize(Scene.camera, nil, SCREEN_VIEWWINDOW, DEFAULT_ASPECT_RATIO); +#endif + CVisibilityPlugins::SetRenderWareCamera(Scene.camera); + RwCameraClear(Scene.camera, &gColourTop, rwCAMERACLEARZ); + if(!RsCameraBeginUpdate(Scene.camera)) + return; + } + +#ifdef PS2_SAVE_DIALOG + if (FrontEndMenuManager.m_bMenuActive) + DefinedState(); +#endif +#ifdef TIMEBARS + tbStartTimer(0, "RenderMenus"); +#endif + RenderMenus(); +#ifdef TIMEBARS + tbEndTimer("RenderMenus"); + tbStartTimer(0, "DoFade"); +#endif + DoFade(); +#ifdef TIMEBARS + tbEndTimer("DoFade"); + tbStartTimer(0, "Render2dStuff-Fade"); +#endif + Render2dStuffAfterFade(); +#ifdef TIMEBARS + tbEndTimer("Render2dStuff-Fade"); +#endif + CCredits::Render(); + +#ifdef TIMEBARS + tbDisplay(); +#endif + + DoRWStuffEndOfFrame(); + + if(g_SlowMode) + ProcessSlowMode(); +} + +void +FrontendIdle(void) +{ +#ifdef ASPECT_RATIO_SCALE + CDraw::SetAspectRatio(CDraw::FindAspectRatio()); +#endif + + CTimer::Update(); + CSprite2d::SetRecipNearClip(); // this should be on InitialiseRenderWare according to PS2 asm. seems like a bug fix + CSprite2d::InitPerFrame(); + CFont::InitPerFrame(); + CPad::UpdatePads(); + FrontEndMenuManager.Process(); if(RsGlobal.quit) return; - if(DoRWStuffStartOfFrame(0, 0, 0, 0, 0, 0, 255)){ - CSprite2d::SetRecipNearClip(); - CSprite2d::InitPerFrame(); - CFont::InitPerFrame(); - DefinedState(); - RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)rwTEXTUREADDRESSCLAMP); - splash->Draw(CRect(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT), CRGBA(255, 255, 255, 255)); - - if(str1){ - NumberOfChunksLoaded += 1; - - float hpos = SCREEN_SCALE_X(40); - float length = SCREEN_WIDTH - SCREEN_SCALE_X(100); - float vpos = SCREEN_HEIGHT - SCREEN_SCALE_Y(13); - float height = SCREEN_SCALE_Y(7); - CSprite2d::DrawRect(CRect(hpos, vpos, hpos + length, vpos + height), CRGBA(40, 53, 68, 255)); - - length *= NumberOfChunksLoaded/TOTALNUMCHUNKS; - CSprite2d::DrawRect(CRect(hpos, vpos, hpos + length, vpos + height), CRGBA(81, 106, 137, 255)); - - // this is done by the game but is unused - CFont::SetScale(SCREEN_SCALE_X(2), SCREEN_SCALE_Y(2)); - CFont::SetPropOn(); - CFont::SetRightJustifyOn(); - CFont::SetFontStyle(FONT_HEADING); - -#ifdef CHATTYSPLASH - // my attempt - static wchar tmpstr[80]; - float yscale = SCREEN_SCALE_Y(0.9f); - vpos -= 45*yscale; - CFont::SetScale(SCREEN_SCALE_X(0.75f), yscale); - CFont::SetPropOn(); - CFont::SetRightJustifyOff(); - CFont::SetFontStyle(FONT_BANK); - CFont::SetColor(CRGBA(255, 255, 255, 255)); - AsciiToUnicode(str1, tmpstr); - CFont::PrintString(hpos, vpos, tmpstr); - vpos += 22*yscale; - AsciiToUnicode(str2, tmpstr); - CFont::PrintString(hpos, vpos, tmpstr); +#ifdef ASPECT_RATIO_SCALE + CameraSize(Scene.camera, nil, SCREEN_VIEWWINDOW, SCREEN_ASPECT_RATIO); +#else + CameraSize(Scene.camera, nil, SCREEN_VIEWWINDOW, DEFAULT_ASPECT_RATIO); #endif - } - - CFont::DrawFonts(); - DoRWStuffEndOfFrame(); - } -} - -void -LoadingIslandScreen(const char *levelName) -{ - CSprite2d *splash; - wchar *name; - char str[100]; - wchar wstr[80]; - CRGBA col; - - splash = LoadSplash(nil); - name = TheText.Get(levelName); - if(!DoRWStuffStartOfFrame(0, 0, 0, 0, 0, 0, 255)) + CVisibilityPlugins::SetRenderWareCamera(Scene.camera); + RwCameraClear(Scene.camera, &gColourTop, rwCAMERACLEARZ); + if(!RsCameraBeginUpdate(Scene.camera)) return; - CSprite2d::SetRecipNearClip(); - CSprite2d::InitPerFrame(); - CFont::InitPerFrame(); - DefinedState(); - col = CRGBA(255, 255, 255, 255); - splash->Draw(CRect(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT), col, col, col, col); - CFont::SetBackgroundOff(); - CFont::SetScale(1.5f, 1.5f); - CFont::SetPropOn(); - CFont::SetRightJustifyOn(); - CFont::SetRightJustifyWrap(150.0f); - CFont::SetFontStyle(FONT_HEADING); - sprintf(str, "WELCOME TO"); - AsciiToUnicode(str, wstr); - CFont::SetDropColor(CRGBA(0, 0, 0, 255)); - CFont::SetDropShadowPosition(3); - CFont::SetColor(CRGBA(243, 237, 71, 255)); - CFont::SetScale(SCREEN_STRETCH_X(1.2f), SCREEN_STRETCH_Y(1.2f)); - CFont::PrintString(SCREEN_WIDTH - 20, SCREEN_STRETCH_FROM_BOTTOM(110.0f), TheText.Get("WELCOME")); - TextCopy(wstr, name); - TheText.UpperCase(wstr); - CFont::SetColor(CRGBA(243, 237, 71, 255)); - CFont::SetScale(SCREEN_STRETCH_X(1.2f), SCREEN_STRETCH_Y(1.2f)); - CFont::PrintString(SCREEN_WIDTH-20, SCREEN_STRETCH_FROM_BOTTOM(80.0f), wstr); - CFont::DrawFonts(); + DefinedState(); // seems redundant, but breaks resolution change. + RenderMenus(); + DoFade(); + Render2dStuffAfterFade(); +// CFont::DrawFonts(); // redundant DoRWStuffEndOfFrame(); } -char* -GetLevelSplashScreen(int level) +void +InitialiseGame(void) { - static char *splashScreens[4] = { - nil, - "splash1", - "splash2", - "splash3", - }; - - return splashScreens[level]; -} - -char* -GetRandomSplashScreen(void) -{ - int index; - static int index2 = 0; - static char splashName[128]; - static int splashIndex[24] = { - 25, 22, 4, 13, - 1, 21, 14, 16, - 10, 12, 5, 9, - 11, 18, 3, 2, - 19, 23, 7, 17, - 15, 6, 8, 20 - }; - - index = splashIndex[4*index2 + CGeneral::GetRandomNumberInRange(0, 3)]; - index2++; - if(index2 == 6) - index2 = 0; - sprintf(splashName, "loadsc%d", index); - return splashName; -} - -#include "rwcore.h" -#include "rpworld.h" -#include "rpmatfx.h" -#include "rpskin.h" -#include "rphanim.h" -#include "rtbmp.h" - -_TODO("temp, move this includes out of here") - -static RwBool -PluginAttach(void) -{ - if( !RpWorldPluginAttach() ) - { - printf("Couldn't attach world plugin\n"); - - return FALSE; - } - - if( !RpSkinPluginAttach() ) - { - printf("Couldn't attach RpSkin plugin\n"); - - return FALSE; - } - - if( !RpHAnimPluginAttach() ) - { - printf("Couldn't attach RpHAnim plugin\n"); - - return FALSE; - } - - if( !NodeNamePluginAttach() ) - { - printf("Couldn't attach node name plugin\n"); - - return FALSE; - } - - if( !CVisibilityPlugins::PluginAttach() ) - { - printf("Couldn't attach visibility plugins\n"); - - return FALSE; - } - - if( !RpAnimBlendPluginAttach() ) - { - printf("Couldn't attach RpAnimBlend plugin\n"); - - return FALSE; - } - - if( !RpMatFXPluginAttach() ) - { - printf("Couldn't attach RpMatFX plugin\n"); - - return FALSE; - } - - return TRUE; -} - -static RwBool -Initialise3D(void *param) -{ - if (RsRwInitialise(param)) - { - // - DebugMenuInit(); - DebugMenuPopulate(); - // - - return CGame::InitialiseRenderWare(); - } - - return (FALSE); -} - - -static void -Terminate3D(void) -{ - CGame::ShutdownRenderWare(); - - RsRwTerminate(); - - return; + LoadingScreen(nil, nil, "loadsc0"); + CGame::Initialise("DATA\\GTA3.DAT"); } RsEventStatus @@ -1056,7 +1156,7 @@ AppEventHandler(RsEvent event, void *param) { CameraSize(Scene.camera, (RwRect *)param, - DEFAULT_VIEWWINDOW, DEFAULT_ASPECT_RATIO); + SCREEN_VIEWWINDOW, DEFAULT_ASPECT_RATIO); return rsEVENTPROCESSED; } @@ -1133,58 +1233,583 @@ AppEventHandler(RsEvent event, void *param) } } -void PrintGameVersion() +#ifndef MASTER +void +TheModelViewer(void) { - CFont::SetPropOn(); - CFont::SetBackgroundOff(); - CFont::SetScale(SCREEN_SCALE_X(0.7f), SCREEN_SCALE_Y(0.5f)); - CFont::SetCentreOff(); - CFont::SetRightJustifyOff(); - CFont::SetBackGroundOnlyTextOff(); - CFont::SetFontStyle(FONT_BANK); - CFont::SetWrapx(SCREEN_WIDTH); - CFont::SetDropShadowPosition(0); - CFont::SetDropColor(CRGBA(0, 0, 0, 255)); - CFont::SetColor(CRGBA(235, 170, 50, 255)); +#if (defined(PS2) || defined(XBOX)) + //TODO +#else +#ifdef ASPECT_RATIO_SCALE + CDraw::SetAspectRatio(CDraw::FindAspectRatio()); +#endif + CAnimViewer::Update(); + CTimer::Update(); + SetLightsWithTimeOfDayColour(Scene.world); + CRenderer::ConstructRenderList(); + DoRWStuffStartOfFrame(CTimeCycle::GetSkyTopRed(), CTimeCycle::GetSkyTopGreen(), CTimeCycle::GetSkyTopBlue(), + CTimeCycle::GetSkyBottomRed(), CTimeCycle::GetSkyBottomGreen(), CTimeCycle::GetSkyBottomBlue(), + 255); - strcpy(gString, "RE3"); - AsciiToUnicode(gString, gUString); - CFont::PrintString(SCREEN_SCALE_X(10.5f), SCREEN_SCALE_Y(8.0f), gUString); + CSprite2d::InitPerFrame(); + CFont::InitPerFrame(); + DefinedState(); + CVisibilityPlugins::InitAlphaEntityList(); + CAnimViewer::Render(); + Render2dStuff(); + DoRWStuffEndOfFrame(); +#endif +} +#endif + +void TheGame(void) +{ + printf("Into TheGame!!!\n"); + +#ifdef PS2 + gMainHeap.PushMemId(_TODOCONST(1)); +#endif + + CTimer::Initialise(); + +#ifdef PS2 + CGame::Initialise(); +#else + CGame::Initialise("DATA\\GTA3.DAT"); +#endif + + char *splash = GetRandomSplashScreen(); // inlined here + + LoadingScreen("Starting Game", NULL, splash); + +#ifdef PS2 + int32 state = TheMemoryCard.CheckCardInserted(_TODOCONST(0)); + + if (state == _TODOCONST(26) + && TheMemoryCard.ChangeDirectory(_TODOCONST(0), TheMemoryCard.field154) + && TheMemoryCard.FindMostRecentFileName(_TODOCONST(0), TheMemoryCard.field37) == 1 + && TheMemoryCard.CheckDataNotCorrupt(TheMemoryCard.field37)) + { + strcpy(TheMemoryCard.LoadFileName, TheMemoryCard.field37); + TheMemoryCard.b_FoundRecentSavedGameWantToLoad = true; + + if (CMenuManager::m_PrefsLanguage != TheMemoryCard.GetLanguageToLoad()) + { + CMenuManager::m_PrefsLanguage = TheMemoryCard.GetLanguageToLoad(); + TheText.Unload(); + TheText.Load(); + } + + CGame::currLevel = TheMemoryCard.GetLevelToLoad(); + } +#else + //TODO +#endif + + while (true) + { + if (GETWANTTOLOADSAVEGAME()) + { + char *splash1 = GetLevelSplashScreen(CGame::currLevel); + LoadSplash(splash1); + } + + SETWANTTOLOADSAVEGAME(false); + + CTimer::Update(); + + while (!(FrontEndMenuManager.m_bWantToRestart || GETFOUNDRECENTSAVEDGAMEWANTTOLOAD())) + { + CSprite2d::InitPerFrame(); + CFont::InitPerFrame(); + +#ifdef PS2 + gMainHeap.PushMemId(_TODOCONST(12)); +#endif + CPointLights::NumLights = 0; + CGame::Process(); +#ifdef PS2 + gMainHeap.PopMemId(); +#endif + + DMAudio.Service(); + + if (CGame::bDemoMode && CTimer::GetTimeInMilliseconds() > (3*60 + 30)*1000 && !CCutsceneMgr::IsCutsceneProcessing()) + { + SETWANTTOLOADSAVEGAME(false); + FrontEndMenuManager.m_bWantToRestart = true; + break; + } + + if (FrontEndMenuManager.m_bWantToRestart || GETFOUNDRECENTSAVEDGAMEWANTTOLOAD()) + break; + + SetLightsWithTimeOfDayColour(Scene.world); +#ifdef PS2 + gMainHeap.PushMemId(_TODOCONST(15)); +#endif + + if (!FrontEndMenuManager.m_bMenuActive || FrontEndMenuManager.m_bRenderGameInMenu == true && TheCamera.GetScreenFadeStatus() != FADE_2 ) + { +#ifdef PS2 + gMainHeap.PushMemId(_TODOCONST(11)); +#endif + CRenderer::ConstructRenderList(); + CRenderer::PreRender(); +#ifdef PS2 + gMainHeap.PopMemId(); +#endif + + if (CWeather::LightningFlash && !CCullZones::CamNoRain()) + DoRWStuffStartOfFrame_Horizon(255, 255, 255, 255, 255, 255, 255); + else + DoRWStuffStartOfFrame_Horizon(CTimeCycle::GetSkyTopRed(), CTimeCycle::GetSkyTopGreen(), CTimeCycle::GetSkyTopBlue(), CTimeCycle::GetSkyBottomRed(), CTimeCycle::GetSkyBottomGreen(), CTimeCycle::GetSkyBottomBlue(), 255); + + DefinedState(); + RwCameraSetFarClipPlane(Scene.camera, CTimeCycle::GetFarClip()); + RwCameraSetFogDistance(Scene.camera, CTimeCycle::GetFogStart()); + + RenderScene(); + RenderDebugShit(); + RenderEffects(); + + if ((TheCamera.m_BlurType == MBLUR_NONE || TheCamera.m_BlurType == MBLUR_NORMAL) && TheCamera.m_ScreenReductionPercentage > 0.0f) + TheCamera.SetMotionBlurAlpha(150); + TheCamera.RenderMotionBlur(); + + Render2dStuff(); + } + else + { + CameraSize(Scene.camera, NULL, SCREEN_VIEWWINDOW, SCREEN_ASPECT_RATIO); + CVisibilityPlugins::SetRenderWareCamera(Scene.camera); + RwCameraClear(Scene.camera, &gColourTop, rwCAMERACLEARZ); + if (!RsCameraBeginUpdate(Scene.camera)) + break; + } + + RenderMenus(); + + if (GETWANTTOLOADSAVEGAME()) + { +#ifdef PS2 + gMainHeap.PopMemId(); +#endif + break; + } + + DoFade(); + Render2dStuffAfterFade(); + CCredits::Render(); + + DoRWStuffEndOfFrame(); + + while (frameCount < 2) + ; + + frameCount = 0; + + CTimer::Update(); + +#ifdef PS2 + gMainHeap.PopMemId(); +#endif + + if (g_SlowMode) + ProcessSlowMode(); + } + + CPad::ResetCheats(); + CPad::StopPadsShaking(); + DMAudio.ChangeMusicMode(MUSICMODE_DISABLE); + CGame::ShutDownForRestart(); + CTimer::Stop(); + + + if (FrontEndMenuManager.m_bWantToRestart || GETFOUNDRECENTSAVEDGAMEWANTTOLOAD()) + { + if (GETFOUNDRECENTSAVEDGAMEWANTTOLOAD()) + { + FrontEndMenuManager.m_bWantToRestart = true; + SETWANTTOLOADSAVEGAME(true); + } + + CGame::InitialiseWhenRestarting(); + DMAudio.ChangeMusicMode(MUSICMODE_GAME); + FrontEndMenuManager.m_bWantToRestart = false; + + continue; + } + + break; + } + + DMAudio.Terminate(); } -void -ValidateVersion() + +void SystemInit() { - int32 file = CFileMgr::OpenFile("models\\coll\\peds.col", "rb"); - char buff[128]; - - if ( file != -1 ) - { - CFileMgr::Seek(file, 100, SEEK_SET); - - for ( int i = 0; i < 128; i++ ) - { - CFileMgr::Read(file, &buff[i], sizeof(char)); - buff[i] -= 23; - if ( buff[i] == '\0' ) - break; - CFileMgr::Seek(file, 99, SEEK_CUR); - } - - if ( !strncmp(buff, "grandtheftauto3", 15) ) - { - strncpy(version_name, &buff[15], 64); - CFileMgr::CloseFile(file); - return; - } - } - - LoadingScreen("Invalid version", NULL, NULL); +#ifdef __MWERKS__ + mwInit(); +#endif - while(true) - { +#ifdef PS2 + InitMemoryMgr(); +#endif + +#ifdef PS2 + CFileMgr::InitCdSystem(); + + char path[256]; + + sprintf(path, "cdrom0:\\%s%s;1", "SYSTEM\\", "IOPRP23.IMG"); + + sceSifInitRpc(0); + + while ( !sceSifRebootIop(path) ) ; + while( !sceSifSyncIop() ) + ; + + sceSifInitRpc(0); + + CFileMgr::InitCdSystem(); + + sceFsReset(); +#endif + + CFileMgr::Initialise(); + +#ifdef PS2 + CFileMgr::InitCd(); + + + Char modulepath[256]; + + strcpy(modulepath, "cdrom0:\\"); + strcat(modulepath, "SYSTEM\\"); + strcat(modulepath, "SIO2MAN.IRX"); + LoadModule(modulepath); + + strcpy(modulepath, "cdrom0:\\"); + strcat(modulepath, "SYSTEM\\"); + strcat(modulepath, "PADMAN.IRX"); + LoadModule(modulepath); + + strcpy(modulepath, "cdrom0:\\"); + strcat(modulepath, "SYSTEM\\"); + strcat(modulepath, "LIBSD.IRX"); + LoadModule(modulepath); + + strcpy(modulepath, "cdrom0:\\"); + strcat(modulepath, "SYSTEM\\"); + strcat(modulepath, "SDRDRV.IRX"); + LoadModule(modulepath); + + strcpy(modulepath, "cdrom0:\\"); + strcat(modulepath, "SYSTEM\\"); + strcat(modulepath, "MCMAN.IRX"); + LoadModule(modulepath); + + strcpy(modulepath, "cdrom0:\\"); + strcat(modulepath, "SYSTEM\\"); + strcat(modulepath, "MCSERV.IRX"); + LoadModule(modulepath); +#endif + + +#ifdef PS2 + ThreadParam param; + + param.entry = &IdleThread; + param.stack = idleThreadStack; + param.stackSize = 2048; + param.initPriority = 127; + param.gpReg = &_gp; + + int thread = CreateThread(¶m); + StartThread(thread, NULL); +#else + // +#endif + + + CPad::Initialise(); + CPad::GetPad(0)->Mode = 0; + + CGame::frenchGame = false; + CGame::germanGame = false; + CGame::nastyGame = true; + CMenuManager::m_PrefsAllowNastyGame = true; + +#ifdef PS2 + int32 lang = sceScfGetLanguage(); + if ( lang == SCE_ITALIAN_LANGUAGE ) + CMenuManager::m_PrefsLanguage = LANGUAGE_ITALIAN; + else if ( lang == SCE_SPANISH_LANGUAGE ) + CMenuManager::m_PrefsLanguage = LANGUAGE_SPANISH; + else if ( lang == SCE_GERMAN_LANGUAGE ) + { + CGame::germanGame = true; + CGame::nastyGame = false; + CMenuManager::m_PrefsAllowNastyGame = false; + CMenuManager::m_PrefsLanguage = LANGUAGE_GERMAN; } + else if ( lang == SCE_FRENCH_LANGUAGE ) + { + CGame::frenchGame = true; + CGame::nastyGame = false; + CMenuManager::m_PrefsAllowNastyGame = false; + CMenuManager::m_PrefsLanguage = LANGUAGE_FRENCH; + } + else + CMenuManager::m_PrefsLanguage = LANGUAGE_AMERICAN; + + FrontEndMenuManager.InitialiseMenuContentsAfterLoadingGame(); +#else + // +#endif + +#ifdef PS2 + TheMemoryCard.Init(); +#endif +} + +void GameInit() +{ + if ( !gameAlreadyInitialised ) + { +#ifdef PS2 + char path[256]; + + strcpy(path, "cdrom0:\\"); + strcat(path, "SYSTEM\\"); + strcat(path, "CDSTREAM.IRX"); + LoadModule(path); + + strcpy(path, "cdrom0:\\"); + strcat(path, "SYSTEM\\"); + strcat(path, "SAMPMAN.IRX"); + LoadModule(path); + + strcpy(path, "cdrom0:\\"); + strcat(path, "SYSTEM\\"); + strcat(path, "MUSICSTR.IRX"); + LoadModule(path); +#endif + CdStreamInit(MAX_CDCHANNELS); + +#ifdef PS2 + Initialise3D(); //no params +#else + //TODO +#endif + +#ifdef PS2 + char *files[] = + { + "\\ANIM\\CUTS.IMG;1", + "\\ANIM\\CUTS.DIR;1", + "\\ANIM\\PED.IFP;1", + "\\MODELS\\FRONTEND.TXD;1", + "\\MODELS\\FONTS.TXD;1", + "\\MODELS\\HUD.TXD;1", + "\\MODELS\\PARTICLE.TXD;1", + "\\MODELS\\MISC.TXD;1", + "\\MODELS\\GENERIC.TXD;1", + "\\MODELS\\GTA3.DIR;1", + "\\TEXT\\ENGLISH.GXT;1", + "\\TEXT\\FRENCH.GXT;1", + "\\TEXT\\GERMAN.GXT;1", + "\\TEXT\\ITALIAN.GXT;1", + "\\TEXT\\SPANISH.GXT;1", + "\\TXD\\LOADSC0.TXD;1", + "\\TXD\\LOADSC1.TXD;1", + "\\TXD\\LOADSC2.TXD;1", + "\\TXD\\LOADSC3.TXD;1", + "\\TXD\\LOADSC4.TXD;1", + "\\TXD\\LOADSC5.TXD;1", + "\\TXD\\LOADSC6.TXD;1", + "\\TXD\\LOADSC7.TXD;1", + "\\TXD\\LOADSC8.TXD;1", + "\\TXD\\LOADSC9.TXD;1", + "\\TXD\\LOADSC10.TXD;1", + "\\TXD\\LOADSC11.TXD;1", + "\\TXD\\LOADSC12.TXD;1", + "\\TXD\\LOADSC13.TXD;1", + "\\TXD\\LOADSC14.TXD;1", + "\\TXD\\LOADSC15.TXD;1", + "\\TXD\\LOADSC16.TXD;1", + "\\TXD\\LOADSC17.TXD;1", + "\\TXD\\LOADSC18.TXD;1", + "\\TXD\\LOADSC19.TXD;1", + "\\TXD\\LOADSC20.TXD;1", + "\\TXD\\LOADSC21.TXD;1", + "\\TXD\\LOADSC22.TXD;1", + "\\TXD\\LOADSC23.TXD;1", + "\\TXD\\LOADSC24.TXD;1", + "\\TXD\\LOADSC25.TXD;1", + "\\TXD\\NEWS.TXD;1", + "\\MODELS\\COLL\\GENERIC.COL;1", + "\\MODELS\\COLL\\INDUST.COL;1", + "\\MODELS\\COLL\\COMMER.COL;1", + "\\MODELS\\COLL\\SUBURB.COL;1", + "\\MODELS\\COLL\\WEAPONS.COL;1", + "\\MODELS\\COLL\\VEHICLES.COL;1", + "\\MODELS\\COLL\\PEDS.COL;1", + "\\MODELS\\GENERIC\\AIR_VLO.DFF;1", + "\\MODELS\\GENERIC\\WEAPONS.DFF;1", + "\\MODELS\\GENERIC\\WHEELS.DFF;1", + "\\MODELS\\GENERIC\\LOPLYGUY.DFF;1", + "\\MODELS\\GENERIC\\ARROW.DFF;1", + "\\MODELS\\GENERIC\\ZONECYLB.DFF;1", + "\\DATA\\MAPS\\COMNTOP.IPL;1", + "\\DATA\\MAPS\\COMNBTM.IPL;1", + "\\DATA\\MAPS\\COMSE.IPL;1", + "\\DATA\\MAPS\\COMSW.IPL;1", + "\\DATA\\MAPS\\CULL.IPL;1", + "\\DATA\\MAPS\\INDUSTNE.IPL;1", + "\\DATA\\MAPS\\INDUSTNW.IPL;1", + "\\DATA\\MAPS\\INDUSTSE.IPL;1", + "\\DATA\\MAPS\\INDUSTSW.IPL;1", + "\\DATA\\MAPS\\SUBURBNE.IPL;1", + "\\DATA\\MAPS\\SUBURBSW.IPL;1", + "\\DATA\\MAPS\\OVERVIEW.IPL;1", + "\\DATA\\MAPS\\PROPS.IPL;1", + "\\DATA\\MAPS\\GTA3.IDE;1", + "\\DATA\\PATHS\\FLIGHT.DAT;1", + "\\DATA\\PATHS\\FLIGHT2.DAT;1", + "\\DATA\\PATHS\\FLIGHT3.DAT;1", + "\\DATA\\PATHS\\FLIGHT4.DAT;1", + "\\DATA\\PATHS\\TRACKS.DAT;1", + "\\DATA\\PATHS\\TRACKS2.DAT;1", + "\\DATA\\PATHS\\CHASE0.DAT;1", + "\\DATA\\PATHS\\CHASE1.DAT;1", + "\\DATA\\PATHS\\CHASE2.DAT;1", + "\\DATA\\PATHS\\CHASE3.DAT;1", + "\\DATA\\PATHS\\CHASE4.DAT;1", + "\\DATA\\PATHS\\CHASE5.DAT;1", + "\\DATA\\PATHS\\CHASE6.DAT;1", + "\\DATA\\PATHS\\CHASE7.DAT;1", + "\\DATA\\PATHS\\CHASE10.DAT;1", + "\\DATA\\PATHS\\CHASE11.DAT;1", + "\\DATA\\PATHS\\CHASE14.DAT;1", + "\\DATA\\PATHS\\CHASE16.DAT;1", + "\\DATA\\PATHS\\CHASE18.DAT;1", + "\\DATA\\PATHS\\CHASE19.DAT;1" + }; + + for ( int32 i = 0; i < ARRAY_SIZE(files); i++ ) + SkyRegisterFileOnCd([i]); +#endif + + CreateDebugFont(); + +#ifdef PS2 + AddIntcHandler(_TODOCONST(2), VBlankCounter, 0); +#endif + + CameraSize(Scene.camera, NULL, DEFAULT_VIEWWINDOW, DEFAULT_ASPECT_RATIO); + + CSprite2d::SetRecipNearClip(); + CTxdStore::Initialise(); +#ifdef PS2 + gMainHeap.PushMemId(_TODOCONST(9)); +#endif + CFont::Initialise(); + CHud::Initialise(); +#ifdef PS2 + gMainHeap.PopMemId(); +#endif + + ValidateVersion(); + +#ifdef PS2 + sceCdCLOCK rtc; + sceCdReadClock(&rtc); + uint32 seed = rtc.minute + rtc.day; + uint32 seed2 = (seed << 4)-seed; + uint32 seed3 = (seed2 << 4)-seed2; + srand ((seed3<<4)+rtc.second); +#else + //TODO: mysrand(); +#endif + + gameAlreadyInitialised = true; + } +} + +int +main(int argc, char *argv[]) +{ +#ifdef __MWERKS__ + mwInit(); // metrowerks initialisation +#endif + + SystemInit(); + +#ifdef PS2 + int32 state = TheMemoryCard.CheckCardStateAtGameStartUp(_TODOCONST(0)); + + if ( state == _TODOCONST(2) || state == _TODOCONST(1) && state != _TODOCONST(3) && state != _TODOCONST(0) ) + { + GameInit(); + + TheText.Unload(); + TheText.Load(); + + CFont::Initialise(); + + FrontEndMenuManager.DrawMemoryCardStartUpMenus(); + } +#endif + +#ifdef PS2 + { + if (gameAlreadyInitialised) + RpSkySuspend(); + + InitMPEGPlayer(); + + PlayMPEG("cdrom0:\\MOVIES\\DMAPAL.PSS;1", false); + + if (CGame::frenchGame || CGame::germanGame) + PlayMPEG("cdrom0:\\MOVIES\\INTROPAF.PSS;1", true); + else + PlayMPEG("cdrom0:\\MOVIES\\INTROPAL.PSS;1", true); + + ShutdownMPEGPlayer(); + + if ( gameAlreadyInitialised ) + RpSkyResume(); + } +#else + //TODO +#endif + + GameInit(); + + if ( CGame::frenchGame || CGame::germanGame ) + LoadingScreen(NULL, version_name, "loadsc24"); + else + LoadingScreen(NULL, version_name, "loadsc0"); + + DMAudio.Initialise(); + + TheGame(); + + CGame::ShutDown(); + + RwEngineStop(); + RwEngineClose(); + RwEngineTerm(); + +#ifdef __MWERKS__ + mwExit(); // metrowerks shutdown +#endif + + return 0; } STARTPATCHES diff --git a/src/save/GenericGameStorage.cpp b/src/save/GenericGameStorage.cpp index d71b0c22..2545b9ab 100644 --- a/src/save/GenericGameStorage.cpp +++ b/src/save/GenericGameStorage.cpp @@ -48,6 +48,13 @@ char SaveFileNameJustSaved[260]; int (&Slots)[SLOT_COUNT+1] = *(int(*)[SLOT_COUNT+1])*(uintptr*)0x72803C; CDate &CompileDateAndTime = *(CDate*)0x72BCB8; + +bool &b_FoundRecentSavedGameWantToLoad = *(bool*)0x95CDA8; +bool &JustLoadedDontFadeInYet = *(bool*)0x95CDB4; +bool &StillToFadeOut = *(bool*)0x95CD99; +uint32 &TimeStartedCountingForFade = *(uint32*)0x9430EC; +uint32 &TimeToStayFadedBeforeFadeOut = *(uint32*)0x611564; + #define ReadDataFromBufferPointer(buf, to) memcpy(&to, buf, sizeof(to)); buf += align4bytes(sizeof(to)); #define WriteDataToBufferPointer(buf, from) memcpy(buf, &from, sizeof(from)); buf += align4bytes(sizeof(from)); diff --git a/src/save/GenericGameStorage.h b/src/save/GenericGameStorage.h index e22dfc7e..40d92f16 100644 --- a/src/save/GenericGameStorage.h +++ b/src/save/GenericGameStorage.h @@ -32,6 +32,12 @@ extern int &CheckSum; extern enum eLevelName &m_LevelToLoad; extern int (&Slots)[SLOT_COUNT+1]; +extern bool &b_FoundRecentSavedGameWantToLoad; +extern bool &JustLoadedDontFadeInYet; +extern bool &StillToFadeOut; +extern uint32 &TimeStartedCountingForFade; +extern uint32 &TimeToStayFadedBeforeFadeOut; + extern char SaveFileNameJustSaved[260]; // 8F2570 const char TopLineEmptyFile[] = "THIS FILE IS NOT VALID YET"; \ No newline at end of file diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp index 7993426a..ec84e968 100644 --- a/src/skel/win/win.cpp +++ b/src/skel/win/win.cpp @@ -1927,7 +1927,7 @@ _WinMain(HINSTANCE instance, * Enter the message processing loop... */ - while( !RsGlobal.quit && !FrontEndMenuManager.m_bStartGameLoading ) + while( !RsGlobal.quit && !FrontEndMenuManager.m_bWantToRestart ) { if( PeekMessage(&message, nil, 0U, 0U, PM_REMOVE|PM_NOYIELD) ) { @@ -2059,13 +2059,13 @@ _WinMain(HINSTANCE instance, if (wp.showCmd != SW_SHOWMINIMIZED) RsEventHandler(rsFRONTENDIDLE, nil); - if ( !FrontEndMenuManager.m_bMenuActive || FrontEndMenuManager.m_bLoadingSavedGame ) + if ( !FrontEndMenuManager.m_bMenuActive || FrontEndMenuManager.m_bWantToLoad ) { gGameState = GS_INIT_PLAYING_GAME; TRACE("gGameState = GS_INIT_PLAYING_GAME;"); } - if ( FrontEndMenuManager.m_bLoadingSavedGame ) + if ( FrontEndMenuManager.m_bWantToLoad ) { InitialiseGame(); FrontEndMenuManager.m_bGameNotLoaded = false; @@ -2128,7 +2128,7 @@ _WinMain(HINSTANCE instance, RwInitialised = FALSE; FrontEndMenuManager.UnloadTextures(); - if ( !FrontEndMenuManager.m_bStartGameLoading ) + if ( !FrontEndMenuManager.m_bWantToRestart ) break; CPad::ResetCheats(); @@ -2138,13 +2138,13 @@ _WinMain(HINSTANCE instance, CTimer::Stop(); - if ( FrontEndMenuManager.m_bLoadingSavedGame ) + if ( FrontEndMenuManager.m_bWantToLoad ) { CGame::ShutDownForRestart(); CGame::InitialiseWhenRestarting(); DMAudio.ChangeMusicMode(MUSICMODE_GAME); LoadSplash(GetLevelSplashScreen(CGame::currLevel)); - FrontEndMenuManager.m_bLoadingSavedGame = false; + FrontEndMenuManager.m_bWantToLoad = false; } else { @@ -2168,7 +2168,7 @@ _WinMain(HINSTANCE instance, } FrontEndMenuManager.m_bFirstTime = false; - FrontEndMenuManager.m_bStartGameLoading = false; + FrontEndMenuManager.m_bWantToRestart = false; } From c97ff5b31a04c54a5964afd4b2d41faeefa80faf Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Thu, 9 Apr 2020 03:06:43 +0300 Subject: [PATCH 041/112] cleanup --- src/core/main.cpp | 66 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/src/core/main.cpp b/src/core/main.cpp index f024b2f3..867867a9 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -59,17 +59,6 @@ #include "timebars.h" #include "GenericGameStorage.h" -#ifdef PS2 -#define GETWANTTOLOADSAVEGAME() (TheMemoryCard.m_bWantToLoad) -#define SETWANTTOLOADSAVEGAME(b) {TheMemoryCard.m_bWantToLoad = (b);} -#define GETFOUNDRECENTSAVEDGAMEWANTTOLOAD() (TheMemoryCard.b_FoundRecentSavedGameWantToLoad) -#else //TODO -#define GETWANTTOLOADSAVEGAME() (true) -#define SETWANTTOLOADSAVEGAME(b) {} -#define GETFOUNDRECENTSAVEDGAMEWANTTOLOAD() (true) -#endif - - GlobalScene &Scene = *(GlobalScene*)0x726768; uint8 work_buff[55000]; @@ -1308,17 +1297,29 @@ void TheGame(void) while (true) { - if (GETWANTTOLOADSAVEGAME()) +#ifdef PS2 + if (TheMemoryCard.m_bWantToLoad) +#else + if (FrontEndMenuManager.m_bWantToLoad) +#endif { char *splash1 = GetLevelSplashScreen(CGame::currLevel); LoadSplash(splash1); } - SETWANTTOLOADSAVEGAME(false); +#ifdef PS2 + TheMemoryCard.m_bWantToLoad = false; +#else + FrontEndMenuManager.m_bWantToLoad = false; +#endif CTimer::Update(); - while (!(FrontEndMenuManager.m_bWantToRestart || GETFOUNDRECENTSAVEDGAMEWANTTOLOAD())) +#ifdef PS2 + while (!(FrontEndMenuManager.m_bWantToRestart || TheMemoryCard.b_FoundRecentSavedGameWantToLoad)) +#else + while (!(FrontEndMenuManager.m_bWantToRestart || b_FoundRecentSavedGameWantToLoad)) +#endif { CSprite2d::InitPerFrame(); CFont::InitPerFrame(); @@ -1336,12 +1337,20 @@ void TheGame(void) if (CGame::bDemoMode && CTimer::GetTimeInMilliseconds() > (3*60 + 30)*1000 && !CCutsceneMgr::IsCutsceneProcessing()) { - SETWANTTOLOADSAVEGAME(false); +#ifdef PS2 + TheMemoryCard.m_bWantToLoad = false; +#else + FrontEndMenuManager.m_bWantToLoad = false; +#endif FrontEndMenuManager.m_bWantToRestart = true; break; } - if (FrontEndMenuManager.m_bWantToRestart || GETFOUNDRECENTSAVEDGAMEWANTTOLOAD()) +#ifdef PS2 + if (FrontEndMenuManager.m_bWantToRestart || TheMemoryCard.b_FoundRecentSavedGameWantToLoad) +#else + if (FrontEndMenuManager.m_bWantToRestart || b_FoundRecentSavedGameWantToLoad) +#endif break; SetLightsWithTimeOfDayColour(Scene.world); @@ -1390,7 +1399,11 @@ void TheGame(void) RenderMenus(); - if (GETWANTTOLOADSAVEGAME()) +#ifdef PS2 + if (TheMemoryCard.m_bWantToLoad) +#else + if (FrontEndMenuManager.m_bWantToLoad) +#endif { #ifdef PS2 gMainHeap.PopMemId(); @@ -1425,13 +1438,24 @@ void TheGame(void) CGame::ShutDownForRestart(); CTimer::Stop(); - - if (FrontEndMenuManager.m_bWantToRestart || GETFOUNDRECENTSAVEDGAMEWANTTOLOAD()) +#ifdef PS2 + if (FrontEndMenuManager.m_bWantToRestart || TheMemoryCard.b_FoundRecentSavedGameWantToLoad) +#else + if (FrontEndMenuManager.m_bWantToRestart || b_FoundRecentSavedGameWantToLoad) +#endif { - if (GETFOUNDRECENTSAVEDGAMEWANTTOLOAD()) +#ifdef PS2 + if (TheMemoryCard.b_FoundRecentSavedGameWantToLoad) +#else + if (b_FoundRecentSavedGameWantToLoad) +#endif { FrontEndMenuManager.m_bWantToRestart = true; - SETWANTTOLOADSAVEGAME(true); +#ifdef PS2 + TheMemoryCard.m_bWantToLoad = true; +#else + FrontEndMenuManager.m_bWantToLoad = true; +#endif } CGame::InitialiseWhenRestarting(); From 590ff324691a8dd60c7e05170544cff8b9bcb0ab Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Thu, 9 Apr 2020 06:20:44 +0300 Subject: [PATCH 042/112] PS2 Cheats, restored R*names --- src/control/Replay.cpp | 6 +- src/control/Script.cpp | 8 +- src/control/Script.h | 29 +++-- src/core/Game.cpp | 2 +- src/core/Pad.cpp | 114 ++++++++++++++++- src/core/Pad.h | 14 ++- src/core/PlayerSkin.cpp | 2 + src/core/Radar.cpp | 271 ++++++++++++++++++++-------------------- src/core/Radar.h | 13 +- src/core/config.h | 1 + src/core/main.cpp | 53 ++++---- src/render/Hud.cpp | 4 +- 12 files changed, 320 insertions(+), 197 deletions(-) diff --git a/src/control/Replay.cpp b/src/control/Replay.cpp index b8e2318d..0da32dd2 100644 --- a/src/control/Replay.cpp +++ b/src/control/Replay.cpp @@ -1129,8 +1129,8 @@ void CReplay::StoreStuffInMem(void) pEmptyReferences = CReferences::pEmptyList; pStoredCam = new uint8[sizeof(CCamera)]; memcpy(pStoredCam, &TheCamera, sizeof(CCamera)); - pRadarBlips = new uint8[sizeof(CBlip) * NUMRADARBLIPS]; - memcpy(pRadarBlips, CRadar::ms_RadarTrace, NUMRADARBLIPS * sizeof(CBlip)); + pRadarBlips = new uint8[sizeof(sRadarTrace) * NUMRADARBLIPS]; + memcpy(pRadarBlips, CRadar::ms_RadarTrace, NUMRADARBLIPS * sizeof(sRadarTrace)); PlayerWanted = *FindPlayerPed()->m_pWanted; PlayerInfo = CWorld::Players[0]; Time1 = CTimer::GetTimeInMilliseconds(); @@ -1179,7 +1179,7 @@ void CReplay::RestoreStuffFromMem(void) memcpy(&TheCamera, pStoredCam, sizeof(CCamera)); delete[] pStoredCam; pStoredCam = nil; - memcpy(CRadar::ms_RadarTrace, pRadarBlips, sizeof(CBlip) * NUMRADARBLIPS); + memcpy(CRadar::ms_RadarTrace, pRadarBlips, sizeof(sRadarTrace) * NUMRADARBLIPS); delete[] pRadarBlips; pRadarBlips = nil; FindPlayerPed()->m_pWanted = new CWanted(PlayerWanted); diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 18572573..75fd32a0 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -91,10 +91,10 @@ uint8 (&CTheScripts::ScriptSpace)[SIZE_SCRIPT_SPACE] = *(uint8(*)[SIZE_SCRIPT_SP CRunningScript(&CTheScripts::ScriptsArray)[MAX_NUM_SCRIPTS] = *(CRunningScript(*)[MAX_NUM_SCRIPTS])*(uintptr*)0x6F5C08; int32(&CTheScripts::BaseBriefIdForContact)[MAX_NUM_CONTACTS] = *(int32(*)[MAX_NUM_CONTACTS])*(uintptr*)0x880200; int32(&CTheScripts::OnAMissionForContactFlag)[MAX_NUM_CONTACTS] = *(int32(*)[MAX_NUM_CONTACTS])*(uintptr*)0x8622F0; -CTextLine (&CTheScripts::IntroTextLines)[MAX_NUM_INTRO_TEXT_LINES] = *(CTextLine (*)[MAX_NUM_INTRO_TEXT_LINES])*(uintptr*)0x70EA68; -CScriptRectangle (&CTheScripts::IntroRectangles)[MAX_NUM_INTRO_RECTANGLES] = *(CScriptRectangle (*)[MAX_NUM_INTRO_RECTANGLES])*(uintptr*)0x72D108; +intro_text_line (&CTheScripts::IntroTextLines)[MAX_NUM_INTRO_TEXT_LINES] = *(intro_text_line (*)[MAX_NUM_INTRO_TEXT_LINES])*(uintptr*)0x70EA68; +intro_script_rectangle (&CTheScripts::IntroRectangles)[MAX_NUM_INTRO_RECTANGLES] = *(intro_script_rectangle (*)[MAX_NUM_INTRO_RECTANGLES])*(uintptr*)0x72D108; CSprite2d (&CTheScripts::ScriptSprites)[MAX_NUM_SCRIPT_SRPITES] = *(CSprite2d(*)[MAX_NUM_SCRIPT_SRPITES])*(uintptr*)0x72B090; -CScriptSphere(&CTheScripts::ScriptSphereArray)[MAX_NUM_SCRIPT_SPHERES] = *(CScriptSphere(*)[MAX_NUM_SCRIPT_SPHERES])*(uintptr*)0x727D60; +script_sphere_struct(&CTheScripts::ScriptSphereArray)[MAX_NUM_SCRIPT_SPHERES] = *(script_sphere_struct(*)[MAX_NUM_SCRIPT_SPHERES])*(uintptr*)0x727D60; tCollectiveData(&CTheScripts::CollectiveArray)[MAX_NUM_COLLECTIVES] = *(tCollectiveData(*)[MAX_NUM_COLLECTIVES])*(uintptr*)0x6FA008; tUsedObject(&CTheScripts::UsedObjectArray)[MAX_NUM_USED_OBJECTS] = *(tUsedObject(*)[MAX_NUM_USED_OBJECTS])*(uintptr*)0x6E69C8; int32(&CTheScripts::MultiScriptArray)[MAX_NUM_MISSION_SCRIPTS] = *(int32(*)[MAX_NUM_MISSION_SCRIPTS])*(uintptr*)0x6F0558; @@ -313,7 +313,7 @@ bool CUpsideDownCarCheck::HasCarBeenUpsideDownForAWhile(int32 id) return false; } -void CStuckCarCheckEntry::Reset() +void stuck_car_data::Reset() { m_nVehicleIndex = -1; m_vecPos = CVector(-5000.0f, -5000.0f, -5000.0f); diff --git a/src/control/Script.h b/src/control/Script.h index 8143bd43..4338bd18 100644 --- a/src/control/Script.h +++ b/src/control/Script.h @@ -15,22 +15,25 @@ class CRunningScript; #define KEY_LENGTH_IN_SCRIPT 8 -struct CScriptRectangle +struct intro_script_rectangle { bool m_bIsUsed; bool m_bBeforeFade; int16 m_nTextureId; CRect m_sRect; CRGBA m_sColor; + + intro_script_rectangle() { } + ~intro_script_rectangle() { } }; -static_assert(sizeof(CScriptRectangle) == 0x18, "Script.h: error"); +static_assert(sizeof(intro_script_rectangle) == 0x18, "Script.h: error"); enum { SCRIPT_TEXT_MAX_LENGTH = 500 }; -struct CTextLine +struct intro_text_line { float m_fScaleX; float m_fScaleY; @@ -50,6 +53,9 @@ struct CTextLine float m_fAtY; wchar m_Text[SCRIPT_TEXT_MAX_LENGTH]; + intro_text_line() { } + ~intro_text_line() { } + void Reset() { m_fScaleX = 0.48f; @@ -72,15 +78,17 @@ struct CTextLine } }; -static_assert(sizeof(CTextLine) == 0x414, "Script.h: error"); +static_assert(sizeof(intro_text_line) == 0x414, "Script.h: error"); -struct CScriptSphere +struct script_sphere_struct { bool m_bInUse; uint16 m_Index; uint32 m_Id; CVector m_vecCenter; float m_fRadius; + + script_sphere_struct() { } }; struct CStoredLine @@ -145,7 +153,7 @@ public: bool HasCarBeenUpsideDownForAWhile(int32); }; -struct CStuckCarCheckEntry +struct stuck_car_data { int32 m_nVehicleIndex; CVector m_vecPos; @@ -154,12 +162,13 @@ struct CStuckCarCheckEntry uint32 m_nStuckTime; bool m_bStuck; + stuck_car_data() { } inline void Reset(); }; class CStuckCarCheck { - CStuckCarCheckEntry m_sCars[MAX_STUCK_CAR_CHECKS]; + stuck_car_data m_sCars[MAX_STUCK_CAR_CHECKS]; public: void Init(); @@ -235,10 +244,10 @@ class CTheScripts static CRunningScript(&ScriptsArray)[MAX_NUM_SCRIPTS]; static int32(&BaseBriefIdForContact)[MAX_NUM_CONTACTS]; static int32(&OnAMissionForContactFlag)[MAX_NUM_CONTACTS]; - static CTextLine(&IntroTextLines)[MAX_NUM_INTRO_TEXT_LINES]; - static CScriptRectangle(&IntroRectangles)[MAX_NUM_INTRO_RECTANGLES]; + static intro_text_line(&IntroTextLines)[MAX_NUM_INTRO_TEXT_LINES]; + static intro_script_rectangle(&IntroRectangles)[MAX_NUM_INTRO_RECTANGLES]; static CSprite2d(&ScriptSprites)[MAX_NUM_SCRIPT_SRPITES]; - static CScriptSphere(&ScriptSphereArray)[MAX_NUM_SCRIPT_SPHERES]; + static script_sphere_struct(&ScriptSphereArray)[MAX_NUM_SCRIPT_SPHERES]; static tCollectiveData(&CollectiveArray)[MAX_NUM_COLLECTIVES]; static tUsedObject(&UsedObjectArray)[MAX_NUM_USED_OBJECTS]; static int32(&MultiScriptArray)[MAX_NUM_MISSION_SCRIPTS]; diff --git a/src/core/Game.cpp b/src/core/Game.cpp index 9637dc6c..daac3ec5 100644 --- a/src/core/Game.cpp +++ b/src/core/Game.cpp @@ -607,7 +607,7 @@ extern void (*DebugMenuProcess)(void); void CGame::Process(void) { CPad::UpdatePads(); -#ifdef PS2 +#ifdef GTA_PS2 ProcessTidyUpMemory(); #endif TheCamera.SetMotionBlurAlpha(0); diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp index 2d2b132c..08367b40 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -138,6 +138,7 @@ void CKeyboardState::Clear() LWIN = RWIN = APPS = 0; } +#ifdef GTA_PS2_STUFF void CPad::Initialise(void) { for (int i = 0; i < MAX_PADS; i++) @@ -150,6 +151,7 @@ void CPad::Initialise(void) bOldDisplayNoControllerMessage = false; bDisplayNoControllerMessage = false; } +#endif void CPad::Clear(bool bResetPlayerControls) { @@ -178,13 +180,13 @@ void CPad::Clear(bool bResetPlayerControls) bApplyBrakes = false; - for ( int32 i = 0; i < _TODOCONST(5); i++ ) + for ( int32 i = 0; i < HORNHISTORY_SIZE; i++ ) bHornHistory[i] = false; iCurrHornHistory = 0; - for ( int32 i = 0; i < _TODOCONST(12); i++ ) - _unk[i] = ' '; + for ( int32 i = 0; i < ARRAY_SIZE(CheatString); i++ ) + CheatString[i] = ' '; LastTimeTouched = CTimer::GetTimeInMilliseconds(); AverageWeapon = 0; @@ -443,6 +445,108 @@ void CPad::StartShake_Train(float fX, float fY) } } +#ifdef GTA_PS2_STUFF +void CPad::AddToCheatString(char c) +{ + for ( int32 i = ARRAY_SIZE(CheatString) - 2; i >= 0; i-- ) + CheatString[i + 1] = CheatString[i]; + +#define _CHEATCMP(str) strncmp(str, CheatString, sizeof(str)-1) + // "4414LDRULDRU" - R2 R2 L1 R2 LEFT DOWN RIGHT UP LEFT DOWN RIGHT UP + if ( !_CHEATCMP("URDLURDL4144") ) + WeaponCheat(); + + // "4411LDRULDRU" - R2 R2 L1 L1 LEFT DOWN RIGHT UP LEFT DOWN RIGHT UP + else if ( !_CHEATCMP("URDLURDL1144") ) + MoneyCheat(); + + // "4412LDRULDRU" - R2 R2 L1 L2 LEFT DOWN RIGHT UP LEFT DOWN RIGHT UP + else if ( !_CHEATCMP("URDLURDL2144") ) + ArmourCheat(); + + // "4413LDRULDRU" - R2 R2 L1 R1 LEFT DOWN RIGHT UP LEFT DOWN RIGHT UP + else if ( !_CHEATCMP("URDLURDL3144") ) + HealthCheat(); + + // "4414LRLRLR" - R2 R2 L1 R2 LEFT RIGHT LEFT RIGHT LEFT RIGHT + else if ( !_CHEATCMP("RLRLRL4144") ) + WantedLevelUpCheat(); + + // "4414UDUDUD" - R2 R2 L1 R2 UP DOWN UP DOWN UP DOWN + else if ( !_CHEATCMP("DUDUDU4144") ) + WantedLevelDownCheat(); + + // "1234432T" - L1 L2 R1 R2 R2 R1 L2 TRIANGLE + else if ( !_CHEATCMP("T2344321") ) + SunnyWeatherCheat(); + + // "1234432S" - L1 L2 R1 R2 R2 R1 L2 SQUARE + else if ( !_CHEATCMP("S2344321") ) + CloudyWeatherCheat(); + + // "1234432C" - L1 L2 R1 R2 R2 R1 L2 CIRCLE + else if ( !_CHEATCMP("C2344321") ) + RainyWeatherCheat(); + + // "1234432X" - L1 L2 R1 R2 R2 R1 L2 CROSS + else if ( !_CHEATCMP("X2344321") ) + FoggyWeatherCheat(); + + // "CCCCCC321TCT" - CIRCLE CIRCLE CIRCLE CIRCLE CIRCLE CIRCLE R1 L2 L1 TRIANGLE CIRCLE TRIANGLE + else if ( !_CHEATCMP("TCT123CCCCCC") ) + TankCheat(); + + // "CCCSSSSS1TCT" - CIRCLE CIRCLE CIRCLE SQUARE SQUARE SQUARE SQUARE SQUARE L1 TRIANGLE CIRCLE TRIANGLE + else if ( !_CHEATCMP("TCT1SSSSSCCC") ) + FastWeatherCheat(); + + // "241324TSCT21" - L2 R2 L1 R1 L2 R2 TRIANGLE SQUARE CIRCLE TRIANGLE L2 L1 + else if ( !_CHEATCMP("12TCST423142") ) + BlowUpCarsCheat(); + + // "RDLU12ULDR" - RIGHT DOWN LEFT UP L1 L2 UP LEFT DOWN RIGHT + else if ( !_CHEATCMP("RDLU21ULDR") ) + ChangePlayerCheat(); + + // "DULUX3421" - DOWN UP LEFT UP CROSS R1 R2 L2 L1 + else if ( !_CHEATCMP("1243XULUD") ) + MayhemCheat(); + + // "DULUX3412" - DOWN UP LEFT UP CROSS R1 R2 L1 L2 + else if ( !_CHEATCMP("2143XULUD") ) + EverybodyAttacksPlayerCheat(); + + // "43TX21UD" - R2 R1 TRIANGLE CROSS L2 L1 UP DOWN + else if ( !_CHEATCMP("DU12XT34") ) + WeaponsForAllCheat(); + + // "TURDS12" - TRIANGLE UP RIGHT DOWN SQUARE L1 L2 + else if ( !_CHEATCMP("21SDRUT") ) + FastTimeCheat(); + + // "TURDS34" - TRIANGLE UP RIGHT DOWN SQUARE R1 R2 + else if ( !_CHEATCMP("43SDRUT") ) + SlowTimeCheat(); + + // "11S4T1T" - L1 L1 SQUARE R2 TRIANGLE L1 TRIANGLE + else if ( !_CHEATCMP("T1T4S11") ) + OnlyRenderWheelsCheat(); + + // "R4C32D13" - RIGHT R2 CIRCLE R1 L2 DOWN L1 R1 + else if ( !_CHEATCMP("31D23C4R") ) + ChittyChittyBangBangCheat(); + + // "3141L33T" - R1 L1 R2 L1 LEFT R1 R1 TRIANGLE + else if ( !_CHEATCMP("T33L1413") ) + StrongGripCheat(); + + // "S1CD13TR1X" - SQUARE L1 CIRCLE DOWN L1 R1 TRIANGLE RIGHT L1 CROSS + else if ( !_CHEATCMP("X1RT31DC1S") ) + NastyLimbsCheat(); +#undef _CHEATCMP +} +#endif + void CPad::AddToPCCheatString(char c) { for ( int32 i = ARRAY_SIZE(KeyBoardCheatString) - 2; i >= 0; i-- ) @@ -680,7 +784,7 @@ void CPad::Update(int16 unk) ProcessPCSpecificStuff(); - if ( ++iCurrHornHistory >= _TODOCONST(5) ) + if ( ++iCurrHornHistory >= HORNHISTORY_SIZE ) iCurrHornHistory = 0; bHornHistory[iCurrHornHistory] = GetHorn(); @@ -697,7 +801,7 @@ void CPad::DoCheats(void) void CPad::DoCheats(int16 unk) { -#ifdef PS2 +#ifdef GTA_PS2_STUFF if ( GetTriangleJustDown() ) AddToCheatString('T'); diff --git a/src/core/Pad.h b/src/core/Pad.h index 00dd5540..78bfac1d 100644 --- a/src/core/Pad.h +++ b/src/core/Pad.h @@ -136,6 +136,10 @@ enum class CPad { public: + enum + { + HORNHISTORY_SIZE = 5, + }; CControllerState NewState; CControllerState OldState; CControllerState PCTempKeyState; @@ -146,11 +150,11 @@ public: int16 Mode; int16 ShakeDur; uint8 ShakeFreq; - bool bHornHistory[5]; + bool bHornHistory[HORNHISTORY_SIZE]; uint8 iCurrHornHistory; uint8 DisablePlayerControls; int8 bApplyBrakes; - char _unk[12]; //int32 unk[3]; + char CheatString[12]; char _pad0[3]; int32 LastTimeTouched; int32 AverageWeapon; @@ -173,8 +177,9 @@ public: static CMouseControllerState &PCTempMouseControllerState; - +#ifdef GTA_PS2_STUFF static void Initialise(void); +#endif void Clear(bool bResetPlayerControls); void ClearMouseHistory(); void UpdateMouse(); @@ -182,6 +187,9 @@ public: void StartShake(int16 nDur, uint8 nFreq); void StartShake_Distance(int16 nDur, uint8 nFreq, float fX, float fY, float fz); void StartShake_Train(float fX, float fY); +#ifdef GTA_PS2_STUFF + void AddToCheatString(char c); +#endif void AddToPCCheatString(char c); static void UpdatePads(void); diff --git a/src/core/PlayerSkin.cpp b/src/core/PlayerSkin.cpp index bf780666..28879918 100644 --- a/src/core/PlayerSkin.cpp +++ b/src/core/PlayerSkin.cpp @@ -106,7 +106,9 @@ CPlayerSkin::GetSkinTexture(const char *texName) tex = RwTextureCreate(raster); RwTextureSetName(tex, texName); +#ifdef FIX_BUGS RwTextureSetFilterMode(tex, rwFILTERLINEAR); // filtering bugfix from VC +#endif RwTexDictionaryAddTexture(CTxdStore::GetSlot(m_txdSlot)->texDict, tex); RwImageDestroy(image); diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 07ddb5d8..bcc11c1b 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -17,7 +17,7 @@ #include "SpecialFX.h" float &CRadar::m_radarRange = *(float*)0x8E281C; -CBlip (&CRadar::ms_RadarTrace)[NUMRADARBLIPS] = *(CBlip(*)[NUMRADARBLIPS]) * (uintptr*)0x6ED5E0; +sRadarTrace (&CRadar::ms_RadarTrace)[NUMRADARBLIPS] = *(sRadarTrace(*)[NUMRADARBLIPS]) * (uintptr*)0x6ED5E0; CVector2D &vec2DRadarOrigin = *(CVector2D*)0x6299B8; int32 gRadarTxdIds[64];// = (int*)0x6299C0; @@ -87,6 +87,134 @@ int CRadar::TargetMarkerId = -1; float CRadar::cachedCos; float CRadar::cachedSin; +void ClipRadarTileCoords(int32 &x, int32 &y) +{ + if (x < 0) + x = 0; + if (x > RADAR_NUM_TILES-1) + x = RADAR_NUM_TILES-1; + if (y < 0) + y = 0; + if (y > RADAR_NUM_TILES-1) + y = RADAR_NUM_TILES-1; +} + +void RequestMapSection(int32 x, int32 y) +{ + ClipRadarTileCoords(x, y); + CStreaming::RequestTxd(gRadarTxdIds[x + RADAR_NUM_TILES * y], STREAMFLAGS_DONT_REMOVE | STREAMFLAGS_DEPENDENCY); +} + +void RemoveMapSection(int32 x, int32 y) +{ + if (x >= 0 && x <= 7 && y >= 0 && y <= 7) + CStreaming::RemoveTxd(gRadarTxdIds[x + RADAR_NUM_TILES * y]); +} + +// Transform from section indices to world coordinates +void GetTextureCorners(int32 x, int32 y, CVector2D *out) +{ + x = x - RADAR_NUM_TILES/2; + y = -(y - RADAR_NUM_TILES/2); + + // bottom left + out[0].x = RADAR_TILE_SIZE * (x); + out[0].y = RADAR_TILE_SIZE * (y - 1); + + // bottom right + out[1].x = RADAR_TILE_SIZE * (x + 1); + out[1].y = RADAR_TILE_SIZE * (y - 1); + + // top right + out[2].x = RADAR_TILE_SIZE * (x + 1); + out[2].y = RADAR_TILE_SIZE * (y); + + // top left + out[3].x = RADAR_TILE_SIZE * (x); + out[3].y = RADAR_TILE_SIZE * (y); +} + + +bool IsPointInsideRadar(const CVector2D &point) +{ + if (point.x < -1.0f || point.x > 1.0f) return false; + if (point.y < -1.0f || point.y > 1.0f) return false; + return true; +} + +// clip line p1,p2 against (-1.0, 1.0) in x and y, set out to clipped point closest to p1 +int LineRadarBoxCollision(CVector2D &out, const CVector2D &p1, const CVector2D &p2) +{ + float d1, d2; + float t; + float x, y; + float shortest = 1.0f; + int edge = -1; + + // clip against left edge, x = -1.0 + d1 = -1.0f - p1.x; + d2 = -1.0f - p2.x; + if (d1 * d2 < 0.0f) { + // they are on opposite sides, get point of intersection + t = d1 / (d1 - d2); + y = (p2.y - p1.y)*t + p1.y; + if (y >= -1.0f && y <= 1.0f && t <= shortest) { + out.x = -1.0f; + out.y = y; + edge = 3; + shortest = t; + } + } + + // clip against right edge, x = 1.0 + d1 = p1.x - 1.0f; + d2 = p2.x - 1.0f; + if (d1 * d2 < 0.0f) { + // they are on opposite sides, get point of intersection + t = d1 / (d1 - d2); + y = (p2.y - p1.y)*t + p1.y; + if (y >= -1.0f && y <= 1.0f && t <= shortest) { + out.x = 1.0f; + out.y = y; + edge = 1; + shortest = t; + } + } + + // clip against top edge, y = -1.0 + d1 = -1.0f - p1.y; + d2 = -1.0f - p2.y; + if (d1 * d2 < 0.0f) { + // they are on opposite sides, get point of intersection + t = d1 / (d1 - d2); + x = (p2.x - p1.x)*t + p1.x; + if (x >= -1.0f && x <= 1.0f && t <= shortest) { + out.y = -1.0f; + out.x = x; + edge = 0; + shortest = t; + } + } + + // clip against bottom edge, y = 1.0 + d1 = p1.y - 1.0f; + d2 = p2.y - 1.0f; + if (d1 * d2 < 0.0f) { + // they are on opposite sides, get point of intersection + t = d1 / (d1 - d2); + x = (p2.x - p1.x)*t + p1.x; + if (x >= -1.0f && x <= 1.0f && t <= shortest) { + out.y = 1.0f; + out.x = x; + edge = 2; + shortest = t; + } + } + + return edge; +} + + uint8 CRadar::CalculateBlipAlpha(float dist) { #ifdef MENU_MAP @@ -892,7 +1020,7 @@ INITSAVEBUF CheckSaveHeader(buf, 'R', 'D', 'R', '\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUMRADARBLIPS; i++) - ms_RadarTrace[i] = ReadSaveBuf(buf); + ms_RadarTrace[i] = ReadSaveBuf(buf); VALIDATESAVEBUF(size); } @@ -925,12 +1053,6 @@ CRadar::LoadTextures() CTxdStore::PopCurrentTxd(); } -void RemoveMapSection(int32 x, int32 y) -{ - if (x >= 0 && x <= 7 && y >= 0 && y <= 7) - CStreaming::RemoveTxd(gRadarTxdIds[x + RADAR_NUM_TILES * y]); -} - void CRadar::RemoveRadarSections() { for (int i = 0; i < 8; i++) @@ -938,12 +1060,6 @@ void CRadar::RemoveRadarSections() RemoveMapSection(i, j); } -void CRadar::RequestMapSection(int32 x, int32 y) -{ - ClipRadarTileCoords(x, y); - CStreaming::RequestTxd(gRadarTxdIds[x + RADAR_NUM_TILES * y], STREAMFLAGS_DONT_REMOVE | STREAMFLAGS_DEPENDENCY); -} - void CRadar::SaveAllRadarBlips(uint8 *buf, uint32 *size) { *size = SAVE_HEADER_SIZE + sizeof(ms_RadarTrace); @@ -1242,121 +1358,6 @@ void CRadar::TransformRealWorldPointToRadarSpace(CVector2D &out, const CVector2D out.y = c * y - s * x; } -// Transform from section indices to world coordinates -void CRadar::GetTextureCorners(int32 x, int32 y, CVector2D *out) -{ - x = x - RADAR_NUM_TILES/2; - y = -(y - RADAR_NUM_TILES/2); - - // bottom left - out[0].x = RADAR_TILE_SIZE * (x); - out[0].y = RADAR_TILE_SIZE * (y - 1); - - // bottom right - out[1].x = RADAR_TILE_SIZE * (x + 1); - out[1].y = RADAR_TILE_SIZE * (y - 1); - - // top right - out[2].x = RADAR_TILE_SIZE * (x + 1); - out[2].y = RADAR_TILE_SIZE * (y); - - // top left - out[3].x = RADAR_TILE_SIZE * (x); - out[3].y = RADAR_TILE_SIZE * (y); -} - -void CRadar::ClipRadarTileCoords(int32 &x, int32 &y) -{ - if (x < 0) - x = 0; - if (x > RADAR_NUM_TILES-1) - x = RADAR_NUM_TILES-1; - if (y < 0) - y = 0; - if (y > RADAR_NUM_TILES-1) - y = RADAR_NUM_TILES-1; -} - - -bool CRadar::IsPointInsideRadar(const CVector2D &point) -{ - if (point.x < -1.0f || point.x > 1.0f) return false; - if (point.y < -1.0f || point.y > 1.0f) return false; - return true; -} - -// clip line p1,p2 against (-1.0, 1.0) in x and y, set out to clipped point closest to p1 -int CRadar::LineRadarBoxCollision(CVector2D &out, const CVector2D &p1, const CVector2D &p2) -{ - float d1, d2; - float t; - float x, y; - float shortest = 1.0f; - int edge = -1; - - // clip against left edge, x = -1.0 - d1 = -1.0f - p1.x; - d2 = -1.0f - p2.x; - if (d1 * d2 < 0.0f) { - // they are on opposite sides, get point of intersection - t = d1 / (d1 - d2); - y = (p2.y - p1.y)*t + p1.y; - if (y >= -1.0f && y <= 1.0f && t <= shortest) { - out.x = -1.0f; - out.y = y; - edge = 3; - shortest = t; - } - } - - // clip against right edge, x = 1.0 - d1 = p1.x - 1.0f; - d2 = p2.x - 1.0f; - if (d1 * d2 < 0.0f) { - // they are on opposite sides, get point of intersection - t = d1 / (d1 - d2); - y = (p2.y - p1.y)*t + p1.y; - if (y >= -1.0f && y <= 1.0f && t <= shortest) { - out.x = 1.0f; - out.y = y; - edge = 1; - shortest = t; - } - } - - // clip against top edge, y = -1.0 - d1 = -1.0f - p1.y; - d2 = -1.0f - p2.y; - if (d1 * d2 < 0.0f) { - // they are on opposite sides, get point of intersection - t = d1 / (d1 - d2); - x = (p2.x - p1.x)*t + p1.x; - if (x >= -1.0f && x <= 1.0f && t <= shortest) { - out.y = -1.0f; - out.x = x; - edge = 0; - shortest = t; - } - } - - // clip against bottom edge, y = 1.0 - d1 = p1.y - 1.0f; - d2 = p2.y - 1.0f; - if (d1 * d2 < 0.0f) { - // they are on opposite sides, get point of intersection - t = d1 / (d1 - d2); - x = (p2.x - p1.x)*t + p1.x; - if (x >= -1.0f && x <= 1.0f && t <= shortest) { - out.y = 1.0f; - out.x = x; - edge = 2; - shortest = t; - } - } - - return edge; -} - void CRadar::CalculateCachedSinCos() { @@ -1488,8 +1489,14 @@ STARTPATCHES InjectHook(0x4A5C60, CRadar::SetRadarMarkerState, PATCH_JUMP); InjectHook(0x4A5D10, CRadar::DrawRotatingRadarSprite, PATCH_JUMP); InjectHook(0x4A5EF0, CRadar::DrawRadarSprite, PATCH_JUMP); + InjectHook(0x4A6020, ClipRadarTileCoords, PATCH_JUMP); + InjectHook(0x4A6060, RequestMapSection, PATCH_JUMP); + InjectHook(0x4A60A0, RemoveMapSection, PATCH_JUMP); InjectHook(0x4A60E0, CRadar::RemoveRadarSections, PATCH_JUMP); InjectHook(0x4A6100, (void (*)(int32, int32))&CRadar::StreamRadarSections, PATCH_JUMP); + InjectHook(0x4A6160, IsPointInsideRadar, PATCH_JUMP); + InjectHook(0x4A61C0, GetTextureCorners, PATCH_JUMP); + InjectHook(0x4A6250, LineRadarBoxCollision, PATCH_JUMP); InjectHook(0x4A64A0, CRadar::ClipRadarPoly, PATCH_JUMP); InjectHook(0x4A67E0, CRadar::DrawRadarSection, PATCH_JUMP); InjectHook(0x4A69C0, CRadar::DrawRadarMask, PATCH_JUMP); @@ -1497,8 +1504,6 @@ STARTPATCHES InjectHook(0x4A6C20, CRadar::DrawRadarMap, PATCH_JUMP); InjectHook(0x4A6E30, CRadar::SaveAllRadarBlips, PATCH_JUMP); InjectHook(0x4A6F30, CRadar::LoadAllRadarBlips, PATCH_JUMP); - - InjectHook(0x4A61C0, CRadar::GetTextureCorners, PATCH_JUMP); - InjectHook(0x4A6160, CRadar::IsPointInsideRadar, PATCH_JUMP); - InjectHook(0x4A6250, CRadar::LineRadarBoxCollision, PATCH_JUMP); + //InjectHook(0x4A7000, `global constructor keyed to'Radar.cpp, PATCH_JUMP); + //InjectHook(0x4A7260, sRadarTrace::sRadarTrace, PATCH_JUMP); ENDPATCHES diff --git a/src/core/Radar.h b/src/core/Radar.h index 6d5bb196..27f3a6f0 100644 --- a/src/core/Radar.h +++ b/src/core/Radar.h @@ -56,7 +56,7 @@ enum BLIP_MODE_SQUARE, }; -struct CBlip +struct sRadarTrace { uint32 m_nColor; uint32 m_eBlipType; // eBlipType @@ -71,7 +71,7 @@ struct CBlip uint16 m_eBlipDisplay; // eBlipDisplay uint16 m_eRadarSprite; // eRadarSprite }; -static_assert(sizeof(CBlip) == 0x30, "CBlip: error"); +static_assert(sizeof(sRadarTrace) == 0x30, "sRadarTrace: error"); // Values for screen space #define RADAR_LEFT (40.0f) @@ -83,7 +83,7 @@ class CRadar { public: static float &m_radarRange; - static CBlip (&ms_RadarTrace)[NUMRADARBLIPS]; + static sRadarTrace (&ms_RadarTrace)[NUMRADARBLIPS]; static CSprite2d AsukaSprite; static CSprite2d BombSprite; static CSprite2d CatSprite; @@ -144,7 +144,6 @@ public: static void LoadAllRadarBlips(uint8 *buf, uint32 size); static void LoadTextures(); static void RemoveRadarSections(); - static void RequestMapSection(int32 x, int32 y); static void SaveAllRadarBlips(uint8*, uint32*); static void SetBlipSprite(int32 i, int32 icon); static int32 SetCoordBlip(eBlipType type, CVector pos, int32, eBlipDisplay); @@ -161,10 +160,6 @@ public: static void TransformRadarPointToScreenSpace(CVector2D &out, const CVector2D &in); static void TransformRealWorldPointToRadarSpace(CVector2D &out, const CVector2D &in); - // no in CRadar in the game: - static void GetTextureCorners(int32 x, int32 y, CVector2D *out); - static void ClipRadarTileCoords(int32 &x, int32 &y); - static bool IsPointInsideRadar(const CVector2D &); - static int LineRadarBoxCollision(CVector2D &, const CVector2D &, const CVector2D &); + // no in CRadar in the game: static void CalculateCachedSinCos(); }; diff --git a/src/core/config.h b/src/core/config.h index f653f724..a2b6eb7d 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -150,6 +150,7 @@ enum Config { //#define MASTER #if defined GTA_PS2 +# define GTA_PS2_STUFF # define RANDOMSPLASH #elif defined GTA_PC # define GTA3_1_1_PATCH diff --git a/src/core/main.cpp b/src/core/main.cpp index 867867a9..93e4c71c 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -455,8 +455,10 @@ LoadingScreen(const char *str1, const char *str2, const char *splashscreen) splash = LoadSplash(splashscreen); +#ifndef GTA_PS2 if(RsGlobal.quit) return; +#endif if(DoRWStuffStartOfFrame(0, 0, 0, 0, 0, 0, 255)){ CSprite2d::SetRecipNearClip(); @@ -1226,7 +1228,7 @@ AppEventHandler(RsEvent event, void *param) void TheModelViewer(void) { -#if (defined(PS2) || defined(XBOX)) +#if (defined(GTA_PS2) || defined(GTA_XBOX)) //TODO #else #ifdef ASPECT_RATIO_SCALE @@ -1255,13 +1257,13 @@ void TheGame(void) { printf("Into TheGame!!!\n"); -#ifdef PS2 +#ifdef GTA_PS2 gMainHeap.PushMemId(_TODOCONST(1)); #endif CTimer::Initialise(); -#ifdef PS2 +#ifdef GTA_PS2 CGame::Initialise(); #else CGame::Initialise("DATA\\GTA3.DAT"); @@ -1271,10 +1273,8 @@ void TheGame(void) LoadingScreen("Starting Game", NULL, splash); -#ifdef PS2 - int32 state = TheMemoryCard.CheckCardInserted(_TODOCONST(0)); - - if (state == _TODOCONST(26) +#ifdef GTA_PS2 + if ( TheMemoryCard.CheckCardInserted(_TODOCONST(0)) == _TODOCONST(26) && TheMemoryCard.ChangeDirectory(_TODOCONST(0), TheMemoryCard.field154) && TheMemoryCard.FindMostRecentFileName(_TODOCONST(0), TheMemoryCard.field37) == 1 && TheMemoryCard.CheckDataNotCorrupt(TheMemoryCard.field37)) @@ -1324,12 +1324,12 @@ void TheGame(void) CSprite2d::InitPerFrame(); CFont::InitPerFrame(); -#ifdef PS2 +#ifdef GTA_PS2 gMainHeap.PushMemId(_TODOCONST(12)); #endif CPointLights::NumLights = 0; CGame::Process(); -#ifdef PS2 +#ifdef GTA_PS2 gMainHeap.PopMemId(); #endif @@ -1354,18 +1354,18 @@ void TheGame(void) break; SetLightsWithTimeOfDayColour(Scene.world); -#ifdef PS2 +#ifdef GTA_PS2 gMainHeap.PushMemId(_TODOCONST(15)); #endif if (!FrontEndMenuManager.m_bMenuActive || FrontEndMenuManager.m_bRenderGameInMenu == true && TheCamera.GetScreenFadeStatus() != FADE_2 ) { -#ifdef PS2 +#ifdef GTA_PS2 gMainHeap.PushMemId(_TODOCONST(11)); #endif CRenderer::ConstructRenderList(); CRenderer::PreRender(); -#ifdef PS2 +#ifdef GTA_PS2 gMainHeap.PopMemId(); #endif @@ -1405,7 +1405,7 @@ void TheGame(void) if (FrontEndMenuManager.m_bWantToLoad) #endif { -#ifdef PS2 +#ifdef GTA_PS2 gMainHeap.PopMemId(); #endif break; @@ -1424,7 +1424,7 @@ void TheGame(void) CTimer::Update(); -#ifdef PS2 +#ifdef GTA_PS2 gMainHeap.PopMemId(); #endif @@ -1478,11 +1478,11 @@ void SystemInit() mwInit(); #endif -#ifdef PS2 +#ifdef GTA_PS2 InitMemoryMgr(); #endif -#ifdef PS2 +#ifdef GTA_PS2 CFileMgr::InitCdSystem(); char path[256]; @@ -1505,10 +1505,9 @@ void SystemInit() CFileMgr::Initialise(); -#ifdef PS2 +#ifdef GTA_PS2 CFileMgr::InitCd(); - Char modulepath[256]; strcpy(modulepath, "cdrom0:\\"); @@ -1543,7 +1542,7 @@ void SystemInit() #endif -#ifdef PS2 +#ifdef GTA_PS2 ThreadParam param; param.entry = &IdleThread; @@ -1567,7 +1566,7 @@ void SystemInit() CGame::nastyGame = true; CMenuManager::m_PrefsAllowNastyGame = true; -#ifdef PS2 +#ifdef GTA_PS2 int32 lang = sceScfGetLanguage(); if ( lang == SCE_ITALIAN_LANGUAGE ) CMenuManager::m_PrefsLanguage = LANGUAGE_ITALIAN; @@ -1604,7 +1603,7 @@ void GameInit() { if ( !gameAlreadyInitialised ) { -#ifdef PS2 +#ifdef GTA_PS2 char path[256]; strcpy(path, "cdrom0:\\"); @@ -1630,7 +1629,7 @@ void GameInit() //TODO #endif -#ifdef PS2 +#ifdef GTA_PS2 char *files[] = { "\\ANIM\\CUTS.IMG;1", @@ -1730,7 +1729,7 @@ void GameInit() CreateDebugFont(); -#ifdef PS2 +#ifdef GTA_PS2 AddIntcHandler(_TODOCONST(2), VBlankCounter, 0); #endif @@ -1738,18 +1737,18 @@ void GameInit() CSprite2d::SetRecipNearClip(); CTxdStore::Initialise(); -#ifdef PS2 +#ifdef GTA_PS2 gMainHeap.PushMemId(_TODOCONST(9)); #endif CFont::Initialise(); CHud::Initialise(); -#ifdef PS2 +#ifdef GTA_PS2 gMainHeap.PopMemId(); #endif ValidateVersion(); -#ifdef PS2 +#ifdef GTA_PS2 sceCdCLOCK rtc; sceCdReadClock(&rtc); uint32 seed = rtc.minute + rtc.day; @@ -1789,7 +1788,7 @@ main(int argc, char *argv[]) } #endif -#ifdef PS2 +#ifdef GTA_PS2 { if (gameAlreadyInitialised) RpSkySuspend(); diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp index c4aca8e4..80d7fe47 100644 --- a/src/render/Hud.cpp +++ b/src/render/Hud.cpp @@ -815,7 +815,7 @@ void CHud::Draw() DrawScriptText */ if (!CTimer::GetIsUserPaused()) { - CTextLine* IntroText = CTheScripts::IntroTextLines; + intro_text_line* IntroText = CTheScripts::IntroTextLines; for (int i = 0; i < MAX_NUM_INTRO_TEXT_LINES; i++) { if (CTheScripts::IntroTextLines[i].m_Text[0] && CTheScripts::IntroTextLines[i].m_bTextBeforeFade) { @@ -862,7 +862,7 @@ void CHud::Draw() } } - CScriptRectangle* IntroRect = CTheScripts::IntroRectangles; + intro_script_rectangle* IntroRect = CTheScripts::IntroRectangles; for (int i = 0; i < 16; i++) { if (CTheScripts::IntroRectangles[i].m_bIsUsed && CTheScripts::IntroRectangles[i].m_bBeforeFade) { From fd2152923c514d58226f2356ba4b8f43de02dccf Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 9 Apr 2020 10:06:30 +0300 Subject: [PATCH 043/112] txd.img creator --- src/core/RwHelper.cpp | 7 -- src/core/RwTexRead.cpp | 203 +++++++++++++++++++++++++++++++++++++++++ src/render/TexList.cpp | 41 +++++++++ src/render/TexList.h | 14 +++ 4 files changed, 258 insertions(+), 7 deletions(-) create mode 100644 src/render/TexList.cpp create mode 100644 src/render/TexList.h diff --git a/src/core/RwHelper.cpp b/src/core/RwHelper.cpp index 6325bf15..44866f4f 100644 --- a/src/core/RwHelper.cpp +++ b/src/core/RwHelper.cpp @@ -347,13 +347,6 @@ CameraCreate(RwInt32 width, RwInt32 height, RwBool zBuffer) return (nil); } -WRAPPER void ReadVideoCardCapsFile(uint32&, uint32&, uint32&, uint32&) { EAXJMP(0x5926C0); } -WRAPPER bool CheckVideoCardCaps(void) { EAXJMP(0x592740); } -WRAPPER void WriteVideoCardCapsFile(void) { EAXJMP(0x5927D0); } -WRAPPER void ConvertingTexturesScreen(uint32, uint32, const char*) { EAXJMP(0x592880); } -WRAPPER void DealWithTxdWriteError(uint32, uint32, const char*) { EAXJMP(0x592BF0); } -WRAPPER bool CreateTxdImageForVideoCard() { EAXJMP(0x592C70); } - void CreateDebugFont() { ; diff --git a/src/core/RwTexRead.cpp b/src/core/RwTexRead.cpp index 6b717b34..ef1ac197 100644 --- a/src/core/RwTexRead.cpp +++ b/src/core/RwTexRead.cpp @@ -3,10 +3,24 @@ #define DIRECTINPUT_VERSION 0x0800 #include #pragma warning( pop ) +#define WITHWINDOWS #include "common.h" #include "win.h" #include "patcher.h" #include "Timer.h" +#ifdef GTA_PC +#include "FileMgr.h" +#include "Pad.h" +#include "main.h" +#include "Directory.h" +#include "Streaming.h" +#include "TxdStore.h" +#include "CdStream.h" +#include "Font.h" +#include "Sprite2d.h" +#include "Text.h" +#include "RwHelper.h" +#endif //GTA_PC float &texLoadTime = *(float*)0x8F1B50; int32 &texNumLoaded = *(int32*)0x8F252C; @@ -132,9 +146,198 @@ RwTexDictionaryGtaStreamRead2(RwStream *stream, RwTexDictionary *texDict) return texDict; } +#ifdef GTA_PC +WRAPPER RwInt32 _rwD3D8FindCorrectRasterFormat(RwRasterType type, RwInt32 flags) { EAXJMP(0x59A350); } + +void +ReadVideoCardCapsFile(uint32 &cap32, uint32 &cap24, uint32 &cap16, uint32 &cap8) +{ + cap32 = UINT32_MAX; + cap24 = UINT32_MAX; + cap16 = UINT32_MAX; + cap8 = UINT32_MAX; + + int32 file = CFileMgr::OpenFile("DATA\\CAPS.DAT", "rb"); + if (file != 0) { + CFileMgr::Read(file, (char*)&cap32, 4); + CFileMgr::Read(file, (char*)&cap24, 4); + CFileMgr::Read(file, (char*)&cap16, 4); + CFileMgr::Read(file, (char*)&cap8, 4); + CFileMgr::CloseFile(file); + } +} + +bool +CheckVideoCardCaps(void) +{ + uint32 cap32 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMAT8888); + uint32 cap24 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMAT888); + uint32 cap16 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMAT1555); + uint32 cap8 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMATPAL8 | rwRASTERFORMAT8888); + uint32 fcap32, fcap24, fcap16, fcap8; + ReadVideoCardCapsFile(fcap32, fcap24, fcap16, fcap8); + return cap32 != fcap32 || cap24 != fcap24 || cap16 != fcap16 || cap8 != fcap8; +} + +void +WriteVideoCardCapsFile(void) +{ + uint32 cap32 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMAT8888); + uint32 cap24 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMAT888); + uint32 cap16 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMAT1555); + uint32 cap8 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMATPAL8 | rwRASTERFORMAT8888); + int32 file = CFileMgr::OpenFile("DATA\\CAPS.DAT", "wb"); + if (file != 0) { + CFileMgr::Write(file, (char*)&cap32, 4); + CFileMgr::Write(file, (char*)&cap24, 4); + CFileMgr::Write(file, (char*)&cap16, 4); + CFileMgr::Write(file, (char*)&cap8, 4); + CFileMgr::CloseFile(file); + } +} + +bool DoRWStuffStartOfFrame(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomRed, int16 BottomGreen, int16 BottomBlue, int16 Alpha); +void DoRWStuffEndOfFrame(void); + +void +ConvertingTexturesScreen(uint32 num, uint32 count, const char *text) +{ + HandleExit(); + + CSprite2d *splash = LoadSplash(nil); + if (!DoRWStuffStartOfFrame(0, 0, 0, 0, 0, 0, 255)) + return; + + CSprite2d::SetRecipNearClip(); + CSprite2d::InitPerFrame(); + CFont::InitPerFrame(); + DefinedState(); + + RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)rwTEXTUREADDRESSCLAMP); + splash->Draw(CRect(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT), CRGBA(255, 255, 255, 255)); + + CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(240.0f), SCREEN_SCALE_FROM_RIGHT(200.0f), SCREEN_SCALE_Y(248.0f)), CRGBA(64, 64, 64, 255)); + CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(240.0f), (SCREEN_SCALE_FROM_RIGHT(200.0f) - SCREEN_SCALE_X(200.0f)) * ((float)num / (float)count) + SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(248.0f)), CRGBA(255, 217, 106, 255)); + CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(120.0f), SCREEN_SCALE_Y(150.0f), SCREEN_SCALE_FROM_RIGHT(120.0f), SCREEN_HEIGHT - SCREEN_SCALE_Y(220.0f)), CRGBA(50, 50, 50, 210)); + + CFont::SetBackgroundOff(); + CFont::SetPropOn(); + CFont::SetScale(SCREEN_SCALE_X(0.45f), SCREEN_SCALE_Y(0.7f)); + CFont::SetWrapx(SCREEN_SCALE_FROM_RIGHT(170.0f)); + CFont::SetJustifyOff(); + CFont::SetColor(CRGBA(255, 217, 106, 255)); + CFont::SetBackGroundOnlyTextOff(); + CFont::SetFontStyle(FONT_BANK); + CFont::PrintString(SCREEN_SCALE_X(170.0f), SCREEN_SCALE_Y(160.0f), TheText.Get(text)); + CFont::DrawFonts(); + DoRWStuffEndOfFrame(); +} + +void +DealWithTxdWriteError(uint32 num, uint32 count, const char *text) +{ + while (!RsGlobal.quit) { + ConvertingTexturesScreen(num, count, text); + CPad::UpdatePads(); + if (CPad::GetPad(0)->GetEscapeJustDown()) + break; + } + RsGlobal.quit = false; + LoadingScreen(nil, nil, nil); + RsGlobal.quit = true; +} + +bool +CreateTxdImageForVideoCard() +{ + uint8 *buf = new uint8[CDSTREAM_SECTOR_SIZE]; + CDirectory *pDir = new CDirectory(TXDSTORESIZE); + CDirectory::DirectoryInfo dirInfo; + + CStreaming::FlushRequestList(); + + RwFileFunctions *filesys = RwOsGetFileInterface(); + + RwStream *img = RwStreamOpen(rwSTREAMFILENAME, rwSTREAMWRITE, "models\\txd.img"); + if (img == nil) { + if (_dwOperatingSystemVersion == OS_WINNT || _dwOperatingSystemVersion == OS_WIN2000 || _dwOperatingSystemVersion == OS_WINXP) { + DealWithTxdWriteError(0, TXDSTORESIZE, "CVT_CRT"); + delete []buf; + delete pDir; + } + return false; + } + + int32 i; + for (i = 0; i < TXDSTORESIZE; i++) { + ConvertingTexturesScreen(i, TXDSTORESIZE, "CVT_MSG"); + + if (CTxdStore::GetSlot(i) != nil && CStreaming::IsObjectInCdImage(i + STREAM_OFFSET_TXD)) { + CStreaming::RequestTxd(i, STREAMFLAGS_KEEP_IN_MEMORY); + CStreaming::RequestModelStream(0); + CStreaming::FlushChannels(); + + char filename[64]; + sprintf(filename, "%s.txd", CTxdStore::GetTxdName(i)); + + if (CTxdStore::GetSlot(i)->texDict) { + int32 pos = filesys->rwftell(img->Type.file.fpFile); + + if (RwTexDictionaryStreamWrite(CTxdStore::GetSlot(i)->texDict, img) == nil) { + DealWithTxdWriteError(i, TXDSTORESIZE, "CVT_ERR"); + RwStreamClose(img, nil); + delete []buf; + delete pDir; + CStreaming::RemoveTxd(i); + return false; + } + + int32 size = filesys->rwftell(img->Type.file.fpFile) - pos; + int32 num = size % CDSTREAM_SECTOR_SIZE; + + size /= CDSTREAM_SECTOR_SIZE; + if (num != 0) { + size++; + num = CDSTREAM_SECTOR_SIZE - num; + RwStreamWrite(img, buf, num); + } + + dirInfo.offset = pos / CDSTREAM_SECTOR_SIZE; + dirInfo.size = size; + strncpy(dirInfo.name, filename, sizeof(dirInfo.name)); + pDir->AddItem(dirInfo); + CStreaming::RemoveTxd(i); + } + CStreaming::FlushRequestList(); + } + } + + RwStreamClose(img, nil); + delete []buf; + + if (!pDir->WriteDirFile("models\\txd.dir")) { + DealWithTxdWriteError(i, TXDSTORESIZE, "CVT_ERR"); + delete pDir; + return false; + } + + delete pDir; + + WriteVideoCardCapsFile(); + return true; +} +#endif // GTA_PC + STARTPATCHES InjectHook(0x592380, RwTextureGtaStreamRead, PATCH_JUMP); InjectHook(0x5924A0, RwTexDictionaryGtaStreamRead, PATCH_JUMP); InjectHook(0x592550, RwTexDictionaryGtaStreamRead1, PATCH_JUMP); InjectHook(0x592650, RwTexDictionaryGtaStreamRead2, PATCH_JUMP); + + InjectHook(0x5926C0, ReadVideoCardCapsFile, PATCH_JUMP); + InjectHook(0x592740, CheckVideoCardCaps, PATCH_JUMP); + InjectHook(0x5927D0, WriteVideoCardCapsFile, PATCH_JUMP); + InjectHook(0x592880, ConvertingTexturesScreen, PATCH_JUMP); + InjectHook(0x592BF0, DealWithTxdWriteError, PATCH_JUMP); + InjectHook(0x592C70, CreateTxdImageForVideoCard, PATCH_JUMP); ENDPATCHES diff --git a/src/render/TexList.cpp b/src/render/TexList.cpp new file mode 100644 index 00000000..daed620a --- /dev/null +++ b/src/render/TexList.cpp @@ -0,0 +1,41 @@ +#include "common.h" +#include "TexList.h" +#include "rtbmp.h" +#include "FileMgr.h" + +bool CTexList::ms_nTexUsed[MAX_TEXUSED]; + +void +CTexList::Initialise() +{} + +void +CTexList::Shutdown() +{} + +RwTexture * +CTexList::SetTexture(int32 slot, char *name) +{ + return nil; +} + +int32 +CTexList::GetFirstFreeTexture() +{ + for (int32 i = 0; i < MAX_TEXUSED; i++) + if (!ms_nTexUsed[i]) + return i; + return -1; +} + +RwTexture * +CTexList::LoadFileNameTexture(char *name) +{ + return SetTexture(GetFirstFreeTexture(), name); +} + +void +CTexList::LoadGlobalTextureList() +{ + CFileMgr::SetDir("TEXTURES"); +} \ No newline at end of file diff --git a/src/render/TexList.h b/src/render/TexList.h new file mode 100644 index 00000000..c6618fba --- /dev/null +++ b/src/render/TexList.h @@ -0,0 +1,14 @@ +#pragma once + +class CTexList +{ + enum { MAX_TEXUSED = 400, }; + static bool ms_nTexUsed[MAX_TEXUSED]; +public: + static void Initialise(); + static void Shutdown(); + static RwTexture *SetTexture(int32 slot, char *name); + static int32 GetFirstFreeTexture(); + static RwTexture *LoadFileNameTexture(char *name); + static void LoadGlobalTextureList(); +}; \ No newline at end of file From cb262c791e95a959f015e3231f61912024c88818 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 8 Apr 2020 22:29:02 +0300 Subject: [PATCH 044/112] Finished CExplosion --- README.md | 1 - src/core/World.cpp | 2 + src/core/World.h | 2 + src/core/config.h | 4 +- src/vehicles/Bike.h | 15 ++ src/vehicles/Vehicle.h | 1 + src/weapons/Explosion.cpp | 429 ++++++++++++++++++++++++++++++++++---- src/weapons/Explosion.h | 25 ++- 8 files changed, 429 insertions(+), 50 deletions(-) create mode 100644 src/vehicles/Bike.h diff --git a/README.md b/README.md index a0e93bae..4ea7de40 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,6 @@ to reverse at the time, calling the original functions is acceptable. cAudioManager - WIP CBoat CBulletInfo -CExplosion CMenuManager - WIP CObject CPacManPickups diff --git a/src/core/World.cpp b/src/core/World.cpp index 4a0230ce..d64569b3 100644 --- a/src/core/World.cpp +++ b/src/core/World.cpp @@ -56,6 +56,8 @@ WRAPPER void CWorld::FindMissionEntitiesIntersectingCube(const CVector&, const C WRAPPER void CWorld::ClearCarsFromArea(float, float, float, float, float, float) { EAXJMP(0x4B50E0); } WRAPPER void CWorld::ClearPedsFromArea(float, float, float, float, float, float) { EAXJMP(0x4B52B0); } WRAPPER void CWorld::CallOffChaseForArea(float, float, float, float) { EAXJMP(0x4B5530); } +WRAPPER void CWorld::TriggerExplosion(const CVector& a1, float a2, float a3, CEntity *a4, bool a5) { EAXJMP(0x4B1140); } +WRAPPER void CWorld::SetPedsOnFire(float, float, float, float, CEntity*) { EAXJMP(0x4B3D30); } void CWorld::Initialise() diff --git a/src/core/World.h b/src/core/World.h index c4103eb2..07e7889f 100644 --- a/src/core/World.h +++ b/src/core/World.h @@ -132,6 +132,7 @@ public: static void SetAllCarsCanBeDamaged(bool); static void ExtinguishAllCarFiresInArea(CVector, float); static void SetCarsOnFire(float, float, float, float, CEntity*); + static void SetPedsOnFire(float, float, float, float, CEntity*); static void Initialise(); static void AddParticles(); @@ -140,6 +141,7 @@ public: static void RepositionCertainDynamicObjects(); static void RemoveStaticObjects(); static void Process(); + static void TriggerExplosion(const CVector &, float, float, CEntity*, bool); }; extern CColPoint *gaTempSphereColPoints; diff --git a/src/core/config.h b/src/core/config.h index f653f724..4425e7de 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -125,7 +125,9 @@ enum Config { NUM_GARAGE_STORED_CARS = 6, - NUM_CRANES = 8 + NUM_CRANES = 8, + + NUM_EXPLOSIONS = 48, }; // We'll use this once we're ready to become independent of the game diff --git a/src/vehicles/Bike.h b/src/vehicles/Bike.h new file mode 100644 index 00000000..00aa259c --- /dev/null +++ b/src/vehicles/Bike.h @@ -0,0 +1,15 @@ +#pragma once + +// some miami bike leftovers + +enum eBikeNodes { + BIKE_NODE_NONE, + BIKE_CHASSIS, + BIKE_FORKS_FRONT, + BIKE_FORKS_REAR, + BIKE_WHEEL_FRONT, + BIKE_WHEEL_REAR, + BIKE_MUDGUARD, + BIKE_HANDLEBARS, + BIKE_NUM_NODES +}; \ No newline at end of file diff --git a/src/vehicles/Vehicle.h b/src/vehicles/Vehicle.h index 4639f3e1..c7be3674 100644 --- a/src/vehicles/Vehicle.h +++ b/src/vehicles/Vehicle.h @@ -238,6 +238,7 @@ public: bool IsTrain(void) { return m_vehType == VEHICLE_TYPE_TRAIN; } bool IsHeli(void) { return m_vehType == VEHICLE_TYPE_HELI; } bool IsPlane(void) { return m_vehType == VEHICLE_TYPE_PLANE; } + bool IsBike(void) { return m_vehType == VEHICLE_TYPE_BIKE; } void FlyingControl(eFlightModel flightModel); void ProcessWheel(CVector &wheelFwd, CVector &wheelRight, CVector &wheelContactSpeed, CVector &wheelContactPoint, diff --git a/src/weapons/Explosion.cpp b/src/weapons/Explosion.cpp index e99dc918..03fcb7c4 100644 --- a/src/weapons/Explosion.cpp +++ b/src/weapons/Explosion.cpp @@ -1,11 +1,29 @@ #include "common.h" #include "patcher.h" +#include "Automobile.h" +#include "Bike.h" +#include "Camera.h" +#include "Coronas.h" #include "DMAudio.h" +#include "Entity.h" +#include "EventList.h" #include "Explosion.h" +#include "General.h" +#include "Fire.h" +#include "Pad.h" +#include "Particle.h" +#include "PointLights.h" +#include "Shadows.h" +#include "Timer.h" +#include "Vehicle.h" +#include "WaterLevel.h" +#include "World.h" -CExplosion(&gaExplosion)[48] = *(CExplosion(*)[48])*(uintptr*)0x64E208; +CExplosion(&gaExplosion)[NUM_EXPLOSIONS] = *(CExplosion(*)[NUM_EXPLOSIONS])*(uintptr*)0x64E208; -WRAPPER void CExplosion::AddExplosion(CEntity *explodingEntity, CEntity *culprit, eExplosionType type, const CVector &pos, uint32) { EAXJMP(0x5591C0); } +// these two were not initialised in original code, I'm really not sure what were they meant to be +RwRGBA colMedExpl = { 0, 0, 0, 0 }; +RwRGBA colUpdate = { 0, 0, 0, 0 }; int AudioHandle = AEHANDLE_NONE; @@ -15,26 +33,25 @@ CExplosion::Initialise() debug("Initialising CExplosion...\n"); for (int i = 0; i < ARRAY_SIZE(gaExplosion); i++) { gaExplosion[i].m_ExplosionType = EXPLOSION_GRENADE; - gaExplosion[i].m_vecPosition.x = 0.0f; - gaExplosion[i].m_vecPosition.y = 0.0f; - gaExplosion[i].m_vecPosition.z = 0.0f; + gaExplosion[i].m_vecPosition = CVector(0.0f, 0.0f, 0.0f); gaExplosion[i].m_fRadius = 1.0f; gaExplosion[i].m_fPropagationRate = 0.0f; - gaExplosion[i].field_38 = 0; + gaExplosion[i].m_fZshift = 0.0f; gaExplosion[i].m_pCreatorEntity = nil; gaExplosion[i].m_pVictimEntity = nil; gaExplosion[i].m_fStopTime = 0.0f; - gaExplosion[i].m_bActive = false; - gaExplosion[i].m_nStartTime = 0; - gaExplosion[i].field_34 = 0; + gaExplosion[i].m_nIteration = 0; + gaExplosion[i].m_fStartTime = 0.0f; + gaExplosion[i].m_bIsBoat = false; } AudioHandle = DMAudio.CreateEntity(AUDIOTYPE_EXPLOSION, (void*)1); if (AudioHandle >= 0) - DMAudio.SetEntityStatus(AudioHandle, 1); + DMAudio.SetEntityStatus(AudioHandle, true); debug("CExplosion ready\n"); } -void CExplosion::Shutdown() +void +CExplosion::Shutdown() { debug("Shutting down CExplosion...\n"); if (AudioHandle >= 0) { @@ -44,27 +61,16 @@ void CExplosion::Shutdown() debug("CExplosion shut down\n"); } -void -CExplosion::RemoveAllExplosionsInArea(CVector pos, float radius) -{ - for (int i = 0; i < ARRAY_SIZE(gaExplosion); i++) { - if (gaExplosion[i].m_bActive) { - if ((pos - gaExplosion[i].m_vecPosition).MagnitudeSqr() < SQR(radius)) - gaExplosion[i].m_bActive = false; - } - } -} - int8 CExplosion::GetExplosionActiveCounter(uint8 id) { - return gaExplosion[id].m_bActiveCounter; + return gaExplosion[id].m_nActiveCounter; } -CVector * -CExplosion::GetExplosionPosition(uint8 id) +void +CExplosion::ResetExplosionActiveCounter(uint8 id) { - return &gaExplosion[id].m_vecPosition; + gaExplosion[id].m_nActiveCounter = 0; } uint8 @@ -73,18 +79,358 @@ CExplosion::GetExplosionType(uint8 id) return gaExplosion[id].m_ExplosionType; } -void -CExplosion::ResetExplosionActiveCounter(uint8 id) +CVector * +CExplosion::GetExplosionPosition(uint8 id) { - gaExplosion[id].m_bActiveCounter = 0; + return &gaExplosion[id].m_vecPosition; } bool -CExplosion::TestForExplosionInArea(eExplosionType a1, float x1, float x2, float y1, float y2, float z1, float z2) +CExplosion::AddExplosion(CEntity *explodingEntity, CEntity *culprit, eExplosionType type, const CVector &pos, uint32 lifetime) +{ + CVector pPosn; + CVector posGround; + + RwRGBA colorMedium = colMedExpl; + bool bDontExplode = false; + const RwRGBA color = { 160, 160, 160, 255 }; + pPosn = pos; + pPosn.z += 5.0f; + CShadows::AddPermanentShadow(SHADOWTEX_CAR, gpShadowHeliTex, &pPosn, 8.0f, 0.0f, 0.0f, -8.0f, 200, 0, 0, 0, 10.0f, 1, 30000.0f); + + int n = 0; + while (gaExplosion[n].m_nIteration != 0 && n < ARRAY_SIZE(gaExplosion)) + n++; + if (n == ARRAY_SIZE(gaExplosion)) + return false; + + CExplosion &explosion = gaExplosion[n]; + explosion.m_ExplosionType = type; + explosion.m_vecPosition = pos; + explosion.m_fRadius = 1.0f; + explosion.m_fZshift = 0.0f; + explosion.m_pCreatorEntity = culprit; + if (culprit != nil) + culprit->RegisterReference(&explosion.m_pCreatorEntity); + explosion.m_pVictimEntity = explodingEntity; + if (explodingEntity != nil) + explodingEntity->RegisterReference(&explosion.m_pVictimEntity); + explosion.m_nIteration = 1; + explosion.m_nActiveCounter = 1; + explosion.m_bIsBoat = false; + explosion.m_nParticlesExpireTime = lifetime != 0 ? CTimer::GetTimeInMilliseconds() + lifetime : 0; + switch (type) + { + case EXPLOSION_GRENADE: + explosion.m_fRadius = 9.0f; + explosion.m_fPower = 300.0f; + explosion.m_fStopTime = lifetime + CTimer::GetTimeInMilliseconds() + 750; + explosion.m_fPropagationRate = 0.5f; + posGround = pos; + posGround.z = CWorld::FindGroundZFor3DCoord(posGround.x, posGround.y, posGround.z + 3.0f, nil); + CEventList::RegisterEvent(EVENT_EXPLOSION, posGround, 250); + if (Distance(explosion.m_vecPosition, TheCamera.GetPosition()) < 40.0f) + CParticle::AddParticle(PARTICLE_EXPLOSION_LFAST, explosion.m_vecPosition, CVector(0.0f, 0.0f, 0.0f), nil, 5.5f, color); + break; + case EXPLOSION_MOLOTOV: + { + explosion.m_fRadius = 6.0f; + explosion.m_fPower = 0.0f; + explosion.m_fStopTime = lifetime + CTimer::GetTimeInMilliseconds() + 3000; + explosion.m_fPropagationRate = 0.5f; + posGround = pos; + bool found; + posGround.z = CWorld::FindGroundZFor3DCoord(posGround.x, posGround.y, posGround.z + 3.0f, &found); + if (found) { + float waterLevel; + if (CWaterLevel::GetWaterLevelNoWaves(posGround.x, posGround.y, posGround.z, &waterLevel) + && posGround.z < waterLevel + && waterLevel - 6.0f < posGround.z) // some subway/tunnels check? + bDontExplode = true; + else + gFireManager.StartFire(posGround, 1.8f, false); + } + else + bDontExplode = true; + break; + } + case EXPLOSION_ROCKET: + explosion.m_fRadius = 10.0f; + explosion.m_fPower = 300.0f; + explosion.m_fStopTime = lifetime + CTimer::GetTimeInMilliseconds() + 750; + explosion.m_fPropagationRate = 0.5f; + CEventList::RegisterEvent(EVENT_EXPLOSION, pos, 250); + if (Distance(explosion.m_vecPosition, TheCamera.GetPosition()) < 40.0f) + CParticle::AddParticle(PARTICLE_EXPLOSION_LFAST, explosion.m_vecPosition, CVector(0.0f, 0.0f, 0.0f), nil, 5.5f, color); + break; + case EXPLOSION_CAR: + case EXPLOSION_CAR_QUICK: + explosion.m_fRadius = 9.0f; + explosion.m_fPower = 300.0f; + explosion.m_fStopTime = lifetime + CTimer::GetTimeInMilliseconds() + 4250; + explosion.m_fPropagationRate = 0.5f; + explosion.m_fStartTime = CTimer::GetTimeInMilliseconds(); + if (explosion.m_pVictimEntity != nil) { + if (explosion.m_pVictimEntity->IsVehicle() && ((CVehicle*)explosion.m_pVictimEntity)->IsBoat()) + explosion.m_bIsBoat = true; + CEventList::RegisterEvent(EVENT_EXPLOSION, EVENT_ENTITY_VEHICLE, explosion.m_pVictimEntity, nil, 1000); + } else + CEventList::RegisterEvent(EVENT_EXPLOSION, pos, 1000); + + if (explosion.m_pVictimEntity != nil && !explosion.m_bIsBoat) { + int rn = (CGeneral::GetRandomNumber() & 1) + 2; + for (int i = 0; i < rn; i++) { + CParticle::AddParticle(PARTICLE_EXPLOSION_MEDIUM, explosion.m_pVictimEntity->GetPosition(), CVector(0.0f, 0.0f, 0.0f), nil, 3.5f, colMedExpl); + CParticle::AddParticle(PARTICLE_EXPLOSION_LFAST, explosion.m_pVictimEntity->GetPosition(), CVector(0.0f, 0.0f, 0.0f), nil, 5.5f, color); + } + CVehicle *veh = (CVehicle*)explosion.m_pVictimEntity; + int32 component = CAR_WING_LR; + + // miami leftover + if (veh->IsBike()) + component = BIKE_FORKS_REAR; + + if (veh->IsComponentPresent(component)) { + CVector componentPos; + veh->GetComponentWorldPosition(component, componentPos); + rn = (CGeneral::GetRandomNumber() & 1) + 1; + for (int i = 0; i < rn; i++) + CParticle::AddJetExplosion(componentPos, 1.4f, 0.0f); + } + } + break; + case EXPLOSION_HELI: + explosion.m_fRadius = 6.0f; + explosion.m_fPower = 300.0f; + explosion.m_fStopTime = lifetime + CTimer::GetTimeInMilliseconds() + 750; + explosion.m_fPropagationRate = 0.5f; + explosion.m_fStartTime = CTimer::GetTimeInMilliseconds(); + for (int i = 0; i < 10; i++) { + CVector randpos; + uint8 x, y, z; + + x = CGeneral::GetRandomNumber(); + y = CGeneral::GetRandomNumber(); + z = CGeneral::GetRandomNumber(); + randpos = pos + CVector(x - 128, y - 128, z - 128) / 20.0f; + + CParticle::AddParticle(PARTICLE_EXPLOSION_MFAST, randpos, CVector(0.0f, 0.0f, 0.0f), nil, 2.5f, color); + + x = CGeneral::GetRandomNumber(); + y = CGeneral::GetRandomNumber(); + z = CGeneral::GetRandomNumber(); + randpos = pos + CVector(x - 128, y - 128, z - 128) / 20.0f; + + CParticle::AddParticle(PARTICLE_EXPLOSION_LFAST, randpos, CVector(0.0f, 0.0f, 0.0f), nil, 5.0f, color); + + x = CGeneral::GetRandomNumber(); + y = CGeneral::GetRandomNumber(); + z = CGeneral::GetRandomNumber(); + randpos = pos + CVector(x - 128, y - 128, z - 128) / 20.0f; + + CParticle::AddJetExplosion(randpos, 1.4f, 3.0f); + } + CEventList::RegisterEvent(EVENT_EXPLOSION, pos, 1000); + break; + case EXPLOSION_MINE: + explosion.m_fRadius = 10.0f; + explosion.m_fPower = 150.0f; + explosion.m_fStopTime = lifetime + CTimer::GetTimeInMilliseconds() + 750; + explosion.m_fPropagationRate = 0.5f; + posGround = pos; + //posGround.z = + CWorld::FindGroundZFor3DCoord(pos.x, pos.y, pos.z + 4.0f, nil); // BUG? result is unused + CEventList::RegisterEvent(EVENT_EXPLOSION, posGround, 250); + break; + case EXPLOSION_BARREL: + explosion.m_fRadius = 7.0f; + explosion.m_fPower = 150.0f; + explosion.m_fStopTime = lifetime + CTimer::GetTimeInMilliseconds() + 750; + explosion.m_fPropagationRate = 0.5f; + for (int i = 0; i < 6; i++) { + CVector randpos; + uint8 x, y, z; + + x = CGeneral::GetRandomNumber(); + y = CGeneral::GetRandomNumber(); + z = CGeneral::GetRandomNumber(); + randpos = CVector(x - 128, y - 128, z - 128); + + randpos.x /= 50.0f; + randpos.y /= 50.0f; + randpos.z /= 25.0f; + randpos += pos; + CParticle::AddParticle(PARTICLE_EXPLOSION_MEDIUM, randpos, CVector(0.0f, 0.0f, 0.0f), nil, 0.0f, colorMedium); + } + posGround = pos; + //posGround.z = + CWorld::FindGroundZFor3DCoord(pos.x, pos.y, pos.z + 4.0f, nil); // BUG? result is unused + CEventList::RegisterEvent(EVENT_EXPLOSION, posGround, 250); + break; + case EXPLOSION_TANK_GRENADE: + explosion.m_fRadius = 10.0f; + explosion.m_fPower = 150.0f; + explosion.m_fStopTime = lifetime + CTimer::GetTimeInMilliseconds() + 750; + explosion.m_fPropagationRate = 0.5f; + posGround = pos; + //posGround.z = + CWorld::FindGroundZFor3DCoord(pos.x, pos.y, pos.z + 4.0f, nil); // BUG? result is unused + CEventList::RegisterEvent(EVENT_EXPLOSION, posGround, 250); + break; + case EXPLOSION_HELI_BOMB: + explosion.m_fRadius = 8.0f; + explosion.m_fPower = 50.0f; + explosion.m_fStopTime = lifetime + CTimer::GetTimeInMilliseconds() + 750; + explosion.m_fPropagationRate = 0.5f; + posGround = pos; + //posGround.z = + CWorld::FindGroundZFor3DCoord(pos.x, pos.y, pos.z + 4.0f, nil); // BUG? result is unused + CEventList::RegisterEvent(EVENT_EXPLOSION, posGround, 250); + break; + } + if (bDontExplode) { + explosion.m_nIteration = 0; + return false; + } + + if (explosion.m_fPower != 0.0f && explosion.m_nParticlesExpireTime == 0) + CWorld::TriggerExplosion(pos, explosion.m_fRadius, explosion.m_fPower, culprit, (type == EXPLOSION_ROCKET || type == EXPLOSION_CAR_QUICK || type == EXPLOSION_MINE || type == EXPLOSION_BARREL || type == EXPLOSION_TANK_GRENADE || type == EXPLOSION_HELI_BOMB)); + + TheCamera.CamShake(0.6f, pos.x, pos.y, pos.z); + CPad::GetPad(0)->StartShake_Distance(300, 128, pos.x, pos.y, pos.z); + return true; +} + +void +CExplosion::Update() +{ + RwRGBA color = colUpdate; + for (int i = 0; i < ARRAY_SIZE(gaExplosion); i++) { + CExplosion &explosion = gaExplosion[i]; + if (explosion.m_nIteration == 0) continue; + + if (explosion.m_nParticlesExpireTime != 0) { + if (CTimer::GetTimeInMilliseconds() > explosion.m_nParticlesExpireTime) { + explosion.m_nParticlesExpireTime = 0; + if (explosion.m_fPower != 0.0f) + CWorld::TriggerExplosion(explosion.m_vecPosition, explosion.m_fRadius, explosion.m_fPower, explosion.m_pCreatorEntity, (explosion.m_ExplosionType == EXPLOSION_ROCKET || explosion.m_ExplosionType == EXPLOSION_CAR_QUICK || explosion.m_ExplosionType == EXPLOSION_MINE || explosion.m_ExplosionType == EXPLOSION_BARREL || explosion.m_ExplosionType == EXPLOSION_TANK_GRENADE || explosion.m_ExplosionType == EXPLOSION_HELI_BOMB)); + } + } else { + explosion.m_fRadius += explosion.m_fPropagationRate * CTimer::GetTimeStep(); + int32 someTime = explosion.m_fStopTime - CTimer::GetTimeInMilliseconds(); + switch (explosion.m_ExplosionType) + { + case EXPLOSION_GRENADE: + case EXPLOSION_ROCKET: + case EXPLOSION_HELI: + case EXPLOSION_MINE: + case EXPLOSION_BARREL: + if (CTimer::GetFrameCounter() & 1) { + CPointLights::AddLight(CPointLights::LIGHT_POINT, explosion.m_vecPosition, CVector(0.0f, 0.0f, 0.0f), 20.0f, 1.0f, 1.0f, 0.5f, CPointLights::FOG_NONE, true); + CCoronas::RegisterCorona((uintptr)&explosion, 255, 255, 200, 255, explosion.m_vecPosition, 8.0f, 120.0f, gpCoronaTexture[0], CCoronas::TYPE_NORMAL, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); + } else + CCoronas::RegisterCorona((uintptr)&explosion, 128, 128, 100, 255, explosion.m_vecPosition, 8.0f, 120.0f, gpCoronaTexture[0], CCoronas::TYPE_NORMAL, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); + CCoronas::RegisterCorona((uintptr)&explosion + 1, 30, 30, 25, 255, explosion.m_vecPosition, explosion.m_fRadius, 120.0f, gpCoronaTexture[7], CCoronas::TYPE_STAR, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); + break; + case EXPLOSION_MOLOTOV: + CWorld::SetPedsOnFire(explosion.m_vecPosition.x, explosion.m_vecPosition.y, explosion.m_vecPosition.z, 6.0f, explosion.m_pCreatorEntity); + CWorld::SetCarsOnFire(explosion.m_vecPosition.x, explosion.m_vecPosition.y, explosion.m_vecPosition.z, 6.0f, explosion.m_pCreatorEntity); + if (explosion.m_nIteration < 10) { + if (explosion.m_nIteration == 1) { + CVector point1 = explosion.m_vecPosition; + point1.z += 5.0f; + CColPoint colPoint; + CEntity *pEntity; + CWorld::ProcessVerticalLine(point1, -1000.0f, colPoint, pEntity, true, false, false, false, true, false, nil); + explosion.m_fZshift = colPoint.point.z; + } + float ff = ((float)explosion.m_nIteration * 0.55f); + for (int i = 0; i < 5 * ff; i++) { + float angle = CGeneral::GetRandomNumber() / 256.0f * 6.28f; + + CVector pos = explosion.m_vecPosition; + pos.x += ff * Sin(angle); + pos.y += ff * Cos(angle); + pos.z += 5.0f; // what is the point of this? + + pos.z = explosion.m_fZshift + 0.5f; + CParticle::AddParticle(PARTICLE_EXPLOSION_MEDIUM, pos, CVector(0.0f, 0.0f, 0.0f), nil, 0.0f, color, CGeneral::GetRandomNumberInRange(-3.0f, 3.0f), CGeneral::GetRandomNumberInRange(-180.0f, 180.0f)); + } + } + break; + case EXPLOSION_CAR: + case EXPLOSION_CAR_QUICK: + if (someTime >= 3500) { + if (explosion.m_pVictimEntity != nil && !explosion.m_bIsBoat) { + if ((CGeneral::GetRandomNumber() & 0xF) == 0) { + CVehicle *veh = (CVehicle*)explosion.m_pVictimEntity; + uint8 component = CAR_WING_LR; + + // miami leftover + if (veh->IsBike()) + component = BIKE_FORKS_REAR; + + if (veh->IsComponentPresent(component)) { + CVector componentPos; + veh->GetComponentWorldPosition(component, componentPos); + CParticle::AddJetExplosion(componentPos, 1.5f, 0.0f); + } + } + if (CTimer::GetTimeInMilliseconds() > explosion.m_fStartTime) { + explosion.m_fStartTime = CTimer::GetTimeInMilliseconds() + 125 + (CGeneral::GetRandomNumber() & 0x7F); + CVector pos = explosion.m_pVictimEntity->GetPosition(); + for (int i = 0; i < (CGeneral::GetRandomNumber() & 1) + 1; i++) { + CParticle::AddParticle(PARTICLE_EXPLOSION_MEDIUM, pos, CVector(0.0f, 0.0f, 0.0f), nil, 3.5f, color); + CParticle::AddParticle(PARTICLE_EXPLOSION_LARGE, pos, CVector(0.0f, 0.0f, 0.0f), nil, 5.5f, color); + } + } + } + if (CTimer::GetFrameCounter() & 1) { + CPointLights::AddLight(CPointLights::LIGHT_POINT, explosion.m_vecPosition, CVector(0.0f, 0.0f, 0.0f), 15.0f, 1.0f, 0.0f, 0.0f, CPointLights::FOG_NONE, true); + CCoronas::RegisterCorona((uintptr)&explosion, 200, 100, 0, 255, explosion.m_vecPosition, 6.0f, 80.0f, gpCoronaTexture[0], CCoronas::TYPE_NORMAL, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); + } else + CCoronas::RegisterCorona((uintptr)&explosion, 128, 0, 0, 255, explosion.m_vecPosition, 8.0f, 80.0f, gpCoronaTexture[0], CCoronas::TYPE_NORMAL, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); + + CCoronas::RegisterCorona((uintptr)&explosion + 1, 30, 15, 0, 255, explosion.m_vecPosition, explosion.m_fRadius, 80.0f, gpCoronaTexture[7], CCoronas::TYPE_STAR, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); + } else if (explosion.m_nIteration & 1) { + if (explosion.m_pVictimEntity != nil) + CParticle::AddParticle(PARTICLE_ENGINE_SMOKE2, explosion.m_pVictimEntity->GetPosition(), CVector(0.0f, 0.0f, 0.0f), nil, CGeneral::GetRandomNumberInRange(0.5f, 0.8f), color); + CVector pos = explosion.m_vecPosition; + pos.z += 1.0f; + CParticle::AddParticle(PARTICLE_ENGINE_SMOKE2, pos, CVector(0.0f, 0.0f, 0.11f), nil, CGeneral::GetRandomNumberInRange(0.5f, 2.0f), color); + } + break; + case EXPLOSION_TANK_GRENADE: + case EXPLOSION_HELI_BOMB: + if (explosion.m_nIteration < 5) { + float ff = ((float)explosion.m_nIteration * 0.65f); + for (int i = 0; i < 10 * ff; i++) { + uint8 x = CGeneral::GetRandomNumber(), y = CGeneral::GetRandomNumber(), z = CGeneral::GetRandomNumber(); + CVector pos(x - 128, y - 128, (z % 128) + 1); + + pos.Normalise(); + pos *= ff / 5.0f; + pos += explosion.m_vecPosition; + pos.z += 0.5f; + CParticle::AddParticle(PARTICLE_EXPLOSION_LARGE, pos, CVector(0.0f, 0.0f, 0.0f), nil, 0.0f, color, CGeneral::GetRandomNumberInRange(-3.0f, 3.0f), CGeneral::GetRandomNumberInRange(-180.0f, 180.0f)); + } + } + break; + } + if (someTime > 0) + explosion.m_nIteration++; + else + explosion.m_nIteration = 0; + } + } +} + +bool +CExplosion::TestForExplosionInArea(eExplosionType type, float x1, float x2, float y1, float y2, float z1, float z2) { for (int i = 0; i < ARRAY_SIZE(gaExplosion); i++) { - if (gaExplosion[i].m_bActive) { - if (a1 == gaExplosion[i].m_ExplosionType) { + if (gaExplosion[i].m_nIteration != 0) { + if (type == gaExplosion[i].m_ExplosionType) { if (gaExplosion[i].m_vecPosition.x >= x1 && gaExplosion[i].m_vecPosition.x <= x2) { if (gaExplosion[i].m_vecPosition.y >= y1 && gaExplosion[i].m_vecPosition.y <= y2) { if (gaExplosion[i].m_vecPosition.z >= z1 && gaExplosion[i].m_vecPosition.z <= z2) @@ -97,13 +443,26 @@ CExplosion::TestForExplosionInArea(eExplosionType a1, float x1, float x2, float return false; } +void +CExplosion::RemoveAllExplosionsInArea(CVector pos, float radius) +{ + for (int i = 0; i < ARRAY_SIZE(gaExplosion); i++) { + if (gaExplosion[i].m_nIteration != 0) { + if ((pos - gaExplosion[i].m_vecPosition).MagnitudeSqr() < SQR(radius)) + gaExplosion[i].m_nIteration = 0; + } + } +} + STARTPATCHES InjectHook(0x559030, &CExplosion::Initialise, PATCH_JUMP); InjectHook(0x559100, &CExplosion::Shutdown, PATCH_JUMP); - InjectHook(0x55AD40, &CExplosion::RemoveAllExplosionsInArea, PATCH_JUMP); InjectHook(0x559140, &CExplosion::GetExplosionActiveCounter, PATCH_JUMP); - InjectHook(0x5591A0, &CExplosion::GetExplosionPosition, PATCH_JUMP); - InjectHook(0x559180, &CExplosion::GetExplosionType, PATCH_JUMP); InjectHook(0x559160, &CExplosion::ResetExplosionActiveCounter, PATCH_JUMP); + InjectHook(0x559180, &CExplosion::GetExplosionType, PATCH_JUMP); + InjectHook(0x5591A0, &CExplosion::GetExplosionPosition, PATCH_JUMP); + InjectHook(0x5591C0, &CExplosion::AddExplosion, PATCH_JUMP); + InjectHook(0x55A0C0, &CExplosion::Update, PATCH_JUMP); InjectHook(0x55AC80, &CExplosion::TestForExplosionInArea, PATCH_JUMP); + InjectHook(0x55AD40, &CExplosion::RemoveAllExplosionsInArea, PATCH_JUMP); ENDPATCHES \ No newline at end of file diff --git a/src/weapons/Explosion.h b/src/weapons/Explosion.h index e6ef9496..45e2d5bb 100644 --- a/src/weapons/Explosion.h +++ b/src/weapons/Explosion.h @@ -26,25 +26,24 @@ class CExplosion CEntity *m_pCreatorEntity; CEntity *m_pVictimEntity; float m_fStopTime; - bool m_bActive; - int8 m_bActiveCounter; - int32 m_nStartTime; + uint8 m_nIteration; + uint8 m_nActiveCounter; + float m_fStartTime; uint32 m_nParticlesExpireTime; float m_fPower; - int32 field_34; - int32 field_38; + bool m_bIsBoat; + float m_fZshift; public: static void Initialise(); static void Shutdown(); - static void AddExplosion(CEntity *explodingEntity, CEntity *culprit, eExplosionType type, - const CVector &pos, uint32); - static int8 GetExplosionActiveCounter(uint8 id); - static CVector *GetExplosionPosition(uint8 id); - static uint8 GetExplosionType(uint8 id); static void ResetExplosionActiveCounter(uint8 id); - static void RemoveAllExplosionsInArea(CVector, float); - static bool TestForExplosionInArea(eExplosionType, float, float, float, float, float, float); + static uint8 GetExplosionType(uint8 id); + static CVector *GetExplosionPosition(uint8 id); + static bool AddExplosion(CEntity *explodingEntity, CEntity *culprit, eExplosionType type, const CVector &pos, uint32 lifetime); + static void Update(); + static bool TestForExplosionInArea(eExplosionType type, float x1, float x2, float y1, float y2, float z1, float z2); + static void RemoveAllExplosionsInArea(CVector pos, float radius); }; -extern CExplosion (&gaExplosion)[48]; \ No newline at end of file +extern CExplosion (&gaExplosion)[NUM_EXPLOSIONS]; \ No newline at end of file From 252d40413cc00aa3760c795fec61bfeeea41ab24 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Thu, 9 Apr 2020 13:41:05 +0300 Subject: [PATCH 045/112] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c898f94a..43e87d3c 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,6 @@ CRoadBlocks CStats CTrafficLights CWeapon -CWeather CWorld GenericLoad ``` From a5c71516563dbdb9513b7aa2dd109f01c0e9cff3 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 9 Apr 2020 16:15:30 +0300 Subject: [PATCH 046/112] AddExplosion shadow fix --- src/weapons/Explosion.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/weapons/Explosion.cpp b/src/weapons/Explosion.cpp index 03fcb7c4..3d00052a 100644 --- a/src/weapons/Explosion.cpp +++ b/src/weapons/Explosion.cpp @@ -96,7 +96,12 @@ CExplosion::AddExplosion(CEntity *explodingEntity, CEntity *culprit, eExplosionT const RwRGBA color = { 160, 160, 160, 255 }; pPosn = pos; pPosn.z += 5.0f; +#ifdef FIX_BUGS + CShadows::AddPermanentShadow(SHADOWTEX_CAR, gpShadowHeliTex, &pPosn, 8.0f, 0.0f, 0.0f, -8.0f, 200, 0, 0, 0, 10.0f, 30000, 1.0f); +#else + // last two arguments are swapped resulting in no shadow CShadows::AddPermanentShadow(SHADOWTEX_CAR, gpShadowHeliTex, &pPosn, 8.0f, 0.0f, 0.0f, -8.0f, 200, 0, 0, 0, 10.0f, 1, 30000.0f); +#endif int n = 0; while (gaExplosion[n].m_nIteration != 0 && n < ARRAY_SIZE(gaExplosion)) From 6225e5072309e69e98246f59222ba82ddf6a418a Mon Sep 17 00:00:00 2001 From: aap Date: Thu, 9 Apr 2020 16:35:24 +0200 Subject: [PATCH 047/112] fixed questionable RW usage; changed radar mask to PS2 techinque --- src/core/Camera.cpp | 2 +- src/core/CutsceneMgr.cpp | 6 +- src/core/FileLoader.cpp | 2 +- src/core/Radar.cpp | 3001 ++++++++++++++-------------- src/entities/Entity.cpp | 14 +- src/modelinfo/PedModelInfo.cpp | 2 +- src/modelinfo/VehicleModelInfo.cpp | 14 +- src/objects/CutsceneHead.cpp | 2 +- src/objects/ParticleObject.cpp | 2 +- src/peds/Ped.cpp | 4 +- src/peds/PedIK.cpp | 4 +- src/peds/PedIK.h | 4 +- src/render/Clouds.cpp | 14 +- src/render/Fluff.cpp | 4 +- src/render/MBlur.cpp | 3 +- src/render/SpecialFX.cpp | 461 +++-- src/render/Sprite.cpp | 2 + src/render/Sprite2d.cpp | 30 +- src/render/VisibilityPlugins.cpp | 2 +- src/vehicles/Automobile.cpp | 10 +- src/vehicles/Boat.cpp | 54 +- 21 files changed, 1808 insertions(+), 1829 deletions(-) diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index 00c838cf..d79c9218 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -3269,7 +3269,7 @@ void CCamera::SetRwCamera(RwCamera *cam) { m_pRwCamera = cam; - m_viewMatrix.Attach(&m_pRwCamera->viewMatrix, false); + m_viewMatrix.Attach(RwCameraGetViewMatrix(m_pRwCamera), false); CMBlur::MotionBlurOpen(m_pRwCamera); } diff --git a/src/core/CutsceneMgr.cpp b/src/core/CutsceneMgr.cpp index 283f34b8..39066958 100644 --- a/src/core/CutsceneMgr.cpp +++ b/src/core/CutsceneMgr.cpp @@ -134,8 +134,8 @@ uint32 &CCutsceneMgr::ms_cutsceneLoadStatus = *(uint32*)0x95CB40; RpAtomic * CalculateBoundingSphereRadiusCB(RpAtomic *atomic, void *data) { - float radius = RpAtomicGetBoundingSphereMacro(atomic)->radius; - RwV3d center = RpAtomicGetBoundingSphereMacro(atomic)->center; + float radius = RpAtomicGetBoundingSphere(atomic)->radius; + RwV3d center = RpAtomicGetBoundingSphere(atomic)->center; for (RwFrame *frame = RpAtomicGetFrame(atomic); RwFrameGetParent(frame); frame = RwFrameGetParent(frame)) RwV3dTransformPoints(¢er, ¢er, 1, RwFrameGetMatrix(frame)); @@ -326,7 +326,7 @@ CCutsceneMgr::CreateCutsceneObject(int modelId) pModelInfo->SetColModel(pColModel); clump = (RpClump*)pModelInfo->GetRwObject(); - assert(RwObjectGetType(clump) == rpCLUMP); + assert(RwObjectGetType((RwObject*)clump) == rpCLUMP); RpClumpForAllAtomics(clump, CalculateBoundingSphereRadiusCB, &radius); pColModel->boundingSphere.radius = radius; diff --git a/src/core/FileLoader.cpp b/src/core/FileLoader.cpp index 6305bf33..e0c8b01e 100644 --- a/src/core/FileLoader.cpp +++ b/src/core/FileLoader.cpp @@ -311,7 +311,7 @@ CFileLoader::FindRelatedModelInfoCB(RpAtomic *atomic, void *data) int n; RpClump *clump = (RpClump*)data; - nodename = GetFrameNodeName(RpClumpGetFrame(atomic)); + nodename = GetFrameNodeName(RpAtomicGetFrame(atomic)); GetNameAndLOD(nodename, name, &n); mi = (CSimpleModelInfo*)CModelInfo::GetModelInfo(name, nil); if(mi){ diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 07ddb5d8..afaceb6d 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -1,1504 +1,1501 @@ -#include "config.h" -#include "common.h" -#include "patcher.h" -#include "RwHelper.h" -#include "Radar.h" -#include "Camera.h" -#include "Hud.h" -#include "World.h" -#include "Frontend.h" -#include "General.h" -#include "Vehicle.h" -#include "Pools.h" -#include "Script.h" -#include "TxdStore.h" -#include "World.h" -#include "Streaming.h" -#include "SpecialFX.h" - -float &CRadar::m_radarRange = *(float*)0x8E281C; -CBlip (&CRadar::ms_RadarTrace)[NUMRADARBLIPS] = *(CBlip(*)[NUMRADARBLIPS]) * (uintptr*)0x6ED5E0; -CVector2D &vec2DRadarOrigin = *(CVector2D*)0x6299B8; -int32 gRadarTxdIds[64];// = (int*)0x6299C0; - -CSprite2d CRadar::AsukaSprite;// = *(CSprite2d*)0x8F1A40; -CSprite2d CRadar::BombSprite;// = (CSprite2d*)0x8F5FB4; -CSprite2d CRadar::CatSprite;// = (CSprite2d*)0x885B24; -CSprite2d CRadar::CentreSprite;// = (CSprite2d*)0x8F6268; -CSprite2d CRadar::CopcarSprite;// = (CSprite2d*)0x8F1A2C; -CSprite2d CRadar::DonSprite;// = (CSprite2d*)0x8F2BE0; -CSprite2d CRadar::EightSprite;// = (CSprite2d*)0x8F2BCC; -CSprite2d CRadar::ElSprite;// = (CSprite2d*)0x8F1B80; -CSprite2d CRadar::IceSprite;// = (CSprite2d*)0x9415FC; -CSprite2d CRadar::JoeySprite;// = (CSprite2d*)0x8F2C00; -CSprite2d CRadar::KenjiSprite;// = (CSprite2d*)0x8F2C68; -CSprite2d CRadar::LizSprite;// = (CSprite2d*)0x8F5830; -CSprite2d CRadar::LuigiSprite;// = (CSprite2d*)0x8F1A3C; -CSprite2d CRadar::NorthSprite;// = (CSprite2d*)0x8F6274; -CSprite2d CRadar::RaySprite;// = (CSprite2d*)0x8E2A7C; -CSprite2d CRadar::SalSprite;// = (CSprite2d*)0x8F29EC; -CSprite2d CRadar::SaveSprite;// = (CSprite2d*)0x8F5F74; -CSprite2d CRadar::SpraySprite;// = (CSprite2d*)0x94307C; -CSprite2d CRadar::TonySprite;// = (CSprite2d*)0x885B58; -CSprite2d CRadar::WeaponSprite;// = (CSprite2d*)0x941534; - -CSprite2d *CRadar::RadarSprites[RADAR_SPRITE_COUNT] = { - nil, - &AsukaSprite, - &BombSprite, - &CatSprite, - &CentreSprite, - &CopcarSprite, - &DonSprite, - &EightSprite, - &ElSprite, - &IceSprite, - &JoeySprite, - &KenjiSprite, - &LizSprite, - &LuigiSprite, - &NorthSprite, - &RaySprite, - &SalSprite, - &SaveSprite, - &SpraySprite, - &TonySprite, - &WeaponSprite -}; - -#define RADAR_NUM_TILES (8) -#define RADAR_TILE_SIZE (WORLD_SIZE_X / RADAR_NUM_TILES) -static_assert(RADAR_TILE_SIZE == (WORLD_SIZE_Y / RADAR_NUM_TILES), "CRadar: not a square"); - -#define RADAR_MIN_RANGE (120.0f) -#define RADAR_MAX_RANGE (350.0f) -#define RADAR_MIN_SPEED (0.3f) -#define RADAR_MAX_SPEED (0.9f) - -#ifdef MENU_MAP -CRGBA CRadar::ArrowBlipColour1; -CRGBA CRadar::ArrowBlipColour2; -uint16 CRadar::MapLegendCounter; -uint16 CRadar::MapLegendList[NUM_MAP_LEGENDS]; -int CRadar::TargetMarkerId = -1; -#endif - -// taken from VC -float CRadar::cachedCos; -float CRadar::cachedSin; - -uint8 CRadar::CalculateBlipAlpha(float dist) -{ -#ifdef MENU_MAP - if (CMenuManager::bMenuMapActive) - return 255; -#endif - if (dist <= 1.0f) - return 255; - - if (dist <= 5.0f) - return (128.0f * ((dist - 1.0f) / 4.0f)) + ((1.0f - (dist - 1.0f) / 4.0f) * 255.0f); - - return 128; -} - -void CRadar::ChangeBlipBrightness(int32 i, int32 bright) -{ - int index = GetActualBlipArrayIndex(i); - if (index != -1) - ms_RadarTrace[index].m_bDim = bright != 1; -} - -void CRadar::ChangeBlipColour(int32 i, int32 color) -{ - int index = GetActualBlipArrayIndex(i); - if (index != -1) - ms_RadarTrace[index].m_nColor = color; -} - -void CRadar::ChangeBlipDisplay(int32 i, eBlipDisplay display) -{ - int index = GetActualBlipArrayIndex(i); - if (index != -1) - ms_RadarTrace[index].m_eBlipDisplay = display; -} - -void CRadar::ChangeBlipScale(int32 i, int32 scale) -{ - int index = GetActualBlipArrayIndex(i); - if (index != -1) - ms_RadarTrace[index].m_wScale = scale; -} - -void CRadar::ClearBlip(int32 i) -{ - int index = GetActualBlipArrayIndex(i); - if (index != -1) { - SetRadarMarkerState(index, false); - ms_RadarTrace[index].m_bInUse = false; -#ifndef MENU_MAP - // Ssshhh - ms_RadarTrace[index].m_eBlipType = BLIP_NONE; - ms_RadarTrace[index].m_eBlipDisplay = BLIP_DISPLAY_NEITHER; - ms_RadarTrace[index].m_eRadarSprite = RADAR_SPRITE_NONE; -#endif - } -} - -void CRadar::ClearBlipForEntity(eBlipType type, int32 id) -{ - for (int i = 0; i < NUMRADARBLIPS; i++) { - if (type == ms_RadarTrace[i].m_eBlipType && id == ms_RadarTrace[i].m_nEntityHandle) { - SetRadarMarkerState(i, false); - ms_RadarTrace[i].m_bInUse = false; - ms_RadarTrace[i].m_eBlipType = BLIP_NONE; - ms_RadarTrace[i].m_eBlipDisplay = BLIP_DISPLAY_NEITHER; - ms_RadarTrace[i].m_eRadarSprite = RADAR_SPRITE_NONE; - } - }; -} - -// Why not a proper clipping algorithm? -int CRadar::ClipRadarPoly(CVector2D *poly, const CVector2D *rect) -{ - CVector2D corners[4] = { - { 1.0f, -1.0f }, // top right - { 1.0f, 1.0f }, // bottom right - { -1.0f, 1.0f }, // bottom left - { -1.0f, -1.0f }, // top left - }; - CVector2D tmp; - int i, j, n; - int laste, e, e1, e2;; - bool inside[4]; - - for (i = 0; i < 4; i++) - inside[i] = IsPointInsideRadar(rect[i]); - - laste = -1; - n = 0; - for (i = 0; i < 4; i++) - if (inside[i]) { - // point is inside, just add - poly[n++] = rect[i]; - } - else { - // point is outside but line to this point might be clipped - e1 = LineRadarBoxCollision(poly[n], rect[i], rect[(i + 4 - 1) % 4]); - if (e1 != -1) { - laste = e1; - n++; - } - // and line from this point might be clipped as well - e2 = LineRadarBoxCollision(poly[n], rect[i], rect[(i + 1) % 4]); - if (e2 != -1) { - if (e1 == -1) { - // if other line wasn't clipped, i.e. it was complete outside, - // we may have to insert another vertex if last clipped line - // was on a different edge - - // find the last intersection if we haven't seen it yet - if (laste == -1) - for (j = 3; j >= i; j--) { - // game uses an if here for j == 0 - e = LineRadarBoxCollision(tmp, rect[j], rect[(j + 4 - 1) % 4]); - if (e != -1) { - laste = e; - break; - } - } - assert(laste != -1); - - // insert corners that were skipped - tmp = poly[n]; - for (e = laste; e != e2; e = (e + 1) % 4) - poly[n++] = corners[e]; - poly[n] = tmp; - } - n++; - } - } - - if (n == 0) { - // If no points, either the rectangle is completely outside or completely surrounds the radar - // no idea what's going on here... - float m = (rect[0].y - rect[1].y) / (rect[0].x - rect[1].x); - if ((m*rect[3].x - rect[3].y) * (m*rect[0].x - rect[0].y) < 0.0f) { - m = (rect[0].y - rect[3].y) / (rect[0].x - rect[3].x); - if ((m*rect[1].x - rect[1].y) * (m*rect[0].x - rect[0].y) < 0.0f) { - poly[0] = corners[0]; - poly[1] = corners[1]; - poly[2] = corners[2]; - poly[3] = corners[3]; - n = 4; - } - } - } - - return n; -} - -bool CRadar::DisplayThisBlip(int32 counter) -{ - switch (ms_RadarTrace[counter].m_eRadarSprite) { - case RADAR_SPRITE_BOMB: - case RADAR_SPRITE_SPRAY: - case RADAR_SPRITE_WEAPON: - return true; - default: - return false; - } -} - -void CRadar::Draw3dMarkers() -{ - for (int i = 0; i < NUMRADARBLIPS; i++) { - if (ms_RadarTrace[i].m_bInUse) { - switch (ms_RadarTrace[i].m_eBlipType) { - case BLIP_CAR: - { - CEntity *entity = CPools::GetVehiclePool()->GetAt(ms_RadarTrace[i].m_nEntityHandle); - if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { - CVector pos = entity->GetPosition(); - pos.z += 1.2f * CModelInfo::GetModelInfo(entity->GetModelIndex())->GetColModel()->boundingBox.max.z + 2.5f; - C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), 1, pos, 2.5f, 0, 128, 255, 255, 1024, 0.2f, 5); - } - break; - } - case BLIP_CHAR: - { - CEntity *entity = CPools::GetPedPool()->GetAt(ms_RadarTrace[i].m_nEntityHandle); - if (entity != nil) { - if (((CPed*)entity)->InVehicle()) - entity = ((CPed * )entity)->m_pMyVehicle; - } - if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { - CVector pos = entity->GetPosition(); - pos.z += 3.0f; - C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), 1, pos, 1.5f, 0, 128, 255, 255, 1024, 0.2f, 5); - } - break; - } - case BLIP_OBJECT: - { - CEntity *entity = CPools::GetObjectPool()->GetAt(ms_RadarTrace[i].m_nEntityHandle); - if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { - CVector pos = entity->GetPosition(); - pos.z += CModelInfo::GetModelInfo(entity->GetModelIndex())->GetColModel()->boundingBox.max.z + 1.0f + 1.0f; - C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), 1, pos, 1.0f, 0, 128, 255, 255, 1024, 0.2f, 5); - } - break; - } - case BLIP_COORD: - break; - case BLIP_CONTACT_POINT: - if (!CTheScripts::IsPlayerOnAMission()) { - if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) - C3dMarkers::PlaceMarkerSet(i | (ms_RadarTrace[i].m_BlipIndex << 16), 4, ms_RadarTrace[i].m_vecPos, 2.0f, 0, 128, 255, 128, 2048, 0.2f, 0); - } - break; - } - } - } -} - -void CRadar::DrawBlips() -{ - if (!TheCamera.m_WideScreenOn && CHud::m_Wants_To_Draw_Hud) { - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); - RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); - RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE); - - CVector2D out; - CVector2D in = CVector2D(0.0f, 0.0f); - TransformRadarPointToScreenSpace(out, in); - -#ifdef MENU_MAP - if (!CMenuManager::bMenuMapActive) { -#endif - float angle; - if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN) - angle = PI + FindPlayerHeading(); -#ifdef FIX_BUGS - else if (TheCamera.GetLookDirection() != LOOKING_FORWARD) - angle = FindPlayerHeading() - (PI + (TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetPosition() - TheCamera.Cams[TheCamera.ActiveCam].SourceBeforeLookBehind).Heading()); -#endif - else - angle = FindPlayerHeading() - (PI + TheCamera.GetForward().Heading()); - - DrawRotatingRadarSprite(&CentreSprite, out.x, out.y, angle, 255); - - CVector2D vec2d; - vec2d.x = vec2DRadarOrigin.x; - vec2d.y = M_SQRT2 * m_radarRange + vec2DRadarOrigin.y; - TransformRealWorldPointToRadarSpace(in, vec2d); - LimitRadarPoint(in); - TransformRadarPointToScreenSpace(out, in); - DrawRadarSprite(RADAR_SPRITE_NORTH, out.x, out.y, 255); -#ifdef MENU_MAP - } -#endif - - CEntity *blipEntity = nil; - for(int blipId = 0; blipId < NUMRADARBLIPS; blipId++) { -#ifdef MENU_MAP - // A little hack to reuse cleared blips in menu map. hehe - if (!CMenuManager::bMenuMapActive || ms_RadarTrace[blipId].m_eBlipType == BLIP_CAR || - ms_RadarTrace[blipId].m_eBlipType == BLIP_CHAR || ms_RadarTrace[blipId].m_eBlipType == BLIP_OBJECT) -#endif - if (!ms_RadarTrace[blipId].m_bInUse) - continue; - - switch (ms_RadarTrace[blipId].m_eBlipType) { - case BLIP_CAR: - case BLIP_CHAR: - case BLIP_OBJECT: - if (ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_BOMB || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_SAVE - || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_SPRAY || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_WEAPON) { - - switch (ms_RadarTrace[blipId].m_eBlipType) { - case BLIP_CAR: - blipEntity = CPools::GetVehiclePool()->GetAt(ms_RadarTrace[blipId].m_nEntityHandle); - break; - case BLIP_CHAR: - blipEntity = CPools::GetPedPool()->GetAt(ms_RadarTrace[blipId].m_nEntityHandle); - if (blipEntity != nil) { - if (((CPed*)blipEntity)->InVehicle()) - blipEntity = ((CPed*)blipEntity)->m_pMyVehicle; - } - break; - case BLIP_OBJECT: - blipEntity = CPools::GetObjectPool()->GetAt(ms_RadarTrace[blipId].m_nEntityHandle); - break; - default: - break; - } - if (blipEntity) { - uint32 color = GetRadarTraceColour(ms_RadarTrace[blipId].m_nColor, ms_RadarTrace[blipId].m_bDim); - if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { - if (CTheScripts::IsDebugOn()) { - ShowRadarMarker(blipEntity->GetPosition(), color, ms_RadarTrace[blipId].m_Radius); - ms_RadarTrace[blipId].m_Radius = ms_RadarTrace[blipId].m_Radius - 0.1f; - if (ms_RadarTrace[blipId].m_Radius < 1.0f) - ms_RadarTrace[blipId].m_Radius = 5.0f; - } - } - if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BLIP_ONLY) { - TransformRealWorldPointToRadarSpace(in, blipEntity->GetPosition()); - float dist = LimitRadarPoint(in); - TransformRadarPointToScreenSpace(out, in); - if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_NONE) { - DrawRadarSprite(ms_RadarTrace[blipId].m_eRadarSprite, out.x, out.y, CalculateBlipAlpha(dist)); - } else { -#ifdef TRIANGULAR_BLIPS - CVector &pos = FindPlayerCentreOfWorld_NoSniperShift(); - CVector &blipPos = blipEntity->GetPosition(); - uint8 mode = BLIP_MODE_TRIANGULAR_UP; - if (blipPos.z - pos.z <= 2.0f) { - if (blipPos.z - pos.z < -4.0f) mode = BLIP_MODE_TRIANGULAR_DOWN; - else mode = BLIP_MODE_SQUARE; - } - ShowRadarTraceWithHeight(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255, mode); -#else - ShowRadarTrace(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255); -#endif - } - } - } - } - break; - case BLIP_COORD: - case BLIP_CONTACT_POINT: - if ((ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_BOMB || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_SAVE - || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_SPRAY || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_WEAPON) - && (ms_RadarTrace[blipId].m_eBlipType != BLIP_CONTACT_POINT || !CTheScripts::IsPlayerOnAMission())) { - - uint32 color = GetRadarTraceColour(ms_RadarTrace[blipId].m_nColor, ms_RadarTrace[blipId].m_bDim); - if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { - if (CTheScripts::IsDebugOn()) { - ShowRadarMarker(ms_RadarTrace[blipId].m_vecPos, color, ms_RadarTrace[blipId].m_Radius); - ms_RadarTrace[blipId].m_Radius = ms_RadarTrace[blipId].m_Radius - 0.1f; - if (ms_RadarTrace[blipId].m_Radius < 1.0f) - ms_RadarTrace[blipId].m_Radius = 5.0f; - } - } - if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BLIP_ONLY) { - TransformRealWorldPointToRadarSpace(in, ms_RadarTrace[blipId].m_vec2DPos); - float dist = LimitRadarPoint(in); - TransformRadarPointToScreenSpace(out, in); - if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_NONE) { - DrawRadarSprite(ms_RadarTrace[blipId].m_eRadarSprite, out.x, out.y, CalculateBlipAlpha(dist)); - } else { -#ifdef TRIANGULAR_BLIPS - CVector &pos = FindPlayerCentreOfWorld_NoSniperShift(); - CVector &blipPos = ms_RadarTrace[blipId].m_vecPos; - uint8 mode = BLIP_MODE_TRIANGULAR_UP; - if (blipPos.z - pos.z <= 2.0f) { - if (blipPos.z - pos.z < -4.0f) mode = BLIP_MODE_TRIANGULAR_DOWN; - else mode = BLIP_MODE_SQUARE; - } - ShowRadarTraceWithHeight(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255, mode); -#else - ShowRadarTrace(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255); -#endif - } - } - } - break; - default: - break; - } - } - for(int blipId = 0; blipId < NUMRADARBLIPS; blipId++) { - if (!ms_RadarTrace[blipId].m_bInUse) - continue; - - switch (ms_RadarTrace[blipId].m_eBlipType) { - case BLIP_CAR: - case BLIP_CHAR: - case BLIP_OBJECT: - if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_BOMB && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_SAVE - && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_SPRAY && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_WEAPON) { - - switch (ms_RadarTrace[blipId].m_eBlipType) { - case BLIP_CAR: - blipEntity = CPools::GetVehiclePool()->GetAt(ms_RadarTrace[blipId].m_nEntityHandle); - break; - case BLIP_CHAR: - blipEntity = CPools::GetPedPool()->GetAt(ms_RadarTrace[blipId].m_nEntityHandle); - if (blipEntity != nil) { - if (((CPed*)blipEntity)->InVehicle()) - blipEntity = ((CPed*)blipEntity)->m_pMyVehicle; - } - break; - case BLIP_OBJECT: - blipEntity = CPools::GetObjectPool()->GetAt(ms_RadarTrace[blipId].m_nEntityHandle); - break; - default: - break; - } - - if (blipEntity) { - uint32 color = GetRadarTraceColour(ms_RadarTrace[blipId].m_nColor, ms_RadarTrace[blipId].m_bDim); - if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { - if (CTheScripts::IsDebugOn()) { - ShowRadarMarker(blipEntity->GetPosition(), color, ms_RadarTrace[blipId].m_Radius); - ms_RadarTrace[blipId].m_Radius = ms_RadarTrace[blipId].m_Radius - 0.1f; - if (ms_RadarTrace[blipId].m_Radius < 1.0f) - ms_RadarTrace[blipId].m_Radius = 5.0f; - } - } - if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BLIP_ONLY) { - TransformRealWorldPointToRadarSpace(in, blipEntity->GetPosition()); - float dist = LimitRadarPoint(in); - TransformRadarPointToScreenSpace(out, in); - if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_NONE) - DrawRadarSprite(ms_RadarTrace[blipId].m_eRadarSprite, out.x, out.y, CalculateBlipAlpha(dist)); - else -#ifdef TRIANGULAR_BLIPS - { - CVector &pos = FindPlayerCentreOfWorld_NoSniperShift(); - CVector &blipPos = blipEntity->GetPosition(); - uint8 mode = BLIP_MODE_TRIANGULAR_UP; - if (blipPos.z - pos.z <= 2.0f) { - if (blipPos.z - pos.z < -4.0f) mode = BLIP_MODE_TRIANGULAR_DOWN; - else mode = BLIP_MODE_SQUARE; - } - ShowRadarTraceWithHeight(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255, mode); - } -#else - ShowRadarTrace(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255); -#endif - } - } - } - break; - default: - break; - } - } - for (int blipId = 0; blipId < NUMRADARBLIPS; blipId++) { - if (!ms_RadarTrace[blipId].m_bInUse) - continue; - - switch (ms_RadarTrace[blipId].m_eBlipType) { - case BLIP_COORD: - case BLIP_CONTACT_POINT: - if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_BOMB && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_SAVE - && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_SPRAY && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_WEAPON - && (ms_RadarTrace[blipId].m_eBlipType != BLIP_CONTACT_POINT || !CTheScripts::IsPlayerOnAMission())) { - - uint32 color = GetRadarTraceColour(ms_RadarTrace[blipId].m_nColor, ms_RadarTrace[blipId].m_bDim); - if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { - if (CTheScripts::IsDebugOn()) { - ShowRadarMarker(ms_RadarTrace[blipId].m_vecPos, color, ms_RadarTrace[blipId].m_Radius); - ms_RadarTrace[blipId].m_Radius = ms_RadarTrace[blipId].m_Radius - 0.1f; - if (ms_RadarTrace[blipId].m_Radius < 1.0f) - ms_RadarTrace[blipId].m_Radius = 5.0f; - } - } - if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BLIP_ONLY) { - TransformRealWorldPointToRadarSpace(in, ms_RadarTrace[blipId].m_vec2DPos); - float dist = LimitRadarPoint(in); - TransformRadarPointToScreenSpace(out, in); - if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_NONE) - DrawRadarSprite(ms_RadarTrace[blipId].m_eRadarSprite, out.x, out.y, CalculateBlipAlpha(dist)); - else -#ifdef TRIANGULAR_BLIPS - { - CVector &pos = FindPlayerCentreOfWorld_NoSniperShift(); - CVector &blipPos = ms_RadarTrace[blipId].m_vecPos; - uint8 mode = BLIP_MODE_TRIANGULAR_UP; - if (blipPos.z - pos.z <= 2.0f) { - if (blipPos.z - pos.z < -4.0f) mode = BLIP_MODE_TRIANGULAR_DOWN; - else mode = BLIP_MODE_SQUARE; - } - ShowRadarTraceWithHeight(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255, mode); - } -#else - ShowRadarTrace(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255); -#endif - } - } - break; - default: - break; - } - } -#ifdef MENU_MAP - if (CMenuManager::bMenuMapActive) { - CVector2D in, out; - TransformRealWorldPointToRadarSpace(in, FindPlayerCentreOfWorld_NoSniperShift()); - TransformRadarPointToScreenSpace(out, in); - DrawYouAreHereSprite(out.x, out.y); - } -#endif - } -} - -void CRadar::DrawMap() -{ - if (!TheCamera.m_WideScreenOn && CHud::m_Wants_To_Draw_Hud) { -#if 1 // from VC - CalculateCachedSinCos(); -#endif - if (FindPlayerVehicle()) { - float speed = FindPlayerSpeed().Magnitude(); - if (speed < RADAR_MIN_SPEED) - m_radarRange = RADAR_MIN_RANGE; - else if (speed < RADAR_MAX_SPEED) - m_radarRange = (speed - RADAR_MIN_SPEED)/(RADAR_MAX_SPEED-RADAR_MIN_SPEED) * (RADAR_MAX_RANGE-RADAR_MIN_RANGE) + RADAR_MIN_RANGE; - else - m_radarRange = RADAR_MAX_RANGE; - } - else - m_radarRange = RADAR_MIN_RANGE; - - vec2DRadarOrigin = CVector2D(FindPlayerCentreOfWorld_NoSniperShift()); - DrawRadarMap(); - } -} - -void CRadar::DrawRadarMap() -{ - // Game calculates an unused CRect here - - DrawRadarMask(); - - // top left ist (0, 0) - int x = floorf((vec2DRadarOrigin.x - WORLD_MIN_X) / RADAR_TILE_SIZE); - int y = ceilf((RADAR_NUM_TILES - 1) - (vec2DRadarOrigin.y - WORLD_MIN_Y) / RADAR_TILE_SIZE); - StreamRadarSections(x, y); - - RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); - RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); - RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR); - RwRenderStateSet(rwRENDERSTATESHADEMODE, (void*)rwSHADEMODEFLAT); - RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE); - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)rwTEXTUREADDRESSCLAMP); - RwRenderStateSet(rwRENDERSTATETEXTUREPERSPECTIVE, (void*)FALSE); - - DrawRadarSection(x - 1, y - 1); - DrawRadarSection(x, y - 1); - DrawRadarSection(x + 1, y - 1); - DrawRadarSection(x - 1, y); - DrawRadarSection(x, y); - DrawRadarSection(x + 1, y); - DrawRadarSection(x - 1, y + 1); - DrawRadarSection(x, y + 1); - DrawRadarSection(x + 1, y + 1); -} - -void CRadar::DrawRadarMask() -{ - CVector2D corners[4] = { - CVector2D(1.0f, -1.0f), - CVector2D(1.0f, 1.0f), - CVector2D(-1.0f, 1.0f), - CVector2D(-1.0, -1.0f) - }; - - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); - RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); - RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR); - RwRenderStateSet(rwRENDERSTATESHADEMODE, (void*)rwSHADEMODEFLAT); - RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); - RwD3D8SetRenderState(rwRENDERSTATESTENCILFUNCTION, rwSTENCILFUNCTIONALWAYS); - - CVector2D out[8]; - CVector2D in; - - // Draw the shape we want to mask out from the radar in four segments - for (int i = 0; i < 4; i++) { - // First point is always the corner itself - in.x = corners[i].x; - in.y = corners[i].y; - TransformRadarPointToScreenSpace(out[0], in); - - // Then generate a quarter of the circle - for (int j = 0; j < 7; j++) { - in.x = corners[i].x * Cos(j * (PI / 2.0f / 6.0f)); - in.y = corners[i].y * Sin(j * (PI / 2.0f / 6.0f)); - TransformRadarPointToScreenSpace(out[j + 1], in); - }; - - CSprite2d::SetMaskVertices(8, (float *)out); - RwIm2DRenderPrimitive(rwPRIMTYPETRIFAN, CSprite2d::GetVertices(), 8); - }; - - RwD3D8SetRenderState(rwRENDERSTATESTENCILFUNCTION, rwSTENCILFUNCTIONGREATER); -} - -void CRadar::DrawRadarSection(int32 x, int32 y) -{ - int i; - RwTexDictionary *txd; - CVector2D worldPoly[8]; - CVector2D radarCorners[4]; - CVector2D radarPoly[8]; - CVector2D texCoords[8]; - CVector2D screenPoly[8]; - int numVertices; - RwTexture *texture = nil; - - GetTextureCorners(x, y, worldPoly); - ClipRadarTileCoords(x, y); - - assert(CTxdStore::GetSlot(gRadarTxdIds[x + RADAR_NUM_TILES * y])); - txd = CTxdStore::GetSlot(gRadarTxdIds[x + RADAR_NUM_TILES * y])->texDict; - if (txd) - texture = GetFirstTexture(txd); - if (texture == nil) - return; - - for (i = 0; i < 4; i++) - TransformRealWorldPointToRadarSpace(radarCorners[i], worldPoly[i]); - - numVertices = ClipRadarPoly(radarPoly, radarCorners); - - // FIX: can return earlier here -// if(numVertices == 0) - if (numVertices < 3) - return; - - for (i = 0; i < numVertices; i++) { - TransformRadarPointToRealWorldSpace(worldPoly[i], radarPoly[i]); - TransformRealWorldToTexCoordSpace(texCoords[i], worldPoly[i], x, y); - TransformRadarPointToScreenSpace(screenPoly[i], radarPoly[i]); - } - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(texture)); - CSprite2d::SetVertices(numVertices, (float*)screenPoly, (float*)texCoords, CRGBA(255, 255, 255, 255)); - // check done above now -// if(numVertices > 2) - RwIm2DRenderPrimitive(rwPRIMTYPETRIFAN, CSprite2d::GetVertices(), numVertices); -} - -void CRadar::DrawRadarSprite(uint16 sprite, float x, float y, uint8 alpha) -{ - RadarSprites[sprite]->Draw(CRect(x - SCREEN_SCALE_X(8.0f), y - SCREEN_SCALE_Y(8.0f), x + SCREEN_SCALE_X(8.0f), y + SCREEN_SCALE_Y(8.0f)), CRGBA(255, 255, 255, alpha)); -#ifdef MENU_MAP - if (CMenuManager::bMenuMapActive) { - bool alreadyThere = false; - for (int i = 0; i < NUM_MAP_LEGENDS; i++) { - if (MapLegendList[i] == sprite) - alreadyThere = true; - } - if (!alreadyThere) { - MapLegendList[MapLegendCounter] = sprite; - MapLegendCounter++; - } - } -#endif -} - -void CRadar::DrawRotatingRadarSprite(CSprite2d* sprite, float x, float y, float angle, int32 alpha) -{ - CVector curPosn[4]; - CVector oldPosn[4]; - - curPosn[0].x = x - SCREEN_SCALE_X(5.6f); - curPosn[0].y = y + SCREEN_SCALE_Y(5.6f); - - curPosn[1].x = x + SCREEN_SCALE_X(5.6f); - curPosn[1].y = y + SCREEN_SCALE_Y(5.6f); - - curPosn[2].x = x - SCREEN_SCALE_X(5.6f); - curPosn[2].y = y - SCREEN_SCALE_Y(5.6f); - - curPosn[3].x = x + SCREEN_SCALE_X(5.6f); - curPosn[3].y = y - SCREEN_SCALE_Y(5.6f); - - for (uint32 i = 0; i < 4; i++) { - oldPosn[i] = curPosn[i]; - - curPosn[i].x = x + (oldPosn[i].x - x) * Cos(angle) + (oldPosn[i].y - y) * Sin(angle); - curPosn[i].y = y - (oldPosn[i].x - x) * Sin(angle) + (oldPosn[i].y - y) * Cos(angle); - } - - sprite->Draw(curPosn[2].x, curPosn[2].y, curPosn[3].x, curPosn[3].y, curPosn[0].x, curPosn[0].y, curPosn[1].x, curPosn[1].y, CRGBA(255, 255, 255, alpha)); -} - -int32 CRadar::GetActualBlipArrayIndex(int32 i) -{ - if (i == -1) - return -1; - else if ((i & 0xFFFF0000) >> 16 != ms_RadarTrace[(uint16)i].m_BlipIndex) - return -1; - else - return (uint16)i; -} - -int32 CRadar::GetNewUniqueBlipIndex(int32 i) -{ - if (ms_RadarTrace[i].m_BlipIndex >= UINT16_MAX - 1) - ms_RadarTrace[i].m_BlipIndex = 1; - else - ms_RadarTrace[i].m_BlipIndex++; - return i | (ms_RadarTrace[i].m_BlipIndex << 16); -} - -uint32 CRadar::GetRadarTraceColour(uint32 color, bool bright) -{ - int32 c; - switch (color) { - case 0: - if (bright) - c = 0x712B49FF; - else - c = 0x7F0000FF; - break; - case 1: - if (bright) - c = 0x5FA06AFF; - else - c = 0x007F00FF; - break; - case 2: - if (bright) - c = 0x80A7F3FF; - else - c = 0x00007FFF; - break; - case 3: - if (bright) - c = 0xE1E1E1FF; - else - c = 0x7F7F7FFF; - break; - case 4: - if (bright) - c = 0xFFFF00FF; - else - c = 0x7F7F00FF; - break; - case 5: - if (bright) - c = 0xFF00FFFF; - else - c = 0x7F007FFF; - break; - case 6: - if (bright) - c = 0x00FFFFFF; - else - c = 0x007F7FFF; - break; - default: - c = color; - break; - }; - return c; -} - -const char* gRadarTexNames[] = { - "radar00", "radar01", "radar02", "radar03", "radar04", "radar05", "radar06", "radar07", - "radar08", "radar09", "radar10", "radar11", "radar12", "radar13", "radar14", "radar15", - "radar16", "radar17", "radar18", "radar19", "radar20", "radar21", "radar22", "radar23", - "radar24", "radar25", "radar26", "radar27", "radar28", "radar29", "radar30", "radar31", - "radar32", "radar33", "radar34", "radar35", "radar36", "radar37", "radar38", "radar39", - "radar40", "radar41", "radar42", "radar43", "radar44", "radar45", "radar46", "radar47", - "radar48", "radar49", "radar50", "radar51", "radar52", "radar53", "radar54", "radar55", - "radar56", "radar57", "radar58", "radar59", "radar60", "radar61", "radar62", "radar63", -}; - -void -CRadar::Initialise() -{ - for (int i = 0; i < NUMRADARBLIPS; i++) { - ms_RadarTrace[i].m_BlipIndex = 1; - SetRadarMarkerState(i, false); - ms_RadarTrace[i].m_bInUse = false; - ms_RadarTrace[i].m_eBlipType = BLIP_NONE; - ms_RadarTrace[i].m_eBlipDisplay = BLIP_DISPLAY_NEITHER; - ms_RadarTrace[i].m_eRadarSprite = RADAR_SPRITE_NONE; - } - - m_radarRange = 350.0f; - for (int i = 0; i < 64; i++) - gRadarTxdIds[i] = CTxdStore::FindTxdSlot(gRadarTexNames[i]); -} - -float CRadar::LimitRadarPoint(CVector2D &point) -{ - float dist, invdist; - - dist = point.Magnitude(); -#ifdef MENU_MAP - if (CMenuManager::bMenuMapActive) - return dist; -#endif - if (dist > 1.0f) { - invdist = 1.0f / dist; - point.x *= invdist; - point.y *= invdist; - } - return dist; -} - -void CRadar::LoadAllRadarBlips(uint8 *buf, uint32 size) -{ - Initialise(); -INITSAVEBUF - CheckSaveHeader(buf, 'R', 'D', 'R', '\0', size - SAVE_HEADER_SIZE); - - for (int i = 0; i < NUMRADARBLIPS; i++) - ms_RadarTrace[i] = ReadSaveBuf(buf); - -VALIDATESAVEBUF(size); -} - -void -CRadar::LoadTextures() -{ - CTxdStore::PushCurrentTxd(); - CTxdStore::SetCurrentTxd(CTxdStore::FindTxdSlot("hud")); - AsukaSprite.SetTexture("radar_asuka"); - BombSprite.SetTexture("radar_bomb"); - CatSprite.SetTexture("radar_cat"); - CentreSprite.SetTexture("radar_centre"); - CopcarSprite.SetTexture("radar_copcar"); - DonSprite.SetTexture("radar_don"); - EightSprite.SetTexture("radar_eight"); - ElSprite.SetTexture("radar_el"); - IceSprite.SetTexture("radar_ice"); - JoeySprite.SetTexture("radar_joey"); - KenjiSprite.SetTexture("radar_kenji"); - LizSprite.SetTexture("radar_liz"); - LuigiSprite.SetTexture("radar_luigi"); - NorthSprite.SetTexture("radar_north"); - RaySprite.SetTexture("radar_ray"); - SalSprite.SetTexture("radar_sal"); - SaveSprite.SetTexture("radar_save"); - SpraySprite.SetTexture("radar_spray"); - TonySprite.SetTexture("radar_tony"); - WeaponSprite.SetTexture("radar_weapon"); - CTxdStore::PopCurrentTxd(); -} - -void RemoveMapSection(int32 x, int32 y) -{ - if (x >= 0 && x <= 7 && y >= 0 && y <= 7) - CStreaming::RemoveTxd(gRadarTxdIds[x + RADAR_NUM_TILES * y]); -} - -void CRadar::RemoveRadarSections() -{ - for (int i = 0; i < 8; i++) - for (int j = 0; j < 8; j++) - RemoveMapSection(i, j); -} - -void CRadar::RequestMapSection(int32 x, int32 y) -{ - ClipRadarTileCoords(x, y); - CStreaming::RequestTxd(gRadarTxdIds[x + RADAR_NUM_TILES * y], STREAMFLAGS_DONT_REMOVE | STREAMFLAGS_DEPENDENCY); -} - -void CRadar::SaveAllRadarBlips(uint8 *buf, uint32 *size) -{ - *size = SAVE_HEADER_SIZE + sizeof(ms_RadarTrace); -INITSAVEBUF - WriteSaveHeader(buf, 'R', 'D', 'R', '\0', *size - SAVE_HEADER_SIZE); - - for (int i = 0; i < NUMRADARBLIPS; i++) - WriteSaveBuf(buf, ms_RadarTrace[i]); - -VALIDATESAVEBUF(*size); -} - -void CRadar::SetBlipSprite(int32 i, int32 icon) -{ - int index = CRadar::GetActualBlipArrayIndex(i); - if (index != -1) { - ms_RadarTrace[index].m_eRadarSprite = icon; - } -} - -int CRadar::SetCoordBlip(eBlipType type, CVector pos, int32 color, eBlipDisplay display) -{ - int nextBlip; - for (nextBlip = 0; nextBlip < NUMRADARBLIPS; nextBlip++) { - if (!ms_RadarTrace[nextBlip].m_bInUse) - break; - } - ms_RadarTrace[nextBlip].m_eBlipType = type; - ms_RadarTrace[nextBlip].m_nColor = color; - ms_RadarTrace[nextBlip].m_bDim = 1; - ms_RadarTrace[nextBlip].m_bInUse = 1; - ms_RadarTrace[nextBlip].m_Radius = 1.0f; - ms_RadarTrace[nextBlip].m_vec2DPos = pos; - ms_RadarTrace[nextBlip].m_vecPos = pos; - ms_RadarTrace[nextBlip].m_nEntityHandle = 0; - ms_RadarTrace[nextBlip].m_wScale = 1; - ms_RadarTrace[nextBlip].m_eBlipDisplay = display; - ms_RadarTrace[nextBlip].m_eRadarSprite = RADAR_SPRITE_NONE; - return CRadar::GetNewUniqueBlipIndex(nextBlip); -} - -int CRadar::SetEntityBlip(eBlipType type, int32 handle, int32 color, eBlipDisplay display) -{ - int nextBlip; - for (nextBlip = 0; nextBlip < NUMRADARBLIPS; nextBlip++) { - if (!ms_RadarTrace[nextBlip].m_bInUse) - break; - } - ms_RadarTrace[nextBlip].m_eBlipType = type; - ms_RadarTrace[nextBlip].m_nColor = color; - ms_RadarTrace[nextBlip].m_bDim = 1; - ms_RadarTrace[nextBlip].m_bInUse = 1; - ms_RadarTrace[nextBlip].m_Radius = 1.0f; - ms_RadarTrace[nextBlip].m_nEntityHandle = handle; - ms_RadarTrace[nextBlip].m_wScale = 1; - ms_RadarTrace[nextBlip].m_eBlipDisplay = display; - ms_RadarTrace[nextBlip].m_eRadarSprite = RADAR_SPRITE_NONE; - return GetNewUniqueBlipIndex(nextBlip); -} - -void CRadar::SetRadarMarkerState(int32 counter, bool flag) -{ - CEntity *e; - switch (ms_RadarTrace[counter].m_eBlipType) { - case BLIP_CAR: - e = CPools::GetVehiclePool()->GetAt(ms_RadarTrace[counter].m_nEntityHandle); - break; - case BLIP_CHAR: - e = CPools::GetPedPool()->GetAt(ms_RadarTrace[counter].m_nEntityHandle); - break; - case BLIP_OBJECT: - e = CPools::GetObjectPool()->GetAt(ms_RadarTrace[counter].m_nEntityHandle); - break; - default: - return; - } - - if (e) - e->bHasBlip = flag; -} - -void CRadar::ShowRadarMarker(CVector pos, uint32 color, float radius) { - float f1 = radius * 1.4f; - float f2 = radius * 0.5f; - CVector p1, p2; - - p1 = pos + TheCamera.GetUp()*f1; - p2 = pos + TheCamera.GetUp()*f2; - CTheScripts::ScriptDebugLine3D(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, color, color); - - p1 = pos - TheCamera.GetUp()*f1; - p2 = pos - TheCamera.GetUp()*f2; - CTheScripts::ScriptDebugLine3D(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, color, color); - - p1 = pos + TheCamera.GetRight()*f1; - p2 = pos + TheCamera.GetRight()*f2; - CTheScripts::ScriptDebugLine3D(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, color, color); - - p1 = pos - TheCamera.GetRight()*f1; - p2 = pos - TheCamera.GetRight()*f2; - CTheScripts::ScriptDebugLine3D(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, color, color); -} - -void CRadar::ShowRadarTrace(float x, float y, uint32 size, uint8 red, uint8 green, uint8 blue, uint8 alpha) -{ - if (!CHud::m_Wants_To_Draw_Hud || TheCamera.m_WideScreenOn) - return; - - CSprite2d::DrawRect(CRect(x - SCREEN_SCALE_X(size + 1.0f), y - SCREEN_SCALE_Y(size + 1.0f), SCREEN_SCALE_X(size + 1.0f) + x, SCREEN_SCALE_Y(size + 1.0f) + y), CRGBA(0, 0, 0, alpha)); - CSprite2d::DrawRect(CRect(x - SCREEN_SCALE_X(size), y - SCREEN_SCALE_Y(size), SCREEN_SCALE_X(size) + x, SCREEN_SCALE_Y(size) + y), CRGBA(red, green, blue, alpha)); -} - -void CRadar::ShowRadarTraceWithHeight(float x, float y, uint32 size, uint8 red, uint8 green, uint8 blue, uint8 alpha, uint8 mode) -{ - if (!CHud::m_Wants_To_Draw_Hud || TheCamera.m_WideScreenOn) - return; - - switch (mode) - { - case BLIP_MODE_TRIANGULAR_UP: - // size++; // VC does size + 1 for triangles - CSprite2d::Draw2DPolygon(x + SCREEN_SCALE_X(size + 3.0f), y + SCREEN_SCALE_Y(size + 2.0f), x - (SCREEN_SCALE_X(size + 3.0f)), y + SCREEN_SCALE_Y(size + 2.0f), x, y - (SCREEN_SCALE_Y(size + 3.0f)), x, y - (SCREEN_SCALE_Y(size + 3.0f)), CRGBA(0, 0, 0, alpha)); - CSprite2d::Draw2DPolygon(x + SCREEN_SCALE_X(size + 1.0f), y + SCREEN_SCALE_Y(size + 1.0f), x - (SCREEN_SCALE_X(size + 1.0f)), y + SCREEN_SCALE_Y(size + 1.0f), x, y - (SCREEN_SCALE_Y(size + 1.0f)), x, y - (SCREEN_SCALE_Y(size + 1.0f)), CRGBA(red, green, blue, alpha)); - break; - case BLIP_MODE_TRIANGULAR_DOWN: - // size++; // VC does size + 1 for triangles - CSprite2d::Draw2DPolygon(x, y + SCREEN_SCALE_Y(size + 2.0f), x, y + SCREEN_SCALE_Y(size + 3.0f), x + SCREEN_SCALE_X(size + 3.0f), y - (SCREEN_SCALE_Y(size + 2.0f)), x - (SCREEN_SCALE_X(size + 3.0f)), y - (SCREEN_SCALE_Y(size + 2.0f)), CRGBA(0, 0, 0, alpha)); - CSprite2d::Draw2DPolygon(x, y + SCREEN_SCALE_Y(size + 1.0f), x, y + SCREEN_SCALE_Y(size + 1.0f), x + SCREEN_SCALE_X(size + 1.0f), y - (SCREEN_SCALE_Y(size + 1.0f)), x - (SCREEN_SCALE_X(size + 1.0f)), y - (SCREEN_SCALE_Y(size + 1.0f)), CRGBA(red, green, blue, alpha)); - break; - case BLIP_MODE_SQUARE: - CSprite2d::DrawRect(CRect(x - SCREEN_SCALE_X(size + 1.0f), y - SCREEN_SCALE_Y(size + 1.0f), SCREEN_SCALE_X(size + 1.0f) + x, SCREEN_SCALE_Y(size + 1.0f) + y), CRGBA(0, 0, 0, alpha)); - CSprite2d::DrawRect(CRect(x - SCREEN_SCALE_X(size), y - SCREEN_SCALE_Y(size), SCREEN_SCALE_X(size) + x, SCREEN_SCALE_Y(size) + y), CRGBA(red, green, blue, alpha)); - break; - } -#ifdef MENU_MAP - // VC uses -1 for coords and -2 for entities but meh, I don't want to edit DrawBlips - if (CMenuManager::bMenuMapActive) { - bool alreadyThere = false; - for (int i = 0; i < NUM_MAP_LEGENDS; i++) { - if (MapLegendList[i] == -1) - alreadyThere = true; - } - if (!alreadyThere) { - MapLegendList[MapLegendCounter] = -1; - MapLegendCounter++; - ArrowBlipColour1 = CRGBA(red, green, blue, alpha); - } - } -#endif -} - -void CRadar::Shutdown() -{ - AsukaSprite.Delete(); - BombSprite.Delete(); - CatSprite.Delete(); - CentreSprite.Delete(); - CopcarSprite.Delete(); - DonSprite.Delete(); - EightSprite.Delete(); - ElSprite.Delete(); - IceSprite.Delete(); - JoeySprite.Delete(); - KenjiSprite.Delete(); - LizSprite.Delete(); - LuigiSprite.Delete(); - NorthSprite.Delete(); - RaySprite.Delete(); - SalSprite.Delete(); - SaveSprite.Delete(); - SpraySprite.Delete(); - TonySprite.Delete(); - WeaponSprite.Delete(); - RemoveRadarSections(); -} - -void CRadar::StreamRadarSections(const CVector &posn) -{ - StreamRadarSections(floorf((2000.0f + posn.x) / 500.0f), ceilf(7.0f - (2000.0f + posn.y) / 500.0f)); -} - -void CRadar::StreamRadarSections(int32 x, int32 y) -{ - for (int i = 0; i < RADAR_NUM_TILES; ++i) { - for (int j = 0; j < RADAR_NUM_TILES; ++j) { - if ((i >= x - 1 && i <= x + 1) && (j >= y - 1 && j <= y + 1)) - RequestMapSection(i, j); - else - RemoveMapSection(i, j); - }; - }; -} - -void CRadar::TransformRealWorldToTexCoordSpace(CVector2D &out, const CVector2D &in, int32 x, int32 y) -{ - out.x = in.x - (x * RADAR_TILE_SIZE + WORLD_MIN_X); - out.y = -(in.y - ((RADAR_NUM_TILES - y) * RADAR_TILE_SIZE + WORLD_MIN_Y)); - out.x /= RADAR_TILE_SIZE; - out.y /= RADAR_TILE_SIZE; -} - -void CRadar::TransformRadarPointToRealWorldSpace(CVector2D &out, const CVector2D &in) -{ - float s, c; -#if 1 - s = -cachedSin; - c = cachedCos; -#else - // Original code - - s = -Sin(TheCamera.GetForward().Heading()); - c = Cos(TheCamera.GetForward().Heading()); - - if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED) { - s = 0.0f; - c = 1.0f; - } - else if (TheCamera.GetLookDirection() != LOOKING_FORWARD) { - CVector forward; - - if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON) { - forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetForward(); - forward.Normalise(); // a bit useless... - } - else - forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetPosition() - TheCamera.Cams[TheCamera.ActiveCam].SourceBeforeLookBehind; - - s = -Sin(forward.Heading()); - c = Cos(forward.Heading()); - } -#endif - - out.x = s * in.y + c * in.x; - out.y = c * in.y - s * in.x; - - out = out * m_radarRange + vec2DRadarOrigin; -} - -// Radar space goes from -1.0 to 1.0 in x and y, top right is (1.0, 1.0) -void CRadar::TransformRadarPointToScreenSpace(CVector2D &out, const CVector2D &in) +#include "config.h" +#include "common.h" +#include "patcher.h" +#include "RwHelper.h" +#include "Radar.h" +#include "Camera.h" +#include "Hud.h" +#include "World.h" +#include "Frontend.h" +#include "General.h" +#include "Vehicle.h" +#include "Pools.h" +#include "Script.h" +#include "TxdStore.h" +#include "World.h" +#include "Streaming.h" +#include "SpecialFX.h" + +float &CRadar::m_radarRange = *(float*)0x8E281C; +CBlip (&CRadar::ms_RadarTrace)[NUMRADARBLIPS] = *(CBlip(*)[NUMRADARBLIPS]) * (uintptr*)0x6ED5E0; +CVector2D &vec2DRadarOrigin = *(CVector2D*)0x6299B8; +int32 gRadarTxdIds[64];// = (int*)0x6299C0; + +CSprite2d CRadar::AsukaSprite;// = *(CSprite2d*)0x8F1A40; +CSprite2d CRadar::BombSprite;// = (CSprite2d*)0x8F5FB4; +CSprite2d CRadar::CatSprite;// = (CSprite2d*)0x885B24; +CSprite2d CRadar::CentreSprite;// = (CSprite2d*)0x8F6268; +CSprite2d CRadar::CopcarSprite;// = (CSprite2d*)0x8F1A2C; +CSprite2d CRadar::DonSprite;// = (CSprite2d*)0x8F2BE0; +CSprite2d CRadar::EightSprite;// = (CSprite2d*)0x8F2BCC; +CSprite2d CRadar::ElSprite;// = (CSprite2d*)0x8F1B80; +CSprite2d CRadar::IceSprite;// = (CSprite2d*)0x9415FC; +CSprite2d CRadar::JoeySprite;// = (CSprite2d*)0x8F2C00; +CSprite2d CRadar::KenjiSprite;// = (CSprite2d*)0x8F2C68; +CSprite2d CRadar::LizSprite;// = (CSprite2d*)0x8F5830; +CSprite2d CRadar::LuigiSprite;// = (CSprite2d*)0x8F1A3C; +CSprite2d CRadar::NorthSprite;// = (CSprite2d*)0x8F6274; +CSprite2d CRadar::RaySprite;// = (CSprite2d*)0x8E2A7C; +CSprite2d CRadar::SalSprite;// = (CSprite2d*)0x8F29EC; +CSprite2d CRadar::SaveSprite;// = (CSprite2d*)0x8F5F74; +CSprite2d CRadar::SpraySprite;// = (CSprite2d*)0x94307C; +CSprite2d CRadar::TonySprite;// = (CSprite2d*)0x885B58; +CSprite2d CRadar::WeaponSprite;// = (CSprite2d*)0x941534; + +CSprite2d *CRadar::RadarSprites[RADAR_SPRITE_COUNT] = { + nil, + &AsukaSprite, + &BombSprite, + &CatSprite, + &CentreSprite, + &CopcarSprite, + &DonSprite, + &EightSprite, + &ElSprite, + &IceSprite, + &JoeySprite, + &KenjiSprite, + &LizSprite, + &LuigiSprite, + &NorthSprite, + &RaySprite, + &SalSprite, + &SaveSprite, + &SpraySprite, + &TonySprite, + &WeaponSprite +}; + +#define RADAR_NUM_TILES (8) +#define RADAR_TILE_SIZE (WORLD_SIZE_X / RADAR_NUM_TILES) +static_assert(RADAR_TILE_SIZE == (WORLD_SIZE_Y / RADAR_NUM_TILES), "CRadar: not a square"); + +#define RADAR_MIN_RANGE (120.0f) +#define RADAR_MAX_RANGE (350.0f) +#define RADAR_MIN_SPEED (0.3f) +#define RADAR_MAX_SPEED (0.9f) + +#ifdef MENU_MAP +CRGBA CRadar::ArrowBlipColour1; +CRGBA CRadar::ArrowBlipColour2; +uint16 CRadar::MapLegendCounter; +uint16 CRadar::MapLegendList[NUM_MAP_LEGENDS]; +int CRadar::TargetMarkerId = -1; +#endif + +// taken from VC +float CRadar::cachedCos; +float CRadar::cachedSin; + +uint8 CRadar::CalculateBlipAlpha(float dist) { -#ifdef MENU_MAP - if (CMenuManager::bMenuMapActive) { - // fMapSize is actually half map size. Radar range is 1000, so if x is -2000, in.x + 2.0f is 0. - out.x = (CMenuManager::fMapCenterX - CMenuManager::fMapSize) + (in.x + 2.0f) * CMenuManager::fMapSize * 2.0f / 4.0f; - out.y = (CMenuManager::fMapCenterY - CMenuManager::fMapSize) + (2.0f - in.y) * CMenuManager::fMapSize * 2.0f / 4.0f; - } else -#endif - { -#ifdef FIX_BUGS - out.x = (in.x + 1.0f) * 0.5f * SCREEN_SCALE_X(RADAR_WIDTH) + SCREEN_SCALE_X(RADAR_LEFT); -#else - out.x = (in.x + 1.0f) * 0.5f * SCREEN_SCALE_X(RADAR_WIDTH) + RADAR_LEFT; -#endif - out.y = (1.0f - in.y) * 0.5f * SCREEN_SCALE_Y(RADAR_HEIGHT) + SCREEN_SCALE_FROM_BOTTOM(RADAR_BOTTOM + RADAR_HEIGHT); +#ifdef MENU_MAP + if (CMenuManager::bMenuMapActive) + return 255; +#endif + if (dist <= 1.0f) + return 255; + + if (dist <= 5.0f) + return (128.0f * ((dist - 1.0f) / 4.0f)) + ((1.0f - (dist - 1.0f) / 4.0f) * 255.0f); + + return 128; +} + +void CRadar::ChangeBlipBrightness(int32 i, int32 bright) +{ + int index = GetActualBlipArrayIndex(i); + if (index != -1) + ms_RadarTrace[index].m_bDim = bright != 1; +} + +void CRadar::ChangeBlipColour(int32 i, int32 color) +{ + int index = GetActualBlipArrayIndex(i); + if (index != -1) + ms_RadarTrace[index].m_nColor = color; +} + +void CRadar::ChangeBlipDisplay(int32 i, eBlipDisplay display) +{ + int index = GetActualBlipArrayIndex(i); + if (index != -1) + ms_RadarTrace[index].m_eBlipDisplay = display; +} + +void CRadar::ChangeBlipScale(int32 i, int32 scale) +{ + int index = GetActualBlipArrayIndex(i); + if (index != -1) + ms_RadarTrace[index].m_wScale = scale; +} + +void CRadar::ClearBlip(int32 i) +{ + int index = GetActualBlipArrayIndex(i); + if (index != -1) { + SetRadarMarkerState(index, false); + ms_RadarTrace[index].m_bInUse = false; +#ifndef MENU_MAP + // Ssshhh + ms_RadarTrace[index].m_eBlipType = BLIP_NONE; + ms_RadarTrace[index].m_eBlipDisplay = BLIP_DISPLAY_NEITHER; + ms_RadarTrace[index].m_eRadarSprite = RADAR_SPRITE_NONE; +#endif } -} - -void CRadar::TransformRealWorldPointToRadarSpace(CVector2D &out, const CVector2D &in) -{ - float s, c; -#if 1 - s = cachedSin; - c = cachedCos; -#else - // Original code - - float s, c; - if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED) { - s = 0.0f; - c = 1.0f; - } - else if (TheCamera.GetLookDirection() == LOOKING_FORWARD) { - s = Sin(TheCamera.GetForward().Heading()); - c = Cos(TheCamera.GetForward().Heading()); - } - else { - CVector forward; - - if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON) { - forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetForward(); - forward.Normalise(); // a bit useless... - } - else - forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetPosition() - TheCamera.Cams[TheCamera.ActiveCam].SourceBeforeLookBehind; - - s = Sin(forward.Heading()); - c = Cos(forward.Heading()); - } -#endif - - float x = (in.x - vec2DRadarOrigin.x) * (1.0f / m_radarRange); - float y = (in.y - vec2DRadarOrigin.y) * (1.0f / m_radarRange); - - out.x = s * y + c * x; - out.y = c * y - s * x; -} - -// Transform from section indices to world coordinates -void CRadar::GetTextureCorners(int32 x, int32 y, CVector2D *out) -{ - x = x - RADAR_NUM_TILES/2; - y = -(y - RADAR_NUM_TILES/2); - - // bottom left - out[0].x = RADAR_TILE_SIZE * (x); - out[0].y = RADAR_TILE_SIZE * (y - 1); - - // bottom right - out[1].x = RADAR_TILE_SIZE * (x + 1); - out[1].y = RADAR_TILE_SIZE * (y - 1); - - // top right - out[2].x = RADAR_TILE_SIZE * (x + 1); - out[2].y = RADAR_TILE_SIZE * (y); - - // top left - out[3].x = RADAR_TILE_SIZE * (x); - out[3].y = RADAR_TILE_SIZE * (y); -} - -void CRadar::ClipRadarTileCoords(int32 &x, int32 &y) -{ - if (x < 0) - x = 0; - if (x > RADAR_NUM_TILES-1) - x = RADAR_NUM_TILES-1; - if (y < 0) - y = 0; - if (y > RADAR_NUM_TILES-1) - y = RADAR_NUM_TILES-1; -} - - -bool CRadar::IsPointInsideRadar(const CVector2D &point) -{ - if (point.x < -1.0f || point.x > 1.0f) return false; - if (point.y < -1.0f || point.y > 1.0f) return false; - return true; -} - -// clip line p1,p2 against (-1.0, 1.0) in x and y, set out to clipped point closest to p1 -int CRadar::LineRadarBoxCollision(CVector2D &out, const CVector2D &p1, const CVector2D &p2) -{ - float d1, d2; - float t; - float x, y; - float shortest = 1.0f; - int edge = -1; - - // clip against left edge, x = -1.0 - d1 = -1.0f - p1.x; - d2 = -1.0f - p2.x; - if (d1 * d2 < 0.0f) { - // they are on opposite sides, get point of intersection - t = d1 / (d1 - d2); - y = (p2.y - p1.y)*t + p1.y; - if (y >= -1.0f && y <= 1.0f && t <= shortest) { - out.x = -1.0f; - out.y = y; - edge = 3; - shortest = t; - } - } - - // clip against right edge, x = 1.0 - d1 = p1.x - 1.0f; - d2 = p2.x - 1.0f; - if (d1 * d2 < 0.0f) { - // they are on opposite sides, get point of intersection - t = d1 / (d1 - d2); - y = (p2.y - p1.y)*t + p1.y; - if (y >= -1.0f && y <= 1.0f && t <= shortest) { - out.x = 1.0f; - out.y = y; - edge = 1; - shortest = t; - } - } - - // clip against top edge, y = -1.0 - d1 = -1.0f - p1.y; - d2 = -1.0f - p2.y; - if (d1 * d2 < 0.0f) { - // they are on opposite sides, get point of intersection - t = d1 / (d1 - d2); - x = (p2.x - p1.x)*t + p1.x; - if (x >= -1.0f && x <= 1.0f && t <= shortest) { - out.y = -1.0f; - out.x = x; - edge = 0; - shortest = t; - } - } - - // clip against bottom edge, y = 1.0 - d1 = p1.y - 1.0f; - d2 = p2.y - 1.0f; - if (d1 * d2 < 0.0f) { - // they are on opposite sides, get point of intersection - t = d1 / (d1 - d2); - x = (p2.x - p1.x)*t + p1.x; - if (x >= -1.0f && x <= 1.0f && t <= shortest) { - out.y = 1.0f; - out.x = x; - edge = 2; - shortest = t; - } - } - - return edge; -} - -void -CRadar::CalculateCachedSinCos() -{ - if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED -#ifdef MENU_MAP - || CMenuManager::bMenuMapActive -#endif - ) { - cachedSin = 0.0f; - cachedCos = 1.0f; - } else if (TheCamera.GetLookDirection() == LOOKING_FORWARD) { - cachedSin = Sin(TheCamera.GetForward().Heading()); - cachedCos = Cos(TheCamera.GetForward().Heading()); - } else { - CVector forward; - - if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON) { - forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetForward(); - forward.Normalise(); // a bit useless... - } - else - forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetPosition() - TheCamera.Cams[TheCamera.ActiveCam].SourceBeforeLookBehind; - - cachedSin = Sin(forward.Heading()); - cachedCos = Cos(forward.Heading()); - } -} - -#ifdef MENU_MAP -void -CRadar::InitFrontEndMap() -{ - CalculateCachedSinCos(); - vec2DRadarOrigin.x = 0.0f; - vec2DRadarOrigin.y = 0.0f; - m_radarRange = 1000.0f; // doesn't mean anything, just affects the calculation in TransformRadarPointToScreenSpace - for (int i = 0; i < NUM_MAP_LEGENDS; i++) { - MapLegendList[i] = RADAR_SPRITE_NONE; - } - MapLegendCounter = 0; - ArrowBlipColour1 = CRGBA(0, 0, 0, 0); - ArrowBlipColour2 = CRGBA(0, 0, 0, 0); -} - -void -CRadar::DrawYouAreHereSprite(float x, float y) -{ - static uint32 lastChange = 0; - static bool show = true; - - if (show) { - if (CTimer::GetTimeInMillisecondsPauseMode() - lastChange > 500) { - lastChange = CTimer::GetTimeInMillisecondsPauseMode(); - show = !show; - } - } else { - if (CTimer::GetTimeInMillisecondsPauseMode() - lastChange > 200) { - lastChange = CTimer::GetTimeInMillisecondsPauseMode(); - show = !show; - } - } - - if (show) { - float left = x - SCREEN_SCALE_X(12.0f); - float top = y - SCREEN_SCALE_Y(2.0f); - float right = SCREEN_SCALE_X(12.0) + x; - float bottom = y - SCREEN_SCALE_Y(26.0f); - CentreSprite.Draw(CRect(left, top, right, bottom), CRGBA(255, 217, 106, 255)); - } - MapLegendList[MapLegendCounter++] = RADAR_SPRITE_CENTRE; -} - -void -CRadar::ToggleTargetMarker(float x, float y) -{ - if (TargetMarkerId == -1) { - int nextBlip; - for (nextBlip = 0; nextBlip < NUMRADARBLIPS; nextBlip++) { - if (!ms_RadarTrace[nextBlip].m_bInUse) - break; - } - ms_RadarTrace[nextBlip].m_eBlipType = BLIP_COORD; - ms_RadarTrace[nextBlip].m_nColor = 0x333333FF; - ms_RadarTrace[nextBlip].m_bDim = 1; - ms_RadarTrace[nextBlip].m_bInUse = 1; - ms_RadarTrace[nextBlip].m_Radius = 1.0f; - CVector pos(x, y, CWorld::FindGroundZForCoord(x,y)); - ms_RadarTrace[nextBlip].m_vec2DPos = pos; - ms_RadarTrace[nextBlip].m_vecPos = pos; - ms_RadarTrace[nextBlip].m_nEntityHandle = 0; - ms_RadarTrace[nextBlip].m_wScale = 5; - ms_RadarTrace[nextBlip].m_eBlipDisplay = BLIP_DISPLAY_BLIP_ONLY; - ms_RadarTrace[nextBlip].m_eRadarSprite = RADAR_SPRITE_NONE; - TargetMarkerId = CRadar::GetNewUniqueBlipIndex(nextBlip); - } else { - ClearBlip(TargetMarkerId); - TargetMarkerId = -1; - } -} -#endif - -STARTPATCHES - InjectHook(0x4A3EF0, CRadar::Initialise, PATCH_JUMP); - InjectHook(0x4A3F60, CRadar::Shutdown, PATCH_JUMP); - InjectHook(0x4A4030, CRadar::LoadTextures, PATCH_JUMP); - InjectHook(0x4A4180, CRadar::GetNewUniqueBlipIndex, PATCH_JUMP); - InjectHook(0x4A41C0, CRadar::GetActualBlipArrayIndex, PATCH_JUMP); - InjectHook(0x4A4200, CRadar::DrawMap, PATCH_JUMP); - InjectHook(0x4A42F0, CRadar::DrawBlips, PATCH_JUMP); - InjectHook(0x4A4C70, CRadar::Draw3dMarkers, PATCH_JUMP); - InjectHook(0x4A4F30, CRadar::LimitRadarPoint, PATCH_JUMP); - InjectHook(0x4A4F90, CRadar::CalculateBlipAlpha, PATCH_JUMP); - InjectHook(0x4A5040, CRadar::TransformRadarPointToScreenSpace, PATCH_JUMP); - InjectHook(0x4A50D0, CRadar::TransformRealWorldPointToRadarSpace, PATCH_JUMP); - InjectHook(0x4A5300, CRadar::TransformRadarPointToRealWorldSpace, PATCH_JUMP); - InjectHook(0x4A5530, CRadar::TransformRealWorldToTexCoordSpace, PATCH_JUMP); - InjectHook(0x4A5590, CRadar::SetCoordBlip, PATCH_JUMP); - InjectHook(0x4A5640, CRadar::SetEntityBlip, PATCH_JUMP); - InjectHook(0x4A56C0, CRadar::ClearBlipForEntity, PATCH_JUMP); - InjectHook(0x4A5720, CRadar::ClearBlip, PATCH_JUMP); - InjectHook(0x4A5770, CRadar::ChangeBlipColour, PATCH_JUMP); - InjectHook(0x4A57A0, CRadar::ChangeBlipBrightness, PATCH_JUMP); - InjectHook(0x4A57E0, CRadar::ChangeBlipScale, PATCH_JUMP); - InjectHook(0x4A5810, CRadar::ChangeBlipDisplay, PATCH_JUMP); - InjectHook(0x4A5840, CRadar::SetBlipSprite, PATCH_JUMP); - InjectHook(0x4A5870, CRadar::ShowRadarTrace, PATCH_JUMP); - InjectHook(0x4A59C0, CRadar::ShowRadarMarker, PATCH_JUMP); - InjectHook(0x4A5BB0, CRadar::GetRadarTraceColour, PATCH_JUMP); - InjectHook(0x4A5C60, CRadar::SetRadarMarkerState, PATCH_JUMP); - InjectHook(0x4A5D10, CRadar::DrawRotatingRadarSprite, PATCH_JUMP); - InjectHook(0x4A5EF0, CRadar::DrawRadarSprite, PATCH_JUMP); - InjectHook(0x4A60E0, CRadar::RemoveRadarSections, PATCH_JUMP); - InjectHook(0x4A6100, (void (*)(int32, int32))&CRadar::StreamRadarSections, PATCH_JUMP); - InjectHook(0x4A64A0, CRadar::ClipRadarPoly, PATCH_JUMP); - InjectHook(0x4A67E0, CRadar::DrawRadarSection, PATCH_JUMP); - InjectHook(0x4A69C0, CRadar::DrawRadarMask, PATCH_JUMP); - InjectHook(0x4A6B60, (void (*)(const CVector&))&CRadar::StreamRadarSections, PATCH_JUMP); - InjectHook(0x4A6C20, CRadar::DrawRadarMap, PATCH_JUMP); - InjectHook(0x4A6E30, CRadar::SaveAllRadarBlips, PATCH_JUMP); - InjectHook(0x4A6F30, CRadar::LoadAllRadarBlips, PATCH_JUMP); - - InjectHook(0x4A61C0, CRadar::GetTextureCorners, PATCH_JUMP); - InjectHook(0x4A6160, CRadar::IsPointInsideRadar, PATCH_JUMP); - InjectHook(0x4A6250, CRadar::LineRadarBoxCollision, PATCH_JUMP); -ENDPATCHES +} + +void CRadar::ClearBlipForEntity(eBlipType type, int32 id) +{ + for (int i = 0; i < NUMRADARBLIPS; i++) { + if (type == ms_RadarTrace[i].m_eBlipType && id == ms_RadarTrace[i].m_nEntityHandle) { + SetRadarMarkerState(i, false); + ms_RadarTrace[i].m_bInUse = false; + ms_RadarTrace[i].m_eBlipType = BLIP_NONE; + ms_RadarTrace[i].m_eBlipDisplay = BLIP_DISPLAY_NEITHER; + ms_RadarTrace[i].m_eRadarSprite = RADAR_SPRITE_NONE; + } + }; +} + +// Why not a proper clipping algorithm? +int CRadar::ClipRadarPoly(CVector2D *poly, const CVector2D *rect) +{ + CVector2D corners[4] = { + { 1.0f, -1.0f }, // top right + { 1.0f, 1.0f }, // bottom right + { -1.0f, 1.0f }, // bottom left + { -1.0f, -1.0f }, // top left + }; + CVector2D tmp; + int i, j, n; + int laste, e, e1, e2;; + bool inside[4]; + + for (i = 0; i < 4; i++) + inside[i] = IsPointInsideRadar(rect[i]); + + laste = -1; + n = 0; + for (i = 0; i < 4; i++) + if (inside[i]) { + // point is inside, just add + poly[n++] = rect[i]; + } + else { + // point is outside but line to this point might be clipped + e1 = LineRadarBoxCollision(poly[n], rect[i], rect[(i + 4 - 1) % 4]); + if (e1 != -1) { + laste = e1; + n++; + } + // and line from this point might be clipped as well + e2 = LineRadarBoxCollision(poly[n], rect[i], rect[(i + 1) % 4]); + if (e2 != -1) { + if (e1 == -1) { + // if other line wasn't clipped, i.e. it was complete outside, + // we may have to insert another vertex if last clipped line + // was on a different edge + + // find the last intersection if we haven't seen it yet + if (laste == -1) + for (j = 3; j >= i; j--) { + // game uses an if here for j == 0 + e = LineRadarBoxCollision(tmp, rect[j], rect[(j + 4 - 1) % 4]); + if (e != -1) { + laste = e; + break; + } + } + assert(laste != -1); + + // insert corners that were skipped + tmp = poly[n]; + for (e = laste; e != e2; e = (e + 1) % 4) + poly[n++] = corners[e]; + poly[n] = tmp; + } + n++; + } + } + + if (n == 0) { + // If no points, either the rectangle is completely outside or completely surrounds the radar + // no idea what's going on here... + float m = (rect[0].y - rect[1].y) / (rect[0].x - rect[1].x); + if ((m*rect[3].x - rect[3].y) * (m*rect[0].x - rect[0].y) < 0.0f) { + m = (rect[0].y - rect[3].y) / (rect[0].x - rect[3].x); + if ((m*rect[1].x - rect[1].y) * (m*rect[0].x - rect[0].y) < 0.0f) { + poly[0] = corners[0]; + poly[1] = corners[1]; + poly[2] = corners[2]; + poly[3] = corners[3]; + n = 4; + } + } + } + + return n; +} + +bool CRadar::DisplayThisBlip(int32 counter) +{ + switch (ms_RadarTrace[counter].m_eRadarSprite) { + case RADAR_SPRITE_BOMB: + case RADAR_SPRITE_SPRAY: + case RADAR_SPRITE_WEAPON: + return true; + default: + return false; + } +} + +void CRadar::Draw3dMarkers() +{ + for (int i = 0; i < NUMRADARBLIPS; i++) { + if (ms_RadarTrace[i].m_bInUse) { + switch (ms_RadarTrace[i].m_eBlipType) { + case BLIP_CAR: + { + CEntity *entity = CPools::GetVehiclePool()->GetAt(ms_RadarTrace[i].m_nEntityHandle); + if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { + CVector pos = entity->GetPosition(); + pos.z += 1.2f * CModelInfo::GetModelInfo(entity->GetModelIndex())->GetColModel()->boundingBox.max.z + 2.5f; + C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), 1, pos, 2.5f, 0, 128, 255, 255, 1024, 0.2f, 5); + } + break; + } + case BLIP_CHAR: + { + CEntity *entity = CPools::GetPedPool()->GetAt(ms_RadarTrace[i].m_nEntityHandle); + if (entity != nil) { + if (((CPed*)entity)->InVehicle()) + entity = ((CPed * )entity)->m_pMyVehicle; + } + if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { + CVector pos = entity->GetPosition(); + pos.z += 3.0f; + C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), 1, pos, 1.5f, 0, 128, 255, 255, 1024, 0.2f, 5); + } + break; + } + case BLIP_OBJECT: + { + CEntity *entity = CPools::GetObjectPool()->GetAt(ms_RadarTrace[i].m_nEntityHandle); + if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { + CVector pos = entity->GetPosition(); + pos.z += CModelInfo::GetModelInfo(entity->GetModelIndex())->GetColModel()->boundingBox.max.z + 1.0f + 1.0f; + C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), 1, pos, 1.0f, 0, 128, 255, 255, 1024, 0.2f, 5); + } + break; + } + case BLIP_COORD: + break; + case BLIP_CONTACT_POINT: + if (!CTheScripts::IsPlayerOnAMission()) { + if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) + C3dMarkers::PlaceMarkerSet(i | (ms_RadarTrace[i].m_BlipIndex << 16), 4, ms_RadarTrace[i].m_vecPos, 2.0f, 0, 128, 255, 128, 2048, 0.2f, 0); + } + break; + } + } + } +} + +void CRadar::DrawBlips() +{ + if (!TheCamera.m_WideScreenOn && CHud::m_Wants_To_Draw_Hud) { + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); + RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE); + + CVector2D out; + CVector2D in = CVector2D(0.0f, 0.0f); + TransformRadarPointToScreenSpace(out, in); + +#ifdef MENU_MAP + if (!CMenuManager::bMenuMapActive) { +#endif + float angle; + if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN) + angle = PI + FindPlayerHeading(); +#ifdef FIX_BUGS + else if (TheCamera.GetLookDirection() != LOOKING_FORWARD) + angle = FindPlayerHeading() - (PI + (TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetPosition() - TheCamera.Cams[TheCamera.ActiveCam].SourceBeforeLookBehind).Heading()); +#endif + else + angle = FindPlayerHeading() - (PI + TheCamera.GetForward().Heading()); + + DrawRotatingRadarSprite(&CentreSprite, out.x, out.y, angle, 255); + + CVector2D vec2d; + vec2d.x = vec2DRadarOrigin.x; + vec2d.y = M_SQRT2 * m_radarRange + vec2DRadarOrigin.y; + TransformRealWorldPointToRadarSpace(in, vec2d); + LimitRadarPoint(in); + TransformRadarPointToScreenSpace(out, in); + DrawRadarSprite(RADAR_SPRITE_NORTH, out.x, out.y, 255); +#ifdef MENU_MAP + } +#endif + + CEntity *blipEntity = nil; + for(int blipId = 0; blipId < NUMRADARBLIPS; blipId++) { +#ifdef MENU_MAP + // A little hack to reuse cleared blips in menu map. hehe + if (!CMenuManager::bMenuMapActive || ms_RadarTrace[blipId].m_eBlipType == BLIP_CAR || + ms_RadarTrace[blipId].m_eBlipType == BLIP_CHAR || ms_RadarTrace[blipId].m_eBlipType == BLIP_OBJECT) +#endif + if (!ms_RadarTrace[blipId].m_bInUse) + continue; + + switch (ms_RadarTrace[blipId].m_eBlipType) { + case BLIP_CAR: + case BLIP_CHAR: + case BLIP_OBJECT: + if (ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_BOMB || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_SAVE + || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_SPRAY || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_WEAPON) { + + switch (ms_RadarTrace[blipId].m_eBlipType) { + case BLIP_CAR: + blipEntity = CPools::GetVehiclePool()->GetAt(ms_RadarTrace[blipId].m_nEntityHandle); + break; + case BLIP_CHAR: + blipEntity = CPools::GetPedPool()->GetAt(ms_RadarTrace[blipId].m_nEntityHandle); + if (blipEntity != nil) { + if (((CPed*)blipEntity)->InVehicle()) + blipEntity = ((CPed*)blipEntity)->m_pMyVehicle; + } + break; + case BLIP_OBJECT: + blipEntity = CPools::GetObjectPool()->GetAt(ms_RadarTrace[blipId].m_nEntityHandle); + break; + default: + break; + } + if (blipEntity) { + uint32 color = GetRadarTraceColour(ms_RadarTrace[blipId].m_nColor, ms_RadarTrace[blipId].m_bDim); + if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { + if (CTheScripts::IsDebugOn()) { + ShowRadarMarker(blipEntity->GetPosition(), color, ms_RadarTrace[blipId].m_Radius); + ms_RadarTrace[blipId].m_Radius = ms_RadarTrace[blipId].m_Radius - 0.1f; + if (ms_RadarTrace[blipId].m_Radius < 1.0f) + ms_RadarTrace[blipId].m_Radius = 5.0f; + } + } + if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BLIP_ONLY) { + TransformRealWorldPointToRadarSpace(in, blipEntity->GetPosition()); + float dist = LimitRadarPoint(in); + TransformRadarPointToScreenSpace(out, in); + if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_NONE) { + DrawRadarSprite(ms_RadarTrace[blipId].m_eRadarSprite, out.x, out.y, CalculateBlipAlpha(dist)); + } else { +#ifdef TRIANGULAR_BLIPS + CVector &pos = FindPlayerCentreOfWorld_NoSniperShift(); + CVector &blipPos = blipEntity->GetPosition(); + uint8 mode = BLIP_MODE_TRIANGULAR_UP; + if (blipPos.z - pos.z <= 2.0f) { + if (blipPos.z - pos.z < -4.0f) mode = BLIP_MODE_TRIANGULAR_DOWN; + else mode = BLIP_MODE_SQUARE; + } + ShowRadarTraceWithHeight(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255, mode); +#else + ShowRadarTrace(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255); +#endif + } + } + } + } + break; + case BLIP_COORD: + case BLIP_CONTACT_POINT: + if ((ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_BOMB || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_SAVE + || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_SPRAY || ms_RadarTrace[blipId].m_eRadarSprite == RADAR_SPRITE_WEAPON) + && (ms_RadarTrace[blipId].m_eBlipType != BLIP_CONTACT_POINT || !CTheScripts::IsPlayerOnAMission())) { + + uint32 color = GetRadarTraceColour(ms_RadarTrace[blipId].m_nColor, ms_RadarTrace[blipId].m_bDim); + if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { + if (CTheScripts::IsDebugOn()) { + ShowRadarMarker(ms_RadarTrace[blipId].m_vecPos, color, ms_RadarTrace[blipId].m_Radius); + ms_RadarTrace[blipId].m_Radius = ms_RadarTrace[blipId].m_Radius - 0.1f; + if (ms_RadarTrace[blipId].m_Radius < 1.0f) + ms_RadarTrace[blipId].m_Radius = 5.0f; + } + } + if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BLIP_ONLY) { + TransformRealWorldPointToRadarSpace(in, ms_RadarTrace[blipId].m_vec2DPos); + float dist = LimitRadarPoint(in); + TransformRadarPointToScreenSpace(out, in); + if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_NONE) { + DrawRadarSprite(ms_RadarTrace[blipId].m_eRadarSprite, out.x, out.y, CalculateBlipAlpha(dist)); + } else { +#ifdef TRIANGULAR_BLIPS + CVector &pos = FindPlayerCentreOfWorld_NoSniperShift(); + CVector &blipPos = ms_RadarTrace[blipId].m_vecPos; + uint8 mode = BLIP_MODE_TRIANGULAR_UP; + if (blipPos.z - pos.z <= 2.0f) { + if (blipPos.z - pos.z < -4.0f) mode = BLIP_MODE_TRIANGULAR_DOWN; + else mode = BLIP_MODE_SQUARE; + } + ShowRadarTraceWithHeight(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255, mode); +#else + ShowRadarTrace(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255); +#endif + } + } + } + break; + default: + break; + } + } + for(int blipId = 0; blipId < NUMRADARBLIPS; blipId++) { + if (!ms_RadarTrace[blipId].m_bInUse) + continue; + + switch (ms_RadarTrace[blipId].m_eBlipType) { + case BLIP_CAR: + case BLIP_CHAR: + case BLIP_OBJECT: + if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_BOMB && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_SAVE + && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_SPRAY && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_WEAPON) { + + switch (ms_RadarTrace[blipId].m_eBlipType) { + case BLIP_CAR: + blipEntity = CPools::GetVehiclePool()->GetAt(ms_RadarTrace[blipId].m_nEntityHandle); + break; + case BLIP_CHAR: + blipEntity = CPools::GetPedPool()->GetAt(ms_RadarTrace[blipId].m_nEntityHandle); + if (blipEntity != nil) { + if (((CPed*)blipEntity)->InVehicle()) + blipEntity = ((CPed*)blipEntity)->m_pMyVehicle; + } + break; + case BLIP_OBJECT: + blipEntity = CPools::GetObjectPool()->GetAt(ms_RadarTrace[blipId].m_nEntityHandle); + break; + default: + break; + } + + if (blipEntity) { + uint32 color = GetRadarTraceColour(ms_RadarTrace[blipId].m_nColor, ms_RadarTrace[blipId].m_bDim); + if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { + if (CTheScripts::IsDebugOn()) { + ShowRadarMarker(blipEntity->GetPosition(), color, ms_RadarTrace[blipId].m_Radius); + ms_RadarTrace[blipId].m_Radius = ms_RadarTrace[blipId].m_Radius - 0.1f; + if (ms_RadarTrace[blipId].m_Radius < 1.0f) + ms_RadarTrace[blipId].m_Radius = 5.0f; + } + } + if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BLIP_ONLY) { + TransformRealWorldPointToRadarSpace(in, blipEntity->GetPosition()); + float dist = LimitRadarPoint(in); + TransformRadarPointToScreenSpace(out, in); + if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_NONE) + DrawRadarSprite(ms_RadarTrace[blipId].m_eRadarSprite, out.x, out.y, CalculateBlipAlpha(dist)); + else +#ifdef TRIANGULAR_BLIPS + { + CVector &pos = FindPlayerCentreOfWorld_NoSniperShift(); + CVector &blipPos = blipEntity->GetPosition(); + uint8 mode = BLIP_MODE_TRIANGULAR_UP; + if (blipPos.z - pos.z <= 2.0f) { + if (blipPos.z - pos.z < -4.0f) mode = BLIP_MODE_TRIANGULAR_DOWN; + else mode = BLIP_MODE_SQUARE; + } + ShowRadarTraceWithHeight(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255, mode); + } +#else + ShowRadarTrace(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255); +#endif + } + } + } + break; + default: + break; + } + } + for (int blipId = 0; blipId < NUMRADARBLIPS; blipId++) { + if (!ms_RadarTrace[blipId].m_bInUse) + continue; + + switch (ms_RadarTrace[blipId].m_eBlipType) { + case BLIP_COORD: + case BLIP_CONTACT_POINT: + if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_BOMB && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_SAVE + && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_SPRAY && ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_WEAPON + && (ms_RadarTrace[blipId].m_eBlipType != BLIP_CONTACT_POINT || !CTheScripts::IsPlayerOnAMission())) { + + uint32 color = GetRadarTraceColour(ms_RadarTrace[blipId].m_nColor, ms_RadarTrace[blipId].m_bDim); + if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { + if (CTheScripts::IsDebugOn()) { + ShowRadarMarker(ms_RadarTrace[blipId].m_vecPos, color, ms_RadarTrace[blipId].m_Radius); + ms_RadarTrace[blipId].m_Radius = ms_RadarTrace[blipId].m_Radius - 0.1f; + if (ms_RadarTrace[blipId].m_Radius < 1.0f) + ms_RadarTrace[blipId].m_Radius = 5.0f; + } + } + if (ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[blipId].m_eBlipDisplay == BLIP_DISPLAY_BLIP_ONLY) { + TransformRealWorldPointToRadarSpace(in, ms_RadarTrace[blipId].m_vec2DPos); + float dist = LimitRadarPoint(in); + TransformRadarPointToScreenSpace(out, in); + if (ms_RadarTrace[blipId].m_eRadarSprite != RADAR_SPRITE_NONE) + DrawRadarSprite(ms_RadarTrace[blipId].m_eRadarSprite, out.x, out.y, CalculateBlipAlpha(dist)); + else +#ifdef TRIANGULAR_BLIPS + { + CVector &pos = FindPlayerCentreOfWorld_NoSniperShift(); + CVector &blipPos = ms_RadarTrace[blipId].m_vecPos; + uint8 mode = BLIP_MODE_TRIANGULAR_UP; + if (blipPos.z - pos.z <= 2.0f) { + if (blipPos.z - pos.z < -4.0f) mode = BLIP_MODE_TRIANGULAR_DOWN; + else mode = BLIP_MODE_SQUARE; + } + ShowRadarTraceWithHeight(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255, mode); + } +#else + ShowRadarTrace(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255); +#endif + } + } + break; + default: + break; + } + } +#ifdef MENU_MAP + if (CMenuManager::bMenuMapActive) { + CVector2D in, out; + TransformRealWorldPointToRadarSpace(in, FindPlayerCentreOfWorld_NoSniperShift()); + TransformRadarPointToScreenSpace(out, in); + DrawYouAreHereSprite(out.x, out.y); + } +#endif + } +} + +void CRadar::DrawMap() +{ + if (!TheCamera.m_WideScreenOn && CHud::m_Wants_To_Draw_Hud) { +#if 1 // from VC + CalculateCachedSinCos(); +#endif + if (FindPlayerVehicle()) { + float speed = FindPlayerSpeed().Magnitude(); + if (speed < RADAR_MIN_SPEED) + m_radarRange = RADAR_MIN_RANGE; + else if (speed < RADAR_MAX_SPEED) + m_radarRange = (speed - RADAR_MIN_SPEED)/(RADAR_MAX_SPEED-RADAR_MIN_SPEED) * (RADAR_MAX_RANGE-RADAR_MIN_RANGE) + RADAR_MIN_RANGE; + else + m_radarRange = RADAR_MAX_RANGE; + } + else + m_radarRange = RADAR_MIN_RANGE; + + vec2DRadarOrigin = CVector2D(FindPlayerCentreOfWorld_NoSniperShift()); + DrawRadarMap(); + } +} + +void CRadar::DrawRadarMap() +{ + // Game calculates an unused CRect here + + DrawRadarMask(); + + // top left ist (0, 0) + int x = floorf((vec2DRadarOrigin.x - WORLD_MIN_X) / RADAR_TILE_SIZE); + int y = ceilf((RADAR_NUM_TILES - 1) - (vec2DRadarOrigin.y - WORLD_MIN_Y) / RADAR_TILE_SIZE); + StreamRadarSections(x, y); + + RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); + RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR); + RwRenderStateSet(rwRENDERSTATESHADEMODE, (void*)rwSHADEMODEFLAT); + RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)rwTEXTUREADDRESSCLAMP); + RwRenderStateSet(rwRENDERSTATETEXTUREPERSPECTIVE, (void*)FALSE); + + DrawRadarSection(x - 1, y - 1); + DrawRadarSection(x, y - 1); + DrawRadarSection(x + 1, y - 1); + DrawRadarSection(x - 1, y); + DrawRadarSection(x, y); + DrawRadarSection(x + 1, y); + DrawRadarSection(x - 1, y + 1); + DrawRadarSection(x, y + 1); + DrawRadarSection(x + 1, y + 1); +} + +void CRadar::DrawRadarMask() +{ + CVector2D corners[4] = { + CVector2D(1.0f, -1.0f), + CVector2D(1.0f, 1.0f), + CVector2D(-1.0f, 1.0f), + CVector2D(-1.0, -1.0f) + }; + + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDZERO); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDONE); + RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR); + RwRenderStateSet(rwRENDERSTATESHADEMODE, (void*)rwSHADEMODEFLAT); + RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); + + CVector2D out[8]; + CVector2D in; + + // Draw the shape we want to mask out from the radar in four segments + for (int i = 0; i < 4; i++) { + // First point is always the corner itself + in.x = corners[i].x; + in.y = corners[i].y; + TransformRadarPointToScreenSpace(out[0], in); + + // Then generate a quarter of the circle + for (int j = 0; j < 7; j++) { + in.x = corners[i].x * Cos(j * (PI / 2.0f / 6.0f)); + in.y = corners[i].y * Sin(j * (PI / 2.0f / 6.0f)); + TransformRadarPointToScreenSpace(out[j + 1], in); + }; + + CSprite2d::SetMaskVertices(8, (float *)out); + RwIm2DRenderPrimitive(rwPRIMTYPETRIFAN, CSprite2d::GetVertices(), 8); + }; +} + +void CRadar::DrawRadarSection(int32 x, int32 y) +{ + int i; + RwTexDictionary *txd; + CVector2D worldPoly[8]; + CVector2D radarCorners[4]; + CVector2D radarPoly[8]; + CVector2D texCoords[8]; + CVector2D screenPoly[8]; + int numVertices; + RwTexture *texture = nil; + + GetTextureCorners(x, y, worldPoly); + ClipRadarTileCoords(x, y); + + assert(CTxdStore::GetSlot(gRadarTxdIds[x + RADAR_NUM_TILES * y])); + txd = CTxdStore::GetSlot(gRadarTxdIds[x + RADAR_NUM_TILES * y])->texDict; + if (txd) + texture = GetFirstTexture(txd); + if (texture == nil) + return; + + for (i = 0; i < 4; i++) + TransformRealWorldPointToRadarSpace(radarCorners[i], worldPoly[i]); + + numVertices = ClipRadarPoly(radarPoly, radarCorners); + + // FIX: can return earlier here +// if(numVertices == 0) + if (numVertices < 3) + return; + + for (i = 0; i < numVertices; i++) { + TransformRadarPointToRealWorldSpace(worldPoly[i], radarPoly[i]); + TransformRealWorldToTexCoordSpace(texCoords[i], worldPoly[i], x, y); + TransformRadarPointToScreenSpace(screenPoly[i], radarPoly[i]); + } + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(texture)); + CSprite2d::SetVertices(numVertices, (float*)screenPoly, (float*)texCoords, CRGBA(255, 255, 255, 255)); + // check done above now +// if(numVertices > 2) + RwIm2DRenderPrimitive(rwPRIMTYPETRIFAN, CSprite2d::GetVertices(), numVertices); +} + +void CRadar::DrawRadarSprite(uint16 sprite, float x, float y, uint8 alpha) +{ + RadarSprites[sprite]->Draw(CRect(x - SCREEN_SCALE_X(8.0f), y - SCREEN_SCALE_Y(8.0f), x + SCREEN_SCALE_X(8.0f), y + SCREEN_SCALE_Y(8.0f)), CRGBA(255, 255, 255, alpha)); +#ifdef MENU_MAP + if (CMenuManager::bMenuMapActive) { + bool alreadyThere = false; + for (int i = 0; i < NUM_MAP_LEGENDS; i++) { + if (MapLegendList[i] == sprite) + alreadyThere = true; + } + if (!alreadyThere) { + MapLegendList[MapLegendCounter] = sprite; + MapLegendCounter++; + } + } +#endif +} + +void CRadar::DrawRotatingRadarSprite(CSprite2d* sprite, float x, float y, float angle, int32 alpha) +{ + CVector curPosn[4]; + CVector oldPosn[4]; + + curPosn[0].x = x - SCREEN_SCALE_X(5.6f); + curPosn[0].y = y + SCREEN_SCALE_Y(5.6f); + + curPosn[1].x = x + SCREEN_SCALE_X(5.6f); + curPosn[1].y = y + SCREEN_SCALE_Y(5.6f); + + curPosn[2].x = x - SCREEN_SCALE_X(5.6f); + curPosn[2].y = y - SCREEN_SCALE_Y(5.6f); + + curPosn[3].x = x + SCREEN_SCALE_X(5.6f); + curPosn[3].y = y - SCREEN_SCALE_Y(5.6f); + + for (uint32 i = 0; i < 4; i++) { + oldPosn[i] = curPosn[i]; + + curPosn[i].x = x + (oldPosn[i].x - x) * Cos(angle) + (oldPosn[i].y - y) * Sin(angle); + curPosn[i].y = y - (oldPosn[i].x - x) * Sin(angle) + (oldPosn[i].y - y) * Cos(angle); + } + + sprite->Draw(curPosn[2].x, curPosn[2].y, curPosn[3].x, curPosn[3].y, curPosn[0].x, curPosn[0].y, curPosn[1].x, curPosn[1].y, CRGBA(255, 255, 255, alpha)); +} + +int32 CRadar::GetActualBlipArrayIndex(int32 i) +{ + if (i == -1) + return -1; + else if ((i & 0xFFFF0000) >> 16 != ms_RadarTrace[(uint16)i].m_BlipIndex) + return -1; + else + return (uint16)i; +} + +int32 CRadar::GetNewUniqueBlipIndex(int32 i) +{ + if (ms_RadarTrace[i].m_BlipIndex >= UINT16_MAX - 1) + ms_RadarTrace[i].m_BlipIndex = 1; + else + ms_RadarTrace[i].m_BlipIndex++; + return i | (ms_RadarTrace[i].m_BlipIndex << 16); +} + +uint32 CRadar::GetRadarTraceColour(uint32 color, bool bright) +{ + int32 c; + switch (color) { + case 0: + if (bright) + c = 0x712B49FF; + else + c = 0x7F0000FF; + break; + case 1: + if (bright) + c = 0x5FA06AFF; + else + c = 0x007F00FF; + break; + case 2: + if (bright) + c = 0x80A7F3FF; + else + c = 0x00007FFF; + break; + case 3: + if (bright) + c = 0xE1E1E1FF; + else + c = 0x7F7F7FFF; + break; + case 4: + if (bright) + c = 0xFFFF00FF; + else + c = 0x7F7F00FF; + break; + case 5: + if (bright) + c = 0xFF00FFFF; + else + c = 0x7F007FFF; + break; + case 6: + if (bright) + c = 0x00FFFFFF; + else + c = 0x007F7FFF; + break; + default: + c = color; + break; + }; + return c; +} + +const char* gRadarTexNames[] = { + "radar00", "radar01", "radar02", "radar03", "radar04", "radar05", "radar06", "radar07", + "radar08", "radar09", "radar10", "radar11", "radar12", "radar13", "radar14", "radar15", + "radar16", "radar17", "radar18", "radar19", "radar20", "radar21", "radar22", "radar23", + "radar24", "radar25", "radar26", "radar27", "radar28", "radar29", "radar30", "radar31", + "radar32", "radar33", "radar34", "radar35", "radar36", "radar37", "radar38", "radar39", + "radar40", "radar41", "radar42", "radar43", "radar44", "radar45", "radar46", "radar47", + "radar48", "radar49", "radar50", "radar51", "radar52", "radar53", "radar54", "radar55", + "radar56", "radar57", "radar58", "radar59", "radar60", "radar61", "radar62", "radar63", +}; + +void +CRadar::Initialise() +{ + for (int i = 0; i < NUMRADARBLIPS; i++) { + ms_RadarTrace[i].m_BlipIndex = 1; + SetRadarMarkerState(i, false); + ms_RadarTrace[i].m_bInUse = false; + ms_RadarTrace[i].m_eBlipType = BLIP_NONE; + ms_RadarTrace[i].m_eBlipDisplay = BLIP_DISPLAY_NEITHER; + ms_RadarTrace[i].m_eRadarSprite = RADAR_SPRITE_NONE; + } + + m_radarRange = 350.0f; + for (int i = 0; i < 64; i++) + gRadarTxdIds[i] = CTxdStore::FindTxdSlot(gRadarTexNames[i]); +} + +float CRadar::LimitRadarPoint(CVector2D &point) +{ + float dist, invdist; + + dist = point.Magnitude(); +#ifdef MENU_MAP + if (CMenuManager::bMenuMapActive) + return dist; +#endif + if (dist > 1.0f) { + invdist = 1.0f / dist; + point.x *= invdist; + point.y *= invdist; + } + return dist; +} + +void CRadar::LoadAllRadarBlips(uint8 *buf, uint32 size) +{ + Initialise(); +INITSAVEBUF + CheckSaveHeader(buf, 'R', 'D', 'R', '\0', size - SAVE_HEADER_SIZE); + + for (int i = 0; i < NUMRADARBLIPS; i++) + ms_RadarTrace[i] = ReadSaveBuf(buf); + +VALIDATESAVEBUF(size); +} + +void +CRadar::LoadTextures() +{ + CTxdStore::PushCurrentTxd(); + CTxdStore::SetCurrentTxd(CTxdStore::FindTxdSlot("hud")); + AsukaSprite.SetTexture("radar_asuka"); + BombSprite.SetTexture("radar_bomb"); + CatSprite.SetTexture("radar_cat"); + CentreSprite.SetTexture("radar_centre"); + CopcarSprite.SetTexture("radar_copcar"); + DonSprite.SetTexture("radar_don"); + EightSprite.SetTexture("radar_eight"); + ElSprite.SetTexture("radar_el"); + IceSprite.SetTexture("radar_ice"); + JoeySprite.SetTexture("radar_joey"); + KenjiSprite.SetTexture("radar_kenji"); + LizSprite.SetTexture("radar_liz"); + LuigiSprite.SetTexture("radar_luigi"); + NorthSprite.SetTexture("radar_north"); + RaySprite.SetTexture("radar_ray"); + SalSprite.SetTexture("radar_sal"); + SaveSprite.SetTexture("radar_save"); + SpraySprite.SetTexture("radar_spray"); + TonySprite.SetTexture("radar_tony"); + WeaponSprite.SetTexture("radar_weapon"); + CTxdStore::PopCurrentTxd(); +} + +void RemoveMapSection(int32 x, int32 y) +{ + if (x >= 0 && x <= 7 && y >= 0 && y <= 7) + CStreaming::RemoveTxd(gRadarTxdIds[x + RADAR_NUM_TILES * y]); +} + +void CRadar::RemoveRadarSections() +{ + for (int i = 0; i < 8; i++) + for (int j = 0; j < 8; j++) + RemoveMapSection(i, j); +} + +void CRadar::RequestMapSection(int32 x, int32 y) +{ + ClipRadarTileCoords(x, y); + CStreaming::RequestTxd(gRadarTxdIds[x + RADAR_NUM_TILES * y], STREAMFLAGS_DONT_REMOVE | STREAMFLAGS_DEPENDENCY); +} + +void CRadar::SaveAllRadarBlips(uint8 *buf, uint32 *size) +{ + *size = SAVE_HEADER_SIZE + sizeof(ms_RadarTrace); +INITSAVEBUF + WriteSaveHeader(buf, 'R', 'D', 'R', '\0', *size - SAVE_HEADER_SIZE); + + for (int i = 0; i < NUMRADARBLIPS; i++) + WriteSaveBuf(buf, ms_RadarTrace[i]); + +VALIDATESAVEBUF(*size); +} + +void CRadar::SetBlipSprite(int32 i, int32 icon) +{ + int index = CRadar::GetActualBlipArrayIndex(i); + if (index != -1) { + ms_RadarTrace[index].m_eRadarSprite = icon; + } +} + +int CRadar::SetCoordBlip(eBlipType type, CVector pos, int32 color, eBlipDisplay display) +{ + int nextBlip; + for (nextBlip = 0; nextBlip < NUMRADARBLIPS; nextBlip++) { + if (!ms_RadarTrace[nextBlip].m_bInUse) + break; + } + ms_RadarTrace[nextBlip].m_eBlipType = type; + ms_RadarTrace[nextBlip].m_nColor = color; + ms_RadarTrace[nextBlip].m_bDim = 1; + ms_RadarTrace[nextBlip].m_bInUse = 1; + ms_RadarTrace[nextBlip].m_Radius = 1.0f; + ms_RadarTrace[nextBlip].m_vec2DPos = pos; + ms_RadarTrace[nextBlip].m_vecPos = pos; + ms_RadarTrace[nextBlip].m_nEntityHandle = 0; + ms_RadarTrace[nextBlip].m_wScale = 1; + ms_RadarTrace[nextBlip].m_eBlipDisplay = display; + ms_RadarTrace[nextBlip].m_eRadarSprite = RADAR_SPRITE_NONE; + return CRadar::GetNewUniqueBlipIndex(nextBlip); +} + +int CRadar::SetEntityBlip(eBlipType type, int32 handle, int32 color, eBlipDisplay display) +{ + int nextBlip; + for (nextBlip = 0; nextBlip < NUMRADARBLIPS; nextBlip++) { + if (!ms_RadarTrace[nextBlip].m_bInUse) + break; + } + ms_RadarTrace[nextBlip].m_eBlipType = type; + ms_RadarTrace[nextBlip].m_nColor = color; + ms_RadarTrace[nextBlip].m_bDim = 1; + ms_RadarTrace[nextBlip].m_bInUse = 1; + ms_RadarTrace[nextBlip].m_Radius = 1.0f; + ms_RadarTrace[nextBlip].m_nEntityHandle = handle; + ms_RadarTrace[nextBlip].m_wScale = 1; + ms_RadarTrace[nextBlip].m_eBlipDisplay = display; + ms_RadarTrace[nextBlip].m_eRadarSprite = RADAR_SPRITE_NONE; + return GetNewUniqueBlipIndex(nextBlip); +} + +void CRadar::SetRadarMarkerState(int32 counter, bool flag) +{ + CEntity *e; + switch (ms_RadarTrace[counter].m_eBlipType) { + case BLIP_CAR: + e = CPools::GetVehiclePool()->GetAt(ms_RadarTrace[counter].m_nEntityHandle); + break; + case BLIP_CHAR: + e = CPools::GetPedPool()->GetAt(ms_RadarTrace[counter].m_nEntityHandle); + break; + case BLIP_OBJECT: + e = CPools::GetObjectPool()->GetAt(ms_RadarTrace[counter].m_nEntityHandle); + break; + default: + return; + } + + if (e) + e->bHasBlip = flag; +} + +void CRadar::ShowRadarMarker(CVector pos, uint32 color, float radius) { + float f1 = radius * 1.4f; + float f2 = radius * 0.5f; + CVector p1, p2; + + p1 = pos + TheCamera.GetUp()*f1; + p2 = pos + TheCamera.GetUp()*f2; + CTheScripts::ScriptDebugLine3D(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, color, color); + + p1 = pos - TheCamera.GetUp()*f1; + p2 = pos - TheCamera.GetUp()*f2; + CTheScripts::ScriptDebugLine3D(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, color, color); + + p1 = pos + TheCamera.GetRight()*f1; + p2 = pos + TheCamera.GetRight()*f2; + CTheScripts::ScriptDebugLine3D(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, color, color); + + p1 = pos - TheCamera.GetRight()*f1; + p2 = pos - TheCamera.GetRight()*f2; + CTheScripts::ScriptDebugLine3D(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, color, color); +} + +void CRadar::ShowRadarTrace(float x, float y, uint32 size, uint8 red, uint8 green, uint8 blue, uint8 alpha) +{ + if (!CHud::m_Wants_To_Draw_Hud || TheCamera.m_WideScreenOn) + return; + + CSprite2d::DrawRect(CRect(x - SCREEN_SCALE_X(size + 1.0f), y - SCREEN_SCALE_Y(size + 1.0f), SCREEN_SCALE_X(size + 1.0f) + x, SCREEN_SCALE_Y(size + 1.0f) + y), CRGBA(0, 0, 0, alpha)); + CSprite2d::DrawRect(CRect(x - SCREEN_SCALE_X(size), y - SCREEN_SCALE_Y(size), SCREEN_SCALE_X(size) + x, SCREEN_SCALE_Y(size) + y), CRGBA(red, green, blue, alpha)); +} + +void CRadar::ShowRadarTraceWithHeight(float x, float y, uint32 size, uint8 red, uint8 green, uint8 blue, uint8 alpha, uint8 mode) +{ + if (!CHud::m_Wants_To_Draw_Hud || TheCamera.m_WideScreenOn) + return; + + switch (mode) + { + case BLIP_MODE_TRIANGULAR_UP: + // size++; // VC does size + 1 for triangles + CSprite2d::Draw2DPolygon(x + SCREEN_SCALE_X(size + 3.0f), y + SCREEN_SCALE_Y(size + 2.0f), x - (SCREEN_SCALE_X(size + 3.0f)), y + SCREEN_SCALE_Y(size + 2.0f), x, y - (SCREEN_SCALE_Y(size + 3.0f)), x, y - (SCREEN_SCALE_Y(size + 3.0f)), CRGBA(0, 0, 0, alpha)); + CSprite2d::Draw2DPolygon(x + SCREEN_SCALE_X(size + 1.0f), y + SCREEN_SCALE_Y(size + 1.0f), x - (SCREEN_SCALE_X(size + 1.0f)), y + SCREEN_SCALE_Y(size + 1.0f), x, y - (SCREEN_SCALE_Y(size + 1.0f)), x, y - (SCREEN_SCALE_Y(size + 1.0f)), CRGBA(red, green, blue, alpha)); + break; + case BLIP_MODE_TRIANGULAR_DOWN: + // size++; // VC does size + 1 for triangles + CSprite2d::Draw2DPolygon(x, y + SCREEN_SCALE_Y(size + 2.0f), x, y + SCREEN_SCALE_Y(size + 3.0f), x + SCREEN_SCALE_X(size + 3.0f), y - (SCREEN_SCALE_Y(size + 2.0f)), x - (SCREEN_SCALE_X(size + 3.0f)), y - (SCREEN_SCALE_Y(size + 2.0f)), CRGBA(0, 0, 0, alpha)); + CSprite2d::Draw2DPolygon(x, y + SCREEN_SCALE_Y(size + 1.0f), x, y + SCREEN_SCALE_Y(size + 1.0f), x + SCREEN_SCALE_X(size + 1.0f), y - (SCREEN_SCALE_Y(size + 1.0f)), x - (SCREEN_SCALE_X(size + 1.0f)), y - (SCREEN_SCALE_Y(size + 1.0f)), CRGBA(red, green, blue, alpha)); + break; + case BLIP_MODE_SQUARE: + CSprite2d::DrawRect(CRect(x - SCREEN_SCALE_X(size + 1.0f), y - SCREEN_SCALE_Y(size + 1.0f), SCREEN_SCALE_X(size + 1.0f) + x, SCREEN_SCALE_Y(size + 1.0f) + y), CRGBA(0, 0, 0, alpha)); + CSprite2d::DrawRect(CRect(x - SCREEN_SCALE_X(size), y - SCREEN_SCALE_Y(size), SCREEN_SCALE_X(size) + x, SCREEN_SCALE_Y(size) + y), CRGBA(red, green, blue, alpha)); + break; + } +#ifdef MENU_MAP + // VC uses -1 for coords and -2 for entities but meh, I don't want to edit DrawBlips + if (CMenuManager::bMenuMapActive) { + bool alreadyThere = false; + for (int i = 0; i < NUM_MAP_LEGENDS; i++) { + if (MapLegendList[i] == -1) + alreadyThere = true; + } + if (!alreadyThere) { + MapLegendList[MapLegendCounter] = -1; + MapLegendCounter++; + ArrowBlipColour1 = CRGBA(red, green, blue, alpha); + } + } +#endif +} + +void CRadar::Shutdown() +{ + AsukaSprite.Delete(); + BombSprite.Delete(); + CatSprite.Delete(); + CentreSprite.Delete(); + CopcarSprite.Delete(); + DonSprite.Delete(); + EightSprite.Delete(); + ElSprite.Delete(); + IceSprite.Delete(); + JoeySprite.Delete(); + KenjiSprite.Delete(); + LizSprite.Delete(); + LuigiSprite.Delete(); + NorthSprite.Delete(); + RaySprite.Delete(); + SalSprite.Delete(); + SaveSprite.Delete(); + SpraySprite.Delete(); + TonySprite.Delete(); + WeaponSprite.Delete(); + RemoveRadarSections(); +} + +void CRadar::StreamRadarSections(const CVector &posn) +{ + StreamRadarSections(floorf((2000.0f + posn.x) / 500.0f), ceilf(7.0f - (2000.0f + posn.y) / 500.0f)); +} + +void CRadar::StreamRadarSections(int32 x, int32 y) +{ + for (int i = 0; i < RADAR_NUM_TILES; ++i) { + for (int j = 0; j < RADAR_NUM_TILES; ++j) { + if ((i >= x - 1 && i <= x + 1) && (j >= y - 1 && j <= y + 1)) + RequestMapSection(i, j); + else + RemoveMapSection(i, j); + }; + }; +} + +void CRadar::TransformRealWorldToTexCoordSpace(CVector2D &out, const CVector2D &in, int32 x, int32 y) +{ + out.x = in.x - (x * RADAR_TILE_SIZE + WORLD_MIN_X); + out.y = -(in.y - ((RADAR_NUM_TILES - y) * RADAR_TILE_SIZE + WORLD_MIN_Y)); + out.x /= RADAR_TILE_SIZE; + out.y /= RADAR_TILE_SIZE; +} + +void CRadar::TransformRadarPointToRealWorldSpace(CVector2D &out, const CVector2D &in) +{ + float s, c; +#if 1 + s = -cachedSin; + c = cachedCos; +#else + // Original code + + s = -Sin(TheCamera.GetForward().Heading()); + c = Cos(TheCamera.GetForward().Heading()); + + if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED) { + s = 0.0f; + c = 1.0f; + } + else if (TheCamera.GetLookDirection() != LOOKING_FORWARD) { + CVector forward; + + if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON) { + forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetForward(); + forward.Normalise(); // a bit useless... + } + else + forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetPosition() - TheCamera.Cams[TheCamera.ActiveCam].SourceBeforeLookBehind; + + s = -Sin(forward.Heading()); + c = Cos(forward.Heading()); + } +#endif + + out.x = s * in.y + c * in.x; + out.y = c * in.y - s * in.x; + + out = out * m_radarRange + vec2DRadarOrigin; +} + +// Radar space goes from -1.0 to 1.0 in x and y, top right is (1.0, 1.0) +void CRadar::TransformRadarPointToScreenSpace(CVector2D &out, const CVector2D &in) +{ +#ifdef MENU_MAP + if (CMenuManager::bMenuMapActive) { + // fMapSize is actually half map size. Radar range is 1000, so if x is -2000, in.x + 2.0f is 0. + out.x = (CMenuManager::fMapCenterX - CMenuManager::fMapSize) + (in.x + 2.0f) * CMenuManager::fMapSize * 2.0f / 4.0f; + out.y = (CMenuManager::fMapCenterY - CMenuManager::fMapSize) + (2.0f - in.y) * CMenuManager::fMapSize * 2.0f / 4.0f; + } else +#endif + { +#ifdef FIX_BUGS + out.x = (in.x + 1.0f) * 0.5f * SCREEN_SCALE_X(RADAR_WIDTH) + SCREEN_SCALE_X(RADAR_LEFT); +#else + out.x = (in.x + 1.0f) * 0.5f * SCREEN_SCALE_X(RADAR_WIDTH) + RADAR_LEFT; +#endif + out.y = (1.0f - in.y) * 0.5f * SCREEN_SCALE_Y(RADAR_HEIGHT) + SCREEN_SCALE_FROM_BOTTOM(RADAR_BOTTOM + RADAR_HEIGHT); + } +} + +void CRadar::TransformRealWorldPointToRadarSpace(CVector2D &out, const CVector2D &in) +{ + float s, c; +#if 1 + s = cachedSin; + c = cachedCos; +#else + // Original code + + float s, c; + if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED) { + s = 0.0f; + c = 1.0f; + } + else if (TheCamera.GetLookDirection() == LOOKING_FORWARD) { + s = Sin(TheCamera.GetForward().Heading()); + c = Cos(TheCamera.GetForward().Heading()); + } + else { + CVector forward; + + if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON) { + forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetForward(); + forward.Normalise(); // a bit useless... + } + else + forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetPosition() - TheCamera.Cams[TheCamera.ActiveCam].SourceBeforeLookBehind; + + s = Sin(forward.Heading()); + c = Cos(forward.Heading()); + } +#endif + + float x = (in.x - vec2DRadarOrigin.x) * (1.0f / m_radarRange); + float y = (in.y - vec2DRadarOrigin.y) * (1.0f / m_radarRange); + + out.x = s * y + c * x; + out.y = c * y - s * x; +} + +// Transform from section indices to world coordinates +void CRadar::GetTextureCorners(int32 x, int32 y, CVector2D *out) +{ + x = x - RADAR_NUM_TILES/2; + y = -(y - RADAR_NUM_TILES/2); + + // bottom left + out[0].x = RADAR_TILE_SIZE * (x); + out[0].y = RADAR_TILE_SIZE * (y - 1); + + // bottom right + out[1].x = RADAR_TILE_SIZE * (x + 1); + out[1].y = RADAR_TILE_SIZE * (y - 1); + + // top right + out[2].x = RADAR_TILE_SIZE * (x + 1); + out[2].y = RADAR_TILE_SIZE * (y); + + // top left + out[3].x = RADAR_TILE_SIZE * (x); + out[3].y = RADAR_TILE_SIZE * (y); +} + +void CRadar::ClipRadarTileCoords(int32 &x, int32 &y) +{ + if (x < 0) + x = 0; + if (x > RADAR_NUM_TILES-1) + x = RADAR_NUM_TILES-1; + if (y < 0) + y = 0; + if (y > RADAR_NUM_TILES-1) + y = RADAR_NUM_TILES-1; +} + + +bool CRadar::IsPointInsideRadar(const CVector2D &point) +{ + if (point.x < -1.0f || point.x > 1.0f) return false; + if (point.y < -1.0f || point.y > 1.0f) return false; + return true; +} + +// clip line p1,p2 against (-1.0, 1.0) in x and y, set out to clipped point closest to p1 +int CRadar::LineRadarBoxCollision(CVector2D &out, const CVector2D &p1, const CVector2D &p2) +{ + float d1, d2; + float t; + float x, y; + float shortest = 1.0f; + int edge = -1; + + // clip against left edge, x = -1.0 + d1 = -1.0f - p1.x; + d2 = -1.0f - p2.x; + if (d1 * d2 < 0.0f) { + // they are on opposite sides, get point of intersection + t = d1 / (d1 - d2); + y = (p2.y - p1.y)*t + p1.y; + if (y >= -1.0f && y <= 1.0f && t <= shortest) { + out.x = -1.0f; + out.y = y; + edge = 3; + shortest = t; + } + } + + // clip against right edge, x = 1.0 + d1 = p1.x - 1.0f; + d2 = p2.x - 1.0f; + if (d1 * d2 < 0.0f) { + // they are on opposite sides, get point of intersection + t = d1 / (d1 - d2); + y = (p2.y - p1.y)*t + p1.y; + if (y >= -1.0f && y <= 1.0f && t <= shortest) { + out.x = 1.0f; + out.y = y; + edge = 1; + shortest = t; + } + } + + // clip against top edge, y = -1.0 + d1 = -1.0f - p1.y; + d2 = -1.0f - p2.y; + if (d1 * d2 < 0.0f) { + // they are on opposite sides, get point of intersection + t = d1 / (d1 - d2); + x = (p2.x - p1.x)*t + p1.x; + if (x >= -1.0f && x <= 1.0f && t <= shortest) { + out.y = -1.0f; + out.x = x; + edge = 0; + shortest = t; + } + } + + // clip against bottom edge, y = 1.0 + d1 = p1.y - 1.0f; + d2 = p2.y - 1.0f; + if (d1 * d2 < 0.0f) { + // they are on opposite sides, get point of intersection + t = d1 / (d1 - d2); + x = (p2.x - p1.x)*t + p1.x; + if (x >= -1.0f && x <= 1.0f && t <= shortest) { + out.y = 1.0f; + out.x = x; + edge = 2; + shortest = t; + } + } + + return edge; +} + +void +CRadar::CalculateCachedSinCos() +{ + if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED +#ifdef MENU_MAP + || CMenuManager::bMenuMapActive +#endif + ) { + cachedSin = 0.0f; + cachedCos = 1.0f; + } else if (TheCamera.GetLookDirection() == LOOKING_FORWARD) { + cachedSin = Sin(TheCamera.GetForward().Heading()); + cachedCos = Cos(TheCamera.GetForward().Heading()); + } else { + CVector forward; + + if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON) { + forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetForward(); + forward.Normalise(); // a bit useless... + } + else + forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetPosition() - TheCamera.Cams[TheCamera.ActiveCam].SourceBeforeLookBehind; + + cachedSin = Sin(forward.Heading()); + cachedCos = Cos(forward.Heading()); + } +} + +#ifdef MENU_MAP +void +CRadar::InitFrontEndMap() +{ + CalculateCachedSinCos(); + vec2DRadarOrigin.x = 0.0f; + vec2DRadarOrigin.y = 0.0f; + m_radarRange = 1000.0f; // doesn't mean anything, just affects the calculation in TransformRadarPointToScreenSpace + for (int i = 0; i < NUM_MAP_LEGENDS; i++) { + MapLegendList[i] = RADAR_SPRITE_NONE; + } + MapLegendCounter = 0; + ArrowBlipColour1 = CRGBA(0, 0, 0, 0); + ArrowBlipColour2 = CRGBA(0, 0, 0, 0); +} + +void +CRadar::DrawYouAreHereSprite(float x, float y) +{ + static uint32 lastChange = 0; + static bool show = true; + + if (show) { + if (CTimer::GetTimeInMillisecondsPauseMode() - lastChange > 500) { + lastChange = CTimer::GetTimeInMillisecondsPauseMode(); + show = !show; + } + } else { + if (CTimer::GetTimeInMillisecondsPauseMode() - lastChange > 200) { + lastChange = CTimer::GetTimeInMillisecondsPauseMode(); + show = !show; + } + } + + if (show) { + float left = x - SCREEN_SCALE_X(12.0f); + float top = y - SCREEN_SCALE_Y(2.0f); + float right = SCREEN_SCALE_X(12.0) + x; + float bottom = y - SCREEN_SCALE_Y(26.0f); + CentreSprite.Draw(CRect(left, top, right, bottom), CRGBA(255, 217, 106, 255)); + } + MapLegendList[MapLegendCounter++] = RADAR_SPRITE_CENTRE; +} + +void +CRadar::ToggleTargetMarker(float x, float y) +{ + if (TargetMarkerId == -1) { + int nextBlip; + for (nextBlip = 0; nextBlip < NUMRADARBLIPS; nextBlip++) { + if (!ms_RadarTrace[nextBlip].m_bInUse) + break; + } + ms_RadarTrace[nextBlip].m_eBlipType = BLIP_COORD; + ms_RadarTrace[nextBlip].m_nColor = 0x333333FF; + ms_RadarTrace[nextBlip].m_bDim = 1; + ms_RadarTrace[nextBlip].m_bInUse = 1; + ms_RadarTrace[nextBlip].m_Radius = 1.0f; + CVector pos(x, y, CWorld::FindGroundZForCoord(x,y)); + ms_RadarTrace[nextBlip].m_vec2DPos = pos; + ms_RadarTrace[nextBlip].m_vecPos = pos; + ms_RadarTrace[nextBlip].m_nEntityHandle = 0; + ms_RadarTrace[nextBlip].m_wScale = 5; + ms_RadarTrace[nextBlip].m_eBlipDisplay = BLIP_DISPLAY_BLIP_ONLY; + ms_RadarTrace[nextBlip].m_eRadarSprite = RADAR_SPRITE_NONE; + TargetMarkerId = CRadar::GetNewUniqueBlipIndex(nextBlip); + } else { + ClearBlip(TargetMarkerId); + TargetMarkerId = -1; + } +} +#endif + +STARTPATCHES + InjectHook(0x4A3EF0, CRadar::Initialise, PATCH_JUMP); + InjectHook(0x4A3F60, CRadar::Shutdown, PATCH_JUMP); + InjectHook(0x4A4030, CRadar::LoadTextures, PATCH_JUMP); + InjectHook(0x4A4180, CRadar::GetNewUniqueBlipIndex, PATCH_JUMP); + InjectHook(0x4A41C0, CRadar::GetActualBlipArrayIndex, PATCH_JUMP); + InjectHook(0x4A4200, CRadar::DrawMap, PATCH_JUMP); + InjectHook(0x4A42F0, CRadar::DrawBlips, PATCH_JUMP); + InjectHook(0x4A4C70, CRadar::Draw3dMarkers, PATCH_JUMP); + InjectHook(0x4A4F30, CRadar::LimitRadarPoint, PATCH_JUMP); + InjectHook(0x4A4F90, CRadar::CalculateBlipAlpha, PATCH_JUMP); + InjectHook(0x4A5040, CRadar::TransformRadarPointToScreenSpace, PATCH_JUMP); + InjectHook(0x4A50D0, CRadar::TransformRealWorldPointToRadarSpace, PATCH_JUMP); + InjectHook(0x4A5300, CRadar::TransformRadarPointToRealWorldSpace, PATCH_JUMP); + InjectHook(0x4A5530, CRadar::TransformRealWorldToTexCoordSpace, PATCH_JUMP); + InjectHook(0x4A5590, CRadar::SetCoordBlip, PATCH_JUMP); + InjectHook(0x4A5640, CRadar::SetEntityBlip, PATCH_JUMP); + InjectHook(0x4A56C0, CRadar::ClearBlipForEntity, PATCH_JUMP); + InjectHook(0x4A5720, CRadar::ClearBlip, PATCH_JUMP); + InjectHook(0x4A5770, CRadar::ChangeBlipColour, PATCH_JUMP); + InjectHook(0x4A57A0, CRadar::ChangeBlipBrightness, PATCH_JUMP); + InjectHook(0x4A57E0, CRadar::ChangeBlipScale, PATCH_JUMP); + InjectHook(0x4A5810, CRadar::ChangeBlipDisplay, PATCH_JUMP); + InjectHook(0x4A5840, CRadar::SetBlipSprite, PATCH_JUMP); + InjectHook(0x4A5870, CRadar::ShowRadarTrace, PATCH_JUMP); + InjectHook(0x4A59C0, CRadar::ShowRadarMarker, PATCH_JUMP); + InjectHook(0x4A5BB0, CRadar::GetRadarTraceColour, PATCH_JUMP); + InjectHook(0x4A5C60, CRadar::SetRadarMarkerState, PATCH_JUMP); + InjectHook(0x4A5D10, CRadar::DrawRotatingRadarSprite, PATCH_JUMP); + InjectHook(0x4A5EF0, CRadar::DrawRadarSprite, PATCH_JUMP); + InjectHook(0x4A60E0, CRadar::RemoveRadarSections, PATCH_JUMP); + InjectHook(0x4A6100, (void (*)(int32, int32))&CRadar::StreamRadarSections, PATCH_JUMP); + InjectHook(0x4A64A0, CRadar::ClipRadarPoly, PATCH_JUMP); + InjectHook(0x4A67E0, CRadar::DrawRadarSection, PATCH_JUMP); + InjectHook(0x4A69C0, CRadar::DrawRadarMask, PATCH_JUMP); + InjectHook(0x4A6B60, (void (*)(const CVector&))&CRadar::StreamRadarSections, PATCH_JUMP); + InjectHook(0x4A6C20, CRadar::DrawRadarMap, PATCH_JUMP); + InjectHook(0x4A6E30, CRadar::SaveAllRadarBlips, PATCH_JUMP); + InjectHook(0x4A6F30, CRadar::LoadAllRadarBlips, PATCH_JUMP); + + InjectHook(0x4A61C0, CRadar::GetTextureCorners, PATCH_JUMP); + InjectHook(0x4A6160, CRadar::IsPointInsideRadar, PATCH_JUMP); + InjectHook(0x4A6250, CRadar::LineRadarBoxCollision, PATCH_JUMP); +ENDPATCHES diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp index 7a050818..07d70394 100644 --- a/src/entities/Entity.cpp +++ b/src/entities/Entity.cpp @@ -275,9 +275,9 @@ CEntity::CreateRwObject(void) if(IsBuilding()) gBuildings++; if(RwObjectGetType(m_rwObject) == rpATOMIC) - m_matrix.AttachRW(RwFrameGetMatrix(RpAtomicGetFrame(m_rwObject)), false); + m_matrix.AttachRW(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic*)m_rwObject)), false); else if(RwObjectGetType(m_rwObject) == rpCLUMP) - m_matrix.AttachRW(RwFrameGetMatrix(RpClumpGetFrame(m_rwObject)), false); + m_matrix.AttachRW(RwFrameGetMatrix(RpClumpGetFrame((RpClump*)m_rwObject)), false); mi->AddRef(); } } @@ -290,7 +290,7 @@ CEntity::DeleteRwObject(void) m_matrix.Detach(); if(m_rwObject){ if(RwObjectGetType(m_rwObject) == rpATOMIC){ - f = RpAtomicGetFrame(m_rwObject); + f = RpAtomicGetFrame((RpAtomic*)m_rwObject); RpAtomicDestroy((RpAtomic*)m_rwObject); RwFrameDestroy(f); }else if(RwObjectGetType(m_rwObject) == rpCLUMP) @@ -307,9 +307,9 @@ CEntity::UpdateRwFrame(void) { if(m_rwObject){ if(RwObjectGetType(m_rwObject) == rpATOMIC) - RwFrameUpdateObjects(RpAtomicGetFrame(m_rwObject)); + RwFrameUpdateObjects(RpAtomicGetFrame((RpAtomic*)m_rwObject)); else if(RwObjectGetType(m_rwObject) == rpCLUMP) - RwFrameUpdateObjects(RpClumpGetFrame(m_rwObject)); + RwFrameUpdateObjects(RpClumpGetFrame((RpClump*)m_rwObject)); } } @@ -482,9 +482,9 @@ CEntity::AttachToRwObject(RwObject *obj) m_rwObject = obj; if(m_rwObject){ if(RwObjectGetType(m_rwObject) == rpATOMIC) - m_matrix.Attach(RwFrameGetMatrix(RpAtomicGetFrame(m_rwObject)), false); + m_matrix.Attach(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic*)m_rwObject)), false); else if(RwObjectGetType(m_rwObject) == rpCLUMP) - m_matrix.Attach(RwFrameGetMatrix(RpClumpGetFrame(m_rwObject)), false); + m_matrix.Attach(RwFrameGetMatrix(RpClumpGetFrame((RpClump*)m_rwObject)), false); CModelInfo::GetModelInfo(m_modelIndex)->AddRef(); } } diff --git a/src/modelinfo/PedModelInfo.cpp b/src/modelinfo/PedModelInfo.cpp index 7b087fbd..015c6949 100644 --- a/src/modelinfo/PedModelInfo.cpp +++ b/src/modelinfo/PedModelInfo.cpp @@ -216,7 +216,7 @@ CPedModelInfo::AnimatePedColModel(CColModel* colmodel, RwFrame* frame) RwMatrixCopy(mat, RwFrameGetMatrix(f)); for (f = RwFrameGetParent(f); f; f = RwFrameGetParent(f)) { - RwMatrixTransform(mat, &f->modelling, rwCOMBINEPOSTCONCAT); + RwMatrixTransform(mat, RwFrameGetMatrix(f), rwCOMBINEPOSTCONCAT); if (RwFrameGetParent(f) == frame) break; } diff --git a/src/modelinfo/VehicleModelInfo.cpp b/src/modelinfo/VehicleModelInfo.cpp index 42ad635b..432a9ea2 100644 --- a/src/modelinfo/VehicleModelInfo.cpp +++ b/src/modelinfo/VehicleModelInfo.cpp @@ -707,7 +707,7 @@ RpMaterial* CVehicleModelInfo::GetEditableMaterialListCB(RpMaterial *material, void *data) { static RwRGBA white = { 255, 255, 255, 255 }; - RwRGBA *col; + const RwRGBA *col; editableMatCBData *cbdata; cbdata = (editableMatCBData*)data; @@ -758,8 +758,8 @@ CVehicleModelInfo::SetVehicleColour(uint8 c1, uint8 c2) col = ms_vehicleColourTable[c1]; coltex = ms_colourTextureTable[c1]; for(matp = m_materials1; *matp; matp++){ - if(RpMaterialGetTexture(*matp) && RpMaterialGetTexture(*matp)->name[0] != '@'){ - colp = RpMaterialGetColor(*matp); + if(RpMaterialGetTexture(*matp) && RwTextureGetName(RpMaterialGetTexture(*matp))[0] != '@'){ + colp = (RwRGBA*)RpMaterialGetColor(*matp); // get rid of const colp->red = col.red; colp->green = col.green; colp->blue = col.blue; @@ -773,8 +773,8 @@ CVehicleModelInfo::SetVehicleColour(uint8 c1, uint8 c2) col = ms_vehicleColourTable[c2]; coltex = ms_colourTextureTable[c2]; for(matp = m_materials2; *matp; matp++){ - if(RpMaterialGetTexture(*matp) && RpMaterialGetTexture(*matp)->name[0] != '@'){ - colp = RpMaterialGetColor(*matp); + if(RpMaterialGetTexture(*matp) && RwTextureGetName(RpMaterialGetTexture(*matp))[0] != '@'){ + colp = (RwRGBA*)RpMaterialGetColor(*matp); // get rid of const colp->red = col.red; colp->green = col.green; colp->blue = col.blue; @@ -861,7 +861,7 @@ CreateCarColourTexture(uint8 r, uint8 g, uint8 b) RwImageDestroy(img); RwFree(pixels); tex = RwTextureCreate(ras); - tex->name[0] = '@'; + RwTextureGetName(tex)[0] = '@'; return tex; } @@ -1058,7 +1058,7 @@ CVehicleModelInfo::LoadEnvironmentMaps(void) } if(gpWhiteTexture == nil){ gpWhiteTexture = RwTextureRead("white", nil); - gpWhiteTexture->name[0] = '@'; + RwTextureGetName(gpWhiteTexture)[0] = '@'; RwTextureSetFilterMode(gpWhiteTexture, rwFILTERLINEAR); } CTxdStore::PopCurrentTxd(); diff --git a/src/objects/CutsceneHead.cpp b/src/objects/CutsceneHead.cpp index 8c417973..a7722b8a 100644 --- a/src/objects/CutsceneHead.cpp +++ b/src/objects/CutsceneHead.cpp @@ -20,7 +20,7 @@ CCutsceneHead::CCutsceneHead(CObject *obj) m_pHeadNode = RpAnimBlendClumpFindFrame((RpClump*)obj->m_rwObject, "Shead")->frame; atm = (RpAtomic*)GetFirstObject(m_pHeadNode); if(atm){ - assert(RwObjectGetType(atm) == rpATOMIC); + assert(RwObjectGetType((RwObject*)atm) == rpATOMIC); RpAtomicSetFlags(atm, RpAtomicGetFlags(atm) & ~rpATOMICRENDER); } } diff --git a/src/objects/ParticleObject.cpp b/src/objects/ParticleObject.cpp index 881510e8..9f7bcda5 100644 --- a/src/objects/ParticleObject.cpp +++ b/src/objects/ParticleObject.cpp @@ -154,7 +154,7 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe pobj->m_nRemoveTimer = 0; if ( color.alpha != 0 ) - RwRGBAAssign(&pobj->m_Color, &color); + pobj->m_Color, color; else pobj->m_Color.alpha = 0; diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 54816b1c..2cd942f9 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -676,7 +676,7 @@ RemoveAllModelCB(RwObject *object, void *data) { RpAtomic *atomic = (RpAtomic*)object; if (CVisibilityPlugins::GetAtomicModelInfo(atomic)) { - RpClumpRemoveAtomic(atomic->clump, atomic); + RpClumpRemoveAtomic(RpAtomicGetClump(atomic), atomic); RpAtomicDestroy(atomic); } return object; @@ -902,7 +902,7 @@ static RwObject* SetPedAtomicVisibilityCB(RwObject* object, void* data) { if (data == nil) - RpAtomicSetFlags(object, 0); + RpAtomicSetFlags((RpAtomic*)object, 0); return object; } diff --git a/src/peds/PedIK.cpp b/src/peds/PedIK.cpp index cc4b0dd0..8e450ee6 100644 --- a/src/peds/PedIK.cpp +++ b/src/peds/PedIK.cpp @@ -340,7 +340,7 @@ CPedIK::RestoreLookAt(void) } void -CPedIK::ExtractYawAndPitchWorld(RwMatrixTag *mat, float *yaw, float *pitch) +CPedIK::ExtractYawAndPitchWorld(RwMatrix *mat, float *yaw, float *pitch) { float f = clamp(DotProduct(mat->up, CVector(0.0f, 1.0f, 0.0f)), -1.0f, 1.0f); *yaw = Acos(f); @@ -352,7 +352,7 @@ CPedIK::ExtractYawAndPitchWorld(RwMatrixTag *mat, float *yaw, float *pitch) } void -CPedIK::ExtractYawAndPitchLocal(RwMatrixTag *mat, float *yaw, float *pitch) +CPedIK::ExtractYawAndPitchLocal(RwMatrix *mat, float *yaw, float *pitch) { float f = clamp(DotProduct(mat->at, CVector(0.0f, 0.0f, 1.0f)), -1.0f, 1.0f); *yaw = Acos(f); diff --git a/src/peds/PedIK.h b/src/peds/PedIK.h index df9017f3..7b82d1ac 100644 --- a/src/peds/PedIK.h +++ b/src/peds/PedIK.h @@ -54,8 +54,8 @@ public: void GetComponentPosition(RwV3d *pos, uint32 node); static RwMatrix *GetWorldMatrix(RwFrame *source, RwMatrix *destination); void RotateTorso(AnimBlendFrameData* animBlend, LimbOrientation* limb, bool changeRoll); - void ExtractYawAndPitchLocal(RwMatrixTag *mat, float *yaw, float *pitch); - void ExtractYawAndPitchWorld(RwMatrixTag *mat, float *yaw, float *pitch); + void ExtractYawAndPitchLocal(RwMatrix *mat, float *yaw, float *pitch); + void ExtractYawAndPitchWorld(RwMatrix *mat, float *yaw, float *pitch); LimbMoveStatus MoveLimb(LimbOrientation &limb, float approxPhi, float approxTheta, LimbMovementInfo &moveInfo); bool RestoreGunPosn(void); bool LookInDirection(float phi, float theta); diff --git a/src/render/Clouds.cpp b/src/render/Clouds.cpp index 2884894c..39866294 100644 --- a/src/render/Clouds.cpp +++ b/src/render/Clouds.cpp @@ -87,7 +87,7 @@ CClouds::Render(void) RwV3d pos = { 0.0f, -100.0f, 15.0f }; RwV3dAdd(&worldpos, &campos, &pos); if(CSprite::CalcScreenCoors(worldpos, &screenpos, &szx, &szy, false)){ - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, gpCoronaTexture[2]->raster); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpCoronaTexture[2])); if(CCoronas::bSmallMoon){ szx *= 4.0f; szy *= 4.0f; @@ -116,7 +116,7 @@ CClouds::Render(void) static float StarCoorsY[9] = { 0.0f, 0.45f, 0.9f, 1.0f, 0.85f, 0.52f, 0.48f, 0.35f, 0.2f }; static float StarSizes[9] = { 1.0f, 1.4f, 0.9f, 1.0f, 0.6f, 1.5f, 1.3f, 1.0f, 0.8f }; int brightness = (1.0f - coverage) * starintens; - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, gpCoronaTexture[0]->raster); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpCoronaTexture[0])); for(i = 0; i < 11; i++){ RwV3d pos = { 100.0f, 0.0f, 10.0f }; if(i >= 9) pos.x = -pos.x; @@ -132,7 +132,7 @@ CClouds::Render(void) CSprite::FlushSpriteBuffer(); // * - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, gpCoronaTexture[0]->raster); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpCoronaTexture[0])); RwV3d pos = { 100.0f, 0.0f, 10.0f }; RwV3dAdd(&worldpos, &campos, &pos); worldpos.y -= 90.0f; @@ -156,7 +156,7 @@ CClouds::Render(void) int b = CTimeCycle::GetLowCloudsBlue() * lowcloudintensity; for(int cloudtype = 0; cloudtype < 3; cloudtype++){ for(i = cloudtype; i < 12; i += 3){ - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, gpCloudTex[cloudtype]->raster); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpCloudTex[cloudtype])); RwV3d pos = { 800.0f*LowCloudsX[i], 800.0f*LowCloudsY[i], 60.0f*LowCloudsZ[i] }; worldpos.x = campos.x + pos.x; worldpos.y = campos.y + pos.y; @@ -202,7 +202,7 @@ CClouds::Render(void) RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, gpCloudTex[4]->raster); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpCloudTex[4])); for(i = 0; i < 37; i++){ RwV3d pos = { 2.0f*CoorsOffsetX[i], 2.0f*CoorsOffsetY[i], 40.0f*CoorsOffsetZ[i] + 40.0f }; worldpos.x = pos.x*rot_cos + pos.y*rot_sin + campos.x; @@ -244,7 +244,7 @@ CClouds::Render(void) // Highlights RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDONE); RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDONE); - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, gpCloudTex[3]->raster); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpCloudTex[3])); for(i = 0; i < 37; i++){ RwV3d pos = { 2.0f*CoorsOffsetX[i], 2.0f*CoorsOffsetY[i], 40.0f*CoorsOffsetZ[i] + 40.0f }; @@ -269,7 +269,7 @@ CClouds::Render(void) static uint8 BowRed[6] = { 30, 30, 30, 10, 0, 15 }; static uint8 BowGreen[6] = { 0, 15, 30, 30, 0, 0 }; static uint8 BowBlue[6] = { 0, 0, 0, 10, 30, 30 }; - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, gpCoronaTexture[0]->raster); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpCoronaTexture[0])); for(i = 0; i < 6; i++){ RwV3d pos = { i*1.5f, 100.0f, 5.0f }; RwV3dAdd(&worldpos, &campos, &pos); diff --git a/src/render/Fluff.cpp b/src/render/Fluff.cpp index 8d7fad92..e2899532 100644 --- a/src/render/Fluff.cpp +++ b/src/render/Fluff.cpp @@ -755,14 +755,14 @@ void CTowerClock::Render() &TempV[1], m_Position.x + Sin(angleMinute) * m_fScale * m_Size.x, m_Position.y + Sin(angleMinute) * m_fScale * m_Size.y, - m_Position.z + Cos(angleMinute) * m_fScale; + m_Position.z + Cos(angleMinute) * m_fScale ); RwIm3DVertexSetPos(&TempV[2], m_Position.x, m_Position.y, m_Position.z); RwIm3DVertexSetPos( &TempV[3], m_Position.x + Sin(angleHour) * 0.75f * m_fScale * m_Size.x, m_Position.y + Sin(angleHour) * 0.75f * m_fScale * m_Size.y, - m_Position.z + Cos(angleHour) * 0.75f * m_fScale; + m_Position.z + Cos(angleHour) * 0.75f * m_fScale ); LittleTest(); diff --git a/src/render/MBlur.cpp b/src/render/MBlur.cpp index 1cf27ee0..d28671fa 100644 --- a/src/render/MBlur.cpp +++ b/src/render/MBlur.cpp @@ -4,12 +4,13 @@ #include "Camera.h" #include "MBlur.h" +// Originally taken from RW example 'mblur' + RwRaster *&CMBlur::pFrontBuffer = *(RwRaster**)0x8E2C48; bool &CMBlur::ms_bJustInitialised = *(bool*)0x95CDAB; bool &CMBlur::BlurOn = *(bool*)0x95CDAD; static RwIm2DVertex Vertex[4]; -//static RwIm2DVertex *Vertex = (RwIm2DVertex*)0x62F780; static RwImVertexIndex Index[6] = { 0, 1, 2, 0, 2, 3 }; void diff --git a/src/render/SpecialFX.cpp b/src/render/SpecialFX.cpp index 0d856d9c..9189a7c2 100644 --- a/src/render/SpecialFX.cpp +++ b/src/render/SpecialFX.cpp @@ -22,10 +22,10 @@ #include "Shadows.h" #include "main.h" -RxObjSpace3DVertex StreakVertices[4]; +RwIm3DVertex StreakVertices[4]; RwImVertexIndex StreakIndexList[12]; -RxObjSpace3DVertex TraceVertices[6]; +RwIm3DVertex TraceVertices[6]; RwImVertexIndex TraceIndexList[12]; @@ -34,60 +34,60 @@ CSpecialFX::Init(void) { CBulletTraces::Init(); - RwIm3DVertexSetU(&StreakVertices[0], 0.0f); - RwIm3DVertexSetV(&StreakVertices[0], 0.0f); - RwIm3DVertexSetU(&StreakVertices[1], 1.0f); - RwIm3DVertexSetV(&StreakVertices[1], 0.0f); - RwIm3DVertexSetU(&StreakVertices[2], 0.0f); - RwIm3DVertexSetV(&StreakVertices[2], 0.0f); - RwIm3DVertexSetU(&StreakVertices[3], 1.0f); - RwIm3DVertexSetV(&StreakVertices[3], 0.0f); - - StreakIndexList[0] = 0; - StreakIndexList[1] = 1; - StreakIndexList[2] = 2; - StreakIndexList[3] = 1; - StreakIndexList[4] = 3; - StreakIndexList[5] = 2; - StreakIndexList[6] = 0; - StreakIndexList[7] = 2; - StreakIndexList[8] = 1; - StreakIndexList[9] = 1; - StreakIndexList[10] = 2; - StreakIndexList[11] = 3; - - RwIm3DVertexSetRGBA(&TraceVertices[0], 20, 20, 20, 255); - RwIm3DVertexSetRGBA(&TraceVertices[1], 20, 20, 20, 255); - RwIm3DVertexSetRGBA(&TraceVertices[2], 70, 70, 70, 255); - RwIm3DVertexSetRGBA(&TraceVertices[3], 70, 70, 70, 255); - RwIm3DVertexSetRGBA(&TraceVertices[4], 10, 10, 10, 255); - RwIm3DVertexSetRGBA(&TraceVertices[5], 10, 10, 10, 255); - RwIm3DVertexSetU(&TraceVertices[0], 0.0); - RwIm3DVertexSetV(&TraceVertices[0], 0.0); - RwIm3DVertexSetU(&TraceVertices[1], 1.0); - RwIm3DVertexSetV(&TraceVertices[1], 0.0); - RwIm3DVertexSetU(&TraceVertices[2], 0.0); - RwIm3DVertexSetV(&TraceVertices[2], 0.5); - RwIm3DVertexSetU(&TraceVertices[3], 1.0); - RwIm3DVertexSetV(&TraceVertices[3], 0.5); - RwIm3DVertexSetU(&TraceVertices[4], 0.0); - RwIm3DVertexSetV(&TraceVertices[4], 1.0); - RwIm3DVertexSetU(&TraceVertices[5], 1.0); - RwIm3DVertexSetV(&TraceVertices[5], 1.0); + RwIm3DVertexSetU(&StreakVertices[0], 0.0f); + RwIm3DVertexSetV(&StreakVertices[0], 0.0f); + RwIm3DVertexSetU(&StreakVertices[1], 1.0f); + RwIm3DVertexSetV(&StreakVertices[1], 0.0f); + RwIm3DVertexSetU(&StreakVertices[2], 0.0f); + RwIm3DVertexSetV(&StreakVertices[2], 0.0f); + RwIm3DVertexSetU(&StreakVertices[3], 1.0f); + RwIm3DVertexSetV(&StreakVertices[3], 0.0f); + + StreakIndexList[0] = 0; + StreakIndexList[1] = 1; + StreakIndexList[2] = 2; + StreakIndexList[3] = 1; + StreakIndexList[4] = 3; + StreakIndexList[5] = 2; + StreakIndexList[6] = 0; + StreakIndexList[7] = 2; + StreakIndexList[8] = 1; + StreakIndexList[9] = 1; + StreakIndexList[10] = 2; + StreakIndexList[11] = 3; + + RwIm3DVertexSetRGBA(&TraceVertices[0], 20, 20, 20, 255); + RwIm3DVertexSetRGBA(&TraceVertices[1], 20, 20, 20, 255); + RwIm3DVertexSetRGBA(&TraceVertices[2], 70, 70, 70, 255); + RwIm3DVertexSetRGBA(&TraceVertices[3], 70, 70, 70, 255); + RwIm3DVertexSetRGBA(&TraceVertices[4], 10, 10, 10, 255); + RwIm3DVertexSetRGBA(&TraceVertices[5], 10, 10, 10, 255); + RwIm3DVertexSetU(&TraceVertices[0], 0.0); + RwIm3DVertexSetV(&TraceVertices[0], 0.0); + RwIm3DVertexSetU(&TraceVertices[1], 1.0); + RwIm3DVertexSetV(&TraceVertices[1], 0.0); + RwIm3DVertexSetU(&TraceVertices[2], 0.0); + RwIm3DVertexSetV(&TraceVertices[2], 0.5); + RwIm3DVertexSetU(&TraceVertices[3], 1.0); + RwIm3DVertexSetV(&TraceVertices[3], 0.5); + RwIm3DVertexSetU(&TraceVertices[4], 0.0); + RwIm3DVertexSetV(&TraceVertices[4], 1.0); + RwIm3DVertexSetU(&TraceVertices[5], 1.0); + RwIm3DVertexSetV(&TraceVertices[5], 1.0); + + TraceIndexList[0] = 0; + TraceIndexList[1] = 2; + TraceIndexList[2] = 1; + TraceIndexList[3] = 1; + TraceIndexList[4] = 2; + TraceIndexList[5] = 3; + TraceIndexList[6] = 2; + TraceIndexList[7] = 4; + TraceIndexList[8] = 3; + TraceIndexList[9] = 3; + TraceIndexList[10] = 4; + TraceIndexList[11] = 5; - TraceIndexList[0] = 0; - TraceIndexList[1] = 2; - TraceIndexList[2] = 1; - TraceIndexList[3] = 1; - TraceIndexList[4] = 2; - TraceIndexList[5] = 3; - TraceIndexList[6] = 2; - TraceIndexList[7] = 4; - TraceIndexList[8] = 3; - TraceIndexList[9] = 3; - TraceIndexList[10] = 4; - TraceIndexList[11] = 5; - CMotionBlurStreaks::Init(); CBrightLights::Init(); CShinyTexts::Init(); @@ -112,13 +112,13 @@ LookForBatCB(RwObject *object, void *data) void CSpecialFX::Update(void) { - CMotionBlurStreaks::Update(); - CBulletTraces::Update(); - - if(FindPlayerPed() && - FindPlayerPed()->GetWeapon()->m_eWeaponType == WEAPONTYPE_BASEBALLBAT && - FindPlayerPed()->GetWeapon()->m_eWeaponState == WEAPONSTATE_FIRING) - RwFrameForAllObjects(FindPlayerPed()->GetNodeFrame(PED_HANDR), LookForBatCB, CModelInfo::GetModelInfo(MI_BASEBALL_BAT)); + CMotionBlurStreaks::Update(); + CBulletTraces::Update(); + + if(FindPlayerPed() && + FindPlayerPed()->GetWeapon()->m_eWeaponType == WEAPONTYPE_BASEBALLBAT && + FindPlayerPed()->GetWeapon()->m_eWeaponState == WEAPONSTATE_FIRING) + RwFrameForAllObjects(FindPlayerPed()->GetNodeFrame(PED_HANDR), LookForBatCB, CModelInfo::GetModelInfo(MI_BASEBALL_BAT)); } void @@ -130,78 +130,78 @@ CSpecialFX::Shutdown(void) void CSpecialFX::Render(void) { - CMotionBlurStreaks::Render(); - CBulletTraces::Render(); - CBrightLights::Render(); - CShinyTexts::Render(); - CMoneyMessages::Render(); - C3dMarkers::Render(); + CMotionBlurStreaks::Render(); + CBulletTraces::Render(); + CBrightLights::Render(); + CShinyTexts::Render(); + CMoneyMessages::Render(); + C3dMarkers::Render(); } CRegisteredMotionBlurStreak CMotionBlurStreaks::aStreaks[NUMMBLURSTREAKS]; -void -CRegisteredMotionBlurStreak::Update(void) -{ - int i; - bool wasUpdated; - bool lastWasUpdated = false; - for(i = 2; i > 0; i--){ - m_pos1[i] = m_pos1[i-1]; - m_pos2[i] = m_pos2[i-1]; - m_isValid[i] = m_isValid[i-1]; - wasUpdated = true; - if(!lastWasUpdated && !m_isValid[i]) - wasUpdated = false; - lastWasUpdated = wasUpdated; - } - m_isValid[0] = false; - if(!wasUpdated) - m_id = 0; -} - -void -CRegisteredMotionBlurStreak::Render(void) -{ - int i; - int a1, a2; - for(i = 0; i < 2; i++) - if(m_isValid[i] && m_isValid[i+1]){ - a1 = (255/3)*(3-i)/3; - RwIm3DVertexSetRGBA(&StreakVertices[0], m_red, m_green, m_blue, a1); - RwIm3DVertexSetRGBA(&StreakVertices[1], m_red, m_green, m_blue, a1); - a2 = (255/3)*(3-(i+1))/3; - RwIm3DVertexSetRGBA(&StreakVertices[2], m_red, m_green, m_blue, a2); - RwIm3DVertexSetRGBA(&StreakVertices[3], m_red, m_green, m_blue, a2); - RwIm3DVertexSetPos(&StreakVertices[0], m_pos1[i].x, m_pos1[i].y, m_pos1[i].z); - RwIm3DVertexSetPos(&StreakVertices[1], m_pos2[i].x, m_pos2[i].y, m_pos2[i].z); - RwIm3DVertexSetPos(&StreakVertices[2], m_pos1[i+1].x, m_pos1[i+1].y, m_pos1[i+1].z); - RwIm3DVertexSetPos(&StreakVertices[3], m_pos2[i+1].x, m_pos2[i+1].y, m_pos2[i+1].z); +void +CRegisteredMotionBlurStreak::Update(void) +{ + int i; + bool wasUpdated; + bool lastWasUpdated = false; + for(i = 2; i > 0; i--){ + m_pos1[i] = m_pos1[i-1]; + m_pos2[i] = m_pos2[i-1]; + m_isValid[i] = m_isValid[i-1]; + wasUpdated = true; + if(!lastWasUpdated && !m_isValid[i]) + wasUpdated = false; + lastWasUpdated = wasUpdated; + } + m_isValid[0] = false; + if(!wasUpdated) + m_id = 0; +} + +void +CRegisteredMotionBlurStreak::Render(void) +{ + int i; + int a1, a2; + for(i = 0; i < 2; i++) + if(m_isValid[i] && m_isValid[i+1]){ + a1 = (255/3)*(3-i)/3; + RwIm3DVertexSetRGBA(&StreakVertices[0], m_red, m_green, m_blue, a1); + RwIm3DVertexSetRGBA(&StreakVertices[1], m_red, m_green, m_blue, a1); + a2 = (255/3)*(3-(i+1))/3; + RwIm3DVertexSetRGBA(&StreakVertices[2], m_red, m_green, m_blue, a2); + RwIm3DVertexSetRGBA(&StreakVertices[3], m_red, m_green, m_blue, a2); + RwIm3DVertexSetPos(&StreakVertices[0], m_pos1[i].x, m_pos1[i].y, m_pos1[i].z); + RwIm3DVertexSetPos(&StreakVertices[1], m_pos2[i].x, m_pos2[i].y, m_pos2[i].z); + RwIm3DVertexSetPos(&StreakVertices[2], m_pos1[i+1].x, m_pos1[i+1].y, m_pos1[i+1].z); + RwIm3DVertexSetPos(&StreakVertices[3], m_pos2[i+1].x, m_pos2[i+1].y, m_pos2[i+1].z); LittleTest(); if(RwIm3DTransform(StreakVertices, 4, nil, rwIM3D_VERTEXUV)){ RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, StreakIndexList, 12); RwIm3DEnd(); - } - } -} + } + } +} + +void +CMotionBlurStreaks::Init(void) +{ + int i; + for(i = 0; i < NUMMBLURSTREAKS; i++) + aStreaks[i].m_id = 0; +} + +void +CMotionBlurStreaks::Update(void) +{ + int i; + for(i = 0; i < NUMMBLURSTREAKS; i++) + if(aStreaks[i].m_id) + aStreaks[i].Update(); +} -void -CMotionBlurStreaks::Init(void) -{ - int i; - for(i = 0; i < NUMMBLURSTREAKS; i++) - aStreaks[i].m_id = 0; -} - -void -CMotionBlurStreaks::Update(void) -{ - int i; - for(i = 0; i < NUMMBLURSTREAKS; i++) - if(aStreaks[i].m_id) - aStreaks[i].Update(); -} - void CMotionBlurStreaks::RegisterStreak(uintptr id, uint8 r, uint8 g, uint8 b, CVector p1, CVector p2) { @@ -234,32 +234,32 @@ CMotionBlurStreaks::RegisterStreak(uintptr id, uint8 r, uint8 g, uint8 b, CVecto aStreaks[i].m_isValid[2] = false; } -void -CMotionBlurStreaks::Render(void) -{ +void +CMotionBlurStreaks::Render(void) +{ bool setRenderStates = false; int i; - for(i = 0; i < NUMMBLURSTREAKS; i++) - if(aStreaks[i].m_id){ - if(!setRenderStates){ - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); - RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void *)TRUE); + for(i = 0; i < NUMMBLURSTREAKS; i++) + if(aStreaks[i].m_id){ + if(!setRenderStates){ + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void *)TRUE); RwRenderStateSet(rwRENDERSTATEFOGCOLOR, (void*)RWRGBALONG(CTimeCycle::GetFogRed(), CTimeCycle::GetFogGreen(), CTimeCycle::GetFogBlue(), 255)); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); - RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, (void*)FALSE); - setRenderStates = true; - } - aStreaks[i].Render(); - } - if(setRenderStates){ - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void *)FALSE); - } -} + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, (void*)FALSE); + setRenderStates = true; + } + aStreaks[i].Render(); + } + if(setRenderStates){ + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void *)FALSE); + } +} CBulletTrace CBulletTraces::aTraces[NUMBULLETTRACES]; @@ -291,10 +291,10 @@ void CBulletTraces::Render(void) for (int i = 0; i < NUMBULLETTRACES; i++) { if (!aTraces[i].m_bInUse) continue; - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)0); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)2); - RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)2); - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, gpShadowExplosionTex->raster); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDONE); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDONE); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpShadowExplosionTex)); CVector inf = aTraces[i].m_vecCurrentPos; CVector sup = aTraces[i].m_vecTargetPos; CVector center = (inf + sup) / 2; @@ -316,9 +316,9 @@ void CBulletTraces::Render(void) RwIm3DEnd(); } } - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)1); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)5); - RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)6); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); } void CBulletTraces::Update(void) @@ -414,8 +414,7 @@ C3dMarker::Render() { if (m_pAtomic == nil) return; - RwRGBA *color = RpMaterialGetColor(m_pMaterial); - *color = m_Color; + RpMaterialSetColor(m_pMaterial, &m_Color); m_Matrix.UpdateRW(); @@ -643,13 +642,13 @@ C3dMarkers::Update() int CBrightLights::NumBrightLights; CBrightLight CBrightLights::aBrightLights[NUMBRIGHTLIGHTS]; - -void -CBrightLights::Init(void) -{ - NumBrightLights = 0; -} - + +void +CBrightLights::Init(void) +{ + NumBrightLights = 0; +} + void CBrightLights::RegisterOne(CVector pos, CVector up, CVector side, CVector front, uint8 type, uint8 red, uint8 green, uint8 blue) @@ -661,13 +660,13 @@ CBrightLights::RegisterOne(CVector pos, CVector up, CVector side, CVector front, if(aBrightLights[NumBrightLights].m_camDist > BRIGHTLIGHTS_MAX_DIST) return; - aBrightLights[NumBrightLights].m_pos = pos; - aBrightLights[NumBrightLights].m_up = up; - aBrightLights[NumBrightLights].m_side = side; - aBrightLights[NumBrightLights].m_front = front; - aBrightLights[NumBrightLights].m_type = type; - aBrightLights[NumBrightLights].m_red = red; - aBrightLights[NumBrightLights].m_green = green; + aBrightLights[NumBrightLights].m_pos = pos; + aBrightLights[NumBrightLights].m_up = up; + aBrightLights[NumBrightLights].m_side = side; + aBrightLights[NumBrightLights].m_front = front; + aBrightLights[NumBrightLights].m_type = type; + aBrightLights[NumBrightLights].m_red = red; + aBrightLights[NumBrightLights].m_green = green; aBrightLights[NumBrightLights].m_blue = blue; NumBrightLights++; @@ -696,22 +695,22 @@ static RwImVertexIndex CubeIndices[12*3] = { 6, 0, 4, 6, 2, 0, 6, 5, 7, 6, 4, 5 }; -void -CBrightLights::Render(void) -{ +void +CBrightLights::Render(void) +{ int i, j; CVector pos; - if(NumBrightLights == 0) - return; - - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); - RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, nil); - - for(i = 0; i < NumBrightLights; i++){ + if(NumBrightLights == 0) + return; + + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, nil); + + for(i = 0; i < NumBrightLights; i++){ if(TempBufferIndicesStored > TEMPBUFFERINDEXSIZE-40 || TempBufferVerticesStored > TEMPBUFFERVERTSIZE-40) RenderOutGeometryBuffer(); @@ -753,14 +752,14 @@ CBrightLights::Render(void) a = 255; else a = 255*(1.0f - (aBrightLights[i].m_camDist-BRIGHTLIGHTS_FADE_DIST)/(BRIGHTLIGHTS_MAX_DIST-BRIGHTLIGHTS_FADE_DIST)); - // fade car lights down to 31 as they come near - if(aBrightLights[i].m_type >= BRIGHTLIGHT_FRONT_LONG && aBrightLights[i].m_type <= BRIGHTLIGHT_REAR_TALL){ + // fade car lights down to 31 as they come near + if(aBrightLights[i].m_type >= BRIGHTLIGHT_FRONT_LONG && aBrightLights[i].m_type <= BRIGHTLIGHT_REAR_TALL){ if(aBrightLights[i].m_camDist < CARLIGHTS_FADE_DIST) a = 31; else if(aBrightLights[i].m_camDist < CARLIGHTS_MAX_DIST) a = 31 + (255-31)*((aBrightLights[i].m_camDist-CARLIGHTS_FADE_DIST)/(CARLIGHTS_MAX_DIST-CARLIGHTS_FADE_DIST)); - } - + } + switch(aBrightLights[i].m_type){ case BRIGHTLIGHT_TRAFFIC_GREEN: case BRIGHTLIGHT_TRAFFIC_YELLOW: @@ -793,7 +792,7 @@ CBrightLights::Render(void) TempBufferVerticesStored += 8; TempBufferIndicesStored += 12*3; break; - + case BRIGHTLIGHT_FRONT_SMALL: case BRIGHTLIGHT_REAR_SMALL: for(j = 0; j < 8; j++){ @@ -809,7 +808,7 @@ CBrightLights::Render(void) TempBufferVerticesStored += 8; TempBufferIndicesStored += 12*3; break; - + case BRIGHTLIGHT_FRONT_TALL: case BRIGHTLIGHT_REAR_TALL: for(j = 0; j < 8; j++){ @@ -840,17 +839,17 @@ CBrightLights::Render(void) TempBufferIndicesStored += 4*3; break; - } - } - - RenderOutGeometryBuffer(); - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); - NumBrightLights = 0; -} - -void -CBrightLights::RenderOutGeometryBuffer(void) -{ + } + } + + RenderOutGeometryBuffer(); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); + NumBrightLights = 0; +} + +void +CBrightLights::RenderOutGeometryBuffer(void) +{ if(TempBufferIndicesStored != 0){ LittleTest(); if(RwIm3DTransform(TempBufferRenderVertices, TempBufferVerticesStored, nil, rwIM3D_VERTEXUV)){ @@ -864,13 +863,13 @@ CBrightLights::RenderOutGeometryBuffer(void) int CShinyTexts::NumShinyTexts; CShinyText CShinyTexts::aShinyTexts[NUMSHINYTEXTS]; - -void -CShinyTexts::Init(void) -{ - NumShinyTexts = 0; -} - + +void +CShinyTexts::Init(void) +{ + NumShinyTexts = 0; +} + void CShinyTexts::RegisterOne(CVector p0, CVector p1, CVector p2, CVector p3, float u0, float v0, float u1, float v1, float u2, float v2, float u3, float v3, @@ -910,20 +909,20 @@ CShinyTexts::RegisterOne(CVector p0, CVector p1, CVector p2, CVector p3, NumShinyTexts++; } -void -CShinyTexts::Render(void) -{ - int i, ix, v; - RwTexture *lastTex = nil; - - if(NumShinyTexts == 0) - return; - - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDONE); - RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDONE); - +void +CShinyTexts::Render(void) +{ + int i, ix, v; + RwTexture *lastTex = nil; + + if(NumShinyTexts == 0) + return; + + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDONE); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDONE); + TempBufferVerticesStored = 0; TempBufferIndicesStored = 0; @@ -984,15 +983,15 @@ CShinyTexts::Render(void) RenderOutGeometryBuffer(); NumShinyTexts = 0; - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); -} - -void -CShinyTexts::RenderOutGeometryBuffer(void) -{ +} + +void +CShinyTexts::RenderOutGeometryBuffer(void) +{ if(TempBufferIndicesStored != 0){ LittleTest(); if(RwIm3DTransform(TempBufferRenderVertices, TempBufferVerticesStored, nil, rwIM3D_VERTEXUV)){ @@ -1002,8 +1001,8 @@ CShinyTexts::RenderOutGeometryBuffer(void) TempBufferVerticesStored = 0; TempBufferIndicesStored = 0; } -} - +} + #define MONEY_MESSAGE_LIFETIME_MS 2000 diff --git a/src/render/Sprite.cpp b/src/render/Sprite.cpp index 24577f41..fec50c7e 100644 --- a/src/render/Sprite.cpp +++ b/src/render/Sprite.cpp @@ -432,6 +432,7 @@ void CSprite::Set6Vertices2D(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, const CRGBA &c1, const CRGBA &c2, const CRGBA &c3) { float screenz, recipz; + float z = RwCameraGetNearClipPlane(Scene.camera); // not done by game screenz = m_f2DNearScreenZ; recipz = m_fRecipNearClipPlane; @@ -496,6 +497,7 @@ CSprite::Set6Vertices2D(RwIm2DVertex *verts, float x1, float y1, float x2, float const CRGBA &c0, const CRGBA &c1, const CRGBA &c2, const CRGBA &c3) { float screenz, recipz; + float z = RwCameraGetNearClipPlane(Scene.camera); // not done by game screenz = m_f2DNearScreenZ; recipz = m_fRecipNearClipPlane; diff --git a/src/render/Sprite2d.cpp b/src/render/Sprite2d.cpp index c4dbcdaa..3f21516a 100644 --- a/src/render/Sprite2d.cpp +++ b/src/render/Sprite2d.cpp @@ -267,6 +267,7 @@ CSprite2d::SetVertices(float x1, float y1, float x2, float y2, float x3, float y const CRGBA &c0, const CRGBA &c1, const CRGBA &c2, const CRGBA &c3) { float screenz, recipz; + float z = RwCameraGetNearClipPlane(Scene.camera); // not done by game screenz = RwIm2DGetNearScreenZ(); recipz = RecipNearClip; @@ -312,10 +313,11 @@ void CSprite2d::SetVertices(int n, float *positions, float *uvs, const CRGBA &col) { int i; - float screenz, recipz; + float screenz, recipz, z; screenz = RwIm2DGetNearScreenZ(); recipz = RecipNearClip; + z = RwCameraGetNearClipPlane(Scene.camera); // not done by game for(i = 0; i < n; i++){ @@ -334,10 +336,11 @@ void CSprite2d::SetMaskVertices(int n, float *positions) { int i; - float screenz, recipz; + float screenz, recipz, z; screenz = RwIm2DGetNearScreenZ(); recipz = RecipNearClip; + z = RwCameraGetNearClipPlane(Scene.camera); // not done by game for(i = 0; i < n; i++){ RwIm2DVertexSetScreenX(&maVertices[i], positions[i*2 + 0]); @@ -345,7 +348,7 @@ CSprite2d::SetMaskVertices(int n, float *positions) RwIm2DVertexSetScreenZ(&maVertices[i], screenz); RwIm2DVertexSetCameraZ(&maVertices[i], z); RwIm2DVertexSetRecipCameraZ(&maVertices[i], recipz); - RwIm2DVertexSetIntRGBA(&maVertices[i], 0, 0, 0, 0); + RwIm2DVertexSetIntRGBA(&maVertices[i], 255, 255, 255, 255); // 0, 0, 0, 0 on PC } } @@ -353,10 +356,11 @@ void CSprite2d::SetVertices(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, const CRGBA &c1, const CRGBA &c2, const CRGBA &c3, float u0, float v0, float u1, float v1, float u3, float v3, float u2, float v2) { - float screenz, recipz; + float screenz, recipz, z; screenz = RwIm2DGetNearScreenZ(); recipz = RecipNearClip; + z = RwCameraGetNearClipPlane(Scene.camera); // not done by game RwIm2DVertexSetScreenX(&verts[0], r.left); RwIm2DVertexSetScreenY(&verts[0], r.top); @@ -459,15 +463,15 @@ CSprite2d::DrawRectXLU(const CRect &r, const CRGBA &c0, const CRGBA &c1, const C void CSprite2d::Draw2DPolygon(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, const CRGBA &color) { - SetVertices(x1, y1, x2, y2, x3, y3, x4, y4, color, color, color, color); - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, 0); - RwRenderStateSet(rwRENDERSTATESHADEMODE, (void*)rwSHADEMODEFLAT); - RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)(color.a != 255)); - RwIm2DRenderPrimitive(rwPRIMTYPETRIFAN, CSprite2d::maVertices, 4); - RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE); - RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + SetVertices(x1, y1, x2, y2, x3, y3, x4, y4, color, color, color, color); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, 0); + RwRenderStateSet(rwRENDERSTATESHADEMODE, (void*)rwSHADEMODEFLAT); + RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)(color.a != 255)); + RwIm2DRenderPrimitive(rwPRIMTYPETRIFAN, CSprite2d::maVertices, 4); + RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); RwRenderStateSet(rwRENDERSTATESHADEMODE, (void*)rwSHADEMODEGOURAUD); } diff --git a/src/render/VisibilityPlugins.cpp b/src/render/VisibilityPlugins.cpp index 74cd2590..f8b1f6b2 100644 --- a/src/render/VisibilityPlugins.cpp +++ b/src/render/VisibilityPlugins.cpp @@ -117,7 +117,7 @@ CVisibilityPlugins::SetRenderWareCamera(RwCamera *camera) RpMaterial* SetAlphaCB(RpMaterial *material, void *data) { - material->color.alpha = (uint8)(uint32)data; + ((RwRGBA*)RpMaterialGetColor(material))->alpha = (uint8)(uint32)data; return material; } diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index 0c8f0dd4..1c0d673e 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -182,17 +182,17 @@ CAutomobile::CAutomobile(int32 id, uint8 CreatedBy) m_weaponDoorTimerRight = m_weaponDoorTimerLeft; if(GetModelIndex() == MI_DODO){ - RpAtomicSetFlags(GetFirstObject(m_aCarNodes[CAR_WHEEL_LF]), 0); + RpAtomicSetFlags((RpAtomic*)GetFirstObject(m_aCarNodes[CAR_WHEEL_LF]), 0); CMatrix mat1; mat1.Attach(RwFrameGetMatrix(m_aCarNodes[CAR_WHEEL_RF])); CMatrix mat2(RwFrameGetMatrix(m_aCarNodes[CAR_WHEEL_LF])); mat1.GetPosition() += CVector(mat2.GetPosition().x + 0.1f, 0.0f, mat2.GetPosition().z); mat1.UpdateRW(); }else if(GetModelIndex() == MI_MIAMI_SPARROW || GetModelIndex() == MI_MIAMI_RCRAIDER){ - RpAtomicSetFlags(GetFirstObject(m_aCarNodes[CAR_WHEEL_LF]), 0); - RpAtomicSetFlags(GetFirstObject(m_aCarNodes[CAR_WHEEL_RF]), 0); - RpAtomicSetFlags(GetFirstObject(m_aCarNodes[CAR_WHEEL_LB]), 0); - RpAtomicSetFlags(GetFirstObject(m_aCarNodes[CAR_WHEEL_RB]), 0); + RpAtomicSetFlags((RpAtomic*)GetFirstObject(m_aCarNodes[CAR_WHEEL_LF]), 0); + RpAtomicSetFlags((RpAtomic*)GetFirstObject(m_aCarNodes[CAR_WHEEL_RF]), 0); + RpAtomicSetFlags((RpAtomic*)GetFirstObject(m_aCarNodes[CAR_WHEEL_LB]), 0); + RpAtomicSetFlags((RpAtomic*)GetFirstObject(m_aCarNodes[CAR_WHEEL_RB]), 0); }else if(GetModelIndex() == MI_RHINO){ bExplosionProof = true; bBulletProof = true; diff --git a/src/vehicles/Boat.cpp b/src/vehicles/Boat.cpp index 6d584017..9c7cbb4f 100644 --- a/src/vehicles/Boat.cpp +++ b/src/vehicles/Boat.cpp @@ -94,7 +94,7 @@ CBoat::GetComponentWorldPosition(int32 component, CVector &pos) pos = *RwMatrixGetPos(RwFrameGetLTM(m_aBoatNodes[component])); } -RxObjSpace3DVertex KeepWaterOutVertices[4]; +RwIm3DVertex KeepWaterOutVertices[4]; RwImVertexIndex KeepWaterOutIndices[6]; void @@ -103,7 +103,7 @@ CBoat::Render() CMatrix matrix; if (m_aBoatNodes[1] != nil) { - matrix.Attach(&m_aBoatNodes[1]->modelling); + matrix.Attach(RwFrameGetMatrix(m_aBoatNodes[1])); CVector pos = matrix.GetPosition(); matrix.SetRotateZ(m_fMovingHiRotation); @@ -111,7 +111,7 @@ CBoat::Render() matrix.UpdateRW(); if (CVehicle::bWheelsOnlyCheat) { - RpAtomicRenderMacro((RpAtomic*)GetFirstObject(m_aBoatNodes[1])); + RpAtomicRender((RpAtomic*)GetFirstObject(m_aBoatNodes[1])); } } m_fMovingHiRotation += 0.05f; @@ -130,47 +130,23 @@ CBoat::Render() KeepWaterOutIndices[5] = 3; switch (GetModelIndex()) { case MI_SPEEDER: - KeepWaterOutVertices[0].objVertex.x = -1.15f; - KeepWaterOutVertices[0].objVertex.y = 3.61f; - KeepWaterOutVertices[0].objVertex.z = 1.03f; - KeepWaterOutVertices[1].objVertex.x = 1.15f; - KeepWaterOutVertices[1].objVertex.y = 3.61f; - KeepWaterOutVertices[1].objVertex.z = 1.03f; - KeepWaterOutVertices[2].objVertex.x = -1.15f; - KeepWaterOutVertices[2].objVertex.y = 0.06f; - KeepWaterOutVertices[2].objVertex.z = 1.03f; - KeepWaterOutVertices[3].objVertex.x = 1.15f; - KeepWaterOutVertices[3].objVertex.y = 0.06f; - KeepWaterOutVertices[3].objVertex.z = 1.03f; + RwIm3DVertexSetPos(&KeepWaterOutVertices[0], -1.15f, 3.61f, 1.03f); + RwIm3DVertexSetPos(&KeepWaterOutVertices[1], 1.15f, 3.61f, 1.03f); + RwIm3DVertexSetPos(&KeepWaterOutVertices[2], -1.15f, 0.06f, 1.03f); + RwIm3DVertexSetPos(&KeepWaterOutVertices[3], 1.15f, 0.06f, 1.03f); break; case MI_REEFER: - KeepWaterOutVertices[2].objVertex.x = -1.9f; - KeepWaterOutVertices[2].objVertex.y = 2.83f; - KeepWaterOutVertices[2].objVertex.z = 1.0f; - KeepWaterOutVertices[3].objVertex.x = 1.9f; - KeepWaterOutVertices[3].objVertex.y = 2.83f; - KeepWaterOutVertices[3].objVertex.z = 1.0f; - KeepWaterOutVertices[0].objVertex.x = -1.66f; - KeepWaterOutVertices[0].objVertex.y = -4.48f; - KeepWaterOutVertices[0].objVertex.z = 0.83f; - KeepWaterOutVertices[1].objVertex.x = 1.66f; - KeepWaterOutVertices[1].objVertex.y = -4.48f; - KeepWaterOutVertices[1].objVertex.z = 0.83f; + RwIm3DVertexSetPos(&KeepWaterOutVertices[0], -1.9f, 2.83f, 1.0f); + RwIm3DVertexSetPos(&KeepWaterOutVertices[1], 1.9f, 2.83f, 1.0f); + RwIm3DVertexSetPos(&KeepWaterOutVertices[2], -1.66f, -4.48f, 0.83f); + RwIm3DVertexSetPos(&KeepWaterOutVertices[3], 1.66f, -4.48f, 0.83f); break; case MI_PREDATOR: default: - KeepWaterOutVertices[0].objVertex.x = -1.45f; - KeepWaterOutVertices[0].objVertex.y = 1.9f; - KeepWaterOutVertices[0].objVertex.z = 0.96f; - KeepWaterOutVertices[1].objVertex.x = 1.45f; - KeepWaterOutVertices[1].objVertex.y = 1.9f; - KeepWaterOutVertices[1].objVertex.z = 0.96f; - KeepWaterOutVertices[2].objVertex.x = -1.45f; - KeepWaterOutVertices[2].objVertex.y = -3.75f; - KeepWaterOutVertices[2].objVertex.z = 0.96f; - KeepWaterOutVertices[3].objVertex.x = 1.45f; - KeepWaterOutVertices[3].objVertex.y = -3.75f; - KeepWaterOutVertices[3].objVertex.z = 0.96f; + RwIm3DVertexSetPos(&KeepWaterOutVertices[0], -1.45f, 1.9f, 0.96f); + RwIm3DVertexSetPos(&KeepWaterOutVertices[1], 1.45f, 1.9f, 0.96f); + RwIm3DVertexSetPos(&KeepWaterOutVertices[2], -1.45f, -3.75f, 0.96f); + RwIm3DVertexSetPos(&KeepWaterOutVertices[3], 1.45f, -3.75f, 0.96f); break; } KeepWaterOutVertices[0].u = 0.0f; From 6cfc31510dcc57edb0cc02d09073d84052c26ed4 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 9 Apr 2020 13:14:37 +0300 Subject: [PATCH 048/112] CStats finished --- README.md | 1 - src/core/Stats.cpp | 237 +++++++++++++++++++++++++++++++++++++++++++-- src/core/Stats.h | 27 +++--- 3 files changed, 245 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 43e87d3c..9237e8e3 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,6 @@ CPools - save/loading CRecordDataForChase CRecordDataForGame CRoadBlocks -CStats CTrafficLights CWeapon CWorld diff --git a/src/core/Stats.cpp b/src/core/Stats.cpp index aeb7afe5..02092a30 100644 --- a/src/core/Stats.cpp +++ b/src/core/Stats.cpp @@ -1,14 +1,14 @@ #include "common.h" #include "patcher.h" #include "Stats.h" - -WRAPPER void CStats::SaveStats(uint8 *buf, uint32 *size) { EAXJMP(0x4ab3e0); } +#include "Text.h" +#include "World.h" int32 &CStats::DaysPassed = *(int32*)0x8F2BB8; int32 &CStats::HeadsPopped = *(int32*)0x8F647C; -bool& CStats::CommercialPassed = *(bool*)0x8F4334; -bool& CStats::IndustrialPassed = *(bool*)0x8E2A68; -bool& CStats::SuburbanPassed = *(bool*)0x8F2740; +int32& CStats::CommercialPassed = *(int32*)0x8F4334; +int32& CStats::IndustrialPassed = *(int32*)0x8E2A68; +int32& CStats::SuburbanPassed = *(int32*)0x8F2740; int32 &CStats::NumberKillFrenziesPassed = *(int32*)0x8E287C; int32 &CStats::PeopleKilledByOthers = *(int32*)0x8E2C50; int32 &CStats::HelisDestroyed = *(int32*)0x8E2A64; @@ -48,7 +48,7 @@ int32& CStats::LongestFlightInDodo = *(int32*)0x8F5FE4; int32& CStats::TimeTakenDefuseMission = *(int32*)0x880E24; int32& CStats::TotalNumberKillFrenzies = *(int32*)0x8E2884; int32& CStats::TotalNumberMissions = *(int32*)0x8E2820; -int32& CStats::ShotsMade = *(int32*)0x8E2BE8; +int32& CStats::RoundsFiredByPlayer = *(int32*)0x8E2BE8; int32& CStats::KgsOfExplosivesUsed = *(int32*)0x8F2510; int32& CStats::InstantHitsFiredByPlayer = *(int32*)0x943070; int32& CStats::InstantHitsHitByPlayer = *(int32*)0x95CB8C; @@ -62,7 +62,7 @@ void CStats::Init() { PeopleKilledByOthers = 0; PeopleKilledByPlayer = 0; - ShotsMade = 0; + RoundsFiredByPlayer = 0; CarsExploded = 0; HelisDestroyed = 0; ProgressMade = 0; @@ -200,6 +200,229 @@ void CStats::SetTotalNumberMissions(int32 total) TotalNumberMissions = total; } +wchar *CStats::FindCriminalRatingString() +{ + int rating = FindCriminalRatingNumber(); + + if (rating < 10) return TheText.Get("RATNG1"); + if (rating < 25) return TheText.Get("RATNG2"); + if (rating < 70) return TheText.Get("RATNG3"); + if (rating < 150) return TheText.Get("RATNG4"); + if (rating < 250) return TheText.Get("RATNG5"); + if (rating < 450) return TheText.Get("RATNG6"); + if (rating < 700) return TheText.Get("RATNG7"); + if (rating < 1000) return TheText.Get("RATNG8"); + if (rating < 1400) return TheText.Get("RATNG9"); + if (rating < 1900) return TheText.Get("RATNG10"); + if (rating < 2500) return TheText.Get("RATNG11"); + if (rating < 3200) return TheText.Get("RATNG12"); + if (rating < 4000) return TheText.Get("RATNG13"); + if (rating < 5000) return TheText.Get("RATNG14"); + return TheText.Get("RATNG15"); +} + +int32 CStats::FindCriminalRatingNumber() +{ + int32 rating; + + rating = FiresExtinguished + 10 * HighestLevelAmbulanceMission + CriminalsCaught + LivesSavedWithAmbulance + + 30 * HelisDestroyed + TotalLegitimateKills - 3 * TimesArrested - 3 * TimesDied + + CWorld::Players[CWorld::PlayerInFocus].m_nMoney / 5000; + if (rating <= 0) rating = 0; + + if (InstantHitsFiredByPlayer > 100) + rating += (float)CStats::InstantHitsHitByPlayer / (float)CStats::InstantHitsFiredByPlayer * 500.0f; + if (TotalProgressInGame) + rating += (float)CStats::ProgressMade / (float)CStats::TotalProgressInGame * 1000.0f; + if (!IndustrialPassed && rating >= 3521) + rating = 3521; + if (!CommercialPassed && rating >= 4552) + rating = 4552; + return rating; +} + +void CStats::SaveStats(uint8 *buf, uint32 *size) +{ + CheckPointReachedSuccessfully(); + uint8 *buf_start = buf; + *size = sizeof(PeopleKilledByPlayer) + + sizeof(PeopleKilledByOthers) + + sizeof(CarsExploded) + + sizeof(RoundsFiredByPlayer) + + sizeof(PedsKilledOfThisType) + + sizeof(HelisDestroyed) + + sizeof(ProgressMade) + + sizeof(TotalProgressInGame) + + sizeof(KgsOfExplosivesUsed) + + sizeof(InstantHitsFiredByPlayer) + + sizeof(InstantHitsHitByPlayer) + + sizeof(CarsCrushed) + + sizeof(HeadsPopped) + + sizeof(TimesArrested) + + sizeof(TimesDied) + + sizeof(DaysPassed) + + sizeof(mmRain) + + sizeof(MaximumJumpDistance) + + sizeof(MaximumJumpHeight) + + sizeof(MaximumJumpFlips) + + sizeof(MaximumJumpSpins) + + sizeof(BestStuntJump) + + sizeof(NumberOfUniqueJumpsFound) + + sizeof(TotalNumberOfUniqueJumps) + + sizeof(MissionsGiven) + + sizeof(MissionsPassed) + + sizeof(PassengersDroppedOffWithTaxi) + + sizeof(MoneyMadeWithTaxi) + + sizeof(IndustrialPassed) + + sizeof(CommercialPassed) + + sizeof(SuburbanPassed) + + sizeof(ElBurroTime) + + sizeof(DistanceTravelledOnFoot) + + sizeof(DistanceTravelledInVehicle) + + sizeof(Record4x4One) + + sizeof(Record4x4Two) + + sizeof(Record4x4Three) + + sizeof(Record4x4Mayhem) + + sizeof(LivesSavedWithAmbulance) + + sizeof(CriminalsCaught) + + sizeof(HighestLevelAmbulanceMission) + + sizeof(FiresExtinguished) + + sizeof(LongestFlightInDodo) + + sizeof(TimeTakenDefuseMission) + + sizeof(NumberKillFrenziesPassed) + + sizeof(TotalNumberKillFrenzies) + + sizeof(TotalNumberMissions) + + sizeof(FastestTimes) + + sizeof(HighestScores) + + sizeof(KillsSinceLastCheckpoint) + + sizeof(TotalLegitimateKills) + + sizeof(LastMissionPassedName); + +#define CopyToBuf(buf, data) memcpy(buf, &data, sizeof(data)); buf += sizeof(data); + CopyToBuf(buf, PeopleKilledByPlayer); + CopyToBuf(buf, PeopleKilledByOthers); + CopyToBuf(buf, CarsExploded); + CopyToBuf(buf, RoundsFiredByPlayer); + CopyToBuf(buf, PedsKilledOfThisType); + CopyToBuf(buf, HelisDestroyed); + CopyToBuf(buf, ProgressMade); + CopyToBuf(buf, TotalProgressInGame); + CopyToBuf(buf, KgsOfExplosivesUsed); + CopyToBuf(buf, InstantHitsFiredByPlayer); + CopyToBuf(buf, InstantHitsHitByPlayer); + CopyToBuf(buf, CarsCrushed); + CopyToBuf(buf, HeadsPopped); + CopyToBuf(buf, TimesArrested); + CopyToBuf(buf, TimesDied); + CopyToBuf(buf, DaysPassed); + CopyToBuf(buf, mmRain); + CopyToBuf(buf, MaximumJumpDistance); + CopyToBuf(buf, MaximumJumpHeight); + CopyToBuf(buf, MaximumJumpFlips); + CopyToBuf(buf, MaximumJumpSpins); + CopyToBuf(buf, BestStuntJump); + CopyToBuf(buf, NumberOfUniqueJumpsFound); + CopyToBuf(buf, TotalNumberOfUniqueJumps); + CopyToBuf(buf, MissionsGiven); + CopyToBuf(buf, MissionsPassed); + CopyToBuf(buf, PassengersDroppedOffWithTaxi); + CopyToBuf(buf, MoneyMadeWithTaxi); + CopyToBuf(buf, IndustrialPassed); + CopyToBuf(buf, CommercialPassed); + CopyToBuf(buf, SuburbanPassed); + CopyToBuf(buf, ElBurroTime); + CopyToBuf(buf, DistanceTravelledOnFoot); + CopyToBuf(buf, DistanceTravelledInVehicle); + CopyToBuf(buf, Record4x4One); + CopyToBuf(buf, Record4x4Two); + CopyToBuf(buf, Record4x4Three); + CopyToBuf(buf, Record4x4Mayhem); + CopyToBuf(buf, LivesSavedWithAmbulance); + CopyToBuf(buf, CriminalsCaught); + CopyToBuf(buf, HighestLevelAmbulanceMission); + CopyToBuf(buf, FiresExtinguished); + CopyToBuf(buf, LongestFlightInDodo); + CopyToBuf(buf, TimeTakenDefuseMission); + CopyToBuf(buf, NumberKillFrenziesPassed); + CopyToBuf(buf, TotalNumberKillFrenzies); + CopyToBuf(buf, TotalNumberMissions); + CopyToBuf(buf, FastestTimes); + CopyToBuf(buf, HighestScores); + CopyToBuf(buf, KillsSinceLastCheckpoint); + CopyToBuf(buf, TotalLegitimateKills); + CopyToBuf(buf, LastMissionPassedName); + + assert(buf - buf_start == *size); +#undef CopyToBuf +} + +void CStats::LoadStats(uint8 *buf, uint32 size) +{ + uint8* buf_start = buf; + +#define CopyFromBuf(buf, data) memcpy(&data, buf, sizeof(data)); buf += sizeof(data); + + CopyFromBuf(buf, PeopleKilledByPlayer); + CopyFromBuf(buf, PeopleKilledByOthers); + CopyFromBuf(buf, CarsExploded); + CopyFromBuf(buf, RoundsFiredByPlayer); + CopyFromBuf(buf, PedsKilledOfThisType); + CopyFromBuf(buf, HelisDestroyed); + CopyFromBuf(buf, ProgressMade); + CopyFromBuf(buf, TotalProgressInGame); + CopyFromBuf(buf, KgsOfExplosivesUsed); + CopyFromBuf(buf, InstantHitsFiredByPlayer); + CopyFromBuf(buf, InstantHitsHitByPlayer); + CopyFromBuf(buf, CarsCrushed); + CopyFromBuf(buf, HeadsPopped); + CopyFromBuf(buf, TimesArrested); + CopyFromBuf(buf, TimesDied); + CopyFromBuf(buf, DaysPassed); + CopyFromBuf(buf, mmRain); + CopyFromBuf(buf, MaximumJumpDistance); + CopyFromBuf(buf, MaximumJumpHeight); + CopyFromBuf(buf, MaximumJumpFlips); + CopyFromBuf(buf, MaximumJumpSpins); + CopyFromBuf(buf, BestStuntJump); + CopyFromBuf(buf, NumberOfUniqueJumpsFound); + CopyFromBuf(buf, TotalNumberOfUniqueJumps); + CopyFromBuf(buf, MissionsGiven); + CopyFromBuf(buf, MissionsPassed); + CopyFromBuf(buf, PassengersDroppedOffWithTaxi); + CopyFromBuf(buf, MoneyMadeWithTaxi); + CopyFromBuf(buf, IndustrialPassed); + CopyFromBuf(buf, CommercialPassed); + CopyFromBuf(buf, SuburbanPassed); + CopyFromBuf(buf, ElBurroTime); + CopyFromBuf(buf, DistanceTravelledOnFoot); + CopyFromBuf(buf, DistanceTravelledInVehicle); + CopyFromBuf(buf, Record4x4One); + CopyFromBuf(buf, Record4x4Two); + CopyFromBuf(buf, Record4x4Three); + CopyFromBuf(buf, Record4x4Mayhem); + CopyFromBuf(buf, LivesSavedWithAmbulance); + CopyFromBuf(buf, CriminalsCaught); + CopyFromBuf(buf, HighestLevelAmbulanceMission); + CopyFromBuf(buf, FiresExtinguished); + CopyFromBuf(buf, LongestFlightInDodo); + CopyFromBuf(buf, TimeTakenDefuseMission); + CopyFromBuf(buf, NumberKillFrenziesPassed); + CopyFromBuf(buf, TotalNumberKillFrenzies); + CopyFromBuf(buf, TotalNumberMissions); + CopyFromBuf(buf, FastestTimes); + CopyFromBuf(buf, HighestScores); + CopyFromBuf(buf, KillsSinceLastCheckpoint); + CopyFromBuf(buf, TotalLegitimateKills); + CopyFromBuf(buf, LastMissionPassedName); + + assert(buf - buf_start == size); +#undef CopyFromBuf +} + STARTPATCHES InjectHook(0x48C5A3, CStats::Init, PATCH_JUMP); // CGame::ReInitGameObjectVariables + InjectHook(0x4AB3E0, CStats::SaveStats, PATCH_JUMP); + InjectHook(0x4AB670, CStats::LoadStats, PATCH_JUMP); + InjectHook(0x4AB090, CStats::FindCriminalRatingString, PATCH_JUMP); + InjectHook(0x4AB2A0, CStats::FindCriminalRatingNumber, PATCH_JUMP); ENDPATCHES \ No newline at end of file diff --git a/src/core/Stats.h b/src/core/Stats.h index 029b2307..ac3259f9 100644 --- a/src/core/Stats.h +++ b/src/core/Stats.h @@ -11,9 +11,9 @@ public: }; static int32 &DaysPassed; static int32 &HeadsPopped; - static bool& CommercialPassed; - static bool& IndustrialPassed; - static bool& SuburbanPassed; + static int32& CommercialPassed; + static int32& IndustrialPassed; + static int32& SuburbanPassed; static int32 &NumberKillFrenziesPassed; static int32 &PeopleKilledByOthers; static int32 &HelisDestroyed; @@ -53,7 +53,7 @@ public: static int32 &TimeTakenDefuseMission; static int32 &TotalNumberKillFrenzies; static int32 &TotalNumberMissions; - static int32 &ShotsMade; + static int32 &RoundsFiredByPlayer; static int32 &KgsOfExplosivesUsed; static int32 &InstantHitsFiredByPlayer; static int32 &InstantHitsHitByPlayer; @@ -64,24 +64,27 @@ public: static int32(&HighestScores)[TOTAL_HIGHEST_SCORES]; public: + static void Init(void); static void RegisterFastestTime(int32, int32); static void RegisterHighestScore(int32, int32); - static void AnotherKillFrenzyPassed(); - static void AnotherLifeSavedWithAmbulance(); - static void AnotherCriminalCaught(); - static void RegisterLevelAmbulanceMission(int32); - static void AnotherFireExtinguished(); + static void RegisterElBurroTime(int32); static void Register4x4OneTime(int32); static void Register4x4TwoTime(int32); static void Register4x4ThreeTime(int32); static void Register4x4MayhemTime(int32); + static void AnotherLifeSavedWithAmbulance(); + static void AnotherCriminalCaught(); + static void RegisterLevelAmbulanceMission(int32); + static void AnotherFireExtinguished(); + static wchar *FindCriminalRatingString(); static void RegisterLongestFlightInDodo(int32); static void RegisterTimeTakenDefuseMission(int32); + static void AnotherKillFrenzyPassed(); static void SetTotalNumberKillFrenzies(int32); static void SetTotalNumberMissions(int32); - static void CheckPointReachedUnsuccessfully() { KillsSinceLastCheckpoint = 0; }; static void CheckPointReachedSuccessfully() { TotalLegitimateKills += KillsSinceLastCheckpoint; KillsSinceLastCheckpoint = 0; }; - static void RegisterElBurroTime(int32); + static void CheckPointReachedUnsuccessfully() { KillsSinceLastCheckpoint = 0; }; + static int32 FindCriminalRatingNumber(); static void SaveStats(uint8 *buf, uint32 *size); - static void Init(void); + static void LoadStats(uint8 *buf, uint32 size); }; From 34349c4df2683fca35be37ec626aaa8eef2ddaee Mon Sep 17 00:00:00 2001 From: aap Date: Thu, 9 Apr 2020 20:50:24 +0200 Subject: [PATCH 049/112] normalized line endings to LF --- src/audio/AudioCollision.cpp | 806 ++++---- src/audio/AudioCollision.h | 70 +- src/audio/AudioManager.h | 2 +- src/audio/PoliceRadio.cpp | 1578 +++++++------- src/audio/PoliceRadio.h | 90 +- src/control/GameLogic.cpp | 572 +++--- src/control/GameLogic.h | 24 +- src/control/Gangs.cpp | 18 +- src/control/OnscreenTimer.h | 96 +- src/control/Pickups.cpp | 2098 +++++++++---------- src/control/Pickups.h | 248 +-- src/control/PowerPoints.cpp | 42 +- src/control/PowerPoints.h | 50 +- src/control/Restart.cpp | 434 ++-- src/core/Frontend.h | 8 +- src/core/PlayerInfo.cpp | 902 ++++---- src/core/PlayerSkin.cpp | 340 +-- src/core/obrstr.cpp | 236 +-- src/core/obrstr.h | 16 +- src/core/timebars.cpp | 240 +-- src/core/timebars.h | 10 +- src/entities/Solid.h | 22 +- src/modelinfo/MloModelInfo.h | 26 +- src/modelinfo/XtraCompsModelInfo.h | 22 +- src/peds/PlayerPed.cpp | 3070 ++++++++++++++-------------- src/render/Font.cpp | 1272 ++++++------ src/render/SpecialFX.h | 70 +- src/render/TexList.cpp | 80 +- src/render/TexList.h | 26 +- src/save/Date.h | 34 +- src/save/GenericGameStorage.h | 84 +- src/text/Messages.cpp | 1670 +++++++-------- src/text/Pager.cpp | 386 ++-- src/text/Pager.h | 54 +- src/text/Text.cpp | 648 +++--- src/vehicles/Bike.h | 28 +- src/weapons/ProjectileInfo.h | 62 +- 37 files changed, 7717 insertions(+), 7717 deletions(-) diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp index 608b1a8d..4039bd75 100644 --- a/src/audio/AudioCollision.cpp +++ b/src/audio/AudioCollision.cpp @@ -1,403 +1,403 @@ -#include "common.h" -#include "patcher.h" -#include "DMAudio.h" -#include "Entity.h" -#include "AudioCollision.h" -#include "AudioManager.h" -#include "AudioSamples.h" -#include "SurfaceTable.h" -#include "sampman.h" - -const int CollisionSoundIntensity = 60; - -void -cAudioCollisionManager::AddCollisionToRequestedQueue() -{ - int32 collisionsIndex; - int32 i; - - - if (m_bCollisionsInQueue < NUMAUDIOCOLLISIONS) - collisionsIndex = m_bCollisionsInQueue++; - else { - collisionsIndex = m_bIndicesTable[NUMAUDIOCOLLISIONS - 1]; - if (m_sQueue.m_fDistance >= m_asCollisions1[collisionsIndex].m_fDistance) return; - } - - m_asCollisions1[collisionsIndex] = m_sQueue; - - i = 0; - if(collisionsIndex) { - while(m_asCollisions1[m_bIndicesTable[i]].m_fDistance <= m_asCollisions1[collisionsIndex].m_fDistance) { - if(++i >= collisionsIndex) { - m_bIndicesTable[i] = collisionsIndex; - return; - } - } - memmove(&m_bIndicesTable[i + 1], &m_bIndicesTable[i], NUMAUDIOCOLLISIONS - 1 - i); - } - m_bIndicesTable[i] = collisionsIndex; -} - -float -cAudioManager::GetCollisionLoopingRatio(uint32 a, uint32 b, float c) const -{ - return GetCollisionRatio(c, 0.0f, 0.02f, 0.02f); -} - -float -cAudioManager::GetCollisionOneShotRatio(int32 a, float b) const -{ - float result; - - switch(a) { - case SURFACE_DEFAULT: - case SURFACE_TARMAC: - case SURFACE_PAVEMENT: - case SURFACE_STONE: - case SURFACE_BOLLARD: result = GetCollisionRatio(b, 10.f, 60.f, 50.f); break; - case SURFACE_GRASS: - case SURFACE_LOOSE30: result = GetCollisionRatio(b, 0.f, 2.f, 2.f); break; - case SURFACE_DIRT: result = GetCollisionRatio(b, 0.f, 2.f, 2.f); break; - case SURFACE_DIRTTRACK: result = GetCollisionRatio(b, 0.f, 2.f, 2.f); break; - case SURFACE_METAL6: result = GetCollisionRatio(b, 6.f, 50.f, 44.f); break; - case SURFACE_GLASS: result = GetCollisionRatio(b, 0.1f, 10.f, 9.9f); break; - case SURFACE_SCAFFOLD: - case SURFACE_STEEL: result = GetCollisionRatio(b, 30.f, 130.f, 100.f); break; - case SURFACE_METAL_DOOR: result = GetCollisionRatio(b, 20.f, 100.f, 80.f); break; - case SURFACE_BILLBOARD: result = GetCollisionRatio(b, 0.f, 4.f, 4.f); break; - case SURFACE_METAL_POLE: - case SURFACE_GATE: result = GetCollisionRatio(b, 1.f, 10.f, 9.f); break; - case SURFACE_STREET_LIGHT: result = GetCollisionRatio(b, 1.f, 10.f, 9.f); break; - case SURFACE_METAL14: result = GetCollisionRatio(b, 1.f, 15.f, 14.f); break; - case SURFACE_METAL15: result = GetCollisionRatio(b, 8.f, 50.f, 42.f); break; - case SURFACE_METAL_FENCE: result = GetCollisionRatio(b, 0.1f, 10.f, 9.9f); break; - case SURFACE_FLESH: result = GetCollisionRatio(b, 0.f, 20.f, 20.f); break; - case SURFACE_SAND: result = GetCollisionRatio(b, 0.f, 10.f, 10.f); break; - case SURFACE_PUDDLE: result = GetCollisionRatio(b, 0.f, 10.f, 10.f); break; - case SURFACE_WOOD: result = GetCollisionRatio(b, 1.f, 4.f, 3.f); break; - case SURFACE_WOOD_BOX: result = GetCollisionRatio(b, 0.1f, 5.f, 4.9f); break; - case SURFACE_WOOD_PLANK: result = GetCollisionRatio(b, 0.1f, 40.f, 39.9f); break; - case SURFACE_TIRE: - case SURFACE_RUBBER29: result = GetCollisionRatio(b, 0.f, 10.f, 10.f); break; - case SURFACE_HARD24: result = GetCollisionRatio(b, 0.1f, 4.f, 3.9f); break; - case SURFACE_HEDGE: result = GetCollisionRatio(b, 0.f, 0.5f, 0.5f); break; - case SURFACE_METAL27: result = GetCollisionRatio(b, 4.f, 40.f, 36.f); break; - case SURFACE_METAL28: result = GetCollisionRatio(b, 0.f, 5.f, 5.f); break; - default: result = 0.f; break; - } - - return result; -} - -float -cAudioManager::GetCollisionRatio(float a, float b, float c, float d) const -{ - float e; - e = a; - if(a <= b) return 0.0f; - if(c <= a) e = c; - return (e - b) / d; -} - -uint32 -cAudioManager::SetLoopingCollisionRequestedSfxFreqAndGetVol(cAudioCollision *audioCollision) -{ - uint8 surface1 = audioCollision->m_bSurface1; - uint8 surface2 = audioCollision->m_bSurface2; - int32 vol; - float ratio; - - if(surface1 == SURFACE_GRASS || surface2 == SURFACE_GRASS || surface1 == SURFACE_HEDGE || - surface2 == SURFACE_HEDGE) { - ratio = GetCollisionRatio(audioCollision->m_fIntensity2, 0.0001f, 0.09f, 0.0899f); - m_sQueueSample.m_nSampleIndex = SFX_RAIN; - m_sQueueSample.m_nFrequency = 13000.f * ratio + 35000; - vol = 50.f * ratio; - } else { - if(surface1 == SURFACE_PUDDLE || surface2 == SURFACE_PUDDLE) { - ratio = GetCollisionRatio(audioCollision->m_fIntensity2, 0.0001f, 0.09f, 0.0899f); - m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP; - m_sQueueSample.m_nFrequency = 6050.f * ratio + 16000; - vol = 30.f * ratio; - - } else { - if(surface1 == SURFACE_DIRT || surface2 == SURFACE_DIRT || surface1 == SURFACE_DIRTTRACK || - surface2 == SURFACE_DIRTTRACK || surface1 == SURFACE_SAND || surface2 == SURFACE_SAND) { - ratio = GetCollisionRatio(audioCollision->m_fIntensity2, 0.0001f, 0.09f, 0.0899f); - m_sQueueSample.m_nSampleIndex = SFX_GRAVEL_SKID; - m_sQueueSample.m_nFrequency = 6000.f * ratio + 10000; - vol = 50.f * ratio; - } else { - if(surface1 == SURFACE_FLESH || surface2 == SURFACE_FLESH) { return 0; } - ratio = GetCollisionRatio(audioCollision->m_fIntensity2, 0.0001f, 0.09f, 0.0899f); - m_sQueueSample.m_nSampleIndex = SFX_SCRAPE_CAR_1; - m_sQueueSample.m_nFrequency = 10000.f * ratio + 10000; - vol = 40.f * ratio; - } - } - } - if(audioCollision->m_nBaseVolume < 2) vol = audioCollision->m_nBaseVolume * vol / 2; - return vol; -} - -void -cAudioManager::SetUpLoopingCollisionSound(cAudioCollision *col, uint8 counter) -{ - if(col->m_fIntensity2 > 0.0016f) { - uint8 emittingVol = SetLoopingCollisionRequestedSfxFreqAndGetVol(col); - if(emittingVol) { - m_sQueueSample.m_fDistance = Sqrt(col->m_fDistance); - m_sQueueSample.m_bVolume = - ComputeVolume(emittingVol, CollisionSoundIntensity, m_sQueueSample.m_fDistance); - if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = counter; - m_sQueueSample.m_vecPos = col->m_vecPosition; - m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_nReleasingVolumeModificator = 7; - m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; - m_sQueueSample.m_bReleasingSoundFlag = 0; - m_sQueueSample.m_nReleasingVolumeDivider = 5; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; - AddSampleToRequestedQueue(); - } - } - } -} - -void -cAudioManager::SetUpOneShotCollisionSound(cAudioCollision *col) -{ - static const int32 gOneShotCol[] = { - SFX_COL_TARMAC_1, SFX_COL_TARMAC_1, SFX_COL_GRASS_1, - SFX_COL_GRAVEL_1, SFX_COL_MUD_1, SFX_COL_TARMAC_1, - SFX_COL_CAR_1, SFX_COL_GRASS_1, SFX_COL_SCAFFOLD_POLE_1, - SFX_COL_GARAGE_DOOR_1, SFX_COL_CAR_PANEL_1, SFX_COL_THICK_METAL_PLATE_1, - SFX_COL_SCAFFOLD_POLE_1, SFX_COL_LAMP_POST_1, SFX_COL_HYDRANT_1, - SFX_COL_HYDRANT_1, SFX_COL_METAL_CHAIN_FENCE_1, SFX_COL_PED_1, - SFX_COL_SAND_1, SFX_SPLASH_1, SFX_COL_WOOD_CRATES_1, - SFX_COL_WOOD_BENCH_1, SFX_COL_WOOD_SOLID_1, SFX_COL_GRASS_1, - SFX_COL_GRASS_1, SFX_COL_VEG_1, SFX_COL_TARMAC_1, - SFX_COL_CONTAINER_1, SFX_COL_NEWS_VENDOR_1, SFX_TYRE_BUMP, - SFX_COL_CARDBOARD_1, SFX_COL_TARMAC_1, SFX_COL_GATE}; - - int16 s1; - int16 s2; - - int32 emittingVol; - float ratio; - - static uint16 counter = 28; - - for(int32 i = 0; i < 2; i++) { - if(i) { - s1 = col->m_bSurface2; - s2 = col->m_bSurface1; - } else { - s1 = col->m_bSurface1; - s2 = col->m_bSurface2; - } - ratio = GetCollisionOneShotRatio(s1, col->m_fIntensity1); - if(s1 == SURFACE_METAL6 && s2 == SURFACE_FLESH) ratio = 0.25f * ratio; - if(s1 == SURFACE_METAL6 && ratio < 0.6f) { - s1 = SURFACE_BILLBOARD; - ratio = min(1.f, 2.f * ratio); - } - emittingVol = 40.f * ratio; - if(emittingVol) { - m_sQueueSample.m_fDistance = Sqrt(col->m_fDistance); - m_sQueueSample.m_bVolume = - ComputeVolume(emittingVol, CollisionSoundIntensity, m_sQueueSample.m_fDistance); - if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_nSampleIndex = gOneShotCol[s1]; - switch(m_sQueueSample.m_nSampleIndex) { - case SFX_COL_TARMAC_1: - m_sQueueSample.m_nSampleIndex += m_anRandomTable[3] % 5; - break; - case SFX_COL_CAR_PANEL_1: - m_sQueueSample.m_nSampleIndex += m_anRandomTable[0] % 6; - break; - case SFX_COL_LAMP_POST_1: - m_sQueueSample.m_nSampleIndex += m_anRandomTable[1] % 2; - break; - case SFX_COL_METAL_CHAIN_FENCE_1: - m_sQueueSample.m_nSampleIndex += m_anRandomTable[3] % 4; - break; - case SFX_COL_PED_1: - m_sQueueSample.m_nSampleIndex += m_anRandomTable[4] % 5; - break; - case SFX_COL_WOOD_CRATES_1: - m_sQueueSample.m_nSampleIndex += m_anRandomTable[4] % 4; - break; - case SFX_COL_WOOD_BENCH_1: - m_sQueueSample.m_nSampleIndex += m_anRandomTable[1] % 4; - break; - case SFX_COL_VEG_1: - m_sQueueSample.m_nSampleIndex += m_anRandomTable[2] % 5; - break; - case SFX_COL_NEWS_VENDOR_1: - m_sQueueSample.m_nSampleIndex += m_anRandomTable[2] % 3; - break; - case SFX_COL_CAR_1: - m_sQueueSample.m_nSampleIndex += m_anRandomTable[1] % 5; - break; - case SFX_COL_CARDBOARD_1: - m_sQueueSample.m_nSampleIndex += m_anRandomTable[3] % 2; - break; - default: break; - } - switch(s1) { - case SURFACE_GLASS: m_sQueueSample.m_nFrequency = 13500; break; - case SURFACE_METAL15: m_sQueueSample.m_nFrequency = 8819; break; - case SURFACE_PUDDLE: - m_sQueueSample.m_nFrequency = - 2 * SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - break; - case SURFACE_TIRE: m_sQueueSample.m_nFrequency = 6000; break; - case SURFACE_HARD24: m_sQueueSample.m_nFrequency = 8000; break; - default: - m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - break; - } - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); - m_sQueueSample.m_counter = counter++; - if(counter >= 255) counter = 28; - m_sQueueSample.m_vecPos = col->m_vecPosition; - m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_nReleasingVolumeModificator = 11; - m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; - m_sQueueSample.m_bReleasingSoundFlag = 1; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; - AddSampleToRequestedQueue(); - } - } - } -} - -void -cAudioManager::ServiceCollisions() -{ - int i, j; - bool someArr1[NUMAUDIOCOLLISIONS]; - bool someArr2[NUMAUDIOCOLLISIONS]; - - m_sQueueSample.m_nEntityIndex = m_nCollisionEntity; - - for (int i = 0; i < NUMAUDIOCOLLISIONS; i++) - someArr1[i] = someArr2[i] = false; - - for (i = 0; i < m_sCollisionManager.m_bCollisionsInQueue; i++) { - for (j = 0; j < NUMAUDIOCOLLISIONS; j++) { - int index = m_sCollisionManager.m_bIndicesTable[i]; - if ((m_sCollisionManager.m_asCollisions1[index].m_pEntity1 == m_sCollisionManager.m_asCollisions2[j].m_pEntity1) - && (m_sCollisionManager.m_asCollisions1[index].m_pEntity2 == m_sCollisionManager.m_asCollisions2[j].m_pEntity2) - && (m_sCollisionManager.m_asCollisions1[index].m_bSurface1 == m_sCollisionManager.m_asCollisions2[j].m_bSurface1) - && (m_sCollisionManager.m_asCollisions1[index].m_bSurface2 == m_sCollisionManager.m_asCollisions2[j].m_bSurface2) - ) { - someArr1[index] = true; - someArr2[j] = true; - m_sCollisionManager.m_asCollisions1[index].m_nBaseVolume = ++m_sCollisionManager.m_asCollisions2[j].m_nBaseVolume; - SetUpLoopingCollisionSound(&m_sCollisionManager.m_asCollisions1[index], j); - break; - } - } - } - - for (i = 0; i < NUMAUDIOCOLLISIONS; i++) { - if (!someArr2[i]) { - m_sCollisionManager.m_asCollisions2[i].m_pEntity1 = nil; - m_sCollisionManager.m_asCollisions2[i].m_pEntity2 = nil; - m_sCollisionManager.m_asCollisions2[i].m_bSurface1 = SURFACE_DEFAULT; - m_sCollisionManager.m_asCollisions2[i].m_bSurface2 = SURFACE_DEFAULT; - m_sCollisionManager.m_asCollisions2[i].m_fIntensity2 = 0.0f; - m_sCollisionManager.m_asCollisions2[i].m_fIntensity1 = 0.0f; - m_sCollisionManager.m_asCollisions2[i].m_vecPosition = CVector(0.0f, 0.0f, 0.0f); - m_sCollisionManager.m_asCollisions2[i].m_fDistance = 0.0f; - } - } - - for (i = 0; i < m_sCollisionManager.m_bCollisionsInQueue; i++) { - int index = m_sCollisionManager.m_bIndicesTable[i]; - if (!someArr1[index]) { - for (j = 0; j < NUMAUDIOCOLLISIONS; j++) { - if (someArr2[j]) { - m_sCollisionManager.m_asCollisions2[j].m_nBaseVolume = 1; - m_sCollisionManager.m_asCollisions2[j].m_pEntity1 = m_sCollisionManager.m_asCollisions1[index].m_pEntity1; - m_sCollisionManager.m_asCollisions2[j].m_pEntity2 = m_sCollisionManager.m_asCollisions1[index].m_pEntity2; - m_sCollisionManager.m_asCollisions2[j].m_bSurface1 = m_sCollisionManager.m_asCollisions1[index].m_bSurface1; - m_sCollisionManager.m_asCollisions2[j].m_bSurface2 = m_sCollisionManager.m_asCollisions1[index].m_bSurface2; - break; - } - } - SetUpOneShotCollisionSound(&m_sCollisionManager.m_asCollisions1[index]); - SetUpLoopingCollisionSound(&m_sCollisionManager.m_asCollisions1[index], j); - } - } - - for (int i = 0; i < NUMAUDIOCOLLISIONS; i++) - m_sCollisionManager.m_bIndicesTable[i] = NUMAUDIOCOLLISIONS; - m_sCollisionManager.m_bCollisionsInQueue = 0; -} - -void -cAudioManager::ReportCollision(CEntity *entity1, CEntity *entity2, uint8 surface1, uint8 surface2, float collisionPower, - float velocity) -{ - float distSquared; - CVector v1; - CVector v2; - - if(!m_bIsInitialised || m_nCollisionEntity < 0 || m_bUserPause || - (velocity < 0.0016f && collisionPower < 0.01f)) - return; - - if(entity1->IsBuilding()) { - v1 = v2 = entity2->GetPosition(); - } else if(entity2->IsBuilding()) { - v1 = v2 = entity1->GetPosition(); - } else { - v1 = entity1->GetPosition(); - v2 = entity2->GetPosition(); - } - CVector pos = (v1 + v2) * 0.5f; - distSquared = GetDistanceSquared(&pos); - if(distSquared < SQR(CollisionSoundIntensity)) { - m_sCollisionManager.m_sQueue.m_pEntity1 = entity1; - m_sCollisionManager.m_sQueue.m_pEntity2 = entity2; - m_sCollisionManager.m_sQueue.m_bSurface1 = surface1; - m_sCollisionManager.m_sQueue.m_bSurface2 = surface2; - m_sCollisionManager.m_sQueue.m_fIntensity1 = collisionPower; - m_sCollisionManager.m_sQueue.m_fIntensity2 = velocity; - m_sCollisionManager.m_sQueue.m_vecPosition = pos; - m_sCollisionManager.m_sQueue.m_fDistance = distSquared; - m_sCollisionManager.AddCollisionToRequestedQueue(); - } -} - -STARTPATCHES -InjectHook(0x5685E0, &cAudioCollisionManager::AddCollisionToRequestedQueue, PATCH_JUMP); -InjectHook(0x569060, &cAudioManager::GetCollisionOneShotRatio, PATCH_JUMP); -InjectHook(0x5693B0, &cAudioManager::GetCollisionRatio, PATCH_JUMP); -InjectHook(0x568410, &cAudioManager::ReportCollision, PATCH_JUMP); -InjectHook(0x5686D0, &cAudioManager::ServiceCollisions, PATCH_JUMP); -InjectHook(0x568E20, &cAudioManager::SetLoopingCollisionRequestedSfxFreqAndGetVol, PATCH_JUMP); -InjectHook(0x568D30, &cAudioManager::SetUpLoopingCollisionSound, PATCH_JUMP); -InjectHook(0x5689D0, &cAudioManager::SetUpOneShotCollisionSound, PATCH_JUMP); -ENDPATCHES +#include "common.h" +#include "patcher.h" +#include "DMAudio.h" +#include "Entity.h" +#include "AudioCollision.h" +#include "AudioManager.h" +#include "AudioSamples.h" +#include "SurfaceTable.h" +#include "sampman.h" + +const int CollisionSoundIntensity = 60; + +void +cAudioCollisionManager::AddCollisionToRequestedQueue() +{ + int32 collisionsIndex; + int32 i; + + + if (m_bCollisionsInQueue < NUMAUDIOCOLLISIONS) + collisionsIndex = m_bCollisionsInQueue++; + else { + collisionsIndex = m_bIndicesTable[NUMAUDIOCOLLISIONS - 1]; + if (m_sQueue.m_fDistance >= m_asCollisions1[collisionsIndex].m_fDistance) return; + } + + m_asCollisions1[collisionsIndex] = m_sQueue; + + i = 0; + if(collisionsIndex) { + while(m_asCollisions1[m_bIndicesTable[i]].m_fDistance <= m_asCollisions1[collisionsIndex].m_fDistance) { + if(++i >= collisionsIndex) { + m_bIndicesTable[i] = collisionsIndex; + return; + } + } + memmove(&m_bIndicesTable[i + 1], &m_bIndicesTable[i], NUMAUDIOCOLLISIONS - 1 - i); + } + m_bIndicesTable[i] = collisionsIndex; +} + +float +cAudioManager::GetCollisionLoopingRatio(uint32 a, uint32 b, float c) const +{ + return GetCollisionRatio(c, 0.0f, 0.02f, 0.02f); +} + +float +cAudioManager::GetCollisionOneShotRatio(int32 a, float b) const +{ + float result; + + switch(a) { + case SURFACE_DEFAULT: + case SURFACE_TARMAC: + case SURFACE_PAVEMENT: + case SURFACE_STONE: + case SURFACE_BOLLARD: result = GetCollisionRatio(b, 10.f, 60.f, 50.f); break; + case SURFACE_GRASS: + case SURFACE_LOOSE30: result = GetCollisionRatio(b, 0.f, 2.f, 2.f); break; + case SURFACE_DIRT: result = GetCollisionRatio(b, 0.f, 2.f, 2.f); break; + case SURFACE_DIRTTRACK: result = GetCollisionRatio(b, 0.f, 2.f, 2.f); break; + case SURFACE_METAL6: result = GetCollisionRatio(b, 6.f, 50.f, 44.f); break; + case SURFACE_GLASS: result = GetCollisionRatio(b, 0.1f, 10.f, 9.9f); break; + case SURFACE_SCAFFOLD: + case SURFACE_STEEL: result = GetCollisionRatio(b, 30.f, 130.f, 100.f); break; + case SURFACE_METAL_DOOR: result = GetCollisionRatio(b, 20.f, 100.f, 80.f); break; + case SURFACE_BILLBOARD: result = GetCollisionRatio(b, 0.f, 4.f, 4.f); break; + case SURFACE_METAL_POLE: + case SURFACE_GATE: result = GetCollisionRatio(b, 1.f, 10.f, 9.f); break; + case SURFACE_STREET_LIGHT: result = GetCollisionRatio(b, 1.f, 10.f, 9.f); break; + case SURFACE_METAL14: result = GetCollisionRatio(b, 1.f, 15.f, 14.f); break; + case SURFACE_METAL15: result = GetCollisionRatio(b, 8.f, 50.f, 42.f); break; + case SURFACE_METAL_FENCE: result = GetCollisionRatio(b, 0.1f, 10.f, 9.9f); break; + case SURFACE_FLESH: result = GetCollisionRatio(b, 0.f, 20.f, 20.f); break; + case SURFACE_SAND: result = GetCollisionRatio(b, 0.f, 10.f, 10.f); break; + case SURFACE_PUDDLE: result = GetCollisionRatio(b, 0.f, 10.f, 10.f); break; + case SURFACE_WOOD: result = GetCollisionRatio(b, 1.f, 4.f, 3.f); break; + case SURFACE_WOOD_BOX: result = GetCollisionRatio(b, 0.1f, 5.f, 4.9f); break; + case SURFACE_WOOD_PLANK: result = GetCollisionRatio(b, 0.1f, 40.f, 39.9f); break; + case SURFACE_TIRE: + case SURFACE_RUBBER29: result = GetCollisionRatio(b, 0.f, 10.f, 10.f); break; + case SURFACE_HARD24: result = GetCollisionRatio(b, 0.1f, 4.f, 3.9f); break; + case SURFACE_HEDGE: result = GetCollisionRatio(b, 0.f, 0.5f, 0.5f); break; + case SURFACE_METAL27: result = GetCollisionRatio(b, 4.f, 40.f, 36.f); break; + case SURFACE_METAL28: result = GetCollisionRatio(b, 0.f, 5.f, 5.f); break; + default: result = 0.f; break; + } + + return result; +} + +float +cAudioManager::GetCollisionRatio(float a, float b, float c, float d) const +{ + float e; + e = a; + if(a <= b) return 0.0f; + if(c <= a) e = c; + return (e - b) / d; +} + +uint32 +cAudioManager::SetLoopingCollisionRequestedSfxFreqAndGetVol(cAudioCollision *audioCollision) +{ + uint8 surface1 = audioCollision->m_bSurface1; + uint8 surface2 = audioCollision->m_bSurface2; + int32 vol; + float ratio; + + if(surface1 == SURFACE_GRASS || surface2 == SURFACE_GRASS || surface1 == SURFACE_HEDGE || + surface2 == SURFACE_HEDGE) { + ratio = GetCollisionRatio(audioCollision->m_fIntensity2, 0.0001f, 0.09f, 0.0899f); + m_sQueueSample.m_nSampleIndex = SFX_RAIN; + m_sQueueSample.m_nFrequency = 13000.f * ratio + 35000; + vol = 50.f * ratio; + } else { + if(surface1 == SURFACE_PUDDLE || surface2 == SURFACE_PUDDLE) { + ratio = GetCollisionRatio(audioCollision->m_fIntensity2, 0.0001f, 0.09f, 0.0899f); + m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP; + m_sQueueSample.m_nFrequency = 6050.f * ratio + 16000; + vol = 30.f * ratio; + + } else { + if(surface1 == SURFACE_DIRT || surface2 == SURFACE_DIRT || surface1 == SURFACE_DIRTTRACK || + surface2 == SURFACE_DIRTTRACK || surface1 == SURFACE_SAND || surface2 == SURFACE_SAND) { + ratio = GetCollisionRatio(audioCollision->m_fIntensity2, 0.0001f, 0.09f, 0.0899f); + m_sQueueSample.m_nSampleIndex = SFX_GRAVEL_SKID; + m_sQueueSample.m_nFrequency = 6000.f * ratio + 10000; + vol = 50.f * ratio; + } else { + if(surface1 == SURFACE_FLESH || surface2 == SURFACE_FLESH) { return 0; } + ratio = GetCollisionRatio(audioCollision->m_fIntensity2, 0.0001f, 0.09f, 0.0899f); + m_sQueueSample.m_nSampleIndex = SFX_SCRAPE_CAR_1; + m_sQueueSample.m_nFrequency = 10000.f * ratio + 10000; + vol = 40.f * ratio; + } + } + } + if(audioCollision->m_nBaseVolume < 2) vol = audioCollision->m_nBaseVolume * vol / 2; + return vol; +} + +void +cAudioManager::SetUpLoopingCollisionSound(cAudioCollision *col, uint8 counter) +{ + if(col->m_fIntensity2 > 0.0016f) { + uint8 emittingVol = SetLoopingCollisionRequestedSfxFreqAndGetVol(col); + if(emittingVol) { + m_sQueueSample.m_fDistance = Sqrt(col->m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, CollisionSoundIntensity, m_sQueueSample.m_fDistance); + if(m_sQueueSample.m_bVolume) { + m_sQueueSample.m_counter = counter; + m_sQueueSample.m_vecPos = col->m_vecPosition; + m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 7; + m_sQueueSample.m_nLoopCount = 0; + m_sQueueSample.m_bEmittingVolume = emittingVol; + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_fSpeedMultiplier = 4.0f; + m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 5; + m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bRequireReflection = false; + AddSampleToRequestedQueue(); + } + } + } +} + +void +cAudioManager::SetUpOneShotCollisionSound(cAudioCollision *col) +{ + static const int32 gOneShotCol[] = { + SFX_COL_TARMAC_1, SFX_COL_TARMAC_1, SFX_COL_GRASS_1, + SFX_COL_GRAVEL_1, SFX_COL_MUD_1, SFX_COL_TARMAC_1, + SFX_COL_CAR_1, SFX_COL_GRASS_1, SFX_COL_SCAFFOLD_POLE_1, + SFX_COL_GARAGE_DOOR_1, SFX_COL_CAR_PANEL_1, SFX_COL_THICK_METAL_PLATE_1, + SFX_COL_SCAFFOLD_POLE_1, SFX_COL_LAMP_POST_1, SFX_COL_HYDRANT_1, + SFX_COL_HYDRANT_1, SFX_COL_METAL_CHAIN_FENCE_1, SFX_COL_PED_1, + SFX_COL_SAND_1, SFX_SPLASH_1, SFX_COL_WOOD_CRATES_1, + SFX_COL_WOOD_BENCH_1, SFX_COL_WOOD_SOLID_1, SFX_COL_GRASS_1, + SFX_COL_GRASS_1, SFX_COL_VEG_1, SFX_COL_TARMAC_1, + SFX_COL_CONTAINER_1, SFX_COL_NEWS_VENDOR_1, SFX_TYRE_BUMP, + SFX_COL_CARDBOARD_1, SFX_COL_TARMAC_1, SFX_COL_GATE}; + + int16 s1; + int16 s2; + + int32 emittingVol; + float ratio; + + static uint16 counter = 28; + + for(int32 i = 0; i < 2; i++) { + if(i) { + s1 = col->m_bSurface2; + s2 = col->m_bSurface1; + } else { + s1 = col->m_bSurface1; + s2 = col->m_bSurface2; + } + ratio = GetCollisionOneShotRatio(s1, col->m_fIntensity1); + if(s1 == SURFACE_METAL6 && s2 == SURFACE_FLESH) ratio = 0.25f * ratio; + if(s1 == SURFACE_METAL6 && ratio < 0.6f) { + s1 = SURFACE_BILLBOARD; + ratio = min(1.f, 2.f * ratio); + } + emittingVol = 40.f * ratio; + if(emittingVol) { + m_sQueueSample.m_fDistance = Sqrt(col->m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, CollisionSoundIntensity, m_sQueueSample.m_fDistance); + if(m_sQueueSample.m_bVolume) { + m_sQueueSample.m_nSampleIndex = gOneShotCol[s1]; + switch(m_sQueueSample.m_nSampleIndex) { + case SFX_COL_TARMAC_1: + m_sQueueSample.m_nSampleIndex += m_anRandomTable[3] % 5; + break; + case SFX_COL_CAR_PANEL_1: + m_sQueueSample.m_nSampleIndex += m_anRandomTable[0] % 6; + break; + case SFX_COL_LAMP_POST_1: + m_sQueueSample.m_nSampleIndex += m_anRandomTable[1] % 2; + break; + case SFX_COL_METAL_CHAIN_FENCE_1: + m_sQueueSample.m_nSampleIndex += m_anRandomTable[3] % 4; + break; + case SFX_COL_PED_1: + m_sQueueSample.m_nSampleIndex += m_anRandomTable[4] % 5; + break; + case SFX_COL_WOOD_CRATES_1: + m_sQueueSample.m_nSampleIndex += m_anRandomTable[4] % 4; + break; + case SFX_COL_WOOD_BENCH_1: + m_sQueueSample.m_nSampleIndex += m_anRandomTable[1] % 4; + break; + case SFX_COL_VEG_1: + m_sQueueSample.m_nSampleIndex += m_anRandomTable[2] % 5; + break; + case SFX_COL_NEWS_VENDOR_1: + m_sQueueSample.m_nSampleIndex += m_anRandomTable[2] % 3; + break; + case SFX_COL_CAR_1: + m_sQueueSample.m_nSampleIndex += m_anRandomTable[1] % 5; + break; + case SFX_COL_CARDBOARD_1: + m_sQueueSample.m_nSampleIndex += m_anRandomTable[3] % 2; + break; + default: break; + } + switch(s1) { + case SURFACE_GLASS: m_sQueueSample.m_nFrequency = 13500; break; + case SURFACE_METAL15: m_sQueueSample.m_nFrequency = 8819; break; + case SURFACE_PUDDLE: + m_sQueueSample.m_nFrequency = + 2 * SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + break; + case SURFACE_TIRE: m_sQueueSample.m_nFrequency = 6000; break; + case SURFACE_HARD24: m_sQueueSample.m_nFrequency = 8000; break; + default: + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + break; + } + m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); + m_sQueueSample.m_counter = counter++; + if(counter >= 255) counter = 28; + m_sQueueSample.m_vecPos = col->m_vecPosition; + m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_nReleasingVolumeModificator = 11; + m_sQueueSample.m_nLoopCount = 1; + m_sQueueSample.m_bEmittingVolume = emittingVol; + m_sQueueSample.m_nLoopStart = 0; + m_sQueueSample.m_nLoopEnd = -1; + m_sQueueSample.m_fSpeedMultiplier = 4.0f; + m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; + m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bRequireReflection = false; + AddSampleToRequestedQueue(); + } + } + } +} + +void +cAudioManager::ServiceCollisions() +{ + int i, j; + bool someArr1[NUMAUDIOCOLLISIONS]; + bool someArr2[NUMAUDIOCOLLISIONS]; + + m_sQueueSample.m_nEntityIndex = m_nCollisionEntity; + + for (int i = 0; i < NUMAUDIOCOLLISIONS; i++) + someArr1[i] = someArr2[i] = false; + + for (i = 0; i < m_sCollisionManager.m_bCollisionsInQueue; i++) { + for (j = 0; j < NUMAUDIOCOLLISIONS; j++) { + int index = m_sCollisionManager.m_bIndicesTable[i]; + if ((m_sCollisionManager.m_asCollisions1[index].m_pEntity1 == m_sCollisionManager.m_asCollisions2[j].m_pEntity1) + && (m_sCollisionManager.m_asCollisions1[index].m_pEntity2 == m_sCollisionManager.m_asCollisions2[j].m_pEntity2) + && (m_sCollisionManager.m_asCollisions1[index].m_bSurface1 == m_sCollisionManager.m_asCollisions2[j].m_bSurface1) + && (m_sCollisionManager.m_asCollisions1[index].m_bSurface2 == m_sCollisionManager.m_asCollisions2[j].m_bSurface2) + ) { + someArr1[index] = true; + someArr2[j] = true; + m_sCollisionManager.m_asCollisions1[index].m_nBaseVolume = ++m_sCollisionManager.m_asCollisions2[j].m_nBaseVolume; + SetUpLoopingCollisionSound(&m_sCollisionManager.m_asCollisions1[index], j); + break; + } + } + } + + for (i = 0; i < NUMAUDIOCOLLISIONS; i++) { + if (!someArr2[i]) { + m_sCollisionManager.m_asCollisions2[i].m_pEntity1 = nil; + m_sCollisionManager.m_asCollisions2[i].m_pEntity2 = nil; + m_sCollisionManager.m_asCollisions2[i].m_bSurface1 = SURFACE_DEFAULT; + m_sCollisionManager.m_asCollisions2[i].m_bSurface2 = SURFACE_DEFAULT; + m_sCollisionManager.m_asCollisions2[i].m_fIntensity2 = 0.0f; + m_sCollisionManager.m_asCollisions2[i].m_fIntensity1 = 0.0f; + m_sCollisionManager.m_asCollisions2[i].m_vecPosition = CVector(0.0f, 0.0f, 0.0f); + m_sCollisionManager.m_asCollisions2[i].m_fDistance = 0.0f; + } + } + + for (i = 0; i < m_sCollisionManager.m_bCollisionsInQueue; i++) { + int index = m_sCollisionManager.m_bIndicesTable[i]; + if (!someArr1[index]) { + for (j = 0; j < NUMAUDIOCOLLISIONS; j++) { + if (someArr2[j]) { + m_sCollisionManager.m_asCollisions2[j].m_nBaseVolume = 1; + m_sCollisionManager.m_asCollisions2[j].m_pEntity1 = m_sCollisionManager.m_asCollisions1[index].m_pEntity1; + m_sCollisionManager.m_asCollisions2[j].m_pEntity2 = m_sCollisionManager.m_asCollisions1[index].m_pEntity2; + m_sCollisionManager.m_asCollisions2[j].m_bSurface1 = m_sCollisionManager.m_asCollisions1[index].m_bSurface1; + m_sCollisionManager.m_asCollisions2[j].m_bSurface2 = m_sCollisionManager.m_asCollisions1[index].m_bSurface2; + break; + } + } + SetUpOneShotCollisionSound(&m_sCollisionManager.m_asCollisions1[index]); + SetUpLoopingCollisionSound(&m_sCollisionManager.m_asCollisions1[index], j); + } + } + + for (int i = 0; i < NUMAUDIOCOLLISIONS; i++) + m_sCollisionManager.m_bIndicesTable[i] = NUMAUDIOCOLLISIONS; + m_sCollisionManager.m_bCollisionsInQueue = 0; +} + +void +cAudioManager::ReportCollision(CEntity *entity1, CEntity *entity2, uint8 surface1, uint8 surface2, float collisionPower, + float velocity) +{ + float distSquared; + CVector v1; + CVector v2; + + if(!m_bIsInitialised || m_nCollisionEntity < 0 || m_bUserPause || + (velocity < 0.0016f && collisionPower < 0.01f)) + return; + + if(entity1->IsBuilding()) { + v1 = v2 = entity2->GetPosition(); + } else if(entity2->IsBuilding()) { + v1 = v2 = entity1->GetPosition(); + } else { + v1 = entity1->GetPosition(); + v2 = entity2->GetPosition(); + } + CVector pos = (v1 + v2) * 0.5f; + distSquared = GetDistanceSquared(&pos); + if(distSquared < SQR(CollisionSoundIntensity)) { + m_sCollisionManager.m_sQueue.m_pEntity1 = entity1; + m_sCollisionManager.m_sQueue.m_pEntity2 = entity2; + m_sCollisionManager.m_sQueue.m_bSurface1 = surface1; + m_sCollisionManager.m_sQueue.m_bSurface2 = surface2; + m_sCollisionManager.m_sQueue.m_fIntensity1 = collisionPower; + m_sCollisionManager.m_sQueue.m_fIntensity2 = velocity; + m_sCollisionManager.m_sQueue.m_vecPosition = pos; + m_sCollisionManager.m_sQueue.m_fDistance = distSquared; + m_sCollisionManager.AddCollisionToRequestedQueue(); + } +} + +STARTPATCHES +InjectHook(0x5685E0, &cAudioCollisionManager::AddCollisionToRequestedQueue, PATCH_JUMP); +InjectHook(0x569060, &cAudioManager::GetCollisionOneShotRatio, PATCH_JUMP); +InjectHook(0x5693B0, &cAudioManager::GetCollisionRatio, PATCH_JUMP); +InjectHook(0x568410, &cAudioManager::ReportCollision, PATCH_JUMP); +InjectHook(0x5686D0, &cAudioManager::ServiceCollisions, PATCH_JUMP); +InjectHook(0x568E20, &cAudioManager::SetLoopingCollisionRequestedSfxFreqAndGetVol, PATCH_JUMP); +InjectHook(0x568D30, &cAudioManager::SetUpLoopingCollisionSound, PATCH_JUMP); +InjectHook(0x5689D0, &cAudioManager::SetUpOneShotCollisionSound, PATCH_JUMP); +ENDPATCHES diff --git a/src/audio/AudioCollision.h b/src/audio/AudioCollision.h index cf201735..956da3e3 100644 --- a/src/audio/AudioCollision.h +++ b/src/audio/AudioCollision.h @@ -1,36 +1,36 @@ -#pragma once - -#define NUMAUDIOCOLLISIONS 10 - -class cAudioCollision -{ -public: - CEntity *m_pEntity1; - CEntity *m_pEntity2; - uint8 m_bSurface1; - uint8 m_bSurface2; - float m_fIntensity1; - float m_fIntensity2; - CVector m_vecPosition; - float m_fDistance; - int32 m_nBaseVolume; - - // no methods -}; - -static_assert(sizeof(cAudioCollision) == 40, "cAudioCollision: error"); - -class cAudioCollisionManager -{ -public: - cAudioCollision m_asCollisions1[NUMAUDIOCOLLISIONS]; - cAudioCollision m_asCollisions2[NUMAUDIOCOLLISIONS]; - uint8 m_bIndicesTable[NUMAUDIOCOLLISIONS]; - uint8 m_bCollisionsInQueue; - cAudioCollision m_sQueue; - - // reversed all methods - void AddCollisionToRequestedQueue(); /// ok -}; - +#pragma once + +#define NUMAUDIOCOLLISIONS 10 + +class cAudioCollision +{ +public: + CEntity *m_pEntity1; + CEntity *m_pEntity2; + uint8 m_bSurface1; + uint8 m_bSurface2; + float m_fIntensity1; + float m_fIntensity2; + CVector m_vecPosition; + float m_fDistance; + int32 m_nBaseVolume; + + // no methods +}; + +static_assert(sizeof(cAudioCollision) == 40, "cAudioCollision: error"); + +class cAudioCollisionManager +{ +public: + cAudioCollision m_asCollisions1[NUMAUDIOCOLLISIONS]; + cAudioCollision m_asCollisions2[NUMAUDIOCOLLISIONS]; + uint8 m_bIndicesTable[NUMAUDIOCOLLISIONS]; + uint8 m_bCollisionsInQueue; + cAudioCollision m_sQueue; + + // reversed all methods + void AddCollisionToRequestedQueue(); /// ok +}; + static_assert(sizeof(cAudioCollisionManager) == 852, "cAudioCollisionManager: error"); \ No newline at end of file diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 0e656475..910ffcaf 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include "DMAudio.h" #include "common.h" diff --git a/src/audio/PoliceRadio.cpp b/src/audio/PoliceRadio.cpp index 91312867..3ba16ef3 100644 --- a/src/audio/PoliceRadio.cpp +++ b/src/audio/PoliceRadio.cpp @@ -1,789 +1,789 @@ -#include "common.h" -#include "patcher.h" -#include "DMAudio.h" -#include "AudioManager.h" -#include "AudioSamples.h" -#include "MusicManager.h" -#include "PoliceRadio.h" -#include "PlayerPed.h" -#include "sampman.h" -#include "Zones.h" -#include "Vehicle.h" -#include "World.h" - -const int maxVolume = 127; -const int channels = ARRAY_SIZE(cAudioManager::m_asActiveSamples); -const int policeChannel = channels + 1; - -struct tPoliceRadioZone { - char m_aName[8]; - uint32 m_nSampleIndex; - int32 field_12; -}; - -tPoliceRadioZone (&ZoneSfx)[NUMAUDIOZONES] = *(tPoliceRadioZone(*)[NUMAUDIOZONES])*(uintptr*)0x880240; -char *SubZo2Label = (char*)0x6E9918; -char *SubZo3Label = (char*)0x6E9870; - -int32 &g_nMissionAudioSfx = *(int32*)0x60ED84; -int8 &g_nMissionAudioPlayingStatus = *(int8*)0x60ED88; -uint8 &gSpecialSuspectLastSeenReport = *(uint8*)0x95CD4D; -uint32 (&gMinTimeToNextReport)[NUM_CRIME_TYPES] = *(uint32(*)[NUM_CRIME_TYPES])*(uintptr*)0x8E2828; - -void -cAudioManager::InitialisePoliceRadioZones() -{ - for (int32 i = 0; i < NUMAUDIOZONES; i++) - memset(ZoneSfx[i].m_aName, 0, 8); - -#define SETZONESFX(i, name, sample) \ - strcpy(ZoneSfx[i].m_aName, name); \ - ZoneSfx[i].m_nSampleIndex = sample; - - SETZONESFX(0, "HOSPI_2", SFX_POLICE_RADIO_ROCKFORD); - SETZONESFX(1, "CONSTRU", SFX_POLICE_RADIO_FORT_STAUNTON); - SETZONESFX(2, "STADIUM", SFX_POLICE_RADIO_ASPATRIA); - SETZONESFX(3, "YAKUSA", SFX_POLICE_RADIO_TORRINGTON); - SETZONESFX(4, "SHOPING", SFX_POLICE_RADIO_BEDFORD_POINT); - SETZONESFX(5, "COM_EAS", SFX_POLICE_RADIO_NEWPORT); - SETZONESFX(6, "PARK", SFX_POLICE_RADIO_BELLEVILLE_PARK); - SETZONESFX(7, "UNIVERS", SFX_POLICE_RADIO_LIBERTY_CAMPUS); - SETZONESFX(8, "BIG_DAM", SFX_POLICE_RADIO_COCHRANE_DAM); - SETZONESFX(9, "SUB_IND", SFX_POLICE_RADIO_PIKE_CREEK); - SETZONESFX(10, "SWANKS", SFX_POLICE_RADIO_CEDAR_GROVE); - SETZONESFX(11, "PROJECT", SFX_POLICE_RADIO_WICHITA_GARDENS); - SETZONESFX(12, "AIRPORT", SFX_POLICE_RADIO_FRANCIS_INTERNATIONAL_AIRPORT); - SETZONESFX(13, "PORT_W", SFX_POLICE_RADIO_CALLAHAN_POINT); - SETZONESFX(14, "PORT_S", SFX_POLICE_RADIO_ATLANTIC_QUAYS); - SETZONESFX(15, "PORT_E", SFX_POLICE_RADIO_PORTLAND_HARBOUR); - SETZONESFX(16, "PORT_I", SFX_POLICE_RADIO_TRENTON); - SETZONESFX(17, "CHINA", SFX_POLICE_RADIO_CHINATOWN); - SETZONESFX(18, "REDLIGH", SFX_POLICE_RADIO_RED_LIGHT_DISTRICT); - SETZONESFX(19, "TOWERS", SFX_POLICE_RADIO_HEPBURN_HEIGHTS); - SETZONESFX(20, "LITTLEI", SFX_POLICE_RADIO_SAINT_MARKS); - SETZONESFX(21, "HARWOOD", SFX_POLICE_RADIO_HARWOOD); - SETZONESFX(22, "EASTBAY", SFX_POLICE_RADIO_PORTLAND_BEACH); - SETZONESFX(23, "S_VIEW", SFX_POLICE_RADIO_PORTLAND_STRAIGHTS); - SETZONESFX(24, "CITYZON", SFX_POLICE_RADIO_LIBERTY_CITY); - SETZONESFX(25, "IND_ZON", SFX_POLICE_RADIO_PORTLAND); - SETZONESFX(26, "COM_ZON", SFX_POLICE_RADIO_STAUNTON_ISLAND); - SETZONESFX(27, "SUB_ZON", SFX_POLICE_RADIO_SHORESIDE_VALE); - SETZONESFX(28, "SUB_ZO2", SFX_POLICE_RADIO_SHORESIDE_VALE); - SETZONESFX(29, "SUB_ZO3", SFX_POLICE_RADIO_SHORESIDE_VALE); - SETZONESFX(30, "A", SFX_POLICE_RADIO_ROCKFORD); - SETZONESFX(31, "A", SFX_POLICE_RADIO_ROCKFORD); - SETZONESFX(32, "A", SFX_POLICE_RADIO_ROCKFORD); - SETZONESFX(33, "A", SFX_POLICE_RADIO_ROCKFORD); - SETZONESFX(34, "A", SFX_POLICE_RADIO_ROCKFORD); - -#undef SETZONESFX - - strcpy(SubZo2Label, "SUB_ZO2"); - strcpy(SubZo3Label, "SUB_ZO3"); -} - -void -cAudioManager::InitialisePoliceRadio() -{ - m_sPoliceRadioQueue.policeChannelTimer = 0; - m_sPoliceRadioQueue.policeChannelTimerSeconds = 0; - m_sPoliceRadioQueue.policeChannelCounterSeconds = 0; - for (int32 i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) - m_sPoliceRadioQueue.crimes[i].type = 0; - - SampleManager.SetChannelReverbFlag(policeChannel, 0); - gSpecialSuspectLastSeenReport = false; - for (int32 i = 0; i < ARRAY_SIZE(gMinTimeToNextReport); i++) - gMinTimeToNextReport[i] = m_FrameCounter; -} - -void -cAudioManager::ResetPoliceRadio() -{ - if (!m_bIsInitialised) return; - if (SampleManager.GetChannelUsedFlag(policeChannel)) SampleManager.StopChannel(policeChannel); - InitialisePoliceRadio(); -} - -void -cAudioManager::SetMissionScriptPoliceAudio(int32 sfx) const -{ - if (!m_bIsInitialised) return; - if (g_nMissionAudioPlayingStatus != 1) { - g_nMissionAudioPlayingStatus = 0; - g_nMissionAudioSfx = sfx; - } -} - -int8 -cAudioManager::GetMissionScriptPoliceAudioPlayingStatus() const -{ - return g_nMissionAudioPlayingStatus; -} - -void -cAudioManager::DoPoliceRadioCrackle() -{ - m_sQueueSample.m_nEntityIndex = m_nPoliceChannelEntity; - m_sQueueSample.m_counter = 0; - m_sQueueSample.m_nSampleIndex = SFX_POLICE_RADIO_CRACKLE; - m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_bIs2D = true; - m_sQueueSample.m_nReleasingVolumeModificator = 10; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_RADIO_CRACKLE); - m_sQueueSample.m_bVolume = m_anRandomTable[2] % 20 + 15; - m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bEmittingVolume = m_sQueueSample.m_bVolume; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_POLICE_RADIO_CRACKLE); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_POLICE_RADIO_CRACKLE); - m_sQueueSample.m_bReleasingSoundFlag = 0; - m_sQueueSample.m_bReverbFlag = false; - m_sQueueSample.m_bOffset = 63; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bRequireReflection = false; - AddSampleToRequestedQueue(); -} - -void -cAudioManager::ServicePoliceRadio() -{ - int32 wantedLevel = 0; // bug?; - static uint32 nLastSeen = 300; - - if (!m_bIsInitialised) return; - - if (!m_bUserPause) { - bool crimeReport = SetupCrimeReport(); - wantedLevel = FindPlayerPed()->m_pWanted->m_nWantedLevel; - if (!crimeReport) { - if (wantedLevel) { - if (nLastSeen) { - --nLastSeen; - } else { - nLastSeen = m_anRandomTable[1] % 1000 + 2000; - SetupSuspectLastSeenReport(); - } - } - } - } - ServicePoliceRadioChannel(wantedLevel); -} - -void -cAudioManager::ServicePoliceRadioChannel(int32 wantedLevel) -{ - bool processed = false; - uint32 sample; - int32 freq; - - static int cWait = 0; - static bool bChannelOpen = false; - static uint8 bMissionAudioPhysicalPlayingStatus = 0; - static int32 PoliceChannelFreq = 5500; - - if (!m_bIsInitialised) return; - - if (m_bUserPause) { - if (SampleManager.GetChannelUsedFlag(policeChannel)) SampleManager.StopChannel(policeChannel); - if (g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && bMissionAudioPhysicalPlayingStatus == 1 && - SampleManager.IsStreamPlaying(1)) { - SampleManager.PauseStream(1, 1); - } - } else { - if (m_bPreviousUserPause && g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && - bMissionAudioPhysicalPlayingStatus == 1) { - SampleManager.PauseStream(0, 1); - } - if (m_sPoliceRadioQueue.policeChannelTimer == 0) bChannelOpen = false; - if (cWait) { - --cWait; - return; - } - if (g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && !bChannelOpen) { - if (g_nMissionAudioPlayingStatus) { - if (g_nMissionAudioPlayingStatus == 1 && !bMissionAudioPhysicalPlayingStatus && - SampleManager.IsStreamPlaying(1)) { - bMissionAudioPhysicalPlayingStatus = 1; - } - if (bMissionAudioPhysicalPlayingStatus == 1) { - if (SampleManager.IsStreamPlaying(1)) { - DoPoliceRadioCrackle(); - } else { - bMissionAudioPhysicalPlayingStatus = 2; - g_nMissionAudioPlayingStatus = 2; - g_nMissionAudioSfx = TOTAL_AUDIO_SAMPLES; - cWait = 30; - } - return; - } - } else if (!SampleManager.GetChannelUsedFlag(policeChannel)) { - SampleManager.PreloadStreamedFile(g_nMissionAudioSfx, 1); - SampleManager.SetStreamedVolumeAndPan(maxVolume, 63, 1, 1); - SampleManager.StartPreloadedStreamedFile(1); - g_nMissionAudioPlayingStatus = 1; - bMissionAudioPhysicalPlayingStatus = 0; - return; - } - } - if (bChannelOpen) DoPoliceRadioCrackle(); - if ((g_nMissionAudioSfx == TOTAL_AUDIO_SAMPLES || g_nMissionAudioPlayingStatus != 1) && - !SampleManager.GetChannelUsedFlag(policeChannel) && m_sPoliceRadioQueue.policeChannelTimer) { - if (m_sPoliceRadioQueue.policeChannelTimer) { - sample = m_sPoliceRadioQueue.crimesSamples[m_sPoliceRadioQueue.policeChannelCounterSeconds]; - m_sPoliceRadioQueue.policeChannelTimer--; - m_sPoliceRadioQueue.policeChannelCounterSeconds = (m_sPoliceRadioQueue.policeChannelCounterSeconds + 1) % 60; - } else { - sample = TOTAL_AUDIO_SAMPLES; - } - if (!wantedLevel) { - if (gSpecialSuspectLastSeenReport) { - gSpecialSuspectLastSeenReport = 0; - } else if (((sample >= SFX_POLICE_RADIO_MESSAGE_NOISE_1) && (sample <= SFX_POLICE_RADIO_MESSAGE_NOISE_3)) || sample == TOTAL_AUDIO_SAMPLES) { - bChannelOpen = false; - processed = true; - } - } - if (sample == TOTAL_AUDIO_SAMPLES) { - if (!processed) cWait = 30; - } else { - SampleManager.InitialiseChannel(policeChannel, sample, 0); - switch (sample) { - case SFX_POLICE_RADIO_MESSAGE_NOISE_1: - case SFX_POLICE_RADIO_MESSAGE_NOISE_2: - case SFX_POLICE_RADIO_MESSAGE_NOISE_3: - freq = m_anRandomTable[4] % 2000 + 10025; - bChannelOpen = bChannelOpen == false; - break; - default: freq = SampleManager.GetSampleBaseFrequency(sample); break; - } - PoliceChannelFreq = freq; - SampleManager.SetChannelFrequency(policeChannel, freq); - SampleManager.SetChannelVolume(policeChannel, 100); - SampleManager.SetChannelPan(policeChannel, 63); - SampleManager.SetChannelLoopCount(policeChannel, 1); - SampleManager.SetChannelLoopPoints(policeChannel, 0, -1); - SampleManager.StartChannel(policeChannel); - } - if (processed) ResetPoliceRadio(); - } - } -} - -bool -cAudioManager::SetupCrimeReport() -{ - int16 audioZoneId; - CZone *zone; - float rangeX; - float rangeY; - float halfX; - float halfY; - float quarterX; - float quarterY; - int i; - int32 sampleIndex; - bool processed = false; - - if (MusicManager.m_nMusicMode == MUSICMODE_CUTSCENE) return false; - - if (60 - m_sPoliceRadioQueue.policeChannelTimer <= 9) { - AgeCrimes(); - return true; - } - - for (i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) { - if (m_sPoliceRadioQueue.crimes[i].type != CRIME_NONE) - break; - } - - if (i == ARRAY_SIZE(m_sPoliceRadioQueue.crimes)) return false; - audioZoneId = CTheZones::FindAudioZone(&m_sPoliceRadioQueue.crimes[i].position); - if (audioZoneId >= 0 && audioZoneId < NUMAUDIOZONES) { - zone = &CTheZones::ZoneArray[CTheZones::AudioZoneArray[audioZoneId]]; - for (int j = 0; j < NUMAUDIOZONES; j++) { - if (strcmp(zone->name, ZoneSfx[j].m_aName) == 0) { - sampleIndex = ZoneSfx[j].m_nSampleIndex; - m_sPoliceRadioQueue.Add(m_anRandomTable[4] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); - m_sPoliceRadioQueue.Add(m_anRandomTable[0] % 3 + SFX_WEVE_GOT); - m_sPoliceRadioQueue.Add(m_anRandomTable[1] % 2 + SFX_A_10_1); - switch (m_sPoliceRadioQueue.crimes[i].type) { - case CRIME_PED_BURNED: m_sPoliceRadioQueue.crimes[i].type = CRIME_HIT_PED; break; - case CRIME_COP_BURNED: m_sPoliceRadioQueue.crimes[i].type = CRIME_HIT_COP; break; - case CRIME_VEHICLE_BURNED: m_sPoliceRadioQueue.crimes[i].type = CRIME_STEAL_CAR; break; - case CRIME_DESTROYED_CESSNA: m_sPoliceRadioQueue.crimes[i].type = CRIME_SHOOT_HELI; break; - default: break; - } - m_sPoliceRadioQueue.Add(m_sPoliceRadioQueue.crimes[i].type + SFX_CRIME_1 - 1); - m_sPoliceRadioQueue.Add(SFX_IN); - if (sampleIndex == SFX_POLICE_RADIO_SHORESIDE_VALE && - (strcmp(zone->name, SubZo2Label) == 0 || strcmp(zone->name, SubZo3Label) == 0)) { - m_sPoliceRadioQueue.Add(SFX_NORTH); - m_sPoliceRadioQueue.Add(SFX_EAST); - } else { - rangeX = zone->maxx - zone->minx; - rangeY = zone->maxy - zone->miny; - halfX = 0.5f * rangeX + zone->minx; - halfY = 0.5f * rangeY + zone->miny; - quarterX = 0.25f * rangeX; - quarterY = 0.25f * rangeY; - - if (m_sPoliceRadioQueue.crimes[i].position.y > halfY + quarterY) { - m_sPoliceRadioQueue.Add(SFX_NORTH); - processed = true; - } else if (m_sPoliceRadioQueue.crimes[i].position.y < halfY - quarterY) { - m_sPoliceRadioQueue.Add(SFX_SOUTH); - processed = true; - } - - if (m_sPoliceRadioQueue.crimes[i].position.x > halfX + quarterX) - m_sPoliceRadioQueue.Add(SFX_EAST); - else if (m_sPoliceRadioQueue.crimes[i].position.x < halfX - quarterX) - m_sPoliceRadioQueue.Add(SFX_WEST); - else if (!processed) - m_sPoliceRadioQueue.Add(SFX_CENTRAL); - - m_sPoliceRadioQueue.Add(sampleIndex); - m_sPoliceRadioQueue.Add(m_anRandomTable[2] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); - m_sPoliceRadioQueue.Add(TOTAL_AUDIO_SAMPLES); - } - break; - } - } - } - m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE; - AgeCrimes(); - return true; -} - -void -cAudioManager::SetupSuspectLastSeenReport() -{ - CVehicle *veh; - uint8 color1; - int32 main_color; - int32 sample; - - int32 color_pre_modifier; - int32 color_post_modifier; - - const int32 gCarColourTable[][3] = { - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLACK, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_WHITE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_BRIGHT, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_BLUE, SFX_POLICE_RADIO_GREY}, -#ifdef FIX_BUGS - {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, -#else - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, -#endif - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, -#ifdef FIX_BUGS - {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, -#else - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, -#endif - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, -#ifdef FIX_BUGS - {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, -#else - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, -#endif - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, -#ifdef FIX_BUGS - {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, -#else - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, -#endif - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, -#ifdef FIX_BUGS - {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, -#else - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, -#endif - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, -#ifdef FIX_BUGS - {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_PURPLE, SFX_POLICE_RADIO_BLUE}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, -#else - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, -#endif - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, -#ifdef FIX_BUGS - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, SFX_POLICE_RADIO_GREY}, -#else - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, -#endif - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, -#ifdef FIX_BUGS - {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, -#else - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, -#endif - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, -#ifdef FIX_BUGS - {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, -#else - {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, -#endif - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, - {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES} - }; - - if (MusicManager.m_nMusicMode != MUSICMODE_CUTSCENE) { - veh = FindPlayerVehicle(); - if (veh != nil) { - if (60 - m_sPoliceRadioQueue.policeChannelTimer > 9) { - color1 = veh->m_currentColour1; - if (color1 >= ARRAY_SIZE(gCarColourTable)) { - debug("\n *** UNKNOWN CAR COLOUR %d *** ", color1); - } else { - main_color = gCarColourTable[color1][1]; - color_pre_modifier = gCarColourTable[color1][0]; - color_post_modifier = gCarColourTable[color1][2]; - switch (veh->m_modelIndex) { -#ifdef FIX_BUGS - case MI_COLUMB: - main_color = SFX_POLICE_RADIO_BLUE; - color_pre_modifier = color_post_modifier = TOTAL_AUDIO_SAMPLES; -#endif - case MI_LANDSTAL: - case MI_BLISTA: sample = SFX_POLICE_RADIO_CRUISER; break; -#ifdef FIX_BUGS - case MI_YARDIE: - color_pre_modifier = TOTAL_AUDIO_SAMPLES; - main_color = SFX_POLICE_RADIO_RED; - color_post_modifier = SFX_POLICE_RADIO_YELLOW; - sample = SFX_POLICE_RADIO_CONVERTIBLE; break; - case MI_DIABLOS: - main_color = SFX_POLICE_RADIO_BLACK; -#endif - case MI_IDAHO: - case MI_STALLION: sample = SFX_POLICE_RADIO_CONVERTIBLE; break; -#ifdef FIX_BUGS - case MI_YAKUZA: - color_pre_modifier = TOTAL_AUDIO_SAMPLES; - main_color = SFX_POLICE_RADIO_SILVER; - color_post_modifier = SFX_POLICE_RADIO_RED; -#endif - case MI_STINGER: - case MI_INFERNUS: - case MI_CHEETAH: - case MI_BANSHEE: sample = SFX_POLICE_RADIO_SPORTS_CAR; break; -#ifdef FIX_BUGS - case MI_MAFIA: - color_pre_modifier = color_post_modifier = TOTAL_AUDIO_SAMPLES; - main_color = SFX_POLICE_RADIO_GREY; - case MI_KURUMA: -#endif - case MI_PEREN: - case MI_SENTINEL: - case MI_FBICAR: sample = SFX_POLICE_RADIO_SALOON; break; - case MI_PATRIOT: - case MI_BOBCAT: sample = SFX_POLICE_RADIO_PICKUP; break; - case MI_FIRETRUCK: sample = SFX_POLICE_RADIO_FIRE_TRUCK; break; -#ifdef FIX_BUGS - case MI_LINERUN: - case MI_FLATBED: -#endif - case MI_TRASH: - case MI_BARRACKS: sample = SFX_POLICE_RADIO_TRUCK; break; - case MI_STRETCH: sample = SFX_POLICE_RADIO_LIMO; break; -#ifdef FIX_BUGS - case MI_CORPSE: -#endif - case MI_MANANA: - case MI_ESPERANT: sample = SFX_POLICE_RADIO_2_DOOR; break; -#ifdef FIX_BUGS - case MI_HOODS: - color_pre_modifier = TOTAL_AUDIO_SAMPLES; - main_color = SFX_POLICE_RADIO_BLUE; - color_post_modifier = SFX_POLICE_RADIO_GREEN; - case MI_BELLYUP: - case MI_YANKEE: - case MI_TOYZ: - case MI_MRWONGS: - case MI_PANLANT: -#endif - case MI_PONY: - case MI_MULE: - case MI_MOONBEAM: - case MI_ENFORCER: - case MI_SECURICA: - case MI_RUMPO: sample = SFX_POLICE_RADIO_VAN; break; - case MI_AMBULAN: sample = SFX_POLICE_RADIO_AMBULANCE; break; - case MI_TAXI: - case MI_CABBIE: - case MI_BORGNINE: sample = SFX_POLICE_RADIO_TAXI; break; - case MI_MRWHOOP: - sample = SFX_POLICE_RADIO_ICE_CREAM_VAN; - break; - case MI_BFINJECT: sample = SFX_POLICE_RADIO_BUGGY; break; - case MI_POLICE: sample = SFX_POLICE_RADIO_POLICE_CAR; break; -#ifdef FIX_BUGS - case MI_SPEEDER: - case MI_REEFER: - case MI_GHOST: -#endif - case MI_PREDATOR: sample = SFX_POLICE_RADIO_BOAT; break; - case MI_BUS: - case MI_COACH: sample = SFX_POLICE_RADIO_BUS; break; - case MI_RHINO: - sample = SFX_POLICE_RADIO_TANK; - main_color = TOTAL_AUDIO_SAMPLES; - color_post_modifier = TOTAL_AUDIO_SAMPLES; - break; - case MI_TRAIN: - sample = SFX_POLICE_RADIO_SUBWAY_CAR; - main_color = TOTAL_AUDIO_SAMPLES; - color_post_modifier = TOTAL_AUDIO_SAMPLES; - - break; - default: - debug("\n *** UNKNOWN CAR MODEL INDEX %d *** ", veh->m_modelIndex); - return; - } - m_sPoliceRadioQueue.Add(m_anRandomTable[4] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); - m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_SUSPECT); - if (m_anRandomTable[3] % 2) - m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_LAST_SEEN); -#ifdef FIX_BUGS - if (main_color == SFX_POLICE_RADIO_ORANGE && color_pre_modifier == TOTAL_AUDIO_SAMPLES) -#else - if (main_color == SFX_POLICE_RADIO_ORANGE) -#endif - m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_IN_AN); - else - m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_IN_A); - if (color_pre_modifier != TOTAL_AUDIO_SAMPLES) - m_sPoliceRadioQueue.Add(color_pre_modifier); - if (main_color != TOTAL_AUDIO_SAMPLES) - m_sPoliceRadioQueue.Add(main_color); - if (color_post_modifier != TOTAL_AUDIO_SAMPLES) - m_sPoliceRadioQueue.Add(color_post_modifier); - m_sPoliceRadioQueue.Add(sample); - m_sPoliceRadioQueue.Add(m_anRandomTable[0] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); - m_sPoliceRadioQueue.Add(TOTAL_AUDIO_SAMPLES); - } - } - } else if (60 - m_sPoliceRadioQueue.policeChannelTimer > 4) { - m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_MESSAGE_NOISE_1); - m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_SUSPECT); - m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_ON_FOOT); - m_sPoliceRadioQueue.Add(m_anRandomTable[0] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); - m_sPoliceRadioQueue.Add(TOTAL_AUDIO_SAMPLES); - } - } -} - - - -void -cAudioManager::ReportCrime(int32 type, const CVector *pos) -{ - int32 lastCrime = ARRAY_SIZE(m_sPoliceRadioQueue.crimes); - if (m_bIsInitialised && MusicManager.m_nMusicMode != MUSICMODE_CUTSCENE && FindPlayerPed()->m_pWanted->m_nWantedLevel > 0 && - (type > CRIME_NONE || type < NUM_CRIME_TYPES) && m_FrameCounter >= gMinTimeToNextReport[type]) { - for (int32 i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) { - if (m_sPoliceRadioQueue.crimes[i].type) { - if (m_sPoliceRadioQueue.crimes[i].type == type) { - m_sPoliceRadioQueue.crimes[i].position = *pos; - m_sPoliceRadioQueue.crimes[i].timer = 0; - return; - } - } else { - lastCrime = i; - } - } - - if (lastCrime < ARRAY_SIZE(m_sPoliceRadioQueue.crimes)) { - m_sPoliceRadioQueue.crimes[lastCrime].type = type; - m_sPoliceRadioQueue.crimes[lastCrime].position = *pos; - m_sPoliceRadioQueue.crimes[lastCrime].timer = 0; - gMinTimeToNextReport[type] = m_FrameCounter + 500; - } - } -} - -void -cAudioManager::PlaySuspectLastSeen(float x, float y, float z) -{ - int16 audioZone; - CZone *zone; - float rangeX; - float rangeY; - float halfX; - float halfY; - float quarterX; - float quarterY; - int32 sample; - bool processed = false; - CVector vec = CVector(x, y, z); - - if (!m_bIsInitialised) return; - - if (MusicManager.m_nMusicMode != MUSICMODE_CUTSCENE && 60 - m_sPoliceRadioQueue.policeChannelTimer > 9) { - audioZone = CTheZones::FindAudioZone(&vec); - if (audioZone >= 0 && audioZone < NUMAUDIOZONES) { - zone = &CTheZones::ZoneArray[CTheZones::AudioZoneArray[audioZone]]; - for (int i = 0; i < NUMAUDIOZONES; i++) { - if (strcmp(zone->name, ZoneSfx[i].m_aName) == 0) { - sample = ZoneSfx[i].m_nSampleIndex; - m_sPoliceRadioQueue.Add(m_anRandomTable[4] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); - m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_SUSPECT); - m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_LAST_SEEN); - m_sPoliceRadioQueue.Add(SFX_IN); - if (sample == SFX_POLICE_RADIO_SHORESIDE_VALE && - (strcmp(zone->name, SubZo2Label) == 0 || - strcmp(zone->name, SubZo3Label) == 0)) { - m_sPoliceRadioQueue.Add(SFX_NORTH); - m_sPoliceRadioQueue.Add(SFX_EAST); - } else { - rangeX = zone->maxx - zone->minx; - rangeY = zone->maxy - zone->miny; - halfX = 0.5f * rangeX + zone->minx; - halfY = 0.5f * rangeY + zone->miny; - quarterX = 0.25f * rangeX; - quarterY = 0.25f * rangeY; - - if (vec.y > halfY + quarterY) { - m_sPoliceRadioQueue.Add(SFX_NORTH); - processed = true; - } else if (vec.y < halfY - quarterY) { - m_sPoliceRadioQueue.Add(SFX_SOUTH); - processed = true; - } - - if (vec.x > halfX + quarterX) - m_sPoliceRadioQueue.Add(SFX_EAST); - else if (vec.x < halfX - quarterX) - m_sPoliceRadioQueue.Add(SFX_WEST); - else if (!processed) - m_sPoliceRadioQueue.Add(SFX_CENTRAL); - } - m_sPoliceRadioQueue.Add(sample); - m_sPoliceRadioQueue.Add(m_anRandomTable[2] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); - m_sPoliceRadioQueue.Add(TOTAL_AUDIO_SAMPLES); - gSpecialSuspectLastSeenReport = true; - break; - } - } - } - } -} - -void -cAudioManager::AgeCrimes() -{ - for (uint8 i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) { - if (m_sPoliceRadioQueue.crimes[i].type != CRIME_NONE) { - if (++m_sPoliceRadioQueue.crimes[i].timer > 1500) m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE; - } - } -} - -STARTPATCHES -InjectHook(0x580AF0, &cAudioManager::AgeCrimes, PATCH_JUMP); -InjectHook(0x57F060, &cAudioManager::DoPoliceRadioCrackle, PATCH_JUMP); -InjectHook(0x57F050, &cAudioManager::GetMissionScriptPoliceAudioPlayingStatus, PATCH_JUMP); -InjectHook(0x57EEC0, &cAudioManager::InitialisePoliceRadio, PATCH_JUMP); -InjectHook(0x57EAC0, &cAudioManager::InitialisePoliceRadioZones, PATCH_JUMP); -InjectHook(0x580500, &cAudioManager::PlaySuspectLastSeen, PATCH_JUMP); -InjectHook(0x5803D0, &cAudioManager::ReportCrime, PATCH_JUMP); -InjectHook(0x57EFF0, &cAudioManager::ResetPoliceRadio, PATCH_JUMP); -InjectHook(0x57F110, &cAudioManager::ServicePoliceRadio, PATCH_JUMP); -InjectHook(0x57F1B0, &cAudioManager::ServicePoliceRadioChannel, PATCH_JUMP); -InjectHook(0x57F020, &cAudioManager::SetMissionScriptPoliceAudio, PATCH_JUMP); -InjectHook(0x57F5B0, &cAudioManager::SetupCrimeReport, PATCH_JUMP); -InjectHook(0x57FCC0, &cAudioManager::SetupSuspectLastSeenReport, PATCH_JUMP); -ENDPATCHES +#include "common.h" +#include "patcher.h" +#include "DMAudio.h" +#include "AudioManager.h" +#include "AudioSamples.h" +#include "MusicManager.h" +#include "PoliceRadio.h" +#include "PlayerPed.h" +#include "sampman.h" +#include "Zones.h" +#include "Vehicle.h" +#include "World.h" + +const int maxVolume = 127; +const int channels = ARRAY_SIZE(cAudioManager::m_asActiveSamples); +const int policeChannel = channels + 1; + +struct tPoliceRadioZone { + char m_aName[8]; + uint32 m_nSampleIndex; + int32 field_12; +}; + +tPoliceRadioZone (&ZoneSfx)[NUMAUDIOZONES] = *(tPoliceRadioZone(*)[NUMAUDIOZONES])*(uintptr*)0x880240; +char *SubZo2Label = (char*)0x6E9918; +char *SubZo3Label = (char*)0x6E9870; + +int32 &g_nMissionAudioSfx = *(int32*)0x60ED84; +int8 &g_nMissionAudioPlayingStatus = *(int8*)0x60ED88; +uint8 &gSpecialSuspectLastSeenReport = *(uint8*)0x95CD4D; +uint32 (&gMinTimeToNextReport)[NUM_CRIME_TYPES] = *(uint32(*)[NUM_CRIME_TYPES])*(uintptr*)0x8E2828; + +void +cAudioManager::InitialisePoliceRadioZones() +{ + for (int32 i = 0; i < NUMAUDIOZONES; i++) + memset(ZoneSfx[i].m_aName, 0, 8); + +#define SETZONESFX(i, name, sample) \ + strcpy(ZoneSfx[i].m_aName, name); \ + ZoneSfx[i].m_nSampleIndex = sample; + + SETZONESFX(0, "HOSPI_2", SFX_POLICE_RADIO_ROCKFORD); + SETZONESFX(1, "CONSTRU", SFX_POLICE_RADIO_FORT_STAUNTON); + SETZONESFX(2, "STADIUM", SFX_POLICE_RADIO_ASPATRIA); + SETZONESFX(3, "YAKUSA", SFX_POLICE_RADIO_TORRINGTON); + SETZONESFX(4, "SHOPING", SFX_POLICE_RADIO_BEDFORD_POINT); + SETZONESFX(5, "COM_EAS", SFX_POLICE_RADIO_NEWPORT); + SETZONESFX(6, "PARK", SFX_POLICE_RADIO_BELLEVILLE_PARK); + SETZONESFX(7, "UNIVERS", SFX_POLICE_RADIO_LIBERTY_CAMPUS); + SETZONESFX(8, "BIG_DAM", SFX_POLICE_RADIO_COCHRANE_DAM); + SETZONESFX(9, "SUB_IND", SFX_POLICE_RADIO_PIKE_CREEK); + SETZONESFX(10, "SWANKS", SFX_POLICE_RADIO_CEDAR_GROVE); + SETZONESFX(11, "PROJECT", SFX_POLICE_RADIO_WICHITA_GARDENS); + SETZONESFX(12, "AIRPORT", SFX_POLICE_RADIO_FRANCIS_INTERNATIONAL_AIRPORT); + SETZONESFX(13, "PORT_W", SFX_POLICE_RADIO_CALLAHAN_POINT); + SETZONESFX(14, "PORT_S", SFX_POLICE_RADIO_ATLANTIC_QUAYS); + SETZONESFX(15, "PORT_E", SFX_POLICE_RADIO_PORTLAND_HARBOUR); + SETZONESFX(16, "PORT_I", SFX_POLICE_RADIO_TRENTON); + SETZONESFX(17, "CHINA", SFX_POLICE_RADIO_CHINATOWN); + SETZONESFX(18, "REDLIGH", SFX_POLICE_RADIO_RED_LIGHT_DISTRICT); + SETZONESFX(19, "TOWERS", SFX_POLICE_RADIO_HEPBURN_HEIGHTS); + SETZONESFX(20, "LITTLEI", SFX_POLICE_RADIO_SAINT_MARKS); + SETZONESFX(21, "HARWOOD", SFX_POLICE_RADIO_HARWOOD); + SETZONESFX(22, "EASTBAY", SFX_POLICE_RADIO_PORTLAND_BEACH); + SETZONESFX(23, "S_VIEW", SFX_POLICE_RADIO_PORTLAND_STRAIGHTS); + SETZONESFX(24, "CITYZON", SFX_POLICE_RADIO_LIBERTY_CITY); + SETZONESFX(25, "IND_ZON", SFX_POLICE_RADIO_PORTLAND); + SETZONESFX(26, "COM_ZON", SFX_POLICE_RADIO_STAUNTON_ISLAND); + SETZONESFX(27, "SUB_ZON", SFX_POLICE_RADIO_SHORESIDE_VALE); + SETZONESFX(28, "SUB_ZO2", SFX_POLICE_RADIO_SHORESIDE_VALE); + SETZONESFX(29, "SUB_ZO3", SFX_POLICE_RADIO_SHORESIDE_VALE); + SETZONESFX(30, "A", SFX_POLICE_RADIO_ROCKFORD); + SETZONESFX(31, "A", SFX_POLICE_RADIO_ROCKFORD); + SETZONESFX(32, "A", SFX_POLICE_RADIO_ROCKFORD); + SETZONESFX(33, "A", SFX_POLICE_RADIO_ROCKFORD); + SETZONESFX(34, "A", SFX_POLICE_RADIO_ROCKFORD); + +#undef SETZONESFX + + strcpy(SubZo2Label, "SUB_ZO2"); + strcpy(SubZo3Label, "SUB_ZO3"); +} + +void +cAudioManager::InitialisePoliceRadio() +{ + m_sPoliceRadioQueue.policeChannelTimer = 0; + m_sPoliceRadioQueue.policeChannelTimerSeconds = 0; + m_sPoliceRadioQueue.policeChannelCounterSeconds = 0; + for (int32 i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) + m_sPoliceRadioQueue.crimes[i].type = 0; + + SampleManager.SetChannelReverbFlag(policeChannel, 0); + gSpecialSuspectLastSeenReport = false; + for (int32 i = 0; i < ARRAY_SIZE(gMinTimeToNextReport); i++) + gMinTimeToNextReport[i] = m_FrameCounter; +} + +void +cAudioManager::ResetPoliceRadio() +{ + if (!m_bIsInitialised) return; + if (SampleManager.GetChannelUsedFlag(policeChannel)) SampleManager.StopChannel(policeChannel); + InitialisePoliceRadio(); +} + +void +cAudioManager::SetMissionScriptPoliceAudio(int32 sfx) const +{ + if (!m_bIsInitialised) return; + if (g_nMissionAudioPlayingStatus != 1) { + g_nMissionAudioPlayingStatus = 0; + g_nMissionAudioSfx = sfx; + } +} + +int8 +cAudioManager::GetMissionScriptPoliceAudioPlayingStatus() const +{ + return g_nMissionAudioPlayingStatus; +} + +void +cAudioManager::DoPoliceRadioCrackle() +{ + m_sQueueSample.m_nEntityIndex = m_nPoliceChannelEntity; + m_sQueueSample.m_counter = 0; + m_sQueueSample.m_nSampleIndex = SFX_POLICE_RADIO_CRACKLE; + m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; + m_sQueueSample.m_bIs2D = true; + m_sQueueSample.m_nReleasingVolumeModificator = 10; + m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_RADIO_CRACKLE); + m_sQueueSample.m_bVolume = m_anRandomTable[2] % 20 + 15; + m_sQueueSample.m_nLoopCount = 0; + m_sQueueSample.m_bEmittingVolume = m_sQueueSample.m_bVolume; + m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_POLICE_RADIO_CRACKLE); + m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_POLICE_RADIO_CRACKLE); + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReverbFlag = false; + m_sQueueSample.m_bOffset = 63; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_bRequireReflection = false; + AddSampleToRequestedQueue(); +} + +void +cAudioManager::ServicePoliceRadio() +{ + int32 wantedLevel = 0; // bug?; + static uint32 nLastSeen = 300; + + if (!m_bIsInitialised) return; + + if (!m_bUserPause) { + bool crimeReport = SetupCrimeReport(); + wantedLevel = FindPlayerPed()->m_pWanted->m_nWantedLevel; + if (!crimeReport) { + if (wantedLevel) { + if (nLastSeen) { + --nLastSeen; + } else { + nLastSeen = m_anRandomTable[1] % 1000 + 2000; + SetupSuspectLastSeenReport(); + } + } + } + } + ServicePoliceRadioChannel(wantedLevel); +} + +void +cAudioManager::ServicePoliceRadioChannel(int32 wantedLevel) +{ + bool processed = false; + uint32 sample; + int32 freq; + + static int cWait = 0; + static bool bChannelOpen = false; + static uint8 bMissionAudioPhysicalPlayingStatus = 0; + static int32 PoliceChannelFreq = 5500; + + if (!m_bIsInitialised) return; + + if (m_bUserPause) { + if (SampleManager.GetChannelUsedFlag(policeChannel)) SampleManager.StopChannel(policeChannel); + if (g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && bMissionAudioPhysicalPlayingStatus == 1 && + SampleManager.IsStreamPlaying(1)) { + SampleManager.PauseStream(1, 1); + } + } else { + if (m_bPreviousUserPause && g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && + bMissionAudioPhysicalPlayingStatus == 1) { + SampleManager.PauseStream(0, 1); + } + if (m_sPoliceRadioQueue.policeChannelTimer == 0) bChannelOpen = false; + if (cWait) { + --cWait; + return; + } + if (g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && !bChannelOpen) { + if (g_nMissionAudioPlayingStatus) { + if (g_nMissionAudioPlayingStatus == 1 && !bMissionAudioPhysicalPlayingStatus && + SampleManager.IsStreamPlaying(1)) { + bMissionAudioPhysicalPlayingStatus = 1; + } + if (bMissionAudioPhysicalPlayingStatus == 1) { + if (SampleManager.IsStreamPlaying(1)) { + DoPoliceRadioCrackle(); + } else { + bMissionAudioPhysicalPlayingStatus = 2; + g_nMissionAudioPlayingStatus = 2; + g_nMissionAudioSfx = TOTAL_AUDIO_SAMPLES; + cWait = 30; + } + return; + } + } else if (!SampleManager.GetChannelUsedFlag(policeChannel)) { + SampleManager.PreloadStreamedFile(g_nMissionAudioSfx, 1); + SampleManager.SetStreamedVolumeAndPan(maxVolume, 63, 1, 1); + SampleManager.StartPreloadedStreamedFile(1); + g_nMissionAudioPlayingStatus = 1; + bMissionAudioPhysicalPlayingStatus = 0; + return; + } + } + if (bChannelOpen) DoPoliceRadioCrackle(); + if ((g_nMissionAudioSfx == TOTAL_AUDIO_SAMPLES || g_nMissionAudioPlayingStatus != 1) && + !SampleManager.GetChannelUsedFlag(policeChannel) && m_sPoliceRadioQueue.policeChannelTimer) { + if (m_sPoliceRadioQueue.policeChannelTimer) { + sample = m_sPoliceRadioQueue.crimesSamples[m_sPoliceRadioQueue.policeChannelCounterSeconds]; + m_sPoliceRadioQueue.policeChannelTimer--; + m_sPoliceRadioQueue.policeChannelCounterSeconds = (m_sPoliceRadioQueue.policeChannelCounterSeconds + 1) % 60; + } else { + sample = TOTAL_AUDIO_SAMPLES; + } + if (!wantedLevel) { + if (gSpecialSuspectLastSeenReport) { + gSpecialSuspectLastSeenReport = 0; + } else if (((sample >= SFX_POLICE_RADIO_MESSAGE_NOISE_1) && (sample <= SFX_POLICE_RADIO_MESSAGE_NOISE_3)) || sample == TOTAL_AUDIO_SAMPLES) { + bChannelOpen = false; + processed = true; + } + } + if (sample == TOTAL_AUDIO_SAMPLES) { + if (!processed) cWait = 30; + } else { + SampleManager.InitialiseChannel(policeChannel, sample, 0); + switch (sample) { + case SFX_POLICE_RADIO_MESSAGE_NOISE_1: + case SFX_POLICE_RADIO_MESSAGE_NOISE_2: + case SFX_POLICE_RADIO_MESSAGE_NOISE_3: + freq = m_anRandomTable[4] % 2000 + 10025; + bChannelOpen = bChannelOpen == false; + break; + default: freq = SampleManager.GetSampleBaseFrequency(sample); break; + } + PoliceChannelFreq = freq; + SampleManager.SetChannelFrequency(policeChannel, freq); + SampleManager.SetChannelVolume(policeChannel, 100); + SampleManager.SetChannelPan(policeChannel, 63); + SampleManager.SetChannelLoopCount(policeChannel, 1); + SampleManager.SetChannelLoopPoints(policeChannel, 0, -1); + SampleManager.StartChannel(policeChannel); + } + if (processed) ResetPoliceRadio(); + } + } +} + +bool +cAudioManager::SetupCrimeReport() +{ + int16 audioZoneId; + CZone *zone; + float rangeX; + float rangeY; + float halfX; + float halfY; + float quarterX; + float quarterY; + int i; + int32 sampleIndex; + bool processed = false; + + if (MusicManager.m_nMusicMode == MUSICMODE_CUTSCENE) return false; + + if (60 - m_sPoliceRadioQueue.policeChannelTimer <= 9) { + AgeCrimes(); + return true; + } + + for (i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) { + if (m_sPoliceRadioQueue.crimes[i].type != CRIME_NONE) + break; + } + + if (i == ARRAY_SIZE(m_sPoliceRadioQueue.crimes)) return false; + audioZoneId = CTheZones::FindAudioZone(&m_sPoliceRadioQueue.crimes[i].position); + if (audioZoneId >= 0 && audioZoneId < NUMAUDIOZONES) { + zone = &CTheZones::ZoneArray[CTheZones::AudioZoneArray[audioZoneId]]; + for (int j = 0; j < NUMAUDIOZONES; j++) { + if (strcmp(zone->name, ZoneSfx[j].m_aName) == 0) { + sampleIndex = ZoneSfx[j].m_nSampleIndex; + m_sPoliceRadioQueue.Add(m_anRandomTable[4] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); + m_sPoliceRadioQueue.Add(m_anRandomTable[0] % 3 + SFX_WEVE_GOT); + m_sPoliceRadioQueue.Add(m_anRandomTable[1] % 2 + SFX_A_10_1); + switch (m_sPoliceRadioQueue.crimes[i].type) { + case CRIME_PED_BURNED: m_sPoliceRadioQueue.crimes[i].type = CRIME_HIT_PED; break; + case CRIME_COP_BURNED: m_sPoliceRadioQueue.crimes[i].type = CRIME_HIT_COP; break; + case CRIME_VEHICLE_BURNED: m_sPoliceRadioQueue.crimes[i].type = CRIME_STEAL_CAR; break; + case CRIME_DESTROYED_CESSNA: m_sPoliceRadioQueue.crimes[i].type = CRIME_SHOOT_HELI; break; + default: break; + } + m_sPoliceRadioQueue.Add(m_sPoliceRadioQueue.crimes[i].type + SFX_CRIME_1 - 1); + m_sPoliceRadioQueue.Add(SFX_IN); + if (sampleIndex == SFX_POLICE_RADIO_SHORESIDE_VALE && + (strcmp(zone->name, SubZo2Label) == 0 || strcmp(zone->name, SubZo3Label) == 0)) { + m_sPoliceRadioQueue.Add(SFX_NORTH); + m_sPoliceRadioQueue.Add(SFX_EAST); + } else { + rangeX = zone->maxx - zone->minx; + rangeY = zone->maxy - zone->miny; + halfX = 0.5f * rangeX + zone->minx; + halfY = 0.5f * rangeY + zone->miny; + quarterX = 0.25f * rangeX; + quarterY = 0.25f * rangeY; + + if (m_sPoliceRadioQueue.crimes[i].position.y > halfY + quarterY) { + m_sPoliceRadioQueue.Add(SFX_NORTH); + processed = true; + } else if (m_sPoliceRadioQueue.crimes[i].position.y < halfY - quarterY) { + m_sPoliceRadioQueue.Add(SFX_SOUTH); + processed = true; + } + + if (m_sPoliceRadioQueue.crimes[i].position.x > halfX + quarterX) + m_sPoliceRadioQueue.Add(SFX_EAST); + else if (m_sPoliceRadioQueue.crimes[i].position.x < halfX - quarterX) + m_sPoliceRadioQueue.Add(SFX_WEST); + else if (!processed) + m_sPoliceRadioQueue.Add(SFX_CENTRAL); + + m_sPoliceRadioQueue.Add(sampleIndex); + m_sPoliceRadioQueue.Add(m_anRandomTable[2] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); + m_sPoliceRadioQueue.Add(TOTAL_AUDIO_SAMPLES); + } + break; + } + } + } + m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE; + AgeCrimes(); + return true; +} + +void +cAudioManager::SetupSuspectLastSeenReport() +{ + CVehicle *veh; + uint8 color1; + int32 main_color; + int32 sample; + + int32 color_pre_modifier; + int32 color_post_modifier; + + const int32 gCarColourTable[][3] = { + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLACK, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_WHITE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_BRIGHT, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_BLUE, SFX_POLICE_RADIO_GREY}, +#ifdef FIX_BUGS + {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, +#else + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, +#endif + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, +#ifdef FIX_BUGS + {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_RED, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, +#else + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, +#endif + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, +#ifdef FIX_BUGS + {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_ORANGE, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, +#else + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, +#endif + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, +#ifdef FIX_BUGS + {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_YELLOW, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, +#else + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, +#endif + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, +#ifdef FIX_BUGS + {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_GREEN, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, +#else + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, +#endif + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, +#ifdef FIX_BUGS + {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_BLUE, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_PURPLE, SFX_POLICE_RADIO_BLUE}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, +#else + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, +#endif + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, +#ifdef FIX_BUGS + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, SFX_POLICE_RADIO_GREY}, +#else + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, +#endif + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, +#ifdef FIX_BUGS + {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_PURPLE, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, +#else + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, +#endif + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, +#ifdef FIX_BUGS + {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, +#else + {TOTAL_AUDIO_SAMPLES, SFX_POLICE_RADIO_SILVER, TOTAL_AUDIO_SAMPLES}, +#endif + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_LIGHT, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES}, + {SFX_POLICE_RADIO_DARK, TOTAL_AUDIO_SAMPLES, TOTAL_AUDIO_SAMPLES} + }; + + if (MusicManager.m_nMusicMode != MUSICMODE_CUTSCENE) { + veh = FindPlayerVehicle(); + if (veh != nil) { + if (60 - m_sPoliceRadioQueue.policeChannelTimer > 9) { + color1 = veh->m_currentColour1; + if (color1 >= ARRAY_SIZE(gCarColourTable)) { + debug("\n *** UNKNOWN CAR COLOUR %d *** ", color1); + } else { + main_color = gCarColourTable[color1][1]; + color_pre_modifier = gCarColourTable[color1][0]; + color_post_modifier = gCarColourTable[color1][2]; + switch (veh->m_modelIndex) { +#ifdef FIX_BUGS + case MI_COLUMB: + main_color = SFX_POLICE_RADIO_BLUE; + color_pre_modifier = color_post_modifier = TOTAL_AUDIO_SAMPLES; +#endif + case MI_LANDSTAL: + case MI_BLISTA: sample = SFX_POLICE_RADIO_CRUISER; break; +#ifdef FIX_BUGS + case MI_YARDIE: + color_pre_modifier = TOTAL_AUDIO_SAMPLES; + main_color = SFX_POLICE_RADIO_RED; + color_post_modifier = SFX_POLICE_RADIO_YELLOW; + sample = SFX_POLICE_RADIO_CONVERTIBLE; break; + case MI_DIABLOS: + main_color = SFX_POLICE_RADIO_BLACK; +#endif + case MI_IDAHO: + case MI_STALLION: sample = SFX_POLICE_RADIO_CONVERTIBLE; break; +#ifdef FIX_BUGS + case MI_YAKUZA: + color_pre_modifier = TOTAL_AUDIO_SAMPLES; + main_color = SFX_POLICE_RADIO_SILVER; + color_post_modifier = SFX_POLICE_RADIO_RED; +#endif + case MI_STINGER: + case MI_INFERNUS: + case MI_CHEETAH: + case MI_BANSHEE: sample = SFX_POLICE_RADIO_SPORTS_CAR; break; +#ifdef FIX_BUGS + case MI_MAFIA: + color_pre_modifier = color_post_modifier = TOTAL_AUDIO_SAMPLES; + main_color = SFX_POLICE_RADIO_GREY; + case MI_KURUMA: +#endif + case MI_PEREN: + case MI_SENTINEL: + case MI_FBICAR: sample = SFX_POLICE_RADIO_SALOON; break; + case MI_PATRIOT: + case MI_BOBCAT: sample = SFX_POLICE_RADIO_PICKUP; break; + case MI_FIRETRUCK: sample = SFX_POLICE_RADIO_FIRE_TRUCK; break; +#ifdef FIX_BUGS + case MI_LINERUN: + case MI_FLATBED: +#endif + case MI_TRASH: + case MI_BARRACKS: sample = SFX_POLICE_RADIO_TRUCK; break; + case MI_STRETCH: sample = SFX_POLICE_RADIO_LIMO; break; +#ifdef FIX_BUGS + case MI_CORPSE: +#endif + case MI_MANANA: + case MI_ESPERANT: sample = SFX_POLICE_RADIO_2_DOOR; break; +#ifdef FIX_BUGS + case MI_HOODS: + color_pre_modifier = TOTAL_AUDIO_SAMPLES; + main_color = SFX_POLICE_RADIO_BLUE; + color_post_modifier = SFX_POLICE_RADIO_GREEN; + case MI_BELLYUP: + case MI_YANKEE: + case MI_TOYZ: + case MI_MRWONGS: + case MI_PANLANT: +#endif + case MI_PONY: + case MI_MULE: + case MI_MOONBEAM: + case MI_ENFORCER: + case MI_SECURICA: + case MI_RUMPO: sample = SFX_POLICE_RADIO_VAN; break; + case MI_AMBULAN: sample = SFX_POLICE_RADIO_AMBULANCE; break; + case MI_TAXI: + case MI_CABBIE: + case MI_BORGNINE: sample = SFX_POLICE_RADIO_TAXI; break; + case MI_MRWHOOP: + sample = SFX_POLICE_RADIO_ICE_CREAM_VAN; + break; + case MI_BFINJECT: sample = SFX_POLICE_RADIO_BUGGY; break; + case MI_POLICE: sample = SFX_POLICE_RADIO_POLICE_CAR; break; +#ifdef FIX_BUGS + case MI_SPEEDER: + case MI_REEFER: + case MI_GHOST: +#endif + case MI_PREDATOR: sample = SFX_POLICE_RADIO_BOAT; break; + case MI_BUS: + case MI_COACH: sample = SFX_POLICE_RADIO_BUS; break; + case MI_RHINO: + sample = SFX_POLICE_RADIO_TANK; + main_color = TOTAL_AUDIO_SAMPLES; + color_post_modifier = TOTAL_AUDIO_SAMPLES; + break; + case MI_TRAIN: + sample = SFX_POLICE_RADIO_SUBWAY_CAR; + main_color = TOTAL_AUDIO_SAMPLES; + color_post_modifier = TOTAL_AUDIO_SAMPLES; + + break; + default: + debug("\n *** UNKNOWN CAR MODEL INDEX %d *** ", veh->m_modelIndex); + return; + } + m_sPoliceRadioQueue.Add(m_anRandomTable[4] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); + m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_SUSPECT); + if (m_anRandomTable[3] % 2) + m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_LAST_SEEN); +#ifdef FIX_BUGS + if (main_color == SFX_POLICE_RADIO_ORANGE && color_pre_modifier == TOTAL_AUDIO_SAMPLES) +#else + if (main_color == SFX_POLICE_RADIO_ORANGE) +#endif + m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_IN_AN); + else + m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_IN_A); + if (color_pre_modifier != TOTAL_AUDIO_SAMPLES) + m_sPoliceRadioQueue.Add(color_pre_modifier); + if (main_color != TOTAL_AUDIO_SAMPLES) + m_sPoliceRadioQueue.Add(main_color); + if (color_post_modifier != TOTAL_AUDIO_SAMPLES) + m_sPoliceRadioQueue.Add(color_post_modifier); + m_sPoliceRadioQueue.Add(sample); + m_sPoliceRadioQueue.Add(m_anRandomTable[0] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); + m_sPoliceRadioQueue.Add(TOTAL_AUDIO_SAMPLES); + } + } + } else if (60 - m_sPoliceRadioQueue.policeChannelTimer > 4) { + m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_MESSAGE_NOISE_1); + m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_SUSPECT); + m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_ON_FOOT); + m_sPoliceRadioQueue.Add(m_anRandomTable[0] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); + m_sPoliceRadioQueue.Add(TOTAL_AUDIO_SAMPLES); + } + } +} + + + +void +cAudioManager::ReportCrime(int32 type, const CVector *pos) +{ + int32 lastCrime = ARRAY_SIZE(m_sPoliceRadioQueue.crimes); + if (m_bIsInitialised && MusicManager.m_nMusicMode != MUSICMODE_CUTSCENE && FindPlayerPed()->m_pWanted->m_nWantedLevel > 0 && + (type > CRIME_NONE || type < NUM_CRIME_TYPES) && m_FrameCounter >= gMinTimeToNextReport[type]) { + for (int32 i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) { + if (m_sPoliceRadioQueue.crimes[i].type) { + if (m_sPoliceRadioQueue.crimes[i].type == type) { + m_sPoliceRadioQueue.crimes[i].position = *pos; + m_sPoliceRadioQueue.crimes[i].timer = 0; + return; + } + } else { + lastCrime = i; + } + } + + if (lastCrime < ARRAY_SIZE(m_sPoliceRadioQueue.crimes)) { + m_sPoliceRadioQueue.crimes[lastCrime].type = type; + m_sPoliceRadioQueue.crimes[lastCrime].position = *pos; + m_sPoliceRadioQueue.crimes[lastCrime].timer = 0; + gMinTimeToNextReport[type] = m_FrameCounter + 500; + } + } +} + +void +cAudioManager::PlaySuspectLastSeen(float x, float y, float z) +{ + int16 audioZone; + CZone *zone; + float rangeX; + float rangeY; + float halfX; + float halfY; + float quarterX; + float quarterY; + int32 sample; + bool processed = false; + CVector vec = CVector(x, y, z); + + if (!m_bIsInitialised) return; + + if (MusicManager.m_nMusicMode != MUSICMODE_CUTSCENE && 60 - m_sPoliceRadioQueue.policeChannelTimer > 9) { + audioZone = CTheZones::FindAudioZone(&vec); + if (audioZone >= 0 && audioZone < NUMAUDIOZONES) { + zone = &CTheZones::ZoneArray[CTheZones::AudioZoneArray[audioZone]]; + for (int i = 0; i < NUMAUDIOZONES; i++) { + if (strcmp(zone->name, ZoneSfx[i].m_aName) == 0) { + sample = ZoneSfx[i].m_nSampleIndex; + m_sPoliceRadioQueue.Add(m_anRandomTable[4] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); + m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_SUSPECT); + m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_LAST_SEEN); + m_sPoliceRadioQueue.Add(SFX_IN); + if (sample == SFX_POLICE_RADIO_SHORESIDE_VALE && + (strcmp(zone->name, SubZo2Label) == 0 || + strcmp(zone->name, SubZo3Label) == 0)) { + m_sPoliceRadioQueue.Add(SFX_NORTH); + m_sPoliceRadioQueue.Add(SFX_EAST); + } else { + rangeX = zone->maxx - zone->minx; + rangeY = zone->maxy - zone->miny; + halfX = 0.5f * rangeX + zone->minx; + halfY = 0.5f * rangeY + zone->miny; + quarterX = 0.25f * rangeX; + quarterY = 0.25f * rangeY; + + if (vec.y > halfY + quarterY) { + m_sPoliceRadioQueue.Add(SFX_NORTH); + processed = true; + } else if (vec.y < halfY - quarterY) { + m_sPoliceRadioQueue.Add(SFX_SOUTH); + processed = true; + } + + if (vec.x > halfX + quarterX) + m_sPoliceRadioQueue.Add(SFX_EAST); + else if (vec.x < halfX - quarterX) + m_sPoliceRadioQueue.Add(SFX_WEST); + else if (!processed) + m_sPoliceRadioQueue.Add(SFX_CENTRAL); + } + m_sPoliceRadioQueue.Add(sample); + m_sPoliceRadioQueue.Add(m_anRandomTable[2] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); + m_sPoliceRadioQueue.Add(TOTAL_AUDIO_SAMPLES); + gSpecialSuspectLastSeenReport = true; + break; + } + } + } + } +} + +void +cAudioManager::AgeCrimes() +{ + for (uint8 i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) { + if (m_sPoliceRadioQueue.crimes[i].type != CRIME_NONE) { + if (++m_sPoliceRadioQueue.crimes[i].timer > 1500) m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE; + } + } +} + +STARTPATCHES +InjectHook(0x580AF0, &cAudioManager::AgeCrimes, PATCH_JUMP); +InjectHook(0x57F060, &cAudioManager::DoPoliceRadioCrackle, PATCH_JUMP); +InjectHook(0x57F050, &cAudioManager::GetMissionScriptPoliceAudioPlayingStatus, PATCH_JUMP); +InjectHook(0x57EEC0, &cAudioManager::InitialisePoliceRadio, PATCH_JUMP); +InjectHook(0x57EAC0, &cAudioManager::InitialisePoliceRadioZones, PATCH_JUMP); +InjectHook(0x580500, &cAudioManager::PlaySuspectLastSeen, PATCH_JUMP); +InjectHook(0x5803D0, &cAudioManager::ReportCrime, PATCH_JUMP); +InjectHook(0x57EFF0, &cAudioManager::ResetPoliceRadio, PATCH_JUMP); +InjectHook(0x57F110, &cAudioManager::ServicePoliceRadio, PATCH_JUMP); +InjectHook(0x57F1B0, &cAudioManager::ServicePoliceRadioChannel, PATCH_JUMP); +InjectHook(0x57F020, &cAudioManager::SetMissionScriptPoliceAudio, PATCH_JUMP); +InjectHook(0x57F5B0, &cAudioManager::SetupCrimeReport, PATCH_JUMP); +InjectHook(0x57FCC0, &cAudioManager::SetupSuspectLastSeenReport, PATCH_JUMP); +ENDPATCHES diff --git a/src/audio/PoliceRadio.h b/src/audio/PoliceRadio.h index 4c7030f1..0f351f52 100644 --- a/src/audio/PoliceRadio.h +++ b/src/audio/PoliceRadio.h @@ -1,46 +1,46 @@ -#pragma once - -#include "Wanted.h" - -struct cAMCrime { - int32 type; - CVector position; - uint16 timer; - - cAMCrime() - { - type = CRIME_NONE; - position = CVector(0.0f, 0.0f, 0.0f); - timer = 0; - } -}; - -static_assert(sizeof(cAMCrime) == 20, "cAMCrime: error "); - -class cPoliceRadioQueue -{ -public: - int32 crimesSamples[60]; - uint8 policeChannelTimer; - uint8 policeChannelTimerSeconds; - uint8 policeChannelCounterSeconds; - cAMCrime crimes[10]; - - cPoliceRadioQueue() - { - policeChannelTimerSeconds = 0; - policeChannelCounterSeconds = 0; - policeChannelTimer = 0; - } - - void Add(uint32 sample) - { - if (policeChannelTimer != 60) { - crimesSamples[policeChannelTimerSeconds] = sample; - policeChannelTimer++; - policeChannelTimerSeconds = (policeChannelTimerSeconds + 1) % 60; - } - } -}; - +#pragma once + +#include "Wanted.h" + +struct cAMCrime { + int32 type; + CVector position; + uint16 timer; + + cAMCrime() + { + type = CRIME_NONE; + position = CVector(0.0f, 0.0f, 0.0f); + timer = 0; + } +}; + +static_assert(sizeof(cAMCrime) == 20, "cAMCrime: error "); + +class cPoliceRadioQueue +{ +public: + int32 crimesSamples[60]; + uint8 policeChannelTimer; + uint8 policeChannelTimerSeconds; + uint8 policeChannelCounterSeconds; + cAMCrime crimes[10]; + + cPoliceRadioQueue() + { + policeChannelTimerSeconds = 0; + policeChannelCounterSeconds = 0; + policeChannelTimer = 0; + } + + void Add(uint32 sample) + { + if (policeChannelTimer != 60) { + crimesSamples[policeChannelTimerSeconds] = sample; + policeChannelTimer++; + policeChannelTimerSeconds = (policeChannelTimerSeconds + 1) % 60; + } + } +}; + static_assert(sizeof(cPoliceRadioQueue) == 444, "cPoliceRadioQueue: error "); \ No newline at end of file diff --git a/src/control/GameLogic.cpp b/src/control/GameLogic.cpp index 0abae7d6..8e0ea02d 100644 --- a/src/control/GameLogic.cpp +++ b/src/control/GameLogic.cpp @@ -1,294 +1,294 @@ #include "common.h" #include "patcher.h" -#include "GameLogic.h" -#include "Clock.h" -#include "Stats.h" -#include "Pickups.h" -#include "Timer.h" -#include "Streaming.h" -#include "CutsceneMgr.h" -#include "World.h" -#include "PlayerPed.h" -#include "Wanted.h" -#include "Camera.h" -#include "Messages.h" -#include "CarCtrl.h" -#include "Restart.h" -#include "Pad.h" -#include "References.h" -#include "Fire.h" -#include "Script.h" -#include "Garages.h" - -uint8 CGameLogic::ActivePlayers; // 0x95CD5E - -void -CGameLogic::InitAtStartOfGame() -{ - ActivePlayers = 1; -} - -void -CGameLogic::PassTime(uint32 time) -{ - int32 minutes, hours, days; - - minutes = time + CClock::GetMinutes(); - hours = CClock::GetHours(); - - for (; minutes >= 60; minutes -= 60) - hours++; - - if (hours > 23) { - days = CStats::DaysPassed; - for (; hours >= 24; hours -= 24) - days++; - CStats::DaysPassed = days; - } - - CClock::SetGameClock(hours, minutes); - CPickups::PassTime(time * 1000); -} - -void -CGameLogic::SortOutStreamingAndMemory(const CVector &pos) -{ - CTimer::Stop(); - CStreaming::FlushRequestList(); - CStreaming::DeleteRwObjectsAfterDeath(pos); - CStreaming::RemoveUnusedModelsInLoadedList(); - CGame::DrasticTidyUpMemory(true); - CStreaming::LoadScene(pos); - CTimer::Update(); -} - -void -CGameLogic::Update() -{ - CVector vecRestartPos; - float fRestartFloat; - - if (CCutsceneMgr::IsCutsceneProcessing()) return; - - CPlayerInfo &pPlayerInfo = CWorld::Players[CWorld::PlayerInFocus]; - switch (pPlayerInfo.m_WBState) { - case WBSTATE_PLAYING: - if (pPlayerInfo.m_pPed->m_nPedState == PED_DEAD) { - pPlayerInfo.m_pPed->ClearAdrenaline(); - pPlayerInfo.KillPlayer(); - } - if (pPlayerInfo.m_pPed->m_nPedState == PED_ARRESTED) { - pPlayerInfo.m_pPed->ClearAdrenaline(); - pPlayerInfo.ArrestPlayer(); - } - break; - case WBSTATE_WASTED: - if ((CTimer::GetTimeInMilliseconds() - pPlayerInfo.m_nWBTime > 0x800) && (CTimer::GetPreviousTimeInMilliseconds() - pPlayerInfo.m_nWBTime <= 0x800)) { - TheCamera.SetFadeColour(200, 200, 200); - TheCamera.Fade(2.0f, FADE_OUT); - } - - if (CTimer::GetTimeInMilliseconds() - pPlayerInfo.m_nWBTime >= 0x1000) { - pPlayerInfo.m_WBState = WBSTATE_PLAYING; - if (pPlayerInfo.m_bGetOutOfHospitalFree) { - pPlayerInfo.m_bGetOutOfHospitalFree = false; - } else { - pPlayerInfo.m_nMoney = max(0, pPlayerInfo.m_nMoney - 1000); - pPlayerInfo.m_pPed->ClearWeapons(); - } - - if (pPlayerInfo.m_pPed->bInVehicle) { - CVehicle *pVehicle = pPlayerInfo.m_pPed->m_pMyVehicle; - if (pVehicle != nil) { - if (pVehicle->pDriver == pPlayerInfo.m_pPed) { - pVehicle->pDriver = nil; - if (pVehicle->m_status != STATUS_WRECKED) - pVehicle->m_status = STATUS_ABANDONED; - } else - pVehicle->RemovePassenger(pPlayerInfo.m_pPed); - } - } - CEventList::Initialise(); - CMessages::ClearMessages(); - CCarCtrl::ClearInterestingVehicleList(); - CWorld::ClearExcitingStuffFromArea(pPlayerInfo.GetPos(), 4000.0f, 1); - CRestart::FindClosestHospitalRestartPoint(pPlayerInfo.GetPos(), &vecRestartPos, &fRestartFloat); - CRestart::OverrideHospitalLevel = LEVEL_NONE; - CRestart::OverridePoliceStationLevel = LEVEL_NONE; - PassTime(720); - RestorePlayerStuffDuringResurrection(pPlayerInfo.m_pPed, vecRestartPos, fRestartFloat); - SortOutStreamingAndMemory(pPlayerInfo.GetPos()); - TheCamera.m_fCamShakeForce = 0.0f; - TheCamera.SetMotionBlur(0, 0, 0, 0, MBLUR_NONE); - CPad::GetPad(0)->StopShaking(0); - CReferences::RemoveReferencesToPlayer(); - CCarCtrl::CountDownToCarsAtStart = 2; - CPad::GetPad(CWorld::PlayerInFocus)->DisablePlayerControls = PLAYERCONTROL_ENABLED; - if (CRestart::bFadeInAfterNextDeath) { - TheCamera.SetFadeColour(200, 200, 200); - TheCamera.Fade(4.0f, FADE_IN); - } else CRestart::bFadeInAfterNextDeath = true; - } - break; - case WBSTATE_BUSTED: - if ((CTimer::GetTimeInMilliseconds() - pPlayerInfo.m_nWBTime > 0x800) && (CTimer::GetPreviousTimeInMilliseconds() - pPlayerInfo.m_nWBTime <= 0x800)) { - TheCamera.SetFadeColour(0, 0, 0); - TheCamera.Fade(2.0f, FADE_OUT); - } - if (CTimer::GetTimeInMilliseconds() - pPlayerInfo.m_nWBTime >= 0x1000) { - pPlayerInfo.m_WBState = WBSTATE_PLAYING; - int takeMoney; - - switch (pPlayerInfo.m_pPed->m_pWanted->m_nWantedLevel) { - case 0: - case 1: - takeMoney = 100; - break; - case 2: - takeMoney = 200; - break; - case 3: - takeMoney = 400; - break; - case 4: - takeMoney = 600; - break; - case 5: - takeMoney = 900; - break; - case 6: - takeMoney = 1500; - break; - } - if (pPlayerInfo.m_bGetOutOfJailFree) { - pPlayerInfo.m_bGetOutOfJailFree = false; - } else { - pPlayerInfo.m_nMoney = max(0, pPlayerInfo.m_nMoney - takeMoney); - pPlayerInfo.m_pPed->ClearWeapons(); - } - - if (pPlayerInfo.m_pPed->bInVehicle) { - CVehicle *pVehicle = pPlayerInfo.m_pPed->m_pMyVehicle; - if (pVehicle != nil) { - if (pVehicle->pDriver == pPlayerInfo.m_pPed) { - pVehicle->pDriver = nil; - if (pVehicle->m_status != STATUS_WRECKED) - pVehicle->m_status = STATUS_ABANDONED; - } - else - pVehicle->RemovePassenger(pPlayerInfo.m_pPed); - } - } - CEventList::Initialise(); - CMessages::ClearMessages(); - CCarCtrl::ClearInterestingVehicleList(); - CWorld::ClearExcitingStuffFromArea(pPlayerInfo.GetPos(), 4000.0f, 1); - CRestart::FindClosestPoliceRestartPoint(pPlayerInfo.GetPos(), &vecRestartPos, &fRestartFloat); - CRestart::OverrideHospitalLevel = LEVEL_NONE; - CRestart::OverridePoliceStationLevel = LEVEL_NONE; - PassTime(720); - RestorePlayerStuffDuringResurrection(pPlayerInfo.m_pPed, vecRestartPos, fRestartFloat); - pPlayerInfo.m_pPed->ClearWeapons(); - SortOutStreamingAndMemory(pPlayerInfo.GetPos()); - TheCamera.m_fCamShakeForce = 0.0f; - TheCamera.SetMotionBlur(0, 0, 0, 0, MBLUR_NONE); - CPad::GetPad(0)->StopShaking(0); - CReferences::RemoveReferencesToPlayer(); - CCarCtrl::CountDownToCarsAtStart = 2; - CPad::GetPad(CWorld::PlayerInFocus)->DisablePlayerControls = PLAYERCONTROL_ENABLED; - if (CRestart::bFadeInAfterNextArrest) { - TheCamera.SetFadeColour(0, 0, 0); - TheCamera.Fade(4.0f, FADE_IN); - } else CRestart::bFadeInAfterNextArrest = true; - } - break; - case WBSTATE_FAILED_CRITICAL_MISSION: - if (CTimer::GetTimeInMilliseconds() - pPlayerInfo.m_nWBTime > 0x800 && CTimer::GetPreviousTimeInMilliseconds() - pPlayerInfo.m_nWBTime <= 0x800) { - TheCamera.SetFadeColour(0, 0, 0); - TheCamera.Fade(2.0f, FADE_OUT); - } - if (CTimer::GetTimeInMilliseconds() - pPlayerInfo.m_nWBTime >= 0x1000) { - pPlayerInfo.m_WBState = WBSTATE_PLAYING; - if (pPlayerInfo.m_pPed->bInVehicle) { - CVehicle *pVehicle = pPlayerInfo.m_pPed->m_pMyVehicle; - if (pVehicle != nil) { - if (pVehicle->pDriver == pPlayerInfo.m_pPed) { - pVehicle->pDriver = nil; - if (pVehicle->m_status != STATUS_WRECKED) - pVehicle->m_status = STATUS_ABANDONED; - } else - pVehicle->RemovePassenger(pPlayerInfo.m_pPed); - } - } - CEventList::Initialise(); - CMessages::ClearMessages(); - CCarCtrl::ClearInterestingVehicleList(); - CWorld::ClearExcitingStuffFromArea(pPlayerInfo.GetPos(), 4000.0f, 1); - CRestart::FindClosestPoliceRestartPoint(pPlayerInfo.GetPos(), &vecRestartPos, &fRestartFloat); - CRestart::OverridePoliceStationLevel = LEVEL_NONE; - CRestart::OverrideHospitalLevel = LEVEL_NONE; - RestorePlayerStuffDuringResurrection(pPlayerInfo.m_pPed, vecRestartPos, fRestartFloat); - SortOutStreamingAndMemory(pPlayerInfo.GetPos()); - TheCamera.m_fCamShakeForce = 0.0f; - TheCamera.SetMotionBlur(0, 0, 0, 0, MBLUR_NONE); - CPad::GetPad(0)->StopShaking(0); - CReferences::RemoveReferencesToPlayer(); - CCarCtrl::CountDownToCarsAtStart = 2; - CPad::GetPad(CWorld::PlayerInFocus)->DisablePlayerControls = PLAYERCONTROL_ENABLED; - TheCamera.SetFadeColour(0, 0, 0); - TheCamera.Fade(4.0f, FADE_IN); - } - break; - case 4: - return; - } -} - -void -CGameLogic::RestorePlayerStuffDuringResurrection(CPlayerPed *pPlayerPed, CVector pos, float angle) -{ - pPlayerPed->m_fHealth = 100.0f; - pPlayerPed->m_fArmour = 0.0f; - pPlayerPed->bIsVisible = true; - pPlayerPed->m_bloodyFootprintCountOrDeathTime = 0; - pPlayerPed->bDoBloodyFootprints = false; - pPlayerPed->ClearAdrenaline(); - pPlayerPed->m_fCurrentStamina = pPlayerPed->m_fMaxStamina; - if (pPlayerPed->m_pFire) - pPlayerPed->m_pFire->Extinguish(); - pPlayerPed->bInVehicle = false; - pPlayerPed->m_pMyVehicle = nil; - pPlayerPed->m_pVehicleAnim = nil; - pPlayerPed->m_pWanted->Reset(); - pPlayerPed->RestartNonPartialAnims(); - pPlayerPed->GetPlayerInfoForThisPlayerPed()->MakePlayerSafe(false); - pPlayerPed->bRemoveFromWorld = false; - pPlayerPed->ClearWeaponTarget(); - pPlayerPed->SetInitialState(); - CCarCtrl::ClearInterestingVehicleList(); - - pos.z += 1.0f; - pPlayerPed->Teleport(pos); - pPlayerPed->SetMoveSpeed(CVector(0.0f, 0.0f, 0.0f)); - - pPlayerPed->m_fRotationCur = DEGTORAD(angle); - pPlayerPed->m_fRotationDest = pPlayerPed->m_fRotationCur; - pPlayerPed->SetHeading(pPlayerPed->m_fRotationCur); - CTheScripts::ClearSpaceForMissionEntity(pos, pPlayerPed); - CWorld::ClearExcitingStuffFromArea(pos, 4000.0, 1); - pPlayerPed->RestoreHeadingRate(); - TheCamera.SetCameraDirectlyInFrontForFollowPed_CamOnAString(); - CReferences::RemoveReferencesToPlayer(); - CGarages::PlayerArrestedOrDied(); - CStats::CheckPointReachedUnsuccessfully(); - CWorld::Remove(pPlayerPed); - CWorld::Add(pPlayerPed); -} - +#include "GameLogic.h" +#include "Clock.h" +#include "Stats.h" +#include "Pickups.h" +#include "Timer.h" +#include "Streaming.h" +#include "CutsceneMgr.h" +#include "World.h" +#include "PlayerPed.h" +#include "Wanted.h" +#include "Camera.h" +#include "Messages.h" +#include "CarCtrl.h" +#include "Restart.h" +#include "Pad.h" +#include "References.h" +#include "Fire.h" +#include "Script.h" +#include "Garages.h" + +uint8 CGameLogic::ActivePlayers; // 0x95CD5E + +void +CGameLogic::InitAtStartOfGame() +{ + ActivePlayers = 1; +} + +void +CGameLogic::PassTime(uint32 time) +{ + int32 minutes, hours, days; + + minutes = time + CClock::GetMinutes(); + hours = CClock::GetHours(); + + for (; minutes >= 60; minutes -= 60) + hours++; + + if (hours > 23) { + days = CStats::DaysPassed; + for (; hours >= 24; hours -= 24) + days++; + CStats::DaysPassed = days; + } + + CClock::SetGameClock(hours, minutes); + CPickups::PassTime(time * 1000); +} + +void +CGameLogic::SortOutStreamingAndMemory(const CVector &pos) +{ + CTimer::Stop(); + CStreaming::FlushRequestList(); + CStreaming::DeleteRwObjectsAfterDeath(pos); + CStreaming::RemoveUnusedModelsInLoadedList(); + CGame::DrasticTidyUpMemory(true); + CStreaming::LoadScene(pos); + CTimer::Update(); +} + +void +CGameLogic::Update() +{ + CVector vecRestartPos; + float fRestartFloat; + + if (CCutsceneMgr::IsCutsceneProcessing()) return; + + CPlayerInfo &pPlayerInfo = CWorld::Players[CWorld::PlayerInFocus]; + switch (pPlayerInfo.m_WBState) { + case WBSTATE_PLAYING: + if (pPlayerInfo.m_pPed->m_nPedState == PED_DEAD) { + pPlayerInfo.m_pPed->ClearAdrenaline(); + pPlayerInfo.KillPlayer(); + } + if (pPlayerInfo.m_pPed->m_nPedState == PED_ARRESTED) { + pPlayerInfo.m_pPed->ClearAdrenaline(); + pPlayerInfo.ArrestPlayer(); + } + break; + case WBSTATE_WASTED: + if ((CTimer::GetTimeInMilliseconds() - pPlayerInfo.m_nWBTime > 0x800) && (CTimer::GetPreviousTimeInMilliseconds() - pPlayerInfo.m_nWBTime <= 0x800)) { + TheCamera.SetFadeColour(200, 200, 200); + TheCamera.Fade(2.0f, FADE_OUT); + } + + if (CTimer::GetTimeInMilliseconds() - pPlayerInfo.m_nWBTime >= 0x1000) { + pPlayerInfo.m_WBState = WBSTATE_PLAYING; + if (pPlayerInfo.m_bGetOutOfHospitalFree) { + pPlayerInfo.m_bGetOutOfHospitalFree = false; + } else { + pPlayerInfo.m_nMoney = max(0, pPlayerInfo.m_nMoney - 1000); + pPlayerInfo.m_pPed->ClearWeapons(); + } + + if (pPlayerInfo.m_pPed->bInVehicle) { + CVehicle *pVehicle = pPlayerInfo.m_pPed->m_pMyVehicle; + if (pVehicle != nil) { + if (pVehicle->pDriver == pPlayerInfo.m_pPed) { + pVehicle->pDriver = nil; + if (pVehicle->m_status != STATUS_WRECKED) + pVehicle->m_status = STATUS_ABANDONED; + } else + pVehicle->RemovePassenger(pPlayerInfo.m_pPed); + } + } + CEventList::Initialise(); + CMessages::ClearMessages(); + CCarCtrl::ClearInterestingVehicleList(); + CWorld::ClearExcitingStuffFromArea(pPlayerInfo.GetPos(), 4000.0f, 1); + CRestart::FindClosestHospitalRestartPoint(pPlayerInfo.GetPos(), &vecRestartPos, &fRestartFloat); + CRestart::OverrideHospitalLevel = LEVEL_NONE; + CRestart::OverridePoliceStationLevel = LEVEL_NONE; + PassTime(720); + RestorePlayerStuffDuringResurrection(pPlayerInfo.m_pPed, vecRestartPos, fRestartFloat); + SortOutStreamingAndMemory(pPlayerInfo.GetPos()); + TheCamera.m_fCamShakeForce = 0.0f; + TheCamera.SetMotionBlur(0, 0, 0, 0, MBLUR_NONE); + CPad::GetPad(0)->StopShaking(0); + CReferences::RemoveReferencesToPlayer(); + CCarCtrl::CountDownToCarsAtStart = 2; + CPad::GetPad(CWorld::PlayerInFocus)->DisablePlayerControls = PLAYERCONTROL_ENABLED; + if (CRestart::bFadeInAfterNextDeath) { + TheCamera.SetFadeColour(200, 200, 200); + TheCamera.Fade(4.0f, FADE_IN); + } else CRestart::bFadeInAfterNextDeath = true; + } + break; + case WBSTATE_BUSTED: + if ((CTimer::GetTimeInMilliseconds() - pPlayerInfo.m_nWBTime > 0x800) && (CTimer::GetPreviousTimeInMilliseconds() - pPlayerInfo.m_nWBTime <= 0x800)) { + TheCamera.SetFadeColour(0, 0, 0); + TheCamera.Fade(2.0f, FADE_OUT); + } + if (CTimer::GetTimeInMilliseconds() - pPlayerInfo.m_nWBTime >= 0x1000) { + pPlayerInfo.m_WBState = WBSTATE_PLAYING; + int takeMoney; + + switch (pPlayerInfo.m_pPed->m_pWanted->m_nWantedLevel) { + case 0: + case 1: + takeMoney = 100; + break; + case 2: + takeMoney = 200; + break; + case 3: + takeMoney = 400; + break; + case 4: + takeMoney = 600; + break; + case 5: + takeMoney = 900; + break; + case 6: + takeMoney = 1500; + break; + } + if (pPlayerInfo.m_bGetOutOfJailFree) { + pPlayerInfo.m_bGetOutOfJailFree = false; + } else { + pPlayerInfo.m_nMoney = max(0, pPlayerInfo.m_nMoney - takeMoney); + pPlayerInfo.m_pPed->ClearWeapons(); + } + + if (pPlayerInfo.m_pPed->bInVehicle) { + CVehicle *pVehicle = pPlayerInfo.m_pPed->m_pMyVehicle; + if (pVehicle != nil) { + if (pVehicle->pDriver == pPlayerInfo.m_pPed) { + pVehicle->pDriver = nil; + if (pVehicle->m_status != STATUS_WRECKED) + pVehicle->m_status = STATUS_ABANDONED; + } + else + pVehicle->RemovePassenger(pPlayerInfo.m_pPed); + } + } + CEventList::Initialise(); + CMessages::ClearMessages(); + CCarCtrl::ClearInterestingVehicleList(); + CWorld::ClearExcitingStuffFromArea(pPlayerInfo.GetPos(), 4000.0f, 1); + CRestart::FindClosestPoliceRestartPoint(pPlayerInfo.GetPos(), &vecRestartPos, &fRestartFloat); + CRestart::OverrideHospitalLevel = LEVEL_NONE; + CRestart::OverridePoliceStationLevel = LEVEL_NONE; + PassTime(720); + RestorePlayerStuffDuringResurrection(pPlayerInfo.m_pPed, vecRestartPos, fRestartFloat); + pPlayerInfo.m_pPed->ClearWeapons(); + SortOutStreamingAndMemory(pPlayerInfo.GetPos()); + TheCamera.m_fCamShakeForce = 0.0f; + TheCamera.SetMotionBlur(0, 0, 0, 0, MBLUR_NONE); + CPad::GetPad(0)->StopShaking(0); + CReferences::RemoveReferencesToPlayer(); + CCarCtrl::CountDownToCarsAtStart = 2; + CPad::GetPad(CWorld::PlayerInFocus)->DisablePlayerControls = PLAYERCONTROL_ENABLED; + if (CRestart::bFadeInAfterNextArrest) { + TheCamera.SetFadeColour(0, 0, 0); + TheCamera.Fade(4.0f, FADE_IN); + } else CRestart::bFadeInAfterNextArrest = true; + } + break; + case WBSTATE_FAILED_CRITICAL_MISSION: + if (CTimer::GetTimeInMilliseconds() - pPlayerInfo.m_nWBTime > 0x800 && CTimer::GetPreviousTimeInMilliseconds() - pPlayerInfo.m_nWBTime <= 0x800) { + TheCamera.SetFadeColour(0, 0, 0); + TheCamera.Fade(2.0f, FADE_OUT); + } + if (CTimer::GetTimeInMilliseconds() - pPlayerInfo.m_nWBTime >= 0x1000) { + pPlayerInfo.m_WBState = WBSTATE_PLAYING; + if (pPlayerInfo.m_pPed->bInVehicle) { + CVehicle *pVehicle = pPlayerInfo.m_pPed->m_pMyVehicle; + if (pVehicle != nil) { + if (pVehicle->pDriver == pPlayerInfo.m_pPed) { + pVehicle->pDriver = nil; + if (pVehicle->m_status != STATUS_WRECKED) + pVehicle->m_status = STATUS_ABANDONED; + } else + pVehicle->RemovePassenger(pPlayerInfo.m_pPed); + } + } + CEventList::Initialise(); + CMessages::ClearMessages(); + CCarCtrl::ClearInterestingVehicleList(); + CWorld::ClearExcitingStuffFromArea(pPlayerInfo.GetPos(), 4000.0f, 1); + CRestart::FindClosestPoliceRestartPoint(pPlayerInfo.GetPos(), &vecRestartPos, &fRestartFloat); + CRestart::OverridePoliceStationLevel = LEVEL_NONE; + CRestart::OverrideHospitalLevel = LEVEL_NONE; + RestorePlayerStuffDuringResurrection(pPlayerInfo.m_pPed, vecRestartPos, fRestartFloat); + SortOutStreamingAndMemory(pPlayerInfo.GetPos()); + TheCamera.m_fCamShakeForce = 0.0f; + TheCamera.SetMotionBlur(0, 0, 0, 0, MBLUR_NONE); + CPad::GetPad(0)->StopShaking(0); + CReferences::RemoveReferencesToPlayer(); + CCarCtrl::CountDownToCarsAtStart = 2; + CPad::GetPad(CWorld::PlayerInFocus)->DisablePlayerControls = PLAYERCONTROL_ENABLED; + TheCamera.SetFadeColour(0, 0, 0); + TheCamera.Fade(4.0f, FADE_IN); + } + break; + case 4: + return; + } +} + +void +CGameLogic::RestorePlayerStuffDuringResurrection(CPlayerPed *pPlayerPed, CVector pos, float angle) +{ + pPlayerPed->m_fHealth = 100.0f; + pPlayerPed->m_fArmour = 0.0f; + pPlayerPed->bIsVisible = true; + pPlayerPed->m_bloodyFootprintCountOrDeathTime = 0; + pPlayerPed->bDoBloodyFootprints = false; + pPlayerPed->ClearAdrenaline(); + pPlayerPed->m_fCurrentStamina = pPlayerPed->m_fMaxStamina; + if (pPlayerPed->m_pFire) + pPlayerPed->m_pFire->Extinguish(); + pPlayerPed->bInVehicle = false; + pPlayerPed->m_pMyVehicle = nil; + pPlayerPed->m_pVehicleAnim = nil; + pPlayerPed->m_pWanted->Reset(); + pPlayerPed->RestartNonPartialAnims(); + pPlayerPed->GetPlayerInfoForThisPlayerPed()->MakePlayerSafe(false); + pPlayerPed->bRemoveFromWorld = false; + pPlayerPed->ClearWeaponTarget(); + pPlayerPed->SetInitialState(); + CCarCtrl::ClearInterestingVehicleList(); + + pos.z += 1.0f; + pPlayerPed->Teleport(pos); + pPlayerPed->SetMoveSpeed(CVector(0.0f, 0.0f, 0.0f)); + + pPlayerPed->m_fRotationCur = DEGTORAD(angle); + pPlayerPed->m_fRotationDest = pPlayerPed->m_fRotationCur; + pPlayerPed->SetHeading(pPlayerPed->m_fRotationCur); + CTheScripts::ClearSpaceForMissionEntity(pos, pPlayerPed); + CWorld::ClearExcitingStuffFromArea(pos, 4000.0, 1); + pPlayerPed->RestoreHeadingRate(); + TheCamera.SetCameraDirectlyInFrontForFollowPed_CamOnAString(); + CReferences::RemoveReferencesToPlayer(); + CGarages::PlayerArrestedOrDied(); + CStats::CheckPointReachedUnsuccessfully(); + CWorld::Remove(pPlayerPed); + CWorld::Add(pPlayerPed); +} + STARTPATCHES InjectHook(0x4213F0, &CGameLogic::InitAtStartOfGame, PATCH_JUMP); InjectHook(0x421C00, &CGameLogic::PassTime, PATCH_JUMP); InjectHook(0x421A20, &CGameLogic::SortOutStreamingAndMemory, PATCH_JUMP); InjectHook(0x421400, &CGameLogic::Update, PATCH_JUMP); - InjectHook(0x421A60, &CGameLogic::RestorePlayerStuffDuringResurrection, PATCH_JUMP); + InjectHook(0x421A60, &CGameLogic::RestorePlayerStuffDuringResurrection, PATCH_JUMP); ENDPATCHES \ No newline at end of file diff --git a/src/control/GameLogic.h b/src/control/GameLogic.h index db626558..43e244a3 100644 --- a/src/control/GameLogic.h +++ b/src/control/GameLogic.h @@ -1,13 +1,13 @@ -#pragma once - -class CGameLogic -{ -public: - static void InitAtStartOfGame(); - static void PassTime(uint32 time); - static void SortOutStreamingAndMemory(const CVector &pos); - static void Update(); - static void RestorePlayerStuffDuringResurrection(class CPlayerPed *pPlayerPed, CVector pos, float angle); - - static uint8 ActivePlayers; +#pragma once + +class CGameLogic +{ +public: + static void InitAtStartOfGame(); + static void PassTime(uint32 time); + static void SortOutStreamingAndMemory(const CVector &pos); + static void Update(); + static void RestorePlayerStuffDuringResurrection(class CPlayerPed *pPlayerPed, CVector pos, float angle); + + static uint8 ActivePlayers; }; \ No newline at end of file diff --git a/src/control/Gangs.cpp b/src/control/Gangs.cpp index ac32ad98..57d9c67e 100644 --- a/src/control/Gangs.cpp +++ b/src/control/Gangs.cpp @@ -1,7 +1,7 @@ #include "common.h" #include "patcher.h" #include "ModelIndices.h" -#include "Gangs.h" +#include "Gangs.h" #include "Weapon.h" //CGangInfo(&CGangs::Gang)[NUM_GANGS] = *(CGangInfo(*)[NUM_GANGS])*(uintptr*)0x6EDF78; @@ -57,20 +57,20 @@ void CGangs::SaveAllGangData(uint8 *buf, uint32 *size) { INITSAVEBUF - *size = SAVE_HEADER_SIZE + sizeof(Gang); + *size = SAVE_HEADER_SIZE + sizeof(Gang); WriteSaveHeader(buf, 'G','N','G','\0', *size - SAVE_HEADER_SIZE); - for (int i = 0; i < NUM_GANGS; i++) - WriteSaveBuf(buf, Gang[i]); - + for (int i = 0; i < NUM_GANGS; i++) + WriteSaveBuf(buf, Gang[i]); + VALIDATESAVEBUF(*size); } void CGangs::LoadAllGangData(uint8 *buf, uint32 size) { - Initialise(); - -INITSAVEBUF - // original: SkipSaveBuf(buf, SAVE_HEADER_SIZE); + Initialise(); + +INITSAVEBUF + // original: SkipSaveBuf(buf, SAVE_HEADER_SIZE); CheckSaveHeader(buf, 'G','N','G','\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUM_GANGS; i++) diff --git a/src/control/OnscreenTimer.h b/src/control/OnscreenTimer.h index b1e0e622..fb139266 100644 --- a/src/control/OnscreenTimer.h +++ b/src/control/OnscreenTimer.h @@ -1,49 +1,49 @@ -#pragma once - -enum -{ - COUNTER_DISPLAY_NUMBER, - COUNTER_DISPLAY_BAR, -}; - -class COnscreenTimerEntry -{ -public: - uint32 m_nTimerOffset; - uint32 m_nCounterOffset; - char m_aTimerText[10]; - char m_aCounterText[10]; - uint16 m_nType; - char m_bCounterBuffer[42]; - char m_bTimerBuffer[42]; - bool m_bTimerProcessed; - bool m_bCounterProcessed; - - void Process(); - bool ProcessForDisplay(); - - void ProcessForDisplayClock(); - void ProcessForDisplayCounter(); -}; - -static_assert(sizeof(COnscreenTimerEntry) == 0x74, "COnscreenTimerEntry: error"); - -class COnscreenTimer -{ -public: - COnscreenTimerEntry m_sEntries[NUMONSCREENTIMERENTRIES]; - bool m_bProcessed; - bool m_bDisabled; - - void Init(); - void Process(); - void ProcessForDisplay(); - - void ClearCounter(uint32 offset); - void ClearClock(uint32 offset); - - void AddCounter(uint32 offset, uint16 type, char* text); - void AddClock(uint32 offset, char* text); -}; - +#pragma once + +enum +{ + COUNTER_DISPLAY_NUMBER, + COUNTER_DISPLAY_BAR, +}; + +class COnscreenTimerEntry +{ +public: + uint32 m_nTimerOffset; + uint32 m_nCounterOffset; + char m_aTimerText[10]; + char m_aCounterText[10]; + uint16 m_nType; + char m_bCounterBuffer[42]; + char m_bTimerBuffer[42]; + bool m_bTimerProcessed; + bool m_bCounterProcessed; + + void Process(); + bool ProcessForDisplay(); + + void ProcessForDisplayClock(); + void ProcessForDisplayCounter(); +}; + +static_assert(sizeof(COnscreenTimerEntry) == 0x74, "COnscreenTimerEntry: error"); + +class COnscreenTimer +{ +public: + COnscreenTimerEntry m_sEntries[NUMONSCREENTIMERENTRIES]; + bool m_bProcessed; + bool m_bDisabled; + + void Init(); + void Process(); + void ProcessForDisplay(); + + void ClearCounter(uint32 offset); + void ClearClock(uint32 offset); + + void AddCounter(uint32 offset, uint16 type, char* text); + void AddClock(uint32 offset, char* text); +}; + static_assert(sizeof(COnscreenTimer) == 0x78, "COnscreenTimer: error"); \ No newline at end of file diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index 3e3c2a48..774abd8c 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -1,1049 +1,1049 @@ -#include "common.h" -#include "patcher.h" -#include "main.h" - -#include "Camera.h" -#include "Coronas.h" -#include "Darkel.h" -#include "Entity.h" -#include "Explosion.h" -#include "Font.h" -#include "Garages.h" -#include "General.h" -#include "ModelIndices.h" -#include "Object.h" -#include "Pad.h" -#include "Pickups.h" -#include "PlayerPed.h" -#include "Wanted.h" -#include "DMAudio.h" -#include "Fire.h" -#include "PointLights.h" -#include "Pools.h" -#ifdef FIX_BUGS -#include "Replay.h" -#endif -#include "Script.h" -#include "Shadows.h" -#include "SpecialFX.h" -#include "Sprite.h" -#include "Timer.h" -#include "WaterLevel.h" -#include "World.h" - -CPickup(&CPickups::aPickUps)[NUMPICKUPS] = *(CPickup(*)[NUMPICKUPS])*(uintptr*)0x878C98; -int16 CPickups::NumMessages;// = *(int16*)0x95CC98; -int32 CPickups::aPickUpsCollected[NUMCOLLECTEDPICKUPS];// = *(int32(*)[NUMCOLLECTEDPICKUPS])*(uintptr*)0x87C538; -int16 CPickups::CollectedPickUpIndex;// = *(int16*)0x95CC8A; - -// unused -bool &CPickups::bPickUpcamActivated = *(bool*)0x95CD71; -CVehicle *&CPickups::pPlayerVehicle = *(CVehicle**)0x8F29E8; -CVector &CPickups::StaticCamCoors = *(CVector*)0x9404C8; -uint32 &CPickups::StaticCamStartTime = *(uint32*)0x8E289C; - -tPickupMessage CPickups::aMessages[NUMPICKUPMESSAGES]; - -// 20 ?! Some Miami leftover? (Originally at 0x5ED8D4) -uint16 AmmoForWeapon[20] = { 0, 1, 45, 125, 25, 150, 300, 25, 5, 250, 5, 5, 0, 500, 0, 100, 0, 0, 0, 0 }; -uint16 AmmoForWeapon_OnStreet[20] = { 0, 1, 9, 25, 5, 30, 60, 5, 1, 50, 1, 1, 0, 200, 0, 100, 0, 0, 0, 0 }; -uint16 CostOfWeapon[20] = { 0, 10, 250, 800, 1500, 3000, 5000, 10000, 25000, 25000, 2000, 2000, 0, 50000, 0, 3000, 0, 0, 0, 0 }; - -uint8 aWeaponReds[] = { 255, 0, 128, 255, 255, 0, 255, 0, 128, 128, 255, 255, 128, 0, 255, 0 }; -uint8 aWeaponGreens[] = { 0, 255, 128, 255, 0, 255, 128, 255, 0, 255, 255, 0, 255, 0, 255, 0 }; -uint8 aWeaponBlues[] = { 0, 0, 255, 0, 255, 255, 0, 128, 255, 0, 255, 0, 128, 255, 0, 0 }; -float aWeaponScale[] = { 1.0f, 2.0f, 1.5f, 1.0f, 1.0f, 1.5f, 1.0f, 2.0f, 1.0f, 2.0f, 2.5f, 1.0f, 1.0f, 1.0f, 1.0f }; - -WRAPPER void CPacManPickups::Init(void) { EAXJMP(0x432760); } -WRAPPER void CPacManPickups::Update(void) { EAXJMP(0x432800); } -WRAPPER void CPacManPickups::GeneratePMPickUps(CVector, float, int16, uint8) { EAXJMP(0x432AE0); } -WRAPPER void CPacManPickups::GeneratePMPickUpsForRace(int32) { EAXJMP(0x432D50); } -WRAPPER void CPacManPickups::GenerateOnePMPickUp(CVector) { EAXJMP(0x432F20); } -WRAPPER void CPacManPickups::Render(void) { EAXJMP(0x432F60); } -WRAPPER void CPacManPickups::DoCleanUpPacManStuff(void) { EAXJMP(0x433150); } -WRAPPER void CPacManPickups::StartPacManRace(int32) { EAXJMP(0x433340); } -WRAPPER void CPacManPickups::StartPacManRecord(void) { EAXJMP(0x433360); } -WRAPPER uint32 CPacManPickups::QueryPowerPillsEatenInRace(void) { EAXJMP(0x4333A0); } -WRAPPER void CPacManPickups::ResetPowerPillsEatenInRace(void) { EAXJMP(0x4333B0); } -WRAPPER void CPacManPickups::CleanUpPacManStuff(void) { EAXJMP(0x4333C0); } -WRAPPER void CPacManPickups::StartPacManScramble(CVector, float, int16) { EAXJMP(0x4333D0); } -WRAPPER uint32 CPacManPickups::QueryPowerPillsCarriedByPlayer(void) { EAXJMP(0x4333F0); } -WRAPPER void CPacManPickups::ResetPowerPillsCarriedByPlayer(void) { EAXJMP(0x433410); } - - -void -CPickup::RemoveKeepType() -{ - CWorld::Remove(m_pObject); - delete m_pObject; - - m_bRemoved = true; - m_pObject = nil; -} - -void -CPickup::Remove() -{ - RemoveKeepType(); - m_eType = PICKUP_NONE; -} - -CObject * -CPickup::GiveUsAPickUpObject(int32 handle) -{ - CObject *object; - - if (handle <= 0) object = new CObject(m_eModelIndex, false); - else { - CPools::MakeSureSlotInObjectPoolIsEmpty(handle); - object = new(handle) CObject(m_eModelIndex, false); - } - - if (object == nil) return nil; - object->ObjectCreatedBy = MISSION_OBJECT; - object->GetPosition() = m_vecPos; - object->SetOrientation(0.0f, 0.0f, -HALFPI); - object->GetMatrix().UpdateRW(); - object->UpdateRwFrame(); - - object->bAffectedByGravity = false; - object->bExplosionProof = true; - object->bUsesCollision = false; - object->bIsPickup = true; - - object->field_172 = m_eModelIndex == MI_PICKUP_BONUS ? m_nQuantity : 0; - - switch (m_eType) - { - case PICKUP_IN_SHOP: - object->m_obj_flag2 = true; - object->bOutOfStock = false; - break; - case PICKUP_ON_STREET: - case PICKUP_ONCE: - case PICKUP_ONCE_TIMEOUT: - case PICKUP_COLLECTABLE1: - case PICKUP_MONEY: - case PICKUP_MINE_INACTIVE: - case PICKUP_MINE_ARMED: - case PICKUP_NAUTICAL_MINE_INACTIVE: - case PICKUP_NAUTICAL_MINE_ARMED: - case PICKUP_FLOATINGPACKAGE: - case PICKUP_ON_STREET_SLOW: - object->m_obj_flag2 = false; - object->bOutOfStock = false; - break; - case PICKUP_IN_SHOP_OUT_OF_STOCK: - object->m_obj_flag2 = false; - object->bOutOfStock = true; - object->bRenderScorched = true; - break; - case PICKUP_FLOATINGPACKAGE_FLOATING: - default: - break; - } - return object; -} - -bool -CPickup::CanBePickedUp(CPlayerPed *player) -{ - assert(m_pObject != nil); - bool cannotBePickedUp = - (m_pObject->GetModelIndex() == MI_PICKUP_BODYARMOUR && player->m_fArmour > 99.5f) - || (m_pObject->GetModelIndex() == MI_PICKUP_HEALTH && player->m_fHealth > 99.5f) - || (m_pObject->GetModelIndex() == MI_PICKUP_BRIBE && player->m_pWanted->m_nWantedLevel == 0) - || (m_pObject->GetModelIndex() == MI_PICKUP_KILLFRENZY && (CTheScripts::IsPlayerOnAMission() || CDarkel::FrenzyOnGoing() || !CGame::nastyGame)); - return !cannotBePickedUp; -} - -bool -CPickup::Update(CPlayerPed *player, CVehicle *vehicle, int playerId) -{ - float waterLevel; - - if (m_bRemoved) { - if (CTimer::GetTimeInMilliseconds() > m_nTimer) { - // respawn pickup if we're far enough - float dist = (FindPlayerCoors().x - m_vecPos.x) * (FindPlayerCoors().x - m_vecPos.x) + (FindPlayerCoors().y - m_vecPos.y) * (FindPlayerCoors().y - m_vecPos.y); - if (dist > 100.0f || m_eType == PICKUP_IN_SHOP && dist > 2.4f) { - m_pObject = GiveUsAPickUpObject(-1); - if (m_pObject) { - CWorld::Add(m_pObject); - m_bRemoved = false; - } - } - } - return false; - } - - if (!m_pObject) return false; - - if (!IsMine()) { - // let's check if we touched the pickup - bool isPickupTouched = false; - if (m_pObject->GetModelIndex() == MI_PICKUP_BRIBE) { - if (vehicle != nil) { - if (vehicle->IsSphereTouchingVehicle(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z, 2.0f)) - isPickupTouched = true; - } - else { - if (Abs(player->GetPosition().z - m_pObject->GetPosition().z) < 2.0f) { - if ((player->GetPosition().x - m_pObject->GetPosition().x) * (player->GetPosition().x - m_pObject->GetPosition().x) + - (player->GetPosition().y - m_pObject->GetPosition().y) * (player->GetPosition().y - m_pObject->GetPosition().y) < 1.8f) - isPickupTouched = true; - } - } - } else if (m_pObject->GetModelIndex() == MI_PICKUP_CAMERA) { - if (vehicle != nil && vehicle->IsSphereTouchingVehicle(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z, 2.0f)) { - isPickupTouched = true; - } - } else if (vehicle == nil) { - if (Abs(player->GetPosition().z - m_pObject->GetPosition().z) < 2.0f) { - if ((player->GetPosition().x - m_pObject->GetPosition().x) * (player->GetPosition().x - m_pObject->GetPosition().x) + - (player->GetPosition().y - m_pObject->GetPosition().y) * (player->GetPosition().y - m_pObject->GetPosition().y) < 1.8f) - isPickupTouched = true; - } - } - - // if we didn't then we've got nothing to do - if (isPickupTouched && CanBePickedUp(player)) { - CPad::GetPad(0)->StartShake(120, 100); - switch (m_eType) - { - case PICKUP_IN_SHOP: - if (CWorld::Players[playerId].m_nMoney < CostOfWeapon[CPickups::WeaponForModel(m_pObject->GetModelIndex())]) { - CGarages::TriggerMessage("PU_MONY", -1, 6000, -1); - } else { - CWorld::Players[playerId].m_nMoney -= CostOfWeapon[CPickups::WeaponForModel(m_pObject->GetModelIndex())]; - if (!CPickups::GivePlayerGoodiesWithPickUpMI(m_pObject->GetModelIndex(), playerId)) { - player->GiveWeapon(CPickups::WeaponForModel(m_pObject->GetModelIndex()), AmmoForWeapon[CPickups::WeaponForModel(m_pObject->GetModelIndex())]); - player->m_nSelectedWepSlot = player->GetWeaponSlot(CPickups::WeaponForModel(m_pObject->GetModelIndex())); - DMAudio.PlayFrontEndSound(SOUND_PICKUP_WEAPON_BOUGHT, m_pObject->GetModelIndex() - MI_GRENADE); - } - RemoveKeepType(); - m_nTimer = CTimer::GetTimeInMilliseconds() + 5000; - return true; - } - break; - case PICKUP_ON_STREET: - case PICKUP_ON_STREET_SLOW: - if (!CPickups::GivePlayerGoodiesWithPickUpMI(m_pObject->GetModelIndex(), playerId)) { - if (CPickups::WeaponForModel(m_pObject->GetModelIndex())) { - player->GiveWeapon(CPickups::WeaponForModel(m_pObject->GetModelIndex()), m_nQuantity != 0 ? m_nQuantity : AmmoForWeapon_OnStreet[CPickups::WeaponForModel(m_pObject->GetModelIndex())]); - if (player->m_nSelectedWepSlot == player->GetWeaponSlot(WEAPONTYPE_UNARMED)) { - player->m_nSelectedWepSlot = player->GetWeaponSlot(CPickups::WeaponForModel(m_pObject->GetModelIndex())); - } - DMAudio.PlayFrontEndSound(SOUND_PICKUP_WEAPON, m_pObject->GetModelIndex() - MI_GRENADE); - } else if (m_pObject->GetModelIndex() == MI_PICKUP_CAMERA && vehicle != nil) { - DMAudio.PlayFrontEndSound(SOUND_PICKUP_BONUS, 0); - CPickups::bPickUpcamActivated = true; - CPickups::pPlayerVehicle = FindPlayerVehicle(); - CPickups::StaticCamCoors = m_pObject->GetPosition(); - CPickups::StaticCamStartTime = CTimer::GetTimeInMilliseconds(); - } - } - if (m_eType == PICKUP_ON_STREET) { - m_nTimer = CTimer::GetTimeInMilliseconds() + 30000; - } else if (m_eType == PICKUP_ON_STREET_SLOW) { - if (MI_PICKUP_BRIBE == m_pObject->m_modelIndex) - m_nTimer = CTimer::GetTimeInMilliseconds() + 300000; - else - m_nTimer = CTimer::GetTimeInMilliseconds() + 720000; - } - - RemoveKeepType(); - return true; - case PICKUP_ONCE: - case PICKUP_ONCE_TIMEOUT: - if (!CPickups::GivePlayerGoodiesWithPickUpMI(m_pObject->GetModelIndex(), playerId)) { - if (CPickups::WeaponForModel(m_pObject->GetModelIndex())) { - player->GiveWeapon(CPickups::WeaponForModel(m_pObject->GetModelIndex()), m_nQuantity != 0 ? m_nQuantity : AmmoForWeapon[CPickups::WeaponForModel(m_pObject->GetModelIndex())]); - if (player->m_nSelectedWepSlot == player->GetWeaponSlot(WEAPONTYPE_UNARMED)) - player->m_nSelectedWepSlot = player->GetWeaponSlot(CPickups::WeaponForModel(m_pObject->GetModelIndex())); - } - DMAudio.PlayFrontEndSound(SOUND_PICKUP_WEAPON, m_pObject->GetModelIndex() - MI_GRENADE); - } - Remove(); - return true; - case PICKUP_COLLECTABLE1: - CWorld::Players[playerId].m_nCollectedPackages++; - CWorld::Players[playerId].m_nMoney += 1000; - - if (CWorld::Players[playerId].m_nCollectedPackages == CWorld::Players[playerId].m_nTotalPackages) { - printf("All collectables have been picked up\n"); - CGarages::TriggerMessage("CO_ALL", -1, 5000, -1); - CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 1000000; - } else - CGarages::TriggerMessage("CO_ONE", CWorld::Players[CWorld::PlayerInFocus].m_nCollectedPackages, 5000, CWorld::Players[CWorld::PlayerInFocus].m_nTotalPackages); - - Remove(); - DMAudio.PlayFrontEndSound(SOUND_PICKUP_HIDDEN_PACKAGE, 0); - return true; - case PICKUP_MONEY: - CWorld::Players[playerId].m_nMoney += m_nQuantity; - sprintf(gString, "$%d", m_nQuantity); -#ifdef MONEY_MESSAGES - CMoneyMessages::RegisterOne(m_vecPos + CVector(0.0f, 0.0f, 1.0f), gString, 0, 255, 0, 0.5f, 0.5f); -#endif - Remove(); - DMAudio.PlayFrontEndSound(SOUND_PICKUP_MONEY, 0); - return true; - //case PICKUP_IN_SHOP_OUT_OF_STOCK: - //case PICKUP_MINE_INACTIVE: - //case PICKUP_MINE_ARMED: - //case PICKUP_NAUTICAL_MINE_INACTIVE: - //case PICKUP_NAUTICAL_MINE_ARMED: - //case PICKUP_FLOATINGPACKAGE: - //case PICKUP_FLOATINGPACKAGE_FLOATING: - default: - break; - } - } - } else { - switch (m_eType) - { - case PICKUP_MINE_INACTIVE: - if (vehicle != nil && !vehicle->IsSphereTouchingVehicle(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z, 2.0f)) { - m_eType = PICKUP_MINE_ARMED; - m_nTimer = CTimer::GetTimeInMilliseconds() + 10000; - } - break; - case PICKUP_NAUTICAL_MINE_INACTIVE: - { - if (CWaterLevel::GetWaterLevel(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z + 5.0f, &waterLevel, false)) - m_pObject->GetPosition().z = waterLevel + 0.6f; - - m_pObject->GetMatrix().UpdateRW(); - m_pObject->UpdateRwFrame(); - - bool touched = false; - for (int32 i = CPools::GetVehiclePool()->GetSize()-1; i >= 0; i--) { - CVehicle *vehicle = CPools::GetVehiclePool()->GetSlot(i); - if (vehicle != nil && vehicle->IsSphereTouchingVehicle(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z, 1.5f)) { - touched = true; - break; // added break here - } - } - - if (!touched) { - m_eType = PICKUP_NAUTICAL_MINE_ARMED; - m_nTimer = CTimer::GetTimeInMilliseconds() + 10000; - } - break; - } - case PICKUP_NAUTICAL_MINE_ARMED: - if (CWaterLevel::GetWaterLevel(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z + 5.0f, &waterLevel, false)) - m_pObject->GetPosition().z = waterLevel + 0.6f; - - m_pObject->GetMatrix().UpdateRW(); - m_pObject->UpdateRwFrame(); - // no break here - case PICKUP_MINE_ARMED: - { - bool explode = false; - if (CTimer::GetTimeInMilliseconds() > m_nTimer) - explode = true; - else {// added else here since vehicle lookup is useless - for (int32 i = CPools::GetVehiclePool()->GetSize()-1; i >= 0; i--) { - CVehicle *vehicle = CPools::GetVehiclePool()->GetSlot(i); - if (vehicle != nil && vehicle->IsSphereTouchingVehicle(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z, 1.5f)) { - explode = true; - break; // added break here - } - } - } - if (explode) { - CExplosion::AddExplosion(nil, nil, EXPLOSION_MINE, m_pObject->GetPosition(), 0); - Remove(); - } - break; - } - case PICKUP_FLOATINGPACKAGE: - m_pObject->m_vecMoveSpeed.z -= 0.01f * CTimer::GetTimeStep(); - m_pObject->GetPosition() += m_pObject->GetMoveSpeed() * CTimer::GetTimeStep(); - - m_pObject->GetMatrix().UpdateRW(); - m_pObject->UpdateRwFrame(); - if (CWaterLevel::GetWaterLevel(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z + 5.0f, &waterLevel, 0) && waterLevel >= m_pObject->GetPosition().z) - m_eType = PICKUP_FLOATINGPACKAGE_FLOATING; - break; - case PICKUP_FLOATINGPACKAGE_FLOATING: - if (CWaterLevel::GetWaterLevel(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z + 5.0f, &waterLevel, 0)) - m_pObject->GetPosition().z = waterLevel; - - m_pObject->GetMatrix().UpdateRW(); - m_pObject->UpdateRwFrame(); - if (vehicle != nil && vehicle->IsSphereTouchingVehicle(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z, 2.0f)) { - Remove(); - DMAudio.PlayFrontEndSound(SOUND_PICKUP_FLOAT_PACKAGE, 0); - return true; - } - break; - } - } - if (!m_bRemoved && (m_eType == PICKUP_ONCE_TIMEOUT || m_eType == PICKUP_MONEY) && CTimer::GetTimeInMilliseconds() > m_nTimer) - Remove(); - return false; -} - -void -CPickups::Init(void) -{ - NumMessages = 0; - for (int i = 0; i < NUMPICKUPS; i++) { - aPickUps[i].m_eType = PICKUP_NONE; - aPickUps[i].m_nIndex = 1; - aPickUps[i].m_pObject = nil; - } - - for (int i = 0; i < NUMCOLLECTEDPICKUPS; i++) - aPickUpsCollected[i] = 0; - - CollectedPickUpIndex = 0; -} - -bool -CPickups::IsPickUpPickedUp(int32 pickupId) -{ - for (int i = 0; i < NUMCOLLECTEDPICKUPS; i++) { - if (pickupId == aPickUpsCollected[i]) { - aPickUpsCollected[i] = 0; - return true; - } - } - return false; -} - -void -CPickups::PassTime(uint32 time) -{ - for (int i = 0; i < NUMPICKUPS; i++) { - if (aPickUps[i].m_eType != PICKUP_NONE) { - if (aPickUps[i].m_nTimer <= time) - aPickUps[i].m_nTimer = 0; - else - aPickUps[i].m_nTimer -= time; - } - } -} - -int32 -CPickups::GetActualPickupIndex(int32 index) -{ - if (index == -1) return -1; - - // doesn't look nice - if ((uint16)((index & 0xFFFF0000) >> 16) != aPickUps[(uint16)index].m_nIndex) return -1; - return (uint16)index; -} - -bool -CPickups::GivePlayerGoodiesWithPickUpMI(int16 modelIndex, int playerIndex) -{ - CPlayerPed *player; - - if (playerIndex <= 0) player = CWorld::Players[CWorld::PlayerInFocus].m_pPed; - else player = CWorld::Players[playerIndex].m_pPed; - - if (modelIndex == MI_PICKUP_ADRENALINE) { - player->m_bAdrenalineActive = true; - player->m_nAdrenalineTime = CTimer::GetTimeInMilliseconds() + 20000; - player->m_fCurrentStamina = player->m_fMaxStamina; - DMAudio.PlayFrontEndSound(SOUND_PICKUP_ADRENALINE, 0); - return true; - } else if (modelIndex == MI_PICKUP_BODYARMOUR) { - player->m_fArmour = 100.0f; - DMAudio.PlayFrontEndSound(SOUND_PICKUP_ARMOUR, 0); - return true; - } else if (modelIndex == MI_PICKUP_INFO) { - DMAudio.PlayFrontEndSound(SOUND_PICKUP_BONUS, 0); - return true; - } else if (modelIndex == MI_PICKUP_HEALTH) { - player->m_fHealth = 100.0f; - DMAudio.PlayFrontEndSound(SOUND_PICKUP_HEALTH, 0); - return true; - } else if (modelIndex == MI_PICKUP_BONUS) { - DMAudio.PlayFrontEndSound(SOUND_PICKUP_BONUS, 0); - return true; - } else if (modelIndex == MI_PICKUP_BRIBE) { - int32 level = FindPlayerPed()->m_pWanted->m_nWantedLevel - 1; - if (level < 0) level = 0; - player->SetWantedLevel(level); - DMAudio.PlayFrontEndSound(SOUND_PICKUP_BONUS, 0); - return true; - } else if (modelIndex == MI_PICKUP_KILLFRENZY) { - DMAudio.PlayFrontEndSound(SOUND_PICKUP_BONUS, 0); - return true; - } - return false; -} - -void -CPickups::RemoveAllFloatingPickups() -{ - for (int i = 0; i < NUMPICKUPS; i++) { - if (aPickUps[i].m_eType == PICKUP_FLOATINGPACKAGE || aPickUps[i].m_eType == PICKUP_FLOATINGPACKAGE_FLOATING) { - if (aPickUps[i].m_pObject) { - CWorld::Remove(aPickUps[i].m_pObject); - delete aPickUps[i].m_pObject; - aPickUps[i].m_pObject = nil; - } - } - } -} - -void -CPickups::RemovePickUp(int32 pickupIndex) -{ - int32 index = CPickups::GetActualPickupIndex(pickupIndex); - if (index == -1) return; - - if (aPickUps[index].m_pObject) { - CWorld::Remove(aPickUps[index].m_pObject); - delete aPickUps[index].m_pObject; - aPickUps[index].m_pObject = nil; - } - aPickUps[index].m_eType = PICKUP_NONE; - aPickUps[index].m_bRemoved = true; -} - -int32 -CPickups::GenerateNewOne(CVector pos, uint32 modelIndex, uint8 type, uint32 quantity) -{ - bool bFreeFound = false; - int32 slot = 0; - - if (type == PICKUP_FLOATINGPACKAGE || type == PICKUP_NAUTICAL_MINE_INACTIVE) { - for (slot = NUMPICKUPS; slot >= 0; slot--) { - if (aPickUps[slot].m_eType == PICKUP_NONE) { - bFreeFound = true; - break; - } - } - } else { - for (slot = 0; slot < NUMGENERALPICKUPS; slot++) { - if (aPickUps[slot].m_eType == PICKUP_NONE) { - bFreeFound = true; - break; - } - } - } - - if (!bFreeFound) - { - for (slot = 0; slot < NUMGENERALPICKUPS; slot++) { - if (aPickUps[slot].m_eType == PICKUP_MONEY) break; - } - - if (slot >= NUMGENERALPICKUPS) - { - for (slot = 0; slot < NUMGENERALPICKUPS; slot++) { - if (aPickUps[slot].m_eType == PICKUP_ONCE_TIMEOUT) break; - } - - if (slot >= NUMGENERALPICKUPS) return -1; - } - } - - if (slot >= NUMPICKUPS) return -1; - - aPickUps[slot].m_eType = (ePickupType)type; - aPickUps[slot].m_bRemoved = false; - aPickUps[slot].m_nQuantity = quantity; - if (type == PICKUP_ONCE_TIMEOUT) - aPickUps[slot].m_nTimer = CTimer::GetTimeInMilliseconds() + 20000; - else if (type == PICKUP_MONEY) - aPickUps[slot].m_nTimer = CTimer::GetTimeInMilliseconds() + 30000; - else if (type == PICKUP_MINE_INACTIVE || type == PICKUP_MINE_ARMED) { - aPickUps[slot].m_eType = PICKUP_MINE_INACTIVE; - aPickUps[slot].m_nTimer = CTimer::GetTimeInMilliseconds() + 1500; - } else if (type == PICKUP_NAUTICAL_MINE_INACTIVE || type == PICKUP_NAUTICAL_MINE_ARMED) { - aPickUps[slot].m_eType = PICKUP_NAUTICAL_MINE_INACTIVE; - aPickUps[slot].m_nTimer = CTimer::GetTimeInMilliseconds() + 1500; - } - aPickUps[slot].m_eModelIndex = modelIndex; - aPickUps[slot].m_vecPos = pos; - aPickUps[slot].m_pObject = aPickUps[slot].GiveUsAPickUpObject(-1); - if (aPickUps[slot].m_pObject) - CWorld::Add(aPickUps[slot].m_pObject); - return GetNewUniquePickupIndex(slot); -} - -int32 -CPickups::GenerateNewOne_WeaponType(CVector pos, eWeaponType weaponType, uint8 type, uint32 quantity) -{ - return GenerateNewOne(pos, ModelForWeapon(weaponType), type, quantity); -} - -int32 -CPickups::GetNewUniquePickupIndex(int32 slot) -{ - if (aPickUps[slot].m_nIndex >= 0xFFFE) - aPickUps[slot].m_nIndex = 1; - else - aPickUps[slot].m_nIndex++; - return slot | (aPickUps[slot].m_nIndex << 16); -} - -int32 -CPickups::ModelForWeapon(eWeaponType weaponType) -{ - switch (weaponType) - { - case WEAPONTYPE_BASEBALLBAT: return MI_BASEBALL_BAT; - case WEAPONTYPE_COLT45: return MI_COLT; - case WEAPONTYPE_UZI: return MI_UZI; - case WEAPONTYPE_SHOTGUN: return MI_SHOTGUN; - case WEAPONTYPE_AK47: return MI_AK47; - case WEAPONTYPE_M16: return MI_M16; - case WEAPONTYPE_SNIPERRIFLE: return MI_SNIPER; - case WEAPONTYPE_ROCKETLAUNCHER: return MI_ROCKETLAUNCHER; - case WEAPONTYPE_FLAMETHROWER: return MI_FLAMETHROWER; - case WEAPONTYPE_MOLOTOV: return MI_MOLOTOV; - case WEAPONTYPE_GRENADE: return MI_GRENADE; - } - return 0; -} - -eWeaponType -CPickups::WeaponForModel(int32 model) -{ - if (model == MI_PICKUP_BODYARMOUR) return WEAPONTYPE_ARMOUR; - switch (model) - { - case MI_GRENADE: return WEAPONTYPE_GRENADE; - case MI_AK47: return WEAPONTYPE_AK47; - case MI_BASEBALL_BAT: return WEAPONTYPE_BASEBALLBAT; - case MI_COLT: return WEAPONTYPE_COLT45; - case MI_MOLOTOV: return WEAPONTYPE_MOLOTOV; - case MI_ROCKETLAUNCHER: return WEAPONTYPE_ROCKETLAUNCHER; - case MI_SHOTGUN: return WEAPONTYPE_SHOTGUN; - case MI_SNIPER: return WEAPONTYPE_SNIPERRIFLE; - case MI_UZI: return WEAPONTYPE_UZI; - case MI_MISSILE: return WEAPONTYPE_UNARMED; - case MI_M16: return WEAPONTYPE_M16; - case MI_FLAMETHROWER: return WEAPONTYPE_FLAMETHROWER; - } - return WEAPONTYPE_UNARMED; -} - -int32 -CPickups::FindColourIndexForWeaponMI(int32 model) -{ - return WeaponForModel(model) - 1; -} - -void -CPickups::AddToCollectedPickupsArray(int32 index) -{ - aPickUpsCollected[CollectedPickUpIndex++] = index | (aPickUps[index].m_nIndex << 16); - if (CollectedPickUpIndex >= NUMCOLLECTEDPICKUPS) - CollectedPickUpIndex = 0; -} - -void -CPickups::Update() -{ -#ifdef FIX_BUGS // RIP speedrunning (solution from SA) - if (CReplay::IsPlayingBack()) - return; -#endif -#define PICKUPS_FRAME_SPAN (6) -#ifdef FIX_BUGS - for (uint32 i = NUMGENERALPICKUPS * (CTimer::GetFrameCounter() % PICKUPS_FRAME_SPAN) / PICKUPS_FRAME_SPAN; i < NUMGENERALPICKUPS * (CTimer::GetFrameCounter() % PICKUPS_FRAME_SPAN + 1) / PICKUPS_FRAME_SPAN; i++) { -#else // BUG: this code can only reach 318 out of 320 pickups - for (uint32 i = NUMGENERALPICKUPS / PICKUPS_FRAME_SPAN * (CTimer::GetFrameCounter() % PICKUPS_FRAME_SPAN); i < NUMGENERALPICKUPS / PICKUPS_FRAME_SPAN * (CTimer::GetFrameCounter() % PICKUPS_FRAME_SPAN + 1); i++) { -#endif - if (aPickUps[i].m_eType != PICKUP_NONE && aPickUps[i].Update(FindPlayerPed(), FindPlayerVehicle(), CWorld::PlayerInFocus)) { - AddToCollectedPickupsArray(i); - } - } -#undef PICKUPS_FRAME_SPAN - for (uint32 i = NUMGENERALPICKUPS; i < NUMPICKUPS; i++) { - if (aPickUps[i].m_eType != PICKUP_NONE && aPickUps[i].Update(FindPlayerPed(), FindPlayerVehicle(), CWorld::PlayerInFocus)) { - AddToCollectedPickupsArray(i); - } - } -} - -void -CPickups::DoPickUpEffects(CEntity *entity) -{ - if (entity->GetModelIndex() == MI_PICKUP_KILLFRENZY) - entity->m_flagD80 = CTheScripts::IsPlayerOnAMission() || CDarkel::FrenzyOnGoing() || !CGame::nastyGame; - - if (!entity->m_flagD80) { - float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x7FF) * DEGTORAD(360.0f / 0x800)); - float modifiedSin = 0.3f * (s + 1.0f); - - - int16 colorId; - - if (entity->GetModelIndex() == MI_PICKUP_ADRENALINE || entity->GetModelIndex() == MI_PICKUP_CAMERA) - colorId = 11; - else if (entity->GetModelIndex() == MI_PICKUP_BODYARMOUR || entity->GetModelIndex() == MI_PICKUP_BRIBE) - colorId = 12; - else if (entity->GetModelIndex() == MI_PICKUP_INFO || entity->GetModelIndex() == MI_PICKUP_KILLFRENZY) - colorId = 13; - else if (entity->GetModelIndex() == MI_PICKUP_HEALTH || entity->GetModelIndex() == MI_PICKUP_BONUS) - colorId = 14; - else - colorId = FindColourIndexForWeaponMI(entity->GetModelIndex()); - - assert(colorId >= 0); - - CVector &pos = entity->GetPosition(); - - float colorModifier = ((CGeneral::GetRandomNumber() & 0x1F) * 0.015f + 1.0f) * modifiedSin * 0.15f; - CShadows::StoreStaticShadow( - (uintptr)entity, - SHADOWTYPE_ADDITIVE, - gpShadowExplosionTex, - &pos, - 2.0f, 0.0f, 0.0f, -2.0f, - 255, // this is 0 on PC which results in no shadow - aWeaponReds[colorId] * colorModifier, aWeaponGreens[colorId] * colorModifier, aWeaponBlues[colorId] * colorModifier, - 4.0f, 1.0f, 40.0f, false, 0.0f); - - float radius = (CGeneral::GetRandomNumber() & 0xF) * 0.1f + 3.0f; - CPointLights::AddLight(CPointLights::LIGHT_POINT, pos, CVector(0.0f, 0.0f, 0.0f), radius, aWeaponReds[colorId] * modifiedSin / 256.0f, aWeaponGreens[colorId] * modifiedSin / 256.0f, aWeaponBlues[colorId] * modifiedSin / 256.0f, CPointLights::FOG_NONE, true); - float size = (CGeneral::GetRandomNumber() & 0xF) * 0.0005f + 0.6f; - CCoronas::RegisterCorona( (uintptr)entity, - aWeaponReds[colorId] * modifiedSin / 2.0f, aWeaponGreens[colorId] * modifiedSin / 2.0f, aWeaponBlues[colorId] * modifiedSin / 2.0f, - 255, - pos, - size, 65.0f, CCoronas::TYPE_RING, CCoronas::FLARE_NONE, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); - - CObject *object = (CObject*)entity; - if (object->m_obj_flag2 || object->bOutOfStock || object->field_172) { - float dist = (TheCamera.GetPosition() - pos).Magnitude(); - const float MAXDIST = 12.0f; - - if (dist < MAXDIST && NumMessages < NUMPICKUPMESSAGES) { - RwV3d vecOut; - float fDistX, fDistY; - if (CSprite::CalcScreenCoors(entity->GetPosition() + CVector(0.0f, 0.0f, 0.7f), &vecOut, &fDistX, &fDistY, true)) { - aMessages[NumMessages].m_pos.x = vecOut.x; - aMessages[NumMessages].m_pos.y = vecOut.y; - aMessages[NumMessages].m_dist.x = fDistX; - aMessages[NumMessages].m_dist.y = fDistY; - aMessages[NumMessages].m_weaponType = WeaponForModel(entity->GetModelIndex()); - aMessages[NumMessages].m_color.red = aWeaponReds[colorId]; - aMessages[NumMessages].m_color.green = aWeaponGreens[colorId]; - aMessages[NumMessages].m_color.blue = aWeaponBlues[colorId]; - aMessages[NumMessages].m_color.alpha = (1.0f - dist / MAXDIST) * 128.0f; - aMessages[NumMessages].m_bOutOfStock = object->bOutOfStock; - aMessages[NumMessages].m_quantity = object->field_172; - NumMessages++; - } - } - } - - entity->GetMatrix().SetRotateZOnlyScaled((float)(CTimer::GetTimeInMilliseconds() & 0x7FF) * DEGTORAD(360.0f / 0x800), aWeaponScale[colorId]); - } -} - -void -CPickups::DoMineEffects(CEntity *entity) -{ - CVector &pos = entity->GetPosition(); - float dist = (TheCamera.GetPosition() - pos).Magnitude(); - const float MAXDIST = 20.0f; - - if (dist < MAXDIST) { - float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x1FF) * DEGTORAD(360.0f / 0x200)); - - int32 red = (MAXDIST - dist) * (0.5f * s + 0.5f) / MAXDIST * 64.0f; - CShadows::StoreStaticShadow((uintptr)entity, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos, - 2.0f, 0.0f, 0.0f, -2.0f, - 255, // this is 0 on PC which results in no shadow - red, 0, 0, - 4.0f, 1.0f, 40.0f, false, 0.0f); - CCoronas::RegisterCorona((uintptr)entity, red, 0, 0, 255, pos, 0.6f, 60.0f, CCoronas::TYPE_RING, CCoronas::FLARE_NONE, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); - } - - entity->GetMatrix().SetRotateZOnly((float)(CTimer::GetTimeInMilliseconds() & 0x3FF) * DEGTORAD(360.0f / 0x400)); -} - -void -CPickups::DoMoneyEffects(CEntity *entity) -{ - CVector &pos = entity->GetPosition(); - float dist = (TheCamera.GetPosition() - pos).Magnitude(); - const float MAXDIST = 20.0f; - - if (dist < MAXDIST) { - float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x3FF) * DEGTORAD(360.0f / 0x400)); - - int32 green = (MAXDIST - dist) * (0.2f * s + 0.3f) / MAXDIST * 64.0f; - CShadows::StoreStaticShadow((uintptr)entity, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos, - 2.0f, 0.0f, 0.0f, -2.0f, - 255, // this is 0 on PC which results in no shadow - 0, green, 0, - 4.0f, 1.0f, 40.0f, false, 0.0f); - CCoronas::RegisterCorona((uintptr)entity, 0, green, 0, 255, pos, 0.4f, 40.0f, CCoronas::TYPE_RING, CCoronas::FLARE_NONE, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); - } - - entity->GetMatrix().SetRotateZOnly((float)(CTimer::GetTimeInMilliseconds() & 0x7FF) * DEGTORAD(360.0f / 0x800)); -} - -void -CPickups::DoCollectableEffects(CEntity *entity) -{ - CVector &pos = entity->GetPosition(); - float dist = (TheCamera.GetPosition() - pos).Magnitude(); - const float MAXDIST = 14.0f; - - if (dist < MAXDIST) { - float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x7FF) * DEGTORAD(360.0f / 0x800)); - - int32 color = (MAXDIST - dist) * (0.5f * s + 0.5f) / MAXDIST * 255.0f; - CShadows::StoreStaticShadow((uintptr)entity, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos, - 2.0f, 0.0f, 0.0f, -2.0f, - 255, // this is 0 on PC which results in no shadow - color, color, color, - 4.0f, 1.0f, 40.0f, false, 0.0f); - CCoronas::RegisterCorona((uintptr)entity, color, color, color, 255, pos, 0.6f, 40.0f, CCoronas::TYPE_RING, CCoronas::FLARE_NONE, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); - } - - entity->GetMatrix().SetRotateZOnly((float)(CTimer::GetTimeInMilliseconds() & 0xFFF) * DEGTORAD(360.0f / 0x1000)); -} - -void -CPickups::RenderPickUpText() -{ - wchar *strToPrint; - for (int32 i = 0; i < NumMessages; i++) { - if (aMessages[i].m_quantity <= 39) { - switch (aMessages[i].m_quantity) // could use some enum maybe - { - case 0: - if (aMessages[i].m_weaponType == WEAPONTYPE_TOTALWEAPONS) { // unreachable code? - // what is this?? - sprintf(gString, "%d/%d", CWorld::Players[CWorld::PlayerInFocus].m_nCollectedPackages, 2903); - } else { - if (aMessages[i].m_bOutOfStock) - strToPrint = TheText.Get("STOCK"); - else { - sprintf(gString, "$%d", CostOfWeapon[aMessages[i].m_weaponType]); - AsciiToUnicode(gString, gUString); - strToPrint = gUString; - } - } - break; - case 1: - strToPrint = TheText.Get("SECURI"); - break; - case 2: - strToPrint = TheText.Get("MOONBM"); - break; - case 3: - strToPrint = TheText.Get("COACH"); - break; - case 4: - strToPrint = TheText.Get("FLATBED"); - break; - case 5: - strToPrint = TheText.Get("LINERUN"); - break; - case 6: - strToPrint = TheText.Get("TRASHM"); - break; - case 7: - strToPrint = TheText.Get("PATRIOT"); - break; - case 8: - strToPrint = TheText.Get("WHOOPEE"); - break; - case 9: - strToPrint = TheText.Get("BLISTA"); - break; - case 10: - strToPrint = TheText.Get("MULE"); - break; - case 11: - strToPrint = TheText.Get("YANKEE"); - break; - case 12: - strToPrint = TheText.Get("BOBCAT"); - break; - case 13: - strToPrint = TheText.Get("DODO"); - break; - case 14: - strToPrint = TheText.Get("BUS"); - break; - case 15: - strToPrint = TheText.Get("RUMPO"); - break; - case 16: - strToPrint = TheText.Get("PONY"); - break; - case 17: - strToPrint = TheText.Get("SENTINL"); - break; - case 18: - strToPrint = TheText.Get("CHEETAH"); - break; - case 19: - strToPrint = TheText.Get("BANSHEE"); - break; - case 20: - strToPrint = TheText.Get("IDAHO"); - break; - case 21: - strToPrint = TheText.Get("INFERNS"); - break; - case 22: - strToPrint = TheText.Get("TAXI"); - break; - case 23: - strToPrint = TheText.Get("KURUMA"); - break; - case 24: - strToPrint = TheText.Get("STRETCH"); - break; - case 25: - strToPrint = TheText.Get("PEREN"); - break; - case 26: - strToPrint = TheText.Get("STINGER"); - break; - case 27: - strToPrint = TheText.Get("MANANA"); - break; - case 28: - strToPrint = TheText.Get("LANDSTK"); - break; - case 29: - strToPrint = TheText.Get("STALION"); - break; - case 30: - strToPrint = TheText.Get("BFINJC"); - break; - case 31: - strToPrint = TheText.Get("CABBIE"); - break; - case 32: - strToPrint = TheText.Get("ESPERAN"); - break; - case 33: - strToPrint = TheText.Get("FIRETRK"); - break; - case 34: - strToPrint = TheText.Get("AMBULAN"); - break; - case 35: - strToPrint = TheText.Get("ENFORCR"); - break; - case 36: - strToPrint = TheText.Get("FBICAR"); - break; - case 37: - strToPrint = TheText.Get("RHINO"); - break; - case 38: - strToPrint = TheText.Get("BARRCKS"); - break; - case 39: - strToPrint = TheText.Get("POLICAR"); - break; - default: - break; - } - } - CFont::SetPropOn(); - CFont::SetBackgroundOff(); - - const float MAX_SCALE = 1.0f; - - float fScaleY = aMessages[i].m_dist.y / 100.0f; - if (fScaleY > MAX_SCALE) fScaleY = MAX_SCALE; - - float fScaleX = aMessages[i].m_dist.x / 100.0f; - if (fScaleX > MAX_SCALE) fScaleX = MAX_SCALE; - - CFont::SetScale(fScaleX, fScaleY); - CFont::SetCentreOn(); - CFont::SetCentreSize(SCREEN_WIDTH); - CFont::SetJustifyOff(); - - CFont::SetColor(CRGBA(aMessages[i].m_color.red, aMessages[i].m_color.green, aMessages[i].m_color.blue, aMessages[i].m_color.alpha)); - CFont::SetBackGroundOnlyTextOff(); - CFont::SetFontStyle(FONT_BANK); - CFont::PrintString(aMessages[i].m_pos.x, aMessages[i].m_pos.y, strToPrint); - } - NumMessages = 0; -} - -void -CPickups::Load(uint8 *buf, uint32 size) -{ -INITSAVEBUF - - for (int32 i = 0; i < NUMPICKUPS; i++) { - aPickUps[i] = ReadSaveBuf(buf); - - if (aPickUps[i].m_eType != PICKUP_NONE && aPickUps[i].m_pObject != nil) - aPickUps[i].m_pObject = CPools::GetObjectPool()->GetSlot((int32)aPickUps[i].m_pObject - 1); - } - - CollectedPickUpIndex = ReadSaveBuf(buf); - ReadSaveBuf(buf); - NumMessages = 0; - - for (uint16 i = 0; i < NUMCOLLECTEDPICKUPS; i++) - aPickUpsCollected[i] = ReadSaveBuf(buf); - -VALIDATESAVEBUF(size) -} - -void -CPickups::Save(uint8 *buf, uint32 *size) -{ - *size = sizeof(aPickUps) + sizeof(uint16) + sizeof(uint16) + sizeof(aPickUpsCollected); - -INITSAVEBUF - - for (int32 i = 0; i < NUMPICKUPS; i++) { - CPickup *buf_pickup = WriteSaveBuf(buf, aPickUps[i]); - if (buf_pickup->m_eType != PICKUP_NONE && buf_pickup->m_pObject != nil) - buf_pickup->m_pObject = (CObject*)(CPools::GetObjectPool()->GetJustIndex(buf_pickup->m_pObject) + 1); - } - - WriteSaveBuf(buf, CollectedPickUpIndex); - WriteSaveBuf(buf, (uint16)0); // possibly was NumMessages - - for (uint16 i = 0; i < NUMCOLLECTEDPICKUPS; i++) - WriteSaveBuf(buf, aPickUpsCollected[i]); - -VALIDATESAVEBUF(*size) -} - -STARTPATCHES - InjectHook(0x430220, CPickups::Init, PATCH_JUMP); - InjectHook(0x4303D0, CPickups::Update, PATCH_JUMP); - InjectHook(0x432440, CPickups::RenderPickUpText, PATCH_JUMP); - InjectHook(0x431C30, CPickups::DoCollectableEffects, PATCH_JUMP); - InjectHook(0x431F40, CPickups::DoMoneyEffects, PATCH_JUMP); - InjectHook(0x4321C0, CPickups::DoMineEffects, PATCH_JUMP); - InjectHook(0x431520, CPickups::DoPickUpEffects, PATCH_JUMP); - InjectHook(0x4304B0, CPickups::GenerateNewOne, PATCH_JUMP); - InjectHook(0x430660, CPickups::GenerateNewOne_WeaponType, PATCH_JUMP); - InjectHook(0x4307A0, CPickups::RemovePickUp, PATCH_JUMP); - InjectHook(0x430800, CPickups::RemoveAllFloatingPickups, PATCH_JUMP); - InjectHook(0x433D60, CPickups::AddToCollectedPickupsArray, PATCH_JUMP); - InjectHook(0x430770, CPickups::IsPickUpPickedUp, PATCH_JUMP); - InjectHook(0x430690, CPickups::ModelForWeapon, PATCH_JUMP); - InjectHook(0x4306F0, CPickups::WeaponForModel, PATCH_JUMP); - InjectHook(0x431510, CPickups::FindColourIndexForWeaponMI, PATCH_JUMP);/**/ - InjectHook(0x433DF0, CPickups::GetActualPickupIndex, PATCH_JUMP); - InjectHook(0x433DB0, CPickups::GetNewUniquePickupIndex, PATCH_JUMP); - InjectHook(0x433B60, CPickups::PassTime, PATCH_JUMP); - InjectHook(0x4339F0, CPickups::GivePlayerGoodiesWithPickUpMI, PATCH_JUMP); - InjectHook(0x433F60, CPickups::Load, PATCH_JUMP); - InjectHook(0x433E40, CPickups::Save, PATCH_JUMP); - InjectHook(0x433BA0, &CPickup::GiveUsAPickUpObject, PATCH_JUMP); - InjectHook(0x430860, &CPickup::Update, PATCH_JUMP); -ENDPATCHES +#include "common.h" +#include "patcher.h" +#include "main.h" + +#include "Camera.h" +#include "Coronas.h" +#include "Darkel.h" +#include "Entity.h" +#include "Explosion.h" +#include "Font.h" +#include "Garages.h" +#include "General.h" +#include "ModelIndices.h" +#include "Object.h" +#include "Pad.h" +#include "Pickups.h" +#include "PlayerPed.h" +#include "Wanted.h" +#include "DMAudio.h" +#include "Fire.h" +#include "PointLights.h" +#include "Pools.h" +#ifdef FIX_BUGS +#include "Replay.h" +#endif +#include "Script.h" +#include "Shadows.h" +#include "SpecialFX.h" +#include "Sprite.h" +#include "Timer.h" +#include "WaterLevel.h" +#include "World.h" + +CPickup(&CPickups::aPickUps)[NUMPICKUPS] = *(CPickup(*)[NUMPICKUPS])*(uintptr*)0x878C98; +int16 CPickups::NumMessages;// = *(int16*)0x95CC98; +int32 CPickups::aPickUpsCollected[NUMCOLLECTEDPICKUPS];// = *(int32(*)[NUMCOLLECTEDPICKUPS])*(uintptr*)0x87C538; +int16 CPickups::CollectedPickUpIndex;// = *(int16*)0x95CC8A; + +// unused +bool &CPickups::bPickUpcamActivated = *(bool*)0x95CD71; +CVehicle *&CPickups::pPlayerVehicle = *(CVehicle**)0x8F29E8; +CVector &CPickups::StaticCamCoors = *(CVector*)0x9404C8; +uint32 &CPickups::StaticCamStartTime = *(uint32*)0x8E289C; + +tPickupMessage CPickups::aMessages[NUMPICKUPMESSAGES]; + +// 20 ?! Some Miami leftover? (Originally at 0x5ED8D4) +uint16 AmmoForWeapon[20] = { 0, 1, 45, 125, 25, 150, 300, 25, 5, 250, 5, 5, 0, 500, 0, 100, 0, 0, 0, 0 }; +uint16 AmmoForWeapon_OnStreet[20] = { 0, 1, 9, 25, 5, 30, 60, 5, 1, 50, 1, 1, 0, 200, 0, 100, 0, 0, 0, 0 }; +uint16 CostOfWeapon[20] = { 0, 10, 250, 800, 1500, 3000, 5000, 10000, 25000, 25000, 2000, 2000, 0, 50000, 0, 3000, 0, 0, 0, 0 }; + +uint8 aWeaponReds[] = { 255, 0, 128, 255, 255, 0, 255, 0, 128, 128, 255, 255, 128, 0, 255, 0 }; +uint8 aWeaponGreens[] = { 0, 255, 128, 255, 0, 255, 128, 255, 0, 255, 255, 0, 255, 0, 255, 0 }; +uint8 aWeaponBlues[] = { 0, 0, 255, 0, 255, 255, 0, 128, 255, 0, 255, 0, 128, 255, 0, 0 }; +float aWeaponScale[] = { 1.0f, 2.0f, 1.5f, 1.0f, 1.0f, 1.5f, 1.0f, 2.0f, 1.0f, 2.0f, 2.5f, 1.0f, 1.0f, 1.0f, 1.0f }; + +WRAPPER void CPacManPickups::Init(void) { EAXJMP(0x432760); } +WRAPPER void CPacManPickups::Update(void) { EAXJMP(0x432800); } +WRAPPER void CPacManPickups::GeneratePMPickUps(CVector, float, int16, uint8) { EAXJMP(0x432AE0); } +WRAPPER void CPacManPickups::GeneratePMPickUpsForRace(int32) { EAXJMP(0x432D50); } +WRAPPER void CPacManPickups::GenerateOnePMPickUp(CVector) { EAXJMP(0x432F20); } +WRAPPER void CPacManPickups::Render(void) { EAXJMP(0x432F60); } +WRAPPER void CPacManPickups::DoCleanUpPacManStuff(void) { EAXJMP(0x433150); } +WRAPPER void CPacManPickups::StartPacManRace(int32) { EAXJMP(0x433340); } +WRAPPER void CPacManPickups::StartPacManRecord(void) { EAXJMP(0x433360); } +WRAPPER uint32 CPacManPickups::QueryPowerPillsEatenInRace(void) { EAXJMP(0x4333A0); } +WRAPPER void CPacManPickups::ResetPowerPillsEatenInRace(void) { EAXJMP(0x4333B0); } +WRAPPER void CPacManPickups::CleanUpPacManStuff(void) { EAXJMP(0x4333C0); } +WRAPPER void CPacManPickups::StartPacManScramble(CVector, float, int16) { EAXJMP(0x4333D0); } +WRAPPER uint32 CPacManPickups::QueryPowerPillsCarriedByPlayer(void) { EAXJMP(0x4333F0); } +WRAPPER void CPacManPickups::ResetPowerPillsCarriedByPlayer(void) { EAXJMP(0x433410); } + + +void +CPickup::RemoveKeepType() +{ + CWorld::Remove(m_pObject); + delete m_pObject; + + m_bRemoved = true; + m_pObject = nil; +} + +void +CPickup::Remove() +{ + RemoveKeepType(); + m_eType = PICKUP_NONE; +} + +CObject * +CPickup::GiveUsAPickUpObject(int32 handle) +{ + CObject *object; + + if (handle <= 0) object = new CObject(m_eModelIndex, false); + else { + CPools::MakeSureSlotInObjectPoolIsEmpty(handle); + object = new(handle) CObject(m_eModelIndex, false); + } + + if (object == nil) return nil; + object->ObjectCreatedBy = MISSION_OBJECT; + object->GetPosition() = m_vecPos; + object->SetOrientation(0.0f, 0.0f, -HALFPI); + object->GetMatrix().UpdateRW(); + object->UpdateRwFrame(); + + object->bAffectedByGravity = false; + object->bExplosionProof = true; + object->bUsesCollision = false; + object->bIsPickup = true; + + object->field_172 = m_eModelIndex == MI_PICKUP_BONUS ? m_nQuantity : 0; + + switch (m_eType) + { + case PICKUP_IN_SHOP: + object->m_obj_flag2 = true; + object->bOutOfStock = false; + break; + case PICKUP_ON_STREET: + case PICKUP_ONCE: + case PICKUP_ONCE_TIMEOUT: + case PICKUP_COLLECTABLE1: + case PICKUP_MONEY: + case PICKUP_MINE_INACTIVE: + case PICKUP_MINE_ARMED: + case PICKUP_NAUTICAL_MINE_INACTIVE: + case PICKUP_NAUTICAL_MINE_ARMED: + case PICKUP_FLOATINGPACKAGE: + case PICKUP_ON_STREET_SLOW: + object->m_obj_flag2 = false; + object->bOutOfStock = false; + break; + case PICKUP_IN_SHOP_OUT_OF_STOCK: + object->m_obj_flag2 = false; + object->bOutOfStock = true; + object->bRenderScorched = true; + break; + case PICKUP_FLOATINGPACKAGE_FLOATING: + default: + break; + } + return object; +} + +bool +CPickup::CanBePickedUp(CPlayerPed *player) +{ + assert(m_pObject != nil); + bool cannotBePickedUp = + (m_pObject->GetModelIndex() == MI_PICKUP_BODYARMOUR && player->m_fArmour > 99.5f) + || (m_pObject->GetModelIndex() == MI_PICKUP_HEALTH && player->m_fHealth > 99.5f) + || (m_pObject->GetModelIndex() == MI_PICKUP_BRIBE && player->m_pWanted->m_nWantedLevel == 0) + || (m_pObject->GetModelIndex() == MI_PICKUP_KILLFRENZY && (CTheScripts::IsPlayerOnAMission() || CDarkel::FrenzyOnGoing() || !CGame::nastyGame)); + return !cannotBePickedUp; +} + +bool +CPickup::Update(CPlayerPed *player, CVehicle *vehicle, int playerId) +{ + float waterLevel; + + if (m_bRemoved) { + if (CTimer::GetTimeInMilliseconds() > m_nTimer) { + // respawn pickup if we're far enough + float dist = (FindPlayerCoors().x - m_vecPos.x) * (FindPlayerCoors().x - m_vecPos.x) + (FindPlayerCoors().y - m_vecPos.y) * (FindPlayerCoors().y - m_vecPos.y); + if (dist > 100.0f || m_eType == PICKUP_IN_SHOP && dist > 2.4f) { + m_pObject = GiveUsAPickUpObject(-1); + if (m_pObject) { + CWorld::Add(m_pObject); + m_bRemoved = false; + } + } + } + return false; + } + + if (!m_pObject) return false; + + if (!IsMine()) { + // let's check if we touched the pickup + bool isPickupTouched = false; + if (m_pObject->GetModelIndex() == MI_PICKUP_BRIBE) { + if (vehicle != nil) { + if (vehicle->IsSphereTouchingVehicle(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z, 2.0f)) + isPickupTouched = true; + } + else { + if (Abs(player->GetPosition().z - m_pObject->GetPosition().z) < 2.0f) { + if ((player->GetPosition().x - m_pObject->GetPosition().x) * (player->GetPosition().x - m_pObject->GetPosition().x) + + (player->GetPosition().y - m_pObject->GetPosition().y) * (player->GetPosition().y - m_pObject->GetPosition().y) < 1.8f) + isPickupTouched = true; + } + } + } else if (m_pObject->GetModelIndex() == MI_PICKUP_CAMERA) { + if (vehicle != nil && vehicle->IsSphereTouchingVehicle(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z, 2.0f)) { + isPickupTouched = true; + } + } else if (vehicle == nil) { + if (Abs(player->GetPosition().z - m_pObject->GetPosition().z) < 2.0f) { + if ((player->GetPosition().x - m_pObject->GetPosition().x) * (player->GetPosition().x - m_pObject->GetPosition().x) + + (player->GetPosition().y - m_pObject->GetPosition().y) * (player->GetPosition().y - m_pObject->GetPosition().y) < 1.8f) + isPickupTouched = true; + } + } + + // if we didn't then we've got nothing to do + if (isPickupTouched && CanBePickedUp(player)) { + CPad::GetPad(0)->StartShake(120, 100); + switch (m_eType) + { + case PICKUP_IN_SHOP: + if (CWorld::Players[playerId].m_nMoney < CostOfWeapon[CPickups::WeaponForModel(m_pObject->GetModelIndex())]) { + CGarages::TriggerMessage("PU_MONY", -1, 6000, -1); + } else { + CWorld::Players[playerId].m_nMoney -= CostOfWeapon[CPickups::WeaponForModel(m_pObject->GetModelIndex())]; + if (!CPickups::GivePlayerGoodiesWithPickUpMI(m_pObject->GetModelIndex(), playerId)) { + player->GiveWeapon(CPickups::WeaponForModel(m_pObject->GetModelIndex()), AmmoForWeapon[CPickups::WeaponForModel(m_pObject->GetModelIndex())]); + player->m_nSelectedWepSlot = player->GetWeaponSlot(CPickups::WeaponForModel(m_pObject->GetModelIndex())); + DMAudio.PlayFrontEndSound(SOUND_PICKUP_WEAPON_BOUGHT, m_pObject->GetModelIndex() - MI_GRENADE); + } + RemoveKeepType(); + m_nTimer = CTimer::GetTimeInMilliseconds() + 5000; + return true; + } + break; + case PICKUP_ON_STREET: + case PICKUP_ON_STREET_SLOW: + if (!CPickups::GivePlayerGoodiesWithPickUpMI(m_pObject->GetModelIndex(), playerId)) { + if (CPickups::WeaponForModel(m_pObject->GetModelIndex())) { + player->GiveWeapon(CPickups::WeaponForModel(m_pObject->GetModelIndex()), m_nQuantity != 0 ? m_nQuantity : AmmoForWeapon_OnStreet[CPickups::WeaponForModel(m_pObject->GetModelIndex())]); + if (player->m_nSelectedWepSlot == player->GetWeaponSlot(WEAPONTYPE_UNARMED)) { + player->m_nSelectedWepSlot = player->GetWeaponSlot(CPickups::WeaponForModel(m_pObject->GetModelIndex())); + } + DMAudio.PlayFrontEndSound(SOUND_PICKUP_WEAPON, m_pObject->GetModelIndex() - MI_GRENADE); + } else if (m_pObject->GetModelIndex() == MI_PICKUP_CAMERA && vehicle != nil) { + DMAudio.PlayFrontEndSound(SOUND_PICKUP_BONUS, 0); + CPickups::bPickUpcamActivated = true; + CPickups::pPlayerVehicle = FindPlayerVehicle(); + CPickups::StaticCamCoors = m_pObject->GetPosition(); + CPickups::StaticCamStartTime = CTimer::GetTimeInMilliseconds(); + } + } + if (m_eType == PICKUP_ON_STREET) { + m_nTimer = CTimer::GetTimeInMilliseconds() + 30000; + } else if (m_eType == PICKUP_ON_STREET_SLOW) { + if (MI_PICKUP_BRIBE == m_pObject->m_modelIndex) + m_nTimer = CTimer::GetTimeInMilliseconds() + 300000; + else + m_nTimer = CTimer::GetTimeInMilliseconds() + 720000; + } + + RemoveKeepType(); + return true; + case PICKUP_ONCE: + case PICKUP_ONCE_TIMEOUT: + if (!CPickups::GivePlayerGoodiesWithPickUpMI(m_pObject->GetModelIndex(), playerId)) { + if (CPickups::WeaponForModel(m_pObject->GetModelIndex())) { + player->GiveWeapon(CPickups::WeaponForModel(m_pObject->GetModelIndex()), m_nQuantity != 0 ? m_nQuantity : AmmoForWeapon[CPickups::WeaponForModel(m_pObject->GetModelIndex())]); + if (player->m_nSelectedWepSlot == player->GetWeaponSlot(WEAPONTYPE_UNARMED)) + player->m_nSelectedWepSlot = player->GetWeaponSlot(CPickups::WeaponForModel(m_pObject->GetModelIndex())); + } + DMAudio.PlayFrontEndSound(SOUND_PICKUP_WEAPON, m_pObject->GetModelIndex() - MI_GRENADE); + } + Remove(); + return true; + case PICKUP_COLLECTABLE1: + CWorld::Players[playerId].m_nCollectedPackages++; + CWorld::Players[playerId].m_nMoney += 1000; + + if (CWorld::Players[playerId].m_nCollectedPackages == CWorld::Players[playerId].m_nTotalPackages) { + printf("All collectables have been picked up\n"); + CGarages::TriggerMessage("CO_ALL", -1, 5000, -1); + CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 1000000; + } else + CGarages::TriggerMessage("CO_ONE", CWorld::Players[CWorld::PlayerInFocus].m_nCollectedPackages, 5000, CWorld::Players[CWorld::PlayerInFocus].m_nTotalPackages); + + Remove(); + DMAudio.PlayFrontEndSound(SOUND_PICKUP_HIDDEN_PACKAGE, 0); + return true; + case PICKUP_MONEY: + CWorld::Players[playerId].m_nMoney += m_nQuantity; + sprintf(gString, "$%d", m_nQuantity); +#ifdef MONEY_MESSAGES + CMoneyMessages::RegisterOne(m_vecPos + CVector(0.0f, 0.0f, 1.0f), gString, 0, 255, 0, 0.5f, 0.5f); +#endif + Remove(); + DMAudio.PlayFrontEndSound(SOUND_PICKUP_MONEY, 0); + return true; + //case PICKUP_IN_SHOP_OUT_OF_STOCK: + //case PICKUP_MINE_INACTIVE: + //case PICKUP_MINE_ARMED: + //case PICKUP_NAUTICAL_MINE_INACTIVE: + //case PICKUP_NAUTICAL_MINE_ARMED: + //case PICKUP_FLOATINGPACKAGE: + //case PICKUP_FLOATINGPACKAGE_FLOATING: + default: + break; + } + } + } else { + switch (m_eType) + { + case PICKUP_MINE_INACTIVE: + if (vehicle != nil && !vehicle->IsSphereTouchingVehicle(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z, 2.0f)) { + m_eType = PICKUP_MINE_ARMED; + m_nTimer = CTimer::GetTimeInMilliseconds() + 10000; + } + break; + case PICKUP_NAUTICAL_MINE_INACTIVE: + { + if (CWaterLevel::GetWaterLevel(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z + 5.0f, &waterLevel, false)) + m_pObject->GetPosition().z = waterLevel + 0.6f; + + m_pObject->GetMatrix().UpdateRW(); + m_pObject->UpdateRwFrame(); + + bool touched = false; + for (int32 i = CPools::GetVehiclePool()->GetSize()-1; i >= 0; i--) { + CVehicle *vehicle = CPools::GetVehiclePool()->GetSlot(i); + if (vehicle != nil && vehicle->IsSphereTouchingVehicle(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z, 1.5f)) { + touched = true; + break; // added break here + } + } + + if (!touched) { + m_eType = PICKUP_NAUTICAL_MINE_ARMED; + m_nTimer = CTimer::GetTimeInMilliseconds() + 10000; + } + break; + } + case PICKUP_NAUTICAL_MINE_ARMED: + if (CWaterLevel::GetWaterLevel(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z + 5.0f, &waterLevel, false)) + m_pObject->GetPosition().z = waterLevel + 0.6f; + + m_pObject->GetMatrix().UpdateRW(); + m_pObject->UpdateRwFrame(); + // no break here + case PICKUP_MINE_ARMED: + { + bool explode = false; + if (CTimer::GetTimeInMilliseconds() > m_nTimer) + explode = true; + else {// added else here since vehicle lookup is useless + for (int32 i = CPools::GetVehiclePool()->GetSize()-1; i >= 0; i--) { + CVehicle *vehicle = CPools::GetVehiclePool()->GetSlot(i); + if (vehicle != nil && vehicle->IsSphereTouchingVehicle(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z, 1.5f)) { + explode = true; + break; // added break here + } + } + } + if (explode) { + CExplosion::AddExplosion(nil, nil, EXPLOSION_MINE, m_pObject->GetPosition(), 0); + Remove(); + } + break; + } + case PICKUP_FLOATINGPACKAGE: + m_pObject->m_vecMoveSpeed.z -= 0.01f * CTimer::GetTimeStep(); + m_pObject->GetPosition() += m_pObject->GetMoveSpeed() * CTimer::GetTimeStep(); + + m_pObject->GetMatrix().UpdateRW(); + m_pObject->UpdateRwFrame(); + if (CWaterLevel::GetWaterLevel(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z + 5.0f, &waterLevel, 0) && waterLevel >= m_pObject->GetPosition().z) + m_eType = PICKUP_FLOATINGPACKAGE_FLOATING; + break; + case PICKUP_FLOATINGPACKAGE_FLOATING: + if (CWaterLevel::GetWaterLevel(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z + 5.0f, &waterLevel, 0)) + m_pObject->GetPosition().z = waterLevel; + + m_pObject->GetMatrix().UpdateRW(); + m_pObject->UpdateRwFrame(); + if (vehicle != nil && vehicle->IsSphereTouchingVehicle(m_pObject->GetPosition().x, m_pObject->GetPosition().y, m_pObject->GetPosition().z, 2.0f)) { + Remove(); + DMAudio.PlayFrontEndSound(SOUND_PICKUP_FLOAT_PACKAGE, 0); + return true; + } + break; + } + } + if (!m_bRemoved && (m_eType == PICKUP_ONCE_TIMEOUT || m_eType == PICKUP_MONEY) && CTimer::GetTimeInMilliseconds() > m_nTimer) + Remove(); + return false; +} + +void +CPickups::Init(void) +{ + NumMessages = 0; + for (int i = 0; i < NUMPICKUPS; i++) { + aPickUps[i].m_eType = PICKUP_NONE; + aPickUps[i].m_nIndex = 1; + aPickUps[i].m_pObject = nil; + } + + for (int i = 0; i < NUMCOLLECTEDPICKUPS; i++) + aPickUpsCollected[i] = 0; + + CollectedPickUpIndex = 0; +} + +bool +CPickups::IsPickUpPickedUp(int32 pickupId) +{ + for (int i = 0; i < NUMCOLLECTEDPICKUPS; i++) { + if (pickupId == aPickUpsCollected[i]) { + aPickUpsCollected[i] = 0; + return true; + } + } + return false; +} + +void +CPickups::PassTime(uint32 time) +{ + for (int i = 0; i < NUMPICKUPS; i++) { + if (aPickUps[i].m_eType != PICKUP_NONE) { + if (aPickUps[i].m_nTimer <= time) + aPickUps[i].m_nTimer = 0; + else + aPickUps[i].m_nTimer -= time; + } + } +} + +int32 +CPickups::GetActualPickupIndex(int32 index) +{ + if (index == -1) return -1; + + // doesn't look nice + if ((uint16)((index & 0xFFFF0000) >> 16) != aPickUps[(uint16)index].m_nIndex) return -1; + return (uint16)index; +} + +bool +CPickups::GivePlayerGoodiesWithPickUpMI(int16 modelIndex, int playerIndex) +{ + CPlayerPed *player; + + if (playerIndex <= 0) player = CWorld::Players[CWorld::PlayerInFocus].m_pPed; + else player = CWorld::Players[playerIndex].m_pPed; + + if (modelIndex == MI_PICKUP_ADRENALINE) { + player->m_bAdrenalineActive = true; + player->m_nAdrenalineTime = CTimer::GetTimeInMilliseconds() + 20000; + player->m_fCurrentStamina = player->m_fMaxStamina; + DMAudio.PlayFrontEndSound(SOUND_PICKUP_ADRENALINE, 0); + return true; + } else if (modelIndex == MI_PICKUP_BODYARMOUR) { + player->m_fArmour = 100.0f; + DMAudio.PlayFrontEndSound(SOUND_PICKUP_ARMOUR, 0); + return true; + } else if (modelIndex == MI_PICKUP_INFO) { + DMAudio.PlayFrontEndSound(SOUND_PICKUP_BONUS, 0); + return true; + } else if (modelIndex == MI_PICKUP_HEALTH) { + player->m_fHealth = 100.0f; + DMAudio.PlayFrontEndSound(SOUND_PICKUP_HEALTH, 0); + return true; + } else if (modelIndex == MI_PICKUP_BONUS) { + DMAudio.PlayFrontEndSound(SOUND_PICKUP_BONUS, 0); + return true; + } else if (modelIndex == MI_PICKUP_BRIBE) { + int32 level = FindPlayerPed()->m_pWanted->m_nWantedLevel - 1; + if (level < 0) level = 0; + player->SetWantedLevel(level); + DMAudio.PlayFrontEndSound(SOUND_PICKUP_BONUS, 0); + return true; + } else if (modelIndex == MI_PICKUP_KILLFRENZY) { + DMAudio.PlayFrontEndSound(SOUND_PICKUP_BONUS, 0); + return true; + } + return false; +} + +void +CPickups::RemoveAllFloatingPickups() +{ + for (int i = 0; i < NUMPICKUPS; i++) { + if (aPickUps[i].m_eType == PICKUP_FLOATINGPACKAGE || aPickUps[i].m_eType == PICKUP_FLOATINGPACKAGE_FLOATING) { + if (aPickUps[i].m_pObject) { + CWorld::Remove(aPickUps[i].m_pObject); + delete aPickUps[i].m_pObject; + aPickUps[i].m_pObject = nil; + } + } + } +} + +void +CPickups::RemovePickUp(int32 pickupIndex) +{ + int32 index = CPickups::GetActualPickupIndex(pickupIndex); + if (index == -1) return; + + if (aPickUps[index].m_pObject) { + CWorld::Remove(aPickUps[index].m_pObject); + delete aPickUps[index].m_pObject; + aPickUps[index].m_pObject = nil; + } + aPickUps[index].m_eType = PICKUP_NONE; + aPickUps[index].m_bRemoved = true; +} + +int32 +CPickups::GenerateNewOne(CVector pos, uint32 modelIndex, uint8 type, uint32 quantity) +{ + bool bFreeFound = false; + int32 slot = 0; + + if (type == PICKUP_FLOATINGPACKAGE || type == PICKUP_NAUTICAL_MINE_INACTIVE) { + for (slot = NUMPICKUPS; slot >= 0; slot--) { + if (aPickUps[slot].m_eType == PICKUP_NONE) { + bFreeFound = true; + break; + } + } + } else { + for (slot = 0; slot < NUMGENERALPICKUPS; slot++) { + if (aPickUps[slot].m_eType == PICKUP_NONE) { + bFreeFound = true; + break; + } + } + } + + if (!bFreeFound) + { + for (slot = 0; slot < NUMGENERALPICKUPS; slot++) { + if (aPickUps[slot].m_eType == PICKUP_MONEY) break; + } + + if (slot >= NUMGENERALPICKUPS) + { + for (slot = 0; slot < NUMGENERALPICKUPS; slot++) { + if (aPickUps[slot].m_eType == PICKUP_ONCE_TIMEOUT) break; + } + + if (slot >= NUMGENERALPICKUPS) return -1; + } + } + + if (slot >= NUMPICKUPS) return -1; + + aPickUps[slot].m_eType = (ePickupType)type; + aPickUps[slot].m_bRemoved = false; + aPickUps[slot].m_nQuantity = quantity; + if (type == PICKUP_ONCE_TIMEOUT) + aPickUps[slot].m_nTimer = CTimer::GetTimeInMilliseconds() + 20000; + else if (type == PICKUP_MONEY) + aPickUps[slot].m_nTimer = CTimer::GetTimeInMilliseconds() + 30000; + else if (type == PICKUP_MINE_INACTIVE || type == PICKUP_MINE_ARMED) { + aPickUps[slot].m_eType = PICKUP_MINE_INACTIVE; + aPickUps[slot].m_nTimer = CTimer::GetTimeInMilliseconds() + 1500; + } else if (type == PICKUP_NAUTICAL_MINE_INACTIVE || type == PICKUP_NAUTICAL_MINE_ARMED) { + aPickUps[slot].m_eType = PICKUP_NAUTICAL_MINE_INACTIVE; + aPickUps[slot].m_nTimer = CTimer::GetTimeInMilliseconds() + 1500; + } + aPickUps[slot].m_eModelIndex = modelIndex; + aPickUps[slot].m_vecPos = pos; + aPickUps[slot].m_pObject = aPickUps[slot].GiveUsAPickUpObject(-1); + if (aPickUps[slot].m_pObject) + CWorld::Add(aPickUps[slot].m_pObject); + return GetNewUniquePickupIndex(slot); +} + +int32 +CPickups::GenerateNewOne_WeaponType(CVector pos, eWeaponType weaponType, uint8 type, uint32 quantity) +{ + return GenerateNewOne(pos, ModelForWeapon(weaponType), type, quantity); +} + +int32 +CPickups::GetNewUniquePickupIndex(int32 slot) +{ + if (aPickUps[slot].m_nIndex >= 0xFFFE) + aPickUps[slot].m_nIndex = 1; + else + aPickUps[slot].m_nIndex++; + return slot | (aPickUps[slot].m_nIndex << 16); +} + +int32 +CPickups::ModelForWeapon(eWeaponType weaponType) +{ + switch (weaponType) + { + case WEAPONTYPE_BASEBALLBAT: return MI_BASEBALL_BAT; + case WEAPONTYPE_COLT45: return MI_COLT; + case WEAPONTYPE_UZI: return MI_UZI; + case WEAPONTYPE_SHOTGUN: return MI_SHOTGUN; + case WEAPONTYPE_AK47: return MI_AK47; + case WEAPONTYPE_M16: return MI_M16; + case WEAPONTYPE_SNIPERRIFLE: return MI_SNIPER; + case WEAPONTYPE_ROCKETLAUNCHER: return MI_ROCKETLAUNCHER; + case WEAPONTYPE_FLAMETHROWER: return MI_FLAMETHROWER; + case WEAPONTYPE_MOLOTOV: return MI_MOLOTOV; + case WEAPONTYPE_GRENADE: return MI_GRENADE; + } + return 0; +} + +eWeaponType +CPickups::WeaponForModel(int32 model) +{ + if (model == MI_PICKUP_BODYARMOUR) return WEAPONTYPE_ARMOUR; + switch (model) + { + case MI_GRENADE: return WEAPONTYPE_GRENADE; + case MI_AK47: return WEAPONTYPE_AK47; + case MI_BASEBALL_BAT: return WEAPONTYPE_BASEBALLBAT; + case MI_COLT: return WEAPONTYPE_COLT45; + case MI_MOLOTOV: return WEAPONTYPE_MOLOTOV; + case MI_ROCKETLAUNCHER: return WEAPONTYPE_ROCKETLAUNCHER; + case MI_SHOTGUN: return WEAPONTYPE_SHOTGUN; + case MI_SNIPER: return WEAPONTYPE_SNIPERRIFLE; + case MI_UZI: return WEAPONTYPE_UZI; + case MI_MISSILE: return WEAPONTYPE_UNARMED; + case MI_M16: return WEAPONTYPE_M16; + case MI_FLAMETHROWER: return WEAPONTYPE_FLAMETHROWER; + } + return WEAPONTYPE_UNARMED; +} + +int32 +CPickups::FindColourIndexForWeaponMI(int32 model) +{ + return WeaponForModel(model) - 1; +} + +void +CPickups::AddToCollectedPickupsArray(int32 index) +{ + aPickUpsCollected[CollectedPickUpIndex++] = index | (aPickUps[index].m_nIndex << 16); + if (CollectedPickUpIndex >= NUMCOLLECTEDPICKUPS) + CollectedPickUpIndex = 0; +} + +void +CPickups::Update() +{ +#ifdef FIX_BUGS // RIP speedrunning (solution from SA) + if (CReplay::IsPlayingBack()) + return; +#endif +#define PICKUPS_FRAME_SPAN (6) +#ifdef FIX_BUGS + for (uint32 i = NUMGENERALPICKUPS * (CTimer::GetFrameCounter() % PICKUPS_FRAME_SPAN) / PICKUPS_FRAME_SPAN; i < NUMGENERALPICKUPS * (CTimer::GetFrameCounter() % PICKUPS_FRAME_SPAN + 1) / PICKUPS_FRAME_SPAN; i++) { +#else // BUG: this code can only reach 318 out of 320 pickups + for (uint32 i = NUMGENERALPICKUPS / PICKUPS_FRAME_SPAN * (CTimer::GetFrameCounter() % PICKUPS_FRAME_SPAN); i < NUMGENERALPICKUPS / PICKUPS_FRAME_SPAN * (CTimer::GetFrameCounter() % PICKUPS_FRAME_SPAN + 1); i++) { +#endif + if (aPickUps[i].m_eType != PICKUP_NONE && aPickUps[i].Update(FindPlayerPed(), FindPlayerVehicle(), CWorld::PlayerInFocus)) { + AddToCollectedPickupsArray(i); + } + } +#undef PICKUPS_FRAME_SPAN + for (uint32 i = NUMGENERALPICKUPS; i < NUMPICKUPS; i++) { + if (aPickUps[i].m_eType != PICKUP_NONE && aPickUps[i].Update(FindPlayerPed(), FindPlayerVehicle(), CWorld::PlayerInFocus)) { + AddToCollectedPickupsArray(i); + } + } +} + +void +CPickups::DoPickUpEffects(CEntity *entity) +{ + if (entity->GetModelIndex() == MI_PICKUP_KILLFRENZY) + entity->m_flagD80 = CTheScripts::IsPlayerOnAMission() || CDarkel::FrenzyOnGoing() || !CGame::nastyGame; + + if (!entity->m_flagD80) { + float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x7FF) * DEGTORAD(360.0f / 0x800)); + float modifiedSin = 0.3f * (s + 1.0f); + + + int16 colorId; + + if (entity->GetModelIndex() == MI_PICKUP_ADRENALINE || entity->GetModelIndex() == MI_PICKUP_CAMERA) + colorId = 11; + else if (entity->GetModelIndex() == MI_PICKUP_BODYARMOUR || entity->GetModelIndex() == MI_PICKUP_BRIBE) + colorId = 12; + else if (entity->GetModelIndex() == MI_PICKUP_INFO || entity->GetModelIndex() == MI_PICKUP_KILLFRENZY) + colorId = 13; + else if (entity->GetModelIndex() == MI_PICKUP_HEALTH || entity->GetModelIndex() == MI_PICKUP_BONUS) + colorId = 14; + else + colorId = FindColourIndexForWeaponMI(entity->GetModelIndex()); + + assert(colorId >= 0); + + CVector &pos = entity->GetPosition(); + + float colorModifier = ((CGeneral::GetRandomNumber() & 0x1F) * 0.015f + 1.0f) * modifiedSin * 0.15f; + CShadows::StoreStaticShadow( + (uintptr)entity, + SHADOWTYPE_ADDITIVE, + gpShadowExplosionTex, + &pos, + 2.0f, 0.0f, 0.0f, -2.0f, + 255, // this is 0 on PC which results in no shadow + aWeaponReds[colorId] * colorModifier, aWeaponGreens[colorId] * colorModifier, aWeaponBlues[colorId] * colorModifier, + 4.0f, 1.0f, 40.0f, false, 0.0f); + + float radius = (CGeneral::GetRandomNumber() & 0xF) * 0.1f + 3.0f; + CPointLights::AddLight(CPointLights::LIGHT_POINT, pos, CVector(0.0f, 0.0f, 0.0f), radius, aWeaponReds[colorId] * modifiedSin / 256.0f, aWeaponGreens[colorId] * modifiedSin / 256.0f, aWeaponBlues[colorId] * modifiedSin / 256.0f, CPointLights::FOG_NONE, true); + float size = (CGeneral::GetRandomNumber() & 0xF) * 0.0005f + 0.6f; + CCoronas::RegisterCorona( (uintptr)entity, + aWeaponReds[colorId] * modifiedSin / 2.0f, aWeaponGreens[colorId] * modifiedSin / 2.0f, aWeaponBlues[colorId] * modifiedSin / 2.0f, + 255, + pos, + size, 65.0f, CCoronas::TYPE_RING, CCoronas::FLARE_NONE, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); + + CObject *object = (CObject*)entity; + if (object->m_obj_flag2 || object->bOutOfStock || object->field_172) { + float dist = (TheCamera.GetPosition() - pos).Magnitude(); + const float MAXDIST = 12.0f; + + if (dist < MAXDIST && NumMessages < NUMPICKUPMESSAGES) { + RwV3d vecOut; + float fDistX, fDistY; + if (CSprite::CalcScreenCoors(entity->GetPosition() + CVector(0.0f, 0.0f, 0.7f), &vecOut, &fDistX, &fDistY, true)) { + aMessages[NumMessages].m_pos.x = vecOut.x; + aMessages[NumMessages].m_pos.y = vecOut.y; + aMessages[NumMessages].m_dist.x = fDistX; + aMessages[NumMessages].m_dist.y = fDistY; + aMessages[NumMessages].m_weaponType = WeaponForModel(entity->GetModelIndex()); + aMessages[NumMessages].m_color.red = aWeaponReds[colorId]; + aMessages[NumMessages].m_color.green = aWeaponGreens[colorId]; + aMessages[NumMessages].m_color.blue = aWeaponBlues[colorId]; + aMessages[NumMessages].m_color.alpha = (1.0f - dist / MAXDIST) * 128.0f; + aMessages[NumMessages].m_bOutOfStock = object->bOutOfStock; + aMessages[NumMessages].m_quantity = object->field_172; + NumMessages++; + } + } + } + + entity->GetMatrix().SetRotateZOnlyScaled((float)(CTimer::GetTimeInMilliseconds() & 0x7FF) * DEGTORAD(360.0f / 0x800), aWeaponScale[colorId]); + } +} + +void +CPickups::DoMineEffects(CEntity *entity) +{ + CVector &pos = entity->GetPosition(); + float dist = (TheCamera.GetPosition() - pos).Magnitude(); + const float MAXDIST = 20.0f; + + if (dist < MAXDIST) { + float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x1FF) * DEGTORAD(360.0f / 0x200)); + + int32 red = (MAXDIST - dist) * (0.5f * s + 0.5f) / MAXDIST * 64.0f; + CShadows::StoreStaticShadow((uintptr)entity, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos, + 2.0f, 0.0f, 0.0f, -2.0f, + 255, // this is 0 on PC which results in no shadow + red, 0, 0, + 4.0f, 1.0f, 40.0f, false, 0.0f); + CCoronas::RegisterCorona((uintptr)entity, red, 0, 0, 255, pos, 0.6f, 60.0f, CCoronas::TYPE_RING, CCoronas::FLARE_NONE, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); + } + + entity->GetMatrix().SetRotateZOnly((float)(CTimer::GetTimeInMilliseconds() & 0x3FF) * DEGTORAD(360.0f / 0x400)); +} + +void +CPickups::DoMoneyEffects(CEntity *entity) +{ + CVector &pos = entity->GetPosition(); + float dist = (TheCamera.GetPosition() - pos).Magnitude(); + const float MAXDIST = 20.0f; + + if (dist < MAXDIST) { + float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x3FF) * DEGTORAD(360.0f / 0x400)); + + int32 green = (MAXDIST - dist) * (0.2f * s + 0.3f) / MAXDIST * 64.0f; + CShadows::StoreStaticShadow((uintptr)entity, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos, + 2.0f, 0.0f, 0.0f, -2.0f, + 255, // this is 0 on PC which results in no shadow + 0, green, 0, + 4.0f, 1.0f, 40.0f, false, 0.0f); + CCoronas::RegisterCorona((uintptr)entity, 0, green, 0, 255, pos, 0.4f, 40.0f, CCoronas::TYPE_RING, CCoronas::FLARE_NONE, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); + } + + entity->GetMatrix().SetRotateZOnly((float)(CTimer::GetTimeInMilliseconds() & 0x7FF) * DEGTORAD(360.0f / 0x800)); +} + +void +CPickups::DoCollectableEffects(CEntity *entity) +{ + CVector &pos = entity->GetPosition(); + float dist = (TheCamera.GetPosition() - pos).Magnitude(); + const float MAXDIST = 14.0f; + + if (dist < MAXDIST) { + float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x7FF) * DEGTORAD(360.0f / 0x800)); + + int32 color = (MAXDIST - dist) * (0.5f * s + 0.5f) / MAXDIST * 255.0f; + CShadows::StoreStaticShadow((uintptr)entity, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos, + 2.0f, 0.0f, 0.0f, -2.0f, + 255, // this is 0 on PC which results in no shadow + color, color, color, + 4.0f, 1.0f, 40.0f, false, 0.0f); + CCoronas::RegisterCorona((uintptr)entity, color, color, color, 255, pos, 0.6f, 40.0f, CCoronas::TYPE_RING, CCoronas::FLARE_NONE, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); + } + + entity->GetMatrix().SetRotateZOnly((float)(CTimer::GetTimeInMilliseconds() & 0xFFF) * DEGTORAD(360.0f / 0x1000)); +} + +void +CPickups::RenderPickUpText() +{ + wchar *strToPrint; + for (int32 i = 0; i < NumMessages; i++) { + if (aMessages[i].m_quantity <= 39) { + switch (aMessages[i].m_quantity) // could use some enum maybe + { + case 0: + if (aMessages[i].m_weaponType == WEAPONTYPE_TOTALWEAPONS) { // unreachable code? + // what is this?? + sprintf(gString, "%d/%d", CWorld::Players[CWorld::PlayerInFocus].m_nCollectedPackages, 2903); + } else { + if (aMessages[i].m_bOutOfStock) + strToPrint = TheText.Get("STOCK"); + else { + sprintf(gString, "$%d", CostOfWeapon[aMessages[i].m_weaponType]); + AsciiToUnicode(gString, gUString); + strToPrint = gUString; + } + } + break; + case 1: + strToPrint = TheText.Get("SECURI"); + break; + case 2: + strToPrint = TheText.Get("MOONBM"); + break; + case 3: + strToPrint = TheText.Get("COACH"); + break; + case 4: + strToPrint = TheText.Get("FLATBED"); + break; + case 5: + strToPrint = TheText.Get("LINERUN"); + break; + case 6: + strToPrint = TheText.Get("TRASHM"); + break; + case 7: + strToPrint = TheText.Get("PATRIOT"); + break; + case 8: + strToPrint = TheText.Get("WHOOPEE"); + break; + case 9: + strToPrint = TheText.Get("BLISTA"); + break; + case 10: + strToPrint = TheText.Get("MULE"); + break; + case 11: + strToPrint = TheText.Get("YANKEE"); + break; + case 12: + strToPrint = TheText.Get("BOBCAT"); + break; + case 13: + strToPrint = TheText.Get("DODO"); + break; + case 14: + strToPrint = TheText.Get("BUS"); + break; + case 15: + strToPrint = TheText.Get("RUMPO"); + break; + case 16: + strToPrint = TheText.Get("PONY"); + break; + case 17: + strToPrint = TheText.Get("SENTINL"); + break; + case 18: + strToPrint = TheText.Get("CHEETAH"); + break; + case 19: + strToPrint = TheText.Get("BANSHEE"); + break; + case 20: + strToPrint = TheText.Get("IDAHO"); + break; + case 21: + strToPrint = TheText.Get("INFERNS"); + break; + case 22: + strToPrint = TheText.Get("TAXI"); + break; + case 23: + strToPrint = TheText.Get("KURUMA"); + break; + case 24: + strToPrint = TheText.Get("STRETCH"); + break; + case 25: + strToPrint = TheText.Get("PEREN"); + break; + case 26: + strToPrint = TheText.Get("STINGER"); + break; + case 27: + strToPrint = TheText.Get("MANANA"); + break; + case 28: + strToPrint = TheText.Get("LANDSTK"); + break; + case 29: + strToPrint = TheText.Get("STALION"); + break; + case 30: + strToPrint = TheText.Get("BFINJC"); + break; + case 31: + strToPrint = TheText.Get("CABBIE"); + break; + case 32: + strToPrint = TheText.Get("ESPERAN"); + break; + case 33: + strToPrint = TheText.Get("FIRETRK"); + break; + case 34: + strToPrint = TheText.Get("AMBULAN"); + break; + case 35: + strToPrint = TheText.Get("ENFORCR"); + break; + case 36: + strToPrint = TheText.Get("FBICAR"); + break; + case 37: + strToPrint = TheText.Get("RHINO"); + break; + case 38: + strToPrint = TheText.Get("BARRCKS"); + break; + case 39: + strToPrint = TheText.Get("POLICAR"); + break; + default: + break; + } + } + CFont::SetPropOn(); + CFont::SetBackgroundOff(); + + const float MAX_SCALE = 1.0f; + + float fScaleY = aMessages[i].m_dist.y / 100.0f; + if (fScaleY > MAX_SCALE) fScaleY = MAX_SCALE; + + float fScaleX = aMessages[i].m_dist.x / 100.0f; + if (fScaleX > MAX_SCALE) fScaleX = MAX_SCALE; + + CFont::SetScale(fScaleX, fScaleY); + CFont::SetCentreOn(); + CFont::SetCentreSize(SCREEN_WIDTH); + CFont::SetJustifyOff(); + + CFont::SetColor(CRGBA(aMessages[i].m_color.red, aMessages[i].m_color.green, aMessages[i].m_color.blue, aMessages[i].m_color.alpha)); + CFont::SetBackGroundOnlyTextOff(); + CFont::SetFontStyle(FONT_BANK); + CFont::PrintString(aMessages[i].m_pos.x, aMessages[i].m_pos.y, strToPrint); + } + NumMessages = 0; +} + +void +CPickups::Load(uint8 *buf, uint32 size) +{ +INITSAVEBUF + + for (int32 i = 0; i < NUMPICKUPS; i++) { + aPickUps[i] = ReadSaveBuf(buf); + + if (aPickUps[i].m_eType != PICKUP_NONE && aPickUps[i].m_pObject != nil) + aPickUps[i].m_pObject = CPools::GetObjectPool()->GetSlot((int32)aPickUps[i].m_pObject - 1); + } + + CollectedPickUpIndex = ReadSaveBuf(buf); + ReadSaveBuf(buf); + NumMessages = 0; + + for (uint16 i = 0; i < NUMCOLLECTEDPICKUPS; i++) + aPickUpsCollected[i] = ReadSaveBuf(buf); + +VALIDATESAVEBUF(size) +} + +void +CPickups::Save(uint8 *buf, uint32 *size) +{ + *size = sizeof(aPickUps) + sizeof(uint16) + sizeof(uint16) + sizeof(aPickUpsCollected); + +INITSAVEBUF + + for (int32 i = 0; i < NUMPICKUPS; i++) { + CPickup *buf_pickup = WriteSaveBuf(buf, aPickUps[i]); + if (buf_pickup->m_eType != PICKUP_NONE && buf_pickup->m_pObject != nil) + buf_pickup->m_pObject = (CObject*)(CPools::GetObjectPool()->GetJustIndex(buf_pickup->m_pObject) + 1); + } + + WriteSaveBuf(buf, CollectedPickUpIndex); + WriteSaveBuf(buf, (uint16)0); // possibly was NumMessages + + for (uint16 i = 0; i < NUMCOLLECTEDPICKUPS; i++) + WriteSaveBuf(buf, aPickUpsCollected[i]); + +VALIDATESAVEBUF(*size) +} + +STARTPATCHES + InjectHook(0x430220, CPickups::Init, PATCH_JUMP); + InjectHook(0x4303D0, CPickups::Update, PATCH_JUMP); + InjectHook(0x432440, CPickups::RenderPickUpText, PATCH_JUMP); + InjectHook(0x431C30, CPickups::DoCollectableEffects, PATCH_JUMP); + InjectHook(0x431F40, CPickups::DoMoneyEffects, PATCH_JUMP); + InjectHook(0x4321C0, CPickups::DoMineEffects, PATCH_JUMP); + InjectHook(0x431520, CPickups::DoPickUpEffects, PATCH_JUMP); + InjectHook(0x4304B0, CPickups::GenerateNewOne, PATCH_JUMP); + InjectHook(0x430660, CPickups::GenerateNewOne_WeaponType, PATCH_JUMP); + InjectHook(0x4307A0, CPickups::RemovePickUp, PATCH_JUMP); + InjectHook(0x430800, CPickups::RemoveAllFloatingPickups, PATCH_JUMP); + InjectHook(0x433D60, CPickups::AddToCollectedPickupsArray, PATCH_JUMP); + InjectHook(0x430770, CPickups::IsPickUpPickedUp, PATCH_JUMP); + InjectHook(0x430690, CPickups::ModelForWeapon, PATCH_JUMP); + InjectHook(0x4306F0, CPickups::WeaponForModel, PATCH_JUMP); + InjectHook(0x431510, CPickups::FindColourIndexForWeaponMI, PATCH_JUMP);/**/ + InjectHook(0x433DF0, CPickups::GetActualPickupIndex, PATCH_JUMP); + InjectHook(0x433DB0, CPickups::GetNewUniquePickupIndex, PATCH_JUMP); + InjectHook(0x433B60, CPickups::PassTime, PATCH_JUMP); + InjectHook(0x4339F0, CPickups::GivePlayerGoodiesWithPickUpMI, PATCH_JUMP); + InjectHook(0x433F60, CPickups::Load, PATCH_JUMP); + InjectHook(0x433E40, CPickups::Save, PATCH_JUMP); + InjectHook(0x433BA0, &CPickup::GiveUsAPickUpObject, PATCH_JUMP); + InjectHook(0x430860, &CPickup::Update, PATCH_JUMP); +ENDPATCHES diff --git a/src/control/Pickups.h b/src/control/Pickups.h index 4bb0ddff..3e075b24 100644 --- a/src/control/Pickups.h +++ b/src/control/Pickups.h @@ -1,124 +1,124 @@ -#pragma once -#include "Weapon.h" - -enum ePickupType : uint8 -{ - PICKUP_NONE = 0, - PICKUP_IN_SHOP, - PICKUP_ON_STREET, - PICKUP_ONCE, - PICKUP_ONCE_TIMEOUT, - PICKUP_COLLECTABLE1, - PICKUP_IN_SHOP_OUT_OF_STOCK, - PICKUP_MONEY, - PICKUP_MINE_INACTIVE, - PICKUP_MINE_ARMED, - PICKUP_NAUTICAL_MINE_INACTIVE, - PICKUP_NAUTICAL_MINE_ARMED, - PICKUP_FLOATINGPACKAGE, - PICKUP_FLOATINGPACKAGE_FLOATING, - PICKUP_ON_STREET_SLOW, - PICKUP_NUMOFTYPES -}; - -class CEntity; -class CObject; -class CVehicle; -class CPlayerPed; - -class CPickup -{ -public: - ePickupType m_eType; - bool m_bRemoved; - uint16 m_nQuantity; - CObject *m_pObject; - uint32 m_nTimer; - int16 m_eModelIndex; - uint16 m_nIndex; - CVector m_vecPos; - - CObject *GiveUsAPickUpObject(int32 handle); - bool Update(CPlayerPed *player, CVehicle *vehicle, int playerId); -private: - bool IsMine() { return m_eType >= PICKUP_MINE_INACTIVE && m_eType <= PICKUP_FLOATINGPACKAGE_FLOATING; } - inline bool CanBePickedUp(CPlayerPed *player); - void RemoveKeepType(); - void Remove(); -}; - -static_assert(sizeof(CPickup) == 0x1C, "CPickup: error"); - -struct tPickupMessage -{ - CVector2D m_pos; - eWeaponType m_weaponType; - CVector2D m_dist; - CRGBA m_color; - uint8 m_bOutOfStock : 1; - uint8 m_quantity; -}; - -class CPickups -{ - static int32 aPickUpsCollected[NUMCOLLECTEDPICKUPS]; - static int16 CollectedPickUpIndex; - static int16 NumMessages; - static tPickupMessage aMessages[NUMPICKUPMESSAGES]; -public: - static void Init(); - static void Update(); - static void RenderPickUpText(); - static void DoCollectableEffects(CEntity *ent); - static void DoMoneyEffects(CEntity *ent); - static void DoMineEffects(CEntity *ent); - static void DoPickUpEffects(CEntity *ent); - static int32 GenerateNewOne(CVector pos, uint32 modelIndex, uint8 type, uint32 quantity); - static int32 GenerateNewOne_WeaponType(CVector pos, eWeaponType weaponType, uint8 type, uint32 quantity); - static void RemovePickUp(int32 pickupIndex); - static void RemoveAllFloatingPickups(); - static void AddToCollectedPickupsArray(int32 index); - static bool IsPickUpPickedUp(int32 pickupId); - static int32 ModelForWeapon(eWeaponType weaponType); - static enum eWeaponType WeaponForModel(int32 model); - static int32 FindColourIndexForWeaponMI(int32 model); - static int32 GetActualPickupIndex(int32 index); - static int32 GetNewUniquePickupIndex(int32 slot); - static void PassTime(uint32 time); - static bool GivePlayerGoodiesWithPickUpMI(int16 modelIndex, int playerIndex); - static void Load(uint8 *buf, uint32 size); - static void Save(uint8 *buf, uint32 *size); - - static CPickup(&aPickUps)[NUMPICKUPS]; - - // unused - static bool &bPickUpcamActivated; - static CVehicle *&pPlayerVehicle; - static CVector &StaticCamCoors; - static uint32 &StaticCamStartTime; -}; - -extern uint16 AmmoForWeapon[20]; -extern uint16 AmmoForWeapon_OnStreet[20]; -extern uint16 CostOfWeapon[20]; - -class CPacManPickups -{ -public: - static void Init(void); - static void Update(void); - static void GeneratePMPickUps(CVector, float, int16, uint8); - static void GeneratePMPickUpsForRace(int32); - static void GenerateOnePMPickUp(CVector); - static void Render(void); - static void DoCleanUpPacManStuff(void); - static void StartPacManRace(int32); - static void StartPacManRecord(void); - static uint32 QueryPowerPillsEatenInRace(void); - static void ResetPowerPillsEatenInRace(void); - static void CleanUpPacManStuff(void); - static void StartPacManScramble(CVector, float, int16); - static uint32 QueryPowerPillsCarriedByPlayer(void); - static void ResetPowerPillsCarriedByPlayer(void); - -}; +#pragma once +#include "Weapon.h" + +enum ePickupType : uint8 +{ + PICKUP_NONE = 0, + PICKUP_IN_SHOP, + PICKUP_ON_STREET, + PICKUP_ONCE, + PICKUP_ONCE_TIMEOUT, + PICKUP_COLLECTABLE1, + PICKUP_IN_SHOP_OUT_OF_STOCK, + PICKUP_MONEY, + PICKUP_MINE_INACTIVE, + PICKUP_MINE_ARMED, + PICKUP_NAUTICAL_MINE_INACTIVE, + PICKUP_NAUTICAL_MINE_ARMED, + PICKUP_FLOATINGPACKAGE, + PICKUP_FLOATINGPACKAGE_FLOATING, + PICKUP_ON_STREET_SLOW, + PICKUP_NUMOFTYPES +}; + +class CEntity; +class CObject; +class CVehicle; +class CPlayerPed; + +class CPickup +{ +public: + ePickupType m_eType; + bool m_bRemoved; + uint16 m_nQuantity; + CObject *m_pObject; + uint32 m_nTimer; + int16 m_eModelIndex; + uint16 m_nIndex; + CVector m_vecPos; + + CObject *GiveUsAPickUpObject(int32 handle); + bool Update(CPlayerPed *player, CVehicle *vehicle, int playerId); +private: + bool IsMine() { return m_eType >= PICKUP_MINE_INACTIVE && m_eType <= PICKUP_FLOATINGPACKAGE_FLOATING; } + inline bool CanBePickedUp(CPlayerPed *player); + void RemoveKeepType(); + void Remove(); +}; + +static_assert(sizeof(CPickup) == 0x1C, "CPickup: error"); + +struct tPickupMessage +{ + CVector2D m_pos; + eWeaponType m_weaponType; + CVector2D m_dist; + CRGBA m_color; + uint8 m_bOutOfStock : 1; + uint8 m_quantity; +}; + +class CPickups +{ + static int32 aPickUpsCollected[NUMCOLLECTEDPICKUPS]; + static int16 CollectedPickUpIndex; + static int16 NumMessages; + static tPickupMessage aMessages[NUMPICKUPMESSAGES]; +public: + static void Init(); + static void Update(); + static void RenderPickUpText(); + static void DoCollectableEffects(CEntity *ent); + static void DoMoneyEffects(CEntity *ent); + static void DoMineEffects(CEntity *ent); + static void DoPickUpEffects(CEntity *ent); + static int32 GenerateNewOne(CVector pos, uint32 modelIndex, uint8 type, uint32 quantity); + static int32 GenerateNewOne_WeaponType(CVector pos, eWeaponType weaponType, uint8 type, uint32 quantity); + static void RemovePickUp(int32 pickupIndex); + static void RemoveAllFloatingPickups(); + static void AddToCollectedPickupsArray(int32 index); + static bool IsPickUpPickedUp(int32 pickupId); + static int32 ModelForWeapon(eWeaponType weaponType); + static enum eWeaponType WeaponForModel(int32 model); + static int32 FindColourIndexForWeaponMI(int32 model); + static int32 GetActualPickupIndex(int32 index); + static int32 GetNewUniquePickupIndex(int32 slot); + static void PassTime(uint32 time); + static bool GivePlayerGoodiesWithPickUpMI(int16 modelIndex, int playerIndex); + static void Load(uint8 *buf, uint32 size); + static void Save(uint8 *buf, uint32 *size); + + static CPickup(&aPickUps)[NUMPICKUPS]; + + // unused + static bool &bPickUpcamActivated; + static CVehicle *&pPlayerVehicle; + static CVector &StaticCamCoors; + static uint32 &StaticCamStartTime; +}; + +extern uint16 AmmoForWeapon[20]; +extern uint16 AmmoForWeapon_OnStreet[20]; +extern uint16 CostOfWeapon[20]; + +class CPacManPickups +{ +public: + static void Init(void); + static void Update(void); + static void GeneratePMPickUps(CVector, float, int16, uint8); + static void GeneratePMPickUpsForRace(int32); + static void GenerateOnePMPickUp(CVector); + static void Render(void); + static void DoCleanUpPacManStuff(void); + static void StartPacManRace(int32); + static void StartPacManRecord(void); + static uint32 QueryPowerPillsEatenInRace(void); + static void ResetPowerPillsEatenInRace(void); + static void CleanUpPacManStuff(void); + static void StartPacManScramble(CVector, float, int16); + static uint32 QueryPowerPillsCarriedByPlayer(void); + static void ResetPowerPillsCarriedByPlayer(void); + +}; diff --git a/src/control/PowerPoints.cpp b/src/control/PowerPoints.cpp index 4bc773a9..9a74e8d9 100644 --- a/src/control/PowerPoints.cpp +++ b/src/control/PowerPoints.cpp @@ -1,22 +1,22 @@ -#include "common.h" -#include "PowerPoints.h" - -// Some cut beta feature - -void CPowerPoint::Update() -{} - -void CPowerPoints::Init() -{} - -void CPowerPoints::Update() -{} - -void CPowerPoints::GenerateNewOne(float, float, float, float, float, float, uint8) -{} - -void CPowerPoints::Save(uint8**, uint32*) -{} - -void CPowerPoints::Load(uint8*, uint32) +#include "common.h" +#include "PowerPoints.h" + +// Some cut beta feature + +void CPowerPoint::Update() +{} + +void CPowerPoints::Init() +{} + +void CPowerPoints::Update() +{} + +void CPowerPoints::GenerateNewOne(float, float, float, float, float, float, uint8) +{} + +void CPowerPoints::Save(uint8**, uint32*) +{} + +void CPowerPoints::Load(uint8*, uint32) {} \ No newline at end of file diff --git a/src/control/PowerPoints.h b/src/control/PowerPoints.h index d7478076..ee3750cd 100644 --- a/src/control/PowerPoints.h +++ b/src/control/PowerPoints.h @@ -1,26 +1,26 @@ -#pragma once - -enum -{ - POWERPOINT_NONE = 0, - POWERPOINT_HEALTH, - POWERPOINT_HIDEOUT_INDUSTRIAL, - POWERPOINT_HIDEOUT_COMMERCIAL, - POWERPOINT_HIDEOUT_SUBURBAN -}; - -class CPowerPoint -{ -public: - void Update(); -}; - -class CPowerPoints -{ -public: - static void Init(); - static void Update(); - static void GenerateNewOne(float, float, float, float, float, float, uint8); - static void Save(uint8**, uint32*); - static void Load(uint8*, uint32); +#pragma once + +enum +{ + POWERPOINT_NONE = 0, + POWERPOINT_HEALTH, + POWERPOINT_HIDEOUT_INDUSTRIAL, + POWERPOINT_HIDEOUT_COMMERCIAL, + POWERPOINT_HIDEOUT_SUBURBAN +}; + +class CPowerPoint +{ +public: + void Update(); +}; + +class CPowerPoints +{ +public: + static void Init(); + static void Update(); + static void GenerateNewOne(float, float, float, float, float, float, uint8); + static void Save(uint8**, uint32*); + static void Load(uint8*, uint32); }; \ No newline at end of file diff --git a/src/control/Restart.cpp b/src/control/Restart.cpp index 8e983555..788a054a 100644 --- a/src/control/Restart.cpp +++ b/src/control/Restart.cpp @@ -21,234 +21,234 @@ CVector(&CRestart::PoliceRestartPoints)[NUM_RESTART_POINTS] = *(CVector(*)[NUM_R float(&CRestart::PoliceRestartHeadings)[NUM_RESTART_POINTS] = *(float(*)[NUM_RESTART_POINTS])*(uintptr*)0x6F1D20; uint16 &CRestart::NumberOfPoliceRestarts = *(uint16*)0x95CC44; -void -CRestart::Initialise() -{ - OverridePoliceStationLevel = LEVEL_NONE; - OverrideHospitalLevel = LEVEL_NONE; - bFadeInAfterNextArrest = true; - bFadeInAfterNextDeath = true; - OverrideHeading = 0.0f; - OverridePosition = CVector(0.0f, 0.0f, 0.0f); - bOverrideRestart = false; - NumberOfPoliceRestarts = 0; - NumberOfHospitalRestarts = 0; - - for (int i = 0; i < NUM_RESTART_POINTS; i++) { - HospitalRestartPoints[i] = CVector(0.0f, 0.0f, 0.0f); - HospitalRestartHeadings[i] = 0.0f; - PoliceRestartPoints[i] = CVector(0.0f, 0.0f, 0.0f); - PoliceRestartHeadings[i] = 0.0f; - } +void +CRestart::Initialise() +{ + OverridePoliceStationLevel = LEVEL_NONE; + OverrideHospitalLevel = LEVEL_NONE; + bFadeInAfterNextArrest = true; + bFadeInAfterNextDeath = true; + OverrideHeading = 0.0f; + OverridePosition = CVector(0.0f, 0.0f, 0.0f); + bOverrideRestart = false; + NumberOfPoliceRestarts = 0; + NumberOfHospitalRestarts = 0; + + for (int i = 0; i < NUM_RESTART_POINTS; i++) { + HospitalRestartPoints[i] = CVector(0.0f, 0.0f, 0.0f); + HospitalRestartHeadings[i] = 0.0f; + PoliceRestartPoints[i] = CVector(0.0f, 0.0f, 0.0f); + PoliceRestartHeadings[i] = 0.0f; + } } -void -CRestart::AddHospitalRestartPoint(const CVector &pos, float heading) -{ - HospitalRestartPoints[NumberOfHospitalRestarts] = pos; - HospitalRestartHeadings[NumberOfHospitalRestarts++] = heading; +void +CRestart::AddHospitalRestartPoint(const CVector &pos, float heading) +{ + HospitalRestartPoints[NumberOfHospitalRestarts] = pos; + HospitalRestartHeadings[NumberOfHospitalRestarts++] = heading; } -void -CRestart::AddPoliceRestartPoint(const CVector &pos, float heading) -{ - PoliceRestartPoints[NumberOfPoliceRestarts] = pos; - PoliceRestartHeadings[NumberOfPoliceRestarts++] = heading; +void +CRestart::AddPoliceRestartPoint(const CVector &pos, float heading) +{ + PoliceRestartPoints[NumberOfPoliceRestarts] = pos; + PoliceRestartHeadings[NumberOfPoliceRestarts++] = heading; } -void -CRestart::OverrideNextRestart(const CVector &pos, float heading) -{ - bOverrideRestart = true; - OverridePosition = pos; - OverrideHeading = heading; +void +CRestart::OverrideNextRestart(const CVector &pos, float heading) +{ + bOverrideRestart = true; + OverridePosition = pos; + OverrideHeading = heading; } -void -CRestart::CancelOverrideRestart() -{ - bOverrideRestart = false; +void +CRestart::CancelOverrideRestart() +{ + bOverrideRestart = false; } -void -CRestart::FindClosestHospitalRestartPoint(const CVector &pos, CVector *outPos, float *outHeading) -{ - if (bOverrideRestart) { - *outPos = OverridePosition; - *outHeading = OverrideHeading; - CancelOverrideRestart(); - return; - } - - eLevelName curlevel = CTheZones::FindZoneForPoint(pos); - float fMinDist = 16000000.0f; - int closestPoint = NUM_RESTART_POINTS; - - // find closest point on this level - for (int i = 0; i < NumberOfHospitalRestarts; i++) { - if (CTheZones::FindZoneForPoint(HospitalRestartPoints[i]) == (OverrideHospitalLevel != LEVEL_NONE ? OverrideHospitalLevel : curlevel)) { - float dist = (pos - HospitalRestartPoints[i]).MagnitudeSqr(); - if (fMinDist >= dist) { - fMinDist = dist; - closestPoint = i; - } - } - } - - // if we didn't find anything, find closest point on any level - if (closestPoint == NUM_RESTART_POINTS) { - for (int i = 0; i < NumberOfHospitalRestarts; i++) { - float dist = (pos - HospitalRestartPoints[i]).MagnitudeSqr(); - if (fMinDist >= dist) { - fMinDist = dist; - closestPoint = i; - } - } - } - - // if we still didn't find anything, find closest path node - if (closestPoint == NUM_RESTART_POINTS) { - *outPos = ThePaths.m_pathNodes[ThePaths.FindNodeClosestToCoors(pos, PATH_PED, 999999.9f)].pos; - *outHeading = 0.0f; - printf("Couldn't find a hospital restart zone near the player %f %f %f->%f %f %f\n", pos.x, pos.y, pos.z, outPos->x, outPos->y, outPos->z); - } else { - *outPos = HospitalRestartPoints[closestPoint]; - *outHeading = HospitalRestartHeadings[closestPoint]; - } +void +CRestart::FindClosestHospitalRestartPoint(const CVector &pos, CVector *outPos, float *outHeading) +{ + if (bOverrideRestart) { + *outPos = OverridePosition; + *outHeading = OverrideHeading; + CancelOverrideRestart(); + return; + } + + eLevelName curlevel = CTheZones::FindZoneForPoint(pos); + float fMinDist = 16000000.0f; + int closestPoint = NUM_RESTART_POINTS; + + // find closest point on this level + for (int i = 0; i < NumberOfHospitalRestarts; i++) { + if (CTheZones::FindZoneForPoint(HospitalRestartPoints[i]) == (OverrideHospitalLevel != LEVEL_NONE ? OverrideHospitalLevel : curlevel)) { + float dist = (pos - HospitalRestartPoints[i]).MagnitudeSqr(); + if (fMinDist >= dist) { + fMinDist = dist; + closestPoint = i; + } + } + } + + // if we didn't find anything, find closest point on any level + if (closestPoint == NUM_RESTART_POINTS) { + for (int i = 0; i < NumberOfHospitalRestarts; i++) { + float dist = (pos - HospitalRestartPoints[i]).MagnitudeSqr(); + if (fMinDist >= dist) { + fMinDist = dist; + closestPoint = i; + } + } + } + + // if we still didn't find anything, find closest path node + if (closestPoint == NUM_RESTART_POINTS) { + *outPos = ThePaths.m_pathNodes[ThePaths.FindNodeClosestToCoors(pos, PATH_PED, 999999.9f)].pos; + *outHeading = 0.0f; + printf("Couldn't find a hospital restart zone near the player %f %f %f->%f %f %f\n", pos.x, pos.y, pos.z, outPos->x, outPos->y, outPos->z); + } else { + *outPos = HospitalRestartPoints[closestPoint]; + *outHeading = HospitalRestartHeadings[closestPoint]; + } } -void -CRestart::FindClosestPoliceRestartPoint(const CVector &pos, CVector *outPos, float *outHeading) -{ - if (bOverrideRestart) { - *outPos = OverridePosition; - *outHeading = OverrideHeading; - CancelOverrideRestart(); - return; - } - - eLevelName curlevel = CTheZones::FindZoneForPoint(pos); - float fMinDist = 16000000.0f; - int closestPoint = NUM_RESTART_POINTS; - - // find closest point on this level - for (int i = 0; i < NumberOfPoliceRestarts; i++) { - if (CTheZones::FindZoneForPoint(PoliceRestartPoints[i]) == (OverridePoliceStationLevel != LEVEL_NONE ? OverridePoliceStationLevel : curlevel)) { - float dist = (pos - PoliceRestartPoints[i]).MagnitudeSqr(); - if (fMinDist >= dist) { - fMinDist = dist; - closestPoint = i; - } - } - } - - // if we didn't find anything, find closest point on any level - if (closestPoint == NUM_RESTART_POINTS) { - for (int i = 0; i < NumberOfPoliceRestarts; i++) { - float dist = (pos - PoliceRestartPoints[i]).MagnitudeSqr(); - if (fMinDist >= dist) { - fMinDist = dist; - closestPoint = i; - } - } - } - - // if we still didn't find anything, find closest path node - if (closestPoint == NUM_RESTART_POINTS) { - printf("Couldn't find a police restart zone near the player\n"); - *outPos = ThePaths.m_pathNodes[ThePaths.FindNodeClosestToCoors(pos, PATH_PED, 999999.9f)].pos; - *outHeading = 0.0f; - } else { - *outPos = PoliceRestartPoints[closestPoint]; - *outHeading = PoliceRestartHeadings[closestPoint]; - } -} - -void -CRestart::LoadAllRestartPoints(uint8 *buf, uint32 size) -{ - Initialise(); - -INITSAVEBUF - CheckSaveHeader(buf, 'R','S','T','\0', size - SAVE_HEADER_SIZE); - - for (int i = 0; i < NUM_RESTART_POINTS; i++) { - HospitalRestartPoints[i] = ReadSaveBuf(buf); - HospitalRestartHeadings[i] = ReadSaveBuf(buf); - } - - for (int i = 0; i < NUM_RESTART_POINTS; i++) { - PoliceRestartPoints[i] = ReadSaveBuf(buf); - PoliceRestartHeadings[i] = ReadSaveBuf(buf); - } - - NumberOfHospitalRestarts = ReadSaveBuf(buf); - NumberOfPoliceRestarts = ReadSaveBuf(buf); - bOverrideRestart = ReadSaveBuf(buf); - - // skip something unused - ReadSaveBuf(buf); - ReadSaveBuf(buf); - - OverridePosition = ReadSaveBuf(buf); - OverrideHeading = ReadSaveBuf(buf); - bFadeInAfterNextDeath = ReadSaveBuf(buf); - bFadeInAfterNextArrest = ReadSaveBuf(buf); - OverrideHospitalLevel = ReadSaveBuf(buf); - OverridePoliceStationLevel = ReadSaveBuf(buf); -VALIDATESAVEBUF(size); -} - -void -CRestart::SaveAllRestartPoints(uint8 *buf, uint32 *size) -{ - *size = SAVE_HEADER_SIZE - + sizeof(HospitalRestartPoints) - + sizeof(HospitalRestartHeadings) - + sizeof(PoliceRestartPoints) - + sizeof(PoliceRestartHeadings) - + sizeof(NumberOfHospitalRestarts) - + sizeof(NumberOfPoliceRestarts) - + sizeof(bOverrideRestart) - + sizeof(uint8) - + sizeof(uint16) - + sizeof(OverridePosition) - + sizeof(OverrideHeading) - + sizeof(bFadeInAfterNextDeath) - + sizeof(bFadeInAfterNextArrest) - + sizeof(OverrideHospitalLevel) - + sizeof(OverridePoliceStationLevel); // == 292 - -INITSAVEBUF - WriteSaveHeader(buf, 'R','S','T','\0', *size - SAVE_HEADER_SIZE); - - for (int i = 0; i < NUM_RESTART_POINTS; i++) { - WriteSaveBuf(buf, HospitalRestartPoints[i]); - WriteSaveBuf(buf, HospitalRestartHeadings[i]); - } - - for (int i = 0; i < NUM_RESTART_POINTS; i++) { - WriteSaveBuf(buf, PoliceRestartPoints[i]); - WriteSaveBuf(buf, PoliceRestartHeadings[i]); - } - - WriteSaveBuf(buf, NumberOfHospitalRestarts); - WriteSaveBuf(buf, NumberOfPoliceRestarts); - WriteSaveBuf(buf, bOverrideRestart); - - WriteSaveBuf(buf, (uint8)0); - WriteSaveBuf(buf, (uint16)0); - - WriteSaveBuf(buf, OverridePosition); - WriteSaveBuf(buf, OverrideHeading); - WriteSaveBuf(buf, bFadeInAfterNextDeath); - WriteSaveBuf(buf, bFadeInAfterNextArrest); - WriteSaveBuf(buf, OverrideHospitalLevel); - WriteSaveBuf(buf, OverridePoliceStationLevel); -VALIDATESAVEBUF(*size); -} - - +void +CRestart::FindClosestPoliceRestartPoint(const CVector &pos, CVector *outPos, float *outHeading) +{ + if (bOverrideRestart) { + *outPos = OverridePosition; + *outHeading = OverrideHeading; + CancelOverrideRestart(); + return; + } + + eLevelName curlevel = CTheZones::FindZoneForPoint(pos); + float fMinDist = 16000000.0f; + int closestPoint = NUM_RESTART_POINTS; + + // find closest point on this level + for (int i = 0; i < NumberOfPoliceRestarts; i++) { + if (CTheZones::FindZoneForPoint(PoliceRestartPoints[i]) == (OverridePoliceStationLevel != LEVEL_NONE ? OverridePoliceStationLevel : curlevel)) { + float dist = (pos - PoliceRestartPoints[i]).MagnitudeSqr(); + if (fMinDist >= dist) { + fMinDist = dist; + closestPoint = i; + } + } + } + + // if we didn't find anything, find closest point on any level + if (closestPoint == NUM_RESTART_POINTS) { + for (int i = 0; i < NumberOfPoliceRestarts; i++) { + float dist = (pos - PoliceRestartPoints[i]).MagnitudeSqr(); + if (fMinDist >= dist) { + fMinDist = dist; + closestPoint = i; + } + } + } + + // if we still didn't find anything, find closest path node + if (closestPoint == NUM_RESTART_POINTS) { + printf("Couldn't find a police restart zone near the player\n"); + *outPos = ThePaths.m_pathNodes[ThePaths.FindNodeClosestToCoors(pos, PATH_PED, 999999.9f)].pos; + *outHeading = 0.0f; + } else { + *outPos = PoliceRestartPoints[closestPoint]; + *outHeading = PoliceRestartHeadings[closestPoint]; + } +} + +void +CRestart::LoadAllRestartPoints(uint8 *buf, uint32 size) +{ + Initialise(); + +INITSAVEBUF + CheckSaveHeader(buf, 'R','S','T','\0', size - SAVE_HEADER_SIZE); + + for (int i = 0; i < NUM_RESTART_POINTS; i++) { + HospitalRestartPoints[i] = ReadSaveBuf(buf); + HospitalRestartHeadings[i] = ReadSaveBuf(buf); + } + + for (int i = 0; i < NUM_RESTART_POINTS; i++) { + PoliceRestartPoints[i] = ReadSaveBuf(buf); + PoliceRestartHeadings[i] = ReadSaveBuf(buf); + } + + NumberOfHospitalRestarts = ReadSaveBuf(buf); + NumberOfPoliceRestarts = ReadSaveBuf(buf); + bOverrideRestart = ReadSaveBuf(buf); + + // skip something unused + ReadSaveBuf(buf); + ReadSaveBuf(buf); + + OverridePosition = ReadSaveBuf(buf); + OverrideHeading = ReadSaveBuf(buf); + bFadeInAfterNextDeath = ReadSaveBuf(buf); + bFadeInAfterNextArrest = ReadSaveBuf(buf); + OverrideHospitalLevel = ReadSaveBuf(buf); + OverridePoliceStationLevel = ReadSaveBuf(buf); +VALIDATESAVEBUF(size); +} + +void +CRestart::SaveAllRestartPoints(uint8 *buf, uint32 *size) +{ + *size = SAVE_HEADER_SIZE + + sizeof(HospitalRestartPoints) + + sizeof(HospitalRestartHeadings) + + sizeof(PoliceRestartPoints) + + sizeof(PoliceRestartHeadings) + + sizeof(NumberOfHospitalRestarts) + + sizeof(NumberOfPoliceRestarts) + + sizeof(bOverrideRestart) + + sizeof(uint8) + + sizeof(uint16) + + sizeof(OverridePosition) + + sizeof(OverrideHeading) + + sizeof(bFadeInAfterNextDeath) + + sizeof(bFadeInAfterNextArrest) + + sizeof(OverrideHospitalLevel) + + sizeof(OverridePoliceStationLevel); // == 292 + +INITSAVEBUF + WriteSaveHeader(buf, 'R','S','T','\0', *size - SAVE_HEADER_SIZE); + + for (int i = 0; i < NUM_RESTART_POINTS; i++) { + WriteSaveBuf(buf, HospitalRestartPoints[i]); + WriteSaveBuf(buf, HospitalRestartHeadings[i]); + } + + for (int i = 0; i < NUM_RESTART_POINTS; i++) { + WriteSaveBuf(buf, PoliceRestartPoints[i]); + WriteSaveBuf(buf, PoliceRestartHeadings[i]); + } + + WriteSaveBuf(buf, NumberOfHospitalRestarts); + WriteSaveBuf(buf, NumberOfPoliceRestarts); + WriteSaveBuf(buf, bOverrideRestart); + + WriteSaveBuf(buf, (uint8)0); + WriteSaveBuf(buf, (uint16)0); + + WriteSaveBuf(buf, OverridePosition); + WriteSaveBuf(buf, OverrideHeading); + WriteSaveBuf(buf, bFadeInAfterNextDeath); + WriteSaveBuf(buf, bFadeInAfterNextArrest); + WriteSaveBuf(buf, OverrideHospitalLevel); + WriteSaveBuf(buf, OverridePoliceStationLevel); +VALIDATESAVEBUF(*size); +} + + STARTPATCHES InjectHook(0x435E20, &CRestart::Initialise, PATCH_JUMP); InjectHook(0x436100, &CRestart::AddHospitalRestartPoint, PATCH_JUMP); @@ -258,5 +258,5 @@ STARTPATCHES InjectHook(0x4361A0, &CRestart::FindClosestHospitalRestartPoint, PATCH_JUMP); InjectHook(0x436450, &CRestart::FindClosestPoliceRestartPoint, PATCH_JUMP); InjectHook(0x436B20, &CRestart::LoadAllRestartPoints, PATCH_JUMP); - InjectHook(0x436700, &CRestart::SaveAllRestartPoints, PATCH_JUMP); + InjectHook(0x436700, &CRestart::SaveAllRestartPoints, PATCH_JUMP); ENDPATCHES \ No newline at end of file diff --git a/src/core/Frontend.h b/src/core/Frontend.h index c08bc1d9..20cf9e42 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -550,10 +550,10 @@ public: static int32 &sthWithButtons; static int32 &sthWithButtons2; -#ifndef MASTER - static bool m_PrefsMarketing; - static bool m_PrefsDisableTutorials; -#endif // !MASTER +#ifndef MASTER + static bool m_PrefsMarketing; + static bool m_PrefsDisableTutorials; +#endif // !MASTER #ifdef MENU_MAP static bool bMenuMapActive; diff --git a/src/core/PlayerInfo.cpp b/src/core/PlayerInfo.cpp index ead32ee7..0043c2f4 100644 --- a/src/core/PlayerInfo.cpp +++ b/src/core/PlayerInfo.cpp @@ -48,45 +48,45 @@ CPlayerInfo::GetPos() void CPlayerInfo::LoadPlayerSkin() -{ - DeletePlayerSkin(); - - m_pSkinTexture = CPlayerSkin::GetSkinTexture(m_aSkinName); - if (!m_pSkinTexture) +{ + DeletePlayerSkin(); + + m_pSkinTexture = CPlayerSkin::GetSkinTexture(m_aSkinName); + if (!m_pSkinTexture) m_pSkinTexture = CPlayerSkin::GetSkinTexture(DEFAULT_SKIN_NAME); } void CPlayerInfo::DeletePlayerSkin() -{ - if (m_pSkinTexture) { - RwTextureDestroy(m_pSkinTexture); - m_pSkinTexture = nil; +{ + if (m_pSkinTexture) { + RwTextureDestroy(m_pSkinTexture); + m_pSkinTexture = nil; } } -void -CPlayerInfo::KillPlayer() -{ - if (m_WBState != WBSTATE_PLAYING) return; - - m_WBState = WBSTATE_WASTED; - m_nWBTime = CTimer::GetTimeInMilliseconds(); - CDarkel::ResetOnPlayerDeath(); - CMessages::AddBigMessage(TheText.Get("DEAD"), 4000, 2); - CStats::TimesDied++; +void +CPlayerInfo::KillPlayer() +{ + if (m_WBState != WBSTATE_PLAYING) return; + + m_WBState = WBSTATE_WASTED; + m_nWBTime = CTimer::GetTimeInMilliseconds(); + CDarkel::ResetOnPlayerDeath(); + CMessages::AddBigMessage(TheText.Get("DEAD"), 4000, 2); + CStats::TimesDied++; } -void -CPlayerInfo::ArrestPlayer() -{ - if (m_WBState != WBSTATE_PLAYING) return; - - m_WBState = WBSTATE_BUSTED; - m_nWBTime = CTimer::GetTimeInMilliseconds(); - CDarkel::ResetOnPlayerDeath(); - CMessages::AddBigMessage(TheText.Get("BUSTED"), 5000, 2); - CStats::TimesArrested++; +void +CPlayerInfo::ArrestPlayer() +{ + if (m_WBState != WBSTATE_PLAYING) return; + + m_WBState = WBSTATE_BUSTED; + m_nWBTime = CTimer::GetTimeInMilliseconds(); + CDarkel::ResetOnPlayerDeath(); + CMessages::AddBigMessage(TheText.Get("BUSTED"), 5000, 2); + CStats::TimesArrested++; } bool @@ -105,102 +105,102 @@ CPlayerInfo::PlayerFailedCriticalMission() CDarkel::ResetOnPlayerDeath(); } -void -CPlayerInfo::Clear(void) -{ - m_pPed = nil; - m_pRemoteVehicle = nil; - if (m_pVehicleEx) { - m_pVehicleEx->bUsingSpecialColModel = false; - m_pVehicleEx = nil; - } - m_nVisibleMoney = 0; - m_nMoney = m_nVisibleMoney; - m_WBState = WBSTATE_PLAYING; - m_nWBTime = 0; - m_nTrafficMultiplier = 0; - m_fRoadDensity = 1.0f; - m_bInRemoteMode = false; - m_bUnusedTaxiThing = false; - m_nUnusedTaxiTimer = 0; - m_nCollectedPackages = 0; - m_nTotalPackages = 3; - m_nTimeLastHealthLoss = 0; - m_nTimeLastArmourLoss = 0; - m_nNextSexFrequencyUpdateTime = 0; - m_nNextSexMoneyUpdateTime = 0; - m_nSexFrequency = 0; - m_pHooker = nil; - m_nTimeTankShotGun = 0; - field_248 = 0; - m_nUpsideDownCounter = 0; - m_bInfiniteSprint = false; - m_bFastReload = false; - m_bGetOutOfJailFree = false; - m_bGetOutOfHospitalFree = false; - m_nPreviousTimeRewardedForExplosion = 0; - m_nExplosionsSinceLastReward = 0; +void +CPlayerInfo::Clear(void) +{ + m_pPed = nil; + m_pRemoteVehicle = nil; + if (m_pVehicleEx) { + m_pVehicleEx->bUsingSpecialColModel = false; + m_pVehicleEx = nil; + } + m_nVisibleMoney = 0; + m_nMoney = m_nVisibleMoney; + m_WBState = WBSTATE_PLAYING; + m_nWBTime = 0; + m_nTrafficMultiplier = 0; + m_fRoadDensity = 1.0f; + m_bInRemoteMode = false; + m_bUnusedTaxiThing = false; + m_nUnusedTaxiTimer = 0; + m_nCollectedPackages = 0; + m_nTotalPackages = 3; + m_nTimeLastHealthLoss = 0; + m_nTimeLastArmourLoss = 0; + m_nNextSexFrequencyUpdateTime = 0; + m_nNextSexMoneyUpdateTime = 0; + m_nSexFrequency = 0; + m_pHooker = nil; + m_nTimeTankShotGun = 0; + field_248 = 0; + m_nUpsideDownCounter = 0; + m_bInfiniteSprint = false; + m_bFastReload = false; + m_bGetOutOfJailFree = false; + m_bGetOutOfHospitalFree = false; + m_nPreviousTimeRewardedForExplosion = 0; + m_nExplosionsSinceLastReward = 0; } -void -CPlayerInfo::BlowUpRCBuggy(void) -{ - if (!m_pRemoteVehicle || m_pRemoteVehicle->bRemoveFromWorld) - return; - - CRemote::TakeRemoteControlledCarFromPlayer(); - m_pRemoteVehicle->BlowUpCar(FindPlayerPed()); -} - -void -CPlayerInfo::CancelPlayerEnteringCars(CVehicle *car) -{ - if (!car || car == m_pPed->m_pMyVehicle) { - if (m_pPed->EnteringCar()) - m_pPed->QuitEnteringCar(); - } - if (m_pPed->m_objective == OBJECTIVE_ENTER_CAR_AS_PASSENGER || m_pPed->m_objective == OBJECTIVE_ENTER_CAR_AS_DRIVER) - m_pPed->ClearObjective(); +void +CPlayerInfo::BlowUpRCBuggy(void) +{ + if (!m_pRemoteVehicle || m_pRemoteVehicle->bRemoveFromWorld) + return; + + CRemote::TakeRemoteControlledCarFromPlayer(); + m_pRemoteVehicle->BlowUpCar(FindPlayerPed()); } -void -CPlayerInfo::MakePlayerSafe(bool toggle) -{ - if (toggle) { - CTheScripts::ResetCountdownToMakePlayerUnsafe(); - m_pPed->m_pWanted->m_bIgnoredByEveryone = true; - CWorld::StopAllLawEnforcersInTheirTracks(); - CPad::GetPad(0)->DisablePlayerControls |= PLAYERCONTROL_DISABLED_20; - CPad::StopPadsShaking(); - m_pPed->bBulletProof = true; - m_pPed->bFireProof = true; - m_pPed->bCollisionProof = true; - m_pPed->bMeleeProof = true; - m_pPed->bOnlyDamagedByPlayer = true; - m_pPed->bExplosionProof = true; - m_pPed->m_bCanBeDamaged = false; - ((CPlayerPed*)m_pPed)->ClearAdrenaline(); - CancelPlayerEnteringCars(false); - gFireManager.ExtinguishPoint(GetPos(), 4000.0f); - CExplosion::RemoveAllExplosionsInArea(GetPos(), 4000.0f); - CProjectileInfo::RemoveAllProjectiles(); - CWorld::SetAllCarsCanBeDamaged(false); - CWorld::ExtinguishAllCarFiresInArea(GetPos(), 4000.0f); - CReplay::DisableReplays(); - - } else if (!CGame::playingIntro && !CTheScripts::IsCountdownToMakePlayerUnsafeOn()) { - m_pPed->m_pWanted->m_bIgnoredByEveryone = false; - CPad::GetPad(0)->DisablePlayerControls &= ~PLAYERCONTROL_DISABLED_20; - m_pPed->bBulletProof = false; - m_pPed->bFireProof = false; - m_pPed->bCollisionProof = false; - m_pPed->bMeleeProof = false; - m_pPed->bOnlyDamagedByPlayer = false; - m_pPed->bExplosionProof = false; - m_pPed->m_bCanBeDamaged = true; - CWorld::SetAllCarsCanBeDamaged(true); - CReplay::EnableReplays(); - } +void +CPlayerInfo::CancelPlayerEnteringCars(CVehicle *car) +{ + if (!car || car == m_pPed->m_pMyVehicle) { + if (m_pPed->EnteringCar()) + m_pPed->QuitEnteringCar(); + } + if (m_pPed->m_objective == OBJECTIVE_ENTER_CAR_AS_PASSENGER || m_pPed->m_objective == OBJECTIVE_ENTER_CAR_AS_DRIVER) + m_pPed->ClearObjective(); +} + +void +CPlayerInfo::MakePlayerSafe(bool toggle) +{ + if (toggle) { + CTheScripts::ResetCountdownToMakePlayerUnsafe(); + m_pPed->m_pWanted->m_bIgnoredByEveryone = true; + CWorld::StopAllLawEnforcersInTheirTracks(); + CPad::GetPad(0)->DisablePlayerControls |= PLAYERCONTROL_DISABLED_20; + CPad::StopPadsShaking(); + m_pPed->bBulletProof = true; + m_pPed->bFireProof = true; + m_pPed->bCollisionProof = true; + m_pPed->bMeleeProof = true; + m_pPed->bOnlyDamagedByPlayer = true; + m_pPed->bExplosionProof = true; + m_pPed->m_bCanBeDamaged = false; + ((CPlayerPed*)m_pPed)->ClearAdrenaline(); + CancelPlayerEnteringCars(false); + gFireManager.ExtinguishPoint(GetPos(), 4000.0f); + CExplosion::RemoveAllExplosionsInArea(GetPos(), 4000.0f); + CProjectileInfo::RemoveAllProjectiles(); + CWorld::SetAllCarsCanBeDamaged(false); + CWorld::ExtinguishAllCarFiresInArea(GetPos(), 4000.0f); + CReplay::DisableReplays(); + + } else if (!CGame::playingIntro && !CTheScripts::IsCountdownToMakePlayerUnsafeOn()) { + m_pPed->m_pWanted->m_bIgnoredByEveryone = false; + CPad::GetPad(0)->DisablePlayerControls &= ~PLAYERCONTROL_DISABLED_20; + m_pPed->bBulletProof = false; + m_pPed->bFireProof = false; + m_pPed->bCollisionProof = false; + m_pPed->bMeleeProof = false; + m_pPed->bOnlyDamagedByPlayer = false; + m_pPed->bExplosionProof = false; + m_pPed->m_bCanBeDamaged = true; + CWorld::SetAllCarsCanBeDamaged(true); + CReplay::EnableReplays(); + } } bool @@ -216,347 +216,347 @@ CPlayerInfo::IsRestartingAfterArrest() } // lastCloseness is passed to other calls of this function -void -CPlayerInfo::EvaluateCarPosition(CEntity *carToTest, CPed *player, float carBoundCentrePedDist, float *lastCloseness, CVehicle **closestCarOutput) -{ - // This dist used for determining the angle to face - CVector2D dist(carToTest->GetPosition() - player->GetPosition()); - float neededTurn = CGeneral::GetATanOfXY(player->GetForward().x, player->GetForward().y) - CGeneral::GetATanOfXY(dist.x, dist.y); - while (neededTurn >= PI) { - neededTurn -= 2 * PI; - } - - while (neededTurn < -PI) { - neededTurn += 2 * PI; - } - - // This dist used for evaluating cars' distances, weird... - // Accounts inverted needed turn (or needed turn in long way) and car dist. - float closeness = (1.0f - Abs(neededTurn) / TWOPI) * (10.0f - carBoundCentrePedDist); - if (closeness > *lastCloseness) { - *lastCloseness = closeness; - *closestCarOutput = (CVehicle*)carToTest; - } +void +CPlayerInfo::EvaluateCarPosition(CEntity *carToTest, CPed *player, float carBoundCentrePedDist, float *lastCloseness, CVehicle **closestCarOutput) +{ + // This dist used for determining the angle to face + CVector2D dist(carToTest->GetPosition() - player->GetPosition()); + float neededTurn = CGeneral::GetATanOfXY(player->GetForward().x, player->GetForward().y) - CGeneral::GetATanOfXY(dist.x, dist.y); + while (neededTurn >= PI) { + neededTurn -= 2 * PI; + } + + while (neededTurn < -PI) { + neededTurn += 2 * PI; + } + + // This dist used for evaluating cars' distances, weird... + // Accounts inverted needed turn (or needed turn in long way) and car dist. + float closeness = (1.0f - Abs(neededTurn) / TWOPI) * (10.0f - carBoundCentrePedDist); + if (closeness > *lastCloseness) { + *lastCloseness = closeness; + *closestCarOutput = (CVehicle*)carToTest; + } } // There is something unfinished in here... Sadly all IDBs we have have it unfinished. -void -CPlayerInfo::AwardMoneyForExplosion(CVehicle *wreckedCar) -{ - if (CTimer::GetTimeInMilliseconds() - m_nPreviousTimeRewardedForExplosion < 6000) - ++m_nExplosionsSinceLastReward; - else - m_nExplosionsSinceLastReward = 1; - - m_nPreviousTimeRewardedForExplosion = CTimer::GetTimeInMilliseconds(); - int award = wreckedCar->pHandling->nMonetaryValue * 0.002f; - sprintf(gString, "$%d", award); -#ifdef MONEY_MESSAGES - // This line is a leftover from PS2, I don't know what it was meant to be. - // CVector sth(TheCamera.GetPosition() * 4.0f); - - CMoneyMessages::RegisterOne(wreckedCar->GetPosition() + CVector(0.0f, 0.0f, 2.0f), gString, 0, 255, 0, 2.0f, 0.5f); -#endif - CWorld::Players[CWorld::PlayerInFocus].m_nMoney += award; - - for (int i = m_nExplosionsSinceLastReward; i > 1; --i) { - CGeneral::GetRandomNumber(); - CWorld::Players[CWorld::PlayerInFocus].m_nMoney += award; - } +void +CPlayerInfo::AwardMoneyForExplosion(CVehicle *wreckedCar) +{ + if (CTimer::GetTimeInMilliseconds() - m_nPreviousTimeRewardedForExplosion < 6000) + ++m_nExplosionsSinceLastReward; + else + m_nExplosionsSinceLastReward = 1; + + m_nPreviousTimeRewardedForExplosion = CTimer::GetTimeInMilliseconds(); + int award = wreckedCar->pHandling->nMonetaryValue * 0.002f; + sprintf(gString, "$%d", award); +#ifdef MONEY_MESSAGES + // This line is a leftover from PS2, I don't know what it was meant to be. + // CVector sth(TheCamera.GetPosition() * 4.0f); + + CMoneyMessages::RegisterOne(wreckedCar->GetPosition() + CVector(0.0f, 0.0f, 2.0f), gString, 0, 255, 0, 2.0f, 0.5f); +#endif + CWorld::Players[CWorld::PlayerInFocus].m_nMoney += award; + + for (int i = m_nExplosionsSinceLastReward; i > 1; --i) { + CGeneral::GetRandomNumber(); + CWorld::Players[CWorld::PlayerInFocus].m_nMoney += award; + } } -void -CPlayerInfo::SavePlayerInfo(uint8 *buf, uint32 *size) -{ - // Interesting - *size = sizeof(CPlayerInfo); - -INITSAVEBUF - WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_nMoney); - WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_WBState); - WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_nWBTime); - WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_nTrafficMultiplier); - WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_fRoadDensity); - WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_nVisibleMoney); - WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_nCollectedPackages); - WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_nTotalPackages); - WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_bInfiniteSprint); - WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_bFastReload); - WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_bGetOutOfJailFree); - WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_bGetOutOfHospitalFree); - for (int i = 0; i < sizeof(CWorld::Players[CWorld::PlayerInFocus].m_aPlayerName); i++) { - WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_aPlayerName[i]); - } -// Save struct is different -// VALIDATESAVEBUF(*size) +void +CPlayerInfo::SavePlayerInfo(uint8 *buf, uint32 *size) +{ + // Interesting + *size = sizeof(CPlayerInfo); + +INITSAVEBUF + WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_nMoney); + WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_WBState); + WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_nWBTime); + WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_nTrafficMultiplier); + WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_fRoadDensity); + WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_nVisibleMoney); + WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_nCollectedPackages); + WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_nTotalPackages); + WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_bInfiniteSprint); + WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_bFastReload); + WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_bGetOutOfJailFree); + WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_bGetOutOfHospitalFree); + for (int i = 0; i < sizeof(CWorld::Players[CWorld::PlayerInFocus].m_aPlayerName); i++) { + WriteSaveBuf(buf, CWorld::Players[CWorld::PlayerInFocus].m_aPlayerName[i]); + } +// Save struct is different +// VALIDATESAVEBUF(*size) } -void -CPlayerInfo::LoadPlayerInfo(uint8 *buf, uint32 size) -{ -INITSAVEBUF - CWorld::Players[CWorld::PlayerInFocus].m_nMoney = ReadSaveBuf(buf); - CWorld::Players[CWorld::PlayerInFocus].m_WBState = ReadSaveBuf(buf); - CWorld::Players[CWorld::PlayerInFocus].m_nWBTime = ReadSaveBuf(buf); - CWorld::Players[CWorld::PlayerInFocus].m_nTrafficMultiplier = ReadSaveBuf(buf); - CWorld::Players[CWorld::PlayerInFocus].m_fRoadDensity = ReadSaveBuf(buf); - CWorld::Players[CWorld::PlayerInFocus].m_nVisibleMoney = ReadSaveBuf(buf); - CWorld::Players[CWorld::PlayerInFocus].m_nCollectedPackages = ReadSaveBuf(buf); - CWorld::Players[CWorld::PlayerInFocus].m_nTotalPackages = ReadSaveBuf(buf); - CWorld::Players[CWorld::PlayerInFocus].m_bInfiniteSprint = ReadSaveBuf(buf); - CWorld::Players[CWorld::PlayerInFocus].m_bFastReload = ReadSaveBuf(buf); - CWorld::Players[CWorld::PlayerInFocus].m_bGetOutOfJailFree = ReadSaveBuf(buf); - CWorld::Players[CWorld::PlayerInFocus].m_bGetOutOfHospitalFree = ReadSaveBuf(buf); - for (int i = 0; i < sizeof(CWorld::Players[CWorld::PlayerInFocus].m_aPlayerName); i++) { - CWorld::Players[CWorld::PlayerInFocus].m_aPlayerName[i] = ReadSaveBuf(buf); - } -// Save struct is different -// VALIDATESAVEBUF(size) +void +CPlayerInfo::LoadPlayerInfo(uint8 *buf, uint32 size) +{ +INITSAVEBUF + CWorld::Players[CWorld::PlayerInFocus].m_nMoney = ReadSaveBuf(buf); + CWorld::Players[CWorld::PlayerInFocus].m_WBState = ReadSaveBuf(buf); + CWorld::Players[CWorld::PlayerInFocus].m_nWBTime = ReadSaveBuf(buf); + CWorld::Players[CWorld::PlayerInFocus].m_nTrafficMultiplier = ReadSaveBuf(buf); + CWorld::Players[CWorld::PlayerInFocus].m_fRoadDensity = ReadSaveBuf(buf); + CWorld::Players[CWorld::PlayerInFocus].m_nVisibleMoney = ReadSaveBuf(buf); + CWorld::Players[CWorld::PlayerInFocus].m_nCollectedPackages = ReadSaveBuf(buf); + CWorld::Players[CWorld::PlayerInFocus].m_nTotalPackages = ReadSaveBuf(buf); + CWorld::Players[CWorld::PlayerInFocus].m_bInfiniteSprint = ReadSaveBuf(buf); + CWorld::Players[CWorld::PlayerInFocus].m_bFastReload = ReadSaveBuf(buf); + CWorld::Players[CWorld::PlayerInFocus].m_bGetOutOfJailFree = ReadSaveBuf(buf); + CWorld::Players[CWorld::PlayerInFocus].m_bGetOutOfHospitalFree = ReadSaveBuf(buf); + for (int i = 0; i < sizeof(CWorld::Players[CWorld::PlayerInFocus].m_aPlayerName); i++) { + CWorld::Players[CWorld::PlayerInFocus].m_aPlayerName[i] = ReadSaveBuf(buf); + } +// Save struct is different +// VALIDATESAVEBUF(size) } -void -CPlayerInfo::FindClosestCarSectorList(CPtrList& carList, CPed* ped, float unk1, float unk2, float unk3, float unk4, float* lastCloseness, CVehicle** closestCarOutput) -{ - for (CPtrNode* node = carList.first; node; node = node->next) { - CVehicle *car = (CVehicle*)node->item; - if(car->m_scanCode != CWorld::GetCurrentScanCode()) { - if (!car->bUsesCollision || !car->IsVehicle()) - continue; - - car->m_scanCode = CWorld::GetCurrentScanCode(); - if (car->m_status != STATUS_WRECKED && car->m_status != STATUS_TRAIN_MOVING - && (car->GetUp().z > 0.3f || (car->IsVehicle() && ((CVehicle*)car)->m_vehType == VEHICLE_TYPE_BIKE))) { - CVector carCentre = car->GetBoundCentre(); - - if (Abs(ped->GetPosition().z - carCentre.z) < 2.0f) { - float dist = (ped->GetPosition() - carCentre).Magnitude2D(); - if (dist <= 10.0f && !CCranes::IsThisCarBeingCarriedByAnyCrane(car)) { - EvaluateCarPosition(car, ped, dist, lastCloseness, closestCarOutput); - } - } - } - } - } +void +CPlayerInfo::FindClosestCarSectorList(CPtrList& carList, CPed* ped, float unk1, float unk2, float unk3, float unk4, float* lastCloseness, CVehicle** closestCarOutput) +{ + for (CPtrNode* node = carList.first; node; node = node->next) { + CVehicle *car = (CVehicle*)node->item; + if(car->m_scanCode != CWorld::GetCurrentScanCode()) { + if (!car->bUsesCollision || !car->IsVehicle()) + continue; + + car->m_scanCode = CWorld::GetCurrentScanCode(); + if (car->m_status != STATUS_WRECKED && car->m_status != STATUS_TRAIN_MOVING + && (car->GetUp().z > 0.3f || (car->IsVehicle() && ((CVehicle*)car)->m_vehType == VEHICLE_TYPE_BIKE))) { + CVector carCentre = car->GetBoundCentre(); + + if (Abs(ped->GetPosition().z - carCentre.z) < 2.0f) { + float dist = (ped->GetPosition() - carCentre).Magnitude2D(); + if (dist <= 10.0f && !CCranes::IsThisCarBeingCarriedByAnyCrane(car)) { + EvaluateCarPosition(car, ped, dist, lastCloseness, closestCarOutput); + } + } + } + } + } } -void -CPlayerInfo::Process(void) -{ - // Unused taxi feature. Gives you a dollar for every second with a passenger. Can be toggled via 0x29A opcode. - bool startTaxiTimer = true; - if (m_bUnusedTaxiThing && m_pPed->bInVehicle) { - CVehicle *veh = m_pPed->m_pMyVehicle; - if ((veh->m_modelIndex == MI_TAXI || veh->m_modelIndex == MI_CABBIE || veh->m_modelIndex == MI_BORGNINE) - && veh->pDriver == m_pPed && veh->m_nNumPassengers != 0) { - for (uint32 timePassed = CTimer::GetTimeInMilliseconds() - m_nUnusedTaxiTimer; timePassed >= 1000; m_nUnusedTaxiTimer += 1000) { - timePassed -= 1000; - ++m_nMoney; - } - startTaxiTimer = false; - } - } - if (startTaxiTimer) - m_nUnusedTaxiTimer = CTimer::GetTimeInMilliseconds(); - - // The effect that makes money counter does while earning/losing money - if (m_nVisibleMoney != m_nMoney) { - int diff = m_nMoney - m_nVisibleMoney; - int diffAbs = Abs(diff); - int changeBy; - - if (diffAbs > 100000) - changeBy = 12345; - else if (diffAbs > 10000) - changeBy = 1234; - else if (diffAbs > 1000) - changeBy = 123; - else if (diffAbs > 50) - changeBy = 42; - else - changeBy = 1; - - if (diff < 0) - m_nVisibleMoney -= changeBy; - else - m_nVisibleMoney += changeBy; - } - - if (!(CTimer::GetFrameCounter() & 15)) { - CVector2D playerPos = m_pPed->bInVehicle ? m_pPed->m_pMyVehicle->GetPosition() : m_pPed->GetPosition(); - m_fRoadDensity = ThePaths.CalcRoadDensity(playerPos.x, playerPos.y); - } - - m_fRoadDensity = clamp(m_fRoadDensity, 0.4f, 1.45f); - - // Because vehicle enter/exit use same key binding. - bool enterOrExitVeh; - if (m_pPed->bVehExitWillBeInstant && m_pPed->bInVehicle) - enterOrExitVeh = CPad::GetPad(0)->ExitVehicleJustDown(); - else - enterOrExitVeh = CPad::GetPad(0)->GetExitVehicle(); - - if (enterOrExitVeh && m_pPed->m_nPedState != PED_SNIPER_MODE && m_pPed->m_nPedState != PED_ROCKET_ODE) { - if (m_pPed->bInVehicle) { - if (!m_pRemoteVehicle) { - CEntity *surfaceBelowVeh = m_pPed->m_pMyVehicle->m_pCurGroundEntity; - if (!surfaceBelowVeh || !CBridge::ThisIsABridgeObjectMovingUp(surfaceBelowVeh->m_modelIndex)) { - CVehicle *veh = m_pPed->m_pMyVehicle; - if (!veh->IsBoat() || veh->m_nDoorLock == CARLOCK_LOCKED_PLAYER_INSIDE) { - - // This condition will always return true, else block was probably WIP Miami code. - if (veh->m_vehType != VEHICLE_TYPE_BIKE || veh->m_nDoorLock == CARLOCK_LOCKED_PLAYER_INSIDE) { - if (veh->m_status != STATUS_WRECKED && veh->m_status != STATUS_TRAIN_MOVING && veh->m_nDoorLock != CARLOCK_LOCKED_PLAYER_INSIDE) { - if (veh->m_vecMoveSpeed.Magnitude() < 0.17f && CTimer::GetTimeScale() >= 0.5f && !veh->bIsInWater) { - m_pPed->SetObjective(OBJECTIVE_LEAVE_VEHICLE, veh); - } - } - } else { - CVector sth = 0.7f * veh->GetRight() + veh->GetPosition(); - bool found = false; - float groundZ = CWorld::FindGroundZFor3DCoord(sth.x, sth.y, 2.0f + sth.z, &found); - - if (found) - sth.z = 1.0f + groundZ; - m_pPed->m_nPedState = PED_IDLE; - m_pPed->SetMoveState(PEDMOVE_STILL); - CPed::PedSetOutCarCB(0, m_pPed); - CAnimManager::BlendAnimation(m_pPed->GetClump(), m_pPed->m_animGroup, ANIM_IDLE_STANCE, 100.0f); - CAnimManager::BlendAnimation(m_pPed->GetClump(), ASSOCGRP_STD, ANIM_FALL_LAND, 100.0f); - m_pPed->GetPosition() = sth; - m_pPed->SetMoveState(PEDMOVE_STILL); - m_pPed->m_vecMoveSpeed = veh->m_vecMoveSpeed; - } - } else { - // The code in here was under CPed::SetExitBoat in VC, did the same for here. - m_pPed->SetExitBoat(veh); - m_pPed->bTryingToReachDryLand = true; - } - } - } - } else { - // Enter vehicle - if (CPad::GetPad(0)->ExitVehicleJustDown()) { - bool weAreOnBoat = false; - float lastCloseness = 0.0f; - CVehicle *carBelow = nil; - CEntity *surfaceBelow = m_pPed->m_pCurrentPhysSurface; - if (surfaceBelow && surfaceBelow->IsVehicle()) { - carBelow = (CVehicle*)surfaceBelow; - if (carBelow->IsBoat()) { - weAreOnBoat = true; - m_pPed->bOnBoat = true; -#ifdef VC_PED_PORTS - if (carBelow->m_status != STATUS_WRECKED && carBelow->GetUp().z > 0.3f) -#else - if (carBelow->m_status != STATUS_WRECKED) -#endif - m_pPed->SetSeekBoatPosition(carBelow); - } - } - // Find closest car - if (!weAreOnBoat) { - float minX = m_pPed->GetPosition().x - 10.0f; - float maxX = 10.0f + m_pPed->GetPosition().x; - float minY = m_pPed->GetPosition().y - 10.0f; - float maxY = 10.0f + m_pPed->GetPosition().y; - - int minXSector = CWorld::GetSectorIndexX(minX); - if (minXSector < 0) minXSector = 0; - int minYSector = CWorld::GetSectorIndexY(minY); - if (minYSector < 0) minYSector = 0; - int maxXSector = CWorld::GetSectorIndexX(maxX); - if (maxXSector > NUMSECTORS_X - 1) maxXSector = NUMSECTORS_X - 1; - int maxYSector = CWorld::GetSectorIndexY(maxY); - if (maxYSector > NUMSECTORS_Y - 1) maxYSector = NUMSECTORS_Y - 1; - - CWorld::AdvanceCurrentScanCode(); - - for (int curY = minYSector; curY <= maxYSector; curY++) { - for (int curX = minXSector; curX <= maxXSector; curX++) { - CSector *sector = CWorld::GetSector(curX, curY); - FindClosestCarSectorList(sector->m_lists[ENTITYLIST_VEHICLES], m_pPed, - minX, minY, maxX, maxY, &lastCloseness, &carBelow); - FindClosestCarSectorList(sector->m_lists[ENTITYLIST_VEHICLES_OVERLAP], m_pPed, - minX, minY, maxX, maxY, &lastCloseness, &carBelow); - } - } - } - // carBelow is now closest vehicle - if (carBelow && !weAreOnBoat) { - if (carBelow->m_status == STATUS_TRAIN_NOT_MOVING) { - m_pPed->SetObjective(OBJECTIVE_ENTER_CAR_AS_PASSENGER, carBelow); - } else if (carBelow->IsBoat()) { - if (!carBelow->pDriver) { - m_pPed->m_vehEnterType = 0; - m_pPed->SetEnterCar(carBelow, m_pPed->m_vehEnterType); - } - } else { - m_pPed->SetObjective(OBJECTIVE_ENTER_CAR_AS_DRIVER, carBelow); - } - } - } - } - } - if (m_bInRemoteMode) { - uint32 timeWithoutRemoteCar = CTimer::GetTimeInMilliseconds() - m_nTimeLostRemoteCar; - if (CTimer::GetPreviousTimeInMilliseconds() - m_nTimeLostRemoteCar < 1000 && timeWithoutRemoteCar >= 1000 && m_WBState == WBSTATE_PLAYING) { - TheCamera.SetFadeColour(0, 0, 0); - TheCamera.Fade(1.0f, 0); - } - if (timeWithoutRemoteCar > 2000) { - if (m_WBState == WBSTATE_PLAYING) { - TheCamera.RestoreWithJumpCut(); - TheCamera.SetFadeColour(0, 0, 0); - TheCamera.Fade(1.0f, 1); - TheCamera.Process(); - CTimer::Stop(); - CCullZones::ForceCullZoneCoors(TheCamera.GetPosition()); - CRenderer::RequestObjectsInFrustum(); - CStreaming::LoadAllRequestedModels(false); - CTimer::Update(); - } - m_bInRemoteMode = false; - CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle = nil; - if (FindPlayerVehicle()) { - FindPlayerVehicle()->m_status = STATUS_PLAYER; - } - } - } - if (!(CTimer::GetFrameCounter() & 31)) { - CVehicle *veh = FindPlayerVehicle(); - if (veh && m_pPed->bInVehicle && veh->GetUp().z < 0.0f - && veh->m_vecMoveSpeed.Magnitude() < 0.05f && veh->IsCar() && !veh->bIsInWater) { - - if (veh->GetUp().z < -0.5f) { - m_nUpsideDownCounter += 2; - - } else { - m_nUpsideDownCounter++; - } - } else { - m_nUpsideDownCounter = 0; - } - - if (m_nUpsideDownCounter > 6 && veh->bCanBeDamaged) { - veh->m_fHealth = 249.0f < veh->m_fHealth ? 249.0f : veh->m_fHealth; - if (veh->IsCar()) { - CAutomobile* car = (CAutomobile*)veh; - car->Damage.SetEngineStatus(225); - car->m_pSetOnFireEntity = nil; - } - } - } - if (FindPlayerVehicle()) { - CVehicle *veh = FindPlayerVehicle(); - veh->m_nZoneLevel = -1; - for (int i = 0; i < ARRAY_SIZE(veh->pPassengers); i++) { - if (veh->pPassengers[i]) - veh->pPassengers[i]->m_nZoneLevel = 0; - } - CStats::DistanceTravelledInVehicle += veh->m_fDistanceTravelled; - } else { - CStats::DistanceTravelledOnFoot += FindPlayerPed()->m_fDistanceTravelled; - } +void +CPlayerInfo::Process(void) +{ + // Unused taxi feature. Gives you a dollar for every second with a passenger. Can be toggled via 0x29A opcode. + bool startTaxiTimer = true; + if (m_bUnusedTaxiThing && m_pPed->bInVehicle) { + CVehicle *veh = m_pPed->m_pMyVehicle; + if ((veh->m_modelIndex == MI_TAXI || veh->m_modelIndex == MI_CABBIE || veh->m_modelIndex == MI_BORGNINE) + && veh->pDriver == m_pPed && veh->m_nNumPassengers != 0) { + for (uint32 timePassed = CTimer::GetTimeInMilliseconds() - m_nUnusedTaxiTimer; timePassed >= 1000; m_nUnusedTaxiTimer += 1000) { + timePassed -= 1000; + ++m_nMoney; + } + startTaxiTimer = false; + } + } + if (startTaxiTimer) + m_nUnusedTaxiTimer = CTimer::GetTimeInMilliseconds(); + + // The effect that makes money counter does while earning/losing money + if (m_nVisibleMoney != m_nMoney) { + int diff = m_nMoney - m_nVisibleMoney; + int diffAbs = Abs(diff); + int changeBy; + + if (diffAbs > 100000) + changeBy = 12345; + else if (diffAbs > 10000) + changeBy = 1234; + else if (diffAbs > 1000) + changeBy = 123; + else if (diffAbs > 50) + changeBy = 42; + else + changeBy = 1; + + if (diff < 0) + m_nVisibleMoney -= changeBy; + else + m_nVisibleMoney += changeBy; + } + + if (!(CTimer::GetFrameCounter() & 15)) { + CVector2D playerPos = m_pPed->bInVehicle ? m_pPed->m_pMyVehicle->GetPosition() : m_pPed->GetPosition(); + m_fRoadDensity = ThePaths.CalcRoadDensity(playerPos.x, playerPos.y); + } + + m_fRoadDensity = clamp(m_fRoadDensity, 0.4f, 1.45f); + + // Because vehicle enter/exit use same key binding. + bool enterOrExitVeh; + if (m_pPed->bVehExitWillBeInstant && m_pPed->bInVehicle) + enterOrExitVeh = CPad::GetPad(0)->ExitVehicleJustDown(); + else + enterOrExitVeh = CPad::GetPad(0)->GetExitVehicle(); + + if (enterOrExitVeh && m_pPed->m_nPedState != PED_SNIPER_MODE && m_pPed->m_nPedState != PED_ROCKET_ODE) { + if (m_pPed->bInVehicle) { + if (!m_pRemoteVehicle) { + CEntity *surfaceBelowVeh = m_pPed->m_pMyVehicle->m_pCurGroundEntity; + if (!surfaceBelowVeh || !CBridge::ThisIsABridgeObjectMovingUp(surfaceBelowVeh->m_modelIndex)) { + CVehicle *veh = m_pPed->m_pMyVehicle; + if (!veh->IsBoat() || veh->m_nDoorLock == CARLOCK_LOCKED_PLAYER_INSIDE) { + + // This condition will always return true, else block was probably WIP Miami code. + if (veh->m_vehType != VEHICLE_TYPE_BIKE || veh->m_nDoorLock == CARLOCK_LOCKED_PLAYER_INSIDE) { + if (veh->m_status != STATUS_WRECKED && veh->m_status != STATUS_TRAIN_MOVING && veh->m_nDoorLock != CARLOCK_LOCKED_PLAYER_INSIDE) { + if (veh->m_vecMoveSpeed.Magnitude() < 0.17f && CTimer::GetTimeScale() >= 0.5f && !veh->bIsInWater) { + m_pPed->SetObjective(OBJECTIVE_LEAVE_VEHICLE, veh); + } + } + } else { + CVector sth = 0.7f * veh->GetRight() + veh->GetPosition(); + bool found = false; + float groundZ = CWorld::FindGroundZFor3DCoord(sth.x, sth.y, 2.0f + sth.z, &found); + + if (found) + sth.z = 1.0f + groundZ; + m_pPed->m_nPedState = PED_IDLE; + m_pPed->SetMoveState(PEDMOVE_STILL); + CPed::PedSetOutCarCB(0, m_pPed); + CAnimManager::BlendAnimation(m_pPed->GetClump(), m_pPed->m_animGroup, ANIM_IDLE_STANCE, 100.0f); + CAnimManager::BlendAnimation(m_pPed->GetClump(), ASSOCGRP_STD, ANIM_FALL_LAND, 100.0f); + m_pPed->GetPosition() = sth; + m_pPed->SetMoveState(PEDMOVE_STILL); + m_pPed->m_vecMoveSpeed = veh->m_vecMoveSpeed; + } + } else { + // The code in here was under CPed::SetExitBoat in VC, did the same for here. + m_pPed->SetExitBoat(veh); + m_pPed->bTryingToReachDryLand = true; + } + } + } + } else { + // Enter vehicle + if (CPad::GetPad(0)->ExitVehicleJustDown()) { + bool weAreOnBoat = false; + float lastCloseness = 0.0f; + CVehicle *carBelow = nil; + CEntity *surfaceBelow = m_pPed->m_pCurrentPhysSurface; + if (surfaceBelow && surfaceBelow->IsVehicle()) { + carBelow = (CVehicle*)surfaceBelow; + if (carBelow->IsBoat()) { + weAreOnBoat = true; + m_pPed->bOnBoat = true; +#ifdef VC_PED_PORTS + if (carBelow->m_status != STATUS_WRECKED && carBelow->GetUp().z > 0.3f) +#else + if (carBelow->m_status != STATUS_WRECKED) +#endif + m_pPed->SetSeekBoatPosition(carBelow); + } + } + // Find closest car + if (!weAreOnBoat) { + float minX = m_pPed->GetPosition().x - 10.0f; + float maxX = 10.0f + m_pPed->GetPosition().x; + float minY = m_pPed->GetPosition().y - 10.0f; + float maxY = 10.0f + m_pPed->GetPosition().y; + + int minXSector = CWorld::GetSectorIndexX(minX); + if (minXSector < 0) minXSector = 0; + int minYSector = CWorld::GetSectorIndexY(minY); + if (minYSector < 0) minYSector = 0; + int maxXSector = CWorld::GetSectorIndexX(maxX); + if (maxXSector > NUMSECTORS_X - 1) maxXSector = NUMSECTORS_X - 1; + int maxYSector = CWorld::GetSectorIndexY(maxY); + if (maxYSector > NUMSECTORS_Y - 1) maxYSector = NUMSECTORS_Y - 1; + + CWorld::AdvanceCurrentScanCode(); + + for (int curY = minYSector; curY <= maxYSector; curY++) { + for (int curX = minXSector; curX <= maxXSector; curX++) { + CSector *sector = CWorld::GetSector(curX, curY); + FindClosestCarSectorList(sector->m_lists[ENTITYLIST_VEHICLES], m_pPed, + minX, minY, maxX, maxY, &lastCloseness, &carBelow); + FindClosestCarSectorList(sector->m_lists[ENTITYLIST_VEHICLES_OVERLAP], m_pPed, + minX, minY, maxX, maxY, &lastCloseness, &carBelow); + } + } + } + // carBelow is now closest vehicle + if (carBelow && !weAreOnBoat) { + if (carBelow->m_status == STATUS_TRAIN_NOT_MOVING) { + m_pPed->SetObjective(OBJECTIVE_ENTER_CAR_AS_PASSENGER, carBelow); + } else if (carBelow->IsBoat()) { + if (!carBelow->pDriver) { + m_pPed->m_vehEnterType = 0; + m_pPed->SetEnterCar(carBelow, m_pPed->m_vehEnterType); + } + } else { + m_pPed->SetObjective(OBJECTIVE_ENTER_CAR_AS_DRIVER, carBelow); + } + } + } + } + } + if (m_bInRemoteMode) { + uint32 timeWithoutRemoteCar = CTimer::GetTimeInMilliseconds() - m_nTimeLostRemoteCar; + if (CTimer::GetPreviousTimeInMilliseconds() - m_nTimeLostRemoteCar < 1000 && timeWithoutRemoteCar >= 1000 && m_WBState == WBSTATE_PLAYING) { + TheCamera.SetFadeColour(0, 0, 0); + TheCamera.Fade(1.0f, 0); + } + if (timeWithoutRemoteCar > 2000) { + if (m_WBState == WBSTATE_PLAYING) { + TheCamera.RestoreWithJumpCut(); + TheCamera.SetFadeColour(0, 0, 0); + TheCamera.Fade(1.0f, 1); + TheCamera.Process(); + CTimer::Stop(); + CCullZones::ForceCullZoneCoors(TheCamera.GetPosition()); + CRenderer::RequestObjectsInFrustum(); + CStreaming::LoadAllRequestedModels(false); + CTimer::Update(); + } + m_bInRemoteMode = false; + CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle = nil; + if (FindPlayerVehicle()) { + FindPlayerVehicle()->m_status = STATUS_PLAYER; + } + } + } + if (!(CTimer::GetFrameCounter() & 31)) { + CVehicle *veh = FindPlayerVehicle(); + if (veh && m_pPed->bInVehicle && veh->GetUp().z < 0.0f + && veh->m_vecMoveSpeed.Magnitude() < 0.05f && veh->IsCar() && !veh->bIsInWater) { + + if (veh->GetUp().z < -0.5f) { + m_nUpsideDownCounter += 2; + + } else { + m_nUpsideDownCounter++; + } + } else { + m_nUpsideDownCounter = 0; + } + + if (m_nUpsideDownCounter > 6 && veh->bCanBeDamaged) { + veh->m_fHealth = 249.0f < veh->m_fHealth ? 249.0f : veh->m_fHealth; + if (veh->IsCar()) { + CAutomobile* car = (CAutomobile*)veh; + car->Damage.SetEngineStatus(225); + car->m_pSetOnFireEntity = nil; + } + } + } + if (FindPlayerVehicle()) { + CVehicle *veh = FindPlayerVehicle(); + veh->m_nZoneLevel = -1; + for (int i = 0; i < ARRAY_SIZE(veh->pPassengers); i++) { + if (veh->pPassengers[i]) + veh->pPassengers[i]->m_nZoneLevel = 0; + } + CStats::DistanceTravelledInVehicle += veh->m_fDistanceTravelled; + } else { + CStats::DistanceTravelledOnFoot += FindPlayerPed()->m_fDistanceTravelled; + } } STARTPATCHES diff --git a/src/core/PlayerSkin.cpp b/src/core/PlayerSkin.cpp index 28879918..62bcd07d 100644 --- a/src/core/PlayerSkin.cpp +++ b/src/core/PlayerSkin.cpp @@ -1,171 +1,171 @@ -#include "common.h" -#include "patcher.h" -#include "main.h" -#include "PlayerSkin.h" -#include "TxdStore.h" -#include "rtbmp.h" -#include "ClumpModelInfo.h" -#include "VisibilityPlugins.h" -#include "World.h" -#include "PlayerInfo.h" -#include "CdStream.h" -#include "FileMgr.h" -#include "Directory.h" -#include "RwHelper.h" -#include "Timer.h" -#include "Lights.h" - -int CPlayerSkin::m_txdSlot; - -void -FindPlayerDff(uint32 &offset, uint32 &size) -{ - int file; - CDirectory::DirectoryInfo info; - - file = CFileMgr::OpenFile("models\\gta3.dir", "rb"); - - do { - if (!CFileMgr::Read(file, (char*)&info, sizeof(CDirectory::DirectoryInfo))) - return; - } while (strcasecmp("player.dff", info.name) != 0); - - offset = info.offset; - size = info.size; -} - -void -LoadPlayerDff(void) -{ - RwStream *stream; - RwMemory mem; - uint32 offset, size; - uint8 *buffer; - bool streamWasAdded = false; - - if (CdStreamGetNumImages() == 0) { - CdStreamAddImage("models\\gta3.img"); - streamWasAdded = true; - } - - FindPlayerDff(offset, size); - buffer = (uint8*)RwMallocAlign(size << 11, 2048); - CdStreamRead(0, buffer, offset, size); - CdStreamSync(0); - - mem.start = buffer; - mem.length = size << 11; - stream = RwStreamOpen(rwSTREAMMEMORY, rwSTREAMREAD, &mem); - - if (RwStreamFindChunk(stream, rwID_CLUMP, nil, nil)) - gpPlayerClump = RpClumpStreamRead(stream); - - RwStreamClose(stream, &mem); - RwFreeAlign(buffer); - - if (streamWasAdded) - CdStreamRemoveImages(); -} - -void -CPlayerSkin::Initialise(void) -{ - m_txdSlot = CTxdStore::AddTxdSlot("skin"); - CTxdStore::Create(m_txdSlot); - CTxdStore::AddRef(m_txdSlot); -} - -void -CPlayerSkin::Shutdown(void) -{ - CTxdStore::RemoveTxdSlot(m_txdSlot); -} - -RwTexture * -CPlayerSkin::GetSkinTexture(const char *texName) -{ - RwTexture *tex; - RwRaster *raster; - int32 width, height, depth, format; - - CTxdStore::PushCurrentTxd(); - CTxdStore::SetCurrentTxd(m_txdSlot); - tex = RwTextureRead(texName, NULL); - CTxdStore::PopCurrentTxd(); - if (tex) return tex; - - if (strcmp(DEFAULT_SKIN_NAME, texName) == 0) - sprintf(gString, "models\\generic\\player.bmp"); - else - sprintf(gString, "skins\\%s.bmp", texName); - - if (RwImage *image = RtBMPImageRead(gString)) { - RwImageFindRasterFormat(image, rwRASTERTYPETEXTURE, &width, &height, &depth, &format); - raster = RwRasterCreate(width, height, depth, format); - RwRasterSetFromImage(raster, image); - - tex = RwTextureCreate(raster); - RwTextureSetName(tex, texName); -#ifdef FIX_BUGS - RwTextureSetFilterMode(tex, rwFILTERLINEAR); // filtering bugfix from VC -#endif - RwTexDictionaryAddTexture(CTxdStore::GetSlot(m_txdSlot)->texDict, tex); - - RwImageDestroy(image); - } - return tex; -} - -void -CPlayerSkin::BeginFrontendSkinEdit(void) -{ - LoadPlayerDff(); - RpClumpForAllAtomics(gpPlayerClump, CClumpModelInfo::SetAtomicRendererCB, CVisibilityPlugins::RenderPlayerCB); - CWorld::Players[0].LoadPlayerSkin(); - gOldFov = CDraw::GetFOV(); - CDraw::SetFOV(30.0f); -} - -void -CPlayerSkin::EndFrontendSkinEdit(void) -{ - RpClumpDestroy(gpPlayerClump); - gpPlayerClump = NULL; - CDraw::SetFOV(gOldFov); -} - -void -CPlayerSkin::RenderFrontendSkinEdit(void) -{ - static float rotation = 0.0f; - RwRGBAReal AmbientColor = { 0.65f, 0.65f, 0.65f, 1.0f }; - RwV3d pos = { 1.35f, 0.35f, 7.725f }; - const RwV3d axis1 = { 1.0f, 0.0f, 0.0f }; - const RwV3d axis2 = { 0.0f, 0.0f, 1.0f }; - static uint32 LastFlash = 0; - - RwFrame *frame = RpClumpGetFrame(gpPlayerClump); - - if (CTimer::GetTimeInMillisecondsPauseMode() - LastFlash > 7) { - rotation += 2.0f; - if (rotation > 360.0f) - rotation -= 360.0f; - LastFlash = CTimer::GetTimeInMillisecondsPauseMode(); - } - RwFrameTransform(frame, RwFrameGetMatrix(RwCameraGetFrame(Scene.camera)), rwCOMBINEREPLACE); - RwFrameTranslate(frame, &pos, rwCOMBINEPRECONCAT); - RwFrameRotate(frame, &axis1, -90.0f, rwCOMBINEPRECONCAT); - RwFrameRotate(frame, &axis2, rotation, rwCOMBINEPRECONCAT); - RwFrameUpdateObjects(frame); - SetAmbientColours(&AmbientColor); - RpClumpRender(gpPlayerClump); -} - -STARTPATCHES -InjectHook(0x59B9B0, &CPlayerSkin::Initialise, PATCH_JUMP); -InjectHook(0x59B9E0, &CPlayerSkin::Shutdown, PATCH_JUMP); -InjectHook(0x59B9F0, &CPlayerSkin::GetSkinTexture, PATCH_JUMP); -InjectHook(0x59BC70, &CPlayerSkin::BeginFrontendSkinEdit, PATCH_JUMP); -InjectHook(0x59BCB0, &CPlayerSkin::EndFrontendSkinEdit, PATCH_JUMP); -InjectHook(0x59BCE0, &CPlayerSkin::RenderFrontendSkinEdit, PATCH_JUMP); +#include "common.h" +#include "patcher.h" +#include "main.h" +#include "PlayerSkin.h" +#include "TxdStore.h" +#include "rtbmp.h" +#include "ClumpModelInfo.h" +#include "VisibilityPlugins.h" +#include "World.h" +#include "PlayerInfo.h" +#include "CdStream.h" +#include "FileMgr.h" +#include "Directory.h" +#include "RwHelper.h" +#include "Timer.h" +#include "Lights.h" + +int CPlayerSkin::m_txdSlot; + +void +FindPlayerDff(uint32 &offset, uint32 &size) +{ + int file; + CDirectory::DirectoryInfo info; + + file = CFileMgr::OpenFile("models\\gta3.dir", "rb"); + + do { + if (!CFileMgr::Read(file, (char*)&info, sizeof(CDirectory::DirectoryInfo))) + return; + } while (strcasecmp("player.dff", info.name) != 0); + + offset = info.offset; + size = info.size; +} + +void +LoadPlayerDff(void) +{ + RwStream *stream; + RwMemory mem; + uint32 offset, size; + uint8 *buffer; + bool streamWasAdded = false; + + if (CdStreamGetNumImages() == 0) { + CdStreamAddImage("models\\gta3.img"); + streamWasAdded = true; + } + + FindPlayerDff(offset, size); + buffer = (uint8*)RwMallocAlign(size << 11, 2048); + CdStreamRead(0, buffer, offset, size); + CdStreamSync(0); + + mem.start = buffer; + mem.length = size << 11; + stream = RwStreamOpen(rwSTREAMMEMORY, rwSTREAMREAD, &mem); + + if (RwStreamFindChunk(stream, rwID_CLUMP, nil, nil)) + gpPlayerClump = RpClumpStreamRead(stream); + + RwStreamClose(stream, &mem); + RwFreeAlign(buffer); + + if (streamWasAdded) + CdStreamRemoveImages(); +} + +void +CPlayerSkin::Initialise(void) +{ + m_txdSlot = CTxdStore::AddTxdSlot("skin"); + CTxdStore::Create(m_txdSlot); + CTxdStore::AddRef(m_txdSlot); +} + +void +CPlayerSkin::Shutdown(void) +{ + CTxdStore::RemoveTxdSlot(m_txdSlot); +} + +RwTexture * +CPlayerSkin::GetSkinTexture(const char *texName) +{ + RwTexture *tex; + RwRaster *raster; + int32 width, height, depth, format; + + CTxdStore::PushCurrentTxd(); + CTxdStore::SetCurrentTxd(m_txdSlot); + tex = RwTextureRead(texName, NULL); + CTxdStore::PopCurrentTxd(); + if (tex) return tex; + + if (strcmp(DEFAULT_SKIN_NAME, texName) == 0) + sprintf(gString, "models\\generic\\player.bmp"); + else + sprintf(gString, "skins\\%s.bmp", texName); + + if (RwImage *image = RtBMPImageRead(gString)) { + RwImageFindRasterFormat(image, rwRASTERTYPETEXTURE, &width, &height, &depth, &format); + raster = RwRasterCreate(width, height, depth, format); + RwRasterSetFromImage(raster, image); + + tex = RwTextureCreate(raster); + RwTextureSetName(tex, texName); +#ifdef FIX_BUGS + RwTextureSetFilterMode(tex, rwFILTERLINEAR); // filtering bugfix from VC +#endif + RwTexDictionaryAddTexture(CTxdStore::GetSlot(m_txdSlot)->texDict, tex); + + RwImageDestroy(image); + } + return tex; +} + +void +CPlayerSkin::BeginFrontendSkinEdit(void) +{ + LoadPlayerDff(); + RpClumpForAllAtomics(gpPlayerClump, CClumpModelInfo::SetAtomicRendererCB, CVisibilityPlugins::RenderPlayerCB); + CWorld::Players[0].LoadPlayerSkin(); + gOldFov = CDraw::GetFOV(); + CDraw::SetFOV(30.0f); +} + +void +CPlayerSkin::EndFrontendSkinEdit(void) +{ + RpClumpDestroy(gpPlayerClump); + gpPlayerClump = NULL; + CDraw::SetFOV(gOldFov); +} + +void +CPlayerSkin::RenderFrontendSkinEdit(void) +{ + static float rotation = 0.0f; + RwRGBAReal AmbientColor = { 0.65f, 0.65f, 0.65f, 1.0f }; + RwV3d pos = { 1.35f, 0.35f, 7.725f }; + const RwV3d axis1 = { 1.0f, 0.0f, 0.0f }; + const RwV3d axis2 = { 0.0f, 0.0f, 1.0f }; + static uint32 LastFlash = 0; + + RwFrame *frame = RpClumpGetFrame(gpPlayerClump); + + if (CTimer::GetTimeInMillisecondsPauseMode() - LastFlash > 7) { + rotation += 2.0f; + if (rotation > 360.0f) + rotation -= 360.0f; + LastFlash = CTimer::GetTimeInMillisecondsPauseMode(); + } + RwFrameTransform(frame, RwFrameGetMatrix(RwCameraGetFrame(Scene.camera)), rwCOMBINEREPLACE); + RwFrameTranslate(frame, &pos, rwCOMBINEPRECONCAT); + RwFrameRotate(frame, &axis1, -90.0f, rwCOMBINEPRECONCAT); + RwFrameRotate(frame, &axis2, rotation, rwCOMBINEPRECONCAT); + RwFrameUpdateObjects(frame); + SetAmbientColours(&AmbientColor); + RpClumpRender(gpPlayerClump); +} + +STARTPATCHES +InjectHook(0x59B9B0, &CPlayerSkin::Initialise, PATCH_JUMP); +InjectHook(0x59B9E0, &CPlayerSkin::Shutdown, PATCH_JUMP); +InjectHook(0x59B9F0, &CPlayerSkin::GetSkinTexture, PATCH_JUMP); +InjectHook(0x59BC70, &CPlayerSkin::BeginFrontendSkinEdit, PATCH_JUMP); +InjectHook(0x59BCB0, &CPlayerSkin::EndFrontendSkinEdit, PATCH_JUMP); +InjectHook(0x59BCE0, &CPlayerSkin::RenderFrontendSkinEdit, PATCH_JUMP); ENDPATCHES \ No newline at end of file diff --git a/src/core/obrstr.cpp b/src/core/obrstr.cpp index 3663d134..d9f7e9b4 100644 --- a/src/core/obrstr.cpp +++ b/src/core/obrstr.cpp @@ -1,119 +1,119 @@ -#include "common.h" -#include "Debug.h" -#include "obrstr.h" - -char obrstr[128]; -char obrstr2[128]; - -void ObrInt(int32 n1) -{ - IntToStr(n1, obrstr); - CDebug::DebugAddText(obrstr); -} - -void ObrInt2(int32 n1, int32 n2) -{ - IntToStr(n1, obrstr); - strcat(obrstr, " "); - IntToStr(n2, obrstr2); - strcat(obrstr, obrstr2); - CDebug::DebugAddText(obrstr); -} - -void ObrInt3(int32 n1, int32 n2, int32 n3) -{ - IntToStr(n1, obrstr); - strcat(obrstr, " "); - IntToStr(n2, obrstr2); - strcat(obrstr, obrstr2); - strcat(obrstr, " "); - IntToStr(n3, obrstr2); - strcat(obrstr, obrstr2); - CDebug::DebugAddText(obrstr); -} - -void ObrInt4(int32 n1, int32 n2, int32 n3, int32 n4) -{ - IntToStr(n1, obrstr); - strcat(obrstr, " "); - IntToStr(n2, obrstr2); - strcat(obrstr, obrstr2); - strcat(obrstr, " "); - IntToStr(n3, obrstr2); - strcat(obrstr, obrstr2); - strcat(obrstr, " "); - IntToStr(n4, obrstr2); - strcat(obrstr, obrstr2); - CDebug::DebugAddText(obrstr); -} - -void ObrInt5(int32 n1, int32 n2, int32 n3, int32 n4, int32 n5) -{ - IntToStr(n1, obrstr); - strcat(obrstr, " "); - IntToStr(n2, obrstr2); - strcat(obrstr, obrstr2); - strcat(obrstr, " "); - IntToStr(n3, obrstr2); - strcat(obrstr, obrstr2); - strcat(obrstr, " "); - IntToStr(n4, obrstr2); - strcat(obrstr, obrstr2); - strcat(obrstr, " "); - IntToStr(n5, obrstr2); - strcat(obrstr, obrstr2); - CDebug::DebugAddText(obrstr); -} - -void ObrInt6(int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6) -{ - IntToStr(n1, obrstr); - strcat(obrstr, " "); - IntToStr(n2, obrstr2); - strcat(obrstr, obrstr2); - strcat(obrstr, " "); - IntToStr(n3, obrstr2); - strcat(obrstr, obrstr2); - strcat(obrstr, " "); - IntToStr(n4, obrstr2); - strcat(obrstr, obrstr2); - strcat(obrstr, " "); - IntToStr(n5, obrstr2); - strcat(obrstr, obrstr2); - strcat(obrstr, " "); - IntToStr(n6, obrstr2); - strcat(obrstr, obrstr2); - CDebug::DebugAddText(obrstr); -} - -void IntToStr(int32 inNum, char *outStr) -{ - bool isNeg = inNum < 0; - - if (isNeg) { - inNum = -inNum; - *outStr = '-'; - } - - int16 digits = 1; - - if (inNum > 9) { - int32 _inNum = inNum; - do { - digits++; - _inNum /= 10; - } while (_inNum > 9); - } - - int32 strSize = digits; - if (isNeg) - strSize++; - - char *pStr = &outStr[strSize]; - int32 i = 0; - do { - *(pStr-- - 1) = (inNum % 10) + '0'; - inNum /= 10; - } while (++i < strSize); - outStr[strSize] = '\0'; +#include "common.h" +#include "Debug.h" +#include "obrstr.h" + +char obrstr[128]; +char obrstr2[128]; + +void ObrInt(int32 n1) +{ + IntToStr(n1, obrstr); + CDebug::DebugAddText(obrstr); +} + +void ObrInt2(int32 n1, int32 n2) +{ + IntToStr(n1, obrstr); + strcat(obrstr, " "); + IntToStr(n2, obrstr2); + strcat(obrstr, obrstr2); + CDebug::DebugAddText(obrstr); +} + +void ObrInt3(int32 n1, int32 n2, int32 n3) +{ + IntToStr(n1, obrstr); + strcat(obrstr, " "); + IntToStr(n2, obrstr2); + strcat(obrstr, obrstr2); + strcat(obrstr, " "); + IntToStr(n3, obrstr2); + strcat(obrstr, obrstr2); + CDebug::DebugAddText(obrstr); +} + +void ObrInt4(int32 n1, int32 n2, int32 n3, int32 n4) +{ + IntToStr(n1, obrstr); + strcat(obrstr, " "); + IntToStr(n2, obrstr2); + strcat(obrstr, obrstr2); + strcat(obrstr, " "); + IntToStr(n3, obrstr2); + strcat(obrstr, obrstr2); + strcat(obrstr, " "); + IntToStr(n4, obrstr2); + strcat(obrstr, obrstr2); + CDebug::DebugAddText(obrstr); +} + +void ObrInt5(int32 n1, int32 n2, int32 n3, int32 n4, int32 n5) +{ + IntToStr(n1, obrstr); + strcat(obrstr, " "); + IntToStr(n2, obrstr2); + strcat(obrstr, obrstr2); + strcat(obrstr, " "); + IntToStr(n3, obrstr2); + strcat(obrstr, obrstr2); + strcat(obrstr, " "); + IntToStr(n4, obrstr2); + strcat(obrstr, obrstr2); + strcat(obrstr, " "); + IntToStr(n5, obrstr2); + strcat(obrstr, obrstr2); + CDebug::DebugAddText(obrstr); +} + +void ObrInt6(int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6) +{ + IntToStr(n1, obrstr); + strcat(obrstr, " "); + IntToStr(n2, obrstr2); + strcat(obrstr, obrstr2); + strcat(obrstr, " "); + IntToStr(n3, obrstr2); + strcat(obrstr, obrstr2); + strcat(obrstr, " "); + IntToStr(n4, obrstr2); + strcat(obrstr, obrstr2); + strcat(obrstr, " "); + IntToStr(n5, obrstr2); + strcat(obrstr, obrstr2); + strcat(obrstr, " "); + IntToStr(n6, obrstr2); + strcat(obrstr, obrstr2); + CDebug::DebugAddText(obrstr); +} + +void IntToStr(int32 inNum, char *outStr) +{ + bool isNeg = inNum < 0; + + if (isNeg) { + inNum = -inNum; + *outStr = '-'; + } + + int16 digits = 1; + + if (inNum > 9) { + int32 _inNum = inNum; + do { + digits++; + _inNum /= 10; + } while (_inNum > 9); + } + + int32 strSize = digits; + if (isNeg) + strSize++; + + char *pStr = &outStr[strSize]; + int32 i = 0; + do { + *(pStr-- - 1) = (inNum % 10) + '0'; + inNum /= 10; + } while (++i < strSize); + outStr[strSize] = '\0'; } \ No newline at end of file diff --git a/src/core/obrstr.h b/src/core/obrstr.h index 6838afb5..c1633614 100644 --- a/src/core/obrstr.h +++ b/src/core/obrstr.h @@ -1,9 +1,9 @@ -#pragma once - -void ObrInt(int32 n1); -void ObrInt2(int32 n1, int32 n2); -void ObrInt3(int32 n1, int32 n2, int32 n3); -void ObrInt4(int32 n1, int32 n2, int32 n3, int32 n4); -void ObrInt5(int32 n1, int32 n2, int32 n3, int32 n4, int32 n5); -void ObrInt6(int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6); +#pragma once + +void ObrInt(int32 n1); +void ObrInt2(int32 n1, int32 n2); +void ObrInt3(int32 n1, int32 n2, int32 n3); +void ObrInt4(int32 n1, int32 n2, int32 n3, int32 n4); +void ObrInt5(int32 n1, int32 n2, int32 n3, int32 n4, int32 n5); +void ObrInt6(int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6); void IntToStr(int32 inNum, char *outStr); \ No newline at end of file diff --git a/src/core/timebars.cpp b/src/core/timebars.cpp index 30421731..93d85f8d 100644 --- a/src/core/timebars.cpp +++ b/src/core/timebars.cpp @@ -1,121 +1,121 @@ -#ifndef MASTER -#include "common.h" -#include "Font.h" -#include "Frontend.h" -#include "Timer.h" -#include "Text.h" - -#define MAX_TIMERS (50) -#define MAX_MS_COLLECTED (40) - -// enables frame time output -#define FRAMETIME - -struct sTimeBar -{ - char name[20]; - float startTime; - float endTime; - int32 unk; -}; - -struct -{ - sTimeBar Timers[MAX_TIMERS]; - uint32 count; -} TimerBar; -float MaxTimes[MAX_TIMERS]; -float MaxFrameTime; - -uint32 curMS; -uint32 msCollected[MAX_MS_COLLECTED]; -#ifdef FRAMETIME -float FrameInitTime; -#endif - -void tbInit() -{ - TimerBar.count = 0; - uint32 i = CTimer::GetFrameCounter() & 0x7F; - if (i == 0) { - do - MaxTimes[i++] = 0.0f; - while (i != MAX_TIMERS); -#ifdef FRAMETIME - MaxFrameTime = 0.0f; -#endif - } -#ifdef FRAMETIME - FrameInitTime = (float)CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerFrame(); -#endif -} - -void tbStartTimer(int32 unk, char *name) -{ - strcpy(TimerBar.Timers[TimerBar.count].name, name); - TimerBar.Timers[TimerBar.count].unk = unk; - TimerBar.Timers[TimerBar.count].startTime = (float)CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerFrame(); - TimerBar.count++; -} - -void tbEndTimer(char* name) -{ - uint32 n = 1500; - for (uint32 i = 0; i < TimerBar.count; i++) { - if (strcmp(name, TimerBar.Timers[i].name) == 0) - n = i; - } - assert(n != 1500); - TimerBar.Timers[n].endTime = (float)CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerFrame(); -} - -float Diag_GetFPS() -{ - return 39000.0f / (msCollected[(curMS - 1) % MAX_MS_COLLECTED] - msCollected[curMS % MAX_MS_COLLECTED]); -} - -void tbDisplay() -{ - char temp[200]; - wchar wtemp[200]; - -#ifdef FRAMETIME - float FrameEndTime = (float)CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerFrame(); -#endif - - msCollected[(curMS++) % MAX_MS_COLLECTED] = RsTimer(); - CFont::SetBackgroundOff(); - CFont::SetBackgroundColor(CRGBA(0, 0, 0, 128)); - CFont::SetScale(0.48f, 1.12f); - CFont::SetCentreOff(); - CFont::SetJustifyOff(); - CFont::SetWrapx(640.0f); - CFont::SetRightJustifyOff(); - CFont::SetPropOn(); - CFont::SetFontStyle(FONT_BANK); - sprintf(temp, "FPS: %.2f", Diag_GetFPS()); - AsciiToUnicode(temp, wtemp); - CFont::SetColor(CRGBA(255, 255, 255, 255)); - if (!CMenuManager::m_PrefsMarketing || !CMenuManager::m_PrefsDisableTutorials) { - CFont::PrintString(RsGlobal.maximumWidth * (4.0f / DEFAULT_SCREEN_WIDTH), RsGlobal.maximumHeight * (4.0f / DEFAULT_SCREEN_HEIGHT), wtemp); - -#ifndef FINAL - // Timers output (my own implementation) - for (uint32 i = 0; i < TimerBar.count; i++) { - MaxTimes[i] = max(MaxTimes[i], TimerBar.Timers[i].endTime - TimerBar.Timers[i].startTime); - sprintf(temp, "%s: %.2f", &TimerBar.Timers[i].name[0], MaxTimes[i]); - AsciiToUnicode(temp, wtemp); - CFont::PrintString(RsGlobal.maximumWidth * (4.0f / DEFAULT_SCREEN_WIDTH), RsGlobal.maximumHeight * ((8.0f * (i + 2)) / DEFAULT_SCREEN_HEIGHT), wtemp); - } - -#ifdef FRAMETIME - MaxFrameTime = max(MaxFrameTime, FrameEndTime - FrameInitTime); - sprintf(temp, "Frame Time: %.2f", MaxFrameTime); - AsciiToUnicode(temp, wtemp); - - CFont::PrintString(RsGlobal.maximumWidth * (4.0f / DEFAULT_SCREEN_WIDTH), RsGlobal.maximumHeight * ((8.0f * (TimerBar.count + 4)) / DEFAULT_SCREEN_HEIGHT), wtemp); -#endif // FRAMETIME -#endif // !FINAL - } -} +#ifndef MASTER +#include "common.h" +#include "Font.h" +#include "Frontend.h" +#include "Timer.h" +#include "Text.h" + +#define MAX_TIMERS (50) +#define MAX_MS_COLLECTED (40) + +// enables frame time output +#define FRAMETIME + +struct sTimeBar +{ + char name[20]; + float startTime; + float endTime; + int32 unk; +}; + +struct +{ + sTimeBar Timers[MAX_TIMERS]; + uint32 count; +} TimerBar; +float MaxTimes[MAX_TIMERS]; +float MaxFrameTime; + +uint32 curMS; +uint32 msCollected[MAX_MS_COLLECTED]; +#ifdef FRAMETIME +float FrameInitTime; +#endif + +void tbInit() +{ + TimerBar.count = 0; + uint32 i = CTimer::GetFrameCounter() & 0x7F; + if (i == 0) { + do + MaxTimes[i++] = 0.0f; + while (i != MAX_TIMERS); +#ifdef FRAMETIME + MaxFrameTime = 0.0f; +#endif + } +#ifdef FRAMETIME + FrameInitTime = (float)CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerFrame(); +#endif +} + +void tbStartTimer(int32 unk, char *name) +{ + strcpy(TimerBar.Timers[TimerBar.count].name, name); + TimerBar.Timers[TimerBar.count].unk = unk; + TimerBar.Timers[TimerBar.count].startTime = (float)CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerFrame(); + TimerBar.count++; +} + +void tbEndTimer(char* name) +{ + uint32 n = 1500; + for (uint32 i = 0; i < TimerBar.count; i++) { + if (strcmp(name, TimerBar.Timers[i].name) == 0) + n = i; + } + assert(n != 1500); + TimerBar.Timers[n].endTime = (float)CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerFrame(); +} + +float Diag_GetFPS() +{ + return 39000.0f / (msCollected[(curMS - 1) % MAX_MS_COLLECTED] - msCollected[curMS % MAX_MS_COLLECTED]); +} + +void tbDisplay() +{ + char temp[200]; + wchar wtemp[200]; + +#ifdef FRAMETIME + float FrameEndTime = (float)CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerFrame(); +#endif + + msCollected[(curMS++) % MAX_MS_COLLECTED] = RsTimer(); + CFont::SetBackgroundOff(); + CFont::SetBackgroundColor(CRGBA(0, 0, 0, 128)); + CFont::SetScale(0.48f, 1.12f); + CFont::SetCentreOff(); + CFont::SetJustifyOff(); + CFont::SetWrapx(640.0f); + CFont::SetRightJustifyOff(); + CFont::SetPropOn(); + CFont::SetFontStyle(FONT_BANK); + sprintf(temp, "FPS: %.2f", Diag_GetFPS()); + AsciiToUnicode(temp, wtemp); + CFont::SetColor(CRGBA(255, 255, 255, 255)); + if (!CMenuManager::m_PrefsMarketing || !CMenuManager::m_PrefsDisableTutorials) { + CFont::PrintString(RsGlobal.maximumWidth * (4.0f / DEFAULT_SCREEN_WIDTH), RsGlobal.maximumHeight * (4.0f / DEFAULT_SCREEN_HEIGHT), wtemp); + +#ifndef FINAL + // Timers output (my own implementation) + for (uint32 i = 0; i < TimerBar.count; i++) { + MaxTimes[i] = max(MaxTimes[i], TimerBar.Timers[i].endTime - TimerBar.Timers[i].startTime); + sprintf(temp, "%s: %.2f", &TimerBar.Timers[i].name[0], MaxTimes[i]); + AsciiToUnicode(temp, wtemp); + CFont::PrintString(RsGlobal.maximumWidth * (4.0f / DEFAULT_SCREEN_WIDTH), RsGlobal.maximumHeight * ((8.0f * (i + 2)) / DEFAULT_SCREEN_HEIGHT), wtemp); + } + +#ifdef FRAMETIME + MaxFrameTime = max(MaxFrameTime, FrameEndTime - FrameInitTime); + sprintf(temp, "Frame Time: %.2f", MaxFrameTime); + AsciiToUnicode(temp, wtemp); + + CFont::PrintString(RsGlobal.maximumWidth * (4.0f / DEFAULT_SCREEN_WIDTH), RsGlobal.maximumHeight * ((8.0f * (TimerBar.count + 4)) / DEFAULT_SCREEN_HEIGHT), wtemp); +#endif // FRAMETIME +#endif // !FINAL + } +} #endif // !MASTER \ No newline at end of file diff --git a/src/core/timebars.h b/src/core/timebars.h index 8ffccd8e..6d3b853e 100644 --- a/src/core/timebars.h +++ b/src/core/timebars.h @@ -1,6 +1,6 @@ -#pragma once - -void tbInit(); -void tbStartTimer(int32, char*); -void tbEndTimer(char*); +#pragma once + +void tbInit(); +void tbStartTimer(int32, char*); +void tbEndTimer(char*); void tbDisplay(); \ No newline at end of file diff --git a/src/entities/Solid.h b/src/entities/Solid.h index e67c8e29..4ca800c2 100644 --- a/src/entities/Solid.h +++ b/src/entities/Solid.h @@ -1,12 +1,12 @@ -#pragma once - -#include "Entity.h" - -class CSolid : public CEntity -{ -public: - CSolid(void) { - m_type = ENTITY_TYPE_BUILDING; - bUsesCollision = true; - } +#pragma once + +#include "Entity.h" + +class CSolid : public CEntity +{ +public: + CSolid(void) { + m_type = ENTITY_TYPE_BUILDING; + bUsesCollision = true; + } }; \ No newline at end of file diff --git a/src/modelinfo/MloModelInfo.h b/src/modelinfo/MloModelInfo.h index 19ae63d5..d4344706 100644 --- a/src/modelinfo/MloModelInfo.h +++ b/src/modelinfo/MloModelInfo.h @@ -1,14 +1,14 @@ -#pragma once - -#include "ClumpModelInfo.h" - -class CMloModelInfo : public CClumpModelInfo -{ -public: - float field_34; // draw distance? - int firstInstance; - int lastInstance; -public: - CMloModelInfo(void) : CClumpModelInfo(MITYPE_MLO) {} - void ConstructClump(); +#pragma once + +#include "ClumpModelInfo.h" + +class CMloModelInfo : public CClumpModelInfo +{ +public: + float field_34; // draw distance? + int firstInstance; + int lastInstance; +public: + CMloModelInfo(void) : CClumpModelInfo(MITYPE_MLO) {} + void ConstructClump(); }; \ No newline at end of file diff --git a/src/modelinfo/XtraCompsModelInfo.h b/src/modelinfo/XtraCompsModelInfo.h index bb37ffe3..9832399c 100644 --- a/src/modelinfo/XtraCompsModelInfo.h +++ b/src/modelinfo/XtraCompsModelInfo.h @@ -1,12 +1,12 @@ -#pragma once - -#include "ClumpModelInfo.h" - -class CXtraCompsModelInfo : public CClumpModelInfo -{ - int field_34; -public: - CXtraCompsModelInfo(void) : CClumpModelInfo(MITYPE_XTRACOMPS) { field_34 = 0; } - void SetClump(RpClump*) {}; - void Shutdown(void) {}; +#pragma once + +#include "ClumpModelInfo.h" + +class CXtraCompsModelInfo : public CClumpModelInfo +{ + int field_34; +public: + CXtraCompsModelInfo(void) : CClumpModelInfo(MITYPE_XTRACOMPS) { field_34 = 0; } + void SetClump(RpClump*) {}; + void Shutdown(void) {}; }; \ No newline at end of file diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index 6dbf7687..ccc0a43a 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -1,1535 +1,1535 @@ -#include "common.h" -#include "patcher.h" -#include "PlayerPed.h" -#include "Wanted.h" -#include "Fire.h" -#include "DMAudio.h" -#include "Pad.h" -#include "Camera.h" -#include "WeaponEffects.h" -#include "ModelIndices.h" -#include "World.h" -#include "RpAnimBlend.h" -#include "AnimBlendAssociation.h" -#include "General.h" -#include "Pools.h" -#include "Darkel.h" -#include "CarCtrl.h" - -#define PAD_MOVE_TO_GAME_WORLD_MOVE 60.0f - -CPlayerPed::~CPlayerPed() -{ - delete m_pWanted; -} - -CPlayerPed::CPlayerPed(void) : CPed(PEDTYPE_PLAYER1) -{ - m_fMoveSpeed = 0.0f; - SetModelIndex(MI_PLAYER); - SetInitialState(); - - m_pWanted = new CWanted(); - m_pWanted->Initialise(); - m_pArrestingCop = nil; - m_currentWeapon = WEAPONTYPE_UNARMED; - m_nSelectedWepSlot = WEAPONTYPE_UNARMED; - m_nSpeedTimer = 0; - m_bSpeedTimerFlag = false; - m_pPointGunAt = nil; - m_nPedState = PED_IDLE; - m_fMaxStamina = 150.0f; - m_fCurrentStamina = m_fMaxStamina; - m_fStaminaProgress = 0.0f; - m_nEvadeAmount = 0; - field_1367 = 0; - m_nShotDelay = 0; - field_1376 = 0.0f; - m_bHaveTargetSelected = false; - m_bHasLockOnTarget = false; - m_bCanBeDamaged = true; - m_fWalkAngle = 0.0f; - m_fFPSMoveHeading = 0.0f; - m_nTargettableObjects[0] = m_nTargettableObjects[1] = m_nTargettableObjects[2] = m_nTargettableObjects[3] = -1; - field_1413 = 0; - for (int i = 0; i < 6; i++) { - m_vecSafePos[i] = CVector(0.0f, 0.0f, 0.0f); - m_pPedAtSafePos[i] = nil; - } -} - -void CPlayerPed::ClearWeaponTarget() -{ - if (m_nPedType == PEDTYPE_PLAYER1) { - m_pPointGunAt = nil; - TheCamera.ClearPlayerWeaponMode(); - CWeaponEffects::ClearCrossHair(); - } - ClearPointGunAt(); -} - -void -CPlayerPed::SetWantedLevel(int32 level) -{ - m_pWanted->SetWantedLevel(level); -} - -void -CPlayerPed::SetWantedLevelNoDrop(int32 level) -{ - m_pWanted->SetWantedLevelNoDrop(level); -} - -void -CPlayerPed::MakeObjectTargettable(int32 handle) -{ - for (int i = 0; i < ARRAY_SIZE(m_nTargettableObjects); i++) { - if ( -#ifdef FIX_BUGS - m_nTargettableObjects[i] == -1 || -#endif - CPools::GetObjectPool()->GetAt(m_nTargettableObjects[i]) == nil) { - m_nTargettableObjects[i] = handle; - return; - } - } -} - -// I don't know the actual purpose of parameter -void -CPlayerPed::AnnoyPlayerPed(bool annoyedByPassingEntity) -{ - if (m_pedStats->m_temper < 52) { - m_pedStats->m_temper++; - } else { - if (annoyedByPassingEntity) { - if (m_pedStats->m_temper < 55) { - m_pedStats->m_temper++; - } else { - m_pedStats->m_temper = 46; - } - } - } -} - -void -CPlayerPed::ClearAdrenaline(void) -{ - if (m_bAdrenalineActive && m_nAdrenalineTime != 0) { - m_nAdrenalineTime = 0; - CTimer::SetTimeScale(1.0f); - } -} - -CPlayerInfo * -CPlayerPed::GetPlayerInfoForThisPlayerPed() -{ - if (CWorld::Players[0].m_pPed == this) - return &CWorld::Players[0]; - - return nil; -} - -void -CPlayerPed::SetupPlayerPed(int32 index) -{ - CPlayerPed *player = new CPlayerPed(); - CWorld::Players[index].m_pPed = player; - - player->SetOrientation(0.0f, 0.0f, 0.0f); - - CWorld::Add(player); - player->m_wepAccuracy = 100; -} - -void -CPlayerPed::DeactivatePlayerPed(int32 index) -{ - CWorld::Remove(CWorld::Players[index].m_pPed); -} - -void -CPlayerPed::ReactivatePlayerPed(int32 index) -{ - CWorld::Add(CWorld::Players[index].m_pPed); -} - -void -CPlayerPed::UseSprintEnergy(void) -{ - if (m_fCurrentStamina > -150.0f && !CWorld::Players[CWorld::PlayerInFocus].m_bInfiniteSprint - && !m_bAdrenalineActive) { - m_fCurrentStamina = m_fCurrentStamina - CTimer::GetTimeStep(); - m_fStaminaProgress = m_fStaminaProgress + CTimer::GetTimeStep(); - } - - if (m_fStaminaProgress >= 500.0f) { - m_fStaminaProgress = 0; - if (m_fMaxStamina < 1000.0f) - m_fMaxStamina += 10.0f; - } -} - -void -CPlayerPed::MakeChangesForNewWeapon(int8 weapon) -{ - if (m_nPedState == PED_SNIPER_MODE) { - RestorePreviousState(); - TheCamera.ClearPlayerWeaponMode(); - } - SetCurrentWeapon(weapon); - - GetWeapon()->m_nAmmoInClip = min(GetWeapon()->m_nAmmoTotal, CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_nAmountofAmmunition); - - if (!(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bCanAim)) - ClearWeaponTarget(); - - CAnimBlendAssociation *weaponAnim = RpAnimBlendClumpGetAssociation(GetClump(), CWeaponInfo::GetWeaponInfo(WEAPONTYPE_SNIPERRIFLE)->m_AnimToPlay); - if (weaponAnim) { - weaponAnim->SetRun(); - weaponAnim->flags |= ASSOC_FADEOUTWHENDONE; - } - TheCamera.ClearPlayerWeaponMode(); -} - -void -CPlayerPed::ReApplyMoveAnims(void) -{ - static AnimationId moveAnims[] = { ANIM_WALK, ANIM_RUN, ANIM_SPRINT, ANIM_IDLE_STANCE, ANIM_WALK_START }; - - for(int i = 0; i < ARRAY_SIZE(moveAnims); i++) { - CAnimBlendAssociation *curMoveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), moveAnims[i]); - if (curMoveAssoc) { - if (strcmp(CAnimManager::GetAnimAssociation(m_animGroup, moveAnims[i])->hierarchy->name, curMoveAssoc->hierarchy->name) != 0) { - CAnimBlendAssociation *newMoveAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, moveAnims[i]); - newMoveAssoc->blendDelta = curMoveAssoc->blendDelta; - newMoveAssoc->blendAmount = curMoveAssoc->blendAmount; - curMoveAssoc->blendDelta = -1000.0f; - curMoveAssoc->flags |= ASSOC_DELETEFADEDOUT; - } - } - } -} - -void -CPlayerPed::SetInitialState(void) -{ - m_bAdrenalineActive = false; - m_nAdrenalineTime = 0; - CTimer::SetTimeStep(1.0f); - m_pSeekTarget = nil; - m_vecSeekPos = { 0.0f, 0.0f, 0.0f }; - m_fleeFromPosX = 0.0f; - m_fleeFromPosY = 0.0f; - m_fleeFrom = nil; - m_fleeTimer = 0; - m_objective = OBJECTIVE_NONE; - m_prevObjective = OBJECTIVE_NONE; - bUsesCollision = true; - ClearAimFlag(); - ClearLookFlag(); - bIsPointingGunAt = false; - bRenderPedInCar = true; - if (m_pFire) - m_pFire->Extinguish(); - RpAnimBlendClumpRemoveAllAssociations(GetClump()); - m_nPedState = PED_IDLE; - SetMoveState(PEDMOVE_STILL); - m_nLastPedState = PED_NONE; - m_animGroup = ASSOCGRP_PLAYER; - m_fMoveSpeed = 0.0f; - m_nSelectedWepSlot = WEAPONTYPE_UNARMED; - m_nEvadeAmount = 0; - m_pEvadingFrom = nil; - bIsPedDieAnimPlaying = false; - SetRealMoveAnim(); - m_bCanBeDamaged = true; - m_pedStats->m_temper = 50; - m_fWalkAngle = 0.0f; -} - -void -CPlayerPed::SetRealMoveAnim(void) -{ - CAnimBlendAssociation *curWalkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WALK); - CAnimBlendAssociation *curRunAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN); - CAnimBlendAssociation *curSprintAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_SPRINT); - CAnimBlendAssociation *curWalkStartAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WALK_START); - CAnimBlendAssociation *curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE); - CAnimBlendAssociation *curRunStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP); - CAnimBlendAssociation *curRunStopRAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP_R); - if (bResetWalkAnims) { - if (curWalkAssoc) - curWalkAssoc->SetCurrentTime(0.0f); - if (curRunAssoc) - curRunAssoc->SetCurrentTime(0.0f); - if (curSprintAssoc) - curSprintAssoc->SetCurrentTime(0.0f); - bResetWalkAnims = false; - } - - if (!curIdleAssoc) - curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED); - if (!curIdleAssoc) - curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE); - - if ((!curRunStopAssoc || !(curRunStopAssoc->IsRunning())) && (!curRunStopRAssoc || !(curRunStopRAssoc->IsRunning()))) { - - if (curRunStopAssoc && curRunStopAssoc->blendDelta >= 0.0f || curRunStopRAssoc && curRunStopRAssoc->blendDelta >= 0.0f) { - if (curRunStopAssoc) { - curRunStopAssoc->flags |= ASSOC_DELETEFADEDOUT; - curRunStopAssoc->blendAmount = 1.0f; - curRunStopAssoc->blendDelta = -8.0f; - } else if (curRunStopRAssoc) { - curRunStopRAssoc->flags |= ASSOC_DELETEFADEDOUT; - curRunStopRAssoc->blendAmount = 1.0f; - curRunStopRAssoc->blendDelta = -8.0f; - } - - RestoreHeadingRate(); - if (!curIdleAssoc) { - if (m_fCurrentStamina < 0.0f && !CWorld::TestSphereAgainstWorld(GetPosition(), 0.0f, - nil, true, false, false, false, false, false)) { - curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 8.0f); - - } else { - curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 8.0f); - } - m_nWaitTimer = CTimer::GetTimeInMilliseconds() + CGeneral::GetRandomNumberInRange(2500, 4000); - } - curIdleAssoc->blendAmount = 0.0f; - curIdleAssoc->blendDelta = 8.0f; - - } else if (m_fMoveSpeed == 0.0f && !curSprintAssoc) { - if (!curIdleAssoc) { - if (m_fCurrentStamina < 0.0f && !CWorld::TestSphereAgainstWorld(GetPosition(), 0.0f, - nil, true, false, false, false, false, false)) { - curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 4.0f); - - } else { - curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f); - } - - m_nWaitTimer = CTimer::GetTimeInMilliseconds() + CGeneral::GetRandomNumberInRange(2500, 4000); - } - - if (m_fCurrentStamina > 0.0f && curIdleAssoc->animId == ANIM_IDLE_TIRED) { - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f); - - } else if (m_nPedState != PED_FIGHT) { - if (m_fCurrentStamina < 0.0f && curIdleAssoc->animId != ANIM_IDLE_TIRED - && !CWorld::TestSphereAgainstWorld(GetPosition(), 0.0f, nil, true, false, false, false, false, false)) { - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 4.0f); - - } else if (curIdleAssoc->animId != ANIM_IDLE_STANCE) { - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f); - } - } - - m_nMoveState = PEDMOVE_STILL; - } else { - if (curIdleAssoc) { - if (curWalkStartAssoc) { - curWalkStartAssoc->blendAmount = 1.0f; - curWalkStartAssoc->blendDelta = 0.0f; - } else { - curWalkStartAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_WALK_START); - } - if (curWalkAssoc) - curWalkAssoc->SetCurrentTime(0.0f); - if (curRunAssoc) - curRunAssoc->SetCurrentTime(0.0f); - - delete curIdleAssoc; - delete RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED); - delete RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE); - delete curSprintAssoc; - - curSprintAssoc = nil; - m_nMoveState = PEDMOVE_WALK; - } - if (curRunStopAssoc) { - delete curRunStopAssoc; - RestoreHeadingRate(); - } - if (curRunStopRAssoc) { - delete curRunStopRAssoc; - RestoreHeadingRate(); - } - if (!curWalkAssoc) { - curWalkAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_WALK); - curWalkAssoc->blendAmount = 0.0f; - } - if (!curRunAssoc) { - curRunAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_RUN); - curRunAssoc->blendAmount = 0.0f; - } - if (curWalkStartAssoc && !(curWalkStartAssoc->IsRunning())) { - delete curWalkStartAssoc; - curWalkStartAssoc = nil; - curWalkAssoc->SetRun(); - curRunAssoc->SetRun(); - } - if (m_nMoveState == PEDMOVE_SPRINT) { - if (m_fCurrentStamina < 0.0f && (m_fCurrentStamina <= -150.0f || !curSprintAssoc || curSprintAssoc->blendDelta < 0.0f)) - m_nMoveState = PEDMOVE_STILL; - - if (curWalkStartAssoc) - m_nMoveState = PEDMOVE_STILL; - } - - if (curSprintAssoc && (m_nMoveState != PEDMOVE_SPRINT || m_fMoveSpeed < 0.4f)) { - if (curSprintAssoc->blendAmount == 0.0f) { - curSprintAssoc->blendDelta = -1000.0f; - curSprintAssoc->flags |= ASSOC_DELETEFADEDOUT; - - } else if (curSprintAssoc->blendDelta >= 0.0f || curSprintAssoc->blendAmount >= 0.8f) { - if (m_fMoveSpeed < 0.4f) { - AnimationId runStopAnim; - if (curSprintAssoc->currentTime / curSprintAssoc->hierarchy->totalLength < 0.5) // double - runStopAnim = ANIM_RUN_STOP; - else - runStopAnim = ANIM_RUN_STOP_R; - CAnimBlendAssociation* newRunStopAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, runStopAnim); - newRunStopAssoc->blendAmount = 1.0f; - newRunStopAssoc->SetDeleteCallback(RestoreHeadingRateCB, this); - m_headingRate = 0.0f; - curSprintAssoc->flags |= ASSOC_DELETEFADEDOUT; - curSprintAssoc->blendDelta = -1000.0f; - curWalkAssoc->flags &= ~ASSOC_RUNNING; - curWalkAssoc->blendAmount = 0.0f; - curWalkAssoc->blendDelta = 0.0f; - curRunAssoc->flags &= ~ASSOC_RUNNING; - curRunAssoc->blendAmount = 0.0f; - curRunAssoc->blendDelta = 0.0f; - } else if (curSprintAssoc->blendDelta >= 0.0f) { - - // Stop sprinting when tired - curSprintAssoc->flags |= ASSOC_DELETEFADEDOUT; - curSprintAssoc->blendDelta = -1.0f; - curRunAssoc->blendDelta = 1.0f; - } - } else if (m_fMoveSpeed < 1.0f) { - curSprintAssoc->blendDelta = -8.0f; - curRunAssoc->blendDelta = 8.0f; - } - } else if (curWalkStartAssoc) { - curWalkAssoc->flags &= ~ASSOC_RUNNING; - curRunAssoc->flags &= ~ASSOC_RUNNING; - curWalkAssoc->blendAmount = 0.0f; - curRunAssoc->blendAmount = 0.0f; - - } else if (m_nMoveState == PEDMOVE_SPRINT) { - if (curSprintAssoc) { - if (curSprintAssoc->blendDelta < 0.0f) { - curSprintAssoc->blendDelta = 2.0f; - curRunAssoc->blendDelta = -2.0f; - } - } else { - curWalkAssoc->blendAmount = 0.0f; - curRunAssoc->blendAmount = 1.0f; - curSprintAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_SPRINT, 2.0f); - } - UseSprintEnergy(); - } else { - if (m_fMoveSpeed < 1.0f) { - curWalkAssoc->blendAmount = 1.0f; - curRunAssoc->blendAmount = 0.0f; - m_nMoveState = PEDMOVE_WALK; - } else if (m_fMoveSpeed < 2.0f) { - curWalkAssoc->blendAmount = 2.0f - m_fMoveSpeed; - curRunAssoc->blendAmount = m_fMoveSpeed - 1.0f; - m_nMoveState = PEDMOVE_RUN; - } else { - curWalkAssoc->blendAmount = 0.0f; - curRunAssoc->blendAmount = 1.0f; - m_nMoveState = PEDMOVE_RUN; - } - } - } - } - if (m_bAdrenalineActive) { - if (CTimer::GetTimeInMilliseconds() > m_nAdrenalineTime) { - m_bAdrenalineActive = false; - CTimer::SetTimeScale(1.0f); - if (curWalkStartAssoc) - curWalkStartAssoc->speed = 1.0f; - if (curWalkAssoc) - curWalkAssoc->speed = 1.0f; - if (curRunAssoc) - curRunAssoc->speed = 1.0f; - if (curSprintAssoc) - curSprintAssoc->speed = 1.0f; - } else { - CTimer::SetTimeScale(1.0f / 3); - if (curWalkStartAssoc) - curWalkStartAssoc->speed = 2.0f; - if (curWalkAssoc) - curWalkAssoc->speed = 2.0f; - if (curRunAssoc) - curRunAssoc->speed = 2.0f; - if (curSprintAssoc) - curSprintAssoc->speed = 2.0f; - } - } -} - -void -CPlayerPed::RestoreSprintEnergy(float restoreSpeed) -{ - if (m_fCurrentStamina < m_fMaxStamina) - m_fCurrentStamina += restoreSpeed * CTimer::GetTimeStep() * 0.5f; -} - -bool -CPlayerPed::DoWeaponSmoothSpray(void) -{ - if (m_nPedState == PED_ATTACK && !m_pPointGunAt) { - eWeaponType weapon = GetWeapon()->m_eWeaponType; - if (weapon == WEAPONTYPE_FLAMETHROWER || weapon == WEAPONTYPE_COLT45 || weapon == WEAPONTYPE_UZI || weapon == WEAPONTYPE_SHOTGUN || - weapon == WEAPONTYPE_AK47 || weapon == WEAPONTYPE_M16 || weapon == WEAPONTYPE_HELICANNON) - return true; - } - return false; -} - -void -CPlayerPed::DoStuffToGoOnFire(void) -{ - if (m_nPedState == PED_SNIPER_MODE) - TheCamera.ClearPlayerWeaponMode(); -} - -bool -CPlayerPed::DoesTargetHaveToBeBroken(CVector target, CWeapon *weaponUsed) -{ - CVector distVec = target - GetPosition(); - - if (distVec.Magnitude() > CWeaponInfo::GetWeaponInfo(weaponUsed->m_eWeaponType)->m_fRange) - return true; - - if (weaponUsed->m_eWeaponType != WEAPONTYPE_SHOTGUN && weaponUsed->m_eWeaponType != WEAPONTYPE_AK47) - return false; - - distVec.Normalise(); - - if (DotProduct(distVec,GetForward()) < 0.4f) - return true; - - return false; -} - -// Cancels landing anim while running & jumping? I think -void -CPlayerPed::RunningLand(CPad *padUsed) -{ - CAnimBlendAssociation *landAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_LAND); - if (landAssoc && landAssoc->currentTime == 0.0f && m_fMoveSpeed > 1.5f - && padUsed && (padUsed->GetPedWalkLeftRight() != 0.0f || padUsed->GetPedWalkUpDown() != 0.0f)) { - - landAssoc->blendDelta = -1000.0f; - landAssoc->flags |= ASSOC_DELETEFADEDOUT; - - CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_JUMP_LAND)->SetFinishCallback(FinishJumpCB, this); - - if (m_nPedState == PED_JUMP) - RestorePreviousState(); - } -} - -bool -CPlayerPed::IsThisPedAttackingPlayer(CPed *suspect) -{ - if (suspect->m_pPointGunAt == this) - return true; - - switch (suspect->m_objective) { - case OBJECTIVE_KILL_CHAR_ON_FOOT: - case OBJECTIVE_KILL_CHAR_ANY_MEANS: - if (suspect->m_pedInObjective == this) - return true; - - break; - default: - break; - } - return false; -} - -void -CPlayerPed::PlayerControlSniper(CPad *padUsed) -{ - ProcessWeaponSwitch(padUsed); - TheCamera.PlayerExhaustion = (1.0f - (m_fCurrentStamina - -150.0f) / 300.0f) * 0.9f + 0.1f; - - if (!padUsed->GetTarget()) { - RestorePreviousState(); - TheCamera.ClearPlayerWeaponMode(); - } - - if (padUsed->WeaponJustDown()) { - CVector firePos(0.0f, 0.0f, 0.6f); - firePos = GetMatrix() * firePos; - GetWeapon()->Fire(this, &firePos); - } - GetWeapon()->Update(m_audioEntityId); -} - -// I think R* also used goto in here. -void -CPlayerPed::ProcessWeaponSwitch(CPad *padUsed) -{ - if (CDarkel::FrenzyOnGoing()) - goto switchDetectDone; - - if (padUsed->CycleWeaponRightJustDown() && !m_pPointGunAt) { - - if (TheCamera.PlayerWeaponMode.Mode != CCam::MODE_M16_1STPERSON - && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_M16_1STPERSON_RUNABOUT - && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_SNIPER - && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_SNIPER_RUNABOUT - && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_ROCKETLAUNCHER - && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_ROCKETLAUNCHER_RUNABOUT) { - - for (m_nSelectedWepSlot = m_currentWeapon + 1; m_nSelectedWepSlot < WEAPONTYPE_TOTAL_INVENTORY_WEAPONS; ++m_nSelectedWepSlot) { - if (HasWeapon(m_nSelectedWepSlot) && GetWeapon(m_nSelectedWepSlot).HasWeaponAmmoToBeUsed()) { - goto switchDetectDone; - } - } - m_nSelectedWepSlot = WEAPONTYPE_UNARMED; - } - } else if (padUsed->CycleWeaponLeftJustDown() && !m_pPointGunAt) { - if (TheCamera.PlayerWeaponMode.Mode != CCam::MODE_M16_1STPERSON - && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_SNIPER - && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_ROCKETLAUNCHER) { - - for (m_nSelectedWepSlot = m_currentWeapon - 1; ; --m_nSelectedWepSlot) { - if (m_nSelectedWepSlot < WEAPONTYPE_UNARMED) - m_nSelectedWepSlot = WEAPONTYPE_DETONATOR; - - if (HasWeapon(m_nSelectedWepSlot) && GetWeapon(m_nSelectedWepSlot).HasWeaponAmmoToBeUsed()) { - goto switchDetectDone; - } - } - } - } else if (CWeaponInfo::GetWeaponInfo((eWeaponType)m_currentWeapon)->m_eWeaponFire != WEAPON_FIRE_MELEE) { - if (GetWeapon(m_currentWeapon).m_nAmmoTotal <= 0) { - if (TheCamera.PlayerWeaponMode.Mode != CCam::MODE_M16_1STPERSON - && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_SNIPER - && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_ROCKETLAUNCHER) { - - for (m_nSelectedWepSlot = m_currentWeapon - 1; m_nSelectedWepSlot >= 0; --m_nSelectedWepSlot) { - if (m_nSelectedWepSlot == WEAPONTYPE_BASEBALLBAT && HasWeapon(WEAPONTYPE_BASEBALLBAT) - || GetWeapon(m_nSelectedWepSlot).m_nAmmoTotal > 0 && m_nSelectedWepSlot != WEAPONTYPE_MOLOTOV && m_nSelectedWepSlot != WEAPONTYPE_GRENADE) { - goto switchDetectDone; - } - } - m_nSelectedWepSlot = WEAPONTYPE_UNARMED; - } - } - } - -switchDetectDone: - if (m_nSelectedWepSlot != m_currentWeapon) { - if (m_nPedState != PED_ATTACK && m_nPedState != PED_AIM_GUN && m_nPedState != PED_FIGHT) - MakeChangesForNewWeapon(m_nSelectedWepSlot); - } -} - -void -CPlayerPed::PlayerControlM16(CPad *padUsed) -{ - ProcessWeaponSwitch(padUsed); - TheCamera.PlayerExhaustion = (1.0f - (m_fCurrentStamina - -150.0f) / 300.0f) * 0.9f + 0.1f; - - if (!padUsed->GetTarget()) { - RestorePreviousState(); - TheCamera.ClearPlayerWeaponMode(); - } - - if (padUsed->GetWeapon()) { - CVector firePos(0.0f, 0.0f, 0.6f); - firePos = GetMatrix() * firePos; - GetWeapon()->Fire(this, &firePos); - } - GetWeapon()->Update(m_audioEntityId); -} - -void -CPlayerPed::PlayerControlFighter(CPad *padUsed) -{ - float leftRight = padUsed->GetPedWalkLeftRight(); - float upDown = padUsed->GetPedWalkUpDown(); - float padMove = CVector2D(leftRight, upDown).Magnitude(); - - if (padMove > 0.0f) { - m_fRotationDest = CGeneral::GetRadianAngleBetweenPoints(0.0f, 0.0f, -leftRight, upDown) - TheCamera.Orientation; - m_takeAStepAfterAttack = padMove > 2 * PAD_MOVE_TO_GAME_WORLD_MOVE; - if (padUsed->GetSprint() && padMove > 1 * PAD_MOVE_TO_GAME_WORLD_MOVE) - bIsAttacking = false; - } - - if (!CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy && padUsed->JumpJustDown()) { - if (m_nEvadeAmount != 0 && m_pEvadingFrom) { - SetEvasiveDive((CPhysical*)m_pEvadingFrom, 1); - m_nEvadeAmount = 0; - m_pEvadingFrom = nil; - } else { - SetJump(); - } - } -} - -void -CPlayerPed::PlayerControl1stPersonRunAround(CPad *padUsed) -{ - float leftRight = padUsed->GetPedWalkLeftRight(); - float upDown = padUsed->GetPedWalkUpDown(); - float padMove = CVector2D(leftRight, upDown).Magnitude(); - float padMoveInGameUnit = padMove / PAD_MOVE_TO_GAME_WORLD_MOVE; - if (padMoveInGameUnit > 0.0f) { -#ifdef FREE_CAM - if (!CCamera::bFreeCam) - m_fRotationDest = CGeneral::LimitRadianAngle(TheCamera.Orientation); - else - m_fRotationDest = CGeneral::GetRadianAngleBetweenPoints(0.0f, 0.0f, -leftRight, upDown) - TheCamera.Orientation; -#else - m_fRotationDest = CGeneral::LimitRadianAngle(TheCamera.Orientation); -#endif - m_fMoveSpeed = min(padMoveInGameUnit, 0.07f * CTimer::GetTimeStep() + m_fMoveSpeed); - } else { - m_fMoveSpeed = 0.0f; - } - - if (m_nPedState == PED_JUMP) { - if (bIsInTheAir) { - if (bUsesCollision && !bHitSteepSlope && - (!bHitSomethingLastFrame || m_vecDamageNormal.z > 0.6f) - && m_fDistanceTravelled < CTimer::GetTimeStep() * 0.02 && m_vecMoveSpeed.MagnitudeSqr() < 0.01f) { - - float angleSin = Sin(m_fRotationCur); // originally sin(DEGTORAD(RADTODEG(m_fRotationCur))) o_O - float angleCos = Cos(m_fRotationCur); - ApplyMoveForce(-angleSin * 3.0f, 3.0f * angleCos, 0.05f); - } - } else if (bIsLanding) { - m_fMoveSpeed = 0.0f; - } - } - if (!(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy) - && padUsed->GetSprint()) { - m_nMoveState = PEDMOVE_SPRINT; - } - if (m_nPedState != PED_FIGHT) - SetRealMoveAnim(); - - if (!bIsInTheAir && !(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy) - && padUsed->JumpJustDown() && m_nPedState != PED_JUMP) { - ClearAttack(); - ClearWeaponTarget(); - if (m_nEvadeAmount != 0 && m_pEvadingFrom) { - SetEvasiveDive((CPhysical*)m_pEvadingFrom, 1); - m_nEvadeAmount = 0; - m_pEvadingFrom = nil; - } else { - SetJump(); - } - } -} - -void -CPlayerPed::KeepAreaAroundPlayerClear(void) -{ - BuildPedLists(); - for (int i = 0; i < m_numNearPeds; ++i) { - CPed *nearPed = m_nearPeds[i]; - if (nearPed->CharCreatedBy == RANDOM_CHAR && !nearPed->DyingOrDead()) { - if (nearPed->GetIsOnScreen()) { - if (nearPed->m_objective == OBJECTIVE_NONE) { - nearPed->SetFindPathAndFlee(this, 5000, true); - } else { - if (nearPed->EnteringCar()) - nearPed->QuitEnteringCar(); - - nearPed->ClearObjective(); - } - } else { - nearPed->FlagToDestroyWhenNextProcessed(); - } - } - } - CVector playerPos = (InVehicle() ? m_pMyVehicle->GetPosition() : GetPosition()); - - CVector pos = GetPosition(); - int16 lastVehicle; - CEntity *vehicles[8]; - CWorld::FindObjectsInRange(pos, CHECK_NEARBY_THINGS_MAX_DIST, true, &lastVehicle, 6, vehicles, false, true, false, false, false); - - for (int i = 0; i < lastVehicle; i++) { - CVehicle *veh = (CVehicle*)vehicles[i]; - if (veh->VehicleCreatedBy != MISSION_VEHICLE) { - if (veh->m_status != STATUS_PLAYER && veh->m_status != STATUS_PLAYER_DISABLED) { - if ((veh->GetPosition() - playerPos).MagnitudeSqr() > 25.0f) { - veh->AutoPilot.m_nTempAction = TEMPACT_WAIT; - veh->AutoPilot.m_nTimeTempAction = CTimer::GetTimeInMilliseconds() + 5000; - } else { - if (DotProduct2D(playerPos - veh->GetPosition(), veh->GetForward()) > 0.0f) - veh->AutoPilot.m_nTempAction = TEMPACT_REVERSE; - else - veh->AutoPilot.m_nTempAction = TEMPACT_GOFORWARD; - - veh->AutoPilot.m_nTimeTempAction = CTimer::GetTimeInMilliseconds() + 2000; - } - CCarCtrl::PossiblyRemoveVehicle(veh); - } - } - } -} - -void -CPlayerPed::EvaluateNeighbouringTarget(CEntity *candidate, CEntity **targetPtr, float *lastCloseness, float distLimit, float angleOffset, bool lookToLeft) -{ - CVector distVec = candidate->GetPosition() - GetPosition(); - if (distVec.Magnitude2D() <= distLimit) { - if (!DoesTargetHaveToBeBroken(candidate->GetPosition(), GetWeapon())) { -#ifdef VC_PED_PORTS - float angleBetweenUs = CGeneral::GetATanOfXY(candidate->GetPosition().x - TheCamera.GetPosition().x, - candidate->GetPosition().y - TheCamera.GetPosition().y); -#else - float angleBetweenUs = CGeneral::GetATanOfXY(distVec.x, distVec.y); -#endif - angleBetweenUs = CGeneral::LimitAngle(angleBetweenUs - angleOffset); - float closeness; - if (lookToLeft) { - closeness = angleBetweenUs > 0.0f ? -Abs(angleBetweenUs) : -100000.0f; - } else { - closeness = angleBetweenUs > 0.0f ? -100000.0f : -Abs(angleBetweenUs); - } - - if (closeness > *lastCloseness) { - *targetPtr = candidate; - *lastCloseness = closeness; - } - } - } -} - -void -CPlayerPed::EvaluateTarget(CEntity *candidate, CEntity **targetPtr, float *lastCloseness, float distLimit, float angleOffset, bool priority) -{ - CVector distVec = candidate->GetPosition() - GetPosition(); - float dist = distVec.Magnitude2D(); - if (dist <= distLimit) { - if (!DoesTargetHaveToBeBroken(candidate->GetPosition(), GetWeapon())) { - float angleBetweenUs = CGeneral::GetATanOfXY(distVec.x, distVec.y); - angleBetweenUs = CGeneral::LimitAngle(angleBetweenUs - angleOffset); - - float closeness = -dist - 5.0f * Abs(angleBetweenUs); - if (priority) { - closeness += 5.0f; - } - - if (closeness > *lastCloseness) { - *targetPtr = candidate; - *lastCloseness = closeness; - } - } - } -} - -bool -CPlayerPed::FindNextWeaponLockOnTarget(CEntity *previousTarget, bool lookToLeft) -{ - CEntity *nextTarget = nil; - float weaponRange = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_fRange; - // nextTarget = nil; - float lastCloseness = -10000.0f; - // unused - // CGeneral::GetATanOfXY(GetForward().x, GetForward().y); - CVector distVec = previousTarget->GetPosition() - GetPosition(); - float referenceBeta = CGeneral::GetATanOfXY(distVec.x, distVec.y); - - for (int h = CPools::GetPedPool()->GetSize() - 1; h >= 0; h--) { - CPed *pedToCheck = CPools::GetPedPool()->GetSlot(h); - if (pedToCheck) { - if (pedToCheck != FindPlayerPed() && pedToCheck != previousTarget) { - if (!pedToCheck->DyingOrDead() && !pedToCheck->bInVehicle - && pedToCheck->m_leader != FindPlayerPed() && OurPedCanSeeThisOne(pedToCheck)) { - - EvaluateNeighbouringTarget(pedToCheck, &nextTarget, &lastCloseness, - weaponRange, referenceBeta, lookToLeft); - } - } - } - } - for (int i = 0; i < ARRAY_SIZE(m_nTargettableObjects); i++) { - CObject *obj = CPools::GetObjectPool()->GetAt(m_nTargettableObjects[i]); - if (obj) - EvaluateNeighbouringTarget(obj, &nextTarget, &lastCloseness, weaponRange, referenceBeta, lookToLeft); - } - if (!nextTarget) - return false; - - m_pPointGunAt = nextTarget; - if (nextTarget) - nextTarget->RegisterReference((CEntity**)&m_pPointGunAt); - SetPointGunAt(nextTarget); - return true; -} - -bool -CPlayerPed::FindWeaponLockOnTarget(void) -{ - CEntity *nextTarget = nil; - float weaponRange = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_fRange; - - if (m_pPointGunAt) { - CVector distVec = m_pPointGunAt->GetPosition() - GetPosition(); - if (distVec.Magnitude2D() > weaponRange) { - m_pPointGunAt = nil; - return false; - } else { - return true; - } - } - - // nextTarget = nil; - float lastCloseness = -10000.0f; - float referenceBeta = CGeneral::GetATanOfXY(GetForward().x, GetForward().y); - for (int h = CPools::GetPedPool()->GetSize() - 1; h >= 0; h--) { - CPed *pedToCheck = CPools::GetPedPool()->GetSlot(h); - if (pedToCheck) { - if (pedToCheck != FindPlayerPed()) { - if (!pedToCheck->DyingOrDead() && !pedToCheck->bInVehicle - && pedToCheck->m_leader != FindPlayerPed() && OurPedCanSeeThisOne(pedToCheck)) { - - EvaluateTarget(pedToCheck, &nextTarget, &lastCloseness, - weaponRange, referenceBeta, IsThisPedAttackingPlayer(pedToCheck)); - } - } - } - } - for (int i = 0; i < ARRAY_SIZE(m_nTargettableObjects); i++) { - CObject *obj = CPools::GetObjectPool()->GetAt(m_nTargettableObjects[i]); - if (obj) - EvaluateTarget(obj, &nextTarget, &lastCloseness, weaponRange, referenceBeta, false); - } - if (!nextTarget) - return false; - - m_pPointGunAt = nextTarget; - if (nextTarget) - nextTarget->RegisterReference((CEntity**)&m_pPointGunAt); - SetPointGunAt(nextTarget); - return true; -} - -void -CPlayerPed::ProcessAnimGroups(void) -{ - AssocGroupId groupToSet; - if ((m_fWalkAngle <= -DEGTORAD(50.0f) || m_fWalkAngle >= DEGTORAD(50.0f)) - && TheCamera.Cams[TheCamera.ActiveCam].Using3rdPersonMouseCam() - && CanStrafeOrMouseControl()) { - - if (m_fWalkAngle >= -DEGTORAD(130.0f) && m_fWalkAngle <= DEGTORAD(130.0f)) { - if (m_fWalkAngle > 0.0f) { - if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER) - groupToSet = ASSOCGRP_ROCKETLEFT; - else - groupToSet = ASSOCGRP_PLAYERLEFT; - } else { - if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER) - groupToSet = ASSOCGRP_ROCKETRIGHT; - else - groupToSet = ASSOCGRP_PLAYERRIGHT; - } - } else { - if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER) - groupToSet = ASSOCGRP_ROCKETBACK; - else - groupToSet = ASSOCGRP_PLAYERBACK; - } - } else { - if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER) { - groupToSet = ASSOCGRP_PLAYERROCKET; - } else { - if (GetWeapon()->m_eWeaponType == WEAPONTYPE_BASEBALLBAT) { - groupToSet = ASSOCGRP_PLAYERBBBAT; - } else if (GetWeapon()->m_eWeaponType != WEAPONTYPE_COLT45 && GetWeapon()->m_eWeaponType != WEAPONTYPE_UZI) { - if (!GetWeapon()->IsType2Handed()) { - groupToSet = ASSOCGRP_PLAYER; - } else { - groupToSet = ASSOCGRP_PLAYER2ARMED; - } - } else { - groupToSet = ASSOCGRP_PLAYER1ARMED; - } - } - } - - if (m_animGroup != groupToSet) { - m_animGroup = groupToSet; - ReApplyMoveAnims(); - } -} - -void -CPlayerPed::ProcessPlayerWeapon(CPad *padUsed) -{ - CWeaponInfo *weaponInfo = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType); - if (m_bHasLockOnTarget && !m_pPointGunAt) { - TheCamera.ClearPlayerWeaponMode(); - CWeaponEffects::ClearCrossHair(); - ClearPointGunAt(); - } - if (!m_pFire) { - if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER || - GetWeapon()->m_eWeaponType == WEAPONTYPE_SNIPERRIFLE || GetWeapon()->m_eWeaponType == WEAPONTYPE_M16) { - if (padUsed->TargetJustDown()) { - SetStoredState(); - m_nPedState = PED_SNIPER_MODE; -#ifdef FREE_CAM - if (CCamera::bFreeCam && TheCamera.Cams[0].Using3rdPersonMouseCam()) { - m_fRotationCur = CGeneral::LimitRadianAngle(-TheCamera.Orientation); - SetHeading(m_fRotationCur); - } -#endif - if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER) - TheCamera.SetNewPlayerWeaponMode(CCam::MODE_ROCKETLAUNCHER, 0, 0); - else if (GetWeapon()->m_eWeaponType == WEAPONTYPE_SNIPERRIFLE) - TheCamera.SetNewPlayerWeaponMode(CCam::MODE_SNIPER, 0, 0); - else - TheCamera.SetNewPlayerWeaponMode(CCam::MODE_M16_1STPERSON, 0, 0); - - m_fMoveSpeed = 0.0f; - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_STANCE, 1000.0f); - } - if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER || GetWeapon()->m_eWeaponType == WEAPONTYPE_SNIPERRIFLE - || TheCamera.PlayerWeaponMode.Mode == CCam::MODE_M16_1STPERSON) - return; - } - } - - if (padUsed->GetWeapon() && m_nMoveState != PEDMOVE_SPRINT) { - if (m_nSelectedWepSlot == m_currentWeapon) { - if (m_pPointGunAt) { -#ifdef FREE_CAM - if (CCamera::bFreeCam && weaponInfo->m_eWeaponFire == WEAPON_FIRE_MELEE && m_fMoveSpeed < 1.0f) - StartFightAttack(padUsed->GetWeapon()); - else -#endif - SetAttack(m_pPointGunAt); - } else if (m_currentWeapon != WEAPONTYPE_UNARMED) { - if (m_nPedState == PED_ATTACK) { - if (padUsed->WeaponJustDown()) { - m_bHaveTargetSelected = true; - } else if (!m_bHaveTargetSelected) { - field_1376 += CTimer::GetTimeStepNonClipped(); - } - } else { - field_1376 = 0.0f; - m_bHaveTargetSelected = false; - } - SetAttack(nil); - } else if (padUsed->WeaponJustDown()) { - if (m_fMoveSpeed < 1.0f) - StartFightAttack(padUsed->GetWeapon()); - else - SetAttack(nil); - } - } - } else { - m_pedIK.m_flags &= ~CPedIK::LOOKAROUND_HEAD_ONLY; - if (m_nPedState == PED_ATTACK) { - m_bHaveTargetSelected = true; - bIsAttacking = false; - } - } - -#ifdef FREE_CAM - // Rotate player/arm when shooting. We don't have auto-rotation anymore - if (CCamera::m_bUseMouse3rdPerson && CCamera::bFreeCam && - m_nSelectedWepSlot == m_currentWeapon && m_nMoveState != PEDMOVE_SPRINT) { - - // Weapons except throwable and melee ones - if (weaponInfo->m_bCanAim || weaponInfo->m_b1stPerson || weaponInfo->m_bExpands) { - if ((padUsed->GetTarget() && weaponInfo->m_bCanAimWithArm) || padUsed->GetWeapon()) { - float limitedCam = CGeneral::LimitRadianAngle(-TheCamera.Orientation); - - // On this one we can rotate arm. - if (weaponInfo->m_bCanAimWithArm) { - if (!padUsed->GetWeapon()) { // making this State != ATTACK still stops it after attack. Re-start it immediately! - SetPointGunAt(nil); - bIsPointingGunAt = false; // to not stop after attack - } - - SetLookFlag(limitedCam, true); - SetAimFlag(limitedCam); -#ifdef VC_PED_PORTS - SetLookTimer(INT_MAX); // removing this makes head move for real, but I experinced some bugs. -#endif - } else { - m_fRotationDest = limitedCam; - m_headingRate = 50.0f; - - // Anim. fix for shotgun, ak47 and m16 (we must finish rot. it quickly) - if (weaponInfo->m_bCanAim && padUsed->WeaponJustDown()) { - m_fRotationCur = CGeneral::LimitRadianAngle(m_fRotationCur); - float limitedRotDest = m_fRotationDest; - - if (m_fRotationCur - PI > m_fRotationDest) { - limitedRotDest += 2 * PI; - } else if (PI + m_fRotationCur < m_fRotationDest) { - limitedRotDest -= 2 * PI; - } - - m_fRotationCur += (limitedRotDest - m_fRotationCur) / 2; - } - } - } else if (weaponInfo->m_bCanAimWithArm) - ClearPointGunAt(); - else - RestoreHeadingRate(); - } - } -#endif - - if (padUsed->GetTarget() && m_nSelectedWepSlot == m_currentWeapon && m_nMoveState != PEDMOVE_SPRINT) { - if (m_pPointGunAt) { - // what?? - if (!m_pPointGunAt -#ifdef FREE_CAM - || (!CCamera::bFreeCam && CCamera::m_bUseMouse3rdPerson) -#else - || CCamera::m_bUseMouse3rdPerson -#endif - || m_pPointGunAt->IsPed() && ((CPed*)m_pPointGunAt)->bInVehicle) { - ClearWeaponTarget(); - return; - } - if (CPlayerPed::DoesTargetHaveToBeBroken(m_pPointGunAt->GetPosition(), GetWeapon())) { - ClearWeaponTarget(); - return; - } - if (m_pPointGunAt) { - if (padUsed->ShiftTargetLeftJustDown()) - FindNextWeaponLockOnTarget(m_pPointGunAt, true); - if (padUsed->ShiftTargetRightJustDown()) - FindNextWeaponLockOnTarget(m_pPointGunAt, false); - } - TheCamera.SetNewPlayerWeaponMode(CCam::MODE_SYPHON, 0, 0); - TheCamera.UpdateAimingCoors(m_pPointGunAt->GetPosition()); - } -#ifdef FREE_CAM - else if ((CCamera::bFreeCam && weaponInfo->m_eWeaponFire == WEAPON_FIRE_MELEE) || (weaponInfo->m_bCanAim && !CCamera::m_bUseMouse3rdPerson)) { -#else - else if (weaponInfo->m_bCanAim && !CCamera::m_bUseMouse3rdPerson) { -#endif - if (padUsed->TargetJustDown()) - FindWeaponLockOnTarget(); - } - } else if (m_pPointGunAt) { - ClearWeaponTarget(); - } - - if (m_pPointGunAt) { -#ifndef VC_PED_PORTS - CVector markPos = m_pPointGunAt->GetPosition(); -#else - CVector markPos; - if (m_pPointGunAt->IsPed()) { - ((CPed*)m_pPointGunAt)->m_pedIK.GetComponentPosition((RwV3d*)markPos, PED_MID); - } else { - markPos = m_pPointGunAt->GetPosition(); - } -#endif - if (bCanPointGunAtTarget) { - CWeaponEffects::MarkTarget(markPos, 64, 0, 0, 255, 0.8f); - } else { - CWeaponEffects::MarkTarget(markPos, 64, 32, 0, 255, 0.8f); - } - } - m_bHasLockOnTarget = m_pPointGunAt != nil; -} - -void -CPlayerPed::PlayerControlZelda(CPad *padUsed) -{ - bool doSmoothSpray = DoWeaponSmoothSpray(); - float camOrientation = TheCamera.Orientation; - float leftRight = padUsed->GetPedWalkLeftRight(); - float upDown = padUsed->GetPedWalkUpDown(); - float padMoveInGameUnit; - bool smoothSprayWithoutMove = false; - - if (doSmoothSpray && upDown > 0.0f) { - padMoveInGameUnit = 0.0f; - smoothSprayWithoutMove = true; - } else { - padMoveInGameUnit = CVector2D(leftRight, upDown).Magnitude() / PAD_MOVE_TO_GAME_WORLD_MOVE; - } - - if (padMoveInGameUnit > 0.0f || smoothSprayWithoutMove) { - float padHeading = CGeneral::GetRadianAngleBetweenPoints(0.0f, 0.0f, -leftRight, upDown); - float neededTurn = CGeneral::LimitRadianAngle(padHeading - camOrientation); - if (doSmoothSpray) { - if (GetWeapon()->m_eWeaponType == WEAPONTYPE_FLAMETHROWER || GetWeapon()->m_eWeaponType == WEAPONTYPE_COLT45 - || GetWeapon()->m_eWeaponType == WEAPONTYPE_UZI) - m_fRotationDest = m_fRotationCur - leftRight / 128.0f * (PI / 80.0f) * CTimer::GetTimeStep(); - else - m_fRotationDest = m_fRotationCur - leftRight / 128.0f * (PI / 128.0f) * CTimer::GetTimeStep(); - } else { - m_fRotationDest = neededTurn; - } - - float maxAcc = 0.07f * CTimer::GetTimeStep(); - m_fMoveSpeed = min(padMoveInGameUnit, m_fMoveSpeed + maxAcc); - - } else { - m_fMoveSpeed = 0.0f; - } - - if (m_nPedState == PED_JUMP) { - if (bIsInTheAir) { - if (bUsesCollision && !bHitSteepSlope && - (!bHitSomethingLastFrame || m_vecDamageNormal.z > 0.6f) - && m_fDistanceTravelled < CTimer::GetTimeStep() * 0.02 && m_vecMoveSpeed.MagnitudeSqr() < 0.01f) { - - float angleSin = Sin(m_fRotationCur); // originally sin(DEGTORAD(RADTODEG(m_fRotationCur))) o_O - float angleCos = Cos(m_fRotationCur); - ApplyMoveForce(-angleSin * 3.0f, 3.0f * angleCos, 0.05f); - } - } else if (bIsLanding) { - m_fMoveSpeed = 0.0f; - } - } - - if (!(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy) - && padUsed->GetSprint()) { - m_nMoveState = PEDMOVE_SPRINT; - } - if (m_nPedState != PED_FIGHT) - SetRealMoveAnim(); - - if (!bIsInTheAir && !(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy) - && padUsed->JumpJustDown() && m_nPedState != PED_JUMP) { - ClearAttack(); - ClearWeaponTarget(); - if (m_nEvadeAmount != 0 && m_pEvadingFrom) { - SetEvasiveDive((CPhysical*)m_pEvadingFrom, 1); - m_nEvadeAmount = 0; - m_pEvadingFrom = nil; - } else { - SetJump(); - } - } -} - -void -CPlayerPed::ProcessControl(void) -{ - if (m_nEvadeAmount != 0) - --m_nEvadeAmount; - - if (m_nEvadeAmount == 0) - m_pEvadingFrom = nil; - - if (m_pCurrentPhysSurface && m_pCurrentPhysSurface->IsVehicle() && ((CVehicle*)m_pCurrentPhysSurface)->IsBoat()) { - bTryingToReachDryLand = true; - } else if (!(((uint8)CTimer::GetFrameCounter() + m_randomSeed) & 0xF)) { - CVehicle *nearVeh = (CVehicle*)CWorld::TestSphereAgainstWorld(GetPosition(), 7.0f, nil, - false, true, false, false, false, false); - if (nearVeh && nearVeh->IsBoat()) - bTryingToReachDryLand = true; - else - bTryingToReachDryLand = false; - } - CPed::ProcessControl(); - if (bWasPostponed) - return; - - CPad *padUsed = CPad::GetPad(0); - m_pWanted->Update(); - CEntity::PruneReferences(); - - if (m_nMoveState != PEDMOVE_RUN && m_nMoveState != PEDMOVE_SPRINT) - RestoreSprintEnergy(1.0f); - else if (m_nMoveState == PEDMOVE_RUN) - RestoreSprintEnergy(0.3f); - - if (m_nPedState == PED_DEAD) { - ClearWeaponTarget(); - return; - } - if (m_nPedState == PED_DIE) { - ClearWeaponTarget(); - if (CTimer::GetTimeInMilliseconds() > m_bloodyFootprintCountOrDeathTime + 4000) - SetDead(); - return; - } - if (m_nPedState == PED_DRIVING && m_objective != OBJECTIVE_LEAVE_VEHICLE) { - if (m_pMyVehicle->IsCar() && ((CAutomobile*)m_pMyVehicle)->Damage.GetDoorStatus(DOOR_FRONT_LEFT) == DOOR_STATUS_SWINGING) { - CAnimBlendAssociation *rollDoorAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_ROLLDOOR); - if (!rollDoorAssoc) { - rollDoorAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_ROLLDOOR_LOW); - } - - // These comparisons are wrong, they return uint16 - if (m_pMyVehicle->m_nGettingOutFlags & CAR_DOOR_FLAG_LF || rollDoorAssoc || padUsed - && (padUsed->GetAccelerate() != 0.0f || padUsed->GetSteeringLeftRight() != 0.0f - || padUsed->GetBrake() != 0.0f)) { - - if (rollDoorAssoc) - m_pMyVehicle->ProcessOpenDoor(CAR_DOOR_LF, ANIM_CAR_ROLLDOOR, rollDoorAssoc->currentTime); - } else { - m_pMyVehicle->m_nGettingOutFlags |= CAR_DOOR_FLAG_LF; - if (m_pMyVehicle->bLowVehicle) - rollDoorAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ROLLDOOR_LOW); - else - rollDoorAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ROLLDOOR); - - rollDoorAssoc->SetFinishCallback(PedAnimDoorCloseRollingCB, this); - } - } - return; - } - if (m_objective == OBJECTIVE_NONE) - m_nMoveState = PEDMOVE_STILL; - if (bIsLanding) - RunningLand(padUsed); - if (padUsed && padUsed->WeaponJustDown() && m_nPedState != PED_SNIPER_MODE) { - - // ...Really? - eWeaponType playerWeapon = FindPlayerPed()->GetWeapon()->m_eWeaponType; - if (playerWeapon == WEAPONTYPE_SNIPERRIFLE) { - DMAudio.PlayFrontEndSound(SOUND_WEAPON_SNIPER_SHOT_NO_ZOOM, 0); - } else if (playerWeapon == WEAPONTYPE_ROCKETLAUNCHER) { - DMAudio.PlayFrontEndSound(SOUND_WEAPON_ROCKET_SHOT_NO_ZOOM, 0); - } - } - - switch (m_nPedState) { - case PED_NONE: - case PED_IDLE: - case PED_FLEE_POS: - case PED_FLEE_ENTITY: - case PED_ATTACK: - case PED_FIGHT: - case PED_AIM_GUN: - if (!RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FLAG400)) { - if (TheCamera.Cams[0].Using3rdPersonMouseCam()) { - if (padUsed) - PlayerControl1stPersonRunAround(padUsed); - } else if (m_nPedState == PED_FIGHT) { - if (padUsed) - PlayerControlFighter(padUsed); - } else if (padUsed) { - PlayerControlZelda(padUsed); - } - } - if (IsPedInControl() && padUsed) - ProcessPlayerWeapon(padUsed); - break; - case PED_LOOK_ENTITY: - case PED_LOOK_HEADING: - case PED_WANDER_RANGE: - case PED_WANDER_PATH: - case PED_PURSUE: - case PED_FOLLOW_PATH: - case PED_ROCKET_ODE: - case PED_DUMMY: - case PED_PAUSE: - case PED_FACE_PHONE: - case PED_MAKE_CALL: - case PED_CHAT: - case PED_MUG: - case PED_AI_CONTROL: - case PED_FOLLOW_ROUTE: - case PED_CPR: - case PED_SOLICIT: - case PED_BUY_ICECREAM: - case PED_INVESTIGATE: - case PED_STEP_AWAY: - case PED_ON_FIRE: - case PED_UNKNOWN: - case PED_STATES_NO_AI: - case PED_STAGGER: - case PED_DIVE_AWAY: - case PED_STATES_NO_ST: - case PED_ARREST_PLAYER: - case PED_DRIVING: - case PED_PASSENGER: - case PED_TAXI_PASSENGER: - case PED_OPEN_DOOR: - case PED_DIE: - case PED_DEAD: - case PED_HANDS_UP: - break; - case PED_SEEK_ENTITY: - m_vecSeekPos = m_pSeekTarget->GetPosition(); - - // fall through - case PED_SEEK_POS: - switch (m_nMoveState) { - case PEDMOVE_WALK: - m_fMoveSpeed = 1.0f; - break; - case PEDMOVE_RUN: - m_fMoveSpeed = 1.8f; - break; - case PEDMOVE_SPRINT: - m_fMoveSpeed = 2.5f; - break; - default: - m_fMoveSpeed = 0.0f; - break; - } - SetRealMoveAnim(); - if (Seek()) { - RestorePreviousState(); - SetMoveState(PEDMOVE_STILL); - } - break; - case PED_SNIPER_MODE: - if (FindPlayerPed()->GetWeapon()->m_eWeaponType == WEAPONTYPE_M16) { - if (padUsed) - PlayerControlM16(padUsed); - } else if (padUsed) { - PlayerControlSniper(padUsed); - } - break; - case PED_SEEK_CAR: - case PED_SEEK_IN_BOAT: - if (bVehEnterDoorIsBlocked || bKindaStayInSamePlace) { - m_fMoveSpeed = 0.0f; - } else { - m_fMoveSpeed = min(2.0f, 2.0f * (m_vecSeekPos - GetPosition()).Magnitude2D()); - } - if (padUsed && !padUsed->ArePlayerControlsDisabled()) { - if (padUsed->GetTarget() || padUsed->GetLeftStickXJustDown() || padUsed->GetLeftStickYJustDown() || - padUsed->GetDPadUpJustDown() || padUsed->GetDPadDownJustDown() || padUsed->GetDPadLeftJustDown() || - padUsed->GetDPadRightJustDown()) { - - RestorePreviousState(); - if (m_objective == OBJECTIVE_ENTER_CAR_AS_PASSENGER || m_objective == OBJECTIVE_ENTER_CAR_AS_DRIVER) { - RestorePreviousObjective(); - } - } - } - if (padUsed && padUsed->GetSprint()) - m_nMoveState = PEDMOVE_SPRINT; - SetRealMoveAnim(); - break; - case PED_JUMP: - if (padUsed) - PlayerControlZelda(padUsed); - if (bIsLanding) - break; - - // This has been added later it seems - return; - case PED_FALL: - case PED_GETUP: - case PED_ENTER_TRAIN: - case PED_EXIT_TRAIN: - case PED_CARJACK: - case PED_DRAG_FROM_CAR: - case PED_ENTER_CAR: - case PED_STEAL_CAR: - case PED_EXIT_CAR: - ClearWeaponTarget(); - break; - case PED_ARRESTED: - if (m_nLastPedState == PED_DRAG_FROM_CAR && m_pVehicleAnim) - BeingDraggedFromCar(); - break; - } - if (padUsed && IsPedShootable()) { - ProcessWeaponSwitch(padUsed); - GetWeapon()->Update(m_audioEntityId); - } - ProcessAnimGroups(); - if (padUsed) { - if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FOLLOWPED - && TheCamera.Cams[TheCamera.ActiveCam].DirectionWasLooking == LOOKING_BEHIND) { - - m_lookTimer = 0; - float camAngle = CGeneral::LimitRadianAngle(TheCamera.Cams[TheCamera.ActiveCam].Front.Heading()); - float angleBetweenPlayerAndCam = Abs(camAngle - m_fRotationCur); - if (m_nPedState != PED_ATTACK - && angleBetweenPlayerAndCam > DEGTORAD(30.0f) && angleBetweenPlayerAndCam < DEGTORAD(330.0f)) { - - if (angleBetweenPlayerAndCam > DEGTORAD(150.0f) && angleBetweenPlayerAndCam < DEGTORAD(210.0f)) { - float rightTurnAngle = CGeneral::LimitRadianAngle(m_fRotationCur - DEGTORAD(150.0f)); - float leftTurnAngle = CGeneral::LimitRadianAngle(DEGTORAD(150.0f) + m_fRotationCur); - if (m_fLookDirection != 999999.0f) { - if (Abs(rightTurnAngle - m_fLookDirection) < Abs(leftTurnAngle - m_fLookDirection)) - camAngle = rightTurnAngle; - else - camAngle = leftTurnAngle; - } else { - camAngle = rightTurnAngle; - } - } - SetLookFlag(camAngle, true); - SetLookTimer(CTimer::GetTimeStepInMilliseconds() * 5.0f); - } else { - ClearLookFlag(); - } - } - } - if (m_nMoveState == PEDMOVE_SPRINT && bIsLooking) { - ClearLookFlag(); - SetLookTimer(250); - } - - if (m_vecMoveSpeed.Magnitude2D() < 0.1f) { - if (m_nSpeedTimer) { - if (CTimer::GetTimeInMilliseconds() > m_nSpeedTimer) - m_bSpeedTimerFlag = true; - } else { - m_nSpeedTimer = CTimer::GetTimeInMilliseconds() + 500; - } - } else { - m_nSpeedTimer = 0; - m_bSpeedTimerFlag = false; - } -} - -#include - -class CPlayerPed_ : public CPlayerPed -{ -public: - CPlayerPed* ctor(void) { return ::new (this) CPlayerPed(); } - void dtor(void) { CPlayerPed::~CPlayerPed(); } - void SetMoveAnim_(void) { CPlayerPed::SetMoveAnim(); } - void ProcessControl_(void) { CPlayerPed::ProcessControl(); } -}; - -STARTPATCHES - InjectHook(0x4EF7E0, &CPlayerPed_::ctor, PATCH_JUMP); - InjectHook(0x4EFB30, &CPlayerPed_::dtor, PATCH_JUMP); - InjectHook(0x4F3760, &CPlayerPed_::SetMoveAnim_, PATCH_JUMP); - InjectHook(0x4EFD90, &CPlayerPed_::ProcessControl_, PATCH_JUMP); - InjectHook(0x4F28A0, &CPlayerPed::ClearWeaponTarget, PATCH_JUMP); - InjectHook(0x4F3700, &CPlayerPed::AnnoyPlayerPed, PATCH_JUMP); - InjectHook(0x4F36C0, &CPlayerPed::GetPlayerInfoForThisPlayerPed, PATCH_JUMP); - InjectHook(0x4F2560, &CPlayerPed::MakeChangesForNewWeapon, PATCH_JUMP); - InjectHook(0x4F07C0, &CPlayerPed::ReApplyMoveAnims, PATCH_JUMP); - InjectHook(0x4F0880, &CPlayerPed::SetRealMoveAnim, PATCH_JUMP); - InjectHook(0x4F1810, &CPlayerPed::PlayerControlFighter, PATCH_JUMP); - InjectHook(0x4F1340, &CPlayerPed::RestoreSprintEnergy, PATCH_JUMP); - InjectHook(0x4F1380, &CPlayerPed::DoWeaponSmoothSpray, PATCH_JUMP); - InjectHook(0x4F36E0, &CPlayerPed::DoStuffToGoOnFire, PATCH_JUMP); - InjectHook(0x4F3350, &CPlayerPed::DoesTargetHaveToBeBroken, PATCH_JUMP); - InjectHook(0x4F31D0, &CPlayerPed::RunningLand, PATCH_JUMP); - InjectHook(0x4F2D00, &CPlayerPed::IsThisPedAttackingPlayer, PATCH_JUMP); - InjectHook(0x4F1CF0, &CPlayerPed::PlayerControlSniper, PATCH_JUMP); - InjectHook(0x4F2310, &CPlayerPed::ProcessWeaponSwitch, PATCH_JUMP); - InjectHook(0x4F1DF0, &CPlayerPed::PlayerControlM16, PATCH_JUMP); - InjectHook(0x4F3460, &CPlayerPed::KeepAreaAroundPlayerClear, PATCH_JUMP); - InjectHook(0x4F1970, &CPlayerPed::PlayerControl1stPersonRunAround, PATCH_JUMP); - InjectHook(0x4F1EF0, &CPlayerPed::ProcessPlayerWeapon, PATCH_JUMP); - InjectHook(0x4F2640, &CPlayerPed::ProcessAnimGroups, PATCH_JUMP); -ENDPATCHES +#include "common.h" +#include "patcher.h" +#include "PlayerPed.h" +#include "Wanted.h" +#include "Fire.h" +#include "DMAudio.h" +#include "Pad.h" +#include "Camera.h" +#include "WeaponEffects.h" +#include "ModelIndices.h" +#include "World.h" +#include "RpAnimBlend.h" +#include "AnimBlendAssociation.h" +#include "General.h" +#include "Pools.h" +#include "Darkel.h" +#include "CarCtrl.h" + +#define PAD_MOVE_TO_GAME_WORLD_MOVE 60.0f + +CPlayerPed::~CPlayerPed() +{ + delete m_pWanted; +} + +CPlayerPed::CPlayerPed(void) : CPed(PEDTYPE_PLAYER1) +{ + m_fMoveSpeed = 0.0f; + SetModelIndex(MI_PLAYER); + SetInitialState(); + + m_pWanted = new CWanted(); + m_pWanted->Initialise(); + m_pArrestingCop = nil; + m_currentWeapon = WEAPONTYPE_UNARMED; + m_nSelectedWepSlot = WEAPONTYPE_UNARMED; + m_nSpeedTimer = 0; + m_bSpeedTimerFlag = false; + m_pPointGunAt = nil; + m_nPedState = PED_IDLE; + m_fMaxStamina = 150.0f; + m_fCurrentStamina = m_fMaxStamina; + m_fStaminaProgress = 0.0f; + m_nEvadeAmount = 0; + field_1367 = 0; + m_nShotDelay = 0; + field_1376 = 0.0f; + m_bHaveTargetSelected = false; + m_bHasLockOnTarget = false; + m_bCanBeDamaged = true; + m_fWalkAngle = 0.0f; + m_fFPSMoveHeading = 0.0f; + m_nTargettableObjects[0] = m_nTargettableObjects[1] = m_nTargettableObjects[2] = m_nTargettableObjects[3] = -1; + field_1413 = 0; + for (int i = 0; i < 6; i++) { + m_vecSafePos[i] = CVector(0.0f, 0.0f, 0.0f); + m_pPedAtSafePos[i] = nil; + } +} + +void CPlayerPed::ClearWeaponTarget() +{ + if (m_nPedType == PEDTYPE_PLAYER1) { + m_pPointGunAt = nil; + TheCamera.ClearPlayerWeaponMode(); + CWeaponEffects::ClearCrossHair(); + } + ClearPointGunAt(); +} + +void +CPlayerPed::SetWantedLevel(int32 level) +{ + m_pWanted->SetWantedLevel(level); +} + +void +CPlayerPed::SetWantedLevelNoDrop(int32 level) +{ + m_pWanted->SetWantedLevelNoDrop(level); +} + +void +CPlayerPed::MakeObjectTargettable(int32 handle) +{ + for (int i = 0; i < ARRAY_SIZE(m_nTargettableObjects); i++) { + if ( +#ifdef FIX_BUGS + m_nTargettableObjects[i] == -1 || +#endif + CPools::GetObjectPool()->GetAt(m_nTargettableObjects[i]) == nil) { + m_nTargettableObjects[i] = handle; + return; + } + } +} + +// I don't know the actual purpose of parameter +void +CPlayerPed::AnnoyPlayerPed(bool annoyedByPassingEntity) +{ + if (m_pedStats->m_temper < 52) { + m_pedStats->m_temper++; + } else { + if (annoyedByPassingEntity) { + if (m_pedStats->m_temper < 55) { + m_pedStats->m_temper++; + } else { + m_pedStats->m_temper = 46; + } + } + } +} + +void +CPlayerPed::ClearAdrenaline(void) +{ + if (m_bAdrenalineActive && m_nAdrenalineTime != 0) { + m_nAdrenalineTime = 0; + CTimer::SetTimeScale(1.0f); + } +} + +CPlayerInfo * +CPlayerPed::GetPlayerInfoForThisPlayerPed() +{ + if (CWorld::Players[0].m_pPed == this) + return &CWorld::Players[0]; + + return nil; +} + +void +CPlayerPed::SetupPlayerPed(int32 index) +{ + CPlayerPed *player = new CPlayerPed(); + CWorld::Players[index].m_pPed = player; + + player->SetOrientation(0.0f, 0.0f, 0.0f); + + CWorld::Add(player); + player->m_wepAccuracy = 100; +} + +void +CPlayerPed::DeactivatePlayerPed(int32 index) +{ + CWorld::Remove(CWorld::Players[index].m_pPed); +} + +void +CPlayerPed::ReactivatePlayerPed(int32 index) +{ + CWorld::Add(CWorld::Players[index].m_pPed); +} + +void +CPlayerPed::UseSprintEnergy(void) +{ + if (m_fCurrentStamina > -150.0f && !CWorld::Players[CWorld::PlayerInFocus].m_bInfiniteSprint + && !m_bAdrenalineActive) { + m_fCurrentStamina = m_fCurrentStamina - CTimer::GetTimeStep(); + m_fStaminaProgress = m_fStaminaProgress + CTimer::GetTimeStep(); + } + + if (m_fStaminaProgress >= 500.0f) { + m_fStaminaProgress = 0; + if (m_fMaxStamina < 1000.0f) + m_fMaxStamina += 10.0f; + } +} + +void +CPlayerPed::MakeChangesForNewWeapon(int8 weapon) +{ + if (m_nPedState == PED_SNIPER_MODE) { + RestorePreviousState(); + TheCamera.ClearPlayerWeaponMode(); + } + SetCurrentWeapon(weapon); + + GetWeapon()->m_nAmmoInClip = min(GetWeapon()->m_nAmmoTotal, CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_nAmountofAmmunition); + + if (!(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bCanAim)) + ClearWeaponTarget(); + + CAnimBlendAssociation *weaponAnim = RpAnimBlendClumpGetAssociation(GetClump(), CWeaponInfo::GetWeaponInfo(WEAPONTYPE_SNIPERRIFLE)->m_AnimToPlay); + if (weaponAnim) { + weaponAnim->SetRun(); + weaponAnim->flags |= ASSOC_FADEOUTWHENDONE; + } + TheCamera.ClearPlayerWeaponMode(); +} + +void +CPlayerPed::ReApplyMoveAnims(void) +{ + static AnimationId moveAnims[] = { ANIM_WALK, ANIM_RUN, ANIM_SPRINT, ANIM_IDLE_STANCE, ANIM_WALK_START }; + + for(int i = 0; i < ARRAY_SIZE(moveAnims); i++) { + CAnimBlendAssociation *curMoveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), moveAnims[i]); + if (curMoveAssoc) { + if (strcmp(CAnimManager::GetAnimAssociation(m_animGroup, moveAnims[i])->hierarchy->name, curMoveAssoc->hierarchy->name) != 0) { + CAnimBlendAssociation *newMoveAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, moveAnims[i]); + newMoveAssoc->blendDelta = curMoveAssoc->blendDelta; + newMoveAssoc->blendAmount = curMoveAssoc->blendAmount; + curMoveAssoc->blendDelta = -1000.0f; + curMoveAssoc->flags |= ASSOC_DELETEFADEDOUT; + } + } + } +} + +void +CPlayerPed::SetInitialState(void) +{ + m_bAdrenalineActive = false; + m_nAdrenalineTime = 0; + CTimer::SetTimeStep(1.0f); + m_pSeekTarget = nil; + m_vecSeekPos = { 0.0f, 0.0f, 0.0f }; + m_fleeFromPosX = 0.0f; + m_fleeFromPosY = 0.0f; + m_fleeFrom = nil; + m_fleeTimer = 0; + m_objective = OBJECTIVE_NONE; + m_prevObjective = OBJECTIVE_NONE; + bUsesCollision = true; + ClearAimFlag(); + ClearLookFlag(); + bIsPointingGunAt = false; + bRenderPedInCar = true; + if (m_pFire) + m_pFire->Extinguish(); + RpAnimBlendClumpRemoveAllAssociations(GetClump()); + m_nPedState = PED_IDLE; + SetMoveState(PEDMOVE_STILL); + m_nLastPedState = PED_NONE; + m_animGroup = ASSOCGRP_PLAYER; + m_fMoveSpeed = 0.0f; + m_nSelectedWepSlot = WEAPONTYPE_UNARMED; + m_nEvadeAmount = 0; + m_pEvadingFrom = nil; + bIsPedDieAnimPlaying = false; + SetRealMoveAnim(); + m_bCanBeDamaged = true; + m_pedStats->m_temper = 50; + m_fWalkAngle = 0.0f; +} + +void +CPlayerPed::SetRealMoveAnim(void) +{ + CAnimBlendAssociation *curWalkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WALK); + CAnimBlendAssociation *curRunAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN); + CAnimBlendAssociation *curSprintAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_SPRINT); + CAnimBlendAssociation *curWalkStartAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WALK_START); + CAnimBlendAssociation *curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE); + CAnimBlendAssociation *curRunStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP); + CAnimBlendAssociation *curRunStopRAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP_R); + if (bResetWalkAnims) { + if (curWalkAssoc) + curWalkAssoc->SetCurrentTime(0.0f); + if (curRunAssoc) + curRunAssoc->SetCurrentTime(0.0f); + if (curSprintAssoc) + curSprintAssoc->SetCurrentTime(0.0f); + bResetWalkAnims = false; + } + + if (!curIdleAssoc) + curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED); + if (!curIdleAssoc) + curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE); + + if ((!curRunStopAssoc || !(curRunStopAssoc->IsRunning())) && (!curRunStopRAssoc || !(curRunStopRAssoc->IsRunning()))) { + + if (curRunStopAssoc && curRunStopAssoc->blendDelta >= 0.0f || curRunStopRAssoc && curRunStopRAssoc->blendDelta >= 0.0f) { + if (curRunStopAssoc) { + curRunStopAssoc->flags |= ASSOC_DELETEFADEDOUT; + curRunStopAssoc->blendAmount = 1.0f; + curRunStopAssoc->blendDelta = -8.0f; + } else if (curRunStopRAssoc) { + curRunStopRAssoc->flags |= ASSOC_DELETEFADEDOUT; + curRunStopRAssoc->blendAmount = 1.0f; + curRunStopRAssoc->blendDelta = -8.0f; + } + + RestoreHeadingRate(); + if (!curIdleAssoc) { + if (m_fCurrentStamina < 0.0f && !CWorld::TestSphereAgainstWorld(GetPosition(), 0.0f, + nil, true, false, false, false, false, false)) { + curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 8.0f); + + } else { + curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 8.0f); + } + m_nWaitTimer = CTimer::GetTimeInMilliseconds() + CGeneral::GetRandomNumberInRange(2500, 4000); + } + curIdleAssoc->blendAmount = 0.0f; + curIdleAssoc->blendDelta = 8.0f; + + } else if (m_fMoveSpeed == 0.0f && !curSprintAssoc) { + if (!curIdleAssoc) { + if (m_fCurrentStamina < 0.0f && !CWorld::TestSphereAgainstWorld(GetPosition(), 0.0f, + nil, true, false, false, false, false, false)) { + curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 4.0f); + + } else { + curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f); + } + + m_nWaitTimer = CTimer::GetTimeInMilliseconds() + CGeneral::GetRandomNumberInRange(2500, 4000); + } + + if (m_fCurrentStamina > 0.0f && curIdleAssoc->animId == ANIM_IDLE_TIRED) { + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f); + + } else if (m_nPedState != PED_FIGHT) { + if (m_fCurrentStamina < 0.0f && curIdleAssoc->animId != ANIM_IDLE_TIRED + && !CWorld::TestSphereAgainstWorld(GetPosition(), 0.0f, nil, true, false, false, false, false, false)) { + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 4.0f); + + } else if (curIdleAssoc->animId != ANIM_IDLE_STANCE) { + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f); + } + } + + m_nMoveState = PEDMOVE_STILL; + } else { + if (curIdleAssoc) { + if (curWalkStartAssoc) { + curWalkStartAssoc->blendAmount = 1.0f; + curWalkStartAssoc->blendDelta = 0.0f; + } else { + curWalkStartAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_WALK_START); + } + if (curWalkAssoc) + curWalkAssoc->SetCurrentTime(0.0f); + if (curRunAssoc) + curRunAssoc->SetCurrentTime(0.0f); + + delete curIdleAssoc; + delete RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED); + delete RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE); + delete curSprintAssoc; + + curSprintAssoc = nil; + m_nMoveState = PEDMOVE_WALK; + } + if (curRunStopAssoc) { + delete curRunStopAssoc; + RestoreHeadingRate(); + } + if (curRunStopRAssoc) { + delete curRunStopRAssoc; + RestoreHeadingRate(); + } + if (!curWalkAssoc) { + curWalkAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_WALK); + curWalkAssoc->blendAmount = 0.0f; + } + if (!curRunAssoc) { + curRunAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_RUN); + curRunAssoc->blendAmount = 0.0f; + } + if (curWalkStartAssoc && !(curWalkStartAssoc->IsRunning())) { + delete curWalkStartAssoc; + curWalkStartAssoc = nil; + curWalkAssoc->SetRun(); + curRunAssoc->SetRun(); + } + if (m_nMoveState == PEDMOVE_SPRINT) { + if (m_fCurrentStamina < 0.0f && (m_fCurrentStamina <= -150.0f || !curSprintAssoc || curSprintAssoc->blendDelta < 0.0f)) + m_nMoveState = PEDMOVE_STILL; + + if (curWalkStartAssoc) + m_nMoveState = PEDMOVE_STILL; + } + + if (curSprintAssoc && (m_nMoveState != PEDMOVE_SPRINT || m_fMoveSpeed < 0.4f)) { + if (curSprintAssoc->blendAmount == 0.0f) { + curSprintAssoc->blendDelta = -1000.0f; + curSprintAssoc->flags |= ASSOC_DELETEFADEDOUT; + + } else if (curSprintAssoc->blendDelta >= 0.0f || curSprintAssoc->blendAmount >= 0.8f) { + if (m_fMoveSpeed < 0.4f) { + AnimationId runStopAnim; + if (curSprintAssoc->currentTime / curSprintAssoc->hierarchy->totalLength < 0.5) // double + runStopAnim = ANIM_RUN_STOP; + else + runStopAnim = ANIM_RUN_STOP_R; + CAnimBlendAssociation* newRunStopAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, runStopAnim); + newRunStopAssoc->blendAmount = 1.0f; + newRunStopAssoc->SetDeleteCallback(RestoreHeadingRateCB, this); + m_headingRate = 0.0f; + curSprintAssoc->flags |= ASSOC_DELETEFADEDOUT; + curSprintAssoc->blendDelta = -1000.0f; + curWalkAssoc->flags &= ~ASSOC_RUNNING; + curWalkAssoc->blendAmount = 0.0f; + curWalkAssoc->blendDelta = 0.0f; + curRunAssoc->flags &= ~ASSOC_RUNNING; + curRunAssoc->blendAmount = 0.0f; + curRunAssoc->blendDelta = 0.0f; + } else if (curSprintAssoc->blendDelta >= 0.0f) { + + // Stop sprinting when tired + curSprintAssoc->flags |= ASSOC_DELETEFADEDOUT; + curSprintAssoc->blendDelta = -1.0f; + curRunAssoc->blendDelta = 1.0f; + } + } else if (m_fMoveSpeed < 1.0f) { + curSprintAssoc->blendDelta = -8.0f; + curRunAssoc->blendDelta = 8.0f; + } + } else if (curWalkStartAssoc) { + curWalkAssoc->flags &= ~ASSOC_RUNNING; + curRunAssoc->flags &= ~ASSOC_RUNNING; + curWalkAssoc->blendAmount = 0.0f; + curRunAssoc->blendAmount = 0.0f; + + } else if (m_nMoveState == PEDMOVE_SPRINT) { + if (curSprintAssoc) { + if (curSprintAssoc->blendDelta < 0.0f) { + curSprintAssoc->blendDelta = 2.0f; + curRunAssoc->blendDelta = -2.0f; + } + } else { + curWalkAssoc->blendAmount = 0.0f; + curRunAssoc->blendAmount = 1.0f; + curSprintAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_SPRINT, 2.0f); + } + UseSprintEnergy(); + } else { + if (m_fMoveSpeed < 1.0f) { + curWalkAssoc->blendAmount = 1.0f; + curRunAssoc->blendAmount = 0.0f; + m_nMoveState = PEDMOVE_WALK; + } else if (m_fMoveSpeed < 2.0f) { + curWalkAssoc->blendAmount = 2.0f - m_fMoveSpeed; + curRunAssoc->blendAmount = m_fMoveSpeed - 1.0f; + m_nMoveState = PEDMOVE_RUN; + } else { + curWalkAssoc->blendAmount = 0.0f; + curRunAssoc->blendAmount = 1.0f; + m_nMoveState = PEDMOVE_RUN; + } + } + } + } + if (m_bAdrenalineActive) { + if (CTimer::GetTimeInMilliseconds() > m_nAdrenalineTime) { + m_bAdrenalineActive = false; + CTimer::SetTimeScale(1.0f); + if (curWalkStartAssoc) + curWalkStartAssoc->speed = 1.0f; + if (curWalkAssoc) + curWalkAssoc->speed = 1.0f; + if (curRunAssoc) + curRunAssoc->speed = 1.0f; + if (curSprintAssoc) + curSprintAssoc->speed = 1.0f; + } else { + CTimer::SetTimeScale(1.0f / 3); + if (curWalkStartAssoc) + curWalkStartAssoc->speed = 2.0f; + if (curWalkAssoc) + curWalkAssoc->speed = 2.0f; + if (curRunAssoc) + curRunAssoc->speed = 2.0f; + if (curSprintAssoc) + curSprintAssoc->speed = 2.0f; + } + } +} + +void +CPlayerPed::RestoreSprintEnergy(float restoreSpeed) +{ + if (m_fCurrentStamina < m_fMaxStamina) + m_fCurrentStamina += restoreSpeed * CTimer::GetTimeStep() * 0.5f; +} + +bool +CPlayerPed::DoWeaponSmoothSpray(void) +{ + if (m_nPedState == PED_ATTACK && !m_pPointGunAt) { + eWeaponType weapon = GetWeapon()->m_eWeaponType; + if (weapon == WEAPONTYPE_FLAMETHROWER || weapon == WEAPONTYPE_COLT45 || weapon == WEAPONTYPE_UZI || weapon == WEAPONTYPE_SHOTGUN || + weapon == WEAPONTYPE_AK47 || weapon == WEAPONTYPE_M16 || weapon == WEAPONTYPE_HELICANNON) + return true; + } + return false; +} + +void +CPlayerPed::DoStuffToGoOnFire(void) +{ + if (m_nPedState == PED_SNIPER_MODE) + TheCamera.ClearPlayerWeaponMode(); +} + +bool +CPlayerPed::DoesTargetHaveToBeBroken(CVector target, CWeapon *weaponUsed) +{ + CVector distVec = target - GetPosition(); + + if (distVec.Magnitude() > CWeaponInfo::GetWeaponInfo(weaponUsed->m_eWeaponType)->m_fRange) + return true; + + if (weaponUsed->m_eWeaponType != WEAPONTYPE_SHOTGUN && weaponUsed->m_eWeaponType != WEAPONTYPE_AK47) + return false; + + distVec.Normalise(); + + if (DotProduct(distVec,GetForward()) < 0.4f) + return true; + + return false; +} + +// Cancels landing anim while running & jumping? I think +void +CPlayerPed::RunningLand(CPad *padUsed) +{ + CAnimBlendAssociation *landAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_LAND); + if (landAssoc && landAssoc->currentTime == 0.0f && m_fMoveSpeed > 1.5f + && padUsed && (padUsed->GetPedWalkLeftRight() != 0.0f || padUsed->GetPedWalkUpDown() != 0.0f)) { + + landAssoc->blendDelta = -1000.0f; + landAssoc->flags |= ASSOC_DELETEFADEDOUT; + + CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_JUMP_LAND)->SetFinishCallback(FinishJumpCB, this); + + if (m_nPedState == PED_JUMP) + RestorePreviousState(); + } +} + +bool +CPlayerPed::IsThisPedAttackingPlayer(CPed *suspect) +{ + if (suspect->m_pPointGunAt == this) + return true; + + switch (suspect->m_objective) { + case OBJECTIVE_KILL_CHAR_ON_FOOT: + case OBJECTIVE_KILL_CHAR_ANY_MEANS: + if (suspect->m_pedInObjective == this) + return true; + + break; + default: + break; + } + return false; +} + +void +CPlayerPed::PlayerControlSniper(CPad *padUsed) +{ + ProcessWeaponSwitch(padUsed); + TheCamera.PlayerExhaustion = (1.0f - (m_fCurrentStamina - -150.0f) / 300.0f) * 0.9f + 0.1f; + + if (!padUsed->GetTarget()) { + RestorePreviousState(); + TheCamera.ClearPlayerWeaponMode(); + } + + if (padUsed->WeaponJustDown()) { + CVector firePos(0.0f, 0.0f, 0.6f); + firePos = GetMatrix() * firePos; + GetWeapon()->Fire(this, &firePos); + } + GetWeapon()->Update(m_audioEntityId); +} + +// I think R* also used goto in here. +void +CPlayerPed::ProcessWeaponSwitch(CPad *padUsed) +{ + if (CDarkel::FrenzyOnGoing()) + goto switchDetectDone; + + if (padUsed->CycleWeaponRightJustDown() && !m_pPointGunAt) { + + if (TheCamera.PlayerWeaponMode.Mode != CCam::MODE_M16_1STPERSON + && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_M16_1STPERSON_RUNABOUT + && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_SNIPER + && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_SNIPER_RUNABOUT + && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_ROCKETLAUNCHER + && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_ROCKETLAUNCHER_RUNABOUT) { + + for (m_nSelectedWepSlot = m_currentWeapon + 1; m_nSelectedWepSlot < WEAPONTYPE_TOTAL_INVENTORY_WEAPONS; ++m_nSelectedWepSlot) { + if (HasWeapon(m_nSelectedWepSlot) && GetWeapon(m_nSelectedWepSlot).HasWeaponAmmoToBeUsed()) { + goto switchDetectDone; + } + } + m_nSelectedWepSlot = WEAPONTYPE_UNARMED; + } + } else if (padUsed->CycleWeaponLeftJustDown() && !m_pPointGunAt) { + if (TheCamera.PlayerWeaponMode.Mode != CCam::MODE_M16_1STPERSON + && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_SNIPER + && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_ROCKETLAUNCHER) { + + for (m_nSelectedWepSlot = m_currentWeapon - 1; ; --m_nSelectedWepSlot) { + if (m_nSelectedWepSlot < WEAPONTYPE_UNARMED) + m_nSelectedWepSlot = WEAPONTYPE_DETONATOR; + + if (HasWeapon(m_nSelectedWepSlot) && GetWeapon(m_nSelectedWepSlot).HasWeaponAmmoToBeUsed()) { + goto switchDetectDone; + } + } + } + } else if (CWeaponInfo::GetWeaponInfo((eWeaponType)m_currentWeapon)->m_eWeaponFire != WEAPON_FIRE_MELEE) { + if (GetWeapon(m_currentWeapon).m_nAmmoTotal <= 0) { + if (TheCamera.PlayerWeaponMode.Mode != CCam::MODE_M16_1STPERSON + && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_SNIPER + && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_ROCKETLAUNCHER) { + + for (m_nSelectedWepSlot = m_currentWeapon - 1; m_nSelectedWepSlot >= 0; --m_nSelectedWepSlot) { + if (m_nSelectedWepSlot == WEAPONTYPE_BASEBALLBAT && HasWeapon(WEAPONTYPE_BASEBALLBAT) + || GetWeapon(m_nSelectedWepSlot).m_nAmmoTotal > 0 && m_nSelectedWepSlot != WEAPONTYPE_MOLOTOV && m_nSelectedWepSlot != WEAPONTYPE_GRENADE) { + goto switchDetectDone; + } + } + m_nSelectedWepSlot = WEAPONTYPE_UNARMED; + } + } + } + +switchDetectDone: + if (m_nSelectedWepSlot != m_currentWeapon) { + if (m_nPedState != PED_ATTACK && m_nPedState != PED_AIM_GUN && m_nPedState != PED_FIGHT) + MakeChangesForNewWeapon(m_nSelectedWepSlot); + } +} + +void +CPlayerPed::PlayerControlM16(CPad *padUsed) +{ + ProcessWeaponSwitch(padUsed); + TheCamera.PlayerExhaustion = (1.0f - (m_fCurrentStamina - -150.0f) / 300.0f) * 0.9f + 0.1f; + + if (!padUsed->GetTarget()) { + RestorePreviousState(); + TheCamera.ClearPlayerWeaponMode(); + } + + if (padUsed->GetWeapon()) { + CVector firePos(0.0f, 0.0f, 0.6f); + firePos = GetMatrix() * firePos; + GetWeapon()->Fire(this, &firePos); + } + GetWeapon()->Update(m_audioEntityId); +} + +void +CPlayerPed::PlayerControlFighter(CPad *padUsed) +{ + float leftRight = padUsed->GetPedWalkLeftRight(); + float upDown = padUsed->GetPedWalkUpDown(); + float padMove = CVector2D(leftRight, upDown).Magnitude(); + + if (padMove > 0.0f) { + m_fRotationDest = CGeneral::GetRadianAngleBetweenPoints(0.0f, 0.0f, -leftRight, upDown) - TheCamera.Orientation; + m_takeAStepAfterAttack = padMove > 2 * PAD_MOVE_TO_GAME_WORLD_MOVE; + if (padUsed->GetSprint() && padMove > 1 * PAD_MOVE_TO_GAME_WORLD_MOVE) + bIsAttacking = false; + } + + if (!CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy && padUsed->JumpJustDown()) { + if (m_nEvadeAmount != 0 && m_pEvadingFrom) { + SetEvasiveDive((CPhysical*)m_pEvadingFrom, 1); + m_nEvadeAmount = 0; + m_pEvadingFrom = nil; + } else { + SetJump(); + } + } +} + +void +CPlayerPed::PlayerControl1stPersonRunAround(CPad *padUsed) +{ + float leftRight = padUsed->GetPedWalkLeftRight(); + float upDown = padUsed->GetPedWalkUpDown(); + float padMove = CVector2D(leftRight, upDown).Magnitude(); + float padMoveInGameUnit = padMove / PAD_MOVE_TO_GAME_WORLD_MOVE; + if (padMoveInGameUnit > 0.0f) { +#ifdef FREE_CAM + if (!CCamera::bFreeCam) + m_fRotationDest = CGeneral::LimitRadianAngle(TheCamera.Orientation); + else + m_fRotationDest = CGeneral::GetRadianAngleBetweenPoints(0.0f, 0.0f, -leftRight, upDown) - TheCamera.Orientation; +#else + m_fRotationDest = CGeneral::LimitRadianAngle(TheCamera.Orientation); +#endif + m_fMoveSpeed = min(padMoveInGameUnit, 0.07f * CTimer::GetTimeStep() + m_fMoveSpeed); + } else { + m_fMoveSpeed = 0.0f; + } + + if (m_nPedState == PED_JUMP) { + if (bIsInTheAir) { + if (bUsesCollision && !bHitSteepSlope && + (!bHitSomethingLastFrame || m_vecDamageNormal.z > 0.6f) + && m_fDistanceTravelled < CTimer::GetTimeStep() * 0.02 && m_vecMoveSpeed.MagnitudeSqr() < 0.01f) { + + float angleSin = Sin(m_fRotationCur); // originally sin(DEGTORAD(RADTODEG(m_fRotationCur))) o_O + float angleCos = Cos(m_fRotationCur); + ApplyMoveForce(-angleSin * 3.0f, 3.0f * angleCos, 0.05f); + } + } else if (bIsLanding) { + m_fMoveSpeed = 0.0f; + } + } + if (!(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy) + && padUsed->GetSprint()) { + m_nMoveState = PEDMOVE_SPRINT; + } + if (m_nPedState != PED_FIGHT) + SetRealMoveAnim(); + + if (!bIsInTheAir && !(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy) + && padUsed->JumpJustDown() && m_nPedState != PED_JUMP) { + ClearAttack(); + ClearWeaponTarget(); + if (m_nEvadeAmount != 0 && m_pEvadingFrom) { + SetEvasiveDive((CPhysical*)m_pEvadingFrom, 1); + m_nEvadeAmount = 0; + m_pEvadingFrom = nil; + } else { + SetJump(); + } + } +} + +void +CPlayerPed::KeepAreaAroundPlayerClear(void) +{ + BuildPedLists(); + for (int i = 0; i < m_numNearPeds; ++i) { + CPed *nearPed = m_nearPeds[i]; + if (nearPed->CharCreatedBy == RANDOM_CHAR && !nearPed->DyingOrDead()) { + if (nearPed->GetIsOnScreen()) { + if (nearPed->m_objective == OBJECTIVE_NONE) { + nearPed->SetFindPathAndFlee(this, 5000, true); + } else { + if (nearPed->EnteringCar()) + nearPed->QuitEnteringCar(); + + nearPed->ClearObjective(); + } + } else { + nearPed->FlagToDestroyWhenNextProcessed(); + } + } + } + CVector playerPos = (InVehicle() ? m_pMyVehicle->GetPosition() : GetPosition()); + + CVector pos = GetPosition(); + int16 lastVehicle; + CEntity *vehicles[8]; + CWorld::FindObjectsInRange(pos, CHECK_NEARBY_THINGS_MAX_DIST, true, &lastVehicle, 6, vehicles, false, true, false, false, false); + + for (int i = 0; i < lastVehicle; i++) { + CVehicle *veh = (CVehicle*)vehicles[i]; + if (veh->VehicleCreatedBy != MISSION_VEHICLE) { + if (veh->m_status != STATUS_PLAYER && veh->m_status != STATUS_PLAYER_DISABLED) { + if ((veh->GetPosition() - playerPos).MagnitudeSqr() > 25.0f) { + veh->AutoPilot.m_nTempAction = TEMPACT_WAIT; + veh->AutoPilot.m_nTimeTempAction = CTimer::GetTimeInMilliseconds() + 5000; + } else { + if (DotProduct2D(playerPos - veh->GetPosition(), veh->GetForward()) > 0.0f) + veh->AutoPilot.m_nTempAction = TEMPACT_REVERSE; + else + veh->AutoPilot.m_nTempAction = TEMPACT_GOFORWARD; + + veh->AutoPilot.m_nTimeTempAction = CTimer::GetTimeInMilliseconds() + 2000; + } + CCarCtrl::PossiblyRemoveVehicle(veh); + } + } + } +} + +void +CPlayerPed::EvaluateNeighbouringTarget(CEntity *candidate, CEntity **targetPtr, float *lastCloseness, float distLimit, float angleOffset, bool lookToLeft) +{ + CVector distVec = candidate->GetPosition() - GetPosition(); + if (distVec.Magnitude2D() <= distLimit) { + if (!DoesTargetHaveToBeBroken(candidate->GetPosition(), GetWeapon())) { +#ifdef VC_PED_PORTS + float angleBetweenUs = CGeneral::GetATanOfXY(candidate->GetPosition().x - TheCamera.GetPosition().x, + candidate->GetPosition().y - TheCamera.GetPosition().y); +#else + float angleBetweenUs = CGeneral::GetATanOfXY(distVec.x, distVec.y); +#endif + angleBetweenUs = CGeneral::LimitAngle(angleBetweenUs - angleOffset); + float closeness; + if (lookToLeft) { + closeness = angleBetweenUs > 0.0f ? -Abs(angleBetweenUs) : -100000.0f; + } else { + closeness = angleBetweenUs > 0.0f ? -100000.0f : -Abs(angleBetweenUs); + } + + if (closeness > *lastCloseness) { + *targetPtr = candidate; + *lastCloseness = closeness; + } + } + } +} + +void +CPlayerPed::EvaluateTarget(CEntity *candidate, CEntity **targetPtr, float *lastCloseness, float distLimit, float angleOffset, bool priority) +{ + CVector distVec = candidate->GetPosition() - GetPosition(); + float dist = distVec.Magnitude2D(); + if (dist <= distLimit) { + if (!DoesTargetHaveToBeBroken(candidate->GetPosition(), GetWeapon())) { + float angleBetweenUs = CGeneral::GetATanOfXY(distVec.x, distVec.y); + angleBetweenUs = CGeneral::LimitAngle(angleBetweenUs - angleOffset); + + float closeness = -dist - 5.0f * Abs(angleBetweenUs); + if (priority) { + closeness += 5.0f; + } + + if (closeness > *lastCloseness) { + *targetPtr = candidate; + *lastCloseness = closeness; + } + } + } +} + +bool +CPlayerPed::FindNextWeaponLockOnTarget(CEntity *previousTarget, bool lookToLeft) +{ + CEntity *nextTarget = nil; + float weaponRange = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_fRange; + // nextTarget = nil; + float lastCloseness = -10000.0f; + // unused + // CGeneral::GetATanOfXY(GetForward().x, GetForward().y); + CVector distVec = previousTarget->GetPosition() - GetPosition(); + float referenceBeta = CGeneral::GetATanOfXY(distVec.x, distVec.y); + + for (int h = CPools::GetPedPool()->GetSize() - 1; h >= 0; h--) { + CPed *pedToCheck = CPools::GetPedPool()->GetSlot(h); + if (pedToCheck) { + if (pedToCheck != FindPlayerPed() && pedToCheck != previousTarget) { + if (!pedToCheck->DyingOrDead() && !pedToCheck->bInVehicle + && pedToCheck->m_leader != FindPlayerPed() && OurPedCanSeeThisOne(pedToCheck)) { + + EvaluateNeighbouringTarget(pedToCheck, &nextTarget, &lastCloseness, + weaponRange, referenceBeta, lookToLeft); + } + } + } + } + for (int i = 0; i < ARRAY_SIZE(m_nTargettableObjects); i++) { + CObject *obj = CPools::GetObjectPool()->GetAt(m_nTargettableObjects[i]); + if (obj) + EvaluateNeighbouringTarget(obj, &nextTarget, &lastCloseness, weaponRange, referenceBeta, lookToLeft); + } + if (!nextTarget) + return false; + + m_pPointGunAt = nextTarget; + if (nextTarget) + nextTarget->RegisterReference((CEntity**)&m_pPointGunAt); + SetPointGunAt(nextTarget); + return true; +} + +bool +CPlayerPed::FindWeaponLockOnTarget(void) +{ + CEntity *nextTarget = nil; + float weaponRange = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_fRange; + + if (m_pPointGunAt) { + CVector distVec = m_pPointGunAt->GetPosition() - GetPosition(); + if (distVec.Magnitude2D() > weaponRange) { + m_pPointGunAt = nil; + return false; + } else { + return true; + } + } + + // nextTarget = nil; + float lastCloseness = -10000.0f; + float referenceBeta = CGeneral::GetATanOfXY(GetForward().x, GetForward().y); + for (int h = CPools::GetPedPool()->GetSize() - 1; h >= 0; h--) { + CPed *pedToCheck = CPools::GetPedPool()->GetSlot(h); + if (pedToCheck) { + if (pedToCheck != FindPlayerPed()) { + if (!pedToCheck->DyingOrDead() && !pedToCheck->bInVehicle + && pedToCheck->m_leader != FindPlayerPed() && OurPedCanSeeThisOne(pedToCheck)) { + + EvaluateTarget(pedToCheck, &nextTarget, &lastCloseness, + weaponRange, referenceBeta, IsThisPedAttackingPlayer(pedToCheck)); + } + } + } + } + for (int i = 0; i < ARRAY_SIZE(m_nTargettableObjects); i++) { + CObject *obj = CPools::GetObjectPool()->GetAt(m_nTargettableObjects[i]); + if (obj) + EvaluateTarget(obj, &nextTarget, &lastCloseness, weaponRange, referenceBeta, false); + } + if (!nextTarget) + return false; + + m_pPointGunAt = nextTarget; + if (nextTarget) + nextTarget->RegisterReference((CEntity**)&m_pPointGunAt); + SetPointGunAt(nextTarget); + return true; +} + +void +CPlayerPed::ProcessAnimGroups(void) +{ + AssocGroupId groupToSet; + if ((m_fWalkAngle <= -DEGTORAD(50.0f) || m_fWalkAngle >= DEGTORAD(50.0f)) + && TheCamera.Cams[TheCamera.ActiveCam].Using3rdPersonMouseCam() + && CanStrafeOrMouseControl()) { + + if (m_fWalkAngle >= -DEGTORAD(130.0f) && m_fWalkAngle <= DEGTORAD(130.0f)) { + if (m_fWalkAngle > 0.0f) { + if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER) + groupToSet = ASSOCGRP_ROCKETLEFT; + else + groupToSet = ASSOCGRP_PLAYERLEFT; + } else { + if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER) + groupToSet = ASSOCGRP_ROCKETRIGHT; + else + groupToSet = ASSOCGRP_PLAYERRIGHT; + } + } else { + if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER) + groupToSet = ASSOCGRP_ROCKETBACK; + else + groupToSet = ASSOCGRP_PLAYERBACK; + } + } else { + if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER) { + groupToSet = ASSOCGRP_PLAYERROCKET; + } else { + if (GetWeapon()->m_eWeaponType == WEAPONTYPE_BASEBALLBAT) { + groupToSet = ASSOCGRP_PLAYERBBBAT; + } else if (GetWeapon()->m_eWeaponType != WEAPONTYPE_COLT45 && GetWeapon()->m_eWeaponType != WEAPONTYPE_UZI) { + if (!GetWeapon()->IsType2Handed()) { + groupToSet = ASSOCGRP_PLAYER; + } else { + groupToSet = ASSOCGRP_PLAYER2ARMED; + } + } else { + groupToSet = ASSOCGRP_PLAYER1ARMED; + } + } + } + + if (m_animGroup != groupToSet) { + m_animGroup = groupToSet; + ReApplyMoveAnims(); + } +} + +void +CPlayerPed::ProcessPlayerWeapon(CPad *padUsed) +{ + CWeaponInfo *weaponInfo = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType); + if (m_bHasLockOnTarget && !m_pPointGunAt) { + TheCamera.ClearPlayerWeaponMode(); + CWeaponEffects::ClearCrossHair(); + ClearPointGunAt(); + } + if (!m_pFire) { + if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER || + GetWeapon()->m_eWeaponType == WEAPONTYPE_SNIPERRIFLE || GetWeapon()->m_eWeaponType == WEAPONTYPE_M16) { + if (padUsed->TargetJustDown()) { + SetStoredState(); + m_nPedState = PED_SNIPER_MODE; +#ifdef FREE_CAM + if (CCamera::bFreeCam && TheCamera.Cams[0].Using3rdPersonMouseCam()) { + m_fRotationCur = CGeneral::LimitRadianAngle(-TheCamera.Orientation); + SetHeading(m_fRotationCur); + } +#endif + if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER) + TheCamera.SetNewPlayerWeaponMode(CCam::MODE_ROCKETLAUNCHER, 0, 0); + else if (GetWeapon()->m_eWeaponType == WEAPONTYPE_SNIPERRIFLE) + TheCamera.SetNewPlayerWeaponMode(CCam::MODE_SNIPER, 0, 0); + else + TheCamera.SetNewPlayerWeaponMode(CCam::MODE_M16_1STPERSON, 0, 0); + + m_fMoveSpeed = 0.0f; + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_STANCE, 1000.0f); + } + if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER || GetWeapon()->m_eWeaponType == WEAPONTYPE_SNIPERRIFLE + || TheCamera.PlayerWeaponMode.Mode == CCam::MODE_M16_1STPERSON) + return; + } + } + + if (padUsed->GetWeapon() && m_nMoveState != PEDMOVE_SPRINT) { + if (m_nSelectedWepSlot == m_currentWeapon) { + if (m_pPointGunAt) { +#ifdef FREE_CAM + if (CCamera::bFreeCam && weaponInfo->m_eWeaponFire == WEAPON_FIRE_MELEE && m_fMoveSpeed < 1.0f) + StartFightAttack(padUsed->GetWeapon()); + else +#endif + SetAttack(m_pPointGunAt); + } else if (m_currentWeapon != WEAPONTYPE_UNARMED) { + if (m_nPedState == PED_ATTACK) { + if (padUsed->WeaponJustDown()) { + m_bHaveTargetSelected = true; + } else if (!m_bHaveTargetSelected) { + field_1376 += CTimer::GetTimeStepNonClipped(); + } + } else { + field_1376 = 0.0f; + m_bHaveTargetSelected = false; + } + SetAttack(nil); + } else if (padUsed->WeaponJustDown()) { + if (m_fMoveSpeed < 1.0f) + StartFightAttack(padUsed->GetWeapon()); + else + SetAttack(nil); + } + } + } else { + m_pedIK.m_flags &= ~CPedIK::LOOKAROUND_HEAD_ONLY; + if (m_nPedState == PED_ATTACK) { + m_bHaveTargetSelected = true; + bIsAttacking = false; + } + } + +#ifdef FREE_CAM + // Rotate player/arm when shooting. We don't have auto-rotation anymore + if (CCamera::m_bUseMouse3rdPerson && CCamera::bFreeCam && + m_nSelectedWepSlot == m_currentWeapon && m_nMoveState != PEDMOVE_SPRINT) { + + // Weapons except throwable and melee ones + if (weaponInfo->m_bCanAim || weaponInfo->m_b1stPerson || weaponInfo->m_bExpands) { + if ((padUsed->GetTarget() && weaponInfo->m_bCanAimWithArm) || padUsed->GetWeapon()) { + float limitedCam = CGeneral::LimitRadianAngle(-TheCamera.Orientation); + + // On this one we can rotate arm. + if (weaponInfo->m_bCanAimWithArm) { + if (!padUsed->GetWeapon()) { // making this State != ATTACK still stops it after attack. Re-start it immediately! + SetPointGunAt(nil); + bIsPointingGunAt = false; // to not stop after attack + } + + SetLookFlag(limitedCam, true); + SetAimFlag(limitedCam); +#ifdef VC_PED_PORTS + SetLookTimer(INT_MAX); // removing this makes head move for real, but I experinced some bugs. +#endif + } else { + m_fRotationDest = limitedCam; + m_headingRate = 50.0f; + + // Anim. fix for shotgun, ak47 and m16 (we must finish rot. it quickly) + if (weaponInfo->m_bCanAim && padUsed->WeaponJustDown()) { + m_fRotationCur = CGeneral::LimitRadianAngle(m_fRotationCur); + float limitedRotDest = m_fRotationDest; + + if (m_fRotationCur - PI > m_fRotationDest) { + limitedRotDest += 2 * PI; + } else if (PI + m_fRotationCur < m_fRotationDest) { + limitedRotDest -= 2 * PI; + } + + m_fRotationCur += (limitedRotDest - m_fRotationCur) / 2; + } + } + } else if (weaponInfo->m_bCanAimWithArm) + ClearPointGunAt(); + else + RestoreHeadingRate(); + } + } +#endif + + if (padUsed->GetTarget() && m_nSelectedWepSlot == m_currentWeapon && m_nMoveState != PEDMOVE_SPRINT) { + if (m_pPointGunAt) { + // what?? + if (!m_pPointGunAt +#ifdef FREE_CAM + || (!CCamera::bFreeCam && CCamera::m_bUseMouse3rdPerson) +#else + || CCamera::m_bUseMouse3rdPerson +#endif + || m_pPointGunAt->IsPed() && ((CPed*)m_pPointGunAt)->bInVehicle) { + ClearWeaponTarget(); + return; + } + if (CPlayerPed::DoesTargetHaveToBeBroken(m_pPointGunAt->GetPosition(), GetWeapon())) { + ClearWeaponTarget(); + return; + } + if (m_pPointGunAt) { + if (padUsed->ShiftTargetLeftJustDown()) + FindNextWeaponLockOnTarget(m_pPointGunAt, true); + if (padUsed->ShiftTargetRightJustDown()) + FindNextWeaponLockOnTarget(m_pPointGunAt, false); + } + TheCamera.SetNewPlayerWeaponMode(CCam::MODE_SYPHON, 0, 0); + TheCamera.UpdateAimingCoors(m_pPointGunAt->GetPosition()); + } +#ifdef FREE_CAM + else if ((CCamera::bFreeCam && weaponInfo->m_eWeaponFire == WEAPON_FIRE_MELEE) || (weaponInfo->m_bCanAim && !CCamera::m_bUseMouse3rdPerson)) { +#else + else if (weaponInfo->m_bCanAim && !CCamera::m_bUseMouse3rdPerson) { +#endif + if (padUsed->TargetJustDown()) + FindWeaponLockOnTarget(); + } + } else if (m_pPointGunAt) { + ClearWeaponTarget(); + } + + if (m_pPointGunAt) { +#ifndef VC_PED_PORTS + CVector markPos = m_pPointGunAt->GetPosition(); +#else + CVector markPos; + if (m_pPointGunAt->IsPed()) { + ((CPed*)m_pPointGunAt)->m_pedIK.GetComponentPosition((RwV3d*)markPos, PED_MID); + } else { + markPos = m_pPointGunAt->GetPosition(); + } +#endif + if (bCanPointGunAtTarget) { + CWeaponEffects::MarkTarget(markPos, 64, 0, 0, 255, 0.8f); + } else { + CWeaponEffects::MarkTarget(markPos, 64, 32, 0, 255, 0.8f); + } + } + m_bHasLockOnTarget = m_pPointGunAt != nil; +} + +void +CPlayerPed::PlayerControlZelda(CPad *padUsed) +{ + bool doSmoothSpray = DoWeaponSmoothSpray(); + float camOrientation = TheCamera.Orientation; + float leftRight = padUsed->GetPedWalkLeftRight(); + float upDown = padUsed->GetPedWalkUpDown(); + float padMoveInGameUnit; + bool smoothSprayWithoutMove = false; + + if (doSmoothSpray && upDown > 0.0f) { + padMoveInGameUnit = 0.0f; + smoothSprayWithoutMove = true; + } else { + padMoveInGameUnit = CVector2D(leftRight, upDown).Magnitude() / PAD_MOVE_TO_GAME_WORLD_MOVE; + } + + if (padMoveInGameUnit > 0.0f || smoothSprayWithoutMove) { + float padHeading = CGeneral::GetRadianAngleBetweenPoints(0.0f, 0.0f, -leftRight, upDown); + float neededTurn = CGeneral::LimitRadianAngle(padHeading - camOrientation); + if (doSmoothSpray) { + if (GetWeapon()->m_eWeaponType == WEAPONTYPE_FLAMETHROWER || GetWeapon()->m_eWeaponType == WEAPONTYPE_COLT45 + || GetWeapon()->m_eWeaponType == WEAPONTYPE_UZI) + m_fRotationDest = m_fRotationCur - leftRight / 128.0f * (PI / 80.0f) * CTimer::GetTimeStep(); + else + m_fRotationDest = m_fRotationCur - leftRight / 128.0f * (PI / 128.0f) * CTimer::GetTimeStep(); + } else { + m_fRotationDest = neededTurn; + } + + float maxAcc = 0.07f * CTimer::GetTimeStep(); + m_fMoveSpeed = min(padMoveInGameUnit, m_fMoveSpeed + maxAcc); + + } else { + m_fMoveSpeed = 0.0f; + } + + if (m_nPedState == PED_JUMP) { + if (bIsInTheAir) { + if (bUsesCollision && !bHitSteepSlope && + (!bHitSomethingLastFrame || m_vecDamageNormal.z > 0.6f) + && m_fDistanceTravelled < CTimer::GetTimeStep() * 0.02 && m_vecMoveSpeed.MagnitudeSqr() < 0.01f) { + + float angleSin = Sin(m_fRotationCur); // originally sin(DEGTORAD(RADTODEG(m_fRotationCur))) o_O + float angleCos = Cos(m_fRotationCur); + ApplyMoveForce(-angleSin * 3.0f, 3.0f * angleCos, 0.05f); + } + } else if (bIsLanding) { + m_fMoveSpeed = 0.0f; + } + } + + if (!(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy) + && padUsed->GetSprint()) { + m_nMoveState = PEDMOVE_SPRINT; + } + if (m_nPedState != PED_FIGHT) + SetRealMoveAnim(); + + if (!bIsInTheAir && !(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_bHeavy) + && padUsed->JumpJustDown() && m_nPedState != PED_JUMP) { + ClearAttack(); + ClearWeaponTarget(); + if (m_nEvadeAmount != 0 && m_pEvadingFrom) { + SetEvasiveDive((CPhysical*)m_pEvadingFrom, 1); + m_nEvadeAmount = 0; + m_pEvadingFrom = nil; + } else { + SetJump(); + } + } +} + +void +CPlayerPed::ProcessControl(void) +{ + if (m_nEvadeAmount != 0) + --m_nEvadeAmount; + + if (m_nEvadeAmount == 0) + m_pEvadingFrom = nil; + + if (m_pCurrentPhysSurface && m_pCurrentPhysSurface->IsVehicle() && ((CVehicle*)m_pCurrentPhysSurface)->IsBoat()) { + bTryingToReachDryLand = true; + } else if (!(((uint8)CTimer::GetFrameCounter() + m_randomSeed) & 0xF)) { + CVehicle *nearVeh = (CVehicle*)CWorld::TestSphereAgainstWorld(GetPosition(), 7.0f, nil, + false, true, false, false, false, false); + if (nearVeh && nearVeh->IsBoat()) + bTryingToReachDryLand = true; + else + bTryingToReachDryLand = false; + } + CPed::ProcessControl(); + if (bWasPostponed) + return; + + CPad *padUsed = CPad::GetPad(0); + m_pWanted->Update(); + CEntity::PruneReferences(); + + if (m_nMoveState != PEDMOVE_RUN && m_nMoveState != PEDMOVE_SPRINT) + RestoreSprintEnergy(1.0f); + else if (m_nMoveState == PEDMOVE_RUN) + RestoreSprintEnergy(0.3f); + + if (m_nPedState == PED_DEAD) { + ClearWeaponTarget(); + return; + } + if (m_nPedState == PED_DIE) { + ClearWeaponTarget(); + if (CTimer::GetTimeInMilliseconds() > m_bloodyFootprintCountOrDeathTime + 4000) + SetDead(); + return; + } + if (m_nPedState == PED_DRIVING && m_objective != OBJECTIVE_LEAVE_VEHICLE) { + if (m_pMyVehicle->IsCar() && ((CAutomobile*)m_pMyVehicle)->Damage.GetDoorStatus(DOOR_FRONT_LEFT) == DOOR_STATUS_SWINGING) { + CAnimBlendAssociation *rollDoorAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_ROLLDOOR); + if (!rollDoorAssoc) { + rollDoorAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_ROLLDOOR_LOW); + } + + // These comparisons are wrong, they return uint16 + if (m_pMyVehicle->m_nGettingOutFlags & CAR_DOOR_FLAG_LF || rollDoorAssoc || padUsed + && (padUsed->GetAccelerate() != 0.0f || padUsed->GetSteeringLeftRight() != 0.0f + || padUsed->GetBrake() != 0.0f)) { + + if (rollDoorAssoc) + m_pMyVehicle->ProcessOpenDoor(CAR_DOOR_LF, ANIM_CAR_ROLLDOOR, rollDoorAssoc->currentTime); + } else { + m_pMyVehicle->m_nGettingOutFlags |= CAR_DOOR_FLAG_LF; + if (m_pMyVehicle->bLowVehicle) + rollDoorAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ROLLDOOR_LOW); + else + rollDoorAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ROLLDOOR); + + rollDoorAssoc->SetFinishCallback(PedAnimDoorCloseRollingCB, this); + } + } + return; + } + if (m_objective == OBJECTIVE_NONE) + m_nMoveState = PEDMOVE_STILL; + if (bIsLanding) + RunningLand(padUsed); + if (padUsed && padUsed->WeaponJustDown() && m_nPedState != PED_SNIPER_MODE) { + + // ...Really? + eWeaponType playerWeapon = FindPlayerPed()->GetWeapon()->m_eWeaponType; + if (playerWeapon == WEAPONTYPE_SNIPERRIFLE) { + DMAudio.PlayFrontEndSound(SOUND_WEAPON_SNIPER_SHOT_NO_ZOOM, 0); + } else if (playerWeapon == WEAPONTYPE_ROCKETLAUNCHER) { + DMAudio.PlayFrontEndSound(SOUND_WEAPON_ROCKET_SHOT_NO_ZOOM, 0); + } + } + + switch (m_nPedState) { + case PED_NONE: + case PED_IDLE: + case PED_FLEE_POS: + case PED_FLEE_ENTITY: + case PED_ATTACK: + case PED_FIGHT: + case PED_AIM_GUN: + if (!RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FLAG400)) { + if (TheCamera.Cams[0].Using3rdPersonMouseCam()) { + if (padUsed) + PlayerControl1stPersonRunAround(padUsed); + } else if (m_nPedState == PED_FIGHT) { + if (padUsed) + PlayerControlFighter(padUsed); + } else if (padUsed) { + PlayerControlZelda(padUsed); + } + } + if (IsPedInControl() && padUsed) + ProcessPlayerWeapon(padUsed); + break; + case PED_LOOK_ENTITY: + case PED_LOOK_HEADING: + case PED_WANDER_RANGE: + case PED_WANDER_PATH: + case PED_PURSUE: + case PED_FOLLOW_PATH: + case PED_ROCKET_ODE: + case PED_DUMMY: + case PED_PAUSE: + case PED_FACE_PHONE: + case PED_MAKE_CALL: + case PED_CHAT: + case PED_MUG: + case PED_AI_CONTROL: + case PED_FOLLOW_ROUTE: + case PED_CPR: + case PED_SOLICIT: + case PED_BUY_ICECREAM: + case PED_INVESTIGATE: + case PED_STEP_AWAY: + case PED_ON_FIRE: + case PED_UNKNOWN: + case PED_STATES_NO_AI: + case PED_STAGGER: + case PED_DIVE_AWAY: + case PED_STATES_NO_ST: + case PED_ARREST_PLAYER: + case PED_DRIVING: + case PED_PASSENGER: + case PED_TAXI_PASSENGER: + case PED_OPEN_DOOR: + case PED_DIE: + case PED_DEAD: + case PED_HANDS_UP: + break; + case PED_SEEK_ENTITY: + m_vecSeekPos = m_pSeekTarget->GetPosition(); + + // fall through + case PED_SEEK_POS: + switch (m_nMoveState) { + case PEDMOVE_WALK: + m_fMoveSpeed = 1.0f; + break; + case PEDMOVE_RUN: + m_fMoveSpeed = 1.8f; + break; + case PEDMOVE_SPRINT: + m_fMoveSpeed = 2.5f; + break; + default: + m_fMoveSpeed = 0.0f; + break; + } + SetRealMoveAnim(); + if (Seek()) { + RestorePreviousState(); + SetMoveState(PEDMOVE_STILL); + } + break; + case PED_SNIPER_MODE: + if (FindPlayerPed()->GetWeapon()->m_eWeaponType == WEAPONTYPE_M16) { + if (padUsed) + PlayerControlM16(padUsed); + } else if (padUsed) { + PlayerControlSniper(padUsed); + } + break; + case PED_SEEK_CAR: + case PED_SEEK_IN_BOAT: + if (bVehEnterDoorIsBlocked || bKindaStayInSamePlace) { + m_fMoveSpeed = 0.0f; + } else { + m_fMoveSpeed = min(2.0f, 2.0f * (m_vecSeekPos - GetPosition()).Magnitude2D()); + } + if (padUsed && !padUsed->ArePlayerControlsDisabled()) { + if (padUsed->GetTarget() || padUsed->GetLeftStickXJustDown() || padUsed->GetLeftStickYJustDown() || + padUsed->GetDPadUpJustDown() || padUsed->GetDPadDownJustDown() || padUsed->GetDPadLeftJustDown() || + padUsed->GetDPadRightJustDown()) { + + RestorePreviousState(); + if (m_objective == OBJECTIVE_ENTER_CAR_AS_PASSENGER || m_objective == OBJECTIVE_ENTER_CAR_AS_DRIVER) { + RestorePreviousObjective(); + } + } + } + if (padUsed && padUsed->GetSprint()) + m_nMoveState = PEDMOVE_SPRINT; + SetRealMoveAnim(); + break; + case PED_JUMP: + if (padUsed) + PlayerControlZelda(padUsed); + if (bIsLanding) + break; + + // This has been added later it seems + return; + case PED_FALL: + case PED_GETUP: + case PED_ENTER_TRAIN: + case PED_EXIT_TRAIN: + case PED_CARJACK: + case PED_DRAG_FROM_CAR: + case PED_ENTER_CAR: + case PED_STEAL_CAR: + case PED_EXIT_CAR: + ClearWeaponTarget(); + break; + case PED_ARRESTED: + if (m_nLastPedState == PED_DRAG_FROM_CAR && m_pVehicleAnim) + BeingDraggedFromCar(); + break; + } + if (padUsed && IsPedShootable()) { + ProcessWeaponSwitch(padUsed); + GetWeapon()->Update(m_audioEntityId); + } + ProcessAnimGroups(); + if (padUsed) { + if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FOLLOWPED + && TheCamera.Cams[TheCamera.ActiveCam].DirectionWasLooking == LOOKING_BEHIND) { + + m_lookTimer = 0; + float camAngle = CGeneral::LimitRadianAngle(TheCamera.Cams[TheCamera.ActiveCam].Front.Heading()); + float angleBetweenPlayerAndCam = Abs(camAngle - m_fRotationCur); + if (m_nPedState != PED_ATTACK + && angleBetweenPlayerAndCam > DEGTORAD(30.0f) && angleBetweenPlayerAndCam < DEGTORAD(330.0f)) { + + if (angleBetweenPlayerAndCam > DEGTORAD(150.0f) && angleBetweenPlayerAndCam < DEGTORAD(210.0f)) { + float rightTurnAngle = CGeneral::LimitRadianAngle(m_fRotationCur - DEGTORAD(150.0f)); + float leftTurnAngle = CGeneral::LimitRadianAngle(DEGTORAD(150.0f) + m_fRotationCur); + if (m_fLookDirection != 999999.0f) { + if (Abs(rightTurnAngle - m_fLookDirection) < Abs(leftTurnAngle - m_fLookDirection)) + camAngle = rightTurnAngle; + else + camAngle = leftTurnAngle; + } else { + camAngle = rightTurnAngle; + } + } + SetLookFlag(camAngle, true); + SetLookTimer(CTimer::GetTimeStepInMilliseconds() * 5.0f); + } else { + ClearLookFlag(); + } + } + } + if (m_nMoveState == PEDMOVE_SPRINT && bIsLooking) { + ClearLookFlag(); + SetLookTimer(250); + } + + if (m_vecMoveSpeed.Magnitude2D() < 0.1f) { + if (m_nSpeedTimer) { + if (CTimer::GetTimeInMilliseconds() > m_nSpeedTimer) + m_bSpeedTimerFlag = true; + } else { + m_nSpeedTimer = CTimer::GetTimeInMilliseconds() + 500; + } + } else { + m_nSpeedTimer = 0; + m_bSpeedTimerFlag = false; + } +} + +#include + +class CPlayerPed_ : public CPlayerPed +{ +public: + CPlayerPed* ctor(void) { return ::new (this) CPlayerPed(); } + void dtor(void) { CPlayerPed::~CPlayerPed(); } + void SetMoveAnim_(void) { CPlayerPed::SetMoveAnim(); } + void ProcessControl_(void) { CPlayerPed::ProcessControl(); } +}; + +STARTPATCHES + InjectHook(0x4EF7E0, &CPlayerPed_::ctor, PATCH_JUMP); + InjectHook(0x4EFB30, &CPlayerPed_::dtor, PATCH_JUMP); + InjectHook(0x4F3760, &CPlayerPed_::SetMoveAnim_, PATCH_JUMP); + InjectHook(0x4EFD90, &CPlayerPed_::ProcessControl_, PATCH_JUMP); + InjectHook(0x4F28A0, &CPlayerPed::ClearWeaponTarget, PATCH_JUMP); + InjectHook(0x4F3700, &CPlayerPed::AnnoyPlayerPed, PATCH_JUMP); + InjectHook(0x4F36C0, &CPlayerPed::GetPlayerInfoForThisPlayerPed, PATCH_JUMP); + InjectHook(0x4F2560, &CPlayerPed::MakeChangesForNewWeapon, PATCH_JUMP); + InjectHook(0x4F07C0, &CPlayerPed::ReApplyMoveAnims, PATCH_JUMP); + InjectHook(0x4F0880, &CPlayerPed::SetRealMoveAnim, PATCH_JUMP); + InjectHook(0x4F1810, &CPlayerPed::PlayerControlFighter, PATCH_JUMP); + InjectHook(0x4F1340, &CPlayerPed::RestoreSprintEnergy, PATCH_JUMP); + InjectHook(0x4F1380, &CPlayerPed::DoWeaponSmoothSpray, PATCH_JUMP); + InjectHook(0x4F36E0, &CPlayerPed::DoStuffToGoOnFire, PATCH_JUMP); + InjectHook(0x4F3350, &CPlayerPed::DoesTargetHaveToBeBroken, PATCH_JUMP); + InjectHook(0x4F31D0, &CPlayerPed::RunningLand, PATCH_JUMP); + InjectHook(0x4F2D00, &CPlayerPed::IsThisPedAttackingPlayer, PATCH_JUMP); + InjectHook(0x4F1CF0, &CPlayerPed::PlayerControlSniper, PATCH_JUMP); + InjectHook(0x4F2310, &CPlayerPed::ProcessWeaponSwitch, PATCH_JUMP); + InjectHook(0x4F1DF0, &CPlayerPed::PlayerControlM16, PATCH_JUMP); + InjectHook(0x4F3460, &CPlayerPed::KeepAreaAroundPlayerClear, PATCH_JUMP); + InjectHook(0x4F1970, &CPlayerPed::PlayerControl1stPersonRunAround, PATCH_JUMP); + InjectHook(0x4F1EF0, &CPlayerPed::ProcessPlayerWeapon, PATCH_JUMP); + InjectHook(0x4F2640, &CPlayerPed::ProcessAnimGroups, PATCH_JUMP); +ENDPATCHES diff --git a/src/render/Font.cpp b/src/render/Font.cpp index 6f336f1e..ca15cba7 100644 --- a/src/render/Font.cpp +++ b/src/render/Font.cpp @@ -1,636 +1,636 @@ -#include "common.h" -#include "patcher.h" -#include "Sprite2d.h" -#include "TxdStore.h" -#include "Font.h" - -CFontDetails &CFont::Details = *(CFontDetails*)0x8F317C; -int16 &CFont::NewLine = *(int16*)0x95CC94; -CSprite2d *CFont::Sprite = (CSprite2d*)0x95CC04; - -#ifdef MORE_LANGUAGES -uint8 CFont::LanguageSet = FONT_LANGSET_EFIGS; -int32 CFont::Slot = -1; - -int16 CFont::Size[2][3][193] = { - { -#else -int16 CFont::Size[3][193] = { -#endif - { - 13, 12, 31, 35, 23, 35, 31, 9, 14, 15, 25, 30, 11, 17, 13, 31, - 23, 16, 22, 21, 24, 23, 23, 20, 23, 22, 10, 35, 26, 26, 26, 26, - 30, 26, 24, 23, 24, 22, 21, 24, 26, 10, 20, 26, 22, 29, 26, 25, - 23, 25, 24, 24, 22, 25, 24, 29, 29, 23, 25, 37, 22, 37, 35, 37, - 35, 21, 22, 21, 21, 22, 13, 22, 21, 10, 16, 22, 11, 32, 21, 21, - 23, 22, 16, 20, 14, 21, 20, 30, 25, 21, 21, 33, 33, 33, 33, 35, - 27, 27, 27, 27, 32, 24, 23, 23, 23, 23, 11, 11, 11, 11, 26, 26, - 26, 26, 26, 26, 26, 25, 26, 21, 21, 21, 21, 32, 23, 22, 22, 22, - 22, 11, 11, 11, 11, 22, 22, 22, 22, 22, 22, 22, 22, 26, 21, 24, - 12, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 18, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 20 - }, - - { - 13, 9, 21, 35, 23, 35, 35, 11, 35, 35, 25, 35, 11, 17, 13, 33, - 28, 14, 22, 21, 24, 23, 23, 21, 23, 22, 10, 35, 13, 35, 13, 33, - 5, 25, 22, 23, 24, 21, 21, 24, 24, 9, 20, 24, 21, 27, 25, 25, - 22, 25, 23, 20, 23, 23, 23, 31, 23, 23, 23, 37, 33, 37, 35, 37, - 35, 21, 19, 19, 21, 19, 17, 21, 21, 8, 17, 18, 14, 24, 21, 21, - 20, 22, 19, 20, 20, 19, 20, 26, 21, 20, 21, 33, 33, 33, 33, 35, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 16 - }, - - { - 15, 14, 16, 25, 19, 26, 22, 11, 18, 18, 27, 26, 13, 19, 9, 27, - 19, 18, 19, 19, 22, 19, 20, 18, 19, 20, 12, 32, 15, 32, 15, 35, - 15, 19, 19, 19, 19, 19, 16, 19, 20, 9, 19, 20, 14, 29, 19, 20, - 19, 19, 19, 19, 21, 19, 20, 32, 20, 19, 19, 33, 31, 39, 37, 39, - 37, 21, 21, 21, 23, 21, 19, 23, 23, 10, 19, 20, 16, 26, 23, 23, - 20, 20, 20, 22, 21, 22, 22, 26, 22, 22, 23, 35, 35, 35, 35, 37, - 19, 19, 19, 19, 29, 19, 19, 19, 19, 19, 9, 9, 9, 9, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 30, 19, 19, 19, 19, - 19, 10, 10, 10, 10, 19, 19, 19, 19, 19, 19, 19, 19, 19, 23, 35, - 12, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 11, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19 - } -#ifdef MORE_LANGUAGES - }, - { - { 13, 12, 31, 35, 23, 35, 31, 9, 14, 15, 25, 30, 11, 17, - 13, 31, 23, 16, 22, 21, 24, 23, 23, 20, 23, 22, 10, - 35, 26, 26, 26, 26, 30, 26, 24, 23, 24, 22, 21, 24, - 26, 10, 20, 26, 22, 29, 26, 25, 23, 25, 24, 24, 22, - 25, 24, 29, 29, 23, 25, 37, 22, 37, 35, 37, 35, 21, - 22, 21, 21, 22, 13, 22, 21, 10, 16, 22, 11, 32, 21, - 21, 23, 22, 16, 20, 14, 21, 20, 30, 25, 21, 21, 13, - 33, 13, 13, 13, 24, 22, 22, 19, 26, 21, 30, 20, 23, - 23, 21, 24, 26, 23, 22, 23, 21, 22, 20, 20, 26, 25, - 24, 22, 31, 32, 23, 30, 22, 22, 32, 23, 19, 18, 18, - 15, 22, 19, 27, 19, 20, 20, 18, 22, 24, 20, 19, 19, - 20, 19, 16, 19, 28, 20, 20, 18, 26, 27, 19, 26, 18, - 19, 27, 19, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 18, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 20 }, - { 13, 9, 21, 35, 23, 35, 35, 11, 35, 35, 25, 35, 11, - 17, 13, 33, 28, 14, 22, 21, 24, 23, 23, 21, 23, 22, - 10, 35, 13, 35, 13, 33, 5, 25, 22, 23, 24, 21, 21, 24, - 24, 9, 20, 24, 21, 27, 25, 25, 22, 25, 23, 20, 23, 23, - 23, 31, 23, 23, 23, 37, 33, 37, 35, 37, 35, 21, 19, - 19, 21, 19, 17, 21, 21, 8, 17, 18, 14, 24, 21, 21, 20, - 22, 19, 20, 20, 19, 20, 26, 21, 20, 21, 33, 33, 33, - 33, 35, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 16, }, - { 15, 14, 16, 25, 19, - 26, 22, 11, 18, 18, 27, 26, 13, 19, 9, 27, 19, 18, 19, - 19, 22, 19, 20, 18, 19, 20, 12, 32, 15, 32, 15, 35, - 15, 19, 19, 19, 19, 19, 16, 19, 20, 9, 19, 20, 14, 29, - 19, 20, 19, 19, 19, 19, 21, 19, 20, 32, 20, 19, 19, - 33, 31, 39, 37, 39, 37, 21, 21, 21, 23, 21, 19, 23, 23, 10, 19, 20, 16, 26, 23, - 21, 21, 20, 20, 22, 21, 22, 22, 26, 22, 22, 23, 35, - 35, 35, 35, 37, 19, 19, 19, 19, 19, 19, 29, 19, 19, - 19, 20, 22, 31, 19, 19, 19, 19, 19, 29, 19, 29, 19, - 21, 19, 30, 31, 21, 29, 19, 19, 29, 19, 21, 23, 32, - 21, 21, 30, 31, 22, 21, 32, 33, 23, 32, 21, 21, 32, - 21, 19, 19, 30, 31, 22, 22, 21, 32, 33, 23, 32, 21, - 21, 32, 21, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 11, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19 }, - } -#endif -}; - -wchar foreign_table[128] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 175, - 128, 129, 130, 0, 131, 0, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 0, 173, 142, 143, 144, 0, 145, 0, 0, 146, 147, 148, 149, 0, 0, 150, - 151, 152, 153, 0, 154, 0, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 0, 174, 165, 166, 167, 0, 168, 0, 0, 169, 170, 171, 172, 0, 0, 0, -}; - -void -CFont::Initialise(void) -{ - int slot; - - slot = CTxdStore::AddTxdSlot("fonts"); -#ifdef MORE_LANGUAGES - Slot = slot; - switch (LanguageSet) - { - case FONT_LANGSET_EFIGS: - default: - CTxdStore::LoadTxd(slot, "MODELS/FONTS.TXD"); - break; - case FONT_LANGSET_RUSSIAN: - CTxdStore::LoadTxd(slot, "MODELS/FONTS_R.TXD"); - break; - } -#else - CTxdStore::LoadTxd(slot, "MODELS/FONTS.TXD"); -#endif - CTxdStore::AddRef(slot); - CTxdStore::PushCurrentTxd(); - CTxdStore::SetCurrentTxd(slot); - Sprite[0].SetTexture("font2", "font2_mask"); - Sprite[1].SetTexture("pager", "pager_mask"); - Sprite[2].SetTexture("font1", "font1_mask"); - SetScale(1.0f, 1.0f); - SetSlantRefPoint(SCREEN_WIDTH, 0.0f); - SetSlant(0.0f); - SetColor(CRGBA(0xFF, 0xFF, 0xFF, 0)); - SetJustifyOff(); - SetCentreOff(); - SetWrapx(640.0f); - SetCentreSize(640.0f); - SetBackgroundOff(); - SetBackgroundColor(CRGBA(0x80, 0x80, 0x80, 0x80)); - SetBackGroundOnlyTextOff(); - SetPropOn(); - SetFontStyle(FONT_BANK); - SetRightJustifyWrap(0.0f); - SetAlphaFade(255.0f); - SetDropShadowPosition(0); - CTxdStore::PopCurrentTxd(); -} - -#ifdef MORE_LANGUAGES -void -CFont::ReloadFonts(uint8 set) -{ - if (Slot != -1 && LanguageSet != set) { - Sprite[0].Delete(); - Sprite[1].Delete(); - Sprite[2].Delete(); - CTxdStore::PushCurrentTxd(); - CTxdStore::RemoveTxd(Slot); - switch (set) - { - case FONT_LANGSET_EFIGS: - default: - CTxdStore::LoadTxd(Slot, "MODELS/FONTS.TXD"); - break; - case FONT_LANGSET_RUSSIAN: - CTxdStore::LoadTxd(Slot, "MODELS/FONTS_R.TXD"); - break; - } - CTxdStore::SetCurrentTxd(Slot); - Sprite[0].SetTexture("font2", "font2_mask"); - Sprite[1].SetTexture("pager", "pager_mask"); - Sprite[2].SetTexture("font1", "font1_mask"); - CTxdStore::PopCurrentTxd(); - } - LanguageSet = set; -} -#endif - -void -CFont::Shutdown(void) -{ - Sprite[0].Delete(); - Sprite[1].Delete(); - Sprite[2].Delete(); -#ifdef MORE_LANGUAGES - CTxdStore::RemoveTxdSlot(Slot); - Slot = -1; -#else - CTxdStore::RemoveTxdSlot(CTxdStore::FindTxdSlot("fonts")); -#endif -} - -void -CFont::InitPerFrame(void) -{ - Details.bank = CSprite2d::GetBank(30, Sprite[0].m_pTexture); - CSprite2d::GetBank(15, Sprite[1].m_pTexture); - CSprite2d::GetBank(15, Sprite[2].m_pTexture); - SetDropShadowPosition(0); - NewLine = 0; -} - -void -CFont::PrintChar(float x, float y, wchar c) -{ - if(x <= 0.0f || x > SCREEN_WIDTH || - y <= 0.0f || y > SCREEN_HEIGHT) // BUG: game uses SCREENW again - return; - - float w = GetCharacterWidth(c) / 32.0f; - float xoff = c & 0xF; - float yoff = c >> 4; - - if(Details.style == FONT_BANK || Details.style == FONT_HEADING){ - if(Details.dropShadowPosition != 0){ - CSprite2d::AddSpriteToBank(Details.bank + Details.style, // BUG: game doesn't add bank - CRect(x + SCREEN_SCALE_X(Details.dropShadowPosition), - y + SCREEN_SCALE_Y(Details.dropShadowPosition), - x + SCREEN_SCALE_X(Details.dropShadowPosition) + 32.0f * Details.scaleX * 1.0f, - y + SCREEN_SCALE_Y(Details.dropShadowPosition) + 40.0f * Details.scaleY * 0.5f), - Details.dropColor, - xoff/16.0f, yoff/12.8f, - (xoff+1.0f)/16.0f - 0.001f, yoff/12.8f, - xoff/16.0f, (yoff+1.0f)/12.8f, - (xoff+1.0f)/16.0f - 0.001f, (yoff+1.0f)/12.8f - 0.0001f); - } - CSprite2d::AddSpriteToBank(Details.bank + Details.style, // BUG: game doesn't add bank - CRect(x, y, - x + 32.0f * Details.scaleX * 1.0f, - y + 40.0f * Details.scaleY * 0.5f), - Details.color, - xoff/16.0f, yoff/12.8f, - (xoff+1.0f)/16.0f - 0.001f, yoff/12.8f, - xoff/16.0f, (yoff+1.0f)/12.8f - 0.002f, - (xoff+1.0f)/16.0f - 0.001f, (yoff+1.0f)/12.8f - 0.002f); - }else{ - CSprite2d::AddSpriteToBank(Details.bank + Details.style, // BUG: game doesn't add bank - CRect(x, y, - x + 32.0f * Details.scaleX * w, - y + 32.0f * Details.scaleY * 0.5f), - Details.color, - xoff/16.0f, yoff/16.0f, - (xoff+w)/16.0f, yoff/16.0f, - xoff/16.0f, (yoff+1.0f)/16.0f, - (xoff+w)/16.0f - 0.0001f, (yoff+1.0f)/16.0f - 0.0001f); - } -} - -void -CFont::PrintString(float xstart, float ystart, wchar *s) -{ - CRect rect; - int numSpaces; - float lineLength; - float x, y; - bool first; - wchar *start, *t; - - if(*s == '*') - return; - - if(Details.background){ - GetNumberLines(xstart, ystart, s); // BUG: result not used - GetTextRect(&rect, xstart, ystart, s); - CSprite2d::DrawRect(rect, Details.backgroundColor); - } - - lineLength = 0.0f; - numSpaces = 0; - first = true; - if(Details.centre || Details.rightJustify) - x = 0.0f; - else - x = xstart; - y = ystart; - start = s; - - // This is super ugly, I blame R* - for(;;){ - for(;;){ - for(;;){ - if(*s == '\0') - return; - int xend = Details.centre ? Details.centreSize : - Details.rightJustify ? xstart - Details.rightJustifyWrap : - Details.wrapX; - if(x + GetStringWidth(s) > xend && !first){ - // flush line - float spaceWidth = !Details.justify || Details.centre ? 0.0f : - (Details.wrapX - lineLength) / numSpaces; - float xleft = Details.centre ? xstart - x/2 : - Details.rightJustify ? xstart - x : - xstart; - PrintString(xleft, y, start, s, spaceWidth); - // reset things - lineLength = 0.0f; - numSpaces = 0; - first = true; - if(Details.centre || Details.rightJustify) - x = 0.0f; - else - x = xstart; - y += 32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY; - start = s; - }else - break; - } - // advance by one word - t = GetNextSpace(s); - if(t[0] == '\0' || - t[0] == ' ' && t[1] == '\0') - break; - if(!first) - numSpaces++; - first = false; - x += GetStringWidth(s) + GetCharacterSize(*t - ' '); - lineLength = x; - s = t+1; - } - // print rest - if(t[0] == ' ' && t[1] == '\0') - t[0] = '\0'; - x += GetStringWidth(s); - s = t; - float xleft = Details.centre ? xstart - x/2 : - Details.rightJustify ? xstart - x : - xstart; - PrintString(xleft, y, start, s, 0.0f); - } -} - -int -CFont::GetNumberLines(float xstart, float ystart, wchar *s) -{ - int n; - float x, y; - wchar *t; - - n = 0; - if(Details.centre || Details.rightJustify) - x = 0.0f; - else - x = xstart; - y = ystart; - - while(*s){ - if(x + GetStringWidth(s) > (Details.centre ? Details.centreSize : Details.wrapX)){ - // reached end of line - if(Details.centre || Details.rightJustify) - x = 0.0f; - else - x = xstart; - n++; - // Why even? - y += 32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY; - }else{ - // still space in current line - t = GetNextSpace(s); - if(*t == '\0'){ - // end of string - x += GetStringWidth(s); - n++; - s = t; - }else{ - x += GetStringWidth(s); - x += GetCharacterSize(*t - ' '); - s = t+1; - } - } - } - - return n; -} - -void -CFont::GetTextRect(CRect *rect, float xstart, float ystart, wchar *s) -{ - int numLines; - float x, y; - int16 maxlength; - wchar *t; - - maxlength = 0; - numLines = 0; - if(Details.centre || Details.rightJustify) - x = 0.0f; - else - x = xstart; - y = ystart; - - while(*s){ - if(x + GetStringWidth(s) > (Details.centre ? Details.centreSize : Details.wrapX)){ - // reached end of line - if(x > maxlength) - maxlength = x; - if(Details.centre || Details.rightJustify) - x = 0.0f; - else - x = xstart; - numLines++; - y += 32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY; - }else{ - // still space in current line - t = GetNextSpace(s); - if(*t == '\0'){ - // end of string - x += GetStringWidth(s); - if(x > maxlength) - maxlength = x; - numLines++; - s = t; - }else{ - x += GetStringWidth(s); - x += GetCharacterSize(*t - ' '); - s = t+1; - } - } - } - - if(Details.centre){ - if(Details.backgroundOnlyText){ - rect->left = xstart - maxlength/2 - 4.0f; - rect->right = xstart + maxlength/2 + 4.0f; - rect->bottom = (32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY) * numLines + - ystart + 2.0f; - rect->top = ystart - 2.0f; - }else{ - rect->left = xstart - Details.centreSize*0.5f - 4.0f; - rect->right = xstart + Details.centreSize*0.5f + 4.0f; - rect->bottom = (32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY) * numLines + - ystart + 2.0f; - rect->top = ystart - 2.0f; - } - }else{ - rect->left = xstart - 4.0f; - rect->right = Details.wrapX; - // WTF? - rect->bottom = ystart - 4.0f + 4.0f; - rect->top = (32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY) * numLines + - ystart + 2.0f + 2.0f; - } -} - -void -CFont::PrintString(float x, float y, wchar *start, wchar *end, float spwidth) -{ - wchar *s, c, unused; - - for(s = start; s < end; s++){ - if(*s == '~') - s = ParseToken(s, &unused); - c = *s - ' '; - if(Details.slant != 0.0f) - y = (Details.slantRefX - x)*Details.slant + Details.slantRefY; - PrintChar(x, y, c); - x += GetCharacterSize(c); - if(c == 0) // space - x += spwidth; - } -} - -float -CFont::GetCharacterWidth(wchar c) -{ -#ifdef MORE_LANGUAGES - if (Details.proportional) - return Size[LanguageSet][Details.style][c]; - else - return Size[LanguageSet][Details.style][192]; -#else - if (Details.proportional) - return Size[Details.style][c]; - else - return Size[Details.style][192]; -#endif // MORE_LANGUAGES -} - -float -CFont::GetCharacterSize(wchar c) -{ -#ifdef MORE_LANGUAGES - if(Details.proportional) - return Size[LanguageSet][Details.style][c] * Details.scaleX; - else - return Size[LanguageSet][Details.style][192] * Details.scaleX; -#else - if (Details.proportional) - return Size[Details.style][c] * Details.scaleX; - else - return Size[Details.style][192] * Details.scaleX; -#endif // MORE_LANGUAGES -} - -float -CFont::GetStringWidth(wchar *s, bool spaces) -{ - float w; - - w = 0.0f; - for(; (*s != ' ' || spaces) && *s != '\0'; s++){ - if(*s == '~'){ - s++; - while(*s != '~') s++; - s++; - if(*s == ' ' && !spaces) - break; - } - w += GetCharacterSize(*s - ' '); - } - return w; -} - -wchar* -CFont::GetNextSpace(wchar *s) -{ - for(; *s != ' ' && *s != '\0'; s++) - if(*s == '~'){ - s++; - while(*s != '~') s++; - s++; - if(*s == ' ') - break; - } - return s; -} - -wchar* -CFont::ParseToken(wchar *s, wchar*) -{ - s++; - if(Details.color.r || Details.color.g || Details.color.b) - switch(*s){ - case 'N': - case 'n': - NewLine = 1; - break; - case 'b': SetColor(CRGBA(0x80, 0xA7, 0xF3, 0xFF)); break; - case 'g': SetColor(CRGBA(0x5F, 0xA0, 0x6A, 0xFF)); break; - case 'h': SetColor(CRGBA(0xE1, 0xE1, 0xE1, 0xFF)); break; - case 'l': SetColor(CRGBA(0x00, 0x00, 0x00, 0xFF)); break; - case 'p': SetColor(CRGBA(0xA8, 0x6E, 0xFC, 0xFF)); break; - case 'r': SetColor(CRGBA(0x71, 0x2B, 0x49, 0xFF)); break; - case 'w': SetColor(CRGBA(0xAF, 0xAF, 0xAF, 0xFF)); break; - case 'y': SetColor(CRGBA(0xD2, 0xC4, 0x6A, 0xFF)); break; - } - while(*s != '~') s++; - return s+1; -} - -void -CFont::DrawFonts(void) -{ - CSprite2d::DrawBank(Details.bank); - CSprite2d::DrawBank(Details.bank+1); - CSprite2d::DrawBank(Details.bank+2); -} - -wchar -CFont::character_code(uint8 c) -{ - if(c < 128) - return c; - return foreign_table[c-128]; -} - -STARTPATCHES - - InjectHook(0x500A40, CFont::Initialise, PATCH_JUMP); - InjectHook(0x500BA0, CFont::Shutdown, PATCH_JUMP); - InjectHook(0x500BE0, CFont::InitPerFrame, PATCH_JUMP); - InjectHook(0x500C30, CFont::PrintChar, PATCH_JUMP); - InjectHook(0x500F50, (void (*)(float, float, wchar*))CFont::PrintString, PATCH_JUMP); - InjectHook(0x501260, CFont::GetNumberLines, PATCH_JUMP); - InjectHook(0x5013B0, CFont::GetTextRect, PATCH_JUMP); - InjectHook(0x501730, (void (*)(float, float, wchar*, wchar*, float))CFont::PrintString, PATCH_JUMP); - InjectHook(0x5017E0, CFont::GetCharacterWidth, PATCH_JUMP); - InjectHook(0x501840, CFont::GetCharacterSize, PATCH_JUMP); - InjectHook(0x5018A0, CFont::GetStringWidth, PATCH_JUMP); - InjectHook(0x501960, CFont::GetNextSpace, PATCH_JUMP); - InjectHook(0x5019A0, CFont::ParseToken, PATCH_JUMP); - InjectHook(0x501B50, CFont::DrawFonts, PATCH_JUMP); - InjectHook(0x501E80, CFont::character_code, PATCH_JUMP); - - InjectHook(0x501B80, CFont::SetScale, PATCH_JUMP); - InjectHook(0x501BA0, CFont::SetSlantRefPoint, PATCH_JUMP); - InjectHook(0x501BC0, CFont::SetSlant, PATCH_JUMP); - InjectHook(0x501BD0, CFont::SetColor, PATCH_JUMP); - InjectHook(0x501C60, CFont::SetJustifyOn, PATCH_JUMP); - InjectHook(0x501C80, CFont::SetJustifyOff, PATCH_JUMP); - InjectHook(0x501C90, CFont::SetCentreOn, PATCH_JUMP); - InjectHook(0x501CB0, CFont::SetCentreOff, PATCH_JUMP); - InjectHook(0x501CC0, CFont::SetWrapx, PATCH_JUMP); - InjectHook(0x501CD0, CFont::SetCentreSize, PATCH_JUMP); - InjectHook(0x501CE0, CFont::SetBackgroundOn, PATCH_JUMP); - InjectHook(0x501CF0, CFont::SetBackgroundOff, PATCH_JUMP); - InjectHook(0x501D00, CFont::SetBackgroundColor, PATCH_JUMP); - InjectHook(0x501D30, CFont::SetBackGroundOnlyTextOn, PATCH_JUMP); - InjectHook(0x501D40, CFont::SetBackGroundOnlyTextOff, PATCH_JUMP); - InjectHook(0x501D50, CFont::SetRightJustifyOn, PATCH_JUMP); - InjectHook(0x501D70, CFont::SetRightJustifyOff, PATCH_JUMP); - InjectHook(0x501D90, CFont::SetPropOff, PATCH_JUMP); - InjectHook(0x501DA0, CFont::SetPropOn, PATCH_JUMP); - InjectHook(0x501DB0, CFont::SetFontStyle, PATCH_JUMP); - InjectHook(0x501DC0, CFont::SetRightJustifyWrap, PATCH_JUMP); - InjectHook(0x501DD0, CFont::SetAlphaFade, PATCH_JUMP); - InjectHook(0x501DE0, CFont::SetDropColor, PATCH_JUMP); - InjectHook(0x501E70, CFont::SetDropShadowPosition, PATCH_JUMP); - -ENDPATCHES +#include "common.h" +#include "patcher.h" +#include "Sprite2d.h" +#include "TxdStore.h" +#include "Font.h" + +CFontDetails &CFont::Details = *(CFontDetails*)0x8F317C; +int16 &CFont::NewLine = *(int16*)0x95CC94; +CSprite2d *CFont::Sprite = (CSprite2d*)0x95CC04; + +#ifdef MORE_LANGUAGES +uint8 CFont::LanguageSet = FONT_LANGSET_EFIGS; +int32 CFont::Slot = -1; + +int16 CFont::Size[2][3][193] = { + { +#else +int16 CFont::Size[3][193] = { +#endif + { + 13, 12, 31, 35, 23, 35, 31, 9, 14, 15, 25, 30, 11, 17, 13, 31, + 23, 16, 22, 21, 24, 23, 23, 20, 23, 22, 10, 35, 26, 26, 26, 26, + 30, 26, 24, 23, 24, 22, 21, 24, 26, 10, 20, 26, 22, 29, 26, 25, + 23, 25, 24, 24, 22, 25, 24, 29, 29, 23, 25, 37, 22, 37, 35, 37, + 35, 21, 22, 21, 21, 22, 13, 22, 21, 10, 16, 22, 11, 32, 21, 21, + 23, 22, 16, 20, 14, 21, 20, 30, 25, 21, 21, 33, 33, 33, 33, 35, + 27, 27, 27, 27, 32, 24, 23, 23, 23, 23, 11, 11, 11, 11, 26, 26, + 26, 26, 26, 26, 26, 25, 26, 21, 21, 21, 21, 32, 23, 22, 22, 22, + 22, 11, 11, 11, 11, 22, 22, 22, 22, 22, 22, 22, 22, 26, 21, 24, + 12, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 18, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 20 + }, + + { + 13, 9, 21, 35, 23, 35, 35, 11, 35, 35, 25, 35, 11, 17, 13, 33, + 28, 14, 22, 21, 24, 23, 23, 21, 23, 22, 10, 35, 13, 35, 13, 33, + 5, 25, 22, 23, 24, 21, 21, 24, 24, 9, 20, 24, 21, 27, 25, 25, + 22, 25, 23, 20, 23, 23, 23, 31, 23, 23, 23, 37, 33, 37, 35, 37, + 35, 21, 19, 19, 21, 19, 17, 21, 21, 8, 17, 18, 14, 24, 21, 21, + 20, 22, 19, 20, 20, 19, 20, 26, 21, 20, 21, 33, 33, 33, 33, 35, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 16 + }, + + { + 15, 14, 16, 25, 19, 26, 22, 11, 18, 18, 27, 26, 13, 19, 9, 27, + 19, 18, 19, 19, 22, 19, 20, 18, 19, 20, 12, 32, 15, 32, 15, 35, + 15, 19, 19, 19, 19, 19, 16, 19, 20, 9, 19, 20, 14, 29, 19, 20, + 19, 19, 19, 19, 21, 19, 20, 32, 20, 19, 19, 33, 31, 39, 37, 39, + 37, 21, 21, 21, 23, 21, 19, 23, 23, 10, 19, 20, 16, 26, 23, 23, + 20, 20, 20, 22, 21, 22, 22, 26, 22, 22, 23, 35, 35, 35, 35, 37, + 19, 19, 19, 19, 29, 19, 19, 19, 19, 19, 9, 9, 9, 9, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 30, 19, 19, 19, 19, + 19, 10, 10, 10, 10, 19, 19, 19, 19, 19, 19, 19, 19, 19, 23, 35, + 12, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 11, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19 + } +#ifdef MORE_LANGUAGES + }, + { + { 13, 12, 31, 35, 23, 35, 31, 9, 14, 15, 25, 30, 11, 17, + 13, 31, 23, 16, 22, 21, 24, 23, 23, 20, 23, 22, 10, + 35, 26, 26, 26, 26, 30, 26, 24, 23, 24, 22, 21, 24, + 26, 10, 20, 26, 22, 29, 26, 25, 23, 25, 24, 24, 22, + 25, 24, 29, 29, 23, 25, 37, 22, 37, 35, 37, 35, 21, + 22, 21, 21, 22, 13, 22, 21, 10, 16, 22, 11, 32, 21, + 21, 23, 22, 16, 20, 14, 21, 20, 30, 25, 21, 21, 13, + 33, 13, 13, 13, 24, 22, 22, 19, 26, 21, 30, 20, 23, + 23, 21, 24, 26, 23, 22, 23, 21, 22, 20, 20, 26, 25, + 24, 22, 31, 32, 23, 30, 22, 22, 32, 23, 19, 18, 18, + 15, 22, 19, 27, 19, 20, 20, 18, 22, 24, 20, 19, 19, + 20, 19, 16, 19, 28, 20, 20, 18, 26, 27, 19, 26, 18, + 19, 27, 19, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 18, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 20 }, + { 13, 9, 21, 35, 23, 35, 35, 11, 35, 35, 25, 35, 11, + 17, 13, 33, 28, 14, 22, 21, 24, 23, 23, 21, 23, 22, + 10, 35, 13, 35, 13, 33, 5, 25, 22, 23, 24, 21, 21, 24, + 24, 9, 20, 24, 21, 27, 25, 25, 22, 25, 23, 20, 23, 23, + 23, 31, 23, 23, 23, 37, 33, 37, 35, 37, 35, 21, 19, + 19, 21, 19, 17, 21, 21, 8, 17, 18, 14, 24, 21, 21, 20, + 22, 19, 20, 20, 19, 20, 26, 21, 20, 21, 33, 33, 33, + 33, 35, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 16, }, + { 15, 14, 16, 25, 19, + 26, 22, 11, 18, 18, 27, 26, 13, 19, 9, 27, 19, 18, 19, + 19, 22, 19, 20, 18, 19, 20, 12, 32, 15, 32, 15, 35, + 15, 19, 19, 19, 19, 19, 16, 19, 20, 9, 19, 20, 14, 29, + 19, 20, 19, 19, 19, 19, 21, 19, 20, 32, 20, 19, 19, + 33, 31, 39, 37, 39, 37, 21, 21, 21, 23, 21, 19, 23, 23, 10, 19, 20, 16, 26, 23, + 21, 21, 20, 20, 22, 21, 22, 22, 26, 22, 22, 23, 35, + 35, 35, 35, 37, 19, 19, 19, 19, 19, 19, 29, 19, 19, + 19, 20, 22, 31, 19, 19, 19, 19, 19, 29, 19, 29, 19, + 21, 19, 30, 31, 21, 29, 19, 19, 29, 19, 21, 23, 32, + 21, 21, 30, 31, 22, 21, 32, 33, 23, 32, 21, 21, 32, + 21, 19, 19, 30, 31, 22, 22, 21, 32, 33, 23, 32, 21, + 21, 32, 21, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 11, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19 }, + } +#endif +}; + +wchar foreign_table[128] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 175, + 128, 129, 130, 0, 131, 0, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 0, 173, 142, 143, 144, 0, 145, 0, 0, 146, 147, 148, 149, 0, 0, 150, + 151, 152, 153, 0, 154, 0, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 0, 174, 165, 166, 167, 0, 168, 0, 0, 169, 170, 171, 172, 0, 0, 0, +}; + +void +CFont::Initialise(void) +{ + int slot; + + slot = CTxdStore::AddTxdSlot("fonts"); +#ifdef MORE_LANGUAGES + Slot = slot; + switch (LanguageSet) + { + case FONT_LANGSET_EFIGS: + default: + CTxdStore::LoadTxd(slot, "MODELS/FONTS.TXD"); + break; + case FONT_LANGSET_RUSSIAN: + CTxdStore::LoadTxd(slot, "MODELS/FONTS_R.TXD"); + break; + } +#else + CTxdStore::LoadTxd(slot, "MODELS/FONTS.TXD"); +#endif + CTxdStore::AddRef(slot); + CTxdStore::PushCurrentTxd(); + CTxdStore::SetCurrentTxd(slot); + Sprite[0].SetTexture("font2", "font2_mask"); + Sprite[1].SetTexture("pager", "pager_mask"); + Sprite[2].SetTexture("font1", "font1_mask"); + SetScale(1.0f, 1.0f); + SetSlantRefPoint(SCREEN_WIDTH, 0.0f); + SetSlant(0.0f); + SetColor(CRGBA(0xFF, 0xFF, 0xFF, 0)); + SetJustifyOff(); + SetCentreOff(); + SetWrapx(640.0f); + SetCentreSize(640.0f); + SetBackgroundOff(); + SetBackgroundColor(CRGBA(0x80, 0x80, 0x80, 0x80)); + SetBackGroundOnlyTextOff(); + SetPropOn(); + SetFontStyle(FONT_BANK); + SetRightJustifyWrap(0.0f); + SetAlphaFade(255.0f); + SetDropShadowPosition(0); + CTxdStore::PopCurrentTxd(); +} + +#ifdef MORE_LANGUAGES +void +CFont::ReloadFonts(uint8 set) +{ + if (Slot != -1 && LanguageSet != set) { + Sprite[0].Delete(); + Sprite[1].Delete(); + Sprite[2].Delete(); + CTxdStore::PushCurrentTxd(); + CTxdStore::RemoveTxd(Slot); + switch (set) + { + case FONT_LANGSET_EFIGS: + default: + CTxdStore::LoadTxd(Slot, "MODELS/FONTS.TXD"); + break; + case FONT_LANGSET_RUSSIAN: + CTxdStore::LoadTxd(Slot, "MODELS/FONTS_R.TXD"); + break; + } + CTxdStore::SetCurrentTxd(Slot); + Sprite[0].SetTexture("font2", "font2_mask"); + Sprite[1].SetTexture("pager", "pager_mask"); + Sprite[2].SetTexture("font1", "font1_mask"); + CTxdStore::PopCurrentTxd(); + } + LanguageSet = set; +} +#endif + +void +CFont::Shutdown(void) +{ + Sprite[0].Delete(); + Sprite[1].Delete(); + Sprite[2].Delete(); +#ifdef MORE_LANGUAGES + CTxdStore::RemoveTxdSlot(Slot); + Slot = -1; +#else + CTxdStore::RemoveTxdSlot(CTxdStore::FindTxdSlot("fonts")); +#endif +} + +void +CFont::InitPerFrame(void) +{ + Details.bank = CSprite2d::GetBank(30, Sprite[0].m_pTexture); + CSprite2d::GetBank(15, Sprite[1].m_pTexture); + CSprite2d::GetBank(15, Sprite[2].m_pTexture); + SetDropShadowPosition(0); + NewLine = 0; +} + +void +CFont::PrintChar(float x, float y, wchar c) +{ + if(x <= 0.0f || x > SCREEN_WIDTH || + y <= 0.0f || y > SCREEN_HEIGHT) // BUG: game uses SCREENW again + return; + + float w = GetCharacterWidth(c) / 32.0f; + float xoff = c & 0xF; + float yoff = c >> 4; + + if(Details.style == FONT_BANK || Details.style == FONT_HEADING){ + if(Details.dropShadowPosition != 0){ + CSprite2d::AddSpriteToBank(Details.bank + Details.style, // BUG: game doesn't add bank + CRect(x + SCREEN_SCALE_X(Details.dropShadowPosition), + y + SCREEN_SCALE_Y(Details.dropShadowPosition), + x + SCREEN_SCALE_X(Details.dropShadowPosition) + 32.0f * Details.scaleX * 1.0f, + y + SCREEN_SCALE_Y(Details.dropShadowPosition) + 40.0f * Details.scaleY * 0.5f), + Details.dropColor, + xoff/16.0f, yoff/12.8f, + (xoff+1.0f)/16.0f - 0.001f, yoff/12.8f, + xoff/16.0f, (yoff+1.0f)/12.8f, + (xoff+1.0f)/16.0f - 0.001f, (yoff+1.0f)/12.8f - 0.0001f); + } + CSprite2d::AddSpriteToBank(Details.bank + Details.style, // BUG: game doesn't add bank + CRect(x, y, + x + 32.0f * Details.scaleX * 1.0f, + y + 40.0f * Details.scaleY * 0.5f), + Details.color, + xoff/16.0f, yoff/12.8f, + (xoff+1.0f)/16.0f - 0.001f, yoff/12.8f, + xoff/16.0f, (yoff+1.0f)/12.8f - 0.002f, + (xoff+1.0f)/16.0f - 0.001f, (yoff+1.0f)/12.8f - 0.002f); + }else{ + CSprite2d::AddSpriteToBank(Details.bank + Details.style, // BUG: game doesn't add bank + CRect(x, y, + x + 32.0f * Details.scaleX * w, + y + 32.0f * Details.scaleY * 0.5f), + Details.color, + xoff/16.0f, yoff/16.0f, + (xoff+w)/16.0f, yoff/16.0f, + xoff/16.0f, (yoff+1.0f)/16.0f, + (xoff+w)/16.0f - 0.0001f, (yoff+1.0f)/16.0f - 0.0001f); + } +} + +void +CFont::PrintString(float xstart, float ystart, wchar *s) +{ + CRect rect; + int numSpaces; + float lineLength; + float x, y; + bool first; + wchar *start, *t; + + if(*s == '*') + return; + + if(Details.background){ + GetNumberLines(xstart, ystart, s); // BUG: result not used + GetTextRect(&rect, xstart, ystart, s); + CSprite2d::DrawRect(rect, Details.backgroundColor); + } + + lineLength = 0.0f; + numSpaces = 0; + first = true; + if(Details.centre || Details.rightJustify) + x = 0.0f; + else + x = xstart; + y = ystart; + start = s; + + // This is super ugly, I blame R* + for(;;){ + for(;;){ + for(;;){ + if(*s == '\0') + return; + int xend = Details.centre ? Details.centreSize : + Details.rightJustify ? xstart - Details.rightJustifyWrap : + Details.wrapX; + if(x + GetStringWidth(s) > xend && !first){ + // flush line + float spaceWidth = !Details.justify || Details.centre ? 0.0f : + (Details.wrapX - lineLength) / numSpaces; + float xleft = Details.centre ? xstart - x/2 : + Details.rightJustify ? xstart - x : + xstart; + PrintString(xleft, y, start, s, spaceWidth); + // reset things + lineLength = 0.0f; + numSpaces = 0; + first = true; + if(Details.centre || Details.rightJustify) + x = 0.0f; + else + x = xstart; + y += 32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY; + start = s; + }else + break; + } + // advance by one word + t = GetNextSpace(s); + if(t[0] == '\0' || + t[0] == ' ' && t[1] == '\0') + break; + if(!first) + numSpaces++; + first = false; + x += GetStringWidth(s) + GetCharacterSize(*t - ' '); + lineLength = x; + s = t+1; + } + // print rest + if(t[0] == ' ' && t[1] == '\0') + t[0] = '\0'; + x += GetStringWidth(s); + s = t; + float xleft = Details.centre ? xstart - x/2 : + Details.rightJustify ? xstart - x : + xstart; + PrintString(xleft, y, start, s, 0.0f); + } +} + +int +CFont::GetNumberLines(float xstart, float ystart, wchar *s) +{ + int n; + float x, y; + wchar *t; + + n = 0; + if(Details.centre || Details.rightJustify) + x = 0.0f; + else + x = xstart; + y = ystart; + + while(*s){ + if(x + GetStringWidth(s) > (Details.centre ? Details.centreSize : Details.wrapX)){ + // reached end of line + if(Details.centre || Details.rightJustify) + x = 0.0f; + else + x = xstart; + n++; + // Why even? + y += 32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY; + }else{ + // still space in current line + t = GetNextSpace(s); + if(*t == '\0'){ + // end of string + x += GetStringWidth(s); + n++; + s = t; + }else{ + x += GetStringWidth(s); + x += GetCharacterSize(*t - ' '); + s = t+1; + } + } + } + + return n; +} + +void +CFont::GetTextRect(CRect *rect, float xstart, float ystart, wchar *s) +{ + int numLines; + float x, y; + int16 maxlength; + wchar *t; + + maxlength = 0; + numLines = 0; + if(Details.centre || Details.rightJustify) + x = 0.0f; + else + x = xstart; + y = ystart; + + while(*s){ + if(x + GetStringWidth(s) > (Details.centre ? Details.centreSize : Details.wrapX)){ + // reached end of line + if(x > maxlength) + maxlength = x; + if(Details.centre || Details.rightJustify) + x = 0.0f; + else + x = xstart; + numLines++; + y += 32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY; + }else{ + // still space in current line + t = GetNextSpace(s); + if(*t == '\0'){ + // end of string + x += GetStringWidth(s); + if(x > maxlength) + maxlength = x; + numLines++; + s = t; + }else{ + x += GetStringWidth(s); + x += GetCharacterSize(*t - ' '); + s = t+1; + } + } + } + + if(Details.centre){ + if(Details.backgroundOnlyText){ + rect->left = xstart - maxlength/2 - 4.0f; + rect->right = xstart + maxlength/2 + 4.0f; + rect->bottom = (32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY) * numLines + + ystart + 2.0f; + rect->top = ystart - 2.0f; + }else{ + rect->left = xstart - Details.centreSize*0.5f - 4.0f; + rect->right = xstart + Details.centreSize*0.5f + 4.0f; + rect->bottom = (32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY) * numLines + + ystart + 2.0f; + rect->top = ystart - 2.0f; + } + }else{ + rect->left = xstart - 4.0f; + rect->right = Details.wrapX; + // WTF? + rect->bottom = ystart - 4.0f + 4.0f; + rect->top = (32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY) * numLines + + ystart + 2.0f + 2.0f; + } +} + +void +CFont::PrintString(float x, float y, wchar *start, wchar *end, float spwidth) +{ + wchar *s, c, unused; + + for(s = start; s < end; s++){ + if(*s == '~') + s = ParseToken(s, &unused); + c = *s - ' '; + if(Details.slant != 0.0f) + y = (Details.slantRefX - x)*Details.slant + Details.slantRefY; + PrintChar(x, y, c); + x += GetCharacterSize(c); + if(c == 0) // space + x += spwidth; + } +} + +float +CFont::GetCharacterWidth(wchar c) +{ +#ifdef MORE_LANGUAGES + if (Details.proportional) + return Size[LanguageSet][Details.style][c]; + else + return Size[LanguageSet][Details.style][192]; +#else + if (Details.proportional) + return Size[Details.style][c]; + else + return Size[Details.style][192]; +#endif // MORE_LANGUAGES +} + +float +CFont::GetCharacterSize(wchar c) +{ +#ifdef MORE_LANGUAGES + if(Details.proportional) + return Size[LanguageSet][Details.style][c] * Details.scaleX; + else + return Size[LanguageSet][Details.style][192] * Details.scaleX; +#else + if (Details.proportional) + return Size[Details.style][c] * Details.scaleX; + else + return Size[Details.style][192] * Details.scaleX; +#endif // MORE_LANGUAGES +} + +float +CFont::GetStringWidth(wchar *s, bool spaces) +{ + float w; + + w = 0.0f; + for(; (*s != ' ' || spaces) && *s != '\0'; s++){ + if(*s == '~'){ + s++; + while(*s != '~') s++; + s++; + if(*s == ' ' && !spaces) + break; + } + w += GetCharacterSize(*s - ' '); + } + return w; +} + +wchar* +CFont::GetNextSpace(wchar *s) +{ + for(; *s != ' ' && *s != '\0'; s++) + if(*s == '~'){ + s++; + while(*s != '~') s++; + s++; + if(*s == ' ') + break; + } + return s; +} + +wchar* +CFont::ParseToken(wchar *s, wchar*) +{ + s++; + if(Details.color.r || Details.color.g || Details.color.b) + switch(*s){ + case 'N': + case 'n': + NewLine = 1; + break; + case 'b': SetColor(CRGBA(0x80, 0xA7, 0xF3, 0xFF)); break; + case 'g': SetColor(CRGBA(0x5F, 0xA0, 0x6A, 0xFF)); break; + case 'h': SetColor(CRGBA(0xE1, 0xE1, 0xE1, 0xFF)); break; + case 'l': SetColor(CRGBA(0x00, 0x00, 0x00, 0xFF)); break; + case 'p': SetColor(CRGBA(0xA8, 0x6E, 0xFC, 0xFF)); break; + case 'r': SetColor(CRGBA(0x71, 0x2B, 0x49, 0xFF)); break; + case 'w': SetColor(CRGBA(0xAF, 0xAF, 0xAF, 0xFF)); break; + case 'y': SetColor(CRGBA(0xD2, 0xC4, 0x6A, 0xFF)); break; + } + while(*s != '~') s++; + return s+1; +} + +void +CFont::DrawFonts(void) +{ + CSprite2d::DrawBank(Details.bank); + CSprite2d::DrawBank(Details.bank+1); + CSprite2d::DrawBank(Details.bank+2); +} + +wchar +CFont::character_code(uint8 c) +{ + if(c < 128) + return c; + return foreign_table[c-128]; +} + +STARTPATCHES + + InjectHook(0x500A40, CFont::Initialise, PATCH_JUMP); + InjectHook(0x500BA0, CFont::Shutdown, PATCH_JUMP); + InjectHook(0x500BE0, CFont::InitPerFrame, PATCH_JUMP); + InjectHook(0x500C30, CFont::PrintChar, PATCH_JUMP); + InjectHook(0x500F50, (void (*)(float, float, wchar*))CFont::PrintString, PATCH_JUMP); + InjectHook(0x501260, CFont::GetNumberLines, PATCH_JUMP); + InjectHook(0x5013B0, CFont::GetTextRect, PATCH_JUMP); + InjectHook(0x501730, (void (*)(float, float, wchar*, wchar*, float))CFont::PrintString, PATCH_JUMP); + InjectHook(0x5017E0, CFont::GetCharacterWidth, PATCH_JUMP); + InjectHook(0x501840, CFont::GetCharacterSize, PATCH_JUMP); + InjectHook(0x5018A0, CFont::GetStringWidth, PATCH_JUMP); + InjectHook(0x501960, CFont::GetNextSpace, PATCH_JUMP); + InjectHook(0x5019A0, CFont::ParseToken, PATCH_JUMP); + InjectHook(0x501B50, CFont::DrawFonts, PATCH_JUMP); + InjectHook(0x501E80, CFont::character_code, PATCH_JUMP); + + InjectHook(0x501B80, CFont::SetScale, PATCH_JUMP); + InjectHook(0x501BA0, CFont::SetSlantRefPoint, PATCH_JUMP); + InjectHook(0x501BC0, CFont::SetSlant, PATCH_JUMP); + InjectHook(0x501BD0, CFont::SetColor, PATCH_JUMP); + InjectHook(0x501C60, CFont::SetJustifyOn, PATCH_JUMP); + InjectHook(0x501C80, CFont::SetJustifyOff, PATCH_JUMP); + InjectHook(0x501C90, CFont::SetCentreOn, PATCH_JUMP); + InjectHook(0x501CB0, CFont::SetCentreOff, PATCH_JUMP); + InjectHook(0x501CC0, CFont::SetWrapx, PATCH_JUMP); + InjectHook(0x501CD0, CFont::SetCentreSize, PATCH_JUMP); + InjectHook(0x501CE0, CFont::SetBackgroundOn, PATCH_JUMP); + InjectHook(0x501CF0, CFont::SetBackgroundOff, PATCH_JUMP); + InjectHook(0x501D00, CFont::SetBackgroundColor, PATCH_JUMP); + InjectHook(0x501D30, CFont::SetBackGroundOnlyTextOn, PATCH_JUMP); + InjectHook(0x501D40, CFont::SetBackGroundOnlyTextOff, PATCH_JUMP); + InjectHook(0x501D50, CFont::SetRightJustifyOn, PATCH_JUMP); + InjectHook(0x501D70, CFont::SetRightJustifyOff, PATCH_JUMP); + InjectHook(0x501D90, CFont::SetPropOff, PATCH_JUMP); + InjectHook(0x501DA0, CFont::SetPropOn, PATCH_JUMP); + InjectHook(0x501DB0, CFont::SetFontStyle, PATCH_JUMP); + InjectHook(0x501DC0, CFont::SetRightJustifyWrap, PATCH_JUMP); + InjectHook(0x501DD0, CFont::SetAlphaFade, PATCH_JUMP); + InjectHook(0x501DE0, CFont::SetDropColor, PATCH_JUMP); + InjectHook(0x501E70, CFont::SetDropShadowPosition, PATCH_JUMP); + +ENDPATCHES diff --git a/src/render/SpecialFX.h b/src/render/SpecialFX.h index 8519ae79..2d9f18b1 100644 --- a/src/render/SpecialFX.h +++ b/src/render/SpecialFX.h @@ -12,26 +12,26 @@ public: class CRegisteredMotionBlurStreak { public: - uintptr m_id; - uint8 m_red; - uint8 m_green; - uint8 m_blue; - CVector m_pos1[3]; - CVector m_pos2[3]; + uintptr m_id; + uint8 m_red; + uint8 m_green; + uint8 m_blue; + CVector m_pos1[3]; + CVector m_pos2[3]; bool m_isValid[3]; - void Update(void); - void Render(void); + void Update(void); + void Render(void); }; class CMotionBlurStreaks { static CRegisteredMotionBlurStreak aStreaks[NUMMBLURSTREAKS]; public: - static void Init(void); - static void Update(void); + static void Init(void); + static void Update(void); static void RegisterStreak(uintptr id, uint8 r, uint8 g, uint8 b, CVector p1, CVector p2); - static void Render(void); + static void Render(void); }; struct CBulletTrace @@ -133,18 +133,18 @@ enum BRIGHTLIGHT_REAR = BRIGHTLIGHT_REAR_LONG, }; -class CBrightLight -{ -public: - CVector m_pos; - CVector m_up; - CVector m_side; - CVector m_front; - float m_camDist; - uint8 m_type; - uint8 m_red; - uint8 m_green; - uint8 m_blue; +class CBrightLight +{ +public: + CVector m_pos; + CVector m_up; + CVector m_side; + CVector m_front; + float m_camDist; + uint8 m_type; + uint8 m_red; + uint8 m_green; + uint8 m_blue; }; class CBrightLights @@ -152,11 +152,11 @@ class CBrightLights static int NumBrightLights; static CBrightLight aBrightLights[NUMBRIGHTLIGHTS]; public: - static void Init(void); + static void Init(void); static void RegisterOne(CVector pos, CVector up, CVector side, CVector front, uint8 type, uint8 red = 0, uint8 green = 0, uint8 blue = 0); - static void Render(void); - static void RenderOutGeometryBuffer(void); + static void Render(void); + static void RenderOutGeometryBuffer(void); }; @@ -169,12 +169,12 @@ enum class CShinyText { public: - CVector m_verts[4]; - CVector2D m_texCoords[4]; - float m_camDist; - uint8 m_type; - uint8 m_red; - uint8 m_green; + CVector m_verts[4]; + CVector2D m_texCoords[4]; + float m_camDist; + uint8 m_type; + uint8 m_red; + uint8 m_green; uint8 m_blue; }; @@ -183,12 +183,12 @@ class CShinyTexts static int NumShinyTexts; static CShinyText aShinyTexts[NUMSHINYTEXTS]; public: - static void Init(void); + static void Init(void); static void RegisterOne(CVector p0, CVector p1, CVector p2, CVector p3, float u0, float v0, float u1, float v1, float u2, float v2, float u3, float v3, uint8 type, uint8 red, uint8 green, uint8 blue, float maxDist); - static void Render(void); - static void RenderOutGeometryBuffer(void); + static void Render(void); + static void RenderOutGeometryBuffer(void); }; class CMoneyMessage diff --git a/src/render/TexList.cpp b/src/render/TexList.cpp index daed620a..1689837f 100644 --- a/src/render/TexList.cpp +++ b/src/render/TexList.cpp @@ -1,41 +1,41 @@ -#include "common.h" -#include "TexList.h" -#include "rtbmp.h" -#include "FileMgr.h" - -bool CTexList::ms_nTexUsed[MAX_TEXUSED]; - -void -CTexList::Initialise() -{} - -void -CTexList::Shutdown() -{} - -RwTexture * -CTexList::SetTexture(int32 slot, char *name) -{ - return nil; -} - -int32 -CTexList::GetFirstFreeTexture() -{ - for (int32 i = 0; i < MAX_TEXUSED; i++) - if (!ms_nTexUsed[i]) - return i; - return -1; -} - -RwTexture * -CTexList::LoadFileNameTexture(char *name) -{ - return SetTexture(GetFirstFreeTexture(), name); -} - -void -CTexList::LoadGlobalTextureList() -{ - CFileMgr::SetDir("TEXTURES"); +#include "common.h" +#include "TexList.h" +#include "rtbmp.h" +#include "FileMgr.h" + +bool CTexList::ms_nTexUsed[MAX_TEXUSED]; + +void +CTexList::Initialise() +{} + +void +CTexList::Shutdown() +{} + +RwTexture * +CTexList::SetTexture(int32 slot, char *name) +{ + return nil; +} + +int32 +CTexList::GetFirstFreeTexture() +{ + for (int32 i = 0; i < MAX_TEXUSED; i++) + if (!ms_nTexUsed[i]) + return i; + return -1; +} + +RwTexture * +CTexList::LoadFileNameTexture(char *name) +{ + return SetTexture(GetFirstFreeTexture(), name); +} + +void +CTexList::LoadGlobalTextureList() +{ + CFileMgr::SetDir("TEXTURES"); } \ No newline at end of file diff --git a/src/render/TexList.h b/src/render/TexList.h index c6618fba..7e042211 100644 --- a/src/render/TexList.h +++ b/src/render/TexList.h @@ -1,14 +1,14 @@ -#pragma once - -class CTexList -{ - enum { MAX_TEXUSED = 400, }; - static bool ms_nTexUsed[MAX_TEXUSED]; -public: - static void Initialise(); - static void Shutdown(); - static RwTexture *SetTexture(int32 slot, char *name); - static int32 GetFirstFreeTexture(); - static RwTexture *LoadFileNameTexture(char *name); - static void LoadGlobalTextureList(); +#pragma once + +class CTexList +{ + enum { MAX_TEXUSED = 400, }; + static bool ms_nTexUsed[MAX_TEXUSED]; +public: + static void Initialise(); + static void Shutdown(); + static RwTexture *SetTexture(int32 slot, char *name); + static int32 GetFirstFreeTexture(); + static RwTexture *LoadFileNameTexture(char *name); + static void LoadGlobalTextureList(); }; \ No newline at end of file diff --git a/src/save/Date.h b/src/save/Date.h index 3e022d09..15646c23 100644 --- a/src/save/Date.h +++ b/src/save/Date.h @@ -1,18 +1,18 @@ -#pragma once - -class CDate -{ -public: - int m_nSecond; - int m_nMinute; - int m_nHour; - int m_nDay; - int m_nMonth; - int m_nYear; - - CDate(); - bool operator>(const CDate &right); - bool operator<(const CDate &right); - bool operator==(const CDate &right); - void PopulateDateFields(int8 &second, int8 &minute, int8 &hour, int8 &day, int8 &month, int16 year); +#pragma once + +class CDate +{ +public: + int m_nSecond; + int m_nMinute; + int m_nHour; + int m_nDay; + int m_nMonth; + int m_nYear; + + CDate(); + bool operator>(const CDate &right); + bool operator<(const CDate &right); + bool operator==(const CDate &right); + void PopulateDateFields(int8 &second, int8 &minute, int8 &hour, int8 &day, int8 &month, int16 year); }; \ No newline at end of file diff --git a/src/save/GenericGameStorage.h b/src/save/GenericGameStorage.h index 40d92f16..e6fd2e2d 100644 --- a/src/save/GenericGameStorage.h +++ b/src/save/GenericGameStorage.h @@ -1,43 +1,43 @@ -#pragma once - -#include "PCSave.h" - -#define SLOT_COUNT (8) - -bool GenericSave(int file); -bool GenericLoad(); -bool ReadInSizeofSaveFileBuffer(int32 &file, uint32 &size); -bool ReadDataFromFile(int32 file, uint8 *buf, uint32 size); -bool CloseFile(int32 file); -void DoGameSpecificStuffAfterSucessLoad(); -bool CheckSlotDataValid(int32 slot); -void MakeSpaceForSizeInBufferPointer(uint8 *&presize, uint8 *&buf, uint8 *&postsize); -void CopySizeAndPreparePointer(uint8 *&buf, uint8 *&postbuf, uint8 *&postbuf2, uint32 &unused, uint32 &size); -void DoGameSpecificStuffBeforeSave(); -void MakeValidSaveName(int32 slot); -wchar *GetSavedGameDateAndTime(int32 slot); -wchar *GetNameOfSavedGame(int32 slot); -bool CheckDataNotCorrupt(int32 slot, char *name); -bool RestoreForStartLoad(); -int align4bytes(int32 size); - -extern class CDate& CompileDateAndTime; - -extern char (&DefaultPCSaveFileName)[260]; -extern char (&ValidSaveName)[260]; -extern char (&LoadFileName)[256]; -extern wchar (&SlotFileName)[SLOT_COUNT][260]; -extern wchar (&SlotSaveDate)[SLOT_COUNT][70]; -extern int &CheckSum; -extern enum eLevelName &m_LevelToLoad; -extern int (&Slots)[SLOT_COUNT+1]; - -extern bool &b_FoundRecentSavedGameWantToLoad; -extern bool &JustLoadedDontFadeInYet; -extern bool &StillToFadeOut; -extern uint32 &TimeStartedCountingForFade; -extern uint32 &TimeToStayFadedBeforeFadeOut; - -extern char SaveFileNameJustSaved[260]; // 8F2570 - +#pragma once + +#include "PCSave.h" + +#define SLOT_COUNT (8) + +bool GenericSave(int file); +bool GenericLoad(); +bool ReadInSizeofSaveFileBuffer(int32 &file, uint32 &size); +bool ReadDataFromFile(int32 file, uint8 *buf, uint32 size); +bool CloseFile(int32 file); +void DoGameSpecificStuffAfterSucessLoad(); +bool CheckSlotDataValid(int32 slot); +void MakeSpaceForSizeInBufferPointer(uint8 *&presize, uint8 *&buf, uint8 *&postsize); +void CopySizeAndPreparePointer(uint8 *&buf, uint8 *&postbuf, uint8 *&postbuf2, uint32 &unused, uint32 &size); +void DoGameSpecificStuffBeforeSave(); +void MakeValidSaveName(int32 slot); +wchar *GetSavedGameDateAndTime(int32 slot); +wchar *GetNameOfSavedGame(int32 slot); +bool CheckDataNotCorrupt(int32 slot, char *name); +bool RestoreForStartLoad(); +int align4bytes(int32 size); + +extern class CDate& CompileDateAndTime; + +extern char (&DefaultPCSaveFileName)[260]; +extern char (&ValidSaveName)[260]; +extern char (&LoadFileName)[256]; +extern wchar (&SlotFileName)[SLOT_COUNT][260]; +extern wchar (&SlotSaveDate)[SLOT_COUNT][70]; +extern int &CheckSum; +extern enum eLevelName &m_LevelToLoad; +extern int (&Slots)[SLOT_COUNT+1]; + +extern bool &b_FoundRecentSavedGameWantToLoad; +extern bool &JustLoadedDontFadeInYet; +extern bool &StillToFadeOut; +extern uint32 &TimeStartedCountingForFade; +extern uint32 &TimeToStayFadedBeforeFadeOut; + +extern char SaveFileNameJustSaved[260]; // 8F2570 + const char TopLineEmptyFile[] = "THIS FILE IS NOT VALID YET"; \ No newline at end of file diff --git a/src/text/Messages.cpp b/src/text/Messages.cpp index db5b9036..9896a8e0 100644 --- a/src/text/Messages.cpp +++ b/src/text/Messages.cpp @@ -1,835 +1,835 @@ -#define DIRECTINPUT_VERSION 0x0800 -#include "dinput.h" - -#include "common.h" -#include "patcher.h" -#include "Messages.h" -#include "RwHelper.h" -#include "Hud.h" -#include "User.h" -#include "Timer.h" -#include "Text.h" - -#include "ControllerConfig.h" - -tMessage(&CMessages::BriefMessages)[NUMBRIEFMESSAGES] = *(tMessage(*)[NUMBRIEFMESSAGES])*(uintptr*)0x8786E0; -tPreviousBrief(&CMessages::PreviousBriefs)[NUMPREVIOUSBRIEFS] = *(tPreviousBrief(*)[NUMPREVIOUSBRIEFS])*(uintptr*)0x713C08; -tBigMessage(&CMessages::BIGMessages)[NUMBIGMESSAGES] = *(tBigMessage(*)[NUMBIGMESSAGES])*(uintptr*)0x773628; -char CMessages::PreviousMissionTitle[16]; // unused - -void -CMessages::Init() -{ - ClearMessages(); - - for (int32 i = 0; i < NUMPREVIOUSBRIEFS; i++) { - PreviousBriefs[i].m_pText = nil; - PreviousBriefs[i].m_pString = nil; - } -} - -uint16 -CMessages::GetWideStringLength(wchar *src) -{ - uint16 length = 0; - while (*(src++)) length++; - return length; -} - -void -CMessages::WideStringCopy(wchar *dst, wchar *src, uint16 size) -{ - int32 i = 0; - if (src) { - while (i < size - 1) { - if (!src[i]) break; - dst[i] = src[i]; - i++; - } - } else { - while (i < size - 1) - dst[i++] = '\0'; - } - dst[i] = '\0'; -} - -bool -CMessages::WideStringCompare(wchar *str1, wchar *str2, uint16 size) -{ - uint16 len1 = GetWideStringLength(str1); - uint16 len2 = GetWideStringLength(str2); - if (len1 != len2 && (len1 < size || len2 < size)) - return false; - - for (int32 i = 0; i < size; i++) { - if (!str1[i]) - break; - - if (str1[i] != str2[i]) - return false; - } - return true; -} - -void -CMessages::Process() -{ - for (int32 style = 0; style < 6; style++) { - if (BIGMessages[style].m_Stack[0].m_pText != nil && CTimer::GetTimeInMilliseconds() > BIGMessages[style].m_Stack[0].m_nTime + BIGMessages[style].m_Stack[0].m_nStartTime) { - BIGMessages[style].m_Stack[0].m_pText = nil; - - int32 i = 0; - while (i < 3) { - if (BIGMessages[style].m_Stack[i + 1].m_pText == nil) break; - BIGMessages[style].m_Stack[i] = BIGMessages[style].m_Stack[i + 1]; - i++; - } - - BIGMessages[style].m_Stack[i].m_pText = nil; - BIGMessages[style].m_Stack[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); - } - } - - if (BriefMessages[0].m_pText != nil && CTimer::GetTimeInMilliseconds() > BriefMessages[0].m_nTime + BriefMessages[0].m_nStartTime) { - BriefMessages[0].m_pText = nil; - int32 i = 0; - while (i < NUMBRIEFMESSAGES-1) { - if (BriefMessages[i + 1].m_pText == nil) - break; - - BriefMessages[i] = BriefMessages[i + 1]; - i++; - } - CMessages::BriefMessages[i].m_pText = nil; - CMessages::BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); - if (BriefMessages[0].m_pText != nil) - AddToPreviousBriefArray( - BriefMessages[0].m_pText, - BriefMessages[0].m_nNumber[0], - BriefMessages[0].m_nNumber[1], - BriefMessages[0].m_nNumber[2], - BriefMessages[0].m_nNumber[3], - BriefMessages[0].m_nNumber[4], - BriefMessages[0].m_nNumber[5], - BriefMessages[0].m_pString); - } -} - -void -CMessages::Display() -{ - wchar outstr[256]; - - DefinedState(); - - for (int32 i = 0; i < NUMBIGMESSAGES; i++) { - InsertNumberInString( - BIGMessages[i].m_Stack[0].m_pText, - BIGMessages[i].m_Stack[0].m_nNumber[0], - BIGMessages[i].m_Stack[0].m_nNumber[1], - BIGMessages[i].m_Stack[0].m_nNumber[2], - BIGMessages[i].m_Stack[0].m_nNumber[3], - BIGMessages[i].m_Stack[0].m_nNumber[4], - BIGMessages[i].m_Stack[0].m_nNumber[5], - outstr); - InsertStringInString(outstr, BIGMessages[i].m_Stack[0].m_pString); - InsertPlayerControlKeysInString(outstr); - CHud::SetBigMessage(outstr, i); - } - - InsertNumberInString( - BriefMessages[0].m_pText, - BriefMessages[0].m_nNumber[0], - BriefMessages[0].m_nNumber[1], - BriefMessages[0].m_nNumber[2], - BriefMessages[0].m_nNumber[3], - BriefMessages[0].m_nNumber[4], - BriefMessages[0].m_nNumber[5], - outstr); - InsertStringInString(outstr, BriefMessages[0].m_pString); - InsertPlayerControlKeysInString(outstr); - CHud::SetMessage(outstr); -} - -void -CMessages::AddMessage(wchar *msg, uint32 time, uint16 flag) -{ - wchar outstr[512]; // unused - WideStringCopy(outstr, msg, 256); - InsertPlayerControlKeysInString(outstr); - GetWideStringLength(outstr); - - int32 i = 0; - while (i < NUMBRIEFMESSAGES && BriefMessages[i].m_pText != nil) - i++; - if (i >= NUMBRIEFMESSAGES) return; - - BriefMessages[i].m_pText = msg; - BriefMessages[i].m_nFlag = flag; - BriefMessages[i].m_nTime = time; - BriefMessages[i].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BriefMessages[i].m_nNumber[0] = -1; - BriefMessages[i].m_nNumber[1] = -1; - BriefMessages[i].m_nNumber[2] = -1; - BriefMessages[i].m_nNumber[3] = -1; - BriefMessages[i].m_nNumber[4] = -1; - BriefMessages[i].m_nNumber[5] = -1; - BriefMessages[i].m_pString = nil; - if (i == 0) - AddToPreviousBriefArray( - BriefMessages[0].m_pText, - BriefMessages[0].m_nNumber[0], - BriefMessages[0].m_nNumber[1], - BriefMessages[0].m_nNumber[2], - BriefMessages[0].m_nNumber[3], - BriefMessages[0].m_nNumber[4], - BriefMessages[0].m_nNumber[5], - BriefMessages[0].m_pString); -} - -void -CMessages::AddMessageJumpQ(wchar *msg, uint32 time, uint16 flag) -{ - wchar outstr[512]; // unused - WideStringCopy(outstr, msg, 256); - InsertPlayerControlKeysInString(outstr); - GetWideStringLength(outstr); - - BriefMessages[0].m_pText = msg; - BriefMessages[0].m_nFlag = flag; - BriefMessages[0].m_nTime = time; - BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BriefMessages[0].m_nNumber[0] = -1; - BriefMessages[0].m_nNumber[1] = -1; - BriefMessages[0].m_nNumber[2] = -1; - BriefMessages[0].m_nNumber[3] = -1; - BriefMessages[0].m_nNumber[4] = -1; - BriefMessages[0].m_nNumber[5] = -1; - BriefMessages[0].m_pString = nil; - AddToPreviousBriefArray(msg, -1, -1, -1, -1, -1, -1, 0); -} - -void -CMessages::AddMessageSoon(wchar *msg, uint32 time, uint16 flag) -{ - wchar outstr[512]; // unused - WideStringCopy(outstr, msg, 256); - InsertPlayerControlKeysInString(outstr); - GetWideStringLength(outstr); - - if (BriefMessages[0].m_pText != nil) { - for (int i = NUMBRIEFMESSAGES-1; i > 1; i--) - BriefMessages[i] = BriefMessages[i-1]; - - BriefMessages[1].m_pText = msg; - BriefMessages[1].m_nFlag = flag; - BriefMessages[1].m_nTime = time; - BriefMessages[1].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BriefMessages[1].m_nNumber[0] = -1; - BriefMessages[1].m_nNumber[1] = -1; - BriefMessages[1].m_nNumber[2] = -1; - BriefMessages[1].m_nNumber[3] = -1; - BriefMessages[1].m_nNumber[4] = -1; - BriefMessages[1].m_nNumber[5] = -1; - BriefMessages[1].m_pString = nil; - }else{ - BriefMessages[0].m_pText = msg; - BriefMessages[0].m_nFlag = flag; - BriefMessages[0].m_nTime = time; - BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BriefMessages[0].m_nNumber[0] = -1; - BriefMessages[0].m_nNumber[1] = -1; - BriefMessages[0].m_nNumber[2] = -1; - BriefMessages[0].m_nNumber[3] = -1; - BriefMessages[0].m_nNumber[4] = -1; - BriefMessages[0].m_nNumber[5] = -1; - BriefMessages[0].m_pString = nil; - AddToPreviousBriefArray(msg, -1, -1, -1, -1, -1, -1, nil); - } -} - -void -CMessages::ClearMessages() -{ - for (int32 i = 0; i < NUMBIGMESSAGES; i++) { - for (int32 j = 0; j < 4; j++) { - BIGMessages[i].m_Stack[j].m_pText = nil; - BIGMessages[i].m_Stack[j].m_pString = nil; - } - } - ClearSmallMessagesOnly(); -} - -void -CMessages::ClearSmallMessagesOnly() -{ - for (int32 i = 0; i < NUMBRIEFMESSAGES; i++) { - BriefMessages[i].m_pText = nil; - BriefMessages[i].m_pString = nil; - } -} - -void -CMessages::AddBigMessage(wchar *msg, uint32 time, uint16 style) -{ - wchar outstr[512]; // unused - WideStringCopy(outstr, msg, 256); - InsertPlayerControlKeysInString(outstr); - GetWideStringLength(outstr); - - BIGMessages[style].m_Stack[0].m_pText = msg; - BIGMessages[style].m_Stack[0].m_nFlag = 0; - BIGMessages[style].m_Stack[0].m_nTime = time; - BIGMessages[style].m_Stack[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BIGMessages[style].m_Stack[0].m_nNumber[0] = -1; - BIGMessages[style].m_Stack[0].m_nNumber[1] = -1; - BIGMessages[style].m_Stack[0].m_nNumber[2] = -1; - BIGMessages[style].m_Stack[0].m_nNumber[3] = -1; - BIGMessages[style].m_Stack[0].m_nNumber[4] = -1; - BIGMessages[style].m_Stack[0].m_nNumber[5] = -1; - BIGMessages[style].m_Stack[0].m_pString = nil; -} -void -CMessages::AddBigMessageQ(wchar *msg, uint32 time, uint16 style) -{ - wchar outstr[512]; // unused - WideStringCopy(outstr, msg, 256); - InsertPlayerControlKeysInString(outstr); - GetWideStringLength(outstr); - - int32 i = 0; - while (i < 4 && BIGMessages[style].m_Stack[i].m_pText != nil) - i++; - - if (i >= 4) return; - - BIGMessages[style].m_Stack[i].m_pText = msg; - BIGMessages[style].m_Stack[i].m_nFlag = 0; - BIGMessages[style].m_Stack[i].m_nTime = time; - BIGMessages[style].m_Stack[i].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BIGMessages[style].m_Stack[i].m_nNumber[0] = -1; - BIGMessages[style].m_Stack[i].m_nNumber[1] = -1; - BIGMessages[style].m_Stack[i].m_nNumber[2] = -1; - BIGMessages[style].m_Stack[i].m_nNumber[3] = -1; - BIGMessages[style].m_Stack[i].m_nNumber[4] = -1; - BIGMessages[style].m_Stack[i].m_nNumber[5] = -1; - BIGMessages[style].m_Stack[i].m_pString = nil; -} - -void -CMessages::AddToPreviousBriefArray(wchar *text, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6, wchar *string) -{ - int32 i = 0; - while (i < NUMPREVIOUSBRIEFS) { - if (PreviousBriefs[i].m_pText == nil) - break; - if (PreviousBriefs[i].m_nNumber[0] == n1 - && PreviousBriefs[i].m_nNumber[1] == n2 - && PreviousBriefs[i].m_nNumber[2] == n3 - && PreviousBriefs[i].m_nNumber[3] == n4 - && PreviousBriefs[i].m_nNumber[4] == n5 - && PreviousBriefs[i].m_nNumber[5] == n6 - && PreviousBriefs[i].m_pText == text - && PreviousBriefs[i].m_pString == string) - return; - - i++; - } - - if (i != 0) { - if (i == NUMPREVIOUSBRIEFS) i -= 2; - else i--; - - while (i >= 0) { - PreviousBriefs[i + 1] = PreviousBriefs[i]; - i--; - } - } - PreviousBriefs[0].m_pText = text; - PreviousBriefs[0].m_nNumber[0] = n1; - PreviousBriefs[0].m_nNumber[1] = n2; - PreviousBriefs[0].m_nNumber[2] = n3; - PreviousBriefs[0].m_nNumber[3] = n4; - PreviousBriefs[0].m_nNumber[4] = n5; - PreviousBriefs[0].m_nNumber[5] = n6; - PreviousBriefs[0].m_pString = string; -} - -void -CMessages::InsertNumberInString(wchar *str, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6, wchar *outstr) -{ - char numStr[10]; - wchar wNumStr[10]; - - if (str == nil) { - *outstr = '\0'; - return; - } - - int32 size = GetWideStringLength(str); - - int32 i = 0; - - for (int32 c = 0; c < size;) { - if (str[c] == '~' && str[c + 1] == '1' && str[c + 2] == '~') { - switch (i) { - case 0: sprintf(numStr, "%d", n1); break; - case 1: sprintf(numStr, "%d", n2); break; - case 2: sprintf(numStr, "%d", n3); break; - case 3: sprintf(numStr, "%d", n4); break; - case 4: sprintf(numStr, "%d", n5); break; - case 5: sprintf(numStr, "%d", n6); break; - } - i++; - AsciiToUnicode(numStr, wNumStr); - - int j = 0; - while (wNumStr[j] != '\0') - *(outstr++) = wNumStr[j++]; - - c += 3; - } else { - *(outstr++) = str[c++]; - } - } - *outstr = '\0'; -} - -void -CMessages::InsertStringInString(wchar *str1, wchar *str2) -{ - wchar tempstr[256]; - - if (!str1 || !str2) return; - - int32 str1_size = GetWideStringLength(str1); - int32 str2_size = GetWideStringLength(str2); - int32 total_size = str1_size + str2_size; - - wchar *_str1 = str1; - uint16 i; - for (i = 0; i < total_size; ) { - if (*_str1 == '~' && *(_str1 + 1) == 'a' && *(_str1 + 2) == '~') { - _str1 += 3; - for (int j = 0; j < str2_size; j++) { - tempstr[i++] = str2[j]; - } - } else { - tempstr[i++] = *(_str1++); - } - } - tempstr[i] = '\0'; - - for (i = 0; i < total_size; i++) - str1[i] = tempstr[i]; - - while (i < 256) - str1[i++] = '\0'; -} - -void -CMessages::InsertPlayerControlKeysInString(wchar *str) -{ - uint16 i; - wchar outstr[256]; - wchar keybuf[256]; - - if (!str) return; - uint16 strSize = GetWideStringLength(str); - memset(keybuf, 0, 256*sizeof(wchar)); - - wchar *_outstr = outstr; - for (i = 0; i < strSize;) { - if (str[i] == '~' && str[i + 1] == 'k' && str[i + 2] == '~') { - i += 4; - for (int32 cont = 0; cont < MAX_CONTROLLERACTIONS; cont++) { - uint16 contSize = GetWideStringLength(ControlsManager.m_aActionNames[cont]); - if (contSize != 0) { - if (WideStringCompare(&str[i], ControlsManager.m_aActionNames[cont], contSize)) { - ControlsManager.GetWideStringOfCommandKeys(cont, keybuf, 256); - uint16 keybuf_size = GetWideStringLength(keybuf); - for (uint16 j = 0; j < keybuf_size; j++) { - *(_outstr++) = keybuf[j]; - keybuf[j] = '\0'; - } - i += contSize + 1; - } - } - } - } else { - *(_outstr++) = str[i++]; - } - } - *_outstr = '\0'; - - for (i = 0; i < GetWideStringLength(outstr); i++) - str[i] = outstr[i]; - - while (i < 256) - str[i++] = '\0'; -} - -void -CMessages::AddMessageWithNumber(wchar *str, uint32 time, uint16 flag, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6) -{ - wchar outstr[512]; // unused - InsertNumberInString(str, n1, n2, n3, n4, n5, n6, outstr); - InsertPlayerControlKeysInString(outstr); - GetWideStringLength(outstr); - - uint16 i = 0; - while (i < NUMBRIEFMESSAGES && BriefMessages[i].m_pText) - i++; - - if (i >= NUMBRIEFMESSAGES) return; - - BriefMessages[i].m_pText = str; - BriefMessages[i].m_nFlag = flag; - BriefMessages[i].m_nTime = time; - BriefMessages[i].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BriefMessages[i].m_nNumber[0] = n1; - BriefMessages[i].m_nNumber[1] = n2; - BriefMessages[i].m_nNumber[2] = n3; - BriefMessages[i].m_nNumber[3] = n4; - BriefMessages[i].m_nNumber[4] = n5; - BriefMessages[i].m_nNumber[5] = n6; - BriefMessages[i].m_pString = nil; - if (i == 0) - AddToPreviousBriefArray( - BriefMessages[0].m_pText, - BriefMessages[0].m_nNumber[0], - BriefMessages[0].m_nNumber[1], - BriefMessages[0].m_nNumber[2], - BriefMessages[0].m_nNumber[3], - BriefMessages[0].m_nNumber[4], - BriefMessages[0].m_nNumber[5], - BriefMessages[0].m_pString); -} - -void -CMessages::AddMessageJumpQWithNumber(wchar *str, uint32 time, uint16 flag, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6) -{ - wchar outstr[512]; // unused - InsertNumberInString(str, n1, n2, n3, n4, n5, n6, outstr); - InsertPlayerControlKeysInString(outstr); - GetWideStringLength(outstr); - - BriefMessages[0].m_pText = str; - BriefMessages[0].m_nFlag = flag; - BriefMessages[0].m_nTime = time; - BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BriefMessages[0].m_nNumber[0] = n1; - BriefMessages[0].m_nNumber[1] = n2; - BriefMessages[0].m_nNumber[2] = n3; - BriefMessages[0].m_nNumber[3] = n4; - BriefMessages[0].m_nNumber[4] = n5; - BriefMessages[0].m_nNumber[5] = n6; - BriefMessages[0].m_pString = nil; - AddToPreviousBriefArray(str, n1, n2, n3, n4, n5, n6, nil); -} - -void -CMessages::AddMessageSoonWithNumber(wchar *str, uint32 time, uint16 flag, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6) -{ - wchar outstr[512]; // unused - InsertNumberInString(str, n1, n2, n3, n4, n5, n6, outstr); - InsertPlayerControlKeysInString(outstr); - GetWideStringLength(outstr); - - if (BriefMessages[0].m_pText != nil) { - for (int32 i = NUMBRIEFMESSAGES-1; i > 1; i--) - BriefMessages[i] = BriefMessages[i-1]; - - BriefMessages[1].m_pText = str; - BriefMessages[1].m_nFlag = flag; - BriefMessages[1].m_nTime = time; - BriefMessages[1].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BriefMessages[1].m_nNumber[0] = n1; - BriefMessages[1].m_nNumber[1] = n2; - BriefMessages[1].m_nNumber[2] = n3; - BriefMessages[1].m_nNumber[3] = n4; - BriefMessages[1].m_nNumber[4] = n5; - BriefMessages[1].m_nNumber[5] = n6; - BriefMessages[1].m_pString = nil; - } else { - BriefMessages[0].m_pText = str; - BriefMessages[0].m_nFlag = flag; - BriefMessages[0].m_nTime = time; - BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BriefMessages[0].m_nNumber[0] = n1; - BriefMessages[0].m_nNumber[1] = n2; - BriefMessages[0].m_nNumber[2] = n3; - BriefMessages[0].m_nNumber[3] = n4; - BriefMessages[0].m_nNumber[4] = n5; - BriefMessages[0].m_nNumber[5] = n6; - BriefMessages[0].m_pString = nil; - AddToPreviousBriefArray(str, n1, n2, n3, n4, n5, n6, nil); - } -} - -void -CMessages::AddBigMessageWithNumber(wchar *str, uint32 time, uint16 style, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6) -{ - wchar outstr[512]; // unused - InsertNumberInString(str, n1, n2, n3, n4, n5, n6, outstr); - InsertPlayerControlKeysInString(outstr); - GetWideStringLength(outstr); - - BIGMessages[style].m_Stack[0].m_pText = str; - BIGMessages[style].m_Stack[0].m_nFlag = 0; - BIGMessages[style].m_Stack[0].m_nTime = time; - BIGMessages[style].m_Stack[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BIGMessages[style].m_Stack[0].m_nNumber[0] = n1; - BIGMessages[style].m_Stack[0].m_nNumber[1] = n2; - BIGMessages[style].m_Stack[0].m_nNumber[2] = n3; - BIGMessages[style].m_Stack[0].m_nNumber[3] = n4; - BIGMessages[style].m_Stack[0].m_nNumber[4] = n5; - BIGMessages[style].m_Stack[0].m_nNumber[5] = n6; - BIGMessages[style].m_Stack[0].m_pString = nil; -} - -void -CMessages::AddBigMessageWithNumberQ(wchar *str, uint32 time, uint16 style, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6) -{ - wchar outstr[512]; // unused - InsertNumberInString(str, n1, n2, n3, n4, n5, n6, outstr); - InsertPlayerControlKeysInString(outstr); - GetWideStringLength(outstr); - - int32 i = 0; - - while (i < 4 && BIGMessages[style].m_Stack[i].m_pText != nil) - i++; - - if (i >= 4) return; - - BIGMessages[style].m_Stack[i].m_pText = str; - BIGMessages[style].m_Stack[i].m_nFlag = 0; - BIGMessages[style].m_Stack[i].m_nTime = time; - BIGMessages[style].m_Stack[i].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BIGMessages[style].m_Stack[i].m_nNumber[0] = n1; - BIGMessages[style].m_Stack[i].m_nNumber[1] = n2; - BIGMessages[style].m_Stack[i].m_nNumber[2] = n3; - BIGMessages[style].m_Stack[i].m_nNumber[3] = n4; - BIGMessages[style].m_Stack[i].m_nNumber[4] = n5; - BIGMessages[style].m_Stack[i].m_nNumber[5] = n6; - BIGMessages[style].m_Stack[i].m_pString = nil; -} - -void -CMessages::AddMessageWithString(wchar *text, uint32 time, uint16 flag, wchar *str) -{ - wchar outstr[512]; // unused - WideStringCopy(outstr, text, 256); - InsertStringInString(outstr, str); - InsertPlayerControlKeysInString(outstr); - GetWideStringLength(outstr); - - int32 i = 0; - while (i < NUMBRIEFMESSAGES && BriefMessages[i].m_pText != nil) - i++; - - if (i >= NUMBRIEFMESSAGES) return; - - BriefMessages[i].m_pText = text; - BriefMessages[i].m_nFlag = flag; - BriefMessages[i].m_nTime = time; - BriefMessages[i].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BriefMessages[i].m_nNumber[0] = -1; - BriefMessages[i].m_nNumber[1] = -1; - BriefMessages[i].m_nNumber[2] = -1; - BriefMessages[i].m_nNumber[3] = -1; - BriefMessages[i].m_nNumber[4] = -1; - BriefMessages[i].m_nNumber[5] = -1; - BriefMessages[i].m_pString = str; - if (i == 0) - AddToPreviousBriefArray( - BriefMessages[0].m_pText, - BriefMessages[0].m_nNumber[0], - BriefMessages[0].m_nNumber[1], - BriefMessages[0].m_nNumber[2], - BriefMessages[0].m_nNumber[3], - BriefMessages[0].m_nNumber[4], - BriefMessages[0].m_nNumber[5], - BriefMessages[0].m_pString); -} - -void -CMessages::AddMessageJumpQWithString(wchar *text, uint32 time, uint16 flag, wchar *str) -{ - wchar outstr[512]; // unused - WideStringCopy(outstr, text, 256); - InsertStringInString(outstr, str); - InsertPlayerControlKeysInString(outstr); - GetWideStringLength(outstr); - - BriefMessages[0].m_pText = text; - BriefMessages[0].m_nFlag = flag; - BriefMessages[0].m_nTime = time; - BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); - BriefMessages[0].m_nNumber[0] = -1; - BriefMessages[0].m_nNumber[1] = -1; - BriefMessages[0].m_nNumber[2] = -1; - BriefMessages[0].m_nNumber[3] = -1; - BriefMessages[0].m_nNumber[4] = -1; - BriefMessages[0].m_nNumber[5] = -1; - BriefMessages[0].m_pString = str; - AddToPreviousBriefArray(text, -1, -1, -1, -1, -1, -1, str); -} - -inline bool -FastWideStringComparison(wchar *str1, wchar *str2) -{ - while (*str1 == *str2) { - ++str1; - ++str2; - if (!*str1 && !*str2) return true; - } - return false; -} - -void -CMessages::ClearThisPrint(wchar *str) -{ - bool equal; - - do { - equal = false; - uint16 i = 0; - while (i < NUMBRIEFMESSAGES) { - if (BriefMessages[i].m_pText == nil) - break; - - equal = FastWideStringComparison(str, BriefMessages[i].m_pText); - - if (equal) break; - i++; - } - - if (equal) { - if (i != 0) { - BriefMessages[i].m_pText = nil; - while (i < NUMBRIEFMESSAGES-1) { - if (BriefMessages[i + 1].m_pText == nil) - break; - - BriefMessages[i] = BriefMessages[i + 1]; - i++; - } - BriefMessages[i].m_pText = nil; - } else { - BriefMessages[0].m_pText = nil; - while (i < NUMBRIEFMESSAGES-1) { - if (BriefMessages[i + 1].m_pText == nil) - break; - BriefMessages[i] = BriefMessages[i + 1]; - i++; - } - BriefMessages[i].m_pText = nil; - BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); - if (BriefMessages[0].m_pText == nil) - AddToPreviousBriefArray( - BriefMessages[0].m_pText, - BriefMessages[0].m_nNumber[0], - BriefMessages[0].m_nNumber[1], - BriefMessages[0].m_nNumber[2], - BriefMessages[0].m_nNumber[3], - BriefMessages[0].m_nNumber[4], - BriefMessages[0].m_nNumber[5], - BriefMessages[0].m_pString); - } - } - } while (equal); -} - -void -CMessages::ClearThisBigPrint(wchar *str) -{ - bool equal; - - do { - uint16 i = 0; - equal = false; - uint16 style = 0; - while (style < NUMBIGMESSAGES) - { - if (i >= 4) - break; - - if (CMessages::BIGMessages[style].m_Stack[i].m_pText == nil || equal) - break; - - equal = FastWideStringComparison(str, BIGMessages[style].m_Stack[i].m_pText); - - if (!equal && ++i == 4) { - i = 0; - style++; - } - } - if (equal) { - if (i != 0) { - BIGMessages[style].m_Stack[i].m_pText = nil; - while (i < 3) { - if (BIGMessages[style].m_Stack[i + 1].m_pText == nil) - break; - BIGMessages[style].m_Stack[i] = BIGMessages[style].m_Stack[i + 1]; - i++; - } - BIGMessages[style].m_Stack[i].m_pText = nil; - } else { - BIGMessages[style].m_Stack[0].m_pText = 0; - i = 0; - while (i < 3) { - if (BIGMessages[style].m_Stack[i + 1].m_pText == nil) - break; - BIGMessages[style].m_Stack[i] = BIGMessages[style].m_Stack[i + 1]; - i++; - } - BIGMessages[style].m_Stack[i].m_pText = nil; - BIGMessages[style].m_Stack[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); - } - } - } while (equal); -} - -void -CMessages::ClearAllMessagesDisplayedByGame() -{ - ClearMessages(); - for (int32 i = 0; i < NUMPREVIOUSBRIEFS; i++) { - PreviousBriefs[i].m_pText = nil; - PreviousBriefs[i].m_pString = nil; - } - CHud::GetRidOfAllHudMessages(); - CUserDisplay::Pager.ClearMessages(); -} - -STARTPATCHES - InjectHook(0x529310, CMessages::Init, PATCH_JUMP); - InjectHook(0x529490, CMessages::GetWideStringLength, PATCH_JUMP); - InjectHook(0x5294B0, CMessages::WideStringCopy, PATCH_JUMP); - InjectHook(0x529510, CMessages::WideStringCompare, PATCH_JUMP); - InjectHook(0x529580, CMessages::Process, PATCH_JUMP); - InjectHook(0x529800, CMessages::Display, PATCH_JUMP); - InjectHook(0x529900, CMessages::AddMessage, PATCH_JUMP); - InjectHook(0x529A10, CMessages::AddMessageJumpQ, PATCH_JUMP); - InjectHook(0x529AF0, CMessages::AddMessageSoon, PATCH_JUMP); - InjectHook(0x529CE0, CMessages::ClearMessages, PATCH_JUMP); - InjectHook(0x529E00, CMessages::ClearSmallMessagesOnly, PATCH_JUMP); - InjectHook(0x529EB0, CMessages::AddBigMessage, PATCH_JUMP); - InjectHook(0x529F60, CMessages::AddBigMessageQ, PATCH_JUMP); - InjectHook(0x52A040, CMessages::AddToPreviousBriefArray, PATCH_JUMP); - InjectHook(0x52A1A0, CMessages::InsertNumberInString, PATCH_JUMP); - InjectHook(0x52A300, CMessages::InsertStringInString, PATCH_JUMP); - InjectHook(0x52A490, CMessages::InsertPlayerControlKeysInString, PATCH_JUMP); - InjectHook(0x52A850, CMessages::AddMessageWithNumber, PATCH_JUMP); - InjectHook(0x52A9A0, CMessages::AddMessageJumpQWithNumber, PATCH_JUMP); - InjectHook(0x52AAC0, CMessages::AddMessageSoonWithNumber, PATCH_JUMP); - InjectHook(0x52AD10, CMessages::AddBigMessageWithNumber, PATCH_JUMP); - InjectHook(0x52AE00, CMessages::AddBigMessageWithNumberQ, PATCH_JUMP); - InjectHook(0x52AF30, CMessages::AddMessageWithString, PATCH_JUMP); - InjectHook(0x52B050, CMessages::AddMessageJumpQWithString, PATCH_JUMP); - InjectHook(0x52B140, CMessages::ClearThisPrint, PATCH_JUMP); - InjectHook(0x52B3C0, CMessages::ClearThisBigPrint, PATCH_JUMP); - InjectHook(0x52B670, CMessages::ClearAllMessagesDisplayedByGame, PATCH_JUMP); -ENDPATCHES +#define DIRECTINPUT_VERSION 0x0800 +#include "dinput.h" + +#include "common.h" +#include "patcher.h" +#include "Messages.h" +#include "RwHelper.h" +#include "Hud.h" +#include "User.h" +#include "Timer.h" +#include "Text.h" + +#include "ControllerConfig.h" + +tMessage(&CMessages::BriefMessages)[NUMBRIEFMESSAGES] = *(tMessage(*)[NUMBRIEFMESSAGES])*(uintptr*)0x8786E0; +tPreviousBrief(&CMessages::PreviousBriefs)[NUMPREVIOUSBRIEFS] = *(tPreviousBrief(*)[NUMPREVIOUSBRIEFS])*(uintptr*)0x713C08; +tBigMessage(&CMessages::BIGMessages)[NUMBIGMESSAGES] = *(tBigMessage(*)[NUMBIGMESSAGES])*(uintptr*)0x773628; +char CMessages::PreviousMissionTitle[16]; // unused + +void +CMessages::Init() +{ + ClearMessages(); + + for (int32 i = 0; i < NUMPREVIOUSBRIEFS; i++) { + PreviousBriefs[i].m_pText = nil; + PreviousBriefs[i].m_pString = nil; + } +} + +uint16 +CMessages::GetWideStringLength(wchar *src) +{ + uint16 length = 0; + while (*(src++)) length++; + return length; +} + +void +CMessages::WideStringCopy(wchar *dst, wchar *src, uint16 size) +{ + int32 i = 0; + if (src) { + while (i < size - 1) { + if (!src[i]) break; + dst[i] = src[i]; + i++; + } + } else { + while (i < size - 1) + dst[i++] = '\0'; + } + dst[i] = '\0'; +} + +bool +CMessages::WideStringCompare(wchar *str1, wchar *str2, uint16 size) +{ + uint16 len1 = GetWideStringLength(str1); + uint16 len2 = GetWideStringLength(str2); + if (len1 != len2 && (len1 < size || len2 < size)) + return false; + + for (int32 i = 0; i < size; i++) { + if (!str1[i]) + break; + + if (str1[i] != str2[i]) + return false; + } + return true; +} + +void +CMessages::Process() +{ + for (int32 style = 0; style < 6; style++) { + if (BIGMessages[style].m_Stack[0].m_pText != nil && CTimer::GetTimeInMilliseconds() > BIGMessages[style].m_Stack[0].m_nTime + BIGMessages[style].m_Stack[0].m_nStartTime) { + BIGMessages[style].m_Stack[0].m_pText = nil; + + int32 i = 0; + while (i < 3) { + if (BIGMessages[style].m_Stack[i + 1].m_pText == nil) break; + BIGMessages[style].m_Stack[i] = BIGMessages[style].m_Stack[i + 1]; + i++; + } + + BIGMessages[style].m_Stack[i].m_pText = nil; + BIGMessages[style].m_Stack[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); + } + } + + if (BriefMessages[0].m_pText != nil && CTimer::GetTimeInMilliseconds() > BriefMessages[0].m_nTime + BriefMessages[0].m_nStartTime) { + BriefMessages[0].m_pText = nil; + int32 i = 0; + while (i < NUMBRIEFMESSAGES-1) { + if (BriefMessages[i + 1].m_pText == nil) + break; + + BriefMessages[i] = BriefMessages[i + 1]; + i++; + } + CMessages::BriefMessages[i].m_pText = nil; + CMessages::BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); + if (BriefMessages[0].m_pText != nil) + AddToPreviousBriefArray( + BriefMessages[0].m_pText, + BriefMessages[0].m_nNumber[0], + BriefMessages[0].m_nNumber[1], + BriefMessages[0].m_nNumber[2], + BriefMessages[0].m_nNumber[3], + BriefMessages[0].m_nNumber[4], + BriefMessages[0].m_nNumber[5], + BriefMessages[0].m_pString); + } +} + +void +CMessages::Display() +{ + wchar outstr[256]; + + DefinedState(); + + for (int32 i = 0; i < NUMBIGMESSAGES; i++) { + InsertNumberInString( + BIGMessages[i].m_Stack[0].m_pText, + BIGMessages[i].m_Stack[0].m_nNumber[0], + BIGMessages[i].m_Stack[0].m_nNumber[1], + BIGMessages[i].m_Stack[0].m_nNumber[2], + BIGMessages[i].m_Stack[0].m_nNumber[3], + BIGMessages[i].m_Stack[0].m_nNumber[4], + BIGMessages[i].m_Stack[0].m_nNumber[5], + outstr); + InsertStringInString(outstr, BIGMessages[i].m_Stack[0].m_pString); + InsertPlayerControlKeysInString(outstr); + CHud::SetBigMessage(outstr, i); + } + + InsertNumberInString( + BriefMessages[0].m_pText, + BriefMessages[0].m_nNumber[0], + BriefMessages[0].m_nNumber[1], + BriefMessages[0].m_nNumber[2], + BriefMessages[0].m_nNumber[3], + BriefMessages[0].m_nNumber[4], + BriefMessages[0].m_nNumber[5], + outstr); + InsertStringInString(outstr, BriefMessages[0].m_pString); + InsertPlayerControlKeysInString(outstr); + CHud::SetMessage(outstr); +} + +void +CMessages::AddMessage(wchar *msg, uint32 time, uint16 flag) +{ + wchar outstr[512]; // unused + WideStringCopy(outstr, msg, 256); + InsertPlayerControlKeysInString(outstr); + GetWideStringLength(outstr); + + int32 i = 0; + while (i < NUMBRIEFMESSAGES && BriefMessages[i].m_pText != nil) + i++; + if (i >= NUMBRIEFMESSAGES) return; + + BriefMessages[i].m_pText = msg; + BriefMessages[i].m_nFlag = flag; + BriefMessages[i].m_nTime = time; + BriefMessages[i].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BriefMessages[i].m_nNumber[0] = -1; + BriefMessages[i].m_nNumber[1] = -1; + BriefMessages[i].m_nNumber[2] = -1; + BriefMessages[i].m_nNumber[3] = -1; + BriefMessages[i].m_nNumber[4] = -1; + BriefMessages[i].m_nNumber[5] = -1; + BriefMessages[i].m_pString = nil; + if (i == 0) + AddToPreviousBriefArray( + BriefMessages[0].m_pText, + BriefMessages[0].m_nNumber[0], + BriefMessages[0].m_nNumber[1], + BriefMessages[0].m_nNumber[2], + BriefMessages[0].m_nNumber[3], + BriefMessages[0].m_nNumber[4], + BriefMessages[0].m_nNumber[5], + BriefMessages[0].m_pString); +} + +void +CMessages::AddMessageJumpQ(wchar *msg, uint32 time, uint16 flag) +{ + wchar outstr[512]; // unused + WideStringCopy(outstr, msg, 256); + InsertPlayerControlKeysInString(outstr); + GetWideStringLength(outstr); + + BriefMessages[0].m_pText = msg; + BriefMessages[0].m_nFlag = flag; + BriefMessages[0].m_nTime = time; + BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BriefMessages[0].m_nNumber[0] = -1; + BriefMessages[0].m_nNumber[1] = -1; + BriefMessages[0].m_nNumber[2] = -1; + BriefMessages[0].m_nNumber[3] = -1; + BriefMessages[0].m_nNumber[4] = -1; + BriefMessages[0].m_nNumber[5] = -1; + BriefMessages[0].m_pString = nil; + AddToPreviousBriefArray(msg, -1, -1, -1, -1, -1, -1, 0); +} + +void +CMessages::AddMessageSoon(wchar *msg, uint32 time, uint16 flag) +{ + wchar outstr[512]; // unused + WideStringCopy(outstr, msg, 256); + InsertPlayerControlKeysInString(outstr); + GetWideStringLength(outstr); + + if (BriefMessages[0].m_pText != nil) { + for (int i = NUMBRIEFMESSAGES-1; i > 1; i--) + BriefMessages[i] = BriefMessages[i-1]; + + BriefMessages[1].m_pText = msg; + BriefMessages[1].m_nFlag = flag; + BriefMessages[1].m_nTime = time; + BriefMessages[1].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BriefMessages[1].m_nNumber[0] = -1; + BriefMessages[1].m_nNumber[1] = -1; + BriefMessages[1].m_nNumber[2] = -1; + BriefMessages[1].m_nNumber[3] = -1; + BriefMessages[1].m_nNumber[4] = -1; + BriefMessages[1].m_nNumber[5] = -1; + BriefMessages[1].m_pString = nil; + }else{ + BriefMessages[0].m_pText = msg; + BriefMessages[0].m_nFlag = flag; + BriefMessages[0].m_nTime = time; + BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BriefMessages[0].m_nNumber[0] = -1; + BriefMessages[0].m_nNumber[1] = -1; + BriefMessages[0].m_nNumber[2] = -1; + BriefMessages[0].m_nNumber[3] = -1; + BriefMessages[0].m_nNumber[4] = -1; + BriefMessages[0].m_nNumber[5] = -1; + BriefMessages[0].m_pString = nil; + AddToPreviousBriefArray(msg, -1, -1, -1, -1, -1, -1, nil); + } +} + +void +CMessages::ClearMessages() +{ + for (int32 i = 0; i < NUMBIGMESSAGES; i++) { + for (int32 j = 0; j < 4; j++) { + BIGMessages[i].m_Stack[j].m_pText = nil; + BIGMessages[i].m_Stack[j].m_pString = nil; + } + } + ClearSmallMessagesOnly(); +} + +void +CMessages::ClearSmallMessagesOnly() +{ + for (int32 i = 0; i < NUMBRIEFMESSAGES; i++) { + BriefMessages[i].m_pText = nil; + BriefMessages[i].m_pString = nil; + } +} + +void +CMessages::AddBigMessage(wchar *msg, uint32 time, uint16 style) +{ + wchar outstr[512]; // unused + WideStringCopy(outstr, msg, 256); + InsertPlayerControlKeysInString(outstr); + GetWideStringLength(outstr); + + BIGMessages[style].m_Stack[0].m_pText = msg; + BIGMessages[style].m_Stack[0].m_nFlag = 0; + BIGMessages[style].m_Stack[0].m_nTime = time; + BIGMessages[style].m_Stack[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BIGMessages[style].m_Stack[0].m_nNumber[0] = -1; + BIGMessages[style].m_Stack[0].m_nNumber[1] = -1; + BIGMessages[style].m_Stack[0].m_nNumber[2] = -1; + BIGMessages[style].m_Stack[0].m_nNumber[3] = -1; + BIGMessages[style].m_Stack[0].m_nNumber[4] = -1; + BIGMessages[style].m_Stack[0].m_nNumber[5] = -1; + BIGMessages[style].m_Stack[0].m_pString = nil; +} +void +CMessages::AddBigMessageQ(wchar *msg, uint32 time, uint16 style) +{ + wchar outstr[512]; // unused + WideStringCopy(outstr, msg, 256); + InsertPlayerControlKeysInString(outstr); + GetWideStringLength(outstr); + + int32 i = 0; + while (i < 4 && BIGMessages[style].m_Stack[i].m_pText != nil) + i++; + + if (i >= 4) return; + + BIGMessages[style].m_Stack[i].m_pText = msg; + BIGMessages[style].m_Stack[i].m_nFlag = 0; + BIGMessages[style].m_Stack[i].m_nTime = time; + BIGMessages[style].m_Stack[i].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BIGMessages[style].m_Stack[i].m_nNumber[0] = -1; + BIGMessages[style].m_Stack[i].m_nNumber[1] = -1; + BIGMessages[style].m_Stack[i].m_nNumber[2] = -1; + BIGMessages[style].m_Stack[i].m_nNumber[3] = -1; + BIGMessages[style].m_Stack[i].m_nNumber[4] = -1; + BIGMessages[style].m_Stack[i].m_nNumber[5] = -1; + BIGMessages[style].m_Stack[i].m_pString = nil; +} + +void +CMessages::AddToPreviousBriefArray(wchar *text, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6, wchar *string) +{ + int32 i = 0; + while (i < NUMPREVIOUSBRIEFS) { + if (PreviousBriefs[i].m_pText == nil) + break; + if (PreviousBriefs[i].m_nNumber[0] == n1 + && PreviousBriefs[i].m_nNumber[1] == n2 + && PreviousBriefs[i].m_nNumber[2] == n3 + && PreviousBriefs[i].m_nNumber[3] == n4 + && PreviousBriefs[i].m_nNumber[4] == n5 + && PreviousBriefs[i].m_nNumber[5] == n6 + && PreviousBriefs[i].m_pText == text + && PreviousBriefs[i].m_pString == string) + return; + + i++; + } + + if (i != 0) { + if (i == NUMPREVIOUSBRIEFS) i -= 2; + else i--; + + while (i >= 0) { + PreviousBriefs[i + 1] = PreviousBriefs[i]; + i--; + } + } + PreviousBriefs[0].m_pText = text; + PreviousBriefs[0].m_nNumber[0] = n1; + PreviousBriefs[0].m_nNumber[1] = n2; + PreviousBriefs[0].m_nNumber[2] = n3; + PreviousBriefs[0].m_nNumber[3] = n4; + PreviousBriefs[0].m_nNumber[4] = n5; + PreviousBriefs[0].m_nNumber[5] = n6; + PreviousBriefs[0].m_pString = string; +} + +void +CMessages::InsertNumberInString(wchar *str, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6, wchar *outstr) +{ + char numStr[10]; + wchar wNumStr[10]; + + if (str == nil) { + *outstr = '\0'; + return; + } + + int32 size = GetWideStringLength(str); + + int32 i = 0; + + for (int32 c = 0; c < size;) { + if (str[c] == '~' && str[c + 1] == '1' && str[c + 2] == '~') { + switch (i) { + case 0: sprintf(numStr, "%d", n1); break; + case 1: sprintf(numStr, "%d", n2); break; + case 2: sprintf(numStr, "%d", n3); break; + case 3: sprintf(numStr, "%d", n4); break; + case 4: sprintf(numStr, "%d", n5); break; + case 5: sprintf(numStr, "%d", n6); break; + } + i++; + AsciiToUnicode(numStr, wNumStr); + + int j = 0; + while (wNumStr[j] != '\0') + *(outstr++) = wNumStr[j++]; + + c += 3; + } else { + *(outstr++) = str[c++]; + } + } + *outstr = '\0'; +} + +void +CMessages::InsertStringInString(wchar *str1, wchar *str2) +{ + wchar tempstr[256]; + + if (!str1 || !str2) return; + + int32 str1_size = GetWideStringLength(str1); + int32 str2_size = GetWideStringLength(str2); + int32 total_size = str1_size + str2_size; + + wchar *_str1 = str1; + uint16 i; + for (i = 0; i < total_size; ) { + if (*_str1 == '~' && *(_str1 + 1) == 'a' && *(_str1 + 2) == '~') { + _str1 += 3; + for (int j = 0; j < str2_size; j++) { + tempstr[i++] = str2[j]; + } + } else { + tempstr[i++] = *(_str1++); + } + } + tempstr[i] = '\0'; + + for (i = 0; i < total_size; i++) + str1[i] = tempstr[i]; + + while (i < 256) + str1[i++] = '\0'; +} + +void +CMessages::InsertPlayerControlKeysInString(wchar *str) +{ + uint16 i; + wchar outstr[256]; + wchar keybuf[256]; + + if (!str) return; + uint16 strSize = GetWideStringLength(str); + memset(keybuf, 0, 256*sizeof(wchar)); + + wchar *_outstr = outstr; + for (i = 0; i < strSize;) { + if (str[i] == '~' && str[i + 1] == 'k' && str[i + 2] == '~') { + i += 4; + for (int32 cont = 0; cont < MAX_CONTROLLERACTIONS; cont++) { + uint16 contSize = GetWideStringLength(ControlsManager.m_aActionNames[cont]); + if (contSize != 0) { + if (WideStringCompare(&str[i], ControlsManager.m_aActionNames[cont], contSize)) { + ControlsManager.GetWideStringOfCommandKeys(cont, keybuf, 256); + uint16 keybuf_size = GetWideStringLength(keybuf); + for (uint16 j = 0; j < keybuf_size; j++) { + *(_outstr++) = keybuf[j]; + keybuf[j] = '\0'; + } + i += contSize + 1; + } + } + } + } else { + *(_outstr++) = str[i++]; + } + } + *_outstr = '\0'; + + for (i = 0; i < GetWideStringLength(outstr); i++) + str[i] = outstr[i]; + + while (i < 256) + str[i++] = '\0'; +} + +void +CMessages::AddMessageWithNumber(wchar *str, uint32 time, uint16 flag, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6) +{ + wchar outstr[512]; // unused + InsertNumberInString(str, n1, n2, n3, n4, n5, n6, outstr); + InsertPlayerControlKeysInString(outstr); + GetWideStringLength(outstr); + + uint16 i = 0; + while (i < NUMBRIEFMESSAGES && BriefMessages[i].m_pText) + i++; + + if (i >= NUMBRIEFMESSAGES) return; + + BriefMessages[i].m_pText = str; + BriefMessages[i].m_nFlag = flag; + BriefMessages[i].m_nTime = time; + BriefMessages[i].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BriefMessages[i].m_nNumber[0] = n1; + BriefMessages[i].m_nNumber[1] = n2; + BriefMessages[i].m_nNumber[2] = n3; + BriefMessages[i].m_nNumber[3] = n4; + BriefMessages[i].m_nNumber[4] = n5; + BriefMessages[i].m_nNumber[5] = n6; + BriefMessages[i].m_pString = nil; + if (i == 0) + AddToPreviousBriefArray( + BriefMessages[0].m_pText, + BriefMessages[0].m_nNumber[0], + BriefMessages[0].m_nNumber[1], + BriefMessages[0].m_nNumber[2], + BriefMessages[0].m_nNumber[3], + BriefMessages[0].m_nNumber[4], + BriefMessages[0].m_nNumber[5], + BriefMessages[0].m_pString); +} + +void +CMessages::AddMessageJumpQWithNumber(wchar *str, uint32 time, uint16 flag, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6) +{ + wchar outstr[512]; // unused + InsertNumberInString(str, n1, n2, n3, n4, n5, n6, outstr); + InsertPlayerControlKeysInString(outstr); + GetWideStringLength(outstr); + + BriefMessages[0].m_pText = str; + BriefMessages[0].m_nFlag = flag; + BriefMessages[0].m_nTime = time; + BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BriefMessages[0].m_nNumber[0] = n1; + BriefMessages[0].m_nNumber[1] = n2; + BriefMessages[0].m_nNumber[2] = n3; + BriefMessages[0].m_nNumber[3] = n4; + BriefMessages[0].m_nNumber[4] = n5; + BriefMessages[0].m_nNumber[5] = n6; + BriefMessages[0].m_pString = nil; + AddToPreviousBriefArray(str, n1, n2, n3, n4, n5, n6, nil); +} + +void +CMessages::AddMessageSoonWithNumber(wchar *str, uint32 time, uint16 flag, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6) +{ + wchar outstr[512]; // unused + InsertNumberInString(str, n1, n2, n3, n4, n5, n6, outstr); + InsertPlayerControlKeysInString(outstr); + GetWideStringLength(outstr); + + if (BriefMessages[0].m_pText != nil) { + for (int32 i = NUMBRIEFMESSAGES-1; i > 1; i--) + BriefMessages[i] = BriefMessages[i-1]; + + BriefMessages[1].m_pText = str; + BriefMessages[1].m_nFlag = flag; + BriefMessages[1].m_nTime = time; + BriefMessages[1].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BriefMessages[1].m_nNumber[0] = n1; + BriefMessages[1].m_nNumber[1] = n2; + BriefMessages[1].m_nNumber[2] = n3; + BriefMessages[1].m_nNumber[3] = n4; + BriefMessages[1].m_nNumber[4] = n5; + BriefMessages[1].m_nNumber[5] = n6; + BriefMessages[1].m_pString = nil; + } else { + BriefMessages[0].m_pText = str; + BriefMessages[0].m_nFlag = flag; + BriefMessages[0].m_nTime = time; + BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BriefMessages[0].m_nNumber[0] = n1; + BriefMessages[0].m_nNumber[1] = n2; + BriefMessages[0].m_nNumber[2] = n3; + BriefMessages[0].m_nNumber[3] = n4; + BriefMessages[0].m_nNumber[4] = n5; + BriefMessages[0].m_nNumber[5] = n6; + BriefMessages[0].m_pString = nil; + AddToPreviousBriefArray(str, n1, n2, n3, n4, n5, n6, nil); + } +} + +void +CMessages::AddBigMessageWithNumber(wchar *str, uint32 time, uint16 style, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6) +{ + wchar outstr[512]; // unused + InsertNumberInString(str, n1, n2, n3, n4, n5, n6, outstr); + InsertPlayerControlKeysInString(outstr); + GetWideStringLength(outstr); + + BIGMessages[style].m_Stack[0].m_pText = str; + BIGMessages[style].m_Stack[0].m_nFlag = 0; + BIGMessages[style].m_Stack[0].m_nTime = time; + BIGMessages[style].m_Stack[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BIGMessages[style].m_Stack[0].m_nNumber[0] = n1; + BIGMessages[style].m_Stack[0].m_nNumber[1] = n2; + BIGMessages[style].m_Stack[0].m_nNumber[2] = n3; + BIGMessages[style].m_Stack[0].m_nNumber[3] = n4; + BIGMessages[style].m_Stack[0].m_nNumber[4] = n5; + BIGMessages[style].m_Stack[0].m_nNumber[5] = n6; + BIGMessages[style].m_Stack[0].m_pString = nil; +} + +void +CMessages::AddBigMessageWithNumberQ(wchar *str, uint32 time, uint16 style, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6) +{ + wchar outstr[512]; // unused + InsertNumberInString(str, n1, n2, n3, n4, n5, n6, outstr); + InsertPlayerControlKeysInString(outstr); + GetWideStringLength(outstr); + + int32 i = 0; + + while (i < 4 && BIGMessages[style].m_Stack[i].m_pText != nil) + i++; + + if (i >= 4) return; + + BIGMessages[style].m_Stack[i].m_pText = str; + BIGMessages[style].m_Stack[i].m_nFlag = 0; + BIGMessages[style].m_Stack[i].m_nTime = time; + BIGMessages[style].m_Stack[i].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BIGMessages[style].m_Stack[i].m_nNumber[0] = n1; + BIGMessages[style].m_Stack[i].m_nNumber[1] = n2; + BIGMessages[style].m_Stack[i].m_nNumber[2] = n3; + BIGMessages[style].m_Stack[i].m_nNumber[3] = n4; + BIGMessages[style].m_Stack[i].m_nNumber[4] = n5; + BIGMessages[style].m_Stack[i].m_nNumber[5] = n6; + BIGMessages[style].m_Stack[i].m_pString = nil; +} + +void +CMessages::AddMessageWithString(wchar *text, uint32 time, uint16 flag, wchar *str) +{ + wchar outstr[512]; // unused + WideStringCopy(outstr, text, 256); + InsertStringInString(outstr, str); + InsertPlayerControlKeysInString(outstr); + GetWideStringLength(outstr); + + int32 i = 0; + while (i < NUMBRIEFMESSAGES && BriefMessages[i].m_pText != nil) + i++; + + if (i >= NUMBRIEFMESSAGES) return; + + BriefMessages[i].m_pText = text; + BriefMessages[i].m_nFlag = flag; + BriefMessages[i].m_nTime = time; + BriefMessages[i].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BriefMessages[i].m_nNumber[0] = -1; + BriefMessages[i].m_nNumber[1] = -1; + BriefMessages[i].m_nNumber[2] = -1; + BriefMessages[i].m_nNumber[3] = -1; + BriefMessages[i].m_nNumber[4] = -1; + BriefMessages[i].m_nNumber[5] = -1; + BriefMessages[i].m_pString = str; + if (i == 0) + AddToPreviousBriefArray( + BriefMessages[0].m_pText, + BriefMessages[0].m_nNumber[0], + BriefMessages[0].m_nNumber[1], + BriefMessages[0].m_nNumber[2], + BriefMessages[0].m_nNumber[3], + BriefMessages[0].m_nNumber[4], + BriefMessages[0].m_nNumber[5], + BriefMessages[0].m_pString); +} + +void +CMessages::AddMessageJumpQWithString(wchar *text, uint32 time, uint16 flag, wchar *str) +{ + wchar outstr[512]; // unused + WideStringCopy(outstr, text, 256); + InsertStringInString(outstr, str); + InsertPlayerControlKeysInString(outstr); + GetWideStringLength(outstr); + + BriefMessages[0].m_pText = text; + BriefMessages[0].m_nFlag = flag; + BriefMessages[0].m_nTime = time; + BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); + BriefMessages[0].m_nNumber[0] = -1; + BriefMessages[0].m_nNumber[1] = -1; + BriefMessages[0].m_nNumber[2] = -1; + BriefMessages[0].m_nNumber[3] = -1; + BriefMessages[0].m_nNumber[4] = -1; + BriefMessages[0].m_nNumber[5] = -1; + BriefMessages[0].m_pString = str; + AddToPreviousBriefArray(text, -1, -1, -1, -1, -1, -1, str); +} + +inline bool +FastWideStringComparison(wchar *str1, wchar *str2) +{ + while (*str1 == *str2) { + ++str1; + ++str2; + if (!*str1 && !*str2) return true; + } + return false; +} + +void +CMessages::ClearThisPrint(wchar *str) +{ + bool equal; + + do { + equal = false; + uint16 i = 0; + while (i < NUMBRIEFMESSAGES) { + if (BriefMessages[i].m_pText == nil) + break; + + equal = FastWideStringComparison(str, BriefMessages[i].m_pText); + + if (equal) break; + i++; + } + + if (equal) { + if (i != 0) { + BriefMessages[i].m_pText = nil; + while (i < NUMBRIEFMESSAGES-1) { + if (BriefMessages[i + 1].m_pText == nil) + break; + + BriefMessages[i] = BriefMessages[i + 1]; + i++; + } + BriefMessages[i].m_pText = nil; + } else { + BriefMessages[0].m_pText = nil; + while (i < NUMBRIEFMESSAGES-1) { + if (BriefMessages[i + 1].m_pText == nil) + break; + BriefMessages[i] = BriefMessages[i + 1]; + i++; + } + BriefMessages[i].m_pText = nil; + BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); + if (BriefMessages[0].m_pText == nil) + AddToPreviousBriefArray( + BriefMessages[0].m_pText, + BriefMessages[0].m_nNumber[0], + BriefMessages[0].m_nNumber[1], + BriefMessages[0].m_nNumber[2], + BriefMessages[0].m_nNumber[3], + BriefMessages[0].m_nNumber[4], + BriefMessages[0].m_nNumber[5], + BriefMessages[0].m_pString); + } + } + } while (equal); +} + +void +CMessages::ClearThisBigPrint(wchar *str) +{ + bool equal; + + do { + uint16 i = 0; + equal = false; + uint16 style = 0; + while (style < NUMBIGMESSAGES) + { + if (i >= 4) + break; + + if (CMessages::BIGMessages[style].m_Stack[i].m_pText == nil || equal) + break; + + equal = FastWideStringComparison(str, BIGMessages[style].m_Stack[i].m_pText); + + if (!equal && ++i == 4) { + i = 0; + style++; + } + } + if (equal) { + if (i != 0) { + BIGMessages[style].m_Stack[i].m_pText = nil; + while (i < 3) { + if (BIGMessages[style].m_Stack[i + 1].m_pText == nil) + break; + BIGMessages[style].m_Stack[i] = BIGMessages[style].m_Stack[i + 1]; + i++; + } + BIGMessages[style].m_Stack[i].m_pText = nil; + } else { + BIGMessages[style].m_Stack[0].m_pText = 0; + i = 0; + while (i < 3) { + if (BIGMessages[style].m_Stack[i + 1].m_pText == nil) + break; + BIGMessages[style].m_Stack[i] = BIGMessages[style].m_Stack[i + 1]; + i++; + } + BIGMessages[style].m_Stack[i].m_pText = nil; + BIGMessages[style].m_Stack[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); + } + } + } while (equal); +} + +void +CMessages::ClearAllMessagesDisplayedByGame() +{ + ClearMessages(); + for (int32 i = 0; i < NUMPREVIOUSBRIEFS; i++) { + PreviousBriefs[i].m_pText = nil; + PreviousBriefs[i].m_pString = nil; + } + CHud::GetRidOfAllHudMessages(); + CUserDisplay::Pager.ClearMessages(); +} + +STARTPATCHES + InjectHook(0x529310, CMessages::Init, PATCH_JUMP); + InjectHook(0x529490, CMessages::GetWideStringLength, PATCH_JUMP); + InjectHook(0x5294B0, CMessages::WideStringCopy, PATCH_JUMP); + InjectHook(0x529510, CMessages::WideStringCompare, PATCH_JUMP); + InjectHook(0x529580, CMessages::Process, PATCH_JUMP); + InjectHook(0x529800, CMessages::Display, PATCH_JUMP); + InjectHook(0x529900, CMessages::AddMessage, PATCH_JUMP); + InjectHook(0x529A10, CMessages::AddMessageJumpQ, PATCH_JUMP); + InjectHook(0x529AF0, CMessages::AddMessageSoon, PATCH_JUMP); + InjectHook(0x529CE0, CMessages::ClearMessages, PATCH_JUMP); + InjectHook(0x529E00, CMessages::ClearSmallMessagesOnly, PATCH_JUMP); + InjectHook(0x529EB0, CMessages::AddBigMessage, PATCH_JUMP); + InjectHook(0x529F60, CMessages::AddBigMessageQ, PATCH_JUMP); + InjectHook(0x52A040, CMessages::AddToPreviousBriefArray, PATCH_JUMP); + InjectHook(0x52A1A0, CMessages::InsertNumberInString, PATCH_JUMP); + InjectHook(0x52A300, CMessages::InsertStringInString, PATCH_JUMP); + InjectHook(0x52A490, CMessages::InsertPlayerControlKeysInString, PATCH_JUMP); + InjectHook(0x52A850, CMessages::AddMessageWithNumber, PATCH_JUMP); + InjectHook(0x52A9A0, CMessages::AddMessageJumpQWithNumber, PATCH_JUMP); + InjectHook(0x52AAC0, CMessages::AddMessageSoonWithNumber, PATCH_JUMP); + InjectHook(0x52AD10, CMessages::AddBigMessageWithNumber, PATCH_JUMP); + InjectHook(0x52AE00, CMessages::AddBigMessageWithNumberQ, PATCH_JUMP); + InjectHook(0x52AF30, CMessages::AddMessageWithString, PATCH_JUMP); + InjectHook(0x52B050, CMessages::AddMessageJumpQWithString, PATCH_JUMP); + InjectHook(0x52B140, CMessages::ClearThisPrint, PATCH_JUMP); + InjectHook(0x52B3C0, CMessages::ClearThisBigPrint, PATCH_JUMP); + InjectHook(0x52B670, CMessages::ClearAllMessagesDisplayedByGame, PATCH_JUMP); +ENDPATCHES diff --git a/src/text/Pager.cpp b/src/text/Pager.cpp index 9e484c29..5c6b3ee2 100644 --- a/src/text/Pager.cpp +++ b/src/text/Pager.cpp @@ -1,194 +1,194 @@ -#include "common.h" -#include "patcher.h" -#include "Pager.h" -#include "Timer.h" -#include "Messages.h" -#include "Hud.h" -#include "Camera.h" - -void -CPager::Init() -{ - ClearMessages(); - m_nNumDisplayLetters = 8; -} - -void -CPager::Process() -{ - if (m_messages[0].m_pText != nil && m_messages[0].m_nCurrentPosition >= (int32)m_messages[0].m_nStringLength) { - m_messages[0].m_pText = nil; - uint16 i = 0; - while (i < NUMPAGERMESSAGES-1) { - if (m_messages[i + 1].m_pText == nil) break; - m_messages[i] = m_messages[i + 1]; - i++; - } - m_messages[i].m_pText = nil; - if (m_messages[0].m_pText != nil) - CMessages::AddToPreviousBriefArray( - m_messages[0].m_pText, - m_messages[0].m_nNumber[0], - m_messages[0].m_nNumber[1], - m_messages[0].m_nNumber[2], - m_messages[0].m_nNumber[3], - m_messages[0].m_nNumber[4], - m_messages[0].m_nNumber[5], - 0); - } - Display(); - if (m_messages[0].m_pText != nil) { - if (TheCamera.m_WideScreenOn || !CHud::m_Wants_To_Draw_Hud || CHud::m_BigMessage[0][0] || CHud::m_BigMessage[2][0]) { - RestartCurrentMessage(); - } else { - if (CTimer::GetTimeInMilliseconds() > m_messages[0].m_nTimeToChangePosition) { - m_messages[0].m_nCurrentPosition++; - m_messages[0].m_nTimeToChangePosition = CTimer::GetTimeInMilliseconds() + m_messages[0].m_nSpeedMs; - } - } - } -} - -void -CPager::Display() -{ - wchar outstr1[256]; - wchar outstr2[260]; - - wchar *pText = m_messages[0].m_pText; - uint16 i = 0; - if (pText != nil) { - CMessages::InsertNumberInString( - pText, - m_messages[0].m_nNumber[0], - m_messages[0].m_nNumber[1], - m_messages[0].m_nNumber[2], - m_messages[0].m_nNumber[3], - m_messages[0].m_nNumber[4], - m_messages[0].m_nNumber[5], - outstr1); - for (; i < m_nNumDisplayLetters; i++) { - int pos = m_messages[0].m_nCurrentPosition + i; - if (pos >= 0) { - if (!outstr1[pos]) break; - - outstr2[i] = outstr1[pos]; - } else { - outstr2[i] = ' '; - } - } - } - outstr2[i] = '\0'; - CHud::SetPagerMessage(outstr2); -} - -void -CPager::AddMessage(wchar *str, uint16 speed, uint16 priority, uint16 a5) -{ - uint16 size = CMessages::GetWideStringLength(str); - for (int32 i = 0; i < NUMPAGERMESSAGES; i++) { - if (m_messages[i].m_pText) { - if (m_messages[i].m_nPriority >= priority) - continue; - - for (int j = NUMPAGERMESSAGES-1; j > i; j--) - m_messages[j] = m_messages[j-1]; - - } - m_messages[i].m_pText = str; - m_messages[i].m_nSpeedMs = speed; - m_messages[i].m_nPriority = priority; - m_messages[i].field_10 = a5; - m_messages[i].m_nCurrentPosition = -(m_nNumDisplayLetters + 10); - m_messages[i].m_nTimeToChangePosition = CTimer::GetTimeInMilliseconds() + speed; - m_messages[i].m_nStringLength = size; - m_messages[i].m_nNumber[0] = -1; - m_messages[i].m_nNumber[1] = -1; - m_messages[i].m_nNumber[2] = -1; - m_messages[i].m_nNumber[3] = -1; - m_messages[i].m_nNumber[4] = -1; - m_messages[i].m_nNumber[5] = -1; - - if (i == 0) - CMessages::AddToPreviousBriefArray( - m_messages[0].m_pText, - m_messages[0].m_nNumber[0], - m_messages[0].m_nNumber[1], - m_messages[0].m_nNumber[2], - m_messages[0].m_nNumber[3], - m_messages[0].m_nNumber[4], - m_messages[0].m_nNumber[5], - nil); - return; - } -} - -void -CPager::AddMessageWithNumber(wchar *str, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6, uint16 speed, uint16 priority, uint16 a11) -{ - wchar nstr[520]; - - CMessages::InsertNumberInString(str, n1, n2, n3, n4, n5, n6, nstr); - uint16 size = CMessages::GetWideStringLength(nstr); - for (int32 i = 0; i < NUMPAGERMESSAGES; i++) { - if (m_messages[i].m_pText) { - if (m_messages[i].m_nPriority >= priority) - continue; - - for (int j = NUMPAGERMESSAGES-1; j > i; j--) - m_messages[j] = m_messages[j - 1]; - - } - m_messages[i].m_pText = str; - m_messages[i].m_nSpeedMs = speed; - m_messages[i].m_nPriority = priority; - m_messages[i].field_10 = a11; - m_messages[i].m_nCurrentPosition = -(m_nNumDisplayLetters + 10); - m_messages[i].m_nTimeToChangePosition = CTimer::GetTimeInMilliseconds() + speed; - m_messages[i].m_nStringLength = size; - m_messages[i].m_nNumber[0] = n1; - m_messages[i].m_nNumber[1] = n2; - m_messages[i].m_nNumber[2] = n3; - m_messages[i].m_nNumber[3] = n4; - m_messages[i].m_nNumber[4] = n5; - m_messages[i].m_nNumber[5] = n6; - - if (i == 0) - CMessages::AddToPreviousBriefArray( - m_messages[0].m_pText, - m_messages[0].m_nNumber[0], - m_messages[0].m_nNumber[1], - m_messages[0].m_nNumber[2], - m_messages[0].m_nNumber[3], - m_messages[0].m_nNumber[4], - m_messages[0].m_nNumber[5], - nil); - return; - } -} - -void -CPager::ClearMessages() -{ - for (int32 i = 0; i < NUMPAGERMESSAGES; i++) - m_messages[i].m_pText = nil; -} - -void -CPager::RestartCurrentMessage() -{ - if (m_messages[0].m_pText != nil) { - m_messages[0].m_nCurrentPosition = -(m_nNumDisplayLetters + 10); - m_messages[0].m_nTimeToChangePosition = CTimer::GetTimeInMilliseconds() + m_messages[0].m_nSpeedMs; - } -} - -STARTPATCHES - InjectHook(0x52B6F0, &CPager::Init, PATCH_JUMP); - InjectHook(0x52B740, &CPager::Process, PATCH_JUMP); - InjectHook(0x52B890, &CPager::Display, PATCH_JUMP); - InjectHook(0x52B940, &CPager::AddMessage, PATCH_JUMP); - InjectHook(0x52BB50, &CPager::AddMessageWithNumber, PATCH_JUMP); - InjectHook(0x52BE50, &CPager::RestartCurrentMessage, PATCH_JUMP); - InjectHook(0x52BE00, &CPager::ClearMessages, PATCH_JUMP); +#include "common.h" +#include "patcher.h" +#include "Pager.h" +#include "Timer.h" +#include "Messages.h" +#include "Hud.h" +#include "Camera.h" + +void +CPager::Init() +{ + ClearMessages(); + m_nNumDisplayLetters = 8; +} + +void +CPager::Process() +{ + if (m_messages[0].m_pText != nil && m_messages[0].m_nCurrentPosition >= (int32)m_messages[0].m_nStringLength) { + m_messages[0].m_pText = nil; + uint16 i = 0; + while (i < NUMPAGERMESSAGES-1) { + if (m_messages[i + 1].m_pText == nil) break; + m_messages[i] = m_messages[i + 1]; + i++; + } + m_messages[i].m_pText = nil; + if (m_messages[0].m_pText != nil) + CMessages::AddToPreviousBriefArray( + m_messages[0].m_pText, + m_messages[0].m_nNumber[0], + m_messages[0].m_nNumber[1], + m_messages[0].m_nNumber[2], + m_messages[0].m_nNumber[3], + m_messages[0].m_nNumber[4], + m_messages[0].m_nNumber[5], + 0); + } + Display(); + if (m_messages[0].m_pText != nil) { + if (TheCamera.m_WideScreenOn || !CHud::m_Wants_To_Draw_Hud || CHud::m_BigMessage[0][0] || CHud::m_BigMessage[2][0]) { + RestartCurrentMessage(); + } else { + if (CTimer::GetTimeInMilliseconds() > m_messages[0].m_nTimeToChangePosition) { + m_messages[0].m_nCurrentPosition++; + m_messages[0].m_nTimeToChangePosition = CTimer::GetTimeInMilliseconds() + m_messages[0].m_nSpeedMs; + } + } + } +} + +void +CPager::Display() +{ + wchar outstr1[256]; + wchar outstr2[260]; + + wchar *pText = m_messages[0].m_pText; + uint16 i = 0; + if (pText != nil) { + CMessages::InsertNumberInString( + pText, + m_messages[0].m_nNumber[0], + m_messages[0].m_nNumber[1], + m_messages[0].m_nNumber[2], + m_messages[0].m_nNumber[3], + m_messages[0].m_nNumber[4], + m_messages[0].m_nNumber[5], + outstr1); + for (; i < m_nNumDisplayLetters; i++) { + int pos = m_messages[0].m_nCurrentPosition + i; + if (pos >= 0) { + if (!outstr1[pos]) break; + + outstr2[i] = outstr1[pos]; + } else { + outstr2[i] = ' '; + } + } + } + outstr2[i] = '\0'; + CHud::SetPagerMessage(outstr2); +} + +void +CPager::AddMessage(wchar *str, uint16 speed, uint16 priority, uint16 a5) +{ + uint16 size = CMessages::GetWideStringLength(str); + for (int32 i = 0; i < NUMPAGERMESSAGES; i++) { + if (m_messages[i].m_pText) { + if (m_messages[i].m_nPriority >= priority) + continue; + + for (int j = NUMPAGERMESSAGES-1; j > i; j--) + m_messages[j] = m_messages[j-1]; + + } + m_messages[i].m_pText = str; + m_messages[i].m_nSpeedMs = speed; + m_messages[i].m_nPriority = priority; + m_messages[i].field_10 = a5; + m_messages[i].m_nCurrentPosition = -(m_nNumDisplayLetters + 10); + m_messages[i].m_nTimeToChangePosition = CTimer::GetTimeInMilliseconds() + speed; + m_messages[i].m_nStringLength = size; + m_messages[i].m_nNumber[0] = -1; + m_messages[i].m_nNumber[1] = -1; + m_messages[i].m_nNumber[2] = -1; + m_messages[i].m_nNumber[3] = -1; + m_messages[i].m_nNumber[4] = -1; + m_messages[i].m_nNumber[5] = -1; + + if (i == 0) + CMessages::AddToPreviousBriefArray( + m_messages[0].m_pText, + m_messages[0].m_nNumber[0], + m_messages[0].m_nNumber[1], + m_messages[0].m_nNumber[2], + m_messages[0].m_nNumber[3], + m_messages[0].m_nNumber[4], + m_messages[0].m_nNumber[5], + nil); + return; + } +} + +void +CPager::AddMessageWithNumber(wchar *str, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6, uint16 speed, uint16 priority, uint16 a11) +{ + wchar nstr[520]; + + CMessages::InsertNumberInString(str, n1, n2, n3, n4, n5, n6, nstr); + uint16 size = CMessages::GetWideStringLength(nstr); + for (int32 i = 0; i < NUMPAGERMESSAGES; i++) { + if (m_messages[i].m_pText) { + if (m_messages[i].m_nPriority >= priority) + continue; + + for (int j = NUMPAGERMESSAGES-1; j > i; j--) + m_messages[j] = m_messages[j - 1]; + + } + m_messages[i].m_pText = str; + m_messages[i].m_nSpeedMs = speed; + m_messages[i].m_nPriority = priority; + m_messages[i].field_10 = a11; + m_messages[i].m_nCurrentPosition = -(m_nNumDisplayLetters + 10); + m_messages[i].m_nTimeToChangePosition = CTimer::GetTimeInMilliseconds() + speed; + m_messages[i].m_nStringLength = size; + m_messages[i].m_nNumber[0] = n1; + m_messages[i].m_nNumber[1] = n2; + m_messages[i].m_nNumber[2] = n3; + m_messages[i].m_nNumber[3] = n4; + m_messages[i].m_nNumber[4] = n5; + m_messages[i].m_nNumber[5] = n6; + + if (i == 0) + CMessages::AddToPreviousBriefArray( + m_messages[0].m_pText, + m_messages[0].m_nNumber[0], + m_messages[0].m_nNumber[1], + m_messages[0].m_nNumber[2], + m_messages[0].m_nNumber[3], + m_messages[0].m_nNumber[4], + m_messages[0].m_nNumber[5], + nil); + return; + } +} + +void +CPager::ClearMessages() +{ + for (int32 i = 0; i < NUMPAGERMESSAGES; i++) + m_messages[i].m_pText = nil; +} + +void +CPager::RestartCurrentMessage() +{ + if (m_messages[0].m_pText != nil) { + m_messages[0].m_nCurrentPosition = -(m_nNumDisplayLetters + 10); + m_messages[0].m_nTimeToChangePosition = CTimer::GetTimeInMilliseconds() + m_messages[0].m_nSpeedMs; + } +} + +STARTPATCHES + InjectHook(0x52B6F0, &CPager::Init, PATCH_JUMP); + InjectHook(0x52B740, &CPager::Process, PATCH_JUMP); + InjectHook(0x52B890, &CPager::Display, PATCH_JUMP); + InjectHook(0x52B940, &CPager::AddMessage, PATCH_JUMP); + InjectHook(0x52BB50, &CPager::AddMessageWithNumber, PATCH_JUMP); + InjectHook(0x52BE50, &CPager::RestartCurrentMessage, PATCH_JUMP); + InjectHook(0x52BE00, &CPager::ClearMessages, PATCH_JUMP); ENDPATCHES \ No newline at end of file diff --git a/src/text/Pager.h b/src/text/Pager.h index 1719e726..a628be6f 100644 --- a/src/text/Pager.h +++ b/src/text/Pager.h @@ -1,28 +1,28 @@ -#pragma once - -struct PagerMessage { - wchar *m_pText; - uint16 m_nSpeedMs; - int16 m_nCurrentPosition; - uint16 m_nStringLength; - uint16 m_nPriority; - uint32 m_nTimeToChangePosition; - int16 field_10; - int32 m_nNumber[6]; -}; - -#define NUMPAGERMESSAGES 8 - -class CPager -{ - int16 m_nNumDisplayLetters; - PagerMessage m_messages[NUMPAGERMESSAGES]; -public: - void Init(); - void Process(); - void Display(); - void AddMessage(wchar*, uint16, uint16, uint16); - void AddMessageWithNumber(wchar *str, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6, uint16 speed, uint16 priority, uint16 a11); - void ClearMessages(); - void RestartCurrentMessage(); +#pragma once + +struct PagerMessage { + wchar *m_pText; + uint16 m_nSpeedMs; + int16 m_nCurrentPosition; + uint16 m_nStringLength; + uint16 m_nPriority; + uint32 m_nTimeToChangePosition; + int16 field_10; + int32 m_nNumber[6]; +}; + +#define NUMPAGERMESSAGES 8 + +class CPager +{ + int16 m_nNumDisplayLetters; + PagerMessage m_messages[NUMPAGERMESSAGES]; +public: + void Init(); + void Process(); + void Display(); + void AddMessage(wchar*, uint16, uint16, uint16); + void AddMessageWithNumber(wchar *str, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6, uint16 speed, uint16 priority, uint16 a11); + void ClearMessages(); + void RestartCurrentMessage(); }; \ No newline at end of file diff --git a/src/text/Text.cpp b/src/text/Text.cpp index d0cdb310..5fc19f12 100644 --- a/src/text/Text.cpp +++ b/src/text/Text.cpp @@ -1,324 +1,324 @@ -#include "common.h" -#include "patcher.h" -#include "FileMgr.h" -#include "Frontend.h" -#include "Messages.h" -#include "Text.h" - -static wchar WideErrorString[25]; - -CText &TheText = *(CText*)0x941520; - -CText::CText(void) -{ - encoding = 'e'; - memset(WideErrorString, 0, sizeof(WideErrorString)); -} - -void -CText::Load(void) -{ - uint8 *filedata; - char filename[32], type[4]; - int length; - int offset, sectlen; - - Unload(); - filedata = new uint8[0x40000]; - - CFileMgr::SetDir("TEXT"); - switch(CMenuManager::m_PrefsLanguage){ - case LANGUAGE_AMERICAN: - sprintf(filename, "AMERICAN.GXT"); - break; - case LANGUAGE_FRENCH: - sprintf(filename, "FRENCH.GXT"); - break; - case LANGUAGE_GERMAN: - sprintf(filename, "GERMAN.GXT"); - break; - case LANGUAGE_ITALIAN: - sprintf(filename, "ITALIAN.GXT"); - break; - case LANGUAGE_SPANISH: - sprintf(filename, "SPANISH.GXT"); - break; -#ifdef MORE_LANGUAGES - case LANGUAGE_RUSSIAN: - sprintf(filename, "RUSSIAN.GXT"); - break; -#endif - } - - length = CFileMgr::LoadFile(filename, filedata, 0x40000, "rb"); - CFileMgr::SetDir(""); - - offset = 0; - while(offset < length){ - type[0] = filedata[offset++]; - type[1] = filedata[offset++]; - type[2] = filedata[offset++]; - type[3] = filedata[offset++]; - sectlen = (int)filedata[offset+3]<<24 | (int)filedata[offset+2]<<16 | - (int)filedata[offset+1]<<8 | (int)filedata[offset+0]; - offset += 4; - if(sectlen != 0){ - if(strncmp(type, "TKEY", 4) == 0) - keyArray.Load(sectlen, filedata, &offset); - else if(strncmp(type, "TDAT", 4) == 0) - data.Load(sectlen, filedata, &offset); - else - offset += sectlen; - } - } - - keyArray.Update(data.chars); - - delete[] filedata; -} - -void -CText::Unload(void) -{ - CMessages::ClearAllMessagesDisplayedByGame(); - data.Unload(); - keyArray.Unload(); -} - -wchar* -CText::Get(const char *key) -{ - return keyArray.Search(key); -} - -wchar UpperCaseTable[128] = { - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 173, 173, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255 -}; - -wchar FrenchUpperCaseTable[128] = { - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 65, 65, 65, 65, 132, 133, 69, 69, 69, 69, 73, 73, - 73, 73, 79, 79, 79, 79, 85, 85, 85, 85, 173, 173, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255 -}; - -wchar -CText::GetUpperCase(wchar c) -{ - switch (encoding) - { - case 'e': - if (c >= 'a' && c <= 'z') - return c - 32; - break; - case 'f': - if (c >= 'a' && c <= 'z') - return c - 32; - - if (c >= 128 && c <= 255) - return FrenchUpperCaseTable[c-128]; - break; - case 'g': - case 'i': - case 's': - if (c >= 'a' && c <= 'z') - return c - 32; - - if (c >= 128 && c <= 255) - return UpperCaseTable[c-128]; - break; - default: - break; - } - return c; -} - -void -CText::UpperCase(wchar *s) -{ - while(*s){ - *s = GetUpperCase(*s); - s++; - } -} - - -void -CKeyArray::Load(uint32 length, uint8 *data, int *offset) -{ - uint32 i; - uint8 *rawbytes; - - numEntries = length / sizeof(CKeyEntry); - entries = new CKeyEntry[numEntries]; - rawbytes = (uint8*)entries; - - for(i = 0; i < length; i++) - rawbytes[i] = data[(*offset)++]; -} - -void -CKeyArray::Unload(void) -{ - delete[] entries; - entries = nil; - numEntries = 0; -} - -void -CKeyArray::Update(wchar *chars) -{ - int i; - for(i = 0; i < numEntries; i++) - entries[i].value = (wchar*)((uint8*)chars + (uintptr)entries[i].value); -} - -CKeyEntry* -CKeyArray::BinarySearch(const char *key, CKeyEntry *entries, int16 low, int16 high) -{ - int mid; - int diff; - - if(low > high) - return nil; - - mid = (low + high)/2; - diff = strcmp(key, entries[mid].key); - if(diff == 0) - return &entries[mid]; - if(diff < 0) - return BinarySearch(key, entries, low, mid-1); - if(diff > 0) - return BinarySearch(key, entries, mid+1, high); - return nil; -} - -wchar* -CKeyArray::Search(const char *key) -{ - CKeyEntry *found; - char errstr[25]; - int i; - - found = BinarySearch(key, entries, 0, numEntries-1); - if(found) - return found->value; - sprintf(errstr, "%s missing", key); - for(i = 0; i < 25; i++) - WideErrorString[i] = errstr[i]; - return WideErrorString; -} - - -void -CData::Load(uint32 length, uint8 *data, int *offset) -{ - uint32 i; - uint8 *rawbytes; - - numChars = length / sizeof(wchar); - chars = new wchar[numChars]; - rawbytes = (uint8*)chars; - - for(i = 0; i < length; i++) - rawbytes[i] = data[(*offset)++]; -} - -void -CData::Unload(void) -{ - delete[] chars; - chars = nil; - numChars = 0; -} - -void -AsciiToUnicode(const char *src, wchar *dst) -{ - while((*dst++ = *src++) != '\0'); -} - -char* -UnicodeToAscii(wchar *src) -{ - static char aStr[256]; - int len; - for(len = 0; *src != '\0' && len < 256-1; len++, src++) - if(*src < 128) - aStr[len] = *src; - else - aStr[len] = '#'; - aStr[len] = '\0'; - return aStr; -} - -char* -UnicodeToAsciiForSaveLoad(wchar *src) -{ - static char aStr[256]; - int len; - for(len = 0; *src != '\0' && len < 256-1; len++, src++) - if(*src < 256) - aStr[len] = *src; - else - aStr[len] = '#'; - aStr[len] = '\0'; - return aStr; -} - -void -UnicodeStrcpy(wchar *dst, const wchar *src) -{ - while((*dst++ = *src++) != '\0'); -} - -int -UnicodeStrlen(const wchar *str) -{ - int len; - for(len = 0; *str != '\0'; len++, str++); - return len; -} - -void -TextCopy(wchar *dst, const wchar *src) -{ - while((*dst++ = *src++) != '\0'); -} - - -STARTPATCHES - InjectHook(0x52C3C0, &CText::Load, PATCH_JUMP); - InjectHook(0x52C580, &CText::Unload, PATCH_JUMP); - InjectHook(0x52C5A0, &CText::Get, PATCH_JUMP); - InjectHook(0x52C220, &CText::GetUpperCase, PATCH_JUMP); - InjectHook(0x52C2C0, &CText::UpperCase, PATCH_JUMP); - - InjectHook(0x52BE70, &CKeyArray::Load, PATCH_JUMP); - InjectHook(0x52BF60, &CKeyArray::Unload, PATCH_JUMP); - InjectHook(0x52BF80, &CKeyArray::Update, PATCH_JUMP); - InjectHook(0x52C060, &CKeyArray::BinarySearch, PATCH_JUMP); - InjectHook(0x52BFB0, &CKeyArray::Search, PATCH_JUMP); - - InjectHook(0x52C120, &CData::Load, PATCH_JUMP); - InjectHook(0x52C200, &CData::Unload, PATCH_JUMP); -ENDPATCHES +#include "common.h" +#include "patcher.h" +#include "FileMgr.h" +#include "Frontend.h" +#include "Messages.h" +#include "Text.h" + +static wchar WideErrorString[25]; + +CText &TheText = *(CText*)0x941520; + +CText::CText(void) +{ + encoding = 'e'; + memset(WideErrorString, 0, sizeof(WideErrorString)); +} + +void +CText::Load(void) +{ + uint8 *filedata; + char filename[32], type[4]; + int length; + int offset, sectlen; + + Unload(); + filedata = new uint8[0x40000]; + + CFileMgr::SetDir("TEXT"); + switch(CMenuManager::m_PrefsLanguage){ + case LANGUAGE_AMERICAN: + sprintf(filename, "AMERICAN.GXT"); + break; + case LANGUAGE_FRENCH: + sprintf(filename, "FRENCH.GXT"); + break; + case LANGUAGE_GERMAN: + sprintf(filename, "GERMAN.GXT"); + break; + case LANGUAGE_ITALIAN: + sprintf(filename, "ITALIAN.GXT"); + break; + case LANGUAGE_SPANISH: + sprintf(filename, "SPANISH.GXT"); + break; +#ifdef MORE_LANGUAGES + case LANGUAGE_RUSSIAN: + sprintf(filename, "RUSSIAN.GXT"); + break; +#endif + } + + length = CFileMgr::LoadFile(filename, filedata, 0x40000, "rb"); + CFileMgr::SetDir(""); + + offset = 0; + while(offset < length){ + type[0] = filedata[offset++]; + type[1] = filedata[offset++]; + type[2] = filedata[offset++]; + type[3] = filedata[offset++]; + sectlen = (int)filedata[offset+3]<<24 | (int)filedata[offset+2]<<16 | + (int)filedata[offset+1]<<8 | (int)filedata[offset+0]; + offset += 4; + if(sectlen != 0){ + if(strncmp(type, "TKEY", 4) == 0) + keyArray.Load(sectlen, filedata, &offset); + else if(strncmp(type, "TDAT", 4) == 0) + data.Load(sectlen, filedata, &offset); + else + offset += sectlen; + } + } + + keyArray.Update(data.chars); + + delete[] filedata; +} + +void +CText::Unload(void) +{ + CMessages::ClearAllMessagesDisplayedByGame(); + data.Unload(); + keyArray.Unload(); +} + +wchar* +CText::Get(const char *key) +{ + return keyArray.Search(key); +} + +wchar UpperCaseTable[128] = { + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 173, 173, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255 +}; + +wchar FrenchUpperCaseTable[128] = { + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 65, 65, 65, 65, 132, 133, 69, 69, 69, 69, 73, 73, + 73, 73, 79, 79, 79, 79, 85, 85, 85, 85, 173, 173, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255 +}; + +wchar +CText::GetUpperCase(wchar c) +{ + switch (encoding) + { + case 'e': + if (c >= 'a' && c <= 'z') + return c - 32; + break; + case 'f': + if (c >= 'a' && c <= 'z') + return c - 32; + + if (c >= 128 && c <= 255) + return FrenchUpperCaseTable[c-128]; + break; + case 'g': + case 'i': + case 's': + if (c >= 'a' && c <= 'z') + return c - 32; + + if (c >= 128 && c <= 255) + return UpperCaseTable[c-128]; + break; + default: + break; + } + return c; +} + +void +CText::UpperCase(wchar *s) +{ + while(*s){ + *s = GetUpperCase(*s); + s++; + } +} + + +void +CKeyArray::Load(uint32 length, uint8 *data, int *offset) +{ + uint32 i; + uint8 *rawbytes; + + numEntries = length / sizeof(CKeyEntry); + entries = new CKeyEntry[numEntries]; + rawbytes = (uint8*)entries; + + for(i = 0; i < length; i++) + rawbytes[i] = data[(*offset)++]; +} + +void +CKeyArray::Unload(void) +{ + delete[] entries; + entries = nil; + numEntries = 0; +} + +void +CKeyArray::Update(wchar *chars) +{ + int i; + for(i = 0; i < numEntries; i++) + entries[i].value = (wchar*)((uint8*)chars + (uintptr)entries[i].value); +} + +CKeyEntry* +CKeyArray::BinarySearch(const char *key, CKeyEntry *entries, int16 low, int16 high) +{ + int mid; + int diff; + + if(low > high) + return nil; + + mid = (low + high)/2; + diff = strcmp(key, entries[mid].key); + if(diff == 0) + return &entries[mid]; + if(diff < 0) + return BinarySearch(key, entries, low, mid-1); + if(diff > 0) + return BinarySearch(key, entries, mid+1, high); + return nil; +} + +wchar* +CKeyArray::Search(const char *key) +{ + CKeyEntry *found; + char errstr[25]; + int i; + + found = BinarySearch(key, entries, 0, numEntries-1); + if(found) + return found->value; + sprintf(errstr, "%s missing", key); + for(i = 0; i < 25; i++) + WideErrorString[i] = errstr[i]; + return WideErrorString; +} + + +void +CData::Load(uint32 length, uint8 *data, int *offset) +{ + uint32 i; + uint8 *rawbytes; + + numChars = length / sizeof(wchar); + chars = new wchar[numChars]; + rawbytes = (uint8*)chars; + + for(i = 0; i < length; i++) + rawbytes[i] = data[(*offset)++]; +} + +void +CData::Unload(void) +{ + delete[] chars; + chars = nil; + numChars = 0; +} + +void +AsciiToUnicode(const char *src, wchar *dst) +{ + while((*dst++ = *src++) != '\0'); +} + +char* +UnicodeToAscii(wchar *src) +{ + static char aStr[256]; + int len; + for(len = 0; *src != '\0' && len < 256-1; len++, src++) + if(*src < 128) + aStr[len] = *src; + else + aStr[len] = '#'; + aStr[len] = '\0'; + return aStr; +} + +char* +UnicodeToAsciiForSaveLoad(wchar *src) +{ + static char aStr[256]; + int len; + for(len = 0; *src != '\0' && len < 256-1; len++, src++) + if(*src < 256) + aStr[len] = *src; + else + aStr[len] = '#'; + aStr[len] = '\0'; + return aStr; +} + +void +UnicodeStrcpy(wchar *dst, const wchar *src) +{ + while((*dst++ = *src++) != '\0'); +} + +int +UnicodeStrlen(const wchar *str) +{ + int len; + for(len = 0; *str != '\0'; len++, str++); + return len; +} + +void +TextCopy(wchar *dst, const wchar *src) +{ + while((*dst++ = *src++) != '\0'); +} + + +STARTPATCHES + InjectHook(0x52C3C0, &CText::Load, PATCH_JUMP); + InjectHook(0x52C580, &CText::Unload, PATCH_JUMP); + InjectHook(0x52C5A0, &CText::Get, PATCH_JUMP); + InjectHook(0x52C220, &CText::GetUpperCase, PATCH_JUMP); + InjectHook(0x52C2C0, &CText::UpperCase, PATCH_JUMP); + + InjectHook(0x52BE70, &CKeyArray::Load, PATCH_JUMP); + InjectHook(0x52BF60, &CKeyArray::Unload, PATCH_JUMP); + InjectHook(0x52BF80, &CKeyArray::Update, PATCH_JUMP); + InjectHook(0x52C060, &CKeyArray::BinarySearch, PATCH_JUMP); + InjectHook(0x52BFB0, &CKeyArray::Search, PATCH_JUMP); + + InjectHook(0x52C120, &CData::Load, PATCH_JUMP); + InjectHook(0x52C200, &CData::Unload, PATCH_JUMP); +ENDPATCHES diff --git a/src/vehicles/Bike.h b/src/vehicles/Bike.h index 00aa259c..4e7e5a0e 100644 --- a/src/vehicles/Bike.h +++ b/src/vehicles/Bike.h @@ -1,15 +1,15 @@ -#pragma once - -// some miami bike leftovers - -enum eBikeNodes { - BIKE_NODE_NONE, - BIKE_CHASSIS, - BIKE_FORKS_FRONT, - BIKE_FORKS_REAR, - BIKE_WHEEL_FRONT, - BIKE_WHEEL_REAR, - BIKE_MUDGUARD, - BIKE_HANDLEBARS, - BIKE_NUM_NODES +#pragma once + +// some miami bike leftovers + +enum eBikeNodes { + BIKE_NODE_NONE, + BIKE_CHASSIS, + BIKE_FORKS_FRONT, + BIKE_FORKS_REAR, + BIKE_WHEEL_FRONT, + BIKE_WHEEL_REAR, + BIKE_MUDGUARD, + BIKE_HANDLEBARS, + BIKE_NUM_NODES }; \ No newline at end of file diff --git a/src/weapons/ProjectileInfo.h b/src/weapons/ProjectileInfo.h index dafb48db..a4ea369a 100644 --- a/src/weapons/ProjectileInfo.h +++ b/src/weapons/ProjectileInfo.h @@ -1,32 +1,32 @@ -#pragma once - -class CEntity; -class CObject; -class CProjectile; -enum eWeaponType; - -class CProjectileInfo -{ -public: - eWeaponType m_eWeaponType; - CEntity* m_pSource; - uint32 m_nExplosionTime; - bool m_bInUse; - CVector m_vecPos; - -public: - static CProjectileInfo* GetProjectileInfo(int32 id); - static CProjectile* (&ms_apProjectile)[NUM_PROJECTILES]; - - static void Initialise(); - static void Shutdown(); - static bool AddProjectile(CEntity *ped, eWeaponType weapon, CVector pos, float speed); - static void RemoveProjectile(CProjectileInfo *info, CProjectile *projectile); - static void RemoveNotAdd(CEntity *entity, eWeaponType weaponType, CVector pos); - static bool RemoveIfThisIsAProjectile(CObject *pObject); - static void RemoveAllProjectiles(); - static void Update(); - static bool IsProjectileInRange(float x1, float x2, float y1, float y2, float z1, float z2, bool remove); -}; - +#pragma once + +class CEntity; +class CObject; +class CProjectile; +enum eWeaponType; + +class CProjectileInfo +{ +public: + eWeaponType m_eWeaponType; + CEntity* m_pSource; + uint32 m_nExplosionTime; + bool m_bInUse; + CVector m_vecPos; + +public: + static CProjectileInfo* GetProjectileInfo(int32 id); + static CProjectile* (&ms_apProjectile)[NUM_PROJECTILES]; + + static void Initialise(); + static void Shutdown(); + static bool AddProjectile(CEntity *ped, eWeaponType weapon, CVector pos, float speed); + static void RemoveProjectile(CProjectileInfo *info, CProjectile *projectile); + static void RemoveNotAdd(CEntity *entity, eWeaponType weaponType, CVector pos); + static bool RemoveIfThisIsAProjectile(CObject *pObject); + static void RemoveAllProjectiles(); + static void Update(); + static bool IsProjectileInRange(float x1, float x2, float y1, float y2, float z1, float z2, bool remove); +}; + extern CProjectileInfo (&gaProjectileInfo)[NUM_PROJECTILES]; \ No newline at end of file From 6473778c47efa1e8c1e2d8eea405de98f378cd69 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 10 Apr 2020 02:17:32 +0300 Subject: [PATCH 050/112] fix weather init --- src/render/Weather.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/render/Weather.cpp b/src/render/Weather.cpp index d132ffdb..53daa70f 100644 --- a/src/render/Weather.cpp +++ b/src/render/Weather.cpp @@ -71,8 +71,8 @@ const int16 WeatherTypesList[] = { const float Windiness[] = { 0.0f, // WEATHER_SUNNY - 0.7f, // WEATHER_RAINY - 1.0f, // WEATHER_CLOUDY + 0.7f, // WEATHER_CLOUDY + 1.0f, // WEATHER_RAINY 0.5f // WEATHER_FOGGY }; @@ -106,7 +106,7 @@ void CWeather::Init(void) { NewWeatherType = WEATHER_SUNNY; bScriptsForceRain = false; - OldWeatherType = WEATHER_RAINY; + OldWeatherType = WEATHER_CLOUDY; Stored_StateStored = false; InterpolationValue = 0.0f; WhenToPlayLightningSound = 0; From 6647312660cb6c67d7ee3fec89897c930783a77f Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 10 Apr 2020 10:52:47 +0300 Subject: [PATCH 051/112] Fix sprite vertical scale --- src/core/common.h | 2 -- src/render/Coronas.cpp | 4 ++-- src/render/Sprite.cpp | 10 ++++++---- src/render/WeaponEffects.cpp | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/core/common.h b/src/core/common.h index 9b897cca..6ea88f2f 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -107,10 +107,8 @@ extern void **rwengine; #ifdef ASPECT_RATIO_SCALE #define SCREEN_SCALE_AR(a) ((a) * DEFAULT_ASPECT_RATIO / SCREEN_ASPECT_RATIO) -#define SCREEN_SCALE_AR2(a) ((a) / (DEFAULT_ASPECT_RATIO / SCREEN_ASPECT_RATIO)) #else #define SCREEN_SCALE_AR(a) (a) -#define SCREEN_SCALE_AR2(a) (a) #endif #include "maths.h" diff --git a/src/render/Coronas.cpp b/src/render/Coronas.cpp index c934540b..68994b0b 100644 --- a/src/render/Coronas.cpp +++ b/src/render/Coronas.cpp @@ -320,7 +320,7 @@ CCoronas::Render(void) CSprite::RenderOneXLUSprite(spriteCoors.x, spriteCoors.y, spriteCoors.z, spritew * aCoronas[i].size * wscale, - spriteh * SCREEN_SCALE_AR2(aCoronas[i].size * fogscale * hscale), + spriteh * aCoronas[i].size * fogscale * hscale, CCoronas::aCoronas[i].red / fogscale, CCoronas::aCoronas[i].green / fogscale, CCoronas::aCoronas[i].blue / fogscale, @@ -331,7 +331,7 @@ CCoronas::Render(void) CSprite::RenderOneXLUSprite_Rotate_Aspect( spriteCoors.x, spriteCoors.y, spriteCoors.z, spritew * aCoronas[i].size * fogscale, - spriteh * SCREEN_SCALE_AR2(aCoronas[i].size * fogscale), + spriteh * aCoronas[i].size * fogscale, CCoronas::aCoronas[i].red / fogscale, CCoronas::aCoronas[i].green / fogscale, CCoronas::aCoronas[i].blue / fogscale, diff --git a/src/render/Sprite.cpp b/src/render/Sprite.cpp index fec50c7e..8ac2315f 100644 --- a/src/render/Sprite.cpp +++ b/src/render/Sprite.cpp @@ -30,10 +30,12 @@ CSprite::CalcScreenCoors(const RwV3d &in, RwV3d *out, float *outw, float *outh, out->x *= SCREEN_WIDTH * recip; out->y *= SCREEN_HEIGHT * recip; // What is this? size? - *outw = 70.0f/CDraw::GetFOV(); - *outh = 70.0f/CDraw::GetFOV(); - *outw *= SCREEN_WIDTH * recip; - *outh *= SCREEN_HEIGHT * recip; + *outw = 70.0f/CDraw::GetFOV() * SCREEN_WIDTH * recip; +#ifdef ASPECT_RATIO_SCALE + *outh = 70.0f/CDraw::GetFOV() / (DEFAULT_ASPECT_RATIO / SCREEN_ASPECT_RATIO) * SCREEN_HEIGHT * recip; +#else + *outh = 70.0f/CDraw::GetFOV() * SCREEN_HEIGHT * recip; +#endif return true; } diff --git a/src/render/WeaponEffects.cpp b/src/render/WeaponEffects.cpp index 3101def9..2ed9e662 100644 --- a/src/render/WeaponEffects.cpp +++ b/src/render/WeaponEffects.cpp @@ -83,7 +83,7 @@ CWeaponEffects::Render(void) { float recipz = 1.0f / pos.z; CSprite::RenderOneXLUSprite(pos.x, pos.y, pos.z, - gCrossHair.m_fSize * w, gCrossHair.m_fSize * SCREEN_SCALE_AR2(h), + gCrossHair.m_fSize * w, gCrossHair.m_fSize * h, gCrossHair.m_nRed, gCrossHair.m_nGreen, gCrossHair.m_nBlue, 255, recipz, 255); } From 917fa80c18e83172040870d1a1cf613b51cf628c Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 10 Apr 2020 11:03:38 +0300 Subject: [PATCH 052/112] record init --- src/control/Record.cpp | 178 ++++++++++++++++++++++++++++++++++++++++- src/control/Record.h | 36 ++++++++- src/core/Pad.cpp | 12 ++- src/core/Streaming.cpp | 4 +- src/core/Timer.cpp | 2 +- 5 files changed, 222 insertions(+), 10 deletions(-) diff --git a/src/control/Record.cpp b/src/control/Record.cpp index 7c330311..7a3763be 100644 --- a/src/control/Record.cpp +++ b/src/control/Record.cpp @@ -2,12 +2,184 @@ #include "patcher.h" #include "Record.h" +#include "FileMgr.h" +#include "Pad.h" +#include "Pools.h" +#include "Timer.h" + uint16 &CRecordDataForGame::RecordingState = *(uint16*)0x95CC24; +uint8*& CRecordDataForGame::pDataBuffer = *(uint8**)0x8F1B70; +uint8*& CRecordDataForGame::pDataBufferPointer = *(uint8**)0x8F1AB0; +int& CRecordDataForGame::FId = *(int*)0x885BA4; +tGameBuffer& CRecordDataForGame::pDataBufferForFrame = *(tGameBuffer*)0x72CED0; uint8 &CRecordDataForChase::Status = *(uint8*)0x95CDCE; -WRAPPER void CRecordDataForGame::SaveOrRetrieveDataForThisFrame(void) { EAXJMP(0x4341F0); } -WRAPPER void CRecordDataForGame::Init(void) { EAXJMP(0x4340F0); } +#define MEMORY_FOR_GAME_RECORD (150000) + +void CRecordDataForGame::Init(void) +{ + RecordingState = STATE_NONE; + if (pDataBuffer) + delete[] pDataBuffer; + pDataBufferPointer = nil; + pDataBuffer = nil; +#ifndef GTA_PS2 // this stuff is not present on PS2 + FId = CFileMgr::OpenFile("playback.dat", "r"); + if (FId <= 0) { + if ((FId = CFileMgr::OpenFile("record.dat", "r")) <= 0) + RecordingState = STATE_NONE; + else { + CFileMgr::CloseFile(FId); + FId = CFileMgr::OpenFileForWriting("record.dat"); + RecordingState = STATE_RECORD; + } + } + else { + RecordingState = STATE_PLAYBACK; + } + if (RecordingState == STATE_PLAYBACK) { + pDataBufferPointer = (uint8*)malloc(MEMORY_FOR_GAME_RECORD); + pDataBuffer = pDataBufferPointer; + pDataBuffer[CFileMgr::Read(FId, (char*)pDataBufferPointer, MEMORY_FOR_GAME_RECORD) + 8] = -1; + CFileMgr::CloseFile(FId); + } +#else + RecordingState = STATE_NONE; // second time to make sure +#endif +} + +void CRecordDataForGame::SaveOrRetrieveDataForThisFrame(void) +{ + switch (RecordingState) { + case STATE_RECORD: + { + pDataBufferForFrame.m_fTimeStep = CTimer::GetTimeStep(); + pDataBufferForFrame.m_nTimeInMilliseconds = CTimer::GetTimeInMilliseconds(); + pDataBufferForFrame.m_nSizeOfPads[0] = 0; + pDataBufferForFrame.m_nSizeOfPads[1] = 0; + pDataBufferForFrame.m_nChecksum = CalcGameChecksum(); + uint8* pController1 = PackCurrentPadValues(pDataBufferForFrame.m_ControllerBuffer, &CPad::GetPad(0)->OldState, &CPad::GetPad(0)->NewState); + pDataBufferForFrame.m_nSizeOfPads[0] = (pController1 - pDataBufferForFrame.m_ControllerBuffer) / 2; + uint8* pController2 = PackCurrentPadValues(pController1, &CPad::GetPad(1)->OldState, &CPad::GetPad(1)->NewState); + pDataBufferForFrame.m_nSizeOfPads[1] = (pController2 - pController1) / 2; + uint8* pEndPtr = pController2; + if ((pDataBufferForFrame.m_nSizeOfPads[0] + pDataBufferForFrame.m_nSizeOfPads[1]) & 1) + pEndPtr += 2; + CFileMgr::Write(FId, (char*)&pDataBufferForFrame, pEndPtr - (uint8*)&pDataBufferForFrame); + break; + } + case STATE_PLAYBACK: + if (pDataBufferPointer[8] == -1) + CPad::GetPad(0)->NewState.Clear(); + else { + tGameBuffer* pData = (tGameBuffer*)pDataBufferPointer; + CTimer::SetTimeInMilliseconds(pData->m_nTimeInMilliseconds); + CTimer::SetTimeStep(pData->m_fTimeStep); + uint8 size1 = pData->m_nSizeOfPads[0]; + uint8 size2 = pData->m_nSizeOfPads[1]; + pDataBufferPointer = (uint8*)&pData->m_ControllerBuffer; + pDataBufferPointer = UnPackCurrentPadValues(pDataBufferPointer, size1, &CPad::GetPad(0)->NewState); + pDataBufferPointer = UnPackCurrentPadValues(pDataBufferPointer, size2, &CPad::GetPad(1)->NewState); + if ((size1 + size2) & 1) + pDataBufferPointer += 2; + if (pData->m_nChecksum != CalcGameChecksum()) + printf("Playback out of sync\n"); + } + } +} + +#define PROCESS_BUTTON_STATE_STORE(buf, os, ns, field, id) \ + do { \ + if (os->field != os->field){ \ + *buf++ = id; \ + *buf++ = ns->field; \ + } \ + } while (0); + +uint8* CRecordDataForGame::PackCurrentPadValues(uint8* buf, CControllerState* os, CControllerState* ns) +{ + PROCESS_BUTTON_STATE_STORE(buf, os, ns, LeftStickX, 0); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, LeftStickY, 1); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, LeftShoulder1, 2); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, RightStickY, 3); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, LeftShoulder1, 4); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, LeftShoulder2, 5); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, RightShoulder1, 6); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, RightShoulder2, 7); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, DPadUp, 8); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, DPadDown, 9); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, DPadLeft, 10); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, DPadRight, 11); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, Start, 12); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, Select, 13); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, Square, 14); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, Triangle, 15); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, Cross, 16); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, Circle, 17); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, LeftShock, 18); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, RightShock, 19); + return buf; +} +#undef PROCESS_BUTTON_STATE_STORE + +#define PROCESS_BUTTON_STATE_RESTORE(buf, state, field, id) case id: state->field = *buf++; break; + +uint8* CRecordDataForGame::UnPackCurrentPadValues(uint8* buf, uint8 total, CControllerState* state) +{ + for (uint8 i = 0; i < total; i++) { + switch (*buf++) { + PROCESS_BUTTON_STATE_RESTORE(buf, state, LeftStickX, 0); + PROCESS_BUTTON_STATE_RESTORE(buf, state, LeftStickY, 1); + PROCESS_BUTTON_STATE_RESTORE(buf, state, LeftShoulder1, 2); + PROCESS_BUTTON_STATE_RESTORE(buf, state, RightStickY, 3); + PROCESS_BUTTON_STATE_RESTORE(buf, state, LeftShoulder1, 4); + PROCESS_BUTTON_STATE_RESTORE(buf, state, LeftShoulder2, 5); + PROCESS_BUTTON_STATE_RESTORE(buf, state, RightShoulder1, 6); + PROCESS_BUTTON_STATE_RESTORE(buf, state, RightShoulder2, 7); + PROCESS_BUTTON_STATE_RESTORE(buf, state, DPadUp, 8); + PROCESS_BUTTON_STATE_RESTORE(buf, state, DPadDown, 9); + PROCESS_BUTTON_STATE_RESTORE(buf, state, DPadLeft, 10); + PROCESS_BUTTON_STATE_RESTORE(buf, state, DPadRight, 11); + PROCESS_BUTTON_STATE_RESTORE(buf, state, Start, 12); + PROCESS_BUTTON_STATE_RESTORE(buf, state, Select, 13); + PROCESS_BUTTON_STATE_RESTORE(buf, state, Square, 14); + PROCESS_BUTTON_STATE_RESTORE(buf, state, Triangle, 15); + PROCESS_BUTTON_STATE_RESTORE(buf, state, Cross, 16); + PROCESS_BUTTON_STATE_RESTORE(buf, state, Circle, 17); + PROCESS_BUTTON_STATE_RESTORE(buf, state, LeftShock, 18); + PROCESS_BUTTON_STATE_RESTORE(buf, state, RightShock, 19); + } + } + return buf; +} + +#undef PROCESS_BUTTON_STATE_RESTORE + +uint16 CRecordDataForGame::CalcGameChecksum(void) +{ + uint32 checksum = 0; + int i = CPools::GetPedPool()->GetSize(); + while (i--) { + CPed* pPed = CPools::GetPedPool()->GetSlot(i); + if (!pPed) + continue; + checksum ^= pPed->GetModelIndex() ^ *(uint32*)&pPed->GetPosition().z ^ *(uint32*)&pPed->GetPosition().y ^ *(uint32*)&pPed->GetPosition().x; + } + i = CPools::GetVehiclePool()->GetSize(); + while (i--) { + CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i); + if (!pVehicle) + continue; + checksum ^= pVehicle->GetModelIndex() ^ *(uint32*)&pVehicle->GetPosition().z ^ *(uint32*)&pVehicle->GetPosition().y ^ *(uint32*)&pVehicle->GetPosition().x; + } + return checksum ^ checksum >> 16; +} + +WRAPPER void CRecordDataForChase::Init(void) +{ + EAXJMP(0x434780); +} WRAPPER void CRecordDataForChase::SaveOrRetrieveDataForThisFrame(void) { EAXJMP(0x4347F0); } WRAPPER void CRecordDataForChase::ProcessControlCars(void) { EAXJMP(0x435540); } @@ -16,4 +188,4 @@ WRAPPER void CRecordDataForChase::StartChaseScene(float) { EAXJMP(0x435690); } WRAPPER void CRecordDataForChase::CleanUpChaseScene() { EAXJMP(0x4357C0); } WRAPPER void CRecordDataForChase::RemoveCarFromChase(int32) { EAXJMP(0x435BC0); } WRAPPER CVehicle* CRecordDataForChase::TurnChaseCarIntoScriptCar(int32) { EAXJMP(0x435C00); } -WRAPPER void CRecordDataForChase::Init(void) { EAXJMP(0x434780); } + diff --git a/src/control/Record.h b/src/control/Record.h index e52a623e..3cb09318 100644 --- a/src/control/Record.h +++ b/src/control/Record.h @@ -1,6 +1,8 @@ #pragma once +class CAutomobile; class CVehicle; +class CControllerState; enum { RECORDSTATE_0, @@ -10,8 +12,15 @@ enum { class CRecordDataForChase { + enum { + NUM_CHASE_CARS = 20 + }; public: static uint8 &Status; + static int &PositionChanges; + static uint8 &CurrentCar; + static CAutomobile*(&pChaseCars)[NUM_CHASE_CARS]; + static uint32 &AnimStartTime; static void SaveOrRetrieveDataForThisFrame(void); static void ProcessControlCars(void); @@ -23,12 +32,37 @@ public: static void Init(void); }; +struct tGameBuffer +{ + float m_fTimeStep; + uint32 m_nTimeInMilliseconds; + uint8 m_nSizeOfPads[2]; + uint16 m_nChecksum; + uint8 m_ControllerBuffer[116]; +}; class CRecordDataForGame { + enum { + STATE_NONE = 0, + STATE_RECORD = 1, + STATE_PLAYBACK = 2, + }; + static uint16& RecordingState; + static uint8* &pDataBuffer; + static uint8* &pDataBufferPointer; + static int &FId; + static tGameBuffer &pDataBufferForFrame; + public: - static uint16 &RecordingState; + static bool IsRecording() { return RecordingState == STATE_RECORD; } + static bool IsPlayingBack() { return RecordingState == STATE_PLAYBACK; } static void SaveOrRetrieveDataForThisFrame(void); static void Init(void); + +private: + static uint16 CalcGameChecksum(void); + static uint8* PackCurrentPadValues(uint8*, CControllerState*, CControllerState*); + static uint8* UnPackCurrentPadValues(uint8*, uint8, CControllerState*); }; diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp index 6bbe00f2..ff7b2fb7 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -21,6 +21,7 @@ #include "Hud.h" #include "Text.h" #include "Timer.h" +#include "Record.h" #include "World.h" #include "Vehicle.h" #include "Ped.h" @@ -657,9 +658,14 @@ void CPad::Update(int16 unk) { OldState = NewState; - NewState = ReconcileTwoControllersInput(PCTempKeyState, PCTempJoyState); - NewState = ReconcileTwoControllersInput(PCTempMouseState, NewState); - +#if (defined GTA_PS2 || defined FIX_BUGS) + if (!CRecordDataForGame::IsPlayingBack() /* && !CRecordDataForChase::ShouldThisPadBeLeftAlone(unk) */) +#endif + { + NewState = ReconcileTwoControllersInput(PCTempKeyState, PCTempJoyState); + NewState = ReconcileTwoControllersInput(PCTempMouseState, NewState); + } + PCTempJoyState.Clear(); PCTempKeyState.Clear(); PCTempMouseState.Clear(); diff --git a/src/core/Streaming.cpp b/src/core/Streaming.cpp index 3dcb767a..d00edf51 100644 --- a/src/core/Streaming.cpp +++ b/src/core/Streaming.cpp @@ -1247,8 +1247,8 @@ CStreaming::StreamVehiclesAndPeds(void) static int timeBeforeNextLoad = 0; static int modelQualityClass = 0; - if(CRecordDataForGame::RecordingState == RECORDSTATE_1 || - CRecordDataForGame::RecordingState == RECORDSTATE_2) + if(CRecordDataForGame::IsRecording() || + CRecordDataForGame::IsPlayingBack()) return; if(FindPlayerPed()->m_pWanted->AreSwatRequired()){ diff --git a/src/core/Timer.cpp b/src/core/Timer.cpp index 18d6b6a3..3cd6862c 100644 --- a/src/core/Timer.cpp +++ b/src/core/Timer.cpp @@ -130,7 +130,7 @@ void CTimer::Update(void) ms_fTimeStepNonClipped = ms_fTimeStep; - if ( CRecordDataForGame::RecordingState != RECORDSTATE_2 ) + if ( !CRecordDataForGame::IsPlayingBack() ) { ms_fTimeStep = min(3.0f, ms_fTimeStep); From 8917567508f1c98ba96579fdc0516cd07902c74d Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 10 Apr 2020 11:23:35 +0300 Subject: [PATCH 053/112] Fixing mixed IsCutsceneProcessing and IsRunning --- src/{core => animation}/CutsceneMgr.cpp | 0 src/{core => animation}/CutsceneMgr.h | 2 +- src/control/CarCtrl.cpp | 2 +- src/control/CarGen.cpp | 2 +- src/control/Script.cpp | 2 +- src/render/Weather.cpp | 2 +- 6 files changed, 5 insertions(+), 5 deletions(-) rename src/{core => animation}/CutsceneMgr.cpp (100%) rename src/{core => animation}/CutsceneMgr.h (96%) diff --git a/src/core/CutsceneMgr.cpp b/src/animation/CutsceneMgr.cpp similarity index 100% rename from src/core/CutsceneMgr.cpp rename to src/animation/CutsceneMgr.cpp diff --git a/src/core/CutsceneMgr.h b/src/animation/CutsceneMgr.h similarity index 96% rename from src/core/CutsceneMgr.h rename to src/animation/CutsceneMgr.h index 7b809964..3c915eea 100644 --- a/src/core/CutsceneMgr.h +++ b/src/animation/CutsceneMgr.h @@ -26,7 +26,7 @@ public: static CDirectory *&ms_pCutsceneDir; static uint32 &ms_cutsceneLoadStatus; - static void SetRunning(bool running) { ms_running = running; } + static void StartCutsceneProcessing() { ms_cutsceneProcessing = true; } static bool IsRunning(void) { return ms_running; } static bool IsCutsceneProcessing(void) { return ms_cutsceneProcessing; } static bool UseLodMultiplier(void) { return ms_useLodMultiplier; } diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp index 3174a253..cdcfbba6 100644 --- a/src/control/CarCtrl.cpp +++ b/src/control/CarCtrl.cpp @@ -90,7 +90,7 @@ uint32 (&aCarsToKeepTime)[MAX_CARS_TO_KEEP] = *(uint32(*)[MAX_CARS_TO_KEEP])*(ui void CCarCtrl::GenerateRandomCars() { - if (CCutsceneMgr::IsCutsceneProcessing()) + if (CCutsceneMgr::IsRunning()) return; if (NumRandomCars < 30){ if (CountDownToCarsAtStart == 0){ diff --git a/src/control/CarGen.cpp b/src/control/CarGen.cpp index 49a96f50..721ac35a 100644 --- a/src/control/CarGen.cpp +++ b/src/control/CarGen.cpp @@ -242,7 +242,7 @@ void CCarGenerator::Load(uint8 *&buffer) void CTheCarGenerators::Process() { - if (FindPlayerTrain() || CCutsceneMgr::IsRunning()) + if (FindPlayerTrain() || CCutsceneMgr::IsCutsceneProcessing()) return; if (++CTheCarGenerators::ProcessCounter == 4) CTheCarGenerators::ProcessCounter = 0; diff --git a/src/control/Script.cpp b/src/control/Script.cpp index ddea0e3c..b7876172 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -8442,7 +8442,7 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command) CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]]; CPad::GetPad(ScriptParams[0])->DisablePlayerControls |= PLAYERCONTROL_DISABLED_80; pPlayerInfo->MakePlayerSafe(true); - CCutsceneMgr::SetRunning(true); + CCutsceneMgr::StartCutsceneProcessing(); return 0; } case COMMAND_USE_TEXT_COMMANDS: diff --git a/src/render/Weather.cpp b/src/render/Weather.cpp index 53daa70f..b440e77c 100644 --- a/src/render/Weather.cpp +++ b/src/render/Weather.cpp @@ -475,7 +475,7 @@ void CWeather::RenderRainStreaks(void) // 1/16 probability Streaks[i].direction = CVector(4.0f, 4.0f, -4.0f); Streaks[i].position = 6.0f * TheCamera.GetForward() + TheCamera.GetPosition() + CVector(-1.8f * Streaks[i].direction.x, -1.8f * Streaks[i].direction.y, 8.0f); - if (!CCutsceneMgr::IsCutsceneProcessing()) { + if (!CCutsceneMgr::IsRunning()) { Streaks[i].position.x += 2.0f * FindPlayerSpeed().x * 60.0f; Streaks[i].position.y += 2.0f * FindPlayerSpeed().y * 60.0f; } From b76172e2ddde4ca77f0827f017705e12bb759b91 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 10 Apr 2020 11:41:48 +0300 Subject: [PATCH 054/112] PlayerSkin small cleanup --- src/{core => render}/PlayerSkin.cpp | 7 +++++-- src/{core => render}/PlayerSkin.h | 6 ------ 2 files changed, 5 insertions(+), 8 deletions(-) rename src/{core => render}/PlayerSkin.cpp (97%) rename src/{core => render}/PlayerSkin.h (64%) diff --git a/src/core/PlayerSkin.cpp b/src/render/PlayerSkin.cpp similarity index 97% rename from src/core/PlayerSkin.cpp rename to src/render/PlayerSkin.cpp index 62bcd07d..2cba45fe 100644 --- a/src/core/PlayerSkin.cpp +++ b/src/render/PlayerSkin.cpp @@ -15,6 +15,9 @@ #include "Timer.h" #include "Lights.h" +RpClump *gpPlayerClump; +float gOldFov; + int CPlayerSkin::m_txdSlot; void @@ -92,7 +95,7 @@ CPlayerSkin::GetSkinTexture(const char *texName) CTxdStore::SetCurrentTxd(m_txdSlot); tex = RwTextureRead(texName, NULL); CTxdStore::PopCurrentTxd(); - if (tex) return tex; + if (tex != nil) return tex; if (strcmp(DEFAULT_SKIN_NAME, texName) == 0) sprintf(gString, "models\\generic\\player.bmp"); @@ -139,7 +142,7 @@ CPlayerSkin::RenderFrontendSkinEdit(void) { static float rotation = 0.0f; RwRGBAReal AmbientColor = { 0.65f, 0.65f, 0.65f, 1.0f }; - RwV3d pos = { 1.35f, 0.35f, 7.725f }; + const RwV3d pos = { 1.35f, 0.35f, 7.725f }; const RwV3d axis1 = { 1.0f, 0.0f, 0.0f }; const RwV3d axis2 = { 0.0f, 0.0f, 1.0f }; static uint32 LastFlash = 0; diff --git a/src/core/PlayerSkin.h b/src/render/PlayerSkin.h similarity index 64% rename from src/core/PlayerSkin.h rename to src/render/PlayerSkin.h index 2d82ec12..e0214ce0 100644 --- a/src/core/PlayerSkin.h +++ b/src/render/PlayerSkin.h @@ -2,12 +2,6 @@ #define DEFAULT_SKIN_NAME "$$\"\"" -static RpClump *gpPlayerClump;// = *(RpClump**)0x660FF8; -static float gOldFov;// = *(float*)0x660FFC; - -void LoadPlayerDff(void); -void FindPlayerDff(uint32 &offset, uint32 &size); - class CPlayerSkin { static int m_txdSlot; From 314bb83b9aa2f801f11fa5445e86f0e896484138 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 10 Apr 2020 12:03:22 +0300 Subject: [PATCH 055/112] fixed intro crash --- src/control/Script.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/control/Script.cpp b/src/control/Script.cpp index b7876172..ff89f0fc 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -11373,15 +11373,15 @@ void CTheScripts::ClearSpaceForMissionEntity(const CVector& pos, CEntity* pEntit continue; CEntity* pFound = aEntities[i]; int cols; - if (CModelInfo::GetModelInfo(pEntity->GetModelIndex())->GetColModel()->numLines <= 0) - cols = CCollision::ProcessColModels(pEntity->GetMatrix(), *CModelInfo::GetModelInfo(pEntity->GetModelIndex())->GetColModel(), - pFound->GetMatrix(), *CModelInfo::GetModelInfo(pFound->GetModelIndex())->GetColModel(), aTempColPoints, nil, nil); + if (pEntity->GetColModel()->numLines <= 0) + cols = CCollision::ProcessColModels(pEntity->GetMatrix(), *pEntity->GetColModel(), + pFound->GetMatrix(), *pFound->GetColModel(), aTempColPoints, nil, nil); else { float lines[4]; lines[0] = lines[1] = lines[2] = lines[3] = 1.0f; - CColPoint tmp; - cols = CCollision::ProcessColModels(pEntity->GetMatrix(), *CModelInfo::GetModelInfo(pEntity->GetModelIndex())->GetColModel(), - pFound->GetMatrix(), *CModelInfo::GetModelInfo(pFound->GetModelIndex())->GetColModel(), aTempColPoints, &tmp, lines); + CColPoint tmp[4]; + cols = CCollision::ProcessColModels(pEntity->GetMatrix(), *pEntity->GetColModel(), + pFound->GetMatrix(), *pFound->GetColModel(), aTempColPoints,tmp, lines); } if (cols <= 0) continue; From a27f7359ffce0256b7b1862f8bf3bd1a64758915 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 10 Apr 2020 12:20:04 +0300 Subject: [PATCH 056/112] fix --- src/animation/CutsceneMgr.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/animation/CutsceneMgr.cpp b/src/animation/CutsceneMgr.cpp index 39066958..0e35599b 100644 --- a/src/animation/CutsceneMgr.cpp +++ b/src/animation/CutsceneMgr.cpp @@ -352,6 +352,7 @@ CCutsceneMgr::DeleteCutsceneData(void) CWorld::Remove(ms_pCutsceneObjects[ms_numCutsceneObjs]); ms_pCutsceneObjects[ms_numCutsceneObjs]->DeleteRwObject(); delete ms_pCutsceneObjects[ms_numCutsceneObjs]; + ms_pCutsceneObjects[ms_numCutsceneObjs] = nil; } ms_numCutsceneObjs = 0; From a8f7bf0beca5c200bc3396312f0caaceacd27f94 Mon Sep 17 00:00:00 2001 From: saml1er Date: Fri, 10 Apr 2020 16:44:08 +0500 Subject: [PATCH 057/112] CObject complete --- src/control/Pickups.cpp | 10 +- src/entities/Entity.cpp | 4 +- src/entities/Entity.h | 4 +- src/objects/Object.cpp | 291 ++++++++++++++++++++++++++++++++++-- src/objects/Object.h | 22 ++- src/peds/Ped.cpp | 4 +- src/peds/Population.cpp | 2 +- src/vehicles/Automobile.cpp | 4 +- src/vehicles/Boat.cpp | 2 +- src/vehicles/Floater.cpp | 2 +- 10 files changed, 316 insertions(+), 29 deletions(-) diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index 774abd8c..16123c63 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -111,7 +111,7 @@ CPickup::GiveUsAPickUpObject(int32 handle) object->bUsesCollision = false; object->bIsPickup = true; - object->field_172 = m_eModelIndex == MI_PICKUP_BONUS ? m_nQuantity : 0; + object->m_nBonusValue = m_eModelIndex == MI_PICKUP_BONUS ? m_nQuantity : 0; switch (m_eType) { @@ -671,9 +671,9 @@ void CPickups::DoPickUpEffects(CEntity *entity) { if (entity->GetModelIndex() == MI_PICKUP_KILLFRENZY) - entity->m_flagD80 = CTheScripts::IsPlayerOnAMission() || CDarkel::FrenzyOnGoing() || !CGame::nastyGame; + entity->bDoNotRender = CTheScripts::IsPlayerOnAMission() || CDarkel::FrenzyOnGoing() || !CGame::nastyGame; - if (!entity->m_flagD80) { + if (!entity->bDoNotRender) { float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x7FF) * DEGTORAD(360.0f / 0x800)); float modifiedSin = 0.3f * (s + 1.0f); @@ -716,7 +716,7 @@ CPickups::DoPickUpEffects(CEntity *entity) size, 65.0f, CCoronas::TYPE_RING, CCoronas::FLARE_NONE, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); CObject *object = (CObject*)entity; - if (object->m_obj_flag2 || object->bOutOfStock || object->field_172) { + if (object->m_obj_flag2 || object->bOutOfStock || object->m_nBonusValue) { float dist = (TheCamera.GetPosition() - pos).Magnitude(); const float MAXDIST = 12.0f; @@ -734,7 +734,7 @@ CPickups::DoPickUpEffects(CEntity *entity) aMessages[NumMessages].m_color.blue = aWeaponBlues[colorId]; aMessages[NumMessages].m_color.alpha = (1.0f - dist / MAXDIST) * 128.0f; aMessages[NumMessages].m_bOutOfStock = object->bOutOfStock; - aMessages[NumMessages].m_quantity = object->field_172; + aMessages[NumMessages].m_quantity = object->m_nBonusValue; NumMessages++; } } diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp index 07d70394..25e5db48 100644 --- a/src/entities/Entity.cpp +++ b/src/entities/Entity.cpp @@ -62,11 +62,11 @@ CEntity::CEntity(void) bRemoveFromWorld = false; bHasHitWall = false; bImBeingRendered = false; - m_flagD8 = false; + bTouchingWater = false; bIsSubway = false; bDrawLast = false; bNoBrightHeadLights = false; - m_flagD80 = false; + bDoNotRender = false; bDistanceFade = false; m_flagE2 = false; diff --git a/src/entities/Entity.h b/src/entities/Entity.h index 99cc7f17..17a219c3 100644 --- a/src/entities/Entity.h +++ b/src/entities/Entity.h @@ -73,11 +73,11 @@ public: uint32 bRemoveFromWorld : 1; uint32 bHasHitWall : 1; uint32 bImBeingRendered : 1; - uint32 m_flagD8 : 1; // used by cBuoyancy::ProcessBuoyancy + uint32 bTouchingWater : 1; // used by cBuoyancy::ProcessBuoyancy uint32 bIsSubway : 1; // set when subway, but maybe different meaning? uint32 bDrawLast : 1; uint32 bNoBrightHeadLights : 1; - uint32 m_flagD80 : 1; // CObject visibility? + uint32 bDoNotRender : 1; // flagsE uint32 bDistanceFade : 1; diff --git a/src/objects/Object.cpp b/src/objects/Object.cpp index aa366aa0..9d08dc72 100644 --- a/src/objects/Object.cpp +++ b/src/objects/Object.cpp @@ -6,12 +6,11 @@ #include "Radar.h" #include "Object.h" #include "DummyObject.h" - -WRAPPER void CObject::ObjectDamage(float amount) { EAXJMP(0x4BB240); } -WRAPPER void CObject::DeleteAllTempObjectInArea(CVector, float) { EAXJMP(0x4BBED0); } -WRAPPER void CObject::Init(void) { EAXJMP(0x4BAEC0); } -WRAPPER void CObject::ProcessControl(void) { EAXJMP(0x4BB040); } -WRAPPER void CObject::Teleport(CVector) { EAXJMP(0x4BBDA0); } +#include "Particle.h" +#include "General.h" +#include "ObjectData.h" +#include "World.h" +#include "Floater.h" int16 &CObject::nNoTempObjects = *(int16*)0x95CCA2; int16 &CObject::nBodyCastHealth = *(int16*)0x5F7D4C; // 1000 @@ -28,13 +27,13 @@ CObject::CObject(void) m_nCollisionDamageEffect = 0; m_nSpecialCollisionResponseCases = COLLRESPONSE_NONE; m_bCameraToAvoidThisObject = false; - ObjectCreatedBy = 0; + ObjectCreatedBy = 0; m_nEndOfLifeTime = 0; // m_nRefModelIndex = -1; // duplicate // bUseVehicleColours = false; // duplicate m_colour2 = 0; m_colour1 = m_colour2; - field_172 = 0; + m_nBonusValue = 0; bIsPickup = false; m_obj_flag2 = false; bOutOfStock = false; @@ -82,10 +81,46 @@ CObject::~CObject(void) nNoTempObjects--; } +void +CObject::ProcessControl(void) +{ + CVector point, impulse; + if (m_nCollisionDamageEffect) + ObjectDamage(m_fDamageImpulse); + CPhysical::ProcessControl(); + if (mod_Buoyancy.ProcessBuoyancy(this, m_fBuoyancy, &point, &impulse)) { + bIsInWater = true; + bIsStatic = false; + ApplyMoveForce(impulse); + ApplyTurnForce(impulse, point); + float fTimeStep = Pow(0.97f, CTimer::GetTimeStep()); + m_vecMoveSpeed *= fTimeStep; + m_vecTurnSpeed *= fTimeStep; + } + if ((MI_EXPLODINGBARREL == m_modelIndex || MI_PETROLPUMP == m_modelIndex) && bHasBeenDamaged && bIsVisible + && CGeneral::GetRandomNumberInRange(0, 31) == 10) { + bExplosionProof = true; + bIsVisible = false; + bUsesCollision = false; + bAffectedByGravity = false; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + } +} + +void +CObject::Teleport(CVector vecPos) +{ + CWorld::Remove(this); + m_matrix.GetPosition() = vecPos; + m_matrix.UpdateRW(); + UpdateRwFrame(); + CWorld::Add(this); +} + void CObject::Render(void) { - if(m_flagD80) + if(bDoNotRender) return; if(m_nRefModelIndex != -1 && ObjectCreatedBy == TEMP_OBJECT && bUseVehicleColours){ @@ -117,6 +152,158 @@ CObject::RemoveLighting(bool reset) WorldReplaceScorchedLightsWithNormal(Scene.world); } +void +CObject::ObjectDamage(float amount) +{ + if (m_nCollisionDamageEffect && bUsesCollision) { + static int8_t nFrameGen = 0; + bool bBodyCastDamageEffect = false; + if (m_modelIndex == MI_BODYCAST){ + if (amount > 50.0f) + nBodyCastHealth = static_cast(nBodyCastHealth - 0.5f * amount); + if (nBodyCastHealth < 0) + nBodyCastHealth = 0; + if (nBodyCastHealth < 200) + bBodyCastDamageEffect = true; + amount = 0.0f; + } + if ((amount * m_fCollisionDamageMultiplier > 150.0f || bBodyCastDamageEffect) && m_nCollisionDamageEffect) { + if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_CHANGE_MODEL) { + bRenderDamaged = true; + return; + } + if (m_nCollisionDamageEffect != COLDAMAGE_EFFECT_SPLIT_MODEL) { + if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_SMASH_COMPLETELY) { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + return; + } + if (m_nCollisionDamageEffect != COLDAMAGE_EFFECT_CHANGE_THEN_SMASH) { + uint8 audioId = 0; + const CVector& vecPos = m_matrix.GetPosition(); + const float fDirectionZ = 0.0002f * amount; + switch (m_nCollisionDamageEffect) + { + case COLDAMAGE_EFFECT_SMASH_CARDBOX_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color = {96, 48, 0, 255}; + for (int32_t i = 0; i < 25; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + float fRandom = CGeneral::GetRandomNumberInRange(0.01f, 1.0f); + RwRGBA randomColor = {color.red * fRandom, color.green * fRandom , color.blue, color.alpha}; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); + } + audioId = _SCRSOUND_CARDBOARD_BOX_SMASH; + break; + } + case COLDAMAGE_EFFECT_SMASH_WOODENBOX_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color = {128, 128, 128, 255}; + for (int32_t i = 0; i < 45; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + float fRandom = CGeneral::GetRandomNumberInRange(0.5f, 0.5f); + RwRGBA randomColor = {color.red * fRandom, color.green * fRandom , color.blue * fRandom, color.alpha}; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); + } + audioId = _SCRSOUND_WOODEN_BOX_SMASH; + break; + } + case COLDAMAGE_EFFECT_SMASH_TRAFFICCONE_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color1 = {200, 0, 0, 255}; + const RwRGBA color2 = {200, 200, 200, 255}; + for (int32_t i = 0; i < 10; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + RwRGBA color = color2; + if (nFrameGen & 1) + color = color1; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); + } + audioId = _SCRSOUND_TYRE_BUMP; + break; + } + case COLDAMAGE_EFFECT_SMASH_BARPOST_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color1 = {200, 0, 0, 255}; + const RwRGBA color2 = {200, 200, 200, 255}; + for (int32_t i = 0; i < 32; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + RwRGBA color = color2; + if (nFrameGen & 1) + color = color1; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); + } + audioId = _SCRSOUND_COL_CAR; + break; + } + default: + return; + } + PlayOneShotScriptObject(audioId, vecPos); + return; + } + if (!bRenderDamaged) { + bRenderDamaged = true; + } else { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + } + } + } + } +} void CObject::RefModelInfo(int32 modelId) @@ -125,6 +312,39 @@ CObject::RefModelInfo(int32 modelId) CModelInfo::GetModelInfo(modelId)->AddRef(); } +void +CObject::Init(void) +{ + m_type = ENTITY_TYPE_OBJECT;; + CObjectData::SetObjectData(m_modelIndex, *this); + m_nEndOfLifeTime = 0; + ObjectCreatedBy = GAME_OBJECT; + bIsStatic = true; + bIsPickup = false; + m_obj_flag2 = false; + bOutOfStock = false; + bGlassCracked = false; + bGlassBroken = false; + bHasBeenDamaged = false; + bUseVehicleColours = false; + m_nRefModelIndex = -1; + m_colour1 = 0; + m_colour2 = 0; + m_nBonusValue = 0; + m_pCollidingEntity = nil; + CColPoint point; + CEntity* outEntity = nil; + const CVector& vecPos = m_matrix.GetPosition(); + if (CWorld::ProcessVerticalLine(vecPos, vecPos.z - 10.0f, point, outEntity, true, false, false, false, false, false, nil)) + m_pCurSurface = outEntity; + else + m_pCurSurface = nil; + if (m_modelIndex == MI_BODYCAST) + nBodyCastHealth = 1000; + else if (m_modelIndex == MI_BUOY) + bTouchingWater = true; +} + bool CObject::CanBeDeleted(void) { @@ -142,6 +362,45 @@ CObject::CanBeDeleted(void) } } +void +CObject::DeleteAllMissionObjects() +{ + CObjectPool* objectPool = CPools::GetObjectPool(); + for (int32_t i = 0; i < objectPool->GetSize(); i++) { + CObject* pObject = objectPool->GetSlot(i); + if (pObject && pObject->ObjectCreatedBy == MISSION_OBJECT) { + CWorld::Remove(pObject); + delete pObject; + } + } +} + +void +CObject::DeleteAllTempObjects() +{ + CObjectPool* objectPool = CPools::GetObjectPool(); + for (int32_t i = 0; i < objectPool->GetSize(); i++) { + CObject* pObject = objectPool->GetSlot(i); + if (pObject && pObject->ObjectCreatedBy == TEMP_OBJECT) { + CWorld::Remove(pObject); + delete pObject; + } + } +} + +void +CObject::DeleteAllTempObjectInArea(CVector point, float fRadius) +{ + CObjectPool *objectPool = CPools::GetObjectPool(); + for (int32_t i = 0; i < objectPool->GetSize(); i++) { + CObject *pObject = objectPool->GetSlot(i); + if (pObject && pObject->ObjectCreatedBy == TEMP_OBJECT && fRadius * fRadius > pObject->GetPosition().MagnitudeSqr()) { + CWorld::Remove(pObject); + delete pObject; + } + } +} + #include class CObject_ : public CObject @@ -152,6 +411,9 @@ public: CObject *ctor(CDummyObject *dummy) { return ::new (this) CObject(dummy); } void dtor(void) { CObject::~CObject(); } void Render_(void) { CObject::Render(); } + void ProcessControl_(void) { CObject::ProcessControl(); } + bool SetupLighting_(void) { return CObject::SetupLighting(); } + void RemoveLighting_(bool reset) { CObject::RemoveLighting(reset); } }; STARTPATCHES @@ -159,5 +421,16 @@ STARTPATCHES InjectHook(0x4BACE0, (CObject* (CObject::*)(int32, bool)) &CObject_::ctor, PATCH_JUMP); InjectHook(0x4BAD50, (CObject* (CObject::*)(CDummyObject*)) &CObject_::ctor, PATCH_JUMP); InjectHook(0x4BAE00, &CObject_::dtor, PATCH_JUMP); + InjectHook(0x4BB040, &CObject_::ProcessControl_, PATCH_JUMP); + InjectHook(0x4BBDA0, &CObject::Teleport, PATCH_JUMP); InjectHook(0x4BB1E0, &CObject_::Render_, PATCH_JUMP); + InjectHook(0x4A7C90, &CObject_::SetupLighting_, PATCH_JUMP); + InjectHook(0x4A7CD0, &CObject_::RemoveLighting_, PATCH_JUMP); + InjectHook(0x4BB240, &CObject::ObjectDamage, PATCH_JUMP); + InjectHook(0x4BBD80, &CObject::RefModelInfo, PATCH_JUMP); + InjectHook(0x4BAEC0, &CObject::Init, PATCH_JUMP); + InjectHook(0x4BB010, &CObject::CanBeDeleted, PATCH_JUMP); + InjectHook(0x4BBE60, &CObject::DeleteAllMissionObjects, PATCH_JUMP); + InjectHook(0x4BBDF0, &CObject::DeleteAllTempObjects, PATCH_JUMP); + InjectHook(0x4BBED0, &CObject::DeleteAllTempObjectInArea, PATCH_JUMP); ENDPATCHES diff --git a/src/objects/Object.h b/src/objects/Object.h index 27346e23..86fbe119 100644 --- a/src/objects/Object.h +++ b/src/objects/Object.h @@ -9,6 +9,18 @@ enum { CUTSCENE_OBJECT = 4, }; +enum { + COLDAMAGE_EFFECT_NONE = 0, + COLDAMAGE_EFFECT_CHANGE_MODEL = 1, + COLDAMAGE_EFFECT_SPLIT_MODEL = 2, + COLDAMAGE_EFFECT_SMASH_COMPLETELY = 3, + COLDAMAGE_EFFECT_CHANGE_THEN_SMASH = 4, + COLDAMAGE_EFFECT_SMASH_CARDBOX_COMPLETELY = 50, + COLDAMAGE_EFFECT_SMASH_WOODENBOX_COMPLETELY = 60, + COLDAMAGE_EFFECT_SMASH_TRAFFICCONE_COMPLETELY = 70, + COLDAMAGE_EFFECT_SMASH_BARPOST_COMPLETELY = 80, +}; + enum { COLLRESPONSE_NONE, COLLRESPONSE_CHANGE_MODEL, @@ -41,8 +53,8 @@ public: int8 bHasBeenDamaged : 1; int8 bUseVehicleColours : 1; int8 m_obj_flag80 : 1; - int8 field_172; // car for a bonus pickup? - int8 field_173; + int8 m_nBonusValue; + int8 field_173; float m_fCollisionDamageMultiplier; uint8 m_nCollisionDamageEffect; uint8 m_nSpecialCollisionResponseCases; @@ -74,7 +86,7 @@ public: ~CObject(void); void ProcessControl(void); - void Teleport(CVector); + void Teleport(CVector vecPos); void Render(void); bool SetupLighting(void); void RemoveLighting(bool reset); @@ -84,6 +96,8 @@ public: void Init(void); bool CanBeDeleted(void); - static void DeleteAllTempObjectInArea(CVector, float); + static void DeleteAllMissionObjects(); + static void DeleteAllTempObjects(); + static void DeleteAllTempObjectInArea(CVector point, float fRadius); }; static_assert(sizeof(CObject) == 0x198, "CObject: error"); diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 2cd942f9..687c9906 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -15027,7 +15027,7 @@ CPed::ProcessBuoyancy(void) #endif if (mod_Buoyancy.ProcessBuoyancy(this, GRAVITY * m_fMass * buoyancyLevel, &buoyancyPoint, &buoyancyImpulse)) { - m_flagD8 = true; + bTouchingWater = true; CEntity *entity; CColPoint point; if (CWorld::ProcessVerticalLine(GetPosition(), GetPosition().z - 3.0f, point, entity, false, true, false, false, false, false, false) @@ -15093,7 +15093,7 @@ CPed::ProcessBuoyancy(void) } else return; } else - m_flagD8 = false; + bTouchingWater = false; if (nGenerateWaterCircles && CTimer::GetTimeInMilliseconds() >= nGenerateWaterCircles) { CVector pos = GetPosition(); diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp index 3bf81066..c4290bd9 100644 --- a/src/peds/Population.cpp +++ b/src/peds/Population.cpp @@ -964,7 +964,7 @@ CPopulation::ConvertToRealObject(CDummyObject *dummy) } else if (obj->m_modelIndex == MI_BUOY) { obj->bIsStatic = false; obj->m_vecMoveSpeed = CVector(0.0f, 0.0f, -0.001f); - obj->m_flagD8 = true; + obj->bTouchingWater = true; obj->AddToMovingList(); } } diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index 1c0d673e..76f06b0e 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -2814,7 +2814,7 @@ CAutomobile::ProcessBuoyancy(void) CVector impulse, point; if(mod_Buoyancy.ProcessBuoyancy(this, m_fBuoyancy, &point, &impulse)){ - m_flagD8 = true; + bTouchingWater = true; ApplyMoveForce(impulse); ApplyTurnForce(impulse, point); @@ -2899,7 +2899,7 @@ CAutomobile::ProcessBuoyancy(void) } }else{ bIsInWater = false; - m_flagD8 = false; + bTouchingWater = false; static RwRGBA splashCol = {155, 155, 185, 196}; static RwRGBA smokeCol = {255, 255, 255, 255}; diff --git a/src/vehicles/Boat.cpp b/src/vehicles/Boat.cpp index 9c7cbb4f..0b3dab3d 100644 --- a/src/vehicles/Boat.cpp +++ b/src/vehicles/Boat.cpp @@ -70,7 +70,7 @@ CBoat::CBoat(int mi, uint8 owner) : CVehicle(owner) unk1 = 0.0f; m_bIsAnchored = true; field_2C4 = -9999.99f; - m_flagD8 = true; + bTouchingWater = true; field_2CC = 0.0f; field_2D0 = 0; m_nNumWakePoints = 0; diff --git a/src/vehicles/Floater.cpp b/src/vehicles/Floater.cpp index 6b8bf755..62d55925 100644 --- a/src/vehicles/Floater.cpp +++ b/src/vehicles/Floater.cpp @@ -26,7 +26,7 @@ cBuoyancy::ProcessBuoyancy(CPhysical *phys, float buoyancy, CVector *point, CVec { m_numSteps = 2.0f; - if(!CWaterLevel::GetWaterLevel(phys->GetPosition(), &m_waterlevel, phys->m_flagD8)) + if(!CWaterLevel::GetWaterLevel(phys->GetPosition(), &m_waterlevel, phys->bTouchingWater)) return false; m_matrix = phys->GetMatrix(); From bb21cff6390bbbbf81fd1a9ed0add69e2a4adc88 Mon Sep 17 00:00:00 2001 From: saml1er Date: Fri, 10 Apr 2020 17:03:02 +0500 Subject: [PATCH 058/112] Fix Object.h and Object.cpp indentation --- src/objects/Object.cpp | 456 ++++++++++++++++++++--------------------- src/objects/Object.h | 14 +- 2 files changed, 235 insertions(+), 235 deletions(-) diff --git a/src/objects/Object.cpp b/src/objects/Object.cpp index 9d08dc72..1ff71b23 100644 --- a/src/objects/Object.cpp +++ b/src/objects/Object.cpp @@ -84,37 +84,37 @@ CObject::~CObject(void) void CObject::ProcessControl(void) { - CVector point, impulse; - if (m_nCollisionDamageEffect) - ObjectDamage(m_fDamageImpulse); - CPhysical::ProcessControl(); - if (mod_Buoyancy.ProcessBuoyancy(this, m_fBuoyancy, &point, &impulse)) { - bIsInWater = true; - bIsStatic = false; - ApplyMoveForce(impulse); - ApplyTurnForce(impulse, point); - float fTimeStep = Pow(0.97f, CTimer::GetTimeStep()); - m_vecMoveSpeed *= fTimeStep; - m_vecTurnSpeed *= fTimeStep; - } - if ((MI_EXPLODINGBARREL == m_modelIndex || MI_PETROLPUMP == m_modelIndex) && bHasBeenDamaged && bIsVisible - && CGeneral::GetRandomNumberInRange(0, 31) == 10) { - bExplosionProof = true; - bIsVisible = false; - bUsesCollision = false; - bAffectedByGravity = false; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - } + CVector point, impulse; + if (m_nCollisionDamageEffect) + ObjectDamage(m_fDamageImpulse); + CPhysical::ProcessControl(); + if (mod_Buoyancy.ProcessBuoyancy(this, m_fBuoyancy, &point, &impulse)) { + bIsInWater = true; + bIsStatic = false; + ApplyMoveForce(impulse); + ApplyTurnForce(impulse, point); + float fTimeStep = Pow(0.97f, CTimer::GetTimeStep()); + m_vecMoveSpeed *= fTimeStep; + m_vecTurnSpeed *= fTimeStep; + } + if ((MI_EXPLODINGBARREL == m_modelIndex || MI_PETROLPUMP == m_modelIndex) && bHasBeenDamaged && bIsVisible + && CGeneral::GetRandomNumberInRange(0, 31) == 10) { + bExplosionProof = true; + bIsVisible = false; + bUsesCollision = false; + bAffectedByGravity = false; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + } } void CObject::Teleport(CVector vecPos) { - CWorld::Remove(this); - m_matrix.GetPosition() = vecPos; - m_matrix.UpdateRW(); - UpdateRwFrame(); - CWorld::Add(this); + CWorld::Remove(this); + m_matrix.GetPosition() = vecPos; + m_matrix.UpdateRW(); + UpdateRwFrame(); + CWorld::Add(this); } void @@ -156,7 +156,7 @@ void CObject::ObjectDamage(float amount) { if (m_nCollisionDamageEffect && bUsesCollision) { - static int8_t nFrameGen = 0; + static int8 nFrameGen = 0; bool bBodyCastDamageEffect = false; if (m_modelIndex == MI_BODYCAST){ if (amount > 50.0f) @@ -167,141 +167,141 @@ CObject::ObjectDamage(float amount) bBodyCastDamageEffect = true; amount = 0.0f; } - if ((amount * m_fCollisionDamageMultiplier > 150.0f || bBodyCastDamageEffect) && m_nCollisionDamageEffect) { - if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_CHANGE_MODEL) { - bRenderDamaged = true; - return; - } - if (m_nCollisionDamageEffect != COLDAMAGE_EFFECT_SPLIT_MODEL) { - if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_SMASH_COMPLETELY) { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - return; - } - if (m_nCollisionDamageEffect != COLDAMAGE_EFFECT_CHANGE_THEN_SMASH) { - uint8 audioId = 0; - const CVector& vecPos = m_matrix.GetPosition(); - const float fDirectionZ = 0.0002f * amount; - switch (m_nCollisionDamageEffect) - { - case COLDAMAGE_EFFECT_SMASH_CARDBOX_COMPLETELY: { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - const RwRGBA color = {96, 48, 0, 255}; - for (int32_t i = 0; i < 25; i++) { - CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); - ++nFrameGen; - int32 currentFrame = nFrameGen & 3; - float fRandom = CGeneral::GetRandomNumberInRange(0.01f, 1.0f); - RwRGBA randomColor = {color.red * fRandom, color.green * fRandom , color.blue, color.alpha}; - float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); - int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); - CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); - } - audioId = _SCRSOUND_CARDBOARD_BOX_SMASH; - break; - } - case COLDAMAGE_EFFECT_SMASH_WOODENBOX_COMPLETELY: { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - const RwRGBA color = {128, 128, 128, 255}; - for (int32_t i = 0; i < 45; i++) { - CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); - ++nFrameGen; - int32 currentFrame = nFrameGen & 3; - float fRandom = CGeneral::GetRandomNumberInRange(0.5f, 0.5f); - RwRGBA randomColor = {color.red * fRandom, color.green * fRandom , color.blue * fRandom, color.alpha}; - float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); - int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); - CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); - } - audioId = _SCRSOUND_WOODEN_BOX_SMASH; - break; - } - case COLDAMAGE_EFFECT_SMASH_TRAFFICCONE_COMPLETELY: { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - const RwRGBA color1 = {200, 0, 0, 255}; - const RwRGBA color2 = {200, 200, 200, 255}; - for (int32_t i = 0; i < 10; i++) { - CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); - ++nFrameGen; - int32 currentFrame = nFrameGen & 3; - RwRGBA color = color2; - if (nFrameGen & 1) - color = color1; - float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); - int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); - CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); - } - audioId = _SCRSOUND_TYRE_BUMP; - break; - } - case COLDAMAGE_EFFECT_SMASH_BARPOST_COMPLETELY: { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - const RwRGBA color1 = {200, 0, 0, 255}; - const RwRGBA color2 = {200, 200, 200, 255}; - for (int32_t i = 0; i < 32; i++) { - CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); - ++nFrameGen; - int32 currentFrame = nFrameGen & 3; - RwRGBA color = color2; - if (nFrameGen & 1) - color = color1; - float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); - int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); - CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); - } - audioId = _SCRSOUND_COL_CAR; - break; - } - default: - return; - } - PlayOneShotScriptObject(audioId, vecPos); - return; - } - if (!bRenderDamaged) { - bRenderDamaged = true; - } else { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - } - } - } + if ((amount * m_fCollisionDamageMultiplier > 150.0f || bBodyCastDamageEffect) && m_nCollisionDamageEffect) { + if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_CHANGE_MODEL) { + bRenderDamaged = true; + return; + } + if (m_nCollisionDamageEffect != COLDAMAGE_EFFECT_SPLIT_MODEL) { + if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_SMASH_COMPLETELY) { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + return; + } + if (m_nCollisionDamageEffect != COLDAMAGE_EFFECT_CHANGE_THEN_SMASH) { + uint8 audioId = 0; + const CVector& vecPos = m_matrix.GetPosition(); + const float fDirectionZ = 0.0002f * amount; + switch (m_nCollisionDamageEffect) + { + case COLDAMAGE_EFFECT_SMASH_CARDBOX_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color = {96, 48, 0, 255}; + for (int32 i = 0; i < 25; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + float fRandom = CGeneral::GetRandomNumberInRange(0.01f, 1.0f); + RwRGBA randomColor = {color.red * fRandom, color.green * fRandom , color.blue, color.alpha}; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); + } + audioId = _SCRSOUND_CARDBOARD_BOX_SMASH; + break; + } + case COLDAMAGE_EFFECT_SMASH_WOODENBOX_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color = {128, 128, 128, 255}; + for (int32 i = 0; i < 45; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + float fRandom = CGeneral::GetRandomNumberInRange(0.5f, 0.5f); + RwRGBA randomColor = {color.red * fRandom, color.green * fRandom , color.blue * fRandom, color.alpha}; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); + } + audioId = _SCRSOUND_WOODEN_BOX_SMASH; + break; + } + case COLDAMAGE_EFFECT_SMASH_TRAFFICCONE_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color1 = {200, 0, 0, 255}; + const RwRGBA color2 = {200, 200, 200, 255}; + for (int32 i = 0; i < 10; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + RwRGBA color = color2; + if (nFrameGen & 1) + color = color1; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); + } + audioId = _SCRSOUND_TYRE_BUMP; + break; + } + case COLDAMAGE_EFFECT_SMASH_BARPOST_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color1 = {200, 0, 0, 255}; + const RwRGBA color2 = {200, 200, 200, 255}; + for (int32 i = 0; i < 32; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + RwRGBA color = color2; + if (nFrameGen & 1) + color = color1; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); + } + audioId = _SCRSOUND_COL_CAR; + break; + } + default: + return; + } + PlayOneShotScriptObject(audioId, vecPos); + return; + } + if (!bRenderDamaged) { + bRenderDamaged = true; + } else { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + } + } + } } } @@ -315,34 +315,34 @@ CObject::RefModelInfo(int32 modelId) void CObject::Init(void) { - m_type = ENTITY_TYPE_OBJECT;; - CObjectData::SetObjectData(m_modelIndex, *this); - m_nEndOfLifeTime = 0; - ObjectCreatedBy = GAME_OBJECT; - bIsStatic = true; - bIsPickup = false; - m_obj_flag2 = false; - bOutOfStock = false; - bGlassCracked = false; - bGlassBroken = false; - bHasBeenDamaged = false; - bUseVehicleColours = false; - m_nRefModelIndex = -1; - m_colour1 = 0; - m_colour2 = 0; - m_nBonusValue = 0; - m_pCollidingEntity = nil; - CColPoint point; - CEntity* outEntity = nil; - const CVector& vecPos = m_matrix.GetPosition(); - if (CWorld::ProcessVerticalLine(vecPos, vecPos.z - 10.0f, point, outEntity, true, false, false, false, false, false, nil)) - m_pCurSurface = outEntity; - else - m_pCurSurface = nil; - if (m_modelIndex == MI_BODYCAST) - nBodyCastHealth = 1000; - else if (m_modelIndex == MI_BUOY) - bTouchingWater = true; + m_type = ENTITY_TYPE_OBJECT;; + CObjectData::SetObjectData(m_modelIndex, *this); + m_nEndOfLifeTime = 0; + ObjectCreatedBy = GAME_OBJECT; + bIsStatic = true; + bIsPickup = false; + m_obj_flag2 = false; + bOutOfStock = false; + bGlassCracked = false; + bGlassBroken = false; + bHasBeenDamaged = false; + bUseVehicleColours = false; + m_nRefModelIndex = -1; + m_colour1 = 0; + m_colour2 = 0; + m_nBonusValue = 0; + m_pCollidingEntity = nil; + CColPoint point; + CEntity* outEntity = nil; + const CVector& vecPos = m_matrix.GetPosition(); + if (CWorld::ProcessVerticalLine(vecPos, vecPos.z - 10.0f, point, outEntity, true, false, false, false, false, false, nil)) + m_pCurSurface = outEntity; + else + m_pCurSurface = nil; + if (m_modelIndex == MI_BODYCAST) + nBodyCastHealth = 1000; + else if (m_modelIndex == MI_BUOY) + bTouchingWater = true; } bool @@ -365,40 +365,40 @@ CObject::CanBeDeleted(void) void CObject::DeleteAllMissionObjects() { - CObjectPool* objectPool = CPools::GetObjectPool(); - for (int32_t i = 0; i < objectPool->GetSize(); i++) { - CObject* pObject = objectPool->GetSlot(i); - if (pObject && pObject->ObjectCreatedBy == MISSION_OBJECT) { - CWorld::Remove(pObject); - delete pObject; - } - } + CObjectPool* objectPool = CPools::GetObjectPool(); + for (int32 i = 0; i < objectPool->GetSize(); i++) { + CObject* pObject = objectPool->GetSlot(i); + if (pObject && pObject->ObjectCreatedBy == MISSION_OBJECT) { + CWorld::Remove(pObject); + delete pObject; + } + } } void CObject::DeleteAllTempObjects() { - CObjectPool* objectPool = CPools::GetObjectPool(); - for (int32_t i = 0; i < objectPool->GetSize(); i++) { - CObject* pObject = objectPool->GetSlot(i); - if (pObject && pObject->ObjectCreatedBy == TEMP_OBJECT) { - CWorld::Remove(pObject); - delete pObject; - } - } + CObjectPool* objectPool = CPools::GetObjectPool(); + for (int32 i = 0; i < objectPool->GetSize(); i++) { + CObject* pObject = objectPool->GetSlot(i); + if (pObject && pObject->ObjectCreatedBy == TEMP_OBJECT) { + CWorld::Remove(pObject); + delete pObject; + } + } } void CObject::DeleteAllTempObjectInArea(CVector point, float fRadius) { - CObjectPool *objectPool = CPools::GetObjectPool(); - for (int32_t i = 0; i < objectPool->GetSize(); i++) { - CObject *pObject = objectPool->GetSlot(i); - if (pObject && pObject->ObjectCreatedBy == TEMP_OBJECT && fRadius * fRadius > pObject->GetPosition().MagnitudeSqr()) { - CWorld::Remove(pObject); - delete pObject; - } - } + CObjectPool *objectPool = CPools::GetObjectPool(); + for (int32 i = 0; i < objectPool->GetSize(); i++) { + CObject *pObject = objectPool->GetSlot(i); + if (pObject && pObject->ObjectCreatedBy == TEMP_OBJECT && fRadius * fRadius > pObject->GetPosition().MagnitudeSqr()) { + CWorld::Remove(pObject); + delete pObject; + } + } } #include @@ -411,9 +411,9 @@ public: CObject *ctor(CDummyObject *dummy) { return ::new (this) CObject(dummy); } void dtor(void) { CObject::~CObject(); } void Render_(void) { CObject::Render(); } - void ProcessControl_(void) { CObject::ProcessControl(); } - bool SetupLighting_(void) { return CObject::SetupLighting(); } - void RemoveLighting_(bool reset) { CObject::RemoveLighting(reset); } + void ProcessControl_(void) { CObject::ProcessControl(); } + bool SetupLighting_(void) { return CObject::SetupLighting(); } + void RemoveLighting_(bool reset) { CObject::RemoveLighting(reset); } }; STARTPATCHES @@ -421,16 +421,16 @@ STARTPATCHES InjectHook(0x4BACE0, (CObject* (CObject::*)(int32, bool)) &CObject_::ctor, PATCH_JUMP); InjectHook(0x4BAD50, (CObject* (CObject::*)(CDummyObject*)) &CObject_::ctor, PATCH_JUMP); InjectHook(0x4BAE00, &CObject_::dtor, PATCH_JUMP); - InjectHook(0x4BB040, &CObject_::ProcessControl_, PATCH_JUMP); - InjectHook(0x4BBDA0, &CObject::Teleport, PATCH_JUMP); + InjectHook(0x4BB040, &CObject_::ProcessControl_, PATCH_JUMP); + InjectHook(0x4BBDA0, &CObject::Teleport, PATCH_JUMP); InjectHook(0x4BB1E0, &CObject_::Render_, PATCH_JUMP); - InjectHook(0x4A7C90, &CObject_::SetupLighting_, PATCH_JUMP); - InjectHook(0x4A7CD0, &CObject_::RemoveLighting_, PATCH_JUMP); - InjectHook(0x4BB240, &CObject::ObjectDamage, PATCH_JUMP); - InjectHook(0x4BBD80, &CObject::RefModelInfo, PATCH_JUMP); - InjectHook(0x4BAEC0, &CObject::Init, PATCH_JUMP); - InjectHook(0x4BB010, &CObject::CanBeDeleted, PATCH_JUMP); - InjectHook(0x4BBE60, &CObject::DeleteAllMissionObjects, PATCH_JUMP); - InjectHook(0x4BBDF0, &CObject::DeleteAllTempObjects, PATCH_JUMP); - InjectHook(0x4BBED0, &CObject::DeleteAllTempObjectInArea, PATCH_JUMP); + InjectHook(0x4A7C90, &CObject_::SetupLighting_, PATCH_JUMP); + InjectHook(0x4A7CD0, &CObject_::RemoveLighting_, PATCH_JUMP); + InjectHook(0x4BB240, &CObject::ObjectDamage, PATCH_JUMP); + InjectHook(0x4BBD80, &CObject::RefModelInfo, PATCH_JUMP); + InjectHook(0x4BAEC0, &CObject::Init, PATCH_JUMP); + InjectHook(0x4BB010, &CObject::CanBeDeleted, PATCH_JUMP); + InjectHook(0x4BBE60, &CObject::DeleteAllMissionObjects, PATCH_JUMP); + InjectHook(0x4BBDF0, &CObject::DeleteAllTempObjects, PATCH_JUMP); + InjectHook(0x4BBED0, &CObject::DeleteAllTempObjectInArea, PATCH_JUMP); ENDPATCHES diff --git a/src/objects/Object.h b/src/objects/Object.h index 86fbe119..d51c9f61 100644 --- a/src/objects/Object.h +++ b/src/objects/Object.h @@ -59,15 +59,15 @@ public: uint8 m_nCollisionDamageEffect; uint8 m_nSpecialCollisionResponseCases; bool m_bCameraToAvoidThisObject; - int8 field_17B; - int8 field_17C; - int8 field_17D; - int8 field_17E; - int8 field_17F; + int8 field_17B; + int8 field_17C; + int8 field_17D; + int8 field_17E; + int8 field_17F; uint32 m_nEndOfLifeTime; int16 m_nRefModelIndex; - int8 field_186; - int8 field_187; + int8 field_186; + int8 field_187; CEntity *m_pCurSurface; CEntity *m_pCollidingEntity; int8 m_colour1, m_colour2; From 3a4442eca437863a79cebe70f4bd6ba73cc3a64d Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 10 Apr 2020 16:14:05 +0300 Subject: [PATCH 059/112] disabling the code that freezes gang members --- src/peds/Population.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp index 3bf81066..dbfd40c6 100644 --- a/src/peds/Population.cpp +++ b/src/peds/Population.cpp @@ -704,12 +704,15 @@ CPopulation::AddToPopulation(float minDist, float maxDist, float minDistOffScree if (i != 0) { // Gang member newPed->SetLeader(gangLeader); +#ifndef FIX_BUGS + // seems to be a miami leftover (this code is not on PS2) but gang peds end up just being frozen newPed->m_nPedState = PED_UNKNOWN; gangLeader->m_nPedState = PED_UNKNOWN; newPed->m_fRotationCur = CGeneral::GetRadianAngleBetweenPoints( gangLeader->GetPosition().x, gangLeader->GetPosition().y, newPed->GetPosition().x, newPed->GetPosition().y); newPed->m_fRotationDest = newPed->m_fRotationCur; +#endif } else { gangLeader = newPed; } From 5544325acb108da13a3d858b38c2096f500d0add Mon Sep 17 00:00:00 2001 From: saml1er Date: Fri, 10 Apr 2020 19:32:42 +0500 Subject: [PATCH 060/112] Refactor CObject::ObjectDamage --- src/objects/Object.cpp | 288 ++++++++++++++++++++--------------------- src/objects/Object.h | 1 + 2 files changed, 144 insertions(+), 145 deletions(-) diff --git a/src/objects/Object.cpp b/src/objects/Object.cpp index 1ff71b23..7eb56a1c 100644 --- a/src/objects/Object.cpp +++ b/src/objects/Object.cpp @@ -27,7 +27,7 @@ CObject::CObject(void) m_nCollisionDamageEffect = 0; m_nSpecialCollisionResponseCases = COLLRESPONSE_NONE; m_bCameraToAvoidThisObject = false; - ObjectCreatedBy = 0; + ObjectCreatedBy = UNKNOWN_OBJECT; m_nEndOfLifeTime = 0; // m_nRefModelIndex = -1; // duplicate // bUseVehicleColours = false; // duplicate @@ -97,7 +97,7 @@ CObject::ProcessControl(void) m_vecMoveSpeed *= fTimeStep; m_vecTurnSpeed *= fTimeStep; } - if ((MI_EXPLODINGBARREL == m_modelIndex || MI_PETROLPUMP == m_modelIndex) && bHasBeenDamaged && bIsVisible + if ((m_modelIndex == MI_EXPLODINGBARREL || m_modelIndex == MI_PETROLPUMP) && bHasBeenDamaged && bIsVisible && CGeneral::GetRandomNumberInRange(0, 31) == 10) { bExplosionProof = true; bIsVisible = false; @@ -155,152 +155,150 @@ CObject::RemoveLighting(bool reset) void CObject::ObjectDamage(float amount) { - if (m_nCollisionDamageEffect && bUsesCollision) { - static int8 nFrameGen = 0; - bool bBodyCastDamageEffect = false; - if (m_modelIndex == MI_BODYCAST){ - if (amount > 50.0f) - nBodyCastHealth = static_cast(nBodyCastHealth - 0.5f * amount); - if (nBodyCastHealth < 0) - nBodyCastHealth = 0; - if (nBodyCastHealth < 200) - bBodyCastDamageEffect = true; - amount = 0.0f; + if (!m_nCollisionDamageEffect || !bUsesCollision) + return; + static int8 nFrameGen = 0; + bool bBodyCastDamageEffect = false; + if (m_modelIndex == MI_BODYCAST){ + if (amount > 50.0f) + nBodyCastHealth = int16(nBodyCastHealth - 0.5f * amount); + if (nBodyCastHealth < 0) + nBodyCastHealth = 0; + if (nBodyCastHealth < 200) + bBodyCastDamageEffect = true; + amount = 0.0f; + } + if ((amount * m_fCollisionDamageMultiplier > 150.0f || bBodyCastDamageEffect) && m_nCollisionDamageEffect) { + if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_CHANGE_MODEL) { + bRenderDamaged = true; + return; } - if ((amount * m_fCollisionDamageMultiplier > 150.0f || bBodyCastDamageEffect) && m_nCollisionDamageEffect) { - if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_CHANGE_MODEL) { - bRenderDamaged = true; + if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_SPLIT_MODEL) + return; + if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_SMASH_COMPLETELY) { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + return; + } + if (m_nCollisionDamageEffect != COLDAMAGE_EFFECT_CHANGE_THEN_SMASH) { + const CVector& vecPos = m_matrix.GetPosition(); + const float fDirectionZ = 0.0002f * amount; + switch (m_nCollisionDamageEffect) + { + case COLDAMAGE_EFFECT_SMASH_CARDBOX_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color = {96, 48, 0, 255}; + for (int32 i = 0; i < 25; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + float fRandom = CGeneral::GetRandomNumberInRange(0.01f, 1.0f); + RwRGBA randomColor = {color.red * fRandom, color.green * fRandom , color.blue, color.alpha}; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); + } + PlayOneShotScriptObject(_SCRSOUND_CARDBOARD_BOX_SMASH, vecPos); + break; + } + case COLDAMAGE_EFFECT_SMASH_WOODENBOX_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color = {128, 128, 128, 255}; + for (int32 i = 0; i < 45; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + float fRandom = CGeneral::GetRandomNumberInRange(0.5f, 0.5f); + RwRGBA randomColor = {color.red * fRandom, color.green * fRandom , color.blue * fRandom, color.alpha}; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); + } + PlayOneShotScriptObject(_SCRSOUND_WOODEN_BOX_SMASH, vecPos); + break; + } + case COLDAMAGE_EFFECT_SMASH_TRAFFICCONE_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color1 = {200, 0, 0, 255}; + const RwRGBA color2 = {200, 200, 200, 255}; + for (int32 i = 0; i < 10; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + RwRGBA color = color2; + if (nFrameGen & 1) + color = color1; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); + } + PlayOneShotScriptObject(_SCRSOUND_TYRE_BUMP, vecPos); + break; + } + case COLDAMAGE_EFFECT_SMASH_BARPOST_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color1 = {200, 0, 0, 255}; + const RwRGBA color2 = {200, 200, 200, 255}; + for (int32 i = 0; i < 32; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + RwRGBA color = color2; + if (nFrameGen & 1) + color = color1; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); + } + PlayOneShotScriptObject(_SCRSOUND_COL_CAR, vecPos); + break; + } + default: return; } - if (m_nCollisionDamageEffect != COLDAMAGE_EFFECT_SPLIT_MODEL) { - if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_SMASH_COMPLETELY) { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - return; - } - if (m_nCollisionDamageEffect != COLDAMAGE_EFFECT_CHANGE_THEN_SMASH) { - uint8 audioId = 0; - const CVector& vecPos = m_matrix.GetPosition(); - const float fDirectionZ = 0.0002f * amount; - switch (m_nCollisionDamageEffect) - { - case COLDAMAGE_EFFECT_SMASH_CARDBOX_COMPLETELY: { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - const RwRGBA color = {96, 48, 0, 255}; - for (int32 i = 0; i < 25; i++) { - CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); - ++nFrameGen; - int32 currentFrame = nFrameGen & 3; - float fRandom = CGeneral::GetRandomNumberInRange(0.01f, 1.0f); - RwRGBA randomColor = {color.red * fRandom, color.green * fRandom , color.blue, color.alpha}; - float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); - int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); - CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); - } - audioId = _SCRSOUND_CARDBOARD_BOX_SMASH; - break; - } - case COLDAMAGE_EFFECT_SMASH_WOODENBOX_COMPLETELY: { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - const RwRGBA color = {128, 128, 128, 255}; - for (int32 i = 0; i < 45; i++) { - CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); - ++nFrameGen; - int32 currentFrame = nFrameGen & 3; - float fRandom = CGeneral::GetRandomNumberInRange(0.5f, 0.5f); - RwRGBA randomColor = {color.red * fRandom, color.green * fRandom , color.blue * fRandom, color.alpha}; - float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); - int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); - CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); - } - audioId = _SCRSOUND_WOODEN_BOX_SMASH; - break; - } - case COLDAMAGE_EFFECT_SMASH_TRAFFICCONE_COMPLETELY: { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - const RwRGBA color1 = {200, 0, 0, 255}; - const RwRGBA color2 = {200, 200, 200, 255}; - for (int32 i = 0; i < 10; i++) { - CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); - ++nFrameGen; - int32 currentFrame = nFrameGen & 3; - RwRGBA color = color2; - if (nFrameGen & 1) - color = color1; - float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); - int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); - CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); - } - audioId = _SCRSOUND_TYRE_BUMP; - break; - } - case COLDAMAGE_EFFECT_SMASH_BARPOST_COMPLETELY: { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - const RwRGBA color1 = {200, 0, 0, 255}; - const RwRGBA color2 = {200, 200, 200, 255}; - for (int32 i = 0; i < 32; i++) { - CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); - ++nFrameGen; - int32 currentFrame = nFrameGen & 3; - RwRGBA color = color2; - if (nFrameGen & 1) - color = color1; - float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); - int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); - CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); - } - audioId = _SCRSOUND_COL_CAR; - break; - } - default: - return; - } - PlayOneShotScriptObject(audioId, vecPos); - return; - } - if (!bRenderDamaged) { - bRenderDamaged = true; - } else { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - } - } + return; + } + if (!bRenderDamaged) { + bRenderDamaged = true; + } else { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); } } } diff --git a/src/objects/Object.h b/src/objects/Object.h index d51c9f61..6d04c78a 100644 --- a/src/objects/Object.h +++ b/src/objects/Object.h @@ -3,6 +3,7 @@ #include "Physical.h" enum { + UNKNOWN_OBJECT = 0, GAME_OBJECT = 1, MISSION_OBJECT = 2, TEMP_OBJECT = 3, From c2b00d7ad9c61a4e9e0ce99f944c57358877fc1a Mon Sep 17 00:00:00 2001 From: saml1er Date: Fri, 10 Apr 2020 19:37:09 +0500 Subject: [PATCH 061/112] Fix cast in CObject::ObjectDamage --- src/objects/Object.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/objects/Object.cpp b/src/objects/Object.cpp index 7eb56a1c..5fe3b4b1 100644 --- a/src/objects/Object.cpp +++ b/src/objects/Object.cpp @@ -161,7 +161,7 @@ CObject::ObjectDamage(float amount) bool bBodyCastDamageEffect = false; if (m_modelIndex == MI_BODYCAST){ if (amount > 50.0f) - nBodyCastHealth = int16(nBodyCastHealth - 0.5f * amount); + nBodyCastHealth = (int16)(nBodyCastHealth - 0.5f * amount); if (nBodyCastHealth < 0) nBodyCastHealth = 0; if (nBodyCastHealth < 200) From c5d61392ead394a3d6a1e2832c7d9f0ccf951ad3 Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 10 Apr 2020 18:36:39 +0200 Subject: [PATCH 062/112] implemented CTrafficLights --- README.md | 1 - src/control/AutoPilot.cpp | 16 +- src/control/CarCtrl.cpp | 144 +++++++-------- src/control/PathFind.cpp | 167 +++++++++++++++-- src/control/PathFind.h | 12 +- src/control/TrafficLights.cpp | 334 ++++++++++++++++++++++++++++++++-- src/control/TrafficLights.h | 7 + src/core/main.cpp | 7 +- src/core/re3.cpp | 3 + src/render/Timecycle.h | 2 + 10 files changed, 577 insertions(+), 116 deletions(-) diff --git a/README.md b/README.md index 9237e8e3..ed4116c4 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,6 @@ CPools - save/loading CRecordDataForChase CRecordDataForGame CRoadBlocks -CTrafficLights CWeapon CWorld GenericLoad diff --git a/src/control/AutoPilot.cpp b/src/control/AutoPilot.cpp index 70099291..b5bca21d 100644 --- a/src/control/AutoPilot.cpp +++ b/src/control/AutoPilot.cpp @@ -12,17 +12,17 @@ void CAutoPilot::ModifySpeed(float speed) float positionBetweenNodes = (float)(CTimer::GetTimeInMilliseconds() - m_nTimeEnteredCurve) / m_nTimeToSpendOnCurrentCurve; CCarPathLink* pCurrentLink = &ThePaths.m_carPathLinks[m_nCurrentPathNodeInfo]; CCarPathLink* pNextLink = &ThePaths.m_carPathLinks[m_nNextPathNodeInfo]; - float currentPathLinkForwardX = m_nCurrentDirection * ThePaths.m_carPathLinks[m_nCurrentPathNodeInfo].dirX; - float currentPathLinkForwardY = m_nCurrentDirection * ThePaths.m_carPathLinks[m_nCurrentPathNodeInfo].dirY; - float nextPathLinkForwardX = m_nNextDirection * ThePaths.m_carPathLinks[m_nNextPathNodeInfo].dirX; - float nextPathLinkForwardY = m_nNextDirection * ThePaths.m_carPathLinks[m_nNextPathNodeInfo].dirY; + float currentPathLinkForwardX = m_nCurrentDirection * ThePaths.m_carPathLinks[m_nCurrentPathNodeInfo].dir.x; + float currentPathLinkForwardY = m_nCurrentDirection * ThePaths.m_carPathLinks[m_nCurrentPathNodeInfo].dir.y; + float nextPathLinkForwardX = m_nNextDirection * ThePaths.m_carPathLinks[m_nNextPathNodeInfo].dir.x; + float nextPathLinkForwardY = m_nNextDirection * ThePaths.m_carPathLinks[m_nNextPathNodeInfo].dir.y; CVector positionOnCurrentLinkIncludingLane( - pCurrentLink->posX + ((m_nCurrentLane + 0.5f) * LANE_WIDTH) * currentPathLinkForwardY, - pCurrentLink->posY - ((m_nCurrentLane + 0.5f) * LANE_WIDTH) * currentPathLinkForwardX, + pCurrentLink->pos.x + ((m_nCurrentLane + 0.5f) * LANE_WIDTH) * currentPathLinkForwardY, + pCurrentLink->pos.y - ((m_nCurrentLane + 0.5f) * LANE_WIDTH) * currentPathLinkForwardX, 0.0f); CVector positionOnNextLinkIncludingLane( - pNextLink->posX + ((m_nNextLane + 0.5f) * LANE_WIDTH) * nextPathLinkForwardY, - pNextLink->posY - ((m_nNextLane + 0.5f) * LANE_WIDTH) * nextPathLinkForwardX, + pNextLink->pos.x + ((m_nNextLane + 0.5f) * LANE_WIDTH) * nextPathLinkForwardY, + pNextLink->pos.y - ((m_nNextLane + 0.5f) * LANE_WIDTH) * nextPathLinkForwardX, 0.0f); m_nTimeToSpendOnCurrentCurve = CCurves::CalcSpeedScaleFactor( &positionOnCurrentLinkIncludingLane, diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp index cdcfbba6..264f1f3f 100644 --- a/src/control/CarCtrl.cpp +++ b/src/control/CarCtrl.cpp @@ -393,25 +393,25 @@ CCarCtrl::GenerateOneRandomCar() pCar->GetRight() = CVector(forwardY, -forwardX, 0.0f); pCar->GetUp() = CVector(0.0f, 0.0f, 1.0f); - float currentPathLinkForwardX = pCar->AutoPilot.m_nCurrentDirection * ThePaths.m_carPathLinks[pCar->AutoPilot.m_nCurrentPathNodeInfo].dirX; - float currentPathLinkForwardY = pCar->AutoPilot.m_nCurrentDirection * ThePaths.m_carPathLinks[pCar->AutoPilot.m_nCurrentPathNodeInfo].dirY; - float nextPathLinkForwardX = pCar->AutoPilot.m_nNextDirection * ThePaths.m_carPathLinks[pCar->AutoPilot.m_nNextPathNodeInfo].dirX; - float nextPathLinkForwardY = pCar->AutoPilot.m_nNextDirection * ThePaths.m_carPathLinks[pCar->AutoPilot.m_nNextPathNodeInfo].dirY; + float currentPathLinkForwardX = pCar->AutoPilot.m_nCurrentDirection * ThePaths.m_carPathLinks[pCar->AutoPilot.m_nCurrentPathNodeInfo].dir.x; + float currentPathLinkForwardY = pCar->AutoPilot.m_nCurrentDirection * ThePaths.m_carPathLinks[pCar->AutoPilot.m_nCurrentPathNodeInfo].dir.y; + float nextPathLinkForwardX = pCar->AutoPilot.m_nNextDirection * ThePaths.m_carPathLinks[pCar->AutoPilot.m_nNextPathNodeInfo].dir.x; + float nextPathLinkForwardY = pCar->AutoPilot.m_nNextDirection * ThePaths.m_carPathLinks[pCar->AutoPilot.m_nNextPathNodeInfo].dir.y; CCarPathLink* pCurrentLink = &ThePaths.m_carPathLinks[pCar->AutoPilot.m_nCurrentPathNodeInfo]; CCarPathLink* pNextLink = &ThePaths.m_carPathLinks[pCar->AutoPilot.m_nNextPathNodeInfo]; CVector positionOnCurrentLinkIncludingLane( - pCurrentLink->posX + ((pCar->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardY, - pCurrentLink->posY - ((pCar->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardX, + pCurrentLink->pos.x + ((pCar->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardY, + pCurrentLink->pos.y - ((pCar->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardX, 0.0f); CVector positionOnNextLinkIncludingLane( - pNextLink->posX + ((pCar->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardY, - pNextLink->posY - ((pCar->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardX, + pNextLink->pos.x + ((pCar->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardY, + pNextLink->pos.y - ((pCar->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardX, 0.0f); - float directionCurrentLinkX = pCurrentLink->dirX * pCar->AutoPilot.m_nCurrentDirection; - float directionCurrentLinkY = pCurrentLink->dirY * pCar->AutoPilot.m_nCurrentDirection; - float directionNextLinkX = pNextLink->dirX * pCar->AutoPilot.m_nNextDirection; - float directionNextLinkY = pNextLink->dirY * pCar->AutoPilot.m_nNextDirection; + float directionCurrentLinkX = pCurrentLink->dir.x * pCar->AutoPilot.m_nCurrentDirection; + float directionCurrentLinkY = pCurrentLink->dir.y * pCar->AutoPilot.m_nCurrentDirection; + float directionNextLinkX = pNextLink->dir.x * pCar->AutoPilot.m_nNextDirection; + float directionNextLinkY = pNextLink->dir.y * pCar->AutoPilot.m_nNextDirection; /* We want to make a path between two links that may not have the same forward directions a curve. */ pCar->AutoPilot.m_nTimeToSpendOnCurrentCurve = CCurves::CalcSpeedScaleFactor( &positionOnCurrentLinkIncludingLane, @@ -763,17 +763,17 @@ CCarCtrl::UpdateCarOnRails(CVehicle* pVehicle) return; CCarPathLink* pCurrentLink = &ThePaths.m_carPathLinks[pVehicle->AutoPilot.m_nCurrentPathNodeInfo]; CCarPathLink* pNextLink = &ThePaths.m_carPathLinks[pVehicle->AutoPilot.m_nNextPathNodeInfo]; - float currentPathLinkForwardX = pCurrentLink->dirX * pVehicle->AutoPilot.m_nCurrentDirection; - float currentPathLinkForwardY = pCurrentLink->dirY * pVehicle->AutoPilot.m_nCurrentDirection; - float nextPathLinkForwardX = pNextLink->dirX * pVehicle->AutoPilot.m_nNextDirection; - float nextPathLinkForwardY = pNextLink->dirY * pVehicle->AutoPilot.m_nNextDirection; + float currentPathLinkForwardX = pCurrentLink->dir.x * pVehicle->AutoPilot.m_nCurrentDirection; + float currentPathLinkForwardY = pCurrentLink->dir.y * pVehicle->AutoPilot.m_nCurrentDirection; + float nextPathLinkForwardX = pNextLink->dir.x * pVehicle->AutoPilot.m_nNextDirection; + float nextPathLinkForwardY = pNextLink->dir.y * pVehicle->AutoPilot.m_nNextDirection; CVector positionOnCurrentLinkIncludingLane( - pCurrentLink->posX + ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardY, - pCurrentLink->posY - ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardX, + pCurrentLink->pos.x + ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardY, + pCurrentLink->pos.y - ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardX, 0.0f); CVector positionOnNextLinkIncludingLane( - pNextLink->posX + ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardY, - pNextLink->posY - ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardX, + pNextLink->pos.x + ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardY, + pNextLink->pos.y - ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardX, 0.0f); CVector directionCurrentLink(currentPathLinkForwardX, currentPathLinkForwardY, 0.0f); CVector directionNextLink(nextPathLinkForwardX, nextPathLinkForwardY, 0.0f); @@ -1553,8 +1553,8 @@ void CCarCtrl::PickNextNodeRandomly(CVehicle* pVehicle) pVehicle->AutoPilot.m_nNextDirection = -1; lanesOnNextNode = pNextLink->numRightLanes; } - float currentPathLinkForwardX = pVehicle->AutoPilot.m_nCurrentDirection * pCurLink->dirX; - float nextPathLinkForwardX = pVehicle->AutoPilot.m_nNextDirection * pNextLink->dirX; + float currentPathLinkForwardX = pVehicle->AutoPilot.m_nCurrentDirection * pCurLink->dir.x; + float nextPathLinkForwardX = pVehicle->AutoPilot.m_nNextDirection * pNextLink->dir.x; if (lanesOnNextNode >= 0){ if ((CGeneral::GetRandomNumber() & 0x600) == 0){ /* 25% chance vehicle will try to switch lane */ @@ -1574,17 +1574,17 @@ void CCarCtrl::PickNextNodeRandomly(CVehicle* pVehicle) if (pVehicle->AutoPilot.m_bStayInFastLane) pVehicle->AutoPilot.m_nNextLane = 0; CVector positionOnCurrentLinkIncludingLane( - pCurLink->posX + ((pVehicle->AutoPilot.m_nCurrentLane + pCurLink->OneWayLaneOffset()) * LANE_WIDTH), /* ...what about Y? */ - pCurLink->posY - ((pVehicle->AutoPilot.m_nCurrentLane + pCurLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardX, + pCurLink->pos.x + ((pVehicle->AutoPilot.m_nCurrentLane + pCurLink->OneWayLaneOffset()) * LANE_WIDTH), /* ...what about Y? */ + pCurLink->pos.y - ((pVehicle->AutoPilot.m_nCurrentLane + pCurLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardX, 0.0f); CVector positionOnNextLinkIncludingLane( - pNextLink->posX + ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH), - pNextLink->posY - ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardX, + pNextLink->pos.x + ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH), + pNextLink->pos.y - ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardX, 0.0f); - float directionCurrentLinkX = pCurLink->dirX * pVehicle->AutoPilot.m_nCurrentDirection; - float directionCurrentLinkY = pCurLink->dirY * pVehicle->AutoPilot.m_nCurrentDirection; - float directionNextLinkX = pNextLink->dirX * pVehicle->AutoPilot.m_nNextDirection; - float directionNextLinkY = pNextLink->dirY * pVehicle->AutoPilot.m_nNextDirection; + float directionCurrentLinkX = pCurLink->dir.x * pVehicle->AutoPilot.m_nCurrentDirection; + float directionCurrentLinkY = pCurLink->dir.y * pVehicle->AutoPilot.m_nCurrentDirection; + float directionNextLinkX = pNextLink->dir.x * pVehicle->AutoPilot.m_nNextDirection; + float directionNextLinkY = pNextLink->dir.y * pVehicle->AutoPilot.m_nNextDirection; /* We want to make a path between two links that may not have the same forward directions a curve. */ pVehicle->AutoPilot.m_nTimeToSpendOnCurrentCurve = CCurves::CalcSpeedScaleFactor( &positionOnCurrentLinkIncludingLane, @@ -1725,10 +1725,10 @@ void CCarCtrl::PickNextNodeToChaseCar(CVehicle* pVehicle, float targetX, float t pVehicle->AutoPilot.m_nNextDirection = -1; lanesOnNextNode = pNextLink->numRightLanes; } - float currentPathLinkForwardX = pVehicle->AutoPilot.m_nCurrentDirection * pCurLink->dirX; - float currentPathLinkForwardY = pVehicle->AutoPilot.m_nCurrentDirection * pCurLink->dirY; - float nextPathLinkForwardX = pVehicle->AutoPilot.m_nNextDirection * pNextLink->dirX; - float nextPathLinkForwardY = pVehicle->AutoPilot.m_nNextDirection * pNextLink->dirY; + float currentPathLinkForwardX = pVehicle->AutoPilot.m_nCurrentDirection * pCurLink->dir.x; + float currentPathLinkForwardY = pVehicle->AutoPilot.m_nCurrentDirection * pCurLink->dir.y; + float nextPathLinkForwardX = pVehicle->AutoPilot.m_nNextDirection * pNextLink->dir.x; + float nextPathLinkForwardY = pVehicle->AutoPilot.m_nNextDirection * pNextLink->dir.y; if (lanesOnNextNode >= 0) { CVector2D dist = pNextPathNode->pos - pCurNode->pos; if (dist.MagnitudeSqr() >= SQR(7.0f)){ @@ -1755,17 +1755,17 @@ void CCarCtrl::PickNextNodeToChaseCar(CVehicle* pVehicle, float targetX, float t if (pVehicle->AutoPilot.m_bStayInFastLane) pVehicle->AutoPilot.m_nNextLane = 0; CVector positionOnCurrentLinkIncludingLane( - pCurLink->posX + ((pVehicle->AutoPilot.m_nCurrentLane + pCurLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardY, - pCurLink->posY - ((pVehicle->AutoPilot.m_nCurrentLane + pCurLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardX, + pCurLink->pos.x + ((pVehicle->AutoPilot.m_nCurrentLane + pCurLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardY, + pCurLink->pos.y - ((pVehicle->AutoPilot.m_nCurrentLane + pCurLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardX, 0.0f); CVector positionOnNextLinkIncludingLane( - pNextLink->posX + ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardY, - pNextLink->posY - ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardX, + pNextLink->pos.x + ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardY, + pNextLink->pos.y - ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardX, 0.0f); - float directionCurrentLinkX = pCurLink->dirX * pVehicle->AutoPilot.m_nCurrentDirection; - float directionCurrentLinkY = pCurLink->dirY * pVehicle->AutoPilot.m_nCurrentDirection; - float directionNextLinkX = pNextLink->dirX * pVehicle->AutoPilot.m_nNextDirection; - float directionNextLinkY = pNextLink->dirY * pVehicle->AutoPilot.m_nNextDirection; + float directionCurrentLinkX = pCurLink->dir.x * pVehicle->AutoPilot.m_nCurrentDirection; + float directionCurrentLinkY = pCurLink->dir.y * pVehicle->AutoPilot.m_nCurrentDirection; + float directionNextLinkX = pNextLink->dir.x * pVehicle->AutoPilot.m_nNextDirection; + float directionNextLinkY = pNextLink->dir.y * pVehicle->AutoPilot.m_nNextDirection; /* We want to make a path between two links that may not have the same forward directions a curve. */ pVehicle->AutoPilot.m_nTimeToSpendOnCurrentCurve = CCurves::CalcSpeedScaleFactor( &positionOnCurrentLinkIncludingLane, @@ -1814,10 +1814,10 @@ bool CCarCtrl::PickNextNodeToFollowPath(CVehicle* pVehicle) pVehicle->AutoPilot.m_nNextDirection = -1; lanesOnNextNode = pNextLink->numRightLanes; } - float currentPathLinkForwardX = pVehicle->AutoPilot.m_nCurrentDirection * pCurLink->dirX; - float currentPathLinkForwardY = pVehicle->AutoPilot.m_nCurrentDirection * pCurLink->dirY; - float nextPathLinkForwardX = pVehicle->AutoPilot.m_nNextDirection * pNextLink->dirX; - float nextPathLinkForwardY = pVehicle->AutoPilot.m_nNextDirection * pNextLink->dirY; + float currentPathLinkForwardX = pVehicle->AutoPilot.m_nCurrentDirection * pCurLink->dir.x; + float currentPathLinkForwardY = pVehicle->AutoPilot.m_nCurrentDirection * pCurLink->dir.y; + float nextPathLinkForwardX = pVehicle->AutoPilot.m_nNextDirection * pNextLink->dir.x; + float nextPathLinkForwardY = pVehicle->AutoPilot.m_nNextDirection * pNextLink->dir.y; if (lanesOnNextNode >= 0) { CVector2D dist = pNextPathNode->pos - pCurNode->pos; if (dist.MagnitudeSqr() >= SQR(7.0f) && (CGeneral::GetRandomNumber() & 0x600) == 0) { @@ -1835,17 +1835,17 @@ bool CCarCtrl::PickNextNodeToFollowPath(CVehicle* pVehicle) if (pVehicle->AutoPilot.m_bStayInFastLane) pVehicle->AutoPilot.m_nNextLane = 0; CVector positionOnCurrentLinkIncludingLane( - pCurLink->posX + ((pVehicle->AutoPilot.m_nCurrentLane + pCurLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardY, - pCurLink->posY - ((pVehicle->AutoPilot.m_nCurrentLane + pCurLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardX, + pCurLink->pos.x + ((pVehicle->AutoPilot.m_nCurrentLane + pCurLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardY, + pCurLink->pos.y - ((pVehicle->AutoPilot.m_nCurrentLane + pCurLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForwardX, 0.0f); CVector positionOnNextLinkIncludingLane( - pNextLink->posX + ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardY, - pNextLink->posY - ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardX, + pNextLink->pos.x + ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardY, + pNextLink->pos.y - ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardX, 0.0f); - float directionCurrentLinkX = pCurLink->dirX * pVehicle->AutoPilot.m_nCurrentDirection; - float directionCurrentLinkY = pCurLink->dirY * pVehicle->AutoPilot.m_nCurrentDirection; - float directionNextLinkX = pNextLink->dirX * pVehicle->AutoPilot.m_nNextDirection; - float directionNextLinkY = pNextLink->dirY * pVehicle->AutoPilot.m_nNextDirection; + float directionCurrentLinkX = pCurLink->dir.x * pVehicle->AutoPilot.m_nCurrentDirection; + float directionCurrentLinkY = pCurLink->dir.y * pVehicle->AutoPilot.m_nCurrentDirection; + float directionNextLinkX = pNextLink->dir.x * pVehicle->AutoPilot.m_nNextDirection; + float directionNextLinkY = pNextLink->dir.y * pVehicle->AutoPilot.m_nNextDirection; /* We want to make a path between two links that may not have the same forward directions a curve. */ pVehicle->AutoPilot.m_nTimeToSpendOnCurrentCurve = CCurves::CalcSpeedScaleFactor( &positionOnCurrentLinkIncludingLane, @@ -2192,16 +2192,16 @@ void CCarCtrl::SteerAICarWithPhysicsFollowPath(CVehicle* pVehicle, float* pSwerv forward.Normalise(); CCarPathLink* pCurrentLink = &ThePaths.m_carPathLinks[pVehicle->AutoPilot.m_nCurrentPathNodeInfo]; CCarPathLink* pNextLink = &ThePaths.m_carPathLinks[pVehicle->AutoPilot.m_nNextPathNodeInfo]; - CVector2D currentPathLinkForward(pCurrentLink->dirX * pVehicle->AutoPilot.m_nCurrentDirection, - pCurrentLink->dirY * pVehicle->AutoPilot.m_nCurrentDirection); - float nextPathLinkForwardX = pNextLink->dirX * pVehicle->AutoPilot.m_nNextDirection; - float nextPathLinkForwardY = pNextLink->dirY * pVehicle->AutoPilot.m_nNextDirection; + CVector2D currentPathLinkForward(pCurrentLink->dir.x * pVehicle->AutoPilot.m_nCurrentDirection, + pCurrentLink->dir.y * pVehicle->AutoPilot.m_nCurrentDirection); + float nextPathLinkForwardX = pNextLink->dir.x * pVehicle->AutoPilot.m_nNextDirection; + float nextPathLinkForwardY = pNextLink->dir.y * pVehicle->AutoPilot.m_nNextDirection; CVector2D positionOnCurrentLinkIncludingLane( - pCurrentLink->posX + ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.y, - pCurrentLink->posY - ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.x); + pCurrentLink->pos.x + ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.y, + pCurrentLink->pos.y - ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.x); CVector2D positionOnNextLinkIncludingLane( - pNextLink->posX + ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardY, - pNextLink->posY - ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardX); + pNextLink->pos.x + ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardY, + pNextLink->pos.y - ((pVehicle->AutoPilot.m_nNextLane + pNextLink->OneWayLaneOffset()) * LANE_WIDTH) * nextPathLinkForwardX); CVector2D distanceToNextNode = (CVector2D)pVehicle->GetPosition() - positionOnCurrentLinkIncludingLane; float scalarDistanceToNextNode = distanceToNextNode.Magnitude(); CVector2D distanceBetweenNodes = positionOnNextLinkIncludingLane - positionOnCurrentLinkIncludingLane; @@ -2230,16 +2230,16 @@ void CCarCtrl::SteerAICarWithPhysicsFollowPath(CVehicle* pVehicle, float* pSwerv } pCurrentLink = &ThePaths.m_carPathLinks[pVehicle->AutoPilot.m_nCurrentPathNodeInfo]; scalarDistanceToNextNode = CVector2D( - pCurrentLink->posX + ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.y - pVehicle->GetPosition().x, - pCurrentLink->posY - ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.x - pVehicle->GetPosition().y).Magnitude(); + pCurrentLink->pos.x + ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.y - pVehicle->GetPosition().x, + pCurrentLink->pos.y - ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.x - pVehicle->GetPosition().y).Magnitude(); pNextLink = &ThePaths.m_carPathLinks[pVehicle->AutoPilot.m_nNextPathNodeInfo]; - currentPathLinkForward.x = pCurrentLink->dirX * pVehicle->AutoPilot.m_nCurrentDirection; - currentPathLinkForward.y = pCurrentLink->dirY * pVehicle->AutoPilot.m_nCurrentDirection; - nextPathLinkForwardX = pNextLink->dirX * pVehicle->AutoPilot.m_nNextDirection; - nextPathLinkForwardY = pNextLink->dirY * pVehicle->AutoPilot.m_nNextDirection; + currentPathLinkForward.x = pCurrentLink->dir.x * pVehicle->AutoPilot.m_nCurrentDirection; + currentPathLinkForward.y = pCurrentLink->dir.y * pVehicle->AutoPilot.m_nCurrentDirection; + nextPathLinkForwardX = pNextLink->dir.x * pVehicle->AutoPilot.m_nNextDirection; + nextPathLinkForwardY = pNextLink->dir.y * pVehicle->AutoPilot.m_nNextDirection; } - positionOnCurrentLinkIncludingLane.x = pCurrentLink->posX + ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.y; - positionOnCurrentLinkIncludingLane.y = pCurrentLink->posY - ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.x; + positionOnCurrentLinkIncludingLane.x = pCurrentLink->pos.x + ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.y; + positionOnCurrentLinkIncludingLane.y = pCurrentLink->pos.y - ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.x; CVector2D projectedPosition = positionOnCurrentLinkIncludingLane - currentPathLinkForward * scalarDistanceToNextNode * 0.4f; if (scalarDistanceToNextNode > DISTANCE_TO_NEXT_NODE_TO_CONSIDER_SLOWING_DOWN){ projectedPosition.x = positionOnCurrentLinkIncludingLane.x; @@ -2281,8 +2281,8 @@ void CCarCtrl::SteerAICarWithPhysicsFollowPath(CVehicle* pVehicle, float* pSwerv CCarAI::CarHasReasonToStop(pVehicle); speedStyleMultiplier = 0.0f; } - CVector2D trajectory(pCurrentLink->posX + ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.y, - pCurrentLink->posY - ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.x); + CVector2D trajectory(pCurrentLink->pos.x + ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.y, + pCurrentLink->pos.y - ((pVehicle->AutoPilot.m_nCurrentLane + pCurrentLink->OneWayLaneOffset()) * LANE_WIDTH) * currentPathLinkForward.x); trajectory -= pVehicle->GetPosition(); float speedAngleMultiplier = FindSpeedMultiplier( CGeneral::GetATanOfXY(trajectory.x, trajectory.y) - angleForward, diff --git a/src/control/PathFind.cpp b/src/control/PathFind.cpp index 608a209a..61cd3d4e 100644 --- a/src/control/PathFind.cpp +++ b/src/control/PathFind.cpp @@ -5,8 +5,13 @@ #include "Camera.h" #include "Vehicle.h" #include "World.h" +#include "Lines.h" // for debug #include "PathFind.h" +bool gbShowPedPaths; +bool gbShowCarPaths; +bool gbShowCarPathsLinks; + CPathFind &ThePaths = *(CPathFind*)0x8F6754; WRAPPER bool CPedPath::CalcPedRoute(uint8, CVector, CVector, CVector*, int16*, int16) { EAXJMP(0x42E680); } @@ -466,20 +471,20 @@ CPathFind::PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoFor // IMPROVE: use a goto here // Find existing car path link for(k = 0; k < m_numCarPathLinks; k++){ - if(m_carPathLinks[k].dirX == tempnodes[j].dirX && - m_carPathLinks[k].dirY == tempnodes[j].dirY && - m_carPathLinks[k].posX == tempnodes[j].pos.x && - m_carPathLinks[k].posY == tempnodes[j].pos.y){ + if(m_carPathLinks[k].dir.x == tempnodes[j].dirX && + m_carPathLinks[k].dir.y == tempnodes[j].dirY && + m_carPathLinks[k].pos.x == tempnodes[j].pos.x && + m_carPathLinks[k].pos.y == tempnodes[j].pos.y){ m_carPathConnections[m_numConnections] = k; k = m_numCarPathLinks; } } // k is m_numCarPathLinks+1 if we found one if(k == m_numCarPathLinks){ - m_carPathLinks[m_numCarPathLinks].dirX = tempnodes[j].dirX; - m_carPathLinks[m_numCarPathLinks].dirY = tempnodes[j].dirY; - m_carPathLinks[m_numCarPathLinks].posX = tempnodes[j].pos.x; - m_carPathLinks[m_numCarPathLinks].posY = tempnodes[j].pos.y; + m_carPathLinks[m_numCarPathLinks].dir.x = tempnodes[j].dirX; + m_carPathLinks[m_numCarPathLinks].dir.y = tempnodes[j].dirY; + m_carPathLinks[m_numCarPathLinks].pos.x = tempnodes[j].pos.x; + m_carPathLinks[m_numCarPathLinks].pos.y = tempnodes[j].pos.y; m_carPathLinks[m_numCarPathLinks].pathNodeIndex = i; m_carPathLinks[m_numCarPathLinks].numLeftLanes = tempnodes[j].numLeftLanes; m_carPathLinks[m_numCarPathLinks].numRightLanes = tempnodes[j].numRightLanes; @@ -529,20 +534,20 @@ CPathFind::PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoFor // IMPROVE: use a goto here // Find existing car path link for(k = 0; k < m_numCarPathLinks; k++){ - if(m_carPathLinks[k].dirX == dx && - m_carPathLinks[k].dirY == dy && - m_carPathLinks[k].posX == posx && - m_carPathLinks[k].posY == posy){ + if(m_carPathLinks[k].dir.x == dx && + m_carPathLinks[k].dir.y == dy && + m_carPathLinks[k].pos.x == posx && + m_carPathLinks[k].pos.y == posy){ m_carPathConnections[m_numConnections] = k; k = m_numCarPathLinks; } } // k is m_numCarPathLinks+1 if we found one if(k == m_numCarPathLinks){ - m_carPathLinks[m_numCarPathLinks].dirX = dx; - m_carPathLinks[m_numCarPathLinks].dirY = dy; - m_carPathLinks[m_numCarPathLinks].posX = posx; - m_carPathLinks[m_numCarPathLinks].posY = posy; + m_carPathLinks[m_numCarPathLinks].dir.x = dx; + m_carPathLinks[m_numCarPathLinks].dir.y = dy; + m_carPathLinks[m_numCarPathLinks].pos.x = posx; + m_carPathLinks[m_numCarPathLinks].pos.y = posy; m_carPathLinks[m_numCarPathLinks].pathNodeIndex = i; m_carPathLinks[m_numCarPathLinks].numLeftLanes = -1; m_carPathLinks[m_numCarPathLinks].numRightLanes = -1; @@ -760,8 +765,8 @@ CPathFind::SetLinksBridgeLights(float x1, float x2, float y1, float y2, bool ena { int i; for(i = 0; i < m_numCarPathLinks; i++) - if(x1 < m_carPathLinks[i].posX && m_carPathLinks[i].posX < x2 && - y1 < m_carPathLinks[i].posY && m_carPathLinks[i].posY < y2) + if(x1 < m_carPathLinks[i].pos.x && m_carPathLinks[i].pos.x < x2 && + y1 < m_carPathLinks[i].pos.y && m_carPathLinks[i].pos.y < y2) m_carPathLinks[i].bBridgeLights = enable; } @@ -1444,6 +1449,132 @@ CPathFind::Load(uint8 *buf, uint32 size) m_pathNodes[i].bBetweenLevels = false; } +void +CPathFind::DisplayPathData(void) +{ + // Not the function from mobm_carPathLinksile but my own! + + int i, j, k; + // Draw 50 units around camera + CVector pos = TheCamera.GetPosition(); + const float maxDist = 50.0f; + + // Render car path nodes + if(gbShowCarPaths) + for(i = 0; i < m_numCarPathNodes; i++){ + if((m_pathNodes[i].pos - pos).MagnitudeSqr() > SQR(maxDist)) + continue; + + CVector n1 = m_pathNodes[i].pos; + n1.z += 0.3f; + + // Draw node itself + CLines::RenderLineWithClipping(n1.x, n1.y, n1.z, + n1.x, n1.y, n1.z + 1.0f, + 0xFFFFFFFF, 0xFFFFFFFF); + + for(j = 0; j < m_pathNodes[i].numLinks; j++){ + k = m_connections[m_pathNodes[i].firstLink + j]; + CVector n2 = m_pathNodes[k].pos; + n2.z += 0.3f; + // Draw links to neighbours + CLines::RenderLineWithClipping(n1.x, n1.y, n1.z, + n2.x, n2.y, n2.z, + 0xFFFFFFFF, 0xFFFFFFFF); + } + } + + // Render car path nodes + if(gbShowCarPathsLinks) + for(i = 0; i < m_numCarPathLinks; i++){ + CVector2D n1_2d = m_carPathLinks[i].pos; + if((n1_2d - pos).MagnitudeSqr() > SQR(maxDist)) + continue; + + int ni = m_carPathLinks[i].pathNodeIndex; + CVector pn1 = m_pathNodes[ni].pos; + pn1.z += 0.3f; + CVector n1(n1_2d.x, n1_2d.y, pn1.z); + n1.z += 0.3f; + + // Draw car node itself + CLines::RenderLineWithClipping(n1.x, n1.y, n1.z, + n1.x, n1.y, n1.z + 1.0f, + 0xFFFFFFFF, 0xFFFFFFFF); + CLines::RenderLineWithClipping(n1.x, n1.y, n1.z + 0.5f, + n1.x+m_carPathLinks[i].dir.x, n1.y+m_carPathLinks[i].dir.y, n1.z + 0.5f, + 0xFFFFFFFF, 0xFFFFFFFF); + + // Draw connection to car path node + CLines::RenderLineWithClipping(n1.x, n1.y, n1.z, + pn1.x, pn1.y, pn1.z, + 0xFF0000FF, 0xFFFFFFFF); + + // traffic light type + uint32 col = 0xFF; + if((m_carPathLinks[i].trafficLightType&0x7F) == 1) + col += 0xFF000000; + if((m_carPathLinks[i].trafficLightType&0x7F) == 2) + col += 0x00FF0000; + if(m_carPathLinks[i].trafficLightType & 0x80) + col += 0x0000FF00; + CLines::RenderLineWithClipping(n1.x+0.2f, n1.y, n1.z, + n1.x+0.2f, n1.y, n1.z + 1.0f, + col, col); + + for(j = 0; j < m_pathNodes[ni].numLinks; j++){ + k = m_carPathConnections[m_pathNodes[ni].firstLink + j]; + CVector2D n2_2d = m_carPathLinks[k].pos; + int nk = m_carPathLinks[k].pathNodeIndex; + CVector pn2 = m_pathNodes[nk].pos; + pn2.z += 0.3f; + CVector n2(n2_2d.x, n2_2d.y, pn2.z); + n2.z += 0.3f; + + // Draw links to neighbours + CLines::RenderLineWithClipping(n1.x, n1.y, n1.z, + n2.x, n2.y, n2.z, + 0xFF00FFFF, 0xFF00FFFF); + } + } + + // Render ped path nodes + if(gbShowPedPaths) + for(i = m_numCarPathNodes; i < m_numPathNodes; i++){ + if((m_pathNodes[i].pos - pos).MagnitudeSqr() > SQR(maxDist)) + continue; + + CVector n1 = m_pathNodes[i].pos; + n1.z += 0.3f; + + // Draw node itself + CLines::RenderLineWithClipping(n1.x, n1.y, n1.z, + n1.x, n1.y, n1.z + 1.0f, + 0xFFFFFFFF, 0xFFFFFFFF); + + for(j = 0; j < m_pathNodes[i].numLinks; j++){ + k = m_connections[m_pathNodes[i].firstLink + j]; + CVector n2 = m_pathNodes[k].pos; + n2.z += 0.3f; + // Draw links to neighbours + CLines::RenderLineWithClipping(n1.x, n1.y, n1.z, + n2.x, n2.y, n2.z, + 0xFFFFFFFF, 0xFFFFFFFF); + + // Draw connection flags + CVector mid = (n1+n2)/2.0f; + uint32 col = 0xFF; + if(m_connectionFlags[m_pathNodes[i].firstLink + j].bCrossesRoad) + col += 0x00FF0000; + if(m_connectionFlags[m_pathNodes[i].firstLink + j].bTrafficLight) + col += 0xFF000000; + CLines::RenderLineWithClipping(mid.x, mid.y, mid.z, + mid.x, mid.y, mid.z + 1.0f, + col, col); + } + } +} + STARTPATCHES InjectHook(0x4294A0, &CPathFind::Init, PATCH_JUMP); InjectHook(0x42D580, &CPathFind::AllocatePathFindInfoMem, PATCH_JUMP); diff --git a/src/control/PathFind.h b/src/control/PathFind.h index c51cb7c7..81467cdf 100644 --- a/src/control/PathFind.h +++ b/src/control/PathFind.h @@ -84,10 +84,8 @@ union CConnectionFlags struct CCarPathLink { - float posX; - float posY; - float dirX; - float dirY; + CVector2D pos; + CVector2D dir; int16 pathNodeIndex; int8 numLeftLanes; int8 numRightLanes; @@ -208,7 +206,13 @@ public: bool TestCoorsCloseness(CVector target, uint8 type, CVector start); void Save(uint8 *buf, uint32 *size); void Load(uint8 *buf, uint32 size); + + void DisplayPathData(void); }; static_assert(sizeof(CPathFind) == 0x49bf4, "CPathFind: error"); extern CPathFind &ThePaths; + +extern bool gbShowPedPaths; +extern bool gbShowCarPaths; +extern bool gbShowCarPathsLinks; diff --git a/src/control/TrafficLights.cpp b/src/control/TrafficLights.cpp index 2cd09a03..e4416965 100644 --- a/src/control/TrafficLights.cpp +++ b/src/control/TrafficLights.cpp @@ -1,23 +1,335 @@ #include "common.h" #include "patcher.h" -#include "TrafficLights.h" +#include "General.h" +#include "Camera.h" +#include "World.h" +#include "PathFind.h" #include "Timer.h" +#include "Clock.h" +#include "Weather.h" +#include "Timecycle.h" +#include "Pointlights.h" +#include "Shadows.h" +#include "Coronas.h" +#include "SpecialFX.h" #include "Vehicle.h" +#include "TrafficLights.h" -WRAPPER void CTrafficLights::DisplayActualLight(CEntity *ent) { EAXJMP(0x455800); } -WRAPPER void CTrafficLights::ScanForLightsOnMap(void) { EAXJMP(0x454F40); } -WRAPPER bool CTrafficLights::ShouldCarStopForLight(CVehicle*, bool) { EAXJMP(0x455350); } -WRAPPER bool CTrafficLights::ShouldCarStopForBridge(CVehicle*) { EAXJMP(0x456460); } +// TODO: figure out the meaning of this +enum { SOME_FLAG = 0x80 }; + +void +CTrafficLights::DisplayActualLight(CEntity *ent) +{ + if(ent->GetUp().z < 0.96f || ent->bRenderDamaged) + return; + + int phase; + if(FindTrafficLightType(ent) == 1) + phase = LightForCars1(); + else + phase = LightForCars2(); + + int i; + CBaseModelInfo *mi = CModelInfo::GetModelInfo(ent->GetModelIndex()); + float x = mi->Get2dEffect(0)->pos.x; + float yMin = mi->Get2dEffect(0)->pos.y; + float yMax = mi->Get2dEffect(0)->pos.y; + float zMin = mi->Get2dEffect(0)->pos.z; + float zMax = mi->Get2dEffect(0)->pos.z; + for(i = 1; i < 6; i++){ + assert(mi->Get2dEffect(i)); + yMin = min(yMin, mi->Get2dEffect(i)->pos.y); + yMax = min(yMax, mi->Get2dEffect(i)->pos.y); + zMin = min(zMin, mi->Get2dEffect(i)->pos.z); + zMax = min(zMax, mi->Get2dEffect(i)->pos.z); + } + + CVector pos1, pos2; + uint8 r, g; + int id; + switch(phase){ + case CAR_LIGHTS_GREEN: + r = 0; + g = 255; + pos1 = ent->GetMatrix() * CVector(x, yMax, zMin); + pos2 = ent->GetMatrix() * CVector(x, yMin, zMin); + id = 0; + break; + case CAR_LIGHTS_YELLOW: + r = 255; + g = 128; + pos1 = ent->GetMatrix() * CVector(x, yMax, (zMin+zMax)/2.0f); + pos2 = ent->GetMatrix() * CVector(x, yMin, (zMin+zMax)/2.0f); + id = 1; + break; + case CAR_LIGHTS_RED: + default: + r = 255; + g = 0; + pos1 = ent->GetMatrix() * CVector(x, yMax, zMax); + pos2 = ent->GetMatrix() * CVector(x, yMin, zMax); + id = 2; + break; + } + + if(CClock::GetHours() > 19 || CClock::GetHours() < 6 || CWeather::Foggyness > 0.05f) + CPointLights::AddLight(CPointLights::LIGHT_POINT, + pos1, CVector(0.0f, 0.0f, 0.0f), 8.0f, + r/255.0f, g/255.0f, 0/255.0f, CPointLights::FOG_NORMAL, true); + + CShadows::StoreStaticShadow((uintptr)ent, + SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos1, + 8.0f, 0.0f, 0.0f, -8.0f, 128, + r*CTimeCycle::GetLightOnGroundBrightness()/8.0f, + g*CTimeCycle::GetLightOnGroundBrightness()/8.0f, + 0*CTimeCycle::GetLightOnGroundBrightness()/8.0f, + 12.0f, 1.0f, 40.0f, false, 0.0f); + + if(DotProduct(TheCamera.GetForward(), ent->GetForward()) < 0.0f) + CCoronas::RegisterCorona((uintptr)ent + id, + r*CTimeCycle::GetSpriteBrightness()*0.7f, + g*CTimeCycle::GetSpriteBrightness()*0.7f, + 0*CTimeCycle::GetSpriteBrightness()*0.7f, + 255, + pos1, 1.75f*CTimeCycle::GetSpriteSize(), 50.0f, + CCoronas::TYPE_STAR, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, + CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); + else + CCoronas::RegisterCorona((uintptr)ent + id + 3, + r*CTimeCycle::GetSpriteBrightness()*0.7f, + g*CTimeCycle::GetSpriteBrightness()*0.7f, + 0*CTimeCycle::GetSpriteBrightness()*0.7f, + 255, + pos2, 1.75f*CTimeCycle::GetSpriteSize(), 50.0f, + CCoronas::TYPE_STAR, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, + CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f); + + CBrightLights::RegisterOne(pos1, ent->GetUp(), ent->GetRight(), CVector(0.0f, 0.0f, 0.0f), id + BRIGHTLIGHT_TRAFFIC_GREEN); + CBrightLights::RegisterOne(pos2, ent->GetUp(), -ent->GetRight(), CVector(0.0f, 0.0f, 0.0f), id + BRIGHTLIGHT_TRAFFIC_GREEN); + + static const float top = -0.127f; + static const float bot = -0.539f; + static const float mid = bot + (top-bot)/3.0f; + static const float left = 1.256f; + static const float right = 0.706f; + phase = CTrafficLights::LightForPeds(); + if(phase == PED_LIGHTS_DONT_WALK){ + CVector p0(2.7f, right, top); + CVector p1(2.7f, left, top); + CVector p2(2.7f, right, mid); + CVector p3(2.7f, left, mid); + CShinyTexts::RegisterOne(ent->GetMatrix()*p0, ent->GetMatrix()*p1, ent->GetMatrix()*p2, ent->GetMatrix()*p3, + 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, + SHINYTEXT_WALK, 255, 0, 0, 60.0f); + }else if(phase == PED_LIGHTS_WALK || CTimer::GetTimeInMilliseconds() & 0x100){ + CVector p0(2.7f, right, mid); + CVector p1(2.7f, left, mid); + CVector p2(2.7f, right, bot); + CVector p3(2.7f, left, bot); + CShinyTexts::RegisterOne(ent->GetMatrix()*p0, ent->GetMatrix()*p1, ent->GetMatrix()*p2, ent->GetMatrix()*p3, + 1.0f, 0.5f, 0.0f, 0.5f, 1.0f, 1.0f, 0.0f, 1.0f, + SHINYTEXT_WALK, 255, 255, 255, 60.0f); + } +} + +void +CTrafficLights::ScanForLightsOnMap(void) +{ + int x, y; + int i, j, l; + CPtrNode *node; + + for(x = 0; x < NUMSECTORS_X; x++) + for(y = 0; y < NUMSECTORS_Y; y++){ + CPtrList &list = CWorld::GetSector(x, y)->m_lists[ENTITYLIST_DUMMIES]; + for(node = list.first; node; node = node->next){ + CEntity *light = (CEntity*)node->item; + if(light->GetModelIndex() != MI_TRAFFICLIGHTS) + continue; + + // Check cars + for(i = 0; i < ThePaths.m_numCarPathLinks; i++){ + CVector2D dist = ThePaths.m_carPathLinks[i].pos - light->GetPosition(); + float dotY = Abs(DotProduct2D(dist, light->GetForward())); // forward is direction of car light + float dotX = DotProduct2D(dist, light->GetRight()); // towards base of light + // it has to be on the correct side of the node and also not very far away + if(dotX < 0.0f && dotX > -15.0f && dotY < 3.0f){ + float dz = ThePaths.m_pathNodes[ThePaths.m_carPathLinks[i].pathNodeIndex].pos.z - + light->GetPosition().z; + if(dz < 15.0f){ + ThePaths.m_carPathLinks[i].trafficLightType = FindTrafficLightType(light); + // Find two neighbour nodes of this one + int n1 = -1; + int n2 = -1; + for(j = 0; j < ThePaths.m_numPathNodes; j++) + for(l = 0; l < ThePaths.m_pathNodes[j].numLinks; l++) + if(ThePaths.m_carPathConnections[ThePaths.m_pathNodes[j].firstLink + l] == i){ + if(n1 == -1) + n1 = j; + else + n2 = j; + } + // What's going on here? + if(ThePaths.m_pathNodes[n1].numLinks <= ThePaths.m_pathNodes[n2].numLinks) + n1 = n2; + if(ThePaths.m_carPathLinks[i].pathNodeIndex != n1) + ThePaths.m_carPathLinks[i].trafficLightType |= SOME_FLAG; + } + } + } + + // Check peds + for(i = ThePaths.m_numCarPathNodes; i < ThePaths.m_numPathNodes; i++){ + float dist1, dist2; + dist1 = Abs(ThePaths.m_pathNodes[i].pos.x - light->GetPosition().x) + + Abs(ThePaths.m_pathNodes[i].pos.y - light->GetPosition().y); + if(dist1 < 50.0f){ + for(l = 0; l < ThePaths.m_pathNodes[i].numLinks; l++){ + j = ThePaths.m_pathNodes[i].firstLink + l; + if(ThePaths.m_connectionFlags[j].bCrossesRoad){ + dist2 = Abs(ThePaths.m_pathNodes[j].pos.x - light->GetPosition().x) + + Abs(ThePaths.m_pathNodes[j].pos.y - light->GetPosition().y); + if(dist1 < 15.0f || dist2 < 15.0f) + ThePaths.m_connectionFlags[j].bTrafficLight = true; + } + } + } + } + } + } +} + +bool +CTrafficLights::ShouldCarStopForLight(CVehicle *vehicle, bool alwaysStop) +{ + int node, type; + + node = vehicle->AutoPilot.m_nNextPathNodeInfo; + type = ThePaths.m_carPathLinks[node].trafficLightType; + if(type){ + if((type & SOME_FLAG || ThePaths.m_carPathLinks[node].pathNodeIndex == vehicle->AutoPilot.m_nNextRouteNode) && + (!(type & SOME_FLAG) || ThePaths.m_carPathLinks[node].pathNodeIndex != vehicle->AutoPilot.m_nNextRouteNode)) + if(alwaysStop || + (type&~SOME_FLAG) == 1 && LightForCars1() != CAR_LIGHTS_GREEN || + (type&~SOME_FLAG) == 2 && LightForCars2() != CAR_LIGHTS_GREEN){ + float dist = DotProduct2D(CVector2D(vehicle->GetPosition()) - ThePaths.m_carPathLinks[node].pos, + ThePaths.m_carPathLinks[node].dir); + if(vehicle->AutoPilot.m_nNextDirection == -1){ + if(dist > 0.0f && dist < 8.0f) + return true; + }else{ + if(dist < 0.0f && dist > -8.0f) + return true; + } + } + } + + node = vehicle->AutoPilot.m_nCurrentPathNodeInfo; + type = ThePaths.m_carPathLinks[node].trafficLightType; + if(type){ + if((type & SOME_FLAG || ThePaths.m_carPathLinks[node].pathNodeIndex == vehicle->AutoPilot.m_nCurrentRouteNode) && + (!(type & SOME_FLAG) || ThePaths.m_carPathLinks[node].pathNodeIndex != vehicle->AutoPilot.m_nCurrentRouteNode)) + if(alwaysStop || + (type&~SOME_FLAG) == 1 && LightForCars1() != CAR_LIGHTS_GREEN || + (type&~SOME_FLAG) == 2 && LightForCars2() != CAR_LIGHTS_GREEN){ + float dist = DotProduct2D(CVector2D(vehicle->GetPosition()) - ThePaths.m_carPathLinks[node].pos, + ThePaths.m_carPathLinks[node].dir); + if(vehicle->AutoPilot.m_nCurrentDirection == -1){ + if(dist > 0.0f && dist < 8.0f) + return true; + }else{ + if(dist < 0.0f && dist > -8.0f) + return true; + } + } + } + + if(vehicle->m_status == STATUS_PHYSICS){ + node = vehicle->AutoPilot.m_nPreviousPathNodeInfo; + type = ThePaths.m_carPathLinks[node].trafficLightType; + if(type){ + if((type & SOME_FLAG || ThePaths.m_carPathLinks[node].pathNodeIndex == vehicle->AutoPilot.m_nPrevRouteNode) && + (!(type & SOME_FLAG) || ThePaths.m_carPathLinks[node].pathNodeIndex != vehicle->AutoPilot.m_nPrevRouteNode)) + if(alwaysStop || + (type&~SOME_FLAG) == 1 && LightForCars1() != CAR_LIGHTS_GREEN || + (type&~SOME_FLAG) == 2 && LightForCars2() != CAR_LIGHTS_GREEN){ + float dist = DotProduct2D(CVector2D(vehicle->GetPosition()) - ThePaths.m_carPathLinks[node].pos, + ThePaths.m_carPathLinks[node].dir); + if(vehicle->AutoPilot.m_nPreviousDirection == -1){ + if(dist > 0.0f && dist < 6.0f) + return true; + }else{ + if(dist < 0.0f && dist > -6.0f) + return true; + } + } + } + } + + return false; +} + +bool +CTrafficLights::ShouldCarStopForBridge(CVehicle *vehicle) +{ + return ThePaths.m_carPathLinks[vehicle->AutoPilot.m_nNextPathNodeInfo].bBridgeLights && + !ThePaths.m_carPathLinks[vehicle->AutoPilot.m_nCurrentPathNodeInfo].bBridgeLights; +} + +int +CTrafficLights::FindTrafficLightType(CEntity *light) +{ + float orientation = RADTODEG(CGeneral::GetATanOfXY(light->GetForward().x, light->GetForward().y)); + if((orientation > 60.0f && orientation < 60.0f + 90.0f) || + (orientation > 240.0f && orientation < 240.0f + 90.0f)) + return 1; + return 2; +} uint8 CTrafficLights::LightForPeds(void) { - uint32 period = CTimer::GetTimeInMilliseconds() & 0x3FFF; // Equals to % 16384 + uint32 period = CTimer::GetTimeInMilliseconds() % 16384; - if (period >= 15384) - return PED_LIGHTS_WALK_BLINK; - else if (period >= 12000) + if(period < 12000) + return PED_LIGHTS_DONT_WALK; + else if(period < 16384 - 1000) return PED_LIGHTS_WALK; else - return PED_LIGHTS_DONT_WALK; -} \ No newline at end of file + return PED_LIGHTS_WALK_BLINK; +} + +uint8 +CTrafficLights::LightForCars1(void) +{ + uint32 period = CTimer::GetTimeInMilliseconds() % 16384; + + if(period < 5000) + return CAR_LIGHTS_GREEN; + else if(period < 5000 + 1000) + return CAR_LIGHTS_YELLOW; + else + return CAR_LIGHTS_RED; +} + +uint8 +CTrafficLights::LightForCars2(void) +{ + uint32 period = CTimer::GetTimeInMilliseconds() % 16384; + + if(period < 6000) + return CAR_LIGHTS_RED; + else if(period < 12000 - 1000) + return CAR_LIGHTS_GREEN; + else if(period < 12000) + return CAR_LIGHTS_YELLOW; + else + return CAR_LIGHTS_RED; +} + +STARTPATCHES + InjectHook(0x455760, &CTrafficLights::LightForCars1, PATCH_JUMP); + InjectHook(0x455790, &CTrafficLights::LightForCars2, PATCH_JUMP); + InjectHook(0x4557D0, &CTrafficLights::LightForPeds, PATCH_JUMP); +ENDPATCHES diff --git a/src/control/TrafficLights.h b/src/control/TrafficLights.h index 06505ed6..f3df6cd5 100644 --- a/src/control/TrafficLights.h +++ b/src/control/TrafficLights.h @@ -7,6 +7,10 @@ enum { PED_LIGHTS_WALK, PED_LIGHTS_WALK_BLINK, PED_LIGHTS_DONT_WALK, + + CAR_LIGHTS_GREEN = 0, + CAR_LIGHTS_YELLOW, + CAR_LIGHTS_RED }; class CTrafficLights @@ -14,7 +18,10 @@ class CTrafficLights public: static void DisplayActualLight(CEntity *ent); static void ScanForLightsOnMap(void); + static int FindTrafficLightType(CEntity *light); static uint8 LightForPeds(void); + static uint8 LightForCars1(void); + static uint8 LightForCars2(void); static bool ShouldCarStopForLight(CVehicle*, bool); static bool ShouldCarStopForBridge(CVehicle*); }; diff --git a/src/core/main.cpp b/src/core/main.cpp index 93e4c71c..f09c2e0a 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1,8 +1,7 @@ #include "common.h" #include "rpmatfx.h" -#include "rpskin.h" #include "rphanim.h" -#include "rtbmp.h" +#include "rpskin.h" #include "patcher.h" #include "main.h" #include "CdStream.h" @@ -54,6 +53,7 @@ #include "Frontend.h" #include "AnimViewer.h" #include "Script.h" +#include "PathFind.h" #include "Debug.h" #include "Console.h" #include "timebars.h" @@ -788,8 +788,11 @@ void RenderDebugShit(void) { CTheScripts::RenderTheScriptDebugLines(); +#ifndef FINAL if(gbShowCollisionLines) CRenderer::RenderCollisionLines(); + ThePaths.DisplayPathData(); +#endif } void diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 6eae8685..11b1584a 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -350,6 +350,9 @@ DebugMenuPopulate(void) DebugMenuAddCmd("Debug", "Catalina Fly Away", CHeli::MakeCatalinaHeliFlyAway); DebugMenuAddVarBool8("Debug", "Script Heli On", (int8*)0x95CD43, nil); + DebugMenuAddVarBool8("Debug", "Show Ped Paths", (int8*)&gbShowPedPaths, nil); + DebugMenuAddVarBool8("Debug", "Show Car Paths", (int8*)&gbShowCarPaths, nil); + DebugMenuAddVarBool8("Debug", "Show Car Path Links", (int8*)&gbShowCarPathsLinks, nil); DebugMenuAddVarBool8("Debug", "Show Ped Road Groups", (int8*)&gbShowPedRoadGroups, nil); DebugMenuAddVarBool8("Debug", "Show Car Road Groups", (int8*)&gbShowCarRoadGroups, nil); DebugMenuAddVarBool8("Debug", "Show Collision Lines", (int8*)&gbShowCollisionLines, nil); diff --git a/src/render/Timecycle.h b/src/render/Timecycle.h index f126dca6..ed4a026b 100644 --- a/src/render/Timecycle.h +++ b/src/render/Timecycle.h @@ -119,8 +119,10 @@ public: static int GetSunCoronaBlue(void) { return m_nCurrentSunCoronaBlue; } static float GetSunSize(void) { return m_fCurrentSunSize; } static float GetSpriteBrightness(void) { return m_fCurrentSpriteBrightness; } + static float GetSpriteSize(void) { return m_fCurrentSpriteSize; } static int GetShadowStrength(void) { return m_nCurrentShadowStrength; } static int GetLightShadowStrength(void) { return m_nCurrentLightShadowStrength; } + static int GetLightOnGroundBrightness(void) { return m_fCurrentLightsOnGroundBrightness; } static float GetFarClip(void) { return m_fCurrentFarClip; } static float GetFogStart(void) { return m_fCurrentFogStart; } From 16360eb6df7c0febd5847d4746a04f2342c83b44 Mon Sep 17 00:00:00 2001 From: saml1er Date: Fri, 10 Apr 2020 21:52:02 +0500 Subject: [PATCH 063/112] Refactor CObject::ObjectDamage switch statement --- src/objects/Object.cpp | 217 ++++++++++++++++++++--------------------- 1 file changed, 107 insertions(+), 110 deletions(-) diff --git a/src/objects/Object.cpp b/src/objects/Object.cpp index 5fe3b4b1..aec9eba1 100644 --- a/src/objects/Object.cpp +++ b/src/objects/Object.cpp @@ -169,136 +169,133 @@ CObject::ObjectDamage(float amount) amount = 0.0f; } if ((amount * m_fCollisionDamageMultiplier > 150.0f || bBodyCastDamageEffect) && m_nCollisionDamageEffect) { - if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_CHANGE_MODEL) { + const CVector& vecPos = m_matrix.GetPosition(); + const float fDirectionZ = 0.0002f * amount; + switch (m_nCollisionDamageEffect) + { + case COLDAMAGE_EFFECT_CHANGE_MODEL: bRenderDamaged = true; - return; - } - if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_SPLIT_MODEL) - return; - if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_SMASH_COMPLETELY) { + break; + case COLDAMAGE_EFFECT_SPLIT_MODEL: + break; + case COLDAMAGE_EFFECT_SMASH_COMPLETELY: bIsVisible = false; bUsesCollision = false; bIsStatic = true; bExplosionProof = true; m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - return; - } - if (m_nCollisionDamageEffect != COLDAMAGE_EFFECT_CHANGE_THEN_SMASH) { - const CVector& vecPos = m_matrix.GetPosition(); - const float fDirectionZ = 0.0002f * amount; - switch (m_nCollisionDamageEffect) - { - case COLDAMAGE_EFFECT_SMASH_CARDBOX_COMPLETELY: { + case COLDAMAGE_EFFECT_CHANGE_THEN_SMASH: + if (!bRenderDamaged) { + bRenderDamaged = true; + } + else { bIsVisible = false; bUsesCollision = false; bIsStatic = true; bExplosionProof = true; m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - const RwRGBA color = {96, 48, 0, 255}; - for (int32 i = 0; i < 25; i++) { - CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); - ++nFrameGen; - int32 currentFrame = nFrameGen & 3; - float fRandom = CGeneral::GetRandomNumberInRange(0.01f, 1.0f); - RwRGBA randomColor = {color.red * fRandom, color.green * fRandom , color.blue, color.alpha}; - float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); - int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); - CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); - } - PlayOneShotScriptObject(_SCRSOUND_CARDBOARD_BOX_SMASH, vecPos); - break; } - case COLDAMAGE_EFFECT_SMASH_WOODENBOX_COMPLETELY: { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - const RwRGBA color = {128, 128, 128, 255}; - for (int32 i = 0; i < 45; i++) { - CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); - ++nFrameGen; - int32 currentFrame = nFrameGen & 3; - float fRandom = CGeneral::GetRandomNumberInRange(0.5f, 0.5f); - RwRGBA randomColor = {color.red * fRandom, color.green * fRandom , color.blue * fRandom, color.alpha}; - float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); - int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); - CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); - } - PlayOneShotScriptObject(_SCRSOUND_WOODEN_BOX_SMASH, vecPos); - break; - } - case COLDAMAGE_EFFECT_SMASH_TRAFFICCONE_COMPLETELY: { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - const RwRGBA color1 = {200, 0, 0, 255}; - const RwRGBA color2 = {200, 200, 200, 255}; - for (int32 i = 0; i < 10; i++) { - CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); - ++nFrameGen; - int32 currentFrame = nFrameGen & 3; - RwRGBA color = color2; - if (nFrameGen & 1) - color = color1; - float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); - int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); - CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); - } - PlayOneShotScriptObject(_SCRSOUND_TYRE_BUMP, vecPos); - break; - } - case COLDAMAGE_EFFECT_SMASH_BARPOST_COMPLETELY: { - bIsVisible = false; - bUsesCollision = false; - bIsStatic = true; - bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); - const RwRGBA color1 = {200, 0, 0, 255}; - const RwRGBA color2 = {200, 200, 200, 255}; - for (int32 i = 0; i < 32; i++) { - CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), - CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); - ++nFrameGen; - int32 currentFrame = nFrameGen & 3; - RwRGBA color = color2; - if (nFrameGen & 1) - color = color1; - float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); - int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); - CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); - } - PlayOneShotScriptObject(_SCRSOUND_COL_CAR, vecPos); - break; - } - default: - return; - } - return; - } - if (!bRenderDamaged) { - bRenderDamaged = true; - } else { + break; + case COLDAMAGE_EFFECT_SMASH_CARDBOX_COMPLETELY: { bIsVisible = false; bUsesCollision = false; bIsStatic = true; bExplosionProof = true; m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color = { 96, 48, 0, 255 }; + for (int32 i = 0; i < 25; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + float fRandom = CGeneral::GetRandomNumberInRange(0.01f, 1.0f); + RwRGBA randomColor = { color.red * fRandom, color.green * fRandom , color.blue, color.alpha }; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); + } + PlayOneShotScriptObject(_SCRSOUND_CARDBOARD_BOX_SMASH, vecPos); + break; + } + case COLDAMAGE_EFFECT_SMASH_WOODENBOX_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color = { 128, 128, 128, 255 }; + for (int32 i = 0; i < 45; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + float fRandom = CGeneral::GetRandomNumberInRange(0.5f, 0.5f); + RwRGBA randomColor = { color.red * fRandom, color.green * fRandom , color.blue * fRandom, color.alpha }; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, randomColor, nRotationSpeed, 0, currentFrame, 0); + } + PlayOneShotScriptObject(_SCRSOUND_WOODEN_BOX_SMASH, vecPos); + break; + } + case COLDAMAGE_EFFECT_SMASH_TRAFFICCONE_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color1 = { 200, 0, 0, 255 }; + const RwRGBA color2 = { 200, 200, 200, 255 }; + for (int32 i = 0; i < 10; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + RwRGBA color = color2; + if (nFrameGen & 1) + color = color1; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); + } + PlayOneShotScriptObject(_SCRSOUND_TYRE_BUMP, vecPos); + break; + } + case COLDAMAGE_EFFECT_SMASH_BARPOST_COMPLETELY: { + bIsVisible = false; + bUsesCollision = false; + bIsStatic = true; + bExplosionProof = true; + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + const RwRGBA color1 = { 200, 0, 0, 255 }; + const RwRGBA color2 = { 200, 200, 200, 255 }; + for (int32 i = 0; i < 32; i++) { + CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), + CGeneral::GetRandomNumberInRange(0.1f, 0.15f) + fDirectionZ); + ++nFrameGen; + int32 currentFrame = nFrameGen & 3; + RwRGBA color = color2; + if (nFrameGen & 1) + color = color1; + float fSize = CGeneral::GetRandomNumberInRange(0.02f, 0.18f); + int32 nRotationSpeed = CGeneral::GetRandomNumberInRange(-40, 80); + CParticle::AddParticle(PARTICLE_CAR_DEBRIS, vecPos, vecDir, nil, fSize, color, nRotationSpeed, 0, currentFrame, 0); + } + PlayOneShotScriptObject(_SCRSOUND_COL_CAR, vecPos); + break; + } + default: + return; } } } From 4f00576a8c2ae03443848c5548cd5ad0e0e8d002 Mon Sep 17 00:00:00 2001 From: saml1er Date: Fri, 10 Apr 2020 21:59:49 +0500 Subject: [PATCH 064/112] Addendum to previous commit --- src/objects/Object.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/objects/Object.cpp b/src/objects/Object.cpp index aec9eba1..ca0ebf86 100644 --- a/src/objects/Object.cpp +++ b/src/objects/Object.cpp @@ -185,6 +185,7 @@ CObject::ObjectDamage(float amount) bExplosionProof = true; m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + break; case COLDAMAGE_EFFECT_CHANGE_THEN_SMASH: if (!bRenderDamaged) { bRenderDamaged = true; @@ -294,8 +295,6 @@ CObject::ObjectDamage(float amount) PlayOneShotScriptObject(_SCRSOUND_COL_CAR, vecPos); break; } - default: - return; } } } From df872a26b091b5a2568227ee3bc32fa07c7d337c Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 10 Apr 2020 23:21:34 +0200 Subject: [PATCH 065/112] fuck you git, i fixed this already --- src/objects/ParticleObject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/objects/ParticleObject.cpp b/src/objects/ParticleObject.cpp index 9f7bcda5..60827411 100644 --- a/src/objects/ParticleObject.cpp +++ b/src/objects/ParticleObject.cpp @@ -154,7 +154,7 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe pobj->m_nRemoveTimer = 0; if ( color.alpha != 0 ) - pobj->m_Color, color; + pobj->m_Color = color; else pobj->m_Color.alpha = 0; From f1413c477692b935b14e8ef69ea8e4aeb3dd2e7f Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 11 Apr 2020 00:36:11 +0300 Subject: [PATCH 066/112] fixing r* visioned leak --- src/core/RwTexRead.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/core/RwTexRead.cpp b/src/core/RwTexRead.cpp index ef1ac197..49b245dd 100644 --- a/src/core/RwTexRead.cpp +++ b/src/core/RwTexRead.cpp @@ -260,11 +260,13 @@ CreateTxdImageForVideoCard() RwStream *img = RwStreamOpen(rwSTREAMFILENAME, rwSTREAMWRITE, "models\\txd.img"); if (img == nil) { - if (_dwOperatingSystemVersion == OS_WINNT || _dwOperatingSystemVersion == OS_WIN2000 || _dwOperatingSystemVersion == OS_WINXP) { + // original code does otherwise and it leaks + delete []buf; + delete pDir; + + if (_dwOperatingSystemVersion == OS_WINNT || _dwOperatingSystemVersion == OS_WIN2000 || _dwOperatingSystemVersion == OS_WINXP) DealWithTxdWriteError(0, TXDSTORESIZE, "CVT_CRT"); - delete []buf; - delete pDir; - } + return false; } From 92b6d775d67d01aab0706564b2cae3714bcf05b0 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sat, 11 Apr 2020 02:03:42 +0300 Subject: [PATCH 067/112] Record --- src/control/Record.cpp | 355 ++++++++++++++++++++++++++++++++++-- src/control/Record.h | 54 +++++- src/core/Pad.cpp | 3 +- src/core/Timer.cpp | 2 +- src/vehicles/Automobile.cpp | 2 +- 5 files changed, 394 insertions(+), 22 deletions(-) diff --git a/src/control/Record.cpp b/src/control/Record.cpp index 7a3763be..19fd8969 100644 --- a/src/control/Record.cpp +++ b/src/control/Record.cpp @@ -5,7 +5,10 @@ #include "FileMgr.h" #include "Pad.h" #include "Pools.h" +#include "Streaming.h" #include "Timer.h" +#include "VehicleModelInfo.h" +#include "World.h" uint16 &CRecordDataForGame::RecordingState = *(uint16*)0x95CC24; uint8*& CRecordDataForGame::pDataBuffer = *(uint8**)0x8F1B70; @@ -13,8 +16,6 @@ uint8*& CRecordDataForGame::pDataBufferPointer = *(uint8**)0x8F1AB0; int& CRecordDataForGame::FId = *(int*)0x885BA4; tGameBuffer& CRecordDataForGame::pDataBufferForFrame = *(tGameBuffer*)0x72CED0; -uint8 &CRecordDataForChase::Status = *(uint8*)0x95CDCE; - #define MEMORY_FOR_GAME_RECORD (150000) void CRecordDataForGame::Init(void) @@ -176,16 +177,348 @@ uint16 CRecordDataForGame::CalcGameChecksum(void) return checksum ^ checksum >> 16; } -WRAPPER void CRecordDataForChase::Init(void) +uint8& CRecordDataForChase::Status = *(uint8*)0x95CDCE; +int& CRecordDataForChase::PositionChanges = *(int*)0x8F59C8; +uint8& CRecordDataForChase::CurrentCar = *(uint8*)0x95CDC9; +CAutomobile* (&CRecordDataForChase::pChaseCars)[NUM_CHASE_CARS] = *(CAutomobile * (*)[NUM_CHASE_CARS])*(uintptr*)0x6F46A8; +uint32& CRecordDataForChase::AnimStartTime = *(uint32*)0x8F1AEC; +float& CRecordDataForChase::AnimTime = *(float*)0x880F88; +CCarStateEachFrame* (&CRecordDataForChase::pBaseMemForCar)[NUM_CHASE_CARS] = *(CCarStateEachFrame * (*)[NUM_CHASE_CARS])*(uintptr*)0x70EA18; +float& CRecordDataForChase::TimeMultiplier = *(float*)0x8E2A94; +int& CRecordDataForChase::FId2 = *(int*)0x8E2C18; + +#define CHASE_SCENE_LENGTH_IN_SECONDS (80) +#define CHASE_SCENE_FRAMES_PER_SECOND (15) // skipping every second frame +#define CHASE_SCENE_FRAMES_IN_RECORDING (CHASE_SCENE_LENGTH_IN_SECONDS * CHASE_SCENE_FRAMES_PER_SECOND) +#define CHASE_SCENE_LENGTH_IN_FRAMES (CHASE_SCENE_FRAMES_IN_RECORDING * 2) + +void CRecordDataForChase::Init(void) { - EAXJMP(0x434780); + Status = STATE_NONE; + PositionChanges = 0; + CurrentCar = 0; + for (int i = 0; i < NUM_CHASE_CARS; i++) + pChaseCars[i] = nil; + AnimStartTime = 0; } -WRAPPER void CRecordDataForChase::SaveOrRetrieveDataForThisFrame(void) { EAXJMP(0x4347F0); } -WRAPPER void CRecordDataForChase::ProcessControlCars(void) { EAXJMP(0x435540); } -WRAPPER void CRecordDataForChase::SaveOrRetrieveCarPositions(void) { EAXJMP(0x434B20); } -WRAPPER void CRecordDataForChase::StartChaseScene(float) { EAXJMP(0x435690); } -WRAPPER void CRecordDataForChase::CleanUpChaseScene() { EAXJMP(0x4357C0); } -WRAPPER void CRecordDataForChase::RemoveCarFromChase(int32) { EAXJMP(0x435BC0); } -WRAPPER CVehicle* CRecordDataForChase::TurnChaseCarIntoScriptCar(int32) { EAXJMP(0x435C00); } +void CRecordDataForChase::SaveOrRetrieveDataForThisFrame(void) +{ + switch (Status) { + case STATE_NONE: + return; + case STATE_RECORD: + { + if ((CTimer::GetFrameCounter() & 1) == 0) + StoreInfoForCar(pChaseCars[CurrentCar], &pBaseMemForCar[CurrentCar][CTimer::GetFrameCounter() / 2]); + if (CTimer::GetFrameCounter() < CHASE_SCENE_LENGTH_IN_FRAMES * 2) + return; + CFileMgr::SetDir("data\\paths"); + sprintf(gString, "chase%d.dat", CurrentCar); + int fid = CFileMgr::OpenFileForWriting(gString); + uint32 fs = CHASE_SCENE_LENGTH_IN_FRAMES * sizeof(CCarStateEachFrame); + printf("FileSize:%d\n", fs); + CFileMgr::Write(fid, (char*)pBaseMemForCar[CurrentCar], fs); + CFileMgr::CloseFile(fid); + CFileMgr::SetDir(""); + sprintf(gString, "car%d.max", CurrentCar); + int fid2 = CFileMgr::OpenFileForWriting(gString); + for (int i = 0; i < CHASE_SCENE_FRAMES_IN_RECORDING; i++) { + // WTF? Was it ever used? +#ifdef FIX_BUGS + CCarStateEachFrame* pState = pBaseMemForCar[CurrentCar]; +#else + CCarStateEachFrame* pState = (CCarStateEachFrame*)pChaseCars[CurrentCar]; +#endif + CVector right = CVector(pState->rightX, pState->rightY, pState->rightZ) / (UINT8_MAX / 2); + CVector forward = CVector(pState->forwardX, pState->forwardY, pState->forwardZ) / (UINT8_MAX / 2); + CVector up = CrossProduct(right, forward); + sprintf(gString, "%f %f %f\n", pState->pos.x, pState->pos.y, pState->pos.z); + CFileMgr::Write(fid2, gString, strlen(gString) - 1); + sprintf(gString, "%f %f %f\n", right.x, right.y, right.z); + CFileMgr::Write(fid2, gString, strlen(gString) - 1); + sprintf(gString, "%f %f %f\n", forward.x, forward.y, forward.z); + CFileMgr::Write(fid2, gString, strlen(gString) - 1); + sprintf(gString, "%f %f %f\n", up.x, up.y, up.z); + CFileMgr::Write(fid2, gString, strlen(gString) - 1); + } + CFileMgr::CloseFile(fid2); + } + case STATE_PLAYBACK: + case STATE_PLAYBACK_BEFORE_RECORDING: + case STATE_PLAYBACK_INIT: + break; + } +} + +struct tCoors { + CVector pos; + float angle; +}; + +// I guess developer was filling this with actual data before running the game +tCoors NewCoorsForRecordedCars[7]; + +void CRecordDataForChase::SaveOrRetrieveCarPositions(void) +{ + switch (Status) { + case STATE_NONE: + return; + case STATE_RECORD: + case STATE_PLAYBACK_BEFORE_RECORDING: + for (int i = 0; i < NUM_CHASE_CARS; i++) { + if (i != CurrentCar && CTimer::GetFrameCounter()) { + RestoreInfoForCar(pChaseCars[i], &pBaseMemForCar[i][CTimer::GetFrameCounter() / 2], false); + pChaseCars[i]->GetMatrix().UpdateRW(); + pChaseCars[i]->UpdateRwFrame(); + } + } + if (Status == STATE_PLAYBACK_BEFORE_RECORDING && CTimer::GetFrameCounter()) { + RestoreInfoForCar(pChaseCars[CurrentCar], &pBaseMemForCar[CurrentCar][CTimer::GetFrameCounter() / 2], false); + pChaseCars[CurrentCar]->GetMatrix().UpdateRW(); + pChaseCars[CurrentCar]->UpdateRwFrame(); + } + if (CPad::GetPad(0)->GetLeftShockJustDown() && CPad::GetPad(0)->GetRightShockJustDown()) { + if (!CPad::GetPad(0)->GetRightShockJustDown()) { + pChaseCars[CurrentCar]->GetPosition() = NewCoorsForRecordedCars[PositionChanges].pos; + pChaseCars[CurrentCar]->SetMoveSpeed(0.0f, 0.0f, 0.0f); + pChaseCars[CurrentCar]->GetMatrix().SetRotateZOnly(DEGTORAD(NewCoorsForRecordedCars[PositionChanges].angle)); + ++PositionChanges; + } + if (Status == STATE_PLAYBACK_BEFORE_RECORDING) { + Status = STATE_RECORD; + pChaseCars[CurrentCar]->m_status = STATUS_PLAYER; + } + } + break; + case STATE_PLAYBACK_INIT: + Status = STATE_PLAYBACK; + break; + case STATE_PLAYBACK: + { + TimeMultiplier += CTimer::GetTimeStepNonClippedInSeconds(); + float EndOfFrameTime = CHASE_SCENE_FRAMES_PER_SECOND * min(CHASE_SCENE_LENGTH_IN_SECONDS, TimeMultiplier); + for (int i = 0; i < NUM_CHASE_CARS; i++) { + if (!pBaseMemForCar[i]) + continue; + if (!pChaseCars[i]) + continue; + if (EndOfFrameTime < CHASE_SCENE_FRAMES_IN_RECORDING - 1) { + int FlooredEOFTime = EndOfFrameTime; + RestoreInfoForCar(pChaseCars[i], &pBaseMemForCar[i][FlooredEOFTime], false); + CMatrix tmp; + float dp = EndOfFrameTime - FlooredEOFTime; + RestoreInfoForMatrix(tmp, &pBaseMemForCar[i][FlooredEOFTime + 1]); + pChaseCars[i]->GetRight() += (tmp.GetRight() - pChaseCars[i]->GetRight()) * dp; + pChaseCars[i]->GetForward() += (tmp.GetForward() - pChaseCars[i]->GetForward()) * dp; + pChaseCars[i]->GetUp() += (tmp.GetUp() - pChaseCars[i]->GetUp()) * dp; + pChaseCars[i]->GetPosition() += (tmp.GetPosition() - pChaseCars[i]->GetPosition()) * dp; + } + else{ + RestoreInfoForCar(pChaseCars[i], &pBaseMemForCar[i][CHASE_SCENE_FRAMES_IN_RECORDING - 1], true); + if (i == 0) + pChaseCars[i]->GetPosition().z += 0.2f; + } + pChaseCars[i]->GetMatrix().UpdateRW(); + pChaseCars[i]->UpdateRwFrame(); + pChaseCars[i]->RemoveAndAdd(); + } + break; + } + } +} + +void CRecordDataForChase::StoreInfoForCar(CAutomobile* pCar, CCarStateEachFrame* pState) +{ + pState->rightX = UINT8_MAX / 2 * pCar->GetRight().x; + pState->rightY = UINT8_MAX / 2 * pCar->GetRight().y; + pState->rightZ = UINT8_MAX / 2 * pCar->GetRight().z; + pState->forwardX = UINT8_MAX / 2 * pCar->GetForward().x; + pState->forwardY = UINT8_MAX / 2 * pCar->GetForward().y; + pState->forwardZ = UINT8_MAX / 2 * pCar->GetForward().z; + pState->pos = pCar->GetPosition(); + pState->velX = 1.0f * (UINT16_MAX / 2) * pCar->GetMoveSpeed().x; + pState->velY = 1.0f * (UINT16_MAX / 2) * pCar->GetMoveSpeed().y; + pState->velZ = 1.0f * (UINT16_MAX / 2) * pCar->GetMoveSpeed().z; + pState->wheel = 20 * pCar->m_fSteerAngle; + pState->gas = 100 * pCar->m_fGasPedal; + pState->brake = 100 * pCar->m_fBrakePedal; + pState->handbrake = pCar->bIsHandbrakeOn; +} + +void CRecordDataForChase::RestoreInfoForMatrix(CMatrix& matrix, CCarStateEachFrame* pState) +{ + matrix.GetRight() = CVector(pState->rightX, pState->rightY, pState->rightZ) / (UINT8_MAX / 2); + matrix.GetForward() = CVector(pState->forwardX, pState->forwardY, pState->forwardZ) / (UINT8_MAX / 2); + matrix.GetUp() = CrossProduct(matrix.GetRight(), matrix.GetForward()); + matrix.GetPosition() = pState->pos; +} + +void CRecordDataForChase::RestoreInfoForCar(CAutomobile* pCar, CCarStateEachFrame* pState, bool stop) +{ + CVector oldPos = pCar->GetPosition(); + RestoreInfoForMatrix(pCar->GetMatrix(), pState); + pCar->SetMoveSpeed(CVector(pState->velX, pState->velY, pState->velZ) * 1.0f / (UINT16_MAX / 2)); + pCar->SetTurnSpeed(0.0f, 0.0f, 0.0f); + pCar->m_fSteerAngle = pState->wheel / 20.0f; + pCar->m_fGasPedal = pState->gas / 100.0f; + pCar->m_fBrakePedal = pState->brake / 100.0f; + pCar->bIsHandbrakeOn = pState->handbrake; + if ((oldPos - pCar->GetPosition()).Magnitude() > 15.0f) { + if (pCar == pChaseCars[14]) { + pCar->m_currentColour1 = 58; + pCar->m_currentColour2 = 1; + } + else + pCar->GetModelInfo()->ChooseVehicleColour(pCar->m_currentColour1, pCar->m_currentColour2); + } + pCar->m_fHealth = min(pCar->m_fHealth, 500.0f); + if (stop) { + pCar->m_fGasPedal = 0.0f; + pCar->m_fBrakePedal = 0.0f; + pCar->SetMoveSpeed(0.0f, 0.0f, 0.0f); + pCar->bIsHandbrakeOn = false; + } +} + +void CRecordDataForChase::ProcessControlCars(void) +{ + if (Status != STATE_PLAYBACK) + return; + for (int i = 0; i < NUM_CHASE_CARS; i++) { + if (pChaseCars[i]) + pChaseCars[i]->ProcessControl(); + } +} + +#if (defined(GTA_PS2) || defined(FIX_BUGS)) +bool CRecordDataForChase::ShouldThisPadBeLeftAlone(uint8 pad) +{ + // may be wrong + if (Status == STATE_NONE || Status == STATE_PLAYBACK) + return false; + return pad != 0; +} +#endif + +void CRecordDataForChase::GiveUsACar(int32 mi, CVector pos, float angle, CAutomobile** ppCar, uint8 colour1, uint8 colour2) +{ + CStreaming::RequestModel(mi, STREAMFLAGS_DEPENDENCY); + CStreaming::LoadAllRequestedModels(false); + if (!CStreaming::HasModelLoaded(mi)) + return; + CAutomobile* pCar = new CAutomobile(mi, MISSION_VEHICLE); + pCar->GetPosition() = pos; + pCar->m_status = STATUS_PLAYER_PLAYBACKFROMBUFFER; + pCar->GetMatrix().SetRotateZOnly(DEGTORAD(angle)); + pCar->pDriver = nil; + pCar->m_currentColour1 = colour1; + pCar->m_currentColour2 = colour2; + CWorld::Add(pCar); + *ppCar = pCar; +} + +void RemoveUnusedCollision(void) +{ + static const char* dontDeleteArray[] = { + "rd_SrRoad2A50", "rd_SrRoad2A20", "rd_CrossRda1w22", "rd_CrossRda1rw22", + "road_broadway02", "road_broadway01", "com_21way5", "com_21way50", + "cm1waycrosscom", "com_21way20", "com_21way10", "road_broadway04", + "com_rvroads52", "com_roadsrv", "com_roadkb23", "com_roadkb22" + }; + for (int i = 0; i < ARRAY_SIZE(dontDeleteArray); i++) + CModelInfo::GetModelInfo(dontDeleteArray[i], nil)->GetColModel()->level = LEVEL_NONE; + CModelInfo::RemoveColModelsFromOtherLevels(LEVEL_NONE); + for (int i = 0; i < ARRAY_SIZE(dontDeleteArray); i++) + CModelInfo::GetModelInfo(dontDeleteArray[i], nil)->GetColModel()->level = LEVEL_COMMERCIAL; +} + +void CRecordDataForChase::StartChaseScene(float startTime) +{ + char filename[28]; + SetUpCarsForChaseScene(); + Status = STATE_PLAYBACK; + AnimTime = startTime; + AnimStartTime = CTimer::GetTimeInMilliseconds(); + RemoveUnusedCollision(); + CStreaming::RemoveIslandsNotUsed(LEVEL_SUBURBAN); + CGame::TidyUpMemory(true, true); + CStreaming::ImGonnaUseStreamingMemory(); + CFileMgr::SetDir("data\\paths"); + for (int i = 0; i < NUM_CHASE_CARS; i++) { + if (!pChaseCars[i]) { + pBaseMemForCar[i] = nil; + continue; + } + sprintf(filename, "chase%d.dat", i); + FId2 = CFileMgr::OpenFile(filename, "rb"); + if (FId2 <= 0) { + pBaseMemForCar[i] = nil; + continue; + } + pBaseMemForCar[i] = new CCarStateEachFrame[CHASE_SCENE_FRAMES_IN_RECORDING]; + for (int j = 0; j < CHASE_SCENE_FRAMES_IN_RECORDING; j++) { + CFileMgr::Read(FId2, (char*)&pBaseMemForCar[i][j], sizeof(CCarStateEachFrame)); + CFileMgr::Seek(FId2, sizeof(CCarStateEachFrame), 1); + } + CFileMgr::CloseFile(FId2); + } + CFileMgr::SetDir(""); + CStreaming::IHaveUsedStreamingMemory(); + TimeMultiplier = 0.0f; +} + +void CRecordDataForChase::CleanUpChaseScene(void) +{ + if (Status != STATE_PLAYBACK_INIT && Status != STATE_PLAYBACK) + return; + Status = STATE_NONE; + CleanUpCarsForChaseScene(); + for (int i = 0; i < NUM_CHASE_CARS; i++) { + if (pBaseMemForCar[i]) { + delete[] pBaseMemForCar[i]; + pBaseMemForCar[i] = nil; + } + } +} + +void CRecordDataForChase::SetUpCarsForChaseScene(void) +{ + GiveUsACar(MI_POLICE, CVector(273.54221f, -1167.1907f, 24.880601f), 63.0f, &pChaseCars[0], 2, 1); + GiveUsACar(MI_ENFORCER, CVector(231.1783f, -1388.8322f, 25.978201f), 90.0f, &pChaseCars[1], 2, 1); + GiveUsACar(MI_TAXI, CVector(184.3156f, -1473.251f, 25.978201f), 0.0f, &pChaseCars[4], 6, 6); + GiveUsACar(MI_CHEETAH, CVector(173.8868f, -1377.6514f, 25.978201f), 0.0f, &pChaseCars[6], 4, 5); + GiveUsACar(MI_STINGER, CVector(102.5946f, -943.93628f, 25.9781f), 270.0f, &pChaseCars[7], 53, 53); + GiveUsACar(MI_CHEETAH, CVector(-177.7157f, -862.18652f, 25.978201f), 155.0f, &pChaseCars[10], 41, 1); + GiveUsACar(MI_STINGER, CVector(-170.56979f, -889.02362f, 25.978201f), 154.0f, &pChaseCars[11], 10, 10); + GiveUsACar(MI_KURUMA, CVector(402.60809f, -917.49628f, 37.381001f), 90.0f, &pChaseCars[14], 34, 1); + GiveUsACar(MI_TAXI, CVector(-33.496201f, -938.4563f, 25.9781f), 266.0f, &pChaseCars[16], 6, 6); + GiveUsACar(MI_KURUMA, CVector(49.363098f, -987.60498f, 25.9781f), 0.0f, &pChaseCars[18], 51, 1); + GiveUsACar(MI_TAXI, CVector(179.0049f, -1154.6686f, 25.9781f), 0.0f, &pChaseCars[19], 6, 76); + GiveUsACar(MI_RUMPO, CVector(-28.9762f, -1031.3367f, 25.990601f), 242.0f, &pChaseCars[2], 1, 75); + GiveUsACar(MI_PATRIOT, CVector(114.1564f, -796.69379f, 24.978201f), 180.0f, &pChaseCars[3], 0, 0); +} + +void CRecordDataForChase::CleanUpCarsForChaseScene(void) +{ + for (int i = 0; i < NUM_CHASE_CARS; i++) + RemoveCarFromChase(i); +} + +void CRecordDataForChase::RemoveCarFromChase(int32 i) +{ + if (!pChaseCars[i]) + return; + CWorld::Remove(pChaseCars[i]); + delete pChaseCars[i]; + pChaseCars[i] = nil; +} + +CVehicle* CRecordDataForChase::TurnChaseCarIntoScriptCar(int32 i) +{ + CVehicle* pVehicle = pChaseCars[i]; + pChaseCars[i] = nil; + pVehicle->m_status = STATUS_PHYSICS; + return pVehicle; +} diff --git a/src/control/Record.h b/src/control/Record.h index 3cb09318..4abeb68a 100644 --- a/src/control/Record.h +++ b/src/control/Record.h @@ -4,32 +4,70 @@ class CAutomobile; class CVehicle; class CControllerState; -enum { - RECORDSTATE_0, - RECORDSTATE_1, - RECORDSTATE_2, +class CCarStateEachFrame +{ +public: + int16 velX; + int16 velY; + int16 velZ; + int8 rightX; + int8 rightY; + int8 rightZ; + int8 forwardX; + int8 forwardY; + int8 forwardZ; + int8 wheel; + uint8 gas; + uint8 brake; + bool handbrake; + CVector pos; }; +extern char* gString; + class CRecordDataForChase { enum { NUM_CHASE_CARS = 20 }; -public: + enum { + STATE_NONE = 0, + STATE_RECORD = 1, + STATE_PLAYBACK_INIT = 2, + STATE_PLAYBACK = 3, + STATE_PLAYBACK_BEFORE_RECORDING = 4 + }; static uint8 &Status; static int &PositionChanges; static uint8 &CurrentCar; static CAutomobile*(&pChaseCars)[NUM_CHASE_CARS]; + static float &AnimTime; static uint32 &AnimStartTime; + static CCarStateEachFrame* (&pBaseMemForCar)[NUM_CHASE_CARS]; + static float &TimeMultiplier; + static int &FId2; +public: + static bool IsRecording(void) { return Status == STATE_RECORD; } + + static void Init(void); static void SaveOrRetrieveDataForThisFrame(void); - static void ProcessControlCars(void); static void SaveOrRetrieveCarPositions(void); + static void StoreInfoForCar(CAutomobile*, CCarStateEachFrame*); + static void RestoreInfoForMatrix(CMatrix&, CCarStateEachFrame*); + static void RestoreInfoForCar(CAutomobile*, CCarStateEachFrame*, bool); + static void ProcessControlCars(void); +#if (defined(GTA_PS2) || defined(FIX_BUGS)) + static bool ShouldThisPadBeLeftAlone(uint8 pad); +#endif + static void GiveUsACar(int32, CVector, float, CAutomobile**, uint8, uint8); static void StartChaseScene(float); - static void CleanUpChaseScene(); + static void CleanUpChaseScene(void); + static void SetUpCarsForChaseScene(void); + static void CleanUpCarsForChaseScene(void); static void RemoveCarFromChase(int32); static CVehicle* TurnChaseCarIntoScriptCar(int32); - static void Init(void); + }; struct tGameBuffer diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp index b03272f9..f83998b8 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -26,6 +26,7 @@ #include "Vehicle.h" #include "Ped.h" #include "Population.h" +#include "Record.h" #include "Replay.h" #include "Weather.h" #include "win.h" @@ -969,7 +970,7 @@ void CPad::Update(int16 unk) OldState = NewState; #if (defined GTA_PS2 || defined FIX_BUGS) - if (!CRecordDataForGame::IsPlayingBack() /* && !CRecordDataForChase::ShouldThisPadBeLeftAlone(unk) */) + if (!CRecordDataForGame::IsPlayingBack() && !CRecordDataForChase::ShouldThisPadBeLeftAlone(unk)) #endif { NewState = ReconcileTwoControllersInput(PCTempKeyState, PCTempJoyState); diff --git a/src/core/Timer.cpp b/src/core/Timer.cpp index 3cd6862c..d0bb6c8b 100644 --- a/src/core/Timer.cpp +++ b/src/core/Timer.cpp @@ -138,7 +138,7 @@ void CTimer::Update(void) m_snTimeInMilliseconds = m_snPreviousTimeInMilliseconds + 60; } - if ( CRecordDataForChase::Status == RECORDSTATE_1 ) + if ( CRecordDataForChase::IsRecording() ) { ms_fTimeStep = 1.0f; m_snTimeInMilliseconds = m_snPreviousTimeInMilliseconds + 16; diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index 1c0d673e..13558920 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -356,7 +356,7 @@ CAutomobile::ProcessControl(void) PruneReferences(); - if(m_status == STATUS_PLAYER && CRecordDataForChase::Status != RECORDSTATE_1) + if(m_status == STATUS_PLAYER && CRecordDataForChase::IsRecording()) DoDriveByShootings(); } break; From 59d4a29f55712d9e8ea45e299c443b86b1adf93f Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sat, 11 Apr 2020 02:11:18 +0300 Subject: [PATCH 068/112] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index ed4116c4..ca708494 100644 --- a/README.md +++ b/README.md @@ -40,8 +40,6 @@ CObject CPacManPickups CPedPath CPools - save/loading -CRecordDataForChase -CRecordDataForGame CRoadBlocks CWeapon CWorld From bc90f958da4682a4b951cd77cbfd1aa3c12e2fad Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sat, 11 Apr 2020 02:27:50 +0300 Subject: [PATCH 069/112] fix constants --- src/control/Record.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/control/Record.cpp b/src/control/Record.cpp index 19fd8969..e858bc1d 100644 --- a/src/control/Record.cpp +++ b/src/control/Record.cpp @@ -230,8 +230,8 @@ void CRecordDataForChase::SaveOrRetrieveDataForThisFrame(void) #else CCarStateEachFrame* pState = (CCarStateEachFrame*)pChaseCars[CurrentCar]; #endif - CVector right = CVector(pState->rightX, pState->rightY, pState->rightZ) / (UINT8_MAX / 2); - CVector forward = CVector(pState->forwardX, pState->forwardY, pState->forwardZ) / (UINT8_MAX / 2); + CVector right = CVector(pState->rightX, pState->rightY, pState->rightZ) / INT8_MAX; + CVector forward = CVector(pState->forwardX, pState->forwardY, pState->forwardZ) / INT8_MAX; CVector up = CrossProduct(right, forward); sprintf(gString, "%f %f %f\n", pState->pos.x, pState->pos.y, pState->pos.z); CFileMgr::Write(fid2, gString, strlen(gString) - 1); @@ -330,16 +330,16 @@ void CRecordDataForChase::SaveOrRetrieveCarPositions(void) void CRecordDataForChase::StoreInfoForCar(CAutomobile* pCar, CCarStateEachFrame* pState) { - pState->rightX = UINT8_MAX / 2 * pCar->GetRight().x; - pState->rightY = UINT8_MAX / 2 * pCar->GetRight().y; - pState->rightZ = UINT8_MAX / 2 * pCar->GetRight().z; - pState->forwardX = UINT8_MAX / 2 * pCar->GetForward().x; - pState->forwardY = UINT8_MAX / 2 * pCar->GetForward().y; - pState->forwardZ = UINT8_MAX / 2 * pCar->GetForward().z; + pState->rightX = INT8_MAX * pCar->GetRight().x; + pState->rightY = INT8_MAX * pCar->GetRight().y; + pState->rightZ = INT8_MAX * pCar->GetRight().z; + pState->forwardX = INT8_MAX * pCar->GetForward().x; + pState->forwardY = INT8_MAX * pCar->GetForward().y; + pState->forwardZ = INT8_MAX * pCar->GetForward().z; pState->pos = pCar->GetPosition(); - pState->velX = 1.0f * (UINT16_MAX / 2) * pCar->GetMoveSpeed().x; - pState->velY = 1.0f * (UINT16_MAX / 2) * pCar->GetMoveSpeed().y; - pState->velZ = 1.0f * (UINT16_MAX / 2) * pCar->GetMoveSpeed().z; + pState->velX = 0.5f * INT16_MAX * pCar->GetMoveSpeed().x; + pState->velY = 0.5f * INT16_MAX * pCar->GetMoveSpeed().y; + pState->velZ = 0.5f * INT16_MAX * pCar->GetMoveSpeed().z; pState->wheel = 20 * pCar->m_fSteerAngle; pState->gas = 100 * pCar->m_fGasPedal; pState->brake = 100 * pCar->m_fBrakePedal; @@ -348,8 +348,8 @@ void CRecordDataForChase::StoreInfoForCar(CAutomobile* pCar, CCarStateEachFrame* void CRecordDataForChase::RestoreInfoForMatrix(CMatrix& matrix, CCarStateEachFrame* pState) { - matrix.GetRight() = CVector(pState->rightX, pState->rightY, pState->rightZ) / (UINT8_MAX / 2); - matrix.GetForward() = CVector(pState->forwardX, pState->forwardY, pState->forwardZ) / (UINT8_MAX / 2); + matrix.GetRight() = CVector(pState->rightX, pState->rightY, pState->rightZ) / INT8_MAX; + matrix.GetForward() = CVector(pState->forwardX, pState->forwardY, pState->forwardZ) / INT8_MAX; matrix.GetUp() = CrossProduct(matrix.GetRight(), matrix.GetForward()); matrix.GetPosition() = pState->pos; } @@ -358,7 +358,7 @@ void CRecordDataForChase::RestoreInfoForCar(CAutomobile* pCar, CCarStateEachFram { CVector oldPos = pCar->GetPosition(); RestoreInfoForMatrix(pCar->GetMatrix(), pState); - pCar->SetMoveSpeed(CVector(pState->velX, pState->velY, pState->velZ) * 1.0f / (UINT16_MAX / 2)); + pCar->SetMoveSpeed(CVector(pState->velX, pState->velY, pState->velZ) / INT16_MAX / 0.5f); pCar->SetTurnSpeed(0.0f, 0.0f, 0.0f); pCar->m_fSteerAngle = pState->wheel / 20.0f; pCar->m_fGasPedal = pState->gas / 100.0f; From 1c0c0a046842c0b937a07e5a957950faf54611af Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sat, 11 Apr 2020 13:20:41 +0300 Subject: [PATCH 070/112] fixed malloc/new --- src/control/Record.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/control/Record.cpp b/src/control/Record.cpp index e858bc1d..aead1720 100644 --- a/src/control/Record.cpp +++ b/src/control/Record.cpp @@ -40,7 +40,7 @@ void CRecordDataForGame::Init(void) RecordingState = STATE_PLAYBACK; } if (RecordingState == STATE_PLAYBACK) { - pDataBufferPointer = (uint8*)malloc(MEMORY_FOR_GAME_RECORD); + pDataBufferPointer = new uint8[MEMORY_FOR_GAME_RECORD]; pDataBuffer = pDataBufferPointer; pDataBuffer[CFileMgr::Read(FId, (char*)pDataBufferPointer, MEMORY_FOR_GAME_RECORD) + 8] = -1; CFileMgr::CloseFile(FId); From 0ddc04743cf119751e61ad7bec73b721116b3c03 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 11 Apr 2020 13:21:21 +0300 Subject: [PATCH 071/112] Fix cutscene camera latency --- src/animation/CutsceneMgr.cpp | 2 +- src/core/Cam.cpp | 2 +- src/core/Timer.h | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/animation/CutsceneMgr.cpp b/src/animation/CutsceneMgr.cpp index 0e35599b..6f8e9790 100644 --- a/src/animation/CutsceneMgr.cpp +++ b/src/animation/CutsceneMgr.cpp @@ -410,7 +410,7 @@ CCutsceneMgr::Update(void) if (!ms_running) return; - ms_cutsceneTimer += CTimer::GetTimeStepNonClipped() * 0.02f; + ms_cutsceneTimer += CTimer::GetTimeStepNonClippedInSeconds(); if (CGeneral::faststricmp(ms_cutsceneName, "end") && TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FLYBY && ms_cutsceneLoadStatus == CUTSCENE_LOADING_0) { if (CPad::GetPad(0)->GetCrossJustDown() || (CGame::playingIntro && CPad::GetPad(0)->GetStartJustDown()) diff --git a/src/core/Cam.cpp b/src/core/Cam.cpp index dc9ef74f..cfdea46a 100644 --- a/src/core/Cam.cpp +++ b/src/core/Cam.cpp @@ -3511,7 +3511,7 @@ CCam::Process_FlyBy(const CVector&, float, float, float) Up = CVector(0.0f, 0.0f, 1.0f); if(TheCamera.m_bStartingSpline) - m_fTimeElapsedFloat += CTimer::GetTimeStepInMilliseconds(); + m_fTimeElapsedFloat += CTimer::GetTimeStepNonClippedInMilliseconds(); else{ m_fTimeElapsedFloat = 0.0f; m_uiFinishTime = MS(TheCamera.m_arrPathArray[2].m_arr_PathData[10*((int)TheCamera.m_arrPathArray[2].m_arr_PathData[0]-1) + 1]); diff --git a/src/core/Timer.h b/src/core/Timer.h index 2498ec8a..88a46661 100644 --- a/src/core/Timer.h +++ b/src/core/Timer.h @@ -21,6 +21,7 @@ public: static float GetTimeStepInMilliseconds() { return ms_fTimeStep / 50.0f * 1000.0f; } static const float &GetTimeStepNonClipped(void) { return ms_fTimeStepNonClipped; } static float GetTimeStepNonClippedInSeconds(void) { return ms_fTimeStepNonClipped / 50.0f; } + static float GetTimeStepNonClippedInMilliseconds(void) { return ms_fTimeStepNonClipped / 50.0f * 1000.0f; } static void SetTimeStepNonClipped(float ts) { ms_fTimeStepNonClipped = ts; } static const uint32 &GetFrameCounter(void) { return m_FrameCounter; } static void SetFrameCounter(uint32 fc) { m_FrameCounter = fc; } From 0d19036a4278a23db5af75c26a74b8d0e7d61454 Mon Sep 17 00:00:00 2001 From: saml1er Date: Sat, 11 Apr 2020 21:45:49 +0500 Subject: [PATCH 072/112] CRoadBlocks complete --- src/control/RoadBlocks.cpp | 226 ++++++++++++++++++++++++++++++++++--- src/control/RoadBlocks.h | 2 +- 2 files changed, 210 insertions(+), 18 deletions(-) diff --git a/src/control/RoadBlocks.cpp b/src/control/RoadBlocks.cpp index e39fe481..6adcba6b 100644 --- a/src/control/RoadBlocks.cpp +++ b/src/control/RoadBlocks.cpp @@ -2,36 +2,228 @@ #include "patcher.h" #include "RoadBlocks.h" #include "PathFind.h" +#include "ModelIndices.h" +#include "Streaming.h" +#include "World.h" +#include "PedPlacement.h" +#include "Automobile.h" +#include "CopPed.h" +#include "VisibilityPlugins.h" +#include "PlayerPed.h" +#include "Wanted.h" +#include "Camera.h" +#include "CarCtrl.h" +#include "General.h" int16 &CRoadBlocks::NumRoadBlocks = *(int16*)0x95CC34; int16 (&CRoadBlocks::RoadBlockObjects)[NUMROADBLOCKS] = *(int16(*)[NUMROADBLOCKS]) * (uintptr*)0x72B3A8; bool (&CRoadBlocks::InOrOut)[NUMROADBLOCKS] = *(bool(*)[NUMROADBLOCKS]) * (uintptr*)0x733810; -WRAPPER void CRoadBlocks::GenerateRoadBlockCopsForCar(CVehicle*, int32, int16) { EAXJMP(0x4376A0); } -WRAPPER void CRoadBlocks::GenerateRoadBlocks(void) { EAXJMP(0x436FA0); } - void CRoadBlocks::Init(void) { - NumRoadBlocks = 0; - for (int objId = 0; objId < ThePaths.m_numMapObjects; objId++) { - if (ThePaths.m_objectFlags[objId] & UseInRoadBlock) { - if (NumRoadBlocks < 600) { - InOrOut[NumRoadBlocks] = true; - RoadBlockObjects[NumRoadBlocks] = objId; - NumRoadBlocks++; - } else { + NumRoadBlocks = 0; + for (int objId = 0; objId < ThePaths.m_numMapObjects; objId++) { + if (ThePaths.m_objectFlags[objId] & UseInRoadBlock) { + if (NumRoadBlocks < 600) { + InOrOut[NumRoadBlocks] = true; + RoadBlockObjects[NumRoadBlocks] = objId; + NumRoadBlocks++; + } else { #ifndef MASTER - printf("Not enough room for the potential roadblocks\n"); + printf("Not enough room for the potential roadblocks\n"); #endif - // FIX: Don't iterate loop after NUMROADBLOCKS - return; - } - } - } + // FIX: Don't iterate loop after NUMROADBLOCKS + return; + } + } + } } +void +CRoadBlocks::GenerateRoadBlockCopsForCar(CVehicle* pVehicle, int32 roadBlockType, int16 roadBlockNode) +{ + CVector vecRoadBlockOffets[6] = { {-1.5, 1.8f, 0.0f}, {-1.5f, -1.8f, 0.0f}, {1.5f, 1.8f, 0.0f}, + {1.5f, -1.8f, 0.0f}, {-1.5f, 0.0f, 0.0f}, {1.5, 0.0, 0.0} }; + CEntity* pEntityToAttack = (CEntity*)FindPlayerVehicle(); + if (!pEntityToAttack) + pEntityToAttack = (CEntity*)FindPlayerPed(); + CColModel* pPoliceColModel = CModelInfo::GetModelInfo(MI_POLICE)->GetColModel(); + float fRadius = pVehicle->GetBoundRadius() / pPoliceColModel->boundingSphere.radius; + for (int32 i = 0; i < 2; i++) { + const int32 roadBlockIndex = i + 2 * roadBlockType; + CVector posForZ = pVehicle->m_matrix * (fRadius * vecRoadBlockOffets[roadBlockIndex]); + int32 modelInfoId = 0; + eCopType copType = COP_STREET; + switch (pVehicle->GetModelIndex()) + { + case MI_FBICAR: + modelInfoId = MI_FBI; + copType = COP_FBI; + break; + case MI_MOONBEAM: + case MI_ESPERANT: + case MI_TAXI: + case MI_KURUMA: + case MI_BOBCAT: + case MI_MRWHOOP: + case MI_BFINJECT: + case MI_CORPSE: + case MI_POLICE: + case MI_SECURICA: + case MI_BANSHEE: + case MI_PREDATOR: + case MI_BUS: + case MI_RHINO: + copType = COP_STREET; + modelInfoId = MI_COP; + break; + case MI_ENFORCER: + modelInfoId = MI_SWAT; + copType = COP_SWAT; + break; + case MI_BARRACKS: + modelInfoId = MI_ARMY; + copType = COP_ARMY; + break; + } + if (!CStreaming::HasModelLoaded(modelInfoId)) + copType = COP_STREET; + CCopPed* pCopPed = new CCopPed(copType); + if (copType == COP_STREET) + pCopPed->SetCurrentWeapon(WEAPONTYPE_COLT45); + CPedPlacement::FindZCoorForPed(&posForZ); + pCopPed->m_matrix.GetPosition() = posForZ; + CVector vecSavedPos = pCopPed->m_matrix.GetPosition(); + pCopPed->m_matrix.SetRotate(0.0f, 0.0f, -HALFPI); + pCopPed->m_matrix.GetPosition() += vecSavedPos; + pCopPed->m_bIsDisabledCop = true; + pCopPed->SetIdle(); + pCopPed->bKindaStayInSamePlace = true; + pCopPed->bNotAllowedToDuck = false; + pCopPed->m_wRoadblockNode = roadBlockNode; + pCopPed->bCrouchWhenShooting = roadBlockType != 2; + if (pEntityToAttack) { + pCopPed->m_pPointGunAt = pEntityToAttack; + pEntityToAttack->RegisterReference(&pCopPed->m_pPointGunAt); + pCopPed->SetAttack(pEntityToAttack); + } + pCopPed->m_pMyVehicle = pVehicle; + pVehicle->RegisterReference((CEntity**)&pCopPed->m_pMyVehicle); + pCopPed->bCullExtraFarAway = true; + CVisibilityPlugins::SetClumpAlpha(pCopPed->GetClump(), 0); + CWorld::Add(pCopPed); + } +} + +void +CRoadBlocks::GenerateRoadBlocks(void) +{ + CMatrix offsetMatrix; + unsigned int frame = CTimer::GetFrameCounter() & 0xF; + int16 nRoadblockNode = (int16)(600 * frame) / 16; + const int16 maxRoadBlocks = (int16)(600 * (frame + 1)) / 16; + int16 numRoadBlocks = CRoadBlocks::NumRoadBlocks; + if (CRoadBlocks::NumRoadBlocks >= maxRoadBlocks) + numRoadBlocks = maxRoadBlocks; + for (; nRoadblockNode < numRoadBlocks; nRoadblockNode++) { + CTreadable *mapObject = ThePaths.m_mapObjects[CRoadBlocks::RoadBlockObjects[nRoadblockNode]]; + CVector2D direction = FindPlayerCoors() - mapObject->GetPosition(); + if ((direction.x <= -80.0f || direction.x < 80.0f) || (direction.y <= -80.0f || direction.y < 80.0f)) { + CRoadBlocks::InOrOut[nRoadblockNode] = false; + continue; + } + if (direction.Magnitude() < 80.0f) { + CRoadBlocks::InOrOut[nRoadblockNode] = false; + continue; + } + else if (!CRoadBlocks::InOrOut[nRoadblockNode]) { + CRoadBlocks::InOrOut[nRoadblockNode] = true; + } + else { + continue; + } + if (!FindPlayerVehicle()) + continue; + CWanted *pPlayerWanted = FindPlayerPed()->m_pWanted; + if ((CGeneral::GetRandomNumber() & 0x7F) >= pPlayerWanted->m_RoadblockDensity) + continue; + float fMapObjectRadius = 2.0f * mapObject->GetColModel()->boundingBox.max.x; + int32 vehicleId = MI_POLICE; + if (pPlayerWanted->AreArmyRequired()) + vehicleId = MI_BARRACKS; + else if (pPlayerWanted->AreFbiRequired()) + vehicleId = MI_FBICAR; + else if (pPlayerWanted->AreSwatRequired()) + vehicleId = MI_ENFORCER; + if (!CStreaming::HasModelLoaded(vehicleId)) + vehicleId = MI_POLICE; + CColModel *pVehicleColModel = CModelInfo::GetModelInfo(vehicleId)->GetColModel(); + float fModelRadius = 2.0f * pVehicleColModel->boundingSphere.radius + 0.25f; + int16 radius = (int16)(fMapObjectRadius / fModelRadius); + if (radius >= 6) + continue; + CVector2D directionToCamera = TheCamera.m_matrix.GetPosition() - mapObject->m_matrix.GetPosition(); + float fDotProduct = DotProduct2D(directionToCamera, mapObject->m_matrix.GetUp()); + if (radius <= 0) + continue; + float fOffset = 0.5f * fModelRadius * (float)(radius - 1); + for (int16 modelId = vehicleId; modelId < nRoadblockNode ; modelId++) { + uint8 nRoadblockType = fDotProduct >= 0.0f; + if (CGeneral::GetRandomNumber() & 1) { + offsetMatrix.SetRotateZ(((CGeneral::GetRandomNumber() & 0xFF) - 128.0f) * 0.003f + HALFPI); + } + else { + nRoadblockType = fDotProduct < 0.0f; + offsetMatrix.SetRotateZ(((CGeneral::GetRandomNumber() & 0xFF) - 128.0f) * 0.003f - HALFPI); + } + if (ThePaths.m_objectFlags[CRoadBlocks::RoadBlockObjects[nRoadblockNode]] & ObjectEastWest) + offsetMatrix.GetPosition() = CVector(0.0f, -fOffset, 0.6f); + else + offsetMatrix.GetPosition() = CVector(-fOffset, 0.0f, 0.6f); + CMatrix vehicleMatrix = mapObject->m_matrix * offsetMatrix; + float fModelRadius = CModelInfo::GetModelInfo(modelId)->GetColModel()->boundingSphere.radius - 0.25f; + int16 colliding = 0; + CWorld::FindObjectsKindaColliding(vehicleMatrix.GetPosition(), fModelRadius, 0, &colliding, 2, nil, false, true, true, false, false); + if (colliding) + continue; + CAutomobile *pVehicle = new CAutomobile(vehicleId, RANDOM_VEHICLE); + pVehicle->m_status = STATUS_ABANDONED; + // pVehicle->GetHeightAboveRoad(); // called but return value is ignored? + vehicleMatrix.GetPosition().z += fModelRadius - 0.6f; + pVehicle->m_matrix = vehicleMatrix; + pVehicle->PlaceOnRoadProperly(); + pVehicle->bIsStatic = false; + pVehicle->m_matrix.UpdateRW(); + pVehicle->m_nDoorLock = CARLOCK_UNLOCKED; + CCarCtrl::JoinCarWithRoadSystem(pVehicle); + pVehicle->bIsLocked = false; + pVehicle->AutoPilot.m_nCarMission = MISSION_NONE; + pVehicle->AutoPilot.m_nTempAction = TEMPACT_NONE; + pVehicle->AutoPilot.m_nCurrentLane = 0; + pVehicle->AutoPilot.m_nNextLane = 0; + pVehicle->AutoPilot.m_fMaxTrafficSpeed = 0.0f; + pVehicle->AutoPilot.m_nCruiseSpeed = 0.0f; + pVehicle->bExtendedRange = true; + if (pVehicle->UsesSiren(pVehicle->GetModelIndex()) && CGeneral::GetRandomNumber() & 1) + pVehicle->m_bSirenOrAlarm = true; + if (pVehicle->m_matrix.GetForward().z <= 0.94f) { + delete pVehicle; + } + else { + CVisibilityPlugins::SetClumpAlpha(pVehicle->GetClump(), 0); + CWorld::Add(pVehicle); + pVehicle->bCreateRoadBlockPeds = true; + pVehicle->m_nRoadblockType = nRoadblockType; + pVehicle->m_nRoadblockNode = nRoadblockNode; + } + } + } +} + STARTPATCHES InjectHook(0x436F50, &CRoadBlocks::Init, PATCH_JUMP); + InjectHook(0x4376A0, &CRoadBlocks::GenerateRoadBlockCopsForCar, PATCH_JUMP); + InjectHook(0x436FA0, &CRoadBlocks::GenerateRoadBlocks, PATCH_JUMP); ENDPATCHES \ No newline at end of file diff --git a/src/control/RoadBlocks.h b/src/control/RoadBlocks.h index 3f5868e7..16e3a362 100644 --- a/src/control/RoadBlocks.h +++ b/src/control/RoadBlocks.h @@ -11,6 +11,6 @@ public: static bool (&InOrOut)[NUMROADBLOCKS]; static void Init(void); - static void GenerateRoadBlockCopsForCar(CVehicle*, int32, int16); + static void GenerateRoadBlockCopsForCar(CVehicle* pVehicle, int32 roadBlockType, int16 roadBlockNode); static void GenerateRoadBlocks(void); }; From ff16ba7801a3532e8bb982238f3d3124f6154e55 Mon Sep 17 00:00:00 2001 From: saml1er Date: Sat, 11 Apr 2020 22:31:32 +0500 Subject: [PATCH 073/112] CObject fixes --- src/objects/Object.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/objects/Object.cpp b/src/objects/Object.cpp index ca0ebf86..867624c7 100644 --- a/src/objects/Object.cpp +++ b/src/objects/Object.cpp @@ -98,7 +98,7 @@ CObject::ProcessControl(void) m_vecTurnSpeed *= fTimeStep; } if ((m_modelIndex == MI_EXPLODINGBARREL || m_modelIndex == MI_PETROLPUMP) && bHasBeenDamaged && bIsVisible - && CGeneral::GetRandomNumberInRange(0, 31) == 10) { + && (CGeneral::GetRandomNumber() & 0x1F) == 10) { bExplosionProof = true; bIsVisible = false; bUsesCollision = false; @@ -183,8 +183,8 @@ CObject::ObjectDamage(float amount) bUsesCollision = false; bIsStatic = true; bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + SetMoveSpeed(0.0f, 0.0f, 0.0f); + SetTurnSpeed(0.0f, 0.0f, 0.0f); break; case COLDAMAGE_EFFECT_CHANGE_THEN_SMASH: if (!bRenderDamaged) { @@ -195,8 +195,8 @@ CObject::ObjectDamage(float amount) bUsesCollision = false; bIsStatic = true; bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + SetMoveSpeed(0.0f, 0.0f, 0.0f); + SetTurnSpeed(0.0f, 0.0f, 0.0f); } break; case COLDAMAGE_EFFECT_SMASH_CARDBOX_COMPLETELY: { @@ -204,8 +204,8 @@ CObject::ObjectDamage(float amount) bUsesCollision = false; bIsStatic = true; bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + SetMoveSpeed(0.0f, 0.0f, 0.0f); + SetTurnSpeed(0.0f, 0.0f, 0.0f); const RwRGBA color = { 96, 48, 0, 255 }; for (int32 i = 0; i < 25; i++) { CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), @@ -227,8 +227,8 @@ CObject::ObjectDamage(float amount) bUsesCollision = false; bIsStatic = true; bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + SetMoveSpeed(0.0f, 0.0f, 0.0f); + SetTurnSpeed(0.0f, 0.0f, 0.0f); const RwRGBA color = { 128, 128, 128, 255 }; for (int32 i = 0; i < 45; i++) { CVector vecDir(CGeneral::GetRandomNumberInRange(-0.35f, 0.7f), @@ -250,8 +250,8 @@ CObject::ObjectDamage(float amount) bUsesCollision = false; bIsStatic = true; bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + SetMoveSpeed(0.0f, 0.0f, 0.0f); + SetTurnSpeed(0.0f, 0.0f, 0.0f); const RwRGBA color1 = { 200, 0, 0, 255 }; const RwRGBA color2 = { 200, 200, 200, 255 }; for (int32 i = 0; i < 10; i++) { @@ -275,8 +275,8 @@ CObject::ObjectDamage(float amount) bUsesCollision = false; bIsStatic = true; bExplosionProof = true; - m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + SetMoveSpeed(0.0f, 0.0f, 0.0f); + SetTurnSpeed(0.0f, 0.0f, 0.0f); const RwRGBA color1 = { 200, 0, 0, 255 }; const RwRGBA color2 = { 200, 200, 200, 255 }; for (int32 i = 0; i < 32; i++) { From 3c999a1eb85e2b36cace2d4158f4777811174731 Mon Sep 17 00:00:00 2001 From: aap Date: Sat, 11 Apr 2020 19:33:39 +0200 Subject: [PATCH 074/112] fixed traffic light position --- src/control/TrafficLights.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/control/TrafficLights.cpp b/src/control/TrafficLights.cpp index e4416965..ab9cd92d 100644 --- a/src/control/TrafficLights.cpp +++ b/src/control/TrafficLights.cpp @@ -40,9 +40,9 @@ CTrafficLights::DisplayActualLight(CEntity *ent) for(i = 1; i < 6; i++){ assert(mi->Get2dEffect(i)); yMin = min(yMin, mi->Get2dEffect(i)->pos.y); - yMax = min(yMax, mi->Get2dEffect(i)->pos.y); + yMax = max(yMax, mi->Get2dEffect(i)->pos.y); zMin = min(zMin, mi->Get2dEffect(i)->pos.z); - zMax = min(zMax, mi->Get2dEffect(i)->pos.z); + zMax = max(zMax, mi->Get2dEffect(i)->pos.z); } CVector pos1, pos2; From 38dee74a5aa6131d29147b121e78340de47f43a2 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sat, 11 Apr 2020 21:01:39 +0300 Subject: [PATCH 075/112] CPools --- src/core/Pad.cpp | 2 +- src/core/Pools.cpp | 345 +++++++++++++++++++++++++++++++++- src/entities/Entity.h | 1 + src/modelinfo/BaseModelInfo.h | 4 +- src/objects/Object.cpp | 1 + src/objects/Object.h | 1 + src/vehicles/Vehicle.h | 3 +- 7 files changed, 346 insertions(+), 11 deletions(-) diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp index f83998b8..973b4ef6 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -94,7 +94,7 @@ void TankCheat() if (node < 0) return; -#ifdef FIX_BUGS +#ifndef FIX_BUGS // TEMP!!! CAutomobile* tank = new CAutomobile(MI_RHINO, RANDOM_VEHICLE); #else CAutomobile *tank = new CAutomobile(MI_RHINO, MISSION_VEHICLE); diff --git a/src/core/Pools.cpp b/src/core/Pools.cpp index 75536b88..9fd3d60e 100644 --- a/src/core/Pools.cpp +++ b/src/core/Pools.cpp @@ -1,8 +1,14 @@ #include "common.h" #include "patcher.h" #include "Pools.h" -#include "World.h" + +#include "Boat.h" +#include "CarCtrl.h" +#include "Population.h" #include "ProjectileInfo.h" +#include "Streaming.h" +#include "Wanted.h" +#include "World.h" CCPtrNodePool *&CPools::ms_pPtrNodePool = *(CCPtrNodePool**)0x943044; CEntryInfoNodePool *&CPools::ms_pEntryInfoNodePool = *(CEntryInfoNodePool**)0x941448; @@ -14,13 +20,6 @@ CObjectPool *&CPools::ms_pObjectPool = *(CObjectPool**)0x880E28; CDummyPool *&CPools::ms_pDummyPool = *(CDummyPool**)0x8F2C18; CAudioScriptObjectPool *&CPools::ms_pAudioScriptObjectPool = *(CAudioScriptObjectPool**)0x8F1B6C; -WRAPPER void CPools::LoadObjectPool(uint8* buf, uint32 size) { EAXJMP(0x4a2550); } -WRAPPER void CPools::LoadPedPool(uint8* buf, uint32 size) { EAXJMP(0x4a2b50); } -WRAPPER void CPools::LoadVehiclePool(uint8* buf, uint32 size) { EAXJMP(0x4a1b40); } -WRAPPER void CPools::SaveObjectPool(uint8* buf, uint32 *size) { EAXJMP(0x4a22d0); } -WRAPPER void CPools::SavePedPool(uint8* buf, uint32 *size) { EAXJMP(0x4a29b0); } -WRAPPER void CPools::SaveVehiclePool(uint8* buf, uint32 *size) { EAXJMP(0x4a2080); } - void CPools::Initialise(void) { @@ -99,6 +98,333 @@ CPools::MakeSureSlotInObjectPoolIsEmpty(int32 slot) } } +void CPools::LoadVehiclePool(uint8* buf, uint32 size) +{ +INITSAVEBUF + int nNumCars = ReadSaveBuf(buf); + int nNumBoats = ReadSaveBuf(buf); + for (int i = 0; i < nNumCars + nNumBoats; i++) { + uint32 type = ReadSaveBuf(buf); + int16 model = ReadSaveBuf(buf); + CStreaming::RequestModel(model, STREAMFLAGS_DEPENDENCY); + CStreaming::LoadAllRequestedModels(false); + int32 slot = ReadSaveBuf(buf); + CVehicle* pVehicle; + char* vbuf = new char[max(sizeof(CAutomobile), sizeof(CBoat))]; + if (type == VEHICLE_TYPE_BOAT) { + memcpy(vbuf, buf, sizeof(CBoat)); + SkipSaveBuf(buf, sizeof(CBoat)); + CBoat* pBoat = new(slot) CBoat(model, RANDOM_VEHICLE); + pVehicle = pBoat; + --CCarCtrl::NumRandomCars; // why? + } + else if (type == VEHICLE_TYPE_CAR) { + memcpy(vbuf, buf, sizeof(CAutomobile)); + SkipSaveBuf(buf, sizeof(CAutomobile)); + CStreaming::RequestModel(model, 0); // is it needed? + CStreaming::LoadAllRequestedModels(false); + CAutomobile* pAutomobile = new(slot) CAutomobile(model, RANDOM_VEHICLE); + pVehicle = pAutomobile; + CCarCtrl::NumRandomCars--; // why? + pAutomobile->Damage = ((CAutomobile*)vbuf)->Damage; + pAutomobile->SetupDamageAfterLoad(); + } + else + assert(0); + CVehicle* pBufferVehicle = (CVehicle*)vbuf; + pVehicle->GetMatrix() = pBufferVehicle->GetMatrix(); + pVehicle->VehicleCreatedBy = pBufferVehicle->VehicleCreatedBy; + pVehicle->m_currentColour1 = pBufferVehicle->m_currentColour1; + pVehicle->m_currentColour2 = pBufferVehicle->m_currentColour2; + pVehicle->m_nAlarmState = pBufferVehicle->m_nAlarmState; + pVehicle->m_nNumMaxPassengers = pBufferVehicle->m_nNumMaxPassengers; + pVehicle->field_1D0[0] = pBufferVehicle->field_1D0[0]; + pVehicle->field_1D0[1] = pBufferVehicle->field_1D0[1]; + pVehicle->field_1D0[2] = pBufferVehicle->field_1D0[2]; + pVehicle->field_1D0[3] = pBufferVehicle->field_1D0[3]; + pVehicle->m_fSteerAngle = pBufferVehicle->m_fSteerAngle; + pVehicle->m_fGasPedal = pBufferVehicle->m_fGasPedal; + pVehicle->m_fBrakePedal = pBufferVehicle->m_fBrakePedal; + pVehicle->bIsLawEnforcer = pBufferVehicle->bIsLawEnforcer; + pVehicle->bIsLocked = pBufferVehicle->bIsLocked; + pVehicle->bEngineOn = pBufferVehicle->bEngineOn; + pVehicle->bIsHandbrakeOn = pBufferVehicle->bIsHandbrakeOn; + pVehicle->bLightsOn = pBufferVehicle->bLightsOn; + pVehicle->bFreebies = pBufferVehicle->bFreebies; + pVehicle->m_fHealth = pBufferVehicle->m_fHealth; + pVehicle->m_nCurrentGear = pBufferVehicle->m_nCurrentGear; + pVehicle->m_fChangeGearTime = pBufferVehicle->m_fChangeGearTime; + pVehicle->m_nTimeOfDeath = pBufferVehicle->m_nTimeOfDeath; +#ifdef FIX_BUGS //must be copypaste + pVehicle->m_nBombTimer = pBufferVehicle->m_nBombTimer; +#else + pVehicle->m_nTimeOfDeath = pBufferVehicle->m_nTimeOfDeath; +#endif + pVehicle->m_nDoorLock = pBufferVehicle->m_nDoorLock; + pVehicle->m_status = pBufferVehicle->m_status; + pVehicle->m_type = pBufferVehicle->m_type; + (pVehicle->GetAddressOfEntityProperties())[0] = (pBufferVehicle->GetAddressOfEntityProperties())[0]; + (pVehicle->GetAddressOfEntityProperties())[1] = (pBufferVehicle->GetAddressOfEntityProperties())[1]; + pVehicle->AutoPilot = pBufferVehicle->AutoPilot; + CWorld::Add(pVehicle); + delete[] vbuf; + } +VALIDATESAVEBUF(size) +} + +void CPools::SaveVehiclePool(uint8* buf, uint32* size) +{ +INITSAVEBUF + int nNumCars = 0; + int nNumBoats = 0; + int nPoolSize = GetVehiclePool()->GetSize(); + for (int i = 0; i < nPoolSize; i++) { + CVehicle* pVehicle = GetVehiclePool()->GetSlot(i); + if (!pVehicle) + continue; + bool bHasPassenger = false; + for (int j = 0; j < 8; j++) { + if (pVehicle->pPassengers[i]) + bHasPassenger = true; + } + if (!pVehicle->pDriver && !bHasPassenger) { + if (pVehicle->IsCar() && pVehicle->VehicleCreatedBy == MISSION_VEHICLE) + ++nNumCars; + if (pVehicle->IsBoat() && pVehicle->VehicleCreatedBy == MISSION_VEHICLE) + ++nNumBoats; + } + } + *size = nNumCars * (sizeof(uint32) + sizeof(int16) + sizeof(int32) + sizeof(CAutomobile)) + sizeof(int) + + nNumBoats * (sizeof(uint32) + sizeof(int16) + sizeof(int32) + sizeof(CBoat)) + sizeof(int); + WriteSaveBuf(buf, nNumCars); + WriteSaveBuf(buf, nNumBoats); + for (int i = 0; i < nPoolSize; i++) { + CVehicle* pVehicle = GetVehiclePool()->GetSlot(i); + if (!pVehicle) + continue; + bool bHasPassenger = false; + for (int j = 0; j < 8; j++) { + if (pVehicle->pPassengers[j]) + bHasPassenger = true; + } + if (!pVehicle->pDriver && !bHasPassenger) { + if (pVehicle->IsCar() && pVehicle->VehicleCreatedBy == MISSION_VEHICLE) { + WriteSaveBuf(buf, (uint32)pVehicle->m_vehType); + WriteSaveBuf(buf, pVehicle->m_modelIndex); + WriteSaveBuf(buf, GetVehicleRef(pVehicle)); + memcpy(buf, pVehicle, sizeof(CAutomobile)); + SkipSaveBuf(buf, sizeof(CAutomobile)); + } + if (pVehicle->IsBoat() && pVehicle->VehicleCreatedBy == MISSION_VEHICLE) { + WriteSaveBuf(buf, (uint32)pVehicle->m_vehType); + WriteSaveBuf(buf, pVehicle->m_modelIndex); + WriteSaveBuf(buf, GetVehicleRef(pVehicle)); + memcpy(buf, pVehicle, sizeof(CBoat)); + SkipSaveBuf(buf, sizeof(CBoat)); + } + } + } +VALIDATESAVEBUF(*size) +} + +void CPools::SaveObjectPool(uint8* buf, uint32* size) +{ +INITSAVEBUF + CProjectileInfo::RemoveAllProjectiles(); + CObject::DeleteAllTempObjects(); + int nObjects = 0; + int nPoolSize = GetObjectPool()->GetSize(); + for (int i = 0; i < nPoolSize; i++) { + CObject* pObject = GetObjectPool()->GetSlot(i); + if (!pObject) + continue; + if (pObject->ObjectCreatedBy == MISSION_OBJECT) + ++nObjects; + } + *size = nObjects * (sizeof(int16) + sizeof(int) + sizeof(CCompressedMatrixNotAligned) + sizeof(uint32) + + sizeof(float) + sizeof(CCompressedMatrixNotAligned) + sizeof(uint32) + sizeof(int8) + 7 * sizeof(bool) + sizeof(float) + + sizeof(int8) + sizeof(int8) + sizeof(uint32) + 2 * sizeof(uint32)) + sizeof(int); + WriteSaveBuf(buf, nObjects); + for (int i = 0; i < nPoolSize; i++) { + CObject* pObject = GetObjectPool()->GetSlot(i); + if (!pObject) + continue; + if (pObject->ObjectCreatedBy == MISSION_OBJECT) { + bool bIsPickup = pObject->bIsPickup; + bool bFlag2 = pObject->m_obj_flag2; + bool bOutOfStock = pObject->bOutOfStock; + bool bGlassCracked = pObject->bGlassCracked; + bool bGlassBroken = pObject->bGlassBroken; + bool bHasBeenDamaged = pObject->bHasBeenDamaged; + bool bUseVehicleColours = pObject->bUseVehicleColours; + CCompressedMatrixNotAligned tmp; + WriteSaveBuf(buf, pObject->m_modelIndex); + WriteSaveBuf(buf, GetObjectRef(pObject)); + tmp.CompressFromFullMatrix(pObject->GetMatrix()); + WriteSaveBuf(buf, tmp); + WriteSaveBuf(buf, (uint32)0); // game writes ununitialized data here + WriteSaveBuf(buf, pObject->m_fUprootLimit); + tmp.CompressFromFullMatrix(pObject->m_objectMatrix); + WriteSaveBuf(buf, tmp); + WriteSaveBuf(buf, (uint32)0); // same + WriteSaveBuf(buf, pObject->ObjectCreatedBy); + WriteSaveBuf(buf, bIsPickup); + WriteSaveBuf(buf, bFlag2); + WriteSaveBuf(buf, bOutOfStock); + WriteSaveBuf(buf, bGlassCracked); + WriteSaveBuf(buf, bGlassBroken); + WriteSaveBuf(buf, bHasBeenDamaged); + WriteSaveBuf(buf, bUseVehicleColours); + WriteSaveBuf(buf, pObject->m_fCollisionDamageMultiplier); + WriteSaveBuf(buf, pObject->m_nCollisionDamageEffect); + WriteSaveBuf(buf, pObject->m_nSpecialCollisionResponseCases); + WriteSaveBuf(buf, pObject->m_nEndOfLifeTime); + WriteSaveBuf(buf, (pObject->GetAddressOfEntityProperties())[0]); + WriteSaveBuf(buf, (pObject->GetAddressOfEntityProperties())[1]); + } + } +VALIDATESAVEBUF(*size) +} + +void CPools::LoadObjectPool(uint8* buf, uint32 size) +{ +INITSAVEBUF + int nObjects = ReadSaveBuf(buf); + for (int i = 0; i < nObjects; i++) { + int16 mi = ReadSaveBuf(buf); + int ref = ReadSaveBuf(buf); + char* obuf = new char[sizeof(CObject)]; + CObject* pBufferObject = (CObject*)obuf; + CCompressedMatrixNotAligned tmp; + tmp = ReadSaveBuf(buf); + tmp.DecompressIntoFullMatrix(pBufferObject->GetMatrix()); + ReadSaveBuf(buf); + pBufferObject->m_fUprootLimit = ReadSaveBuf(buf); + tmp = ReadSaveBuf(buf); + tmp.DecompressIntoFullMatrix(pBufferObject->m_objectMatrix); + ReadSaveBuf(buf); + pBufferObject->ObjectCreatedBy = ReadSaveBuf(buf); + pBufferObject->bIsPickup = ReadSaveBuf(buf); + pBufferObject->m_flagE2 = ReadSaveBuf(buf); + pBufferObject->bOutOfStock = ReadSaveBuf(buf); + pBufferObject->bGlassCracked = ReadSaveBuf(buf); + pBufferObject->bGlassBroken = ReadSaveBuf(buf); + pBufferObject->bHasBeenDamaged = ReadSaveBuf(buf); + pBufferObject->bUseVehicleColours = ReadSaveBuf(buf); + pBufferObject->m_fCollisionDamageMultiplier = ReadSaveBuf(buf); + pBufferObject->m_nCollisionDamageEffect = ReadSaveBuf(buf); + pBufferObject->m_nSpecialCollisionResponseCases = ReadSaveBuf(buf); + pBufferObject->m_nEndOfLifeTime = ReadSaveBuf(buf); + (pBufferObject->GetAddressOfEntityProperties())[0] = ReadSaveBuf(buf); + (pBufferObject->GetAddressOfEntityProperties())[1] = ReadSaveBuf(buf); + if (GetObjectPool()->GetSlot(ref >> 8)) + CPopulation::ConvertToDummyObject(GetObjectPool()->GetSlot(ref >> 8)); + CObject* pObject = new(ref) CObject(mi, false); + pObject->GetMatrix() = pBufferObject->GetMatrix(); + pObject->m_fUprootLimit = pBufferObject->m_fUprootLimit; + pObject->m_objectMatrix = pBufferObject->m_objectMatrix; + pObject->ObjectCreatedBy = pBufferObject->ObjectCreatedBy; + pObject->bIsPickup = pBufferObject->bIsPickup; + pObject->m_flagE2 = pBufferObject->m_flagE2; + pObject->bOutOfStock = pBufferObject->bOutOfStock; + pObject->bGlassCracked = pBufferObject->bGlassCracked; + pObject->bGlassBroken = pBufferObject->bGlassBroken; + pObject->bHasBeenDamaged = pBufferObject->bHasBeenDamaged; + pObject->bUseVehicleColours = pBufferObject->bUseVehicleColours; + pObject->m_fCollisionDamageMultiplier = pBufferObject->m_fCollisionDamageMultiplier; + pObject->m_nCollisionDamageEffect = pBufferObject->m_nCollisionDamageEffect; + pObject->m_nSpecialCollisionResponseCases = pBufferObject->m_nSpecialCollisionResponseCases; + pObject->m_nEndOfLifeTime = pBufferObject->m_nEndOfLifeTime; + (pObject->GetAddressOfEntityProperties())[0] = (pBufferObject->GetAddressOfEntityProperties())[0]; + (pObject->GetAddressOfEntityProperties())[1] = (pBufferObject->GetAddressOfEntityProperties())[1]; + pObject->bHasCollided = false; + CWorld::Add(pObject); + delete[] obuf; + } +VALIDATESAVEBUF(size) +} + +void CPools::SavePedPool(uint8* buf, uint32* size) +{ +INITSAVEBUF + int nNumPeds = 0; + int nPoolSize = GetPedPool()->GetSize(); + for (int i = 0; i < nPoolSize; i++) { + CPed* pPed = GetPedPool()->GetSlot(i); + if (!pPed) + continue; + if (!pPed->bInVehicle && pPed->m_nPedType == PEDTYPE_PLAYER1) + nNumPeds++; + } + *size = sizeof(int) + nNumPeds * (sizeof(uint32) + sizeof(int16) + sizeof(int) + sizeof(CPlayerPed) + + sizeof(CWanted::MaximumWantedLevel) + sizeof(CWanted::nMaximumWantedLevel) + MAX_MODEL_NAME); + WriteSaveBuf(buf, nNumPeds); + for (int i = 0; i < nPoolSize; i++) { + CPed* pPed = GetPedPool()->GetSlot(i); + if (!pPed) + continue; + if (!pPed->bInVehicle && pPed->m_nPedType == PEDTYPE_PLAYER1) { + WriteSaveBuf(buf, pPed->m_nPedType); + WriteSaveBuf(buf, pPed->m_modelIndex); + WriteSaveBuf(buf, GetPedRef(pPed)); + memcpy(buf, pPed, sizeof(CPlayerPed)); + SkipSaveBuf(buf, sizeof(CPlayerPed)); + WriteSaveBuf(buf, CWanted::MaximumWantedLevel); + WriteSaveBuf(buf, CWanted::nMaximumWantedLevel); + memcpy(buf, CModelInfo::GetModelInfo(pPed->GetModelIndex())->GetName(), MAX_MODEL_NAME); + SkipSaveBuf(buf, MAX_MODEL_NAME); + } + } +VALIDATESAVEBUF(*size); +} + +void CPools::LoadPedPool(uint8* buf, uint32 size) +{ +INITSAVEBUF + int nPeds = ReadSaveBuf(buf); + for (int i = 0; i < nPeds; i++) { + uint32 pedtype = ReadSaveBuf(buf); + int16 model = ReadSaveBuf(buf); + int ref = ReadSaveBuf(buf); + char* pbuf = new char[sizeof(CPlayerPed)]; + CPlayerPed* pBufferPlayer = (CPlayerPed*)pbuf; + CPed* pPed; + char name[MAX_MODEL_NAME]; + // the code implies that there was idea to load non-player ped + if (pedtype == PEDTYPE_PLAYER1) { // always true + memcpy(pbuf, buf, sizeof(CPlayerPed)); + SkipSaveBuf(buf, sizeof(CPlayerPed)); + CWanted::MaximumWantedLevel = ReadSaveBuf(buf); + CWanted::nMaximumWantedLevel = ReadSaveBuf(buf); + memcpy(name, buf, MAX_MODEL_NAME); + SkipSaveBuf(buf, MAX_MODEL_NAME); + } + CStreaming::RequestSpecialModel(model, name, STREAMFLAGS_DONT_REMOVE); + CStreaming::LoadAllRequestedModels(false); + if (pedtype == PEDTYPE_PLAYER1) { + CPlayerPed* pPlayerPed = new(ref) CPlayerPed(); + for (int i = 0; i < ARRAY_SIZE(pPlayerPed->m_nTargettableObjects); i++) + pPlayerPed->m_nTargettableObjects[i] = pBufferPlayer->m_nTargettableObjects[i]; + pPlayerPed->m_fMaxStamina = pBufferPlayer->m_fMaxStamina; + pPed = pPlayerPed; + } + pPed->GetPosition() = pBufferPlayer->GetPosition(); + pPed->m_fHealth = pBufferPlayer->m_fHealth; + pPed->m_fArmour = pBufferPlayer->m_fArmour; + pPed->CharCreatedBy = pBufferPlayer->CharCreatedBy; + pPed->m_currentWeapon = 0; + pPed->m_maxWeaponTypeAllowed = pBufferPlayer->m_maxWeaponTypeAllowed; + for (int i = 0; i < WEAPONTYPE_TOTAL_INVENTORY_WEAPONS; i++) + pPed->m_weapons[i] = pBufferPlayer->m_weapons[i]; + if (pedtype == PEDTYPE_PLAYER1) { + pPed->m_wepAccuracy = 100; + CWorld::Players[0].m_pPed = (CPlayerPed*)pPed; + } + CWorld::Add(pPed); + delete[] pbuf; + } +VALIDATESAVEBUF(size) +} STARTPATCHES InjectHook(0x4A1770, CPools::Initialise, PATCH_JUMP); @@ -111,4 +437,7 @@ STARTPATCHES InjectHook(0x4A1B00, CPools::GetObjectRef, PATCH_JUMP); InjectHook(0x4A1B20, CPools::GetObject, PATCH_JUMP); InjectHook(0x4A2DB0, CPools::MakeSureSlotInObjectPoolIsEmpty, PATCH_JUMP); + InjectHook(0x4A1B40, CPools::LoadVehiclePool, PATCH_JUMP); + InjectHook(0x4A2550, CPools::LoadObjectPool, PATCH_JUMP); + InjectHook(0x4A2B50, CPools::LoadPedPool, PATCH_JUMP); ENDPATCHES diff --git a/src/entities/Entity.h b/src/entities/Entity.h index 99cc7f17..e3a5333e 100644 --- a/src/entities/Entity.h +++ b/src/entities/Entity.h @@ -90,6 +90,7 @@ public: CReference *m_pFirstReference; CColModel *GetColModel(void) { return CModelInfo::GetModelInfo(m_modelIndex)->GetColModel(); } + uint32* GetAddressOfEntityProperties() { /* AWFUL */ return (uint32*)((char*)&m_rwObject + sizeof(m_rwObject)); } CEntity(void); ~CEntity(void); diff --git a/src/modelinfo/BaseModelInfo.h b/src/modelinfo/BaseModelInfo.h index a9bafb64..0c4bf934 100644 --- a/src/modelinfo/BaseModelInfo.h +++ b/src/modelinfo/BaseModelInfo.h @@ -2,6 +2,8 @@ #include "Collision.h" +#define MAX_MODEL_NAME (24) + enum ModeInfoType : uint8 { MITYPE_NA = 0, @@ -21,7 +23,7 @@ class CBaseModelInfo { protected: // TODO?: make more things protected - char m_name[24]; + char m_name[MAX_MODEL_NAME]; CColModel *m_colModel; C2dEffect *m_twodEffects; int16 m_objectId; diff --git a/src/objects/Object.cpp b/src/objects/Object.cpp index aa366aa0..ba9145a8 100644 --- a/src/objects/Object.cpp +++ b/src/objects/Object.cpp @@ -12,6 +12,7 @@ WRAPPER void CObject::DeleteAllTempObjectInArea(CVector, float) { EAXJMP(0x4BBED WRAPPER void CObject::Init(void) { EAXJMP(0x4BAEC0); } WRAPPER void CObject::ProcessControl(void) { EAXJMP(0x4BB040); } WRAPPER void CObject::Teleport(CVector) { EAXJMP(0x4BBDA0); } +WRAPPER void CObject::DeleteAllTempObjects() { EAXJMP(0x4BBDF0); } int16 &CObject::nNoTempObjects = *(int16*)0x95CCA2; int16 &CObject::nBodyCastHealth = *(int16*)0x5F7D4C; // 1000 diff --git a/src/objects/Object.h b/src/objects/Object.h index 27346e23..4adc7883 100644 --- a/src/objects/Object.h +++ b/src/objects/Object.h @@ -85,5 +85,6 @@ public: bool CanBeDeleted(void); static void DeleteAllTempObjectInArea(CVector, float); + static void DeleteAllTempObjects(); }; static_assert(sizeof(CObject) == 0x198, "CObject: error"); diff --git a/src/vehicles/Vehicle.h b/src/vehicles/Vehicle.h index c7be3674..d3664626 100644 --- a/src/vehicles/Vehicle.h +++ b/src/vehicles/Vehicle.h @@ -130,7 +130,8 @@ public: int8 m_nGettingInFlags; int8 m_nGettingOutFlags; uint8 m_nNumMaxPassengers; - char field_1CD[19]; + char field_1CD[3]; + float field_1D0[4]; CEntity *m_pCurGroundEntity; CFire *m_pCarFire; float m_fSteerAngle; From b48617dfde65a228cab72439f57a3763587137f9 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sat, 11 Apr 2020 21:09:52 +0300 Subject: [PATCH 076/112] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index ca708494..6f8b6d8a 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,6 @@ CMenuManager - WIP CObject CPacManPickups CPedPath -CPools - save/loading CRoadBlocks CWeapon CWorld From daceee593be76fe7d681e3b8c9101b02c058d186 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 11 Apr 2020 18:37:20 +0300 Subject: [PATCH 077/112] Link with RW libs --- premake5.lua | 22 +- src/core/common.h | 2 + src/core/re3.cpp | 4 + .../RwClumpRead.cpp => rw/ClumpRead.cpp} | 0 src/{render => rw}/Lights.cpp | 0 src/{render => rw}/Lights.h | 0 src/{core => rw}/NodeName.cpp | 0 src/{core => rw}/NodeName.h | 0 src/{core => rw}/RwHelper.cpp | 0 src/{core => rw}/RwHelper.h | 0 src/{core => rw}/RwMatFX.cpp | 0 src/{core/RwTexRead.cpp => rw/TexRead.cpp} | 4 + src/{core => rw}/TxdStore.cpp | 0 src/{core => rw}/TxdStore.h | 0 src/{render => rw}/VisibilityPlugins.cpp | 0 src/{render => rw}/VisibilityPlugins.h | 0 src/{core => rw}/rw.cpp | 428 +++++++++++++++++- 17 files changed, 457 insertions(+), 3 deletions(-) rename src/{core/RwClumpRead.cpp => rw/ClumpRead.cpp} (100%) rename src/{render => rw}/Lights.cpp (100%) rename src/{render => rw}/Lights.h (100%) rename src/{core => rw}/NodeName.cpp (100%) rename src/{core => rw}/NodeName.h (100%) rename src/{core => rw}/RwHelper.cpp (100%) rename src/{core => rw}/RwHelper.h (100%) rename src/{core => rw}/RwMatFX.cpp (100%) rename src/{core/RwTexRead.cpp => rw/TexRead.cpp} (98%) rename src/{core => rw}/TxdStore.cpp (100%) rename src/{core => rw}/TxdStore.h (100%) rename src/{render => rw}/VisibilityPlugins.cpp (100%) rename src/{render => rw}/VisibilityPlugins.h (100%) rename src/{core => rw}/rw.cpp (62%) diff --git a/premake5.lua b/premake5.lua index 9e3609b6..4ec2eca1 100644 --- a/premake5.lua +++ b/premake5.lua @@ -1,5 +1,5 @@ workspace "re3" - configurations { "Debug", "Release", "ReleaseFH" } + configurations { "Debug", "Release", "ReleaseFH", "DebugRW", "ReleaseRW" } location "build" files { "src/*.*" } @@ -13,6 +13,7 @@ workspace "re3" files { "src/objects/*.*" } files { "src/peds/*.*" } files { "src/render/*.*" } + files { "src/rw/*.*" } files { "src/save/*.*" } files { "src/skel/*.*" } files { "src/skel/win/*.*" } @@ -32,6 +33,7 @@ workspace "re3" includedirs { "src/objects" } includedirs { "src/peds" } includedirs { "src/render" } + includedirs { "src/rw" } includedirs { "src/save/" } includedirs { "src/skel/" } includedirs { "src/skel/win" } @@ -47,6 +49,12 @@ workspace "re3" libdirs { "dxsdk/lib" } libdirs { "milessdk/lib" } + + filter "configurations:DebugRW or configurations:ReleaseRW" + defines { "RWLIBS" } + libdirs { "rwsdk/lib/d3d8/release" } + links { "rwcore", "rpworld", "rpmatfx", "rpskin", "rphanim", "rtbmp" } + filter {} pbcommands = { "setlocal EnableDelayedExpansion", @@ -102,3 +110,15 @@ project "re3" staticruntime "on" targetextension ".asi" setpaths("$(GTA_III_RE_DIR)/", "gta3.exe", "scripts/") + + filter "configurations:DebugRW" + defines { "DEBUG" } + staticruntime "on" + symbols "On" + setpaths("$(GTA_III_RE_DIR)/", "gta3.exe", "plugins/") + + filter "configurations:ReleaseRW" + defines { "NDEBUG" } + optimize "On" + staticruntime "on" + setpaths("$(GTA_III_RE_DIR)/", "gta3.exe", "plugins/") diff --git a/src/core/common.h b/src/core/common.h index 6ea88f2f..7688b182 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -74,9 +74,11 @@ inline uint32 ldb(uint32 p, uint32 s, uint32 w) } +#ifndef RWLIBS // little hack extern void **rwengine; #define RwEngineInstance (*rwengine) +#endif #include "skeleton.h" #include "Draw.h" diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 11b1584a..40e44b15 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -24,7 +24,11 @@ #include +#ifndef RWLIBS void **rwengine = *(void***)0x5A10E1; +#else +extern "C" int vsprintf(char* const _Buffer, char const* const _Format, va_list _ArgList); +#endif DebugMenuAPI gDebugMenuAPI; diff --git a/src/core/RwClumpRead.cpp b/src/rw/ClumpRead.cpp similarity index 100% rename from src/core/RwClumpRead.cpp rename to src/rw/ClumpRead.cpp diff --git a/src/render/Lights.cpp b/src/rw/Lights.cpp similarity index 100% rename from src/render/Lights.cpp rename to src/rw/Lights.cpp diff --git a/src/render/Lights.h b/src/rw/Lights.h similarity index 100% rename from src/render/Lights.h rename to src/rw/Lights.h diff --git a/src/core/NodeName.cpp b/src/rw/NodeName.cpp similarity index 100% rename from src/core/NodeName.cpp rename to src/rw/NodeName.cpp diff --git a/src/core/NodeName.h b/src/rw/NodeName.h similarity index 100% rename from src/core/NodeName.h rename to src/rw/NodeName.h diff --git a/src/core/RwHelper.cpp b/src/rw/RwHelper.cpp similarity index 100% rename from src/core/RwHelper.cpp rename to src/rw/RwHelper.cpp diff --git a/src/core/RwHelper.h b/src/rw/RwHelper.h similarity index 100% rename from src/core/RwHelper.h rename to src/rw/RwHelper.h diff --git a/src/core/RwMatFX.cpp b/src/rw/RwMatFX.cpp similarity index 100% rename from src/core/RwMatFX.cpp rename to src/rw/RwMatFX.cpp diff --git a/src/core/RwTexRead.cpp b/src/rw/TexRead.cpp similarity index 98% rename from src/core/RwTexRead.cpp rename to src/rw/TexRead.cpp index 49b245dd..50b99d47 100644 --- a/src/core/RwTexRead.cpp +++ b/src/rw/TexRead.cpp @@ -147,7 +147,11 @@ RwTexDictionaryGtaStreamRead2(RwStream *stream, RwTexDictionary *texDict) } #ifdef GTA_PC +#ifdef RWLIBS +extern "C" RwInt32 _rwD3D8FindCorrectRasterFormat(RwRasterType type, RwInt32 flags); +#else WRAPPER RwInt32 _rwD3D8FindCorrectRasterFormat(RwRasterType type, RwInt32 flags) { EAXJMP(0x59A350); } +#endif void ReadVideoCardCapsFile(uint32 &cap32, uint32 &cap24, uint32 &cap16, uint32 &cap8) diff --git a/src/core/TxdStore.cpp b/src/rw/TxdStore.cpp similarity index 100% rename from src/core/TxdStore.cpp rename to src/rw/TxdStore.cpp diff --git a/src/core/TxdStore.h b/src/rw/TxdStore.h similarity index 100% rename from src/core/TxdStore.h rename to src/rw/TxdStore.h diff --git a/src/render/VisibilityPlugins.cpp b/src/rw/VisibilityPlugins.cpp similarity index 100% rename from src/render/VisibilityPlugins.cpp rename to src/rw/VisibilityPlugins.cpp diff --git a/src/render/VisibilityPlugins.h b/src/rw/VisibilityPlugins.h similarity index 100% rename from src/render/VisibilityPlugins.h rename to src/rw/VisibilityPlugins.h diff --git a/src/core/rw.cpp b/src/rw/rw.cpp similarity index 62% rename from src/core/rw.cpp rename to src/rw/rw.cpp index 52bcf5bb..3875f2a1 100644 --- a/src/core/rw.cpp +++ b/src/rw/rw.cpp @@ -11,7 +11,8 @@ typedef RwV3d *(*rwVectorsMultFn) (RwV3d * pointsOut, const RwV3d * pointsIn, RwInt32 numPoints, const RwMatrix * matrix); - + +#ifndef RWLIBS WRAPPER void _rwObjectHasFrameSetFrame(void* object, RwFrame* frame) { EAXJMP(0x5BC950); } WRAPPER RpAtomic* AtomicDefaultRenderCallBack(RpAtomic* atomic) { EAXJMP(0x59E690); } @@ -412,4 +413,427 @@ WRAPPER RxNodeDefinition* RxNodeDefinitionGetAtomicEnumerateLights() { EAXJMP(0x WRAPPER RxNodeDefinition* RxNodeDefinitionGetMaterialScatter() { EAXJMP(0x5DDAA0); } WRAPPER RxNodeDefinition* RxNodeDefinitionGetLight() { EAXJMP(0x5DF040); } WRAPPER RxNodeDefinition* RxNodeDefinitionGetPostLight() { EAXJMP(0x5DF560); } -WRAPPER void RxD3D8AllInOneSetRenderCallBack(RxPipelineNode* node, RxD3D8AllInOneRenderCallBack callback) { EAXJMP(0x5DFC60); } \ No newline at end of file +WRAPPER void RxD3D8AllInOneSetRenderCallBack(RxPipelineNode* node, RxD3D8AllInOneRenderCallBack callback) { EAXJMP(0x5DFC60); } +#else + +extern "C" +{ + void* _rwFrameOpen(void* instance, RwInt32 offset, RwInt32 size); + void* _rwFrameClose(void* instance, RwInt32 offset, RwInt32 size); + RwFrame* _rwFrameCloneAndLinkClones(RwFrame* root); + RwFrame* _rwFramePurgeClone(RwFrame* root); + RwBool RwFrameDirty(RwFrame const* frame); + void _rwFrameInit(RwFrame* frame); + RwBool _rwMatrixSetMultFn(rwMatrixMultFn multMat); + void* _rwMatrixClose(void* instance, RwInt32 offset, RwInt32 size); + void* _rwMatrixOpen(void* instance, RwInt32 offset, RwInt32 size); + RwBool _rwVectorSetMultFn(rwVectorMultFn multPoint, rwVectorsMultFn multPoints, rwVectorMultFn multVector, rwVectorsMultFn multVectors); + void* _rwVectorClose(void* instance, RwInt32 offset, RwInt32 size); + void* _rwVectorOpen(void* instance, RwInt32 offset, RwInt32 size); + RwBool _rwPluginRegistryOpen(); + RwBool _rwPluginRegistryClose(); +} + +STARTPATCHES +InjectHook(0x5BC950, &_rwObjectHasFrameSetFrame, PATCH_JUMP); +InjectHook(0x59E690, &AtomicDefaultRenderCallBack, PATCH_JUMP); +InjectHook(0x59E6C0, &_rpAtomicResyncInterpolatedSphere, PATCH_JUMP); +InjectHook(0x59E800, &RpAtomicGetWorldBoundingSphere, PATCH_JUMP); +InjectHook(0x59ED50, &RpClumpGetNumAtomics, PATCH_JUMP); +InjectHook(0x59ED80, &RpClumpRender, PATCH_JUMP); +InjectHook(0x59EDD0, &RpClumpForAllAtomics, PATCH_JUMP); +InjectHook(0x59EE10, &RpClumpForAllCameras, PATCH_JUMP); +InjectHook(0x59EE60, &RpClumpForAllLights, PATCH_JUMP); +InjectHook(0x59EEB0, &RpAtomicCreate, PATCH_JUMP); +InjectHook(0x59EFA0, &RpAtomicSetGeometry, PATCH_JUMP); +InjectHook(0x59F020, &RpAtomicDestroy, PATCH_JUMP); +InjectHook(0x59F0A0, &RpAtomicClone, PATCH_JUMP); +InjectHook(0x59F1B0, &RpClumpClone, PATCH_JUMP); +InjectHook(0x59F490, &RpClumpCreate, PATCH_JUMP); +InjectHook(0x59F500, &RpClumpDestroy, PATCH_JUMP); +InjectHook(0x59F680, &RpClumpAddAtomic, PATCH_JUMP); +InjectHook(0x59F6B0, &RpClumpRemoveAtomic, PATCH_JUMP); +InjectHook(0x59F6E0, &RpClumpRemoveLight, PATCH_JUMP); +InjectHook(0x59FC50, &RpClumpStreamRead, PATCH_JUMP); +InjectHook(0x5A0510, &RpAtomicRegisterPlugin, PATCH_JUMP); +InjectHook(0x5A0540, &RpClumpRegisterPlugin, PATCH_JUMP); +InjectHook(0x5A0570, &RpAtomicRegisterPluginStream, PATCH_JUMP); +InjectHook(0x5A05A0, &RpAtomicSetStreamAlwaysCallBack, PATCH_JUMP); +InjectHook(0x5A05C0, &RpAtomicSetStreamRightsCallBack, PATCH_JUMP); +InjectHook(0x5A05E0, &RpAtomicGetPluginOffset, PATCH_JUMP); +InjectHook(0x5A0600, &RpAtomicSetFrame, PATCH_JUMP); +InjectHook(0x5A0DC0, &RwEngineRegisterPlugin, PATCH_JUMP); +InjectHook(0x5A0DF0, &RwEngineGetPluginOffset, PATCH_JUMP); +InjectHook(0x5A0E10, &RwEngineGetNumSubSystems, PATCH_JUMP); +InjectHook(0x5A0E40, &RwEngineGetSubSystemInfo, PATCH_JUMP); +InjectHook(0x5A0E70, &RwEngineGetCurrentSubSystem, PATCH_JUMP); +InjectHook(0x5A0EA0, &RwEngineSetSubSystem, PATCH_JUMP); +InjectHook(0x5A0ED0, &RwEngineGetNumVideoModes, PATCH_JUMP); +InjectHook(0x5A0F00, &RwEngineGetVideoModeInfo, PATCH_JUMP); +InjectHook(0x5A0F30, &RwEngineGetCurrentVideoMode, PATCH_JUMP); +InjectHook(0x5A0F60, &RwEngineSetVideoMode, PATCH_JUMP); +InjectHook(0x5A0F90, &RwEngineStop, PATCH_JUMP); +InjectHook(0x5A0FE0, &RwEngineStart, PATCH_JUMP); +InjectHook(0x5A1070, &RwEngineClose, PATCH_JUMP); +InjectHook(0x5A10E0, &RwEngineOpen, PATCH_JUMP); +InjectHook(0x5A1290, &RwEngineTerm, PATCH_JUMP); +InjectHook(0x5A12D0, &RwEngineInit, PATCH_JUMP); +InjectHook(0x5A15E0, &_rwFrameOpen, PATCH_JUMP); +InjectHook(0x5A1650, &_rwFrameClose, PATCH_JUMP); +InjectHook(0x5A1690, &_rwFrameCloneAndLinkClones, PATCH_JUMP); +InjectHook(0x5A1880, &_rwFramePurgeClone, PATCH_JUMP); +InjectHook(0x5A1930, &RwFrameDirty, PATCH_JUMP); +InjectHook(0x5A1950, &_rwFrameInit, PATCH_JUMP); +InjectHook(0x5A1A00, &RwFrameCreate, PATCH_JUMP); +InjectHook(0x5A1A30, &RwFrameDestroy, PATCH_JUMP); +InjectHook(0x5A1BF0, &RwFrameDestroyHierarchy, PATCH_JUMP); +InjectHook(0x5A1C60, &RwFrameUpdateObjects, PATCH_JUMP); +InjectHook(0x5A1CE0, &RwFrameGetLTM, PATCH_JUMP); +InjectHook(0x5A1D00, &RwFrameAddChild, PATCH_JUMP); +InjectHook(0x5A1ED0, &RwFrameRemoveChild, PATCH_JUMP); +InjectHook(0x5A1FC0, &RwFrameForAllChildren, PATCH_JUMP); +InjectHook(0x5A2000, &RwFrameTranslate, PATCH_JUMP); +InjectHook(0x5A20A0, &RwFrameScale, PATCH_JUMP); +InjectHook(0x5A2140, &RwFrameTransform, PATCH_JUMP); +InjectHook(0x5A21E0, &RwFrameRotate, PATCH_JUMP); +InjectHook(0x5A2280, &RwFrameSetIdentity, PATCH_JUMP); +InjectHook(0x5A2340, &RwFrameForAllObjects, PATCH_JUMP); +InjectHook(0x5A2380, &RwFrameRegisterPlugin, PATCH_JUMP); +InjectHook(0x5A23B0, &_rwMatrixSetMultFn, PATCH_JUMP); +InjectHook(0x5A2520, &_rwMatrixDeterminant, PATCH_JUMP); +InjectHook(0x5A2570, &_rwMatrixOrthogonalError, PATCH_JUMP); +InjectHook(0x5A25D0, &_rwMatrixNormalError, PATCH_JUMP); +InjectHook(0x5A2660, &_rwMatrixIdentityError, PATCH_JUMP); +InjectHook(0x5A2730, &_rwMatrixClose, PATCH_JUMP); +InjectHook(0x5A2770, &_rwMatrixOpen, PATCH_JUMP); +InjectHook(0x5A2820, &RwMatrixOptimize, PATCH_JUMP); +InjectHook(0x5A28E0, &RwMatrixUpdate, PATCH_JUMP); +InjectHook(0x5A28F0, &RwMatrixMultiply, PATCH_JUMP); +InjectHook(0x5A2960, &RwMatrixRotateOneMinusCosineSine, PATCH_JUMP); +InjectHook(0x5A2BF0, &RwMatrixRotate, PATCH_JUMP); +InjectHook(0x5A2C90, &RwMatrixInvert, PATCH_JUMP); +InjectHook(0x5A2EE0, &RwMatrixScale, PATCH_JUMP); +InjectHook(0x5A3070, &RwMatrixTranslate, PATCH_JUMP); +InjectHook(0x5A31C0, &RwMatrixTransform, PATCH_JUMP); +InjectHook(0x5A3300, &RwMatrixDestroy, PATCH_JUMP); +InjectHook(0x5A3330, &RwMatrixCreate, PATCH_JUMP); +InjectHook(0x5A3450, &_rwVectorSetMultFn, PATCH_JUMP); +InjectHook(0x5A3600, &_rwV3dNormalize, PATCH_JUMP); +InjectHook(0x5A36A0, &RwV3dLength, PATCH_JUMP); +InjectHook(0x5A3710, &_rwSqrt, PATCH_JUMP); +InjectHook(0x5A3770, &_rwInvSqrt, PATCH_JUMP); +InjectHook(0x5A37D0, &RwV3dTransformPoints, PATCH_JUMP); +InjectHook(0x5A37E0, &RwV3dTransformVectors, PATCH_JUMP); +InjectHook(0x5A37F0, &_rwVectorClose, PATCH_JUMP); +InjectHook(0x5A3860, &_rwVectorOpen, PATCH_JUMP); +InjectHook(0x5A3AD0, &RwStreamRead, PATCH_JUMP); +InjectHook(0x5A3C30, &RwStreamWrite, PATCH_JUMP); +InjectHook(0x5A3DF0, &RwStreamSkip, PATCH_JUMP); +InjectHook(0x5A3F10, &RwStreamClose, PATCH_JUMP); +InjectHook(0x5A3FE0, &RwStreamOpen, PATCH_JUMP); +InjectHook(0x5A43A0, &RwIm2DGetNearScreenZ, PATCH_JUMP); +InjectHook(0x5A43B0, &RwIm2DGetFarScreenZ, PATCH_JUMP); +InjectHook(0x5A43C0, &RwRenderStateSet, PATCH_JUMP); +InjectHook(0x5A4410, &RwRenderStateGet, PATCH_JUMP); +InjectHook(0x5A4420, &RwIm2DRenderLine, PATCH_JUMP); +InjectHook(0x5A4430, &RwIm2DRenderPrimitive, PATCH_JUMP); +InjectHook(0x5A4440, &RwIm2DRenderIndexedPrimitive, PATCH_JUMP); +InjectHook(0x5A5020, &RwCameraEndUpdate, PATCH_JUMP); +InjectHook(0x5A5030, &RwCameraBeginUpdate, PATCH_JUMP); +InjectHook(0x5A5040, &RwCameraSetViewOffset, PATCH_JUMP); +InjectHook(0x5A5070, &RwCameraSetNearClipPlane, PATCH_JUMP); +InjectHook(0x5A5140, &RwCameraSetFarClipPlane, PATCH_JUMP); +InjectHook(0x5A5170, &RwCameraFrustumTestSphere, PATCH_JUMP); +InjectHook(0x5A51E0, &RwCameraClear, PATCH_JUMP); +InjectHook(0x5A5210, &RwCameraShowRaster, PATCH_JUMP); +InjectHook(0x5A5240, &RwCameraSetProjection, PATCH_JUMP); +InjectHook(0x5A52B0, &RwCameraSetViewWindow, PATCH_JUMP); +InjectHook(0x5A52F0, &RwCameraRegisterPlugin, PATCH_JUMP); +InjectHook(0x5A5320, &RwCameraDestroy, PATCH_JUMP); +InjectHook(0x5A5360, &RwCameraCreate, PATCH_JUMP); +InjectHook(0x5A7100, &RwTextureSetMipmapping, PATCH_JUMP); +InjectHook(0x5A7120, &RwTextureGetMipmapping, PATCH_JUMP); +InjectHook(0x5A7130, &RwTextureSetAutoMipmapping, PATCH_JUMP); +InjectHook(0x5A7150, &RwTextureGetAutoMipmapping, PATCH_JUMP); +InjectHook(0x5A7160, &RwTexDictionaryCreate, PATCH_JUMP); +InjectHook(0x5A7200, &RwTexDictionaryDestroy, PATCH_JUMP); +InjectHook(0x5A7290, &RwTexDictionaryForAllTextures, PATCH_JUMP); +InjectHook(0x5A72D0, &RwTextureCreate, PATCH_JUMP); +InjectHook(0x5A7330, &RwTextureDestroy, PATCH_JUMP); +InjectHook(0x5A73B0, &RwTextureSetName, PATCH_JUMP); +InjectHook(0x5A7420, &RwTextureSetMaskName, PATCH_JUMP); +InjectHook(0x5A7490, &RwTexDictionaryAddTexture, PATCH_JUMP); +InjectHook(0x5A74D0, &RwTexDictionaryFindNamedTexture, PATCH_JUMP); +InjectHook(0x5A7550, &RwTexDictionarySetCurrent, PATCH_JUMP); +InjectHook(0x5A7570, &RwTexDictionaryGetCurrent, PATCH_JUMP); +InjectHook(0x5A7580, &RwTextureRead, PATCH_JUMP); +InjectHook(0x5A7780, &RwTextureRasterGenerateMipmaps, PATCH_JUMP); +InjectHook(0x5A9120, &RwImageCreate, PATCH_JUMP); +InjectHook(0x5A9180, &RwImageDestroy, PATCH_JUMP); +InjectHook(0x5A91E0, &RwImageAllocatePixels, PATCH_JUMP); +InjectHook(0x5A92A0, &RwImageFreePixels, PATCH_JUMP); +InjectHook(0x5A92D0, &RwImageMakeMask, PATCH_JUMP); +InjectHook(0x5A93A0, &RwImageApplyMask, PATCH_JUMP); +InjectHook(0x5A9750, &RwImageSetPath, PATCH_JUMP); +InjectHook(0x5A9810, &RwImageRead, PATCH_JUMP); +InjectHook(0x5A9B40, &RwImageFindFileType, PATCH_JUMP); +InjectHook(0x5A9C10, &RwImageReadMaskedImage, PATCH_JUMP); +InjectHook(0x5A9F50, &RwImageCopy, PATCH_JUMP); +InjectHook(0x5AA130, &RwImageGammaCorrect, PATCH_JUMP); +InjectHook(0x5AA2C0, &RwImageSetGamma, PATCH_JUMP); +InjectHook(0x5AA4E0, &_rwStreamWriteVersionedChunkHeader, PATCH_JUMP); +InjectHook(0x5AA540, &RwStreamFindChunk, PATCH_JUMP); +InjectHook(0x5AA640, &RwMemLittleEndian32, PATCH_JUMP); +InjectHook(0x5AA650, &RwMemNative32, PATCH_JUMP); +InjectHook(0x5AA660, &RwMemFloat32ToReal, PATCH_JUMP); +InjectHook(0x5AA680, &RwStreamWriteReal, PATCH_JUMP); +InjectHook(0x5AA720, &RwStreamWriteInt32, PATCH_JUMP); +InjectHook(0x5AA740, &RwStreamReadReal, PATCH_JUMP); +InjectHook(0x5AA7B0, &RwStreamReadInt32, PATCH_JUMP); +InjectHook(0x5AA800, &RwTextureStreamGetSize, PATCH_JUMP); +InjectHook(0x5AA870, &RwTextureStreamWrite, PATCH_JUMP); +InjectHook(0x5AAA40, &RwTextureStreamRead, PATCH_JUMP); +InjectHook(0x5AB020, &RwTexDictionaryStreamWrite, PATCH_JUMP); +InjectHook(0x5AC890, &RpMorphTargetCalcBoundingSphere, PATCH_JUMP); +InjectHook(0x5AC9A0, &RpGeometryAddMorphTargets, PATCH_JUMP); +InjectHook(0x5ACB60, &RpGeometryTriangleSetVertexIndices, PATCH_JUMP); +InjectHook(0x5ACB90, &RpGeometryTriangleSetMaterial, PATCH_JUMP); +InjectHook(0x5ACBF0, &RpGeometryForAllMaterials, PATCH_JUMP); +InjectHook(0x5ACC30, &RpGeometryLock, PATCH_JUMP); +InjectHook(0x5ACC60, &RpGeometryUnlock, PATCH_JUMP); +InjectHook(0x5ACD10, &RpGeometryCreate, PATCH_JUMP); +InjectHook(0x5ACF40, &_rpGeometryAddRef, PATCH_JUMP); +InjectHook(0x5ACF50, &RpGeometryDestroy, PATCH_JUMP); +InjectHook(0x5ACFF0, &RpGeometryRegisterPlugin, PATCH_JUMP); +InjectHook(0x5AD020, &RpGeometryRegisterPluginStream, PATCH_JUMP); +InjectHook(0x5AD050, &RpGeometryStreamRead, PATCH_JUMP); +InjectHook(0x5AD6D0, &RwRasterGetCurrentContext, PATCH_JUMP); +InjectHook(0x5AD6F0, &RwRasterUnlock, PATCH_JUMP); +InjectHook(0x5AD710, &RwRasterRenderFast, PATCH_JUMP); +InjectHook(0x5AD750, &RwRasterUnlockPalette, PATCH_JUMP); +InjectHook(0x5AD780, &RwRasterDestroy, PATCH_JUMP); +InjectHook(0x5AD7C0, &RwRasterPushContext, PATCH_JUMP); +InjectHook(0x5AD810, &RwRasterRegisterPlugin, PATCH_JUMP); +InjectHook(0x5AD840, &RwRasterLockPalette, PATCH_JUMP); +InjectHook(0x5AD870, &RwRasterPopContext, PATCH_JUMP); +InjectHook(0x5AD8C0, &RwRasterGetNumLevels, PATCH_JUMP); +InjectHook(0x5AD900, &RwRasterShowRaster, PATCH_JUMP); +InjectHook(0x5AD930, &RwRasterCreate, PATCH_JUMP); +InjectHook(0x5AD9D0, &RwRasterLock, PATCH_JUMP); +InjectHook(0x5ADC30, &RpMaterialCreate, PATCH_JUMP); +InjectHook(0x5ADCB0, &RpMaterialDestroy, PATCH_JUMP); +InjectHook(0x5ADD10, &RpMaterialSetTexture, PATCH_JUMP); +InjectHook(0x5ADD40, &RpMaterialRegisterPlugin, PATCH_JUMP); +InjectHook(0x5ADD70, &RpMaterialRegisterPluginStream, PATCH_JUMP); +InjectHook(0x5ADDA0, &RpMaterialStreamRead, PATCH_JUMP); +InjectHook(0x5AE0B0, &_rpSectorDefaultRenderCallBack, PATCH_JUMP); +InjectHook(0x5AE100, &_rpWorldForAllGlobalLights, PATCH_JUMP); +InjectHook(0x5AE150, &_rpWorldSectorForAllLocalLights, PATCH_JUMP); +InjectHook(0x5AE190, &RpWorldUnlock, PATCH_JUMP); +InjectHook(0x5AE2B0, &RpWorldSectorGetWorld, PATCH_JUMP); +InjectHook(0x5AE340, &RpWorldDestroy, PATCH_JUMP); +InjectHook(0x5AE6A0, &RpWorldCreate, PATCH_JUMP); +InjectHook(0x5AEA40, &RpWorldRegisterPlugin, PATCH_JUMP); +InjectHook(0x5AEA70, &RpWorldRegisterPluginStream, PATCH_JUMP); +InjectHook(0x5AEAA0, &RpWorldPluginAttach, PATCH_JUMP); +InjectHook(0x5AFB80, &RpWorldAddCamera, PATCH_JUMP); +InjectHook(0x5AFBB0, &RpWorldRemoveCamera, PATCH_JUMP); +InjectHook(0x5AFC10, &RpAtomicGetWorld, PATCH_JUMP); +InjectHook(0x5AFC20, &RpWorldAddClump, PATCH_JUMP); +InjectHook(0x5AFDA0, &RpWorldAddLight, PATCH_JUMP); +InjectHook(0x5AFDF0, &RpWorldRemoveLight, PATCH_JUMP); +InjectHook(0x5AFE70, &RtBMPImageRead, PATCH_JUMP); +InjectHook(0x5B07D0, &RpSkinPluginAttach, PATCH_JUMP); +InjectHook(0x5B1050, &RpSkinAtomicSetHAnimHierarchy, PATCH_JUMP); +InjectHook(0x5B1070, &RpSkinAtomicGetHAnimHierarchy, PATCH_JUMP); +InjectHook(0x5B1080, &RpSkinGeometryGetSkin, PATCH_JUMP); +InjectHook(0x5B1090, &RpSkinGeometrySetSkin, PATCH_JUMP); +InjectHook(0x5B10D0, &RpSkinGetSkinToBoneMatrices, PATCH_JUMP); +InjectHook(0x5B10E0, &RpHAnimHierarchyCreate, PATCH_JUMP); +InjectHook(0x5B11F0, &RpHAnimFrameGetHierarchy, PATCH_JUMP); +InjectHook(0x5B1200, &RpHAnimHierarchySetCurrentAnim, PATCH_JUMP); +InjectHook(0x5B12B0, &RpHAnimHierarchySubAnimTime, PATCH_JUMP); +InjectHook(0x5B1480, &RpHAnimHierarchyAddAnimTime, PATCH_JUMP); +InjectHook(0x5B1780, &RpHAnimHierarchyUpdateMatrices, PATCH_JUMP); +InjectHook(0x5B1C10, &RpHAnimAnimationStreamRead, PATCH_JUMP); +InjectHook(0x5B1D50, &RpHAnimPluginAttach, PATCH_JUMP); +InjectHook(0x5B2640, &RpMatFXPluginAttach, PATCH_JUMP); +InjectHook(0x5B3750, &RpMatFXAtomicEnableEffects, PATCH_JUMP); +InjectHook(0x5B3780, &RpMatFXMaterialSetEffects, PATCH_JUMP); +InjectHook(0x5B38D0, &RpMatFXMaterialSetupEnvMap, PATCH_JUMP); +InjectHook(0x5B3A40, &RpMatFXMaterialSetBumpMapTexture, PATCH_JUMP); +InjectHook(0x5B3CF0, &RwD3D8SetRenderState, PATCH_JUMP); +InjectHook(0x5B3D40, &RwD3D8GetRenderState, PATCH_JUMP); +InjectHook(0x5B3D60, &RwD3D8SetTextureStageState, PATCH_JUMP); +InjectHook(0x5B53A0, &RwD3D8SetTexture, PATCH_JUMP); +InjectHook(0x5B6720, &RwIm3DTransform, PATCH_JUMP); +InjectHook(0x5B67F0, &RwIm3DEnd, PATCH_JUMP); +InjectHook(0x5B6820, &RwIm3DRenderIndexedPrimitive, PATCH_JUMP); +InjectHook(0x5B6980, &RwIm3DRenderLine, PATCH_JUMP); +InjectHook(0x5B6A50, &RwIm3DSetTransformPipeline, PATCH_JUMP); +InjectHook(0x5B6AC0, &RwIm3DSetRenderPipeline, PATCH_JUMP); +InjectHook(0x5B95D0, &RwD3D8EngineSetRefreshRate, PATCH_JUMP); +InjectHook(0x5B9640, &RwD3D8CameraAttachWindow, PATCH_JUMP); +InjectHook(0x5BAEB0, &RwD3D8DeviceSupportsDXTTexture, PATCH_JUMP); +InjectHook(0x5BAF90, &RwD3D8SetVertexShader, PATCH_JUMP); +InjectHook(0x5BAFD0, &RwD3D8SetPixelShader, PATCH_JUMP); +InjectHook(0x5BB010, &RwD3D8SetStreamSource, PATCH_JUMP); +InjectHook(0x5BB060, &RwD3D8SetIndices, PATCH_JUMP); +InjectHook(0x5BB0B0, &RwD3D8DrawIndexedPrimitive, PATCH_JUMP); +InjectHook(0x5BB140, &RwD3D8DrawPrimitive, PATCH_JUMP); +InjectHook(0x5BB1D0, &RwD3D8SetTransform, PATCH_JUMP); +InjectHook(0x5BB310, &RwD3D8GetTransform, PATCH_JUMP); +InjectHook(0x5BB340, &RwD3D8SetTransformWorld, PATCH_JUMP); +InjectHook(0x5BB490, &RwD3D8SetSurfaceProperties, PATCH_JUMP); +InjectHook(0x5BB7A0, &RwD3D8SetLight, PATCH_JUMP); +InjectHook(0x5BB890, &RwD3D8EnableLight, PATCH_JUMP); +InjectHook(0x5BB9F0, &RwD3D8DynamicVertexBufferCreate, PATCH_JUMP); +InjectHook(0x5BBAE0, &RwD3D8DynamicVertexBufferDestroy, PATCH_JUMP); +InjectHook(0x5BBB10, &RwD3D8IndexBufferCreate, PATCH_JUMP); +InjectHook(0x5BBB40, &RwD3D8CreatePixelShader, PATCH_JUMP); +InjectHook(0x5BBB90, &RwD3D8DeletePixelShader, PATCH_JUMP); +InjectHook(0x5BBC00, &RwD3D8SetPixelShaderConstant, PATCH_JUMP); +InjectHook(0x5BBC30, &RwD3D8GetCaps, PATCH_JUMP); +InjectHook(0x5BBC40, &RwD3D8CameraIsSphereFullyInsideFrustum, PATCH_JUMP); +InjectHook(0x5BBCA0, &RwD3D8CameraIsBBoxFullyInsideFrustum, PATCH_JUMP); +InjectHook(0x5BBD30, &RwD3D8DynamicVertexBufferLock, PATCH_JUMP); +InjectHook(0x5BBEB0, &RwD3D8DynamicVertexBufferUnlock, PATCH_JUMP); +InjectHook(0x5BBED0, &_rwIntelSSEsupported, PATCH_JUMP); +InjectHook(0x5BBF10, &RwImageSetFromRaster, PATCH_JUMP); +InjectHook(0x5BBF50, &RwRasterSetFromImage, PATCH_JUMP); +InjectHook(0x5BBF80, &RwImageFindRasterFormat, PATCH_JUMP); +InjectHook(0x5BBFF0, &RwFrameRegisterPluginStream, PATCH_JUMP); +InjectHook(0x5BC020, &_rwFrameListDeinitialize, PATCH_JUMP); +InjectHook(0x5BC050, &_rwFrameListStreamRead, PATCH_JUMP); +InjectHook(0x5BC300, &RpLightSetRadius, PATCH_JUMP); +InjectHook(0x5BC320, &RpLightSetColor, PATCH_JUMP); +InjectHook(0x5BC370, &RpLightGetConeAngle, PATCH_JUMP); +InjectHook(0x5BC5B0, &RpLightRegisterPlugin, PATCH_JUMP); +InjectHook(0x5BC5E0, &RpLightStreamRead, PATCH_JUMP); +InjectHook(0x5BC780, &RpLightDestroy, PATCH_JUMP); +InjectHook(0x5BC7C0, &RpLightCreate, PATCH_JUMP); +InjectHook(0x5BE280, &_rwD3D8TexDictionaryEnableRasterFormatConversion, PATCH_JUMP); +InjectHook(0x5BF110, &RwOsGetFileInterface, PATCH_JUMP); +InjectHook(0x5C1720, &RwFreeListDestroy, PATCH_JUMP); +InjectHook(0x5C1790, &RwFreeListCreate, PATCH_JUMP); +InjectHook(0x5C19F0, &RwFreeListPurge, PATCH_JUMP); +InjectHook(0x5C1B90, &RwFreeListPurgeAllFreeLists, PATCH_JUMP); +InjectHook(0x5C1D40, &RwFreeListForAllUsed, PATCH_JUMP); +InjectHook(0x5C2780, &_rxPipelineClose, PATCH_JUMP); +InjectHook(0x5C27E0, &_rxPipelineOpen, PATCH_JUMP); +InjectHook(0x5C2AD0, &RxHeapGetGlobalHeap, PATCH_JUMP); +InjectHook(0x5C2AE0, &RxPacketCreate, PATCH_JUMP); +InjectHook(0x5C2B10, &RxClusterSetExternalData, PATCH_JUMP); +InjectHook(0x5C2B70, &RxClusterSetData, PATCH_JUMP); +InjectHook(0x5C2BD0, &RxClusterInitializeData, PATCH_JUMP); +InjectHook(0x5C2C40, &RxClusterResizeData, PATCH_JUMP); +InjectHook(0x5C2C90, &RxClusterLockWrite, PATCH_JUMP); +InjectHook(0x5C2D60, &RxPipelineExecute, PATCH_JUMP); +InjectHook(0x5C2E00, &RxPipelineCreate, PATCH_JUMP); +InjectHook(0x5C2E70, &_rxPipelineDestroy, PATCH_JUMP); +InjectHook(0x5C3080, &RwResourcesFreeResEntry, PATCH_JUMP); +InjectHook(0x5C30F0, &_rwResourcesPurge, PATCH_JUMP); +InjectHook(0x5C3170, &RwResourcesAllocateResEntry, PATCH_JUMP); +InjectHook(0x5C3360, &RwResourcesEmptyArena, PATCH_JUMP); +InjectHook(0x5C3450, &_rwPluginRegistryOpen, PATCH_JUMP); +InjectHook(0x5C3480, &_rwPluginRegistryClose, PATCH_JUMP); +InjectHook(0x5C3590, &_rwPluginRegistryGetPluginOffset, PATCH_JUMP); +InjectHook(0x5C35C0, &_rwPluginRegistryAddPlugin, PATCH_JUMP); +InjectHook(0x5C37F0, &_rwPluginRegistryInitObject, PATCH_JUMP); +InjectHook(0x5C3850, &_rwPluginRegistryDeInitObject, PATCH_JUMP); +InjectHook(0x5C3880, &_rwPluginRegistryCopyObject, PATCH_JUMP); +InjectHook(0x5C3910, &RwErrorSet, PATCH_JUMP); +InjectHook(0x5C3970, &_rwerror, PATCH_JUMP); +InjectHook(0x5C3980, &_rwPluginRegistryAddPluginStream, PATCH_JUMP); +InjectHook(0x5C39C0, &_rwPluginRegistryAddPlgnStrmlwysCB, PATCH_JUMP); +InjectHook(0x5C39F0, &_rwPluginRegistryAddPlgnStrmRightsCB, PATCH_JUMP); +InjectHook(0x5C3A20, & _rwPluginRegistryReadDataChunks, PATCH_JUMP); +InjectHook(0x5C3B50, & _rwPluginRegistryInvokeRights, PATCH_JUMP); +InjectHook(0x5C3BA0, &_rwPluginRegistryGetSize, PATCH_JUMP); +InjectHook(0x5C3BE0, &_rwPluginRegistryWriteDataChunks, PATCH_JUMP); +InjectHook(0x5C3CB0, &_rwPluginRegistrySkipDataChunks, PATCH_JUMP); +InjectHook(0x5C3D30, &RwCameraStreamRead, PATCH_JUMP); +InjectHook(0x5C5570, &RwBBoxCalculate, PATCH_JUMP); +InjectHook(0x5C72B0, &RwImageResample, PATCH_JUMP); +InjectHook(0x5C7B30, &RwImageCreateResample, PATCH_JUMP); +InjectHook(0x5D9240, &RxRenderStateVectorSetDefaultRenderStateVector, PATCH_JUMP); +InjectHook(0x5D9340, &RxRenderStateVectorCreate, PATCH_JUMP); +InjectHook(0x5D9410, &RxRenderStateVectorDestroy, PATCH_JUMP); +InjectHook(0x5D9460, &RxRenderStateVectorLoadDriverState, PATCH_JUMP); +InjectHook(0x5D95D0, &_rxEmbeddedPacketBetweenPipelines, PATCH_JUMP); +InjectHook(0x5D9740, &_rxEmbeddedPacketBetweenNodes, PATCH_JUMP); +InjectHook(0x5D9810, &_rxPacketDestroy, PATCH_JUMP); +InjectHook(0x5C8B10, &_rpMaterialListDeinitialize, PATCH_JUMP); +InjectHook(0x5C8B70, &_rpMaterialListInitialize, PATCH_JUMP); +InjectHook(0x5C8B80, &_rpMaterialListGetMaterial, PATCH_JUMP); +InjectHook(0x5C8B90, &_rpMaterialListAppendMaterial, PATCH_JUMP); +InjectHook(0x5C8C50, &_rpMaterialListFindMaterialIndex, PATCH_JUMP); +InjectHook(0x5C8C80, &_rpMaterialListStreamRead, PATCH_JUMP); +InjectHook(0x5C8FE0, &_rpMeshHeaderCreate, PATCH_JUMP); +InjectHook(0x5C8FF0, &_rpMeshClose, PATCH_JUMP); +InjectHook(0x5C9020, &_rpMeshOpen, PATCH_JUMP); +InjectHook(0x5C9140, &_rpBuildMeshCreate, PATCH_JUMP); +InjectHook(0x5C9220, &_rpBuildMeshDestroy, PATCH_JUMP); +InjectHook(0x5C9260, &_rpMeshDestroy, PATCH_JUMP); +InjectHook(0x5C92A0, &_rpBuildMeshAddTriangle, PATCH_JUMP); +InjectHook(0x5C9380, &_rpMeshHeaderForAllMeshes, PATCH_JUMP); +InjectHook(0x5C93C0, &_rpMeshWrite, PATCH_JUMP); +InjectHook(0x5C9510, &_rpMeshRead, PATCH_JUMP); +InjectHook(0x5C96E0, &_rpMeshSize, PATCH_JUMP); +InjectHook(0x5C9730, &RpBuildMeshGenerateDefaultTriStrip, PATCH_JUMP); +InjectHook(0x5CAE10, &_rpTriListMeshGenerate, PATCH_JUMP); +InjectHook(0x5CB230, &_rpMeshOptimise, PATCH_JUMP); +InjectHook(0x5CB2B0, &RpWorldSectorRegisterPlugin, PATCH_JUMP); +InjectHook(0x5CB2E0, &RpWorldSectorRegisterPluginStream, PATCH_JUMP); +InjectHook(0x5CB630, &RpWorldSetDefaultSectorPipeline, PATCH_JUMP); +InjectHook(0x5CB670, &RpAtomicSetDefaultPipeline, PATCH_JUMP); +InjectHook(0x5CDEE0, &RpHAnimStdKeyFrameToMatrix, PATCH_JUMP); +InjectHook(0x5CE000, &RpHAnimStdKeyFrameInterpolate, PATCH_JUMP); +InjectHook(0x5CE420, &RpHAnimStdKeyFrameBlend, PATCH_JUMP); +InjectHook(0x5CE820, &RpHAnimStdKeyFrameStreamRead, PATCH_JUMP); +InjectHook(0x5CE8C0, &RpHAnimStdKeyFrameStreamWrite, PATCH_JUMP); +InjectHook(0x5CE930, &RpHAnimStdKeyFrameStreamGetSize, PATCH_JUMP); +InjectHook(0x5CE950, &RpHAnimStdKeyFrameMulRecip, PATCH_JUMP); +InjectHook(0x5CEAB0, &RpHAnimStdKeyFrameAdd, PATCH_JUMP); +InjectHook(0x5D1070, &RxHeapFree, PATCH_JUMP); +InjectHook(0x5D1260, &RxHeapAlloc, PATCH_JUMP); +InjectHook(0x5D14D0, &RxHeapRealloc, PATCH_JUMP); +InjectHook(0x5D1680, &_rxHeapReset, PATCH_JUMP); +InjectHook(0x5D16F0, &RxHeapDestroy, PATCH_JUMP); +InjectHook(0x5D1750, &RxHeapCreate, PATCH_JUMP); +InjectHook(0x5D1EC0, &RxPipelineNodeFindOutputByName, PATCH_JUMP); +InjectHook(0x5D1F20, &RxPipelineNodeFindInput, PATCH_JUMP); +InjectHook(0x5D1F30, &RxPipelineNodeRequestCluster, PATCH_JUMP); +InjectHook(0x5D1FA0, &RxLockedPipeUnlock, PATCH_JUMP); +InjectHook(0x5D29F0, &RxPipelineLock, PATCH_JUMP); +InjectHook(0x5D2B10, &RxPipelineFindNodeByName, PATCH_JUMP); +InjectHook(0x5D2BA0, &RxLockedPipeAddFragment, PATCH_JUMP); +InjectHook(0x5D2EE0, &RxLockedPipeAddPath, PATCH_JUMP); +InjectHook(0x5D31C0, &RxNodeDefinitionGetImmRenderSetup, PATCH_JUMP); +InjectHook(0x5D35C0, &RxNodeDefinitionGetImmMangleTriangleIndices, PATCH_JUMP); +InjectHook(0x5D3C60, &RxNodeDefinitionGetCullTriangle, PATCH_JUMP); +InjectHook(0x5D4F80, &RxNodeDefinitionGetClipTriangle, PATCH_JUMP); +InjectHook(0x5D51C0, &RxNodeDefinitionGetSubmitTriangle, PATCH_JUMP); +InjectHook(0x5D5400, &RxNodeDefinitionGetImmInstance, PATCH_JUMP); +InjectHook(0x5D6000, &RxNodeDefinitionGetTransform, PATCH_JUMP); +InjectHook(0x5D61C0, &RxNodeDefinitionGetImmStash, PATCH_JUMP); +InjectHook(0x5D6470, &RxNodeDefinitionGetImmMangleLineIndices, PATCH_JUMP); +InjectHook(0x5D7230, &RxNodeDefinitionGetClipLine, PATCH_JUMP); +InjectHook(0x5D74C0, &RxNodeDefinitionGetSubmitLine, PATCH_JUMP); +InjectHook(0x5D9C90, &_rwD3D8LightsOpen, PATCH_JUMP); +InjectHook(0x5D9EF0, &_rwD3D8LightsClose, PATCH_JUMP); +InjectHook(0x5D9F80, &_rwD3D8LightsGlobalEnable, PATCH_JUMP); +InjectHook(0x5DA210, &_rwD3D8LightLocalEnable, PATCH_JUMP); +InjectHook(0x5DA450, &_rwD3D8LightsEnable, PATCH_JUMP); +InjectHook(0x5DAAC0, &RxNodeDefinitionGetD3D8WorldSectorAllInOne, PATCH_JUMP); +InjectHook(0x5DC500, &RxNodeDefinitionGetD3D8AtomicAllInOne, PATCH_JUMP); +InjectHook(0x5DCC50, &RxNodeDefinitionGetWorldSectorInstance, PATCH_JUMP); +InjectHook(0x5DCD80, &RxNodeDefinitionGetWorldSectorEnumerateLights, PATCH_JUMP); +InjectHook(0x5DD800, &RxNodeDefinitionGetAtomicInstance, PATCH_JUMP); +InjectHook(0x5DD9B0, &RxNodeDefinitionGetAtomicEnumerateLights, PATCH_JUMP); +InjectHook(0x5DDAA0, &RxNodeDefinitionGetMaterialScatter, PATCH_JUMP); +InjectHook(0x5DF040, &RxNodeDefinitionGetLight, PATCH_JUMP); +InjectHook(0x5DF560, &RxNodeDefinitionGetPostLight, PATCH_JUMP); +InjectHook(0x5DFC60, &RxD3D8AllInOneSetRenderCallBack, PATCH_JUMP); +ENDPATCHES +#endif \ No newline at end of file From 60898f39f2527bcef0a2617a8e6081f361c11708 Mon Sep 17 00:00:00 2001 From: saml1er Date: Sun, 12 Apr 2020 02:08:16 +0500 Subject: [PATCH 078/112] Improve CRoadBlocks code --- src/control/RoadBlocks.cpp | 39 +++++++++----------------------------- 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/src/control/RoadBlocks.cpp b/src/control/RoadBlocks.cpp index 6adcba6b..5f98b942 100644 --- a/src/control/RoadBlocks.cpp +++ b/src/control/RoadBlocks.cpp @@ -44,7 +44,7 @@ CRoadBlocks::Init(void) void CRoadBlocks::GenerateRoadBlockCopsForCar(CVehicle* pVehicle, int32 roadBlockType, int16 roadBlockNode) { - CVector vecRoadBlockOffets[6] = { {-1.5, 1.8f, 0.0f}, {-1.5f, -1.8f, 0.0f}, {1.5f, 1.8f, 0.0f}, + static const CVector vecRoadBlockOffets[6] = { {-1.5, 1.8f, 0.0f}, {-1.5f, -1.8f, 0.0f}, {1.5f, 1.8f, 0.0f}, {1.5f, -1.8f, 0.0f}, {-1.5f, 0.0f, 0.0f}, {1.5, 0.0, 0.0} }; CEntity* pEntityToAttack = (CEntity*)FindPlayerVehicle(); if (!pEntityToAttack) @@ -54,7 +54,7 @@ CRoadBlocks::GenerateRoadBlockCopsForCar(CVehicle* pVehicle, int32 roadBlockType for (int32 i = 0; i < 2; i++) { const int32 roadBlockIndex = i + 2 * roadBlockType; CVector posForZ = pVehicle->m_matrix * (fRadius * vecRoadBlockOffets[roadBlockIndex]); - int32 modelInfoId = 0; + int32 modelInfoId = MI_COP; eCopType copType = COP_STREET; switch (pVehicle->GetModelIndex()) { @@ -62,23 +62,6 @@ CRoadBlocks::GenerateRoadBlockCopsForCar(CVehicle* pVehicle, int32 roadBlockType modelInfoId = MI_FBI; copType = COP_FBI; break; - case MI_MOONBEAM: - case MI_ESPERANT: - case MI_TAXI: - case MI_KURUMA: - case MI_BOBCAT: - case MI_MRWHOOP: - case MI_BFINJECT: - case MI_CORPSE: - case MI_POLICE: - case MI_SECURICA: - case MI_BANSHEE: - case MI_PREDATOR: - case MI_BUS: - case MI_RHINO: - copType = COP_STREET; - modelInfoId = MI_COP; - break; case MI_ENFORCER: modelInfoId = MI_SWAT; copType = COP_SWAT; @@ -121,7 +104,7 @@ void CRoadBlocks::GenerateRoadBlocks(void) { CMatrix offsetMatrix; - unsigned int frame = CTimer::GetFrameCounter() & 0xF; + uint32 frame = CTimer::GetFrameCounter() & 0xF; int16 nRoadblockNode = (int16)(600 * frame) / 16; const int16 maxRoadBlocks = (int16)(600 * (frame + 1)) / 16; int16 numRoadBlocks = CRoadBlocks::NumRoadBlocks; @@ -137,11 +120,9 @@ CRoadBlocks::GenerateRoadBlocks(void) if (direction.Magnitude() < 80.0f) { CRoadBlocks::InOrOut[nRoadblockNode] = false; continue; - } - else if (!CRoadBlocks::InOrOut[nRoadblockNode]) { + } else if (!CRoadBlocks::InOrOut[nRoadblockNode]) { CRoadBlocks::InOrOut[nRoadblockNode] = true; - } - else { + } else { continue; } if (!FindPlayerVehicle()) @@ -173,8 +154,7 @@ CRoadBlocks::GenerateRoadBlocks(void) uint8 nRoadblockType = fDotProduct >= 0.0f; if (CGeneral::GetRandomNumber() & 1) { offsetMatrix.SetRotateZ(((CGeneral::GetRandomNumber() & 0xFF) - 128.0f) * 0.003f + HALFPI); - } - else { + } else { nRoadblockType = fDotProduct < 0.0f; offsetMatrix.SetRotateZ(((CGeneral::GetRandomNumber() & 0xFF) - 128.0f) * 0.003f - HALFPI); } @@ -208,15 +188,14 @@ CRoadBlocks::GenerateRoadBlocks(void) pVehicle->bExtendedRange = true; if (pVehicle->UsesSiren(pVehicle->GetModelIndex()) && CGeneral::GetRandomNumber() & 1) pVehicle->m_bSirenOrAlarm = true; - if (pVehicle->m_matrix.GetForward().z <= 0.94f) { - delete pVehicle; - } - else { + if (pVehicle->m_matrix.GetForward().z > 0.94f) { CVisibilityPlugins::SetClumpAlpha(pVehicle->GetClump(), 0); CWorld::Add(pVehicle); pVehicle->bCreateRoadBlockPeds = true; pVehicle->m_nRoadblockType = nRoadblockType; pVehicle->m_nRoadblockNode = nRoadblockNode; + } else { + delete pVehicle; } } } From f2995640bd29157d28c17b4dacab93cad05eadc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Fri, 10 Apr 2020 18:06:49 +0300 Subject: [PATCH 079/112] CMenuManager done and CHud fixes --- README.md | 1 - gamefiles/menu.txd | Bin 10244648 -> 10244648 bytes src/core/Frontend.cpp | 1695 ++++++++++++++++++++++++++------------ src/core/Frontend.h | 94 ++- src/core/MenuScreens.h | 189 +++-- src/core/Radar.cpp | 8 +- src/core/Timer.cpp | 32 +- src/core/Timer.h | 4 + src/core/re3.cpp | 2 + src/peds/CivilianPed.cpp | 12 +- src/render/Hud.cpp | 277 ++++--- src/render/Hud.h | 73 +- 12 files changed, 1580 insertions(+), 807 deletions(-) diff --git a/README.md b/README.md index 9237e8e3..88d99dcd 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,6 @@ to reverse at the time, calling the original functions is acceptable. cAudioManager - WIP CBoat CBulletInfo -CMenuManager - WIP CObject CPacManPickups CPedPath diff --git a/gamefiles/menu.txd b/gamefiles/menu.txd index 8ca5de168facf75936cbf40ebaaa2484fa07e818..f617bcf80d98d50da75c36d48150a91b3eb65082 100644 GIT binary patch literal 10244648 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

      !S|AW^0V;lE}wE^(e{UAA9^*?BTKdA13)kC2A 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�FuQ9EgVTk!ctkBoD$cJ~|DO17Vmrhz-LaF%Smv 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

      lszeza`>N&}#>5tN2uX$O>sL3Jf){vWg_9$!5T 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�FsyABJIk5Dmg0aS)A+L1G{b5`)no zHVA|GAdJq&#fOQ5Xc$J;532j?Q&MoA4+ZiwD6fI~kRUcT3`$p^zBh;-Xbftn5UeZF z>Q0c~(AzekzRY0o6UYrj`3F@0V;RQ)#TUqbqje&pP8>;L0jk$vX&Xexdwc%}_5DFK zC42us^*X3s3QAwd7*s!l$Kt)bD4JIQnGeGl^}oMAN_!pTM-T@234~#6WEz%Wq<=YK_GyZ`d?^8e*!WWj3z zwW?SCH`@L8zu{&aeSc7!0LS=0s4jOlHT~~~rwstA`$6?RNG)jmAJh&2iGeY6{XeW+ z29+nsb2cdTKeUd9)z_f0=<(;zkogVZ3?$ZU`tsO|@0(Apa0@Iq#T(h8{l0Hqsbabz|uZ4Cw* zT>ld@UXIiT0F^JG`X1R&pt2I==YjSU$PL8S{~)!@+YW_0*z&W#uq>|%sx=Q1@S@t!iGV0I!GKw zgV-Pp<0I1`HnH`;ZvTn@a#E82Jp_dI*Hk>n4yG2*bo-Y!DxW zL3|iS=7akGp!5y%ABav148%JA57H0Pi;Q7nAR5$W0JV`pX239d{~uW|hz-(*4I|5e z*dPp22cyy1AU+6VlSdWORoiJctJEXQHHD#+Kedbup~}4=Oh(F(0NERR4qa!h_5P)&C&3 z!~6s)b3o!CF;M*tqhV}hK1d9P(ZykW!u9`O@I1a&^=k0CK5#!@UjDy=vetijH7)R% zznr)Tq+K8*{a>qc$$z7RpuL2k^8!H_#~1*#{|~YswAKpdKT!P-s?S0Fe-Osj1_0IZ z;JRK%2R!}{QV-GxY7>Cukn4X?cpHisR zh5uJpxc*;W>HEL8F6Y07mf?RsKGFZKZr=YFR0aI+a%2AAhe2vV@-Q02hG9_s4@xVr@B`7H@)M>O8x0c!nE_*i`o&G@>Hk6POOP2b zjH~|-(uWO$%tXc@H6T8W2C>mGNDhQy;>c`}7>tjL2C0EzkQ!tR5(n`?Z5z$x4JwC0 zb-^eed2ImXvJf;j2CC;k{UZ6XfH2{&J{p*3#j~o_5VR> z802VHtZ4iZPk$YL-yj7C=n5(i;|^Z%f|e>?yES5IpGFDD}KA5_;XS-AYy z?LYKiZ^E(v+BIwcE9e-5_XL9W2CDj|g6|Lp%^85s3?j7tA5{M%pVthk$3gYEgRwDq zPdmQ)A9VIFX#XEbJ!lR9T>nGQ|3xm#klSr2^*_@5Kj{3v4mali^BWStbN!(Hzpaz^ z|HX|_|NGpS|4;Vi{J*p<@xQs1(|=w*(f=M^{{I(N2mhbs#qvL1pW%O^F~k2ZPt0?G zvDN>eIthe9^%4w&_#h18!)RnSNDPG0#X$8oD4oO72aK*uN%;?w1L=Wbm|hScoeioV zvF(Kitp^0n3xM>%FibCqhGCE#j18kFs{!#r?E;WF$mwe!*&w&T+)XSE@*l{} zApam^(7HyD_&{P}{R8p?C@zrQ4`YMmK;`Br9(naY?CerdS^%X3aJ}c{^&d0_09rSX zT+foi2AKiZ+z@O_zpi%Utcw(0DSI`oT$KmWryJZ#=HLi z*WdKxzvjfV|Bbf%!+xJIQvV<1W>_5!tN%g!`$1(gq59uQT^&9K0Ga~;wE@uk|DbXW z7JfMEe`kjOeLfujC)cL_ms3#x&&wzLKQJi#|KduY{|#0Q|2th6{?D!s{cmCI^q-es z^uMoP@c-r2e*b&j82_vCG5mK^W&Gdkjd`aqdi{@HH-Y#d463VO7@ZFi2Z@0&G8uU98-!tO7!48wVGth~ z!^A)|2!rH6G%^N>fiOr6Mq^`x1 zM1$l;>;92f_k-db6!)Ms0K%X;6jTR-FsOb8)t&h2U3_vNy`cICWG*rW)y*J#LG25C z`bm+4)&HQi1)#nEAiXd_OOT&HGz^3I=olo2EC%AkFi0H42KB!|_we96{}*&G z(8kaIl`P!;gX(uVG2#CjdD9^G{DIB|IQaj+M%D!IxPY9Pz<(9*+5~~ zXB#s7S69{e@2)EVuKz*n0NULd{*hJ{s-;P1BDwp z2CZ=i)&C$p$QYy#nGa)w%)&M|4r&vC`u{L}FdC!}#zv<>av%&7$HzvO1Mxu^rWZzo z#9$aC2Ergdj0Ukm7{rHR5WgcQ=YJ{M`3UG?1*-Qzc@9+XfXWZhoI1K17$4M@91L|N zsNRQRkh@93IM&XC>eIpCH=_LF)G%u|aJNP#sO}`X5x!gZlX(vqA2K*#~OJfa+}+2Kf!d#zlkVKp0&f zCPuLTzy1Gz{l!oID`@Hemjj*sD=zw9yKN_UO#tYQKcn6M|EtG0g3kn!7Zdug9$EHZ zbI-s3E~S0{10!Pp>#Y9t-)JkAF#x3cALJ*{JPK$W8&rpb>V6Og)#acz7y1|gsO|@0 zP+uR^=Le|;Vb~l1di@V7Cqd;lX#57H|Btl(ztN82|GYHa|E*2+|8)$^|C`u&{BNtP z_&+CE>wkkC!~Z^Cw*Ry16aQP;x&0RtllkxK7xI5;UD$tbP5%F_JyZVsTPXc+abWo0 zVL3*2#sgptN)#xM)$^JITwEk*77lYOfz|2LaVf8<#4kOoWbbX*Q2xKm({s+YwsH_3m3Cf?KdK(#o{08E~ zXk<3B7)Tt1VPY^EZ~uSeAMhD|x_w9f%L?)QmlNUz*YkQaF8?>&@&CUesQ ztpBp2LjNTNc>XH}7ycLTx$=MV^x6NX&s+RocIx&2dVBu=H`oC=D+oRofL8y5+yja) z5}KOsEq|I?Rm|GS!K{ZCM5_+M_r^1s-Y@qf8J1NclJ&{zQa`hQT}gj`QyV}rzC z>R>cT3>ky!H_%=`P})GopgaIt%Lh}7OFu{+Sq{|qMK%Y-My~&1>Op!y7{o`%AaQgI zQv(wR@j+~48pH-+kT?i~*f0#@BV%N75E~>1qG1@s2aRWd_@KH3Z5?{1uiLcczj*12|GKN5{Wn-}_rJl)H~&Fn2H-XTTKx|SKaks1V5twN9zBB*8jD8asHp3 zsQG_sw#olxIcEQ-M#}tea)!?7yD8AsR50Rfbt5mU(ng0a6+#8L2Up~KF2k#45}|dX$X{-1`{T#zC^1}LG?eZ ztV9l%!7#o-lz;H_|3Uge<>n|JS>ykpdJQ(F1*$Va^$AD}ghAu!q}2E5YC+`!az25v zL1_(iJ|C$5Lf1nsA5 zzu}tC{|#2W`ERh|^?$=PpCEPkX3*ZgzyCqw|C-I){%dLJ{Ev-{`0pPa`oFWQ=l`Ey zzy6;)fBt_&PR0N9riuS8JVX9#RIdT=4Zv0ZgW77KvKLhE!!T$}A7A|sY6~Er0|43& zfUW-zE3a|Y|Dbbwo1Gc{*H}PswK>E8IvYqI9yC4xs>eHA82-CUG5j~s)&IX?)0Y1S z4;}jd`O6nj_5c6Y-MjzS@7Vv}#x>}_f&kj-XkbV#wM8hyLpAZ`+kBx?jfy_l_fc%AwL2aUe_9LiFB{-ger~U`c0gu-GBdhKQ#W$#r4@=9S zbPTHBK=mUCgVz3o>Tq)EWYD?+P#FO;8<__6nLzigQoa6nbNdfER{%6G4zmx`hJn@p z$bLg+gZv7@Ffn8roekm>uK)jl`}#(^{)6WNK>PaOeRy#D;NO4!UH|{<=1uv(XU7(B zU5HK`+q~+(c}VJijp1Dg9szV{bq4v4OdkN*#GC@!Z1EA z8eI*D55gez$TTt=T@J*DVURkITS03dL2k!~L3Ip9{SP`v56{|vP}&^mx)GL+VKk_% z2XYgrd?E#d{Eltk$YAgzC~hdJ|3Uk-L47h%oiK_=PCEd(ECl5RQ2hp~3qkb?Xq=wx z`rp;{KPaDJD^EcA1yuio`mW@(EwJeU^+7=M|De7<$XuAcp!sq1`XA&+5C-`ZM8hyK ze2^M~>;J%YJdQJbKysip0^9%pS6li1zkNc<{|7g(qSTA~c5L}?8dLmVW$}~$#=HOj zH{1v{3(NRFD4sxl5_e0>|Hxzdmb$v&^N(Tc06~3zaQ%-o2LS5#gX(?|P6`VH?{9*Y zk;pX8{y((-ht>7iXwVr!6Z{zdXXrBiceSzk|M=M}xL=nnTm9cun)`o+732SYZ%Dr% zWCpJKAGywgu|YJb4nwA4Y?wHV52~|4Vj#c4(g%zNm7gFvm|75xjM3#lX5l&;2YLP< zrVpE0xWr(3Kr{#=s{^q?VlWKi!!Sq;#73u)#gN$`bs&G>Y7@c221JAU2B5M4R7N0U zP@M>BJAu?-!=Stl3h%*$LFE#;^*^ZZg6>aH{sWmekbVTk0dl-xW#j4pgW5Ht_5R4I z_hE4jI`GI`qe0>@Hi!mckQl}FKeP>?zvJJ3*`me&m(HC9uMHA}= z|B>q~5F3O+br%eS_~;l}4#Wn@gX%e4{any^6-W&_hUtaTAbAiQWEQq{1fX;Wx(^sO z{|{0N(*t9J_%I9-17Q#!M1wFo8=a4=1||ohv0-GjAT|uc)Pnqhet!YT56Bo)H-PJY zP+uQ?PTbiUXFDHc2B-`e$a)c*-IUb-AoD=}LdKvupnUq1a0sp$K! zuLRUjI~2VoE!9|oyG$Dna;Z0GfX(h4Zufa*eIGhzBcVkqqNbnsmP zpt&ZHUUZxv9*%PV4@fV_3{o&i4-6yg1Brq7FdD>$VUQRI!}u^7CI+HG7$gp&LE(XI zF9foGKzS9^FTgdn3~G0S+VjYIklCQR7Ck);G#}(9qUuZJx)XYS4yd1v>^~SAWZppf z3uHf``X3aJ_{wBZ-wBitM)AlQ2LO$G!qPBk{T!%%1J!k)adS|6093DnXi_n#{|_@4 zod%UDpt&Yc{}p5|xpsi`!Z64TSp5&m2Ov8^`5d&?3+5*f4ZIv#{U^}VH@9=Hu)qNN2t4;a+vhqnQs^*@NOr=kK@3#$J?@d7GG(91D$ z>;D!vhX3834F9Wb82;NEYyZzIs`>A4rTsrpnc=^uiOTM2-#1!99Rh!4UbHVnh~AR2^0;vgD?L2MAlSKooox?Y_JCnt=%Dqwy9<$X|lcC_vvIdwlMu0d%BmIgrk{Xz8`2!qDZVRb9H zG|XId8kE+kJ^v3Xr$A@ogZu=_3m`i|?grKWApgMXau5x}FmYr)NDPKS;vhCUP1O27 zSe=cH2F>U1{{LUAXx9J2=z#wr<^BJaCZGPV*mLB6T4Ck??A-kSs`DTGH{1zb_Xjfr zss9hE`$6p|5C)agpt>J~VdMSia{!>a9^3{%s{2860I)Rxp!y#)UIGd`^fF9Mf)Bht z4^)?f#^+HmQokKV9MqS0hpg#~HDLTNDkS{hQ(qi>_8(|ZK!y>+e;q~X|GKig|65%d z{)5*Eg7mmS)&YRl{|6cffY;-L>NOAs)o~yUV#6>xA6*j1Ln7@j>%@=x&GcLF@TJ^*b1&^@HK{40JvKRL{foA=4ff7FhR`qNlHc;=}!c z%YW$Nc>D_*1HqPe=;1d|84j|WpnnL||D*l?kyZDD;u}i%x_33!r)$RCkeMJ~lm|`X98G5o9i?Ee^61v>p&t|0CDmAT|tx{0U;i zXk<1_3>!^x{ST_ocmDsc5mox%Fuvx$()4Tp^>+OSW7U>j{|&vO|LaaY1vxJm)K&ng z2VqeCzy8O6ea{&1-3*}c1GNJ{aR{pWVHnf~us1UL4?5!qbSDsq53c_~WB(uwY6C#e z0RZj&2elPI^*<=gu$5OT;ynLr9U*;r(4Ie(dLB>x4;uRi-R~2m!}#AxiQ#{h4dk3Z zP~8qX^DkDH;lGm#!~X_n#{ZpI`v1X(0{@ZgD^Q&U;)5`V4Z_H55Fdm=Vjv7+gD{K@ zs{cXfPJsN0jzQz#u=*dS2c!>#vGGA-pfVTT91tH?|AX|xFi1U&jZA~YVHhM1VuNTH zhVgOHAax))7)IxV#9?9}8iYY>6Y$OXgW7?hx&)MmK{PH5lE*b34hjd5IiN7YmZk=S z7%qR|6bIG+PEJ_IOh9>Xp#6%|-LQ5Hp86l;eo)ytibqZx05mraYUhLUDhPw>Iv56x zZG!4lY;`RmF;Kq(loml|;=-V|2goi$W)Uk7aw}-g0c0*{3>;)Hs67Cy|IzDqkli2* z5=X`$F=Pyr1Bt=d`d+dB4L1A$@5cl0%LmoXq~gtg|LaaX^rpteDeHv`z* zM$kRL$okwE{`Yt>{`b>^)c>G53sjGRFfKMo4urAE!^A-KKd6lhN*m}nJ2VtLrw=j% z8H4nqV~{*Z4A#y>Hw&~b5LCy4)PXQaEjAim3|$>a9)z)pgTz1>B#(}f#X)QkhN%Ia zOHh@Vh;UK~b#)m;_K=n9CA2tk1mjhiVg4~A-m`>Ds{cWHLFR(|1Hzy&3{V>fu!RG*>?C%4u3)uSqzww^`kn@7j%rM&V|G&YCSN~1zJyGg^*!n+E zJrBd6`X6)`5a=vmkQliC53Tp%Y|vPMjt+eO9~5TT$}v@W+5b7_4F4ziGW>6bj?trx z0U(PZ)#D&FAobmzjQ@MQ82*Fy0)oU~7&PY(I`<#cPJoGlXpnff7vq0ZIUbbpe^?y` zqLJ$~WIjwBnTD}JWA?DMp&-8^W6(W5p!NaGESMe;4Z|=w5Dhx}2NYJwX2966^?x9B zFpO*lNDRcsMq?9$sRhY_Fg`v=4unDKKp2?~@*fC;>UWr1k!g^BKyrA;{9%1b=z2I@ z^$EyakQ}bMcQA;<>P1p$P#p@IzXbUY8H4K2f%X$2e}LQ$iW6jaBeOyE!D#(Ia_WCj z{Rm38pfmv5*9xxxLHGW8d;bURrGwR}pn8=Q466S@kK6`;-UVQ!uKpj^ z{|Chvs9%fRZ?m}%miT&8-!tO5RHsMav%&7gRwz02xAk6iGgUC8W;@{gJF=HKxr7} zPGlN1R}adwpgMw3Jpz*lsm0b8hM5bRmj;FRV8tN+!u&!k4chMjDl1`rM5aOcW+44a z$UmU?!dL%;%FfaHf8^Bvp!soF`URz1t?Au*Z< zpmqo794nZ8Fgrl@z%Z!%LuRA%VR9fEBnQJFJ_v*OJ{Fe$wae!IH#!J9&;Kv#7(J-2 zrZxt(5w`pV*ZBF{K0xI9A2b$(T>ppr z`2SZH<^5k_3mF3dtNU zL3|Jf@nJNK4XU$2eRf>+74rIjm>!TBAPnMzFo+GpAhU4YAq+};$n`%+JxDJMBlBTw z5DmgGH6R+qhhbzsjEzhqvq5@bd=MLiLG2#UoxXYD;W)?rLGcZ$+lZ|PVd`N02avy! zF-RO#rVM6GsJ?{x5t#;s5y(%-euc3?bt@V8l= z4^+Ry(g0}84_v>2`u|>D|3TxVAbE1?V^IAM$_p^FvC$yAKkeV% zJ7_EuG#3D}2UKT+Fo=x}gXBOMSq{br(J%~>2eCozWK(Om|N4s`{5J-T0f6@DZ-MsN zLH%}WVvxDp{{J`H_y52CyzBqX%qC5;H*p0=l?-^u$hM}jw}yj z!)R>kKyn}ql7nFoABN##>FMCT2>9A7pt=fFuOZiS1ldkb;PawDVTTQa))ft8T?q0M zAxyBoM4Ib>g$Jk)4e}Q@Kclys3E59=d4m2SQ2&GWe1qzRQ9Lr*0ig5(OUIx(7+k-3 zd4cwk#3JAVAv zU;gO7j#un|ki8&(!7$17KWzLTMuX-6baej51_q+kXQ1&L<68d@G8<+dhz8aFxXuv*nVTIF0M7sLmZc?0QZkh@^+#7YyW|3T&FXx%?D>V8l> zBj;aG-3qGLK=lczZULnQkQliblppY6(E379|D0U&vFQW38PxB9*$Yww>MMi%1;U{E z8<~c&LEA(KeizH#asTco)Fjjrj zE`jBADwqD(cMAOPXKe*;o5A7;6i*-wYV&}``0-)*nm<^*k3@s!03v*RQ0jls_zgx` z=H&d})WGz=r~vFe`^!-|2dH{;JP1Hhrwu2eTEIg zS4TulIAU>!L1jQdLZJ^Wm_W!}m0GR{A)TsYK=AfGk;)5_q4jTr^fiOr8nTD}J z;xG&n1Gy74?hk5bqx%=c2hC%H`~9GOZCLucSnCj|I*>k49S<@G8wS<+80p8}eo&nU zK(M}q`V~1GK=nU}kIm2M<7S{RpeH8i9|B`GAisg?g;6~G+W?@mo{;k|Xe|J!d<4~R zpz&=`-AM_?mOqfiKyw73y?P)!$Q@?@=|#q%`X7`BVfKL1GYEs$GJyPsj6wc{@j+}5 z#>NMU!!Sr5nGNEHIy(KgHZuONZ{z;oz}Dlx0f;7mL27j@UH)rZID@gCl`B?#`nDcm zbFKCD|A#s{!s~wI`X9u`SMS5*!1Mp0Iv+aT4{i@2v4h>+QR;tCJBrfs8>Ao9j)27n zAsVC>bap~3+jezW4WHzWxH(K`(|GFO($Dq0kv~CO*|DgUjtZoDKnUU*NQrVz#1!gWT z8dO(Pz5aJ`K`E0#?f|8CP@V;yZ4B}s$ltIz0T3G|24cf7NDPFL`5-n(41_^!5GKS1 z$%8Pc{{^xW6prX+Cdh3dc~CtL>dOm;Y;FIe zyNw!U8K_JGnFAUd#g!J&#X(^OTB`@DLqYX6s4fH5bJ#FQ4unB+FdD=LVHh7|2Ix*+ zbbFBbp!ytCufz0!Xk?6R9%!Bb-QoP+k+gY+Zo1Mxu^BnHADHV7lLVSJDn41>gw zF-#mrgXBPL5Dmg0HpqTla}=QQB2eA{)ng>rf1o}wfqDcK*F&NH2f2}C|2sMT2ZbAY zUV)`0(3lFyTx!(kq?!TBYk2)bAl^pn|B+GmgX(`!8HJpNL4AIZ7zl&f0-(BzTntJ_ zu>63F2ANIm`X6K_vVE{J4%7w!VURp%EC96c5me8D>Tqlr6b8uRFg}O|VVE2`8<`KP z!$9*JAbUV#E1)_M*=-;;D6fLlf%JjYp<__p4ibaWFgA=2qe1ul;Hvjw;^_T-aC-pO z2GG|2Z>6vQ-^b1lrTqk|C#X@Dfy@A5*xF2x-w9z*y9ji@E~rihVNjh0s@q@~#z&_? z@*pt~2C+dH)Q$k%H-XR2^0+wg`9C0i*f7W(5C+MC>Q;Q`=YiJFg4_&hcfj<3Xb=YJ z2hqqFT@1zt(I5;`i%cW4VRFb~AiF{BCr}?B-Or#n0Oe0m9R^B&+}bgWAU+8dUbd+5(_<54c|S_Wlp6*Rj!{aKR=H69dVEFo+MT z_d#rs9iZ|SxqN`JL2}@JzqdDdTp#QP=-NvV8-&4ef+Pmw!^A-}2>aUD{3p8q5328x z=Kw%#5C)0s==^uJv_z@@LFofjrckRa1DORXA7NoY3=LXK58A&5s?$Jq9XbZpdms!F zN2Wn+5C+x3APn*YKKnpt;(_b{=>eGq!XP#XgV@LzRR4qa3*s^l)W!sv1+o{U51Sbv zabyfq1HvFNbQ)O<#Kwg|`at%AFsRLm?mkez9F!M8=^sRsi$U#bY;6meeW123D6T%*BU6^)R*j|Db${Y$vFnf?n2v>;<(0KzRkk2FZi`30jW; z@;9hm1PcdHSb#97PRE5o@*oV7hxO$_WiPIJ4kQj5e}Jh4+XdZo31Y)Awz?iBhOEX) zPwzjhkB^VW=>LQ2d{EsF!XUPe&VNf?U9efmVMy(=92DmG>JDVPVQf%)sy;Op+&_oa zeW1Dy#0JqI3}b_6WDKec@$J=v*#SDw2c#CH7iJzdHb@Rs|AXfEVS3SNPb5RFd^BnMK1jzMD`*v2M6c^s54L3sj1Q-VQx22{_X`y0lG)vbfI z?uWSxR0fa}4xlgu1P+bPHtt$1K9zpw?Q-|7}V|n)h)>Of$}LRy@T>N zNDf3JV~`lEEda_pAU?<~AhSSYxS%xyps)a~hXB>tVC>=XAJldNwG}{eAT=O)Q22rP z$a^Y~-2!5R%m%3ihclLbJxClE##Z-(`g4xP#^5>|U)>LqL#h8^bv}p&VQBpi+6Q25 zVDR7B%nUvb07@I6umQy>wJ<2mah0E-aKeT`aRS=Ek6zz__{eo3G8-fZst-YX`>>gb zEC#FpLHa=$q!&cPFft!xCaC>}tRI;TN=G2|u=*dwhM5DRL40Hk5`$roIE;-qwN|<{DSIQSlolkVo<#gs(U~*sBHkMt3YZ<#i05h zWFE|HTr?;RQoH^KgKz;zFcl0~~D!*VDSq?1b-~c|?1XMPF>M4*INDasw5C*Y9 zV#pYz7KD-QMrMQLKw%1MAAs5ppfCo7H4I~`+mXeP*&sb2K4|SGv3-A(`X5x+!|HrA z8dU#-?gO&a*GFjsfWnp97!)QTGeP|&t$Yvm$1!IF~m>L)j6GP^M#9$aC zj*LO#ptc6CHIATgqek5iO8X#lK=Fpn-ykv2eIg+Fp@2bY5acIPF{m5>=>_>08wQPk z43z%~`32;5&=@2(cZ0@sKxOi19SNx;hjTc9>MvLt0I@-J5~yAQ(V)5tRKAf~_k+}f z`f2$3z%V;OX$=&n_Aa(dK$ZTAB z31mM=4iuK4Iv+Gn0AhpY7eHYQs*~_xP+TC(gZLl}69d)Npn9EHjMD!n&;|hA2W+9M z`yX_75Xc{(u^Lc$N9{5VWG1Mr1l1WJdx*uLwS1uUZJ;_2RQG`}tUg3$gX(ioy-vtn zP#dH!B?W7J4Kf#GCJe*u#FxfFX&dA|ko_=yAR1&A2!q(zFuEKvAH;@XkX{fQM1wHM zO(1__a}%g70!pW_G)*ZD%2Vk13^{y3?RrqWQai2C!aR^W$qEkw>*zsgnilRQ#!OIo zh0jl*v;ZoXkmC%-2IYe|Z}0!0a(NUF?>0byg9Ch=5R_hEbrPtK0oA4C*8iY-98~7O z(iAQlG9`awhx&NvKKT*0IT;wbw7v?3SSV0)#ET4Sq#R8(J(b28We68+S){|`9p3S zfYPsexWAIv;Zoz)2Kufxm&nSqQ!;vfvFYe8y3WhG2MHX3x^F1Gp~ zWCl70*#i@Uu|YHpgXCar5DnvlXpkMCwgxC((A@#b53uw~EgF=rLE(jN7mN>z7f^hH z+%ps~+2Mj`9UW-=bD;c=Tt;E@8z}zpwj0*|Dd{*T)U9Tg&W!)TBg48z1gGzi1QK{Ti=2aV0!7#I*W-;Z4PgV^x? zKT=%}s@uWhpmqRM95k)~vIjH<0K-~JO8-qXH2#}tYW_FU(D)B(9~gpY5LQ>m&L>tJ zWQK+Y*jznT)&J`9@=oK7|aK;af!jiK{N;xs}`gVgh6^h7{-Rt$YLNi6ob+-x#0o| z3sAnm77jSW0Aw%7O&|F>gjL2*y?(aTT#Tdwf}?a ze^9uA>NjL;tf2vx1FJ`BFM!Q}wjJPXbUsWyE^(+l$Zk-4A=^s~8#L~n7ZLFvgtJ0J z|ATN&SQxneHBeInk7eL92NcF2_1U4J|3Mg}A156a23CVDjF9aB_5X6i!@+7{=E2N_ z@j)~Q!^A-}48z1>d=L#21JNM&g8U1bqd~S8#sg z7=Y|T#vps~VUSvoJd7rW4N{AQL3?=c`3dB1e0dDizW|jrqZm>?565t@H8A+Er=kKc z7eV8@ZWb2*K^U}`93)RJ2BjZR9v}vT>M~IHg7lDUA4nglegvg?bUQ(59V8BFV}LM- zjgHa9@$o@&ATvSr6uMn7J}4|fenQ5eb`Hp|1Bv0~EvQTZVNjU?qLDF@7;^dm`3*D| z0P;6RxrVGC#6~g$tQI5&!XR-F2C+dH#D-xQA9@!NzVZp=7Hk+4-k|<)eq9aNF7WcOfNc(EDw{zCI*s&VURq? zy`V86WIJJOQ22q;DSBF`ln<)^L1_SH4>}EMYk}m!X$=&oAdDQx$b67Eh!4UrHZl!j zgD^-Qgh6a%3=@OVAUO~lgh6Z&MrMQfAPf=%VJMs2Fad=xsIQG41|UAD{)dMH$Q}?z zvJ)OYFmYr#7#o`$NDPM2)j`EU=@OrxK<);m50E>tVUW8)d1(|6-})bv29V<(RQ`d= zD^UFp>Q8{`RI;$4A%@w=_Mo#}%*?=jU~1I=pt=U#e2_muWfrdd0IJVna_DSiK1>aW z2AQd^stRvAA=?QO2Zbei-T{e$!gnAsD15*eR8D}(4iJX1K{N9rKw*q4EI?!IpgaW5AISE?>_!)ZiNk1gc@Q5Y2f{Emj0TAzVM^20<@j+}D4Pt}L1LbLSdyx4cw}8SB1gT2C^G8 z|DO$=F94Yb(+{IzV#s`u7&->YgD|K)Q4kdcK7Rsc4>ApEe}d8}tuQDrf&7JRCo&rp zU*Plwic541idPs0$${7~8pH-+5Fdm=Y#4^|VKlNhNDPEQVjvoXL2M9)v5{#I8-}53 z$PFt{Sb*wzWdFn1AaPLo1?LlxJs=FT7e<4`U>GEZiw%>5(dg`qU{Rk?zM)B~f^O55dlt*Fl4k}+k^**SM0MVfO3RI_(g$)hCYX@Lv6QV(L z;-I-#vh0G^{UE)dvKW-#(Cq`&-JtZ2oF719$b5WkbhV&%3c4NWd{Cbi6xN_{1o;ir z_XmY5D0~MJgUcdVIRT=hQGhuvOav*sS2FZgk zhz-KfaR5+S1@$Y@!^CJ_v)@APi!IFpP~vgYqXn|A5j5D2}kX z8zcsr=L3~ppfYR}56?CLa{CWdPQvOZ5Dhv{4ph&9>Q$1lp&@vE94H+TgF)#KRCkkX z4^rI^(hD*Jl;+Xx1m!_cdPlCuk=YxO7>2F`1l1|%{sW~QusPWD!SsV@kUTPt%*G`L5(iP>Ubo?*1QE|HJBA7!9h6kugXdq!u)GMaX{87(Hm79;P3p7sQ6qFgA=2qe0@x z7$gpw&j7g-o1LIKnI3gNDBiKz4-x~73xM()NDUmr;u1uIFf>lV@*qA4Ba0!kk>y}) zba{|C2*bodY#0WKfiQ>uPAbA*u@j-sl)y3PU0hNcK@JDwuj1OwZf$D(Kx_@}q{h)XSjpM@N z8&sad>L(BllBcBp2bl*mn-C4EPeJ<)Ky^4J7*scd@+`W2ATf|%Ky^4W28qKkNF1Gw zE(S9L-F$p}P&k0X6NCq{-iO%@%JV1~RAwM!P+0=vLupX?g>4Q1)E5WU$KY}esus=$ z@sTmeJP<|~1M#tmgTz1>BoD$MHVA{p0(5o3ZA(!3gfHC5k&E*1z&ieqUI&Bt;JP>> z;yZ1CxV^gJ_r-h=yTo;zZPygu)Tj=0Xn# z5FeCp;9&u>8-!tQ0nso%jE0GU_#h18!!V4GOoP}U3{wN5wYC3)${dir_}mSON01tj zJF#In%|DZA)7WbgE0;{7yG^or1)pz97$Dn!`G@bx6n-C33uOL0-*oCYI zWCp0tMz;^-Pf$M`;u(7pfVklW@(8*c7XhY%?%(iaC(5n6)3(y7{&+DFbon0 zVPrmt4HAQ45Fdn*`MB6Hbs!psL26-a5DnskFfyAO^}n7T%04PkIDjx{UjR6dfb2xa z$Zo*JhUtOHgJ=*2iGyem2C+dH#0Fsy8{{Vfa~hy{1mz=;J8@x9c{*DE58wJ9IUj@4 z1E}7I)lZ%UAbUY|I5s;#VxTq&sNMjj zdywBi802pdjSYk3Ko}$k%EurxNX4Lb2XeT=!gru(aQO@>BVc6(hz4Ph7!1SsAR5%? z*3tP7T2qGZcf8}9AhSUFVKj^l;)5_UAH+t+AbAi*7X$G@;-K1BbyDHXTatT&^!^yEf{GG6lbuw1JNLiO$;Os!XP;q zM&@HA*Q2qk-b73@y4XazQ#Qf zki?h|S_1%557Gz2$Yz7sAPkZN(I5c z45K{=i$_rWA+tez5JndR@j)0Qhm1jDAdD;qV}ry&7{td#gXBOMCJ$o6F!a7_O2Y_S z``Acb9ej2iD2~8+3S>VFBiWB42NDOVfzilpkQfMq#6TFv#zBMnLWKMUDg!}rht2(< zxE`o_5L7=6l-(o2UQqZV$2rK)pn3{~L3I|WydkEphpU10-=Q=pO%aPhMivGId3gp!1qB8* zRaJ8%L&N`CnwtL=I(l=l$E`klhpqo>D2|91=2Su&O_z@&kcqk zbKFgJ75_h8sQ*9FOBJNHW@VN3|2HcP{s-7A|Np$k;D2w121vYTPrJ_l-y01uW0ff3QIRe~6O`NR39g zv&#R9C^e8f{@28+|DT$x@n2t0@BgMo?f=_bbpCs|yZ=AXr3*6Se^_Yf|5RVq|KTnw z|BJ)a{`X~S{6Es8`(IC2_kToq`2U9s^#6y3g#6djQ25^vum0cDTIqjDaq<6;A3y$I zy?XV35C{nl{@>Kt_}|6Z`Ty0cSO3qQJNN(bHPQd^!&fIS?B+R z{{H`Isj2_BHS7G}xpU|LU2Qu5_jc%j{QLhUmFeoudLDnxkF`k zq2~YZ>ka>}tkwdBtAnC~f`u{7V)Ii}H zqaZJzWv-|Azbab&|JG*h|BhygAU{?p$jkdFDkxN_s;Ge6tD>x=#GsR(=6NAz>N;5m7O5R#t8aNvyU@adAn@$kNDaxUnK~@~qqnSRA0p z#j2zXS4K;QoC-I$Dw+$_xVY3cXlW_3*&<4;+?ps3(Bfj%Mpi** zZ6&JtdivZ32nTSn8lp;`*dtX@CR-c;}^E5Q|tGpMVo2CW(<`l(4XH zGHXgIN%p6K8?ktZcsXKy0#YZ+8cmx0f_SWkO39ND2%@a%q}iVYwFECkd=QATrjllV z0$z(@l0-XzWcxE{CiaUU+rWxZ#v#iRSpbn1 z{wT>W12ravg@uvr7sHUnDnOe3D3xD4x`8NFGm%4Bq}h*>#n6+VFmn2rM|T_!K56!& zRDS5K43xmZa2z%4M{Rqd)-b5WPX?+a4$Fmwg-P;1N(5(!!a-6}B3iwGku`C-fF%1- zLKr!*qqB)_{*dN>2cI}QgVh>>DDY3YxM zwpToQro`iQuoNlj52fl%YCrrB!)j)9>d`RA`5<~14!{d4hzwQF{>r0Rahw! z>_@Hq;GJNUG8yC+l9B)k_M^1DkjnQov|mHjAfFVy-4 zC1)VnPq-Q&-v20VFSP0%rDQ_bFG6@EfOz{+k{^282bAt$7-4@BE5Vw8c>7UO8G0s% z*$txM_NQgA!r3T^4v9m&{V0_mO7cT%dBW|CXJthXCnTF8OyccF$>$Kw2omIP7>3yo zim)t%66`FZ?MG>QVHgXu8$`qGmuJmpWyNkQLX>FxQSvxOB?Gb-hN1Q+v8Lptuo7y9 z6Ky}rzyn6IhS?3GA@-+bu;%6w9@-LR%_pn~6kI6D58YQNWdp?iMAp>2yaIw5K$NwR zIQv09gJY0`kTEE!!6m`=i?Xs7<>eI_=&PVK#B$kq=@B2`92vfNakroB=9{v>)Er0x@8YN6;v3gLpYs z))I*Q*{qo$4G4^$bD~&TiSj?fDy%Fal+u|MocKU4r~-ut63#%cI4Y@Qzc9!F6{&Cl zN_-&uOW-1@Y^pi+n-a-%9?ZJury4!kTmR@Pc1yYupL zDzN1`gc*&jO;q$hsNjc|d{9^9u;OonClgu!AzX}?mBh*hwHQXF;IDy1S(~Zpe^8?f zW;28)V7e%43jq~){fj0khvEIaY*zHX3W^@;+Aq(V3-NVc2`m{_;V5{ZuAr*@a*$R} zUS3W%D{BG7CAIjQU{tj~i?s@DX>kgu%1s4Vf+ehIePyV}p_C|VE7js(6yp7o3Rc!E zQMnA(6mV9=-vp$l{RyBjFRNySRJ1}_kirmuABc+f3$e16Xkoz z)qmg~0(w0w0_ry6>jRZjtNsUdL6L$U?$abzycv*c?Vlu8d5mrm*b$-`_y!>=S!44_ zTK@w!6O$0hNW#^`NyF9l0+|xU8r#N--Qgf0m2LGH%TO;(}jV7VQS|zbQ${alRBq^R^T&s5*#O` ziF?v!bj}2=KWCWLi7}!~6ARG{o!vPHY&`?x+|GGua&+L%2PJ-p0~U0$E?h(hE0L{O z%-Y!tv7Lc|VM!{> z0|UeQPS!44)pb0Q+{;jyrxvs2nbk5;xq%{AM&NuRZIGu%=X#+J@b)~(xg z&__w3S}CVQw=3;n?d;r%#q&^itmy3Q1oa+ig*!VtcR{VfMXlbjyOTy>&z!xuY(*Dm zWMp&!L6?2|UG}*!G9F-LWCT?fAa#rkj0|8dR1u>Kh{xyxlLx68#iJoG8UmvsFd6~` zLIC6Z5e62-`6Ey^XwyFE{E_sML|jLYfNe=HNyK^d2v`9tYLFJ7`7px#K6F?oq>VjKb7!f1_p+Z zVH;Yb9vcmT;S&P7RL=XbGUO2h14GPcJ7D-Elu@4yyAWVxU|^U^r8*y$?~&=t3=9nN z!!FcDJv15u!y^P(7#J89(lGzuW?*2@93DY6>Wk4370q3Zk@3Hvpx}Q+MaBPyhKB!bZEgSC+uQ$lb#?vk>+Ad9-{1d#(xgfMo12>c^K-Bv z*Zm;&P3TzSunV|R4~>SvFbDx=1_lO{{LjX~@PGA^MgL#Ccmc+5-@g6-@#Dw;U%q_# z|KrDx|G$3y0^`4b|Nj5?@85qI`1Sq!e;Gb5P@YG|qxpXrB$81t4BHUEsQ=j+82+zY zzV!c}KYzd&l+QsJIj_U=JTm?K$&>$5yrcPl*rt?Gj}6BVz^MOW`5!rN6T^P-^eL|V zuQ410Zq!esAutR=0Bio=uyQ#uSsq0Vp8OA5Pc#gIYSas(Au#Mh0F?h{A&>uYFfjb5 zV*bC%z`y`nFF5Q1Zq!4gAuvorU?w&4KaT!CDF1`j4G)u`qPaIfYo zK^U10T34;Wz`y{*Ahj?yjK(GglY`M9b3kUpFo+L|CoKjB22g(uG-r#9L2@8>pwloh zm^g?J!pM9O8?;6o8wS-4AoU=32@x5(9MCl-AiW?AG9QFNY!C*qVg4e92H6k8AiW?q z$Q&6gYu5xA7#MV*bK0Qr0fiL^gV-Q_APh1Cgh6a%j4TFXgY@x1{S2yy1sNC^IqS73=9lX(788I`x}NqaR6e2{0DLy$Q_f>^Z&+GD^S|@#Bjj*A9MWw+Gzbx zD5}8nptuiUU|?9lz`$^Zfq~%y0|Uc(Bn;!9V_;x7i-eK+FgA=vR|gUYVUReo*)aAc z1_lPud<_WSLSlpXpmkgq85kHq7^DuF2C-onCWp?y!oa`)steFDNF1aV!)XQv29REmyI>f`2bl-*6DZ6;7{&(CAPf_Ov0-k8 z(IEXG_9+GihD8hv3{4CS44`t6mw|zyoq>VjE?U@t!Uq&yAU!Y)G6Nlhh8E}?+zuRZ4{|36gWP?Xfq?;3Uq>-8Fz_RV4U7pYGin$Z7#1@yFdWAb=AbwL zg&D{#Aag-!0zPL4YX6g+|1rn^L3V-47?}G;Y19w^)%U>+3=G>C7#Q9om%}5N{fdEs zVHtFf87Q>aq4^G!U*PGK&fx>fvzr+h7+%xaUR?hD%)r2~g@J*=1Qb9}Tmr2ZaOojR zd^G<?GwYW+o z|5c^Lz+tZ-F8p6sMDV|?h`@h&F`@s;5+Y!6B@u!Dle*gffBEv6m@JQ?22cGD8f!$& z0VA82fUDjY5D@q;CnxuR^{Q3>A3uH!#?PKT`wzm;pFjVPjIoKqj{qhBzjVumglO_i-_w}on|6jd${vVWX?%clpKgiwXzc3rd z{t*Q7cXA? zzjNo#|K{fA|5;gB;QB%Cz=l;MMgFf`yzu|q*RTG+ef|3XySH!tzkmDo|C`sZ{)6J` z$)kt=Z{NK6|IV$O{~zAJ_y5JSr~hBQc=7-3o7ewAYkg5NHjx}0_5W!5AGNFljUj`^ za53UgMn>lUojZ5Hdn*X7wI(u3h*AbhYv^fc^O{ve>7|w;kbi&w{{4U6^r`<1)s+4- zW2t-DSXlnYM?`?rDo8!G?8avf$W2a8P8e|o3a^x@ z@Zo=u9XJ*L{}0ZOAT^*pIG{Z_6T3S9tEsB~XTTChJd6zg!#rI6KY927pOIiQLHQhH zE{Mjfm`F)*{>MK5H`@M3lmVbQUySsmp`r2r%9SfbhBS4R-M@by!#(7z|DuMgKxy&Z zsT2RjI56wDsL+uAAKtzNr(J5;MXVX1JYr>Oi4jKArcEQ(2&$+9g$)RU_TN2!`V_-G zpfbtd-R1wQXHThOAE}0b^FL<)A5{O3w*L|N-wa#Zf8Dxuqy{(D)DNco5AxKvFQ5Ng z8|a{N*#UA=MzC5*I`75|?r^gN4!l z2c4rfV3GF!|NqhaPdN04LjL#laR2}6*)zhPp^=Kw`X5J*M-?8;|3rY%`k!zhq1XSO zt}g$dKY2`8BaKwx$^WDMe?%F8k^eh8J82Xn#2GtU{}T?Up-}&OxH$cP_V^KD&(KK4 zX#PiJay%@I{7-5BA5;&#dHsg$SfzIUzjx=(e~_C#efmVUo2Xs?KYjG*|A%*P$#xI5 z^Z&1(KmXsmee3_XuV2V^6DW*fV}Br;()H?(N(EWkrSmIT;xKrzOV!e@W(g9Z-G+ z<$D+=H~)ju(X83C!RZKOR%u@L|95X*5gRmcb))lt;QUR9pj!UFbmB!B+<^RiP&xwgD6gAY!|J2GOAjhHS|HAy-|3~-j{l9DTrvH0)Z2Nz7 z|K9%xckTSYd&_1p-nC`(|GnF{{Xev4*Z)1+w*KF@WBdR8JGTE{yK*^77%9uj{6Br{ z2*?VOFtz;l=lAdb6~%=pZtCmnC&?`^#pwB;-0?qb@jqqCRG2kH(|GFt(fNNo`M-)N<{d-w21J3B{>L2u8(sg4 zS{PvDe{$>ps~4}Lq@#h(|De0!rcRv-cT-?M0Cr zpKwr(*8iv(9S091|C2lackbLdcwPh5i36SgVJYOynKS=SojCFT&Fj}NA(Clg^1lQ( z`~UKy{QqZ9pZgCA3u5qBGS0ODIes+%gF*p6#*_a?`~Qf-03-kR_L4XLd*9F%BlG{jfdhm!(n!T<{wEx;IO_k=^S=>!AH_HU&&Ggyo_}*=BjE%{LlvX>pK##f$p54Bf1q5Cz!>?T-1>j8 z&HoclA%s<$sPZ{aQ*^H8+ka?|DaU% z=hyH5wg$Q=ej|4s5y(7h;L-d~I27^Z|Iz+GqClWp{vXc$|H*x*dt^rQKW6?zU;jHg z|A)wAgP29N{D1!3d6YVGxYYlkl)h=*dKABn=6_JApyI)n|MArSqw{}=0*Pw*e>m6w z=<9z*^FM0d2k{15{vVzHLu7J1ER6h5?)cwet^Xh1zYjiB^vAcapkzuGre^+s_vX$2 z&1=_!_x*nU_?|5H42Ayx=>9)Exo+@CVdQ^u$NvUf{SR7;yK(hO@VPdiIm!I=l>eZ- zM^1*LR{nqg?%n^2;v#roB0V+v|C=|YpOrS6{|Uz;p7#If_#dMD!N~u^rTz!C|M(eE z=j|8HApIN(P)eg#{@=J}4Lt9I$|Mk;HER~g3X{wEw<;QWt${r_nG$CLlbt^coH z8eIE-Up{;GUxEv9))pwQf$k9}oN_Q#P%HoM-?bAX|IeE@57R;dBBS}AKmh&!{~w(H zv9JFf9si?2{zq^B2l)E^fB)tk;fO+0fo=a6Ip=>2%KX23H2|z| zudk0#vcZrat^cuScr;O}<^R{OU;j@|Oa_+$tjx^+d%HUSfBF0wBVGsz4Cnm+{Mpn0 zIhpC;FaqWMpaB2>j~-*f6!U?ATd($aL)grumIirv1;j({~OkVGdc*Z(h`KB2bPi8c>U`+qe5@Msymzl(|CglE z{y$h)fx;-*%l-e`*RTGA?i(e=k)V7J3e!)YKK+07>J|7LfX|;lgTtASIWJ$n#K>zi zX3QX@4Xb=tYb%Ob6UiLg#I|l96iym4lK;cK-T%LO@#6olpFgp>ftrG#a0TI~j~@LO z=ixx{8v_FaDF1`%JVXu{*(^o|1_m!sJmJE^!ovSWMMeK>X=?tD3J&`3YHRa9(97$8 zfQJVP_IG#x9}yV%-^Iq}e?wK({~u(=HMaaesk`I<-P^bSU%hnc|Fz4P3F139Z~Z@h z=+J*LPF9ror`G;o^so{U7XB|MC;Pv>sqX*&J$wFd+qCKbjxAgM@7b~A|A9Sw{_oqh z>;K-JJK=cu_U->SuV4Rv+2Y0jC-(OKZ>q2V-`dple_~(X|HTUyfaO4XLFzy>2=Cjy z`~Q9@-n1U|JVKCrvNAHjc7oruieGb01+PLMoE@7k3sQS`y|gJ_VMAT`@JZ~i}f`g9a?KyE_DYEokVt#vj3_qMhE zzi{U4|1&2}{6BsC`2TaKPW``d`ZO4yId$s)`O~NWgXq&IPyUBt5FaFd_VnrhV0`M- z|BGkNz}21uiG%cl#Lk@gf9}kg|ErfR`!B?ay8j!R|3};Zh%!%>fq`KQay(IsU0qd0 zR9%K%_M_*2kb9VznEo>}Gn0%#dXX`?`G4gS%=^EP%|&K|+{(zv_@4=cnV9~A__#1g z9X5Gc!2+vA6@&*VRNM{}Io^I{t?x-0+s|*wkyQtN*`y^Co)sCdkK@ z|FM}*ju^T5A5>S9W8bJA)bp1HL3lhE9sffq^FZ@||7Z~}dD+?j-@JN7Fu$WK7>xP< z)5j103o=vxD@aTI*HlyaucoZ@Uqw;jzp4^$43bw@QU0%?s`6h|N%6m~w&s5w4YmI~ z>=*@Xf>BC3# ztW6Xj*EkY2(&v)dGl_BoHbtQGL=WuR@&D|}3=9nI3=9m_3=9nQXt)lE-^jqg(7?dJ&;niS zg_7nL%$NqUV!$w{9pP+kj^ZY0{+-Rhz)--zz)*q(7c($0fG|j|6iFV$24R>uhz-La zF_<0@8y&;c5u!o*U}`{Y5QdoxqLJlb>@o%h1{c?GpvS<#kOy@;NFT@?n0gqE zO$;Ol5(i;)Hi(Z4BdZ6gNoHVR;6-xNC=(I_82P`WqhrAG2gu?(ckW=zAIljS7+4`r zCYoFc&0BEu7EGV|A2c@vvS%Rhs~6AzJ6W2+-Gk&lL!x~(s&F&}s22hl`M76=wa<$jInSy(k?uX*2|g4uL_J|8cbc zH#0CW2omipNLv9T|1X+3eL(AfQ2uwZwg8t!Xl2uA{wE=FN0m}71O{FHfB5hrw*0Y? zjQ$%&{$D(cyft$0#tDTCQ2uwup8p-F7NesEjfMd6Au#Cj|CK9Ou;u^l3=9mQbsNGA z3=AMF#K6FS4U0hKB^ekPKz#-jvsNu2{jLoPvpkA+aQ?^A{%2rd@L*tI0QFfwV;smB zBu0E}qN-$pj+wAAFfhO{JCqHx10;^l28n^xfiN-~#s`UkFi0P&jre(>wWc6FAiXdQ zG7}kt#L@X6F&GBP!Pp=gnGa&)!ywl&F)%Q2GB7Z3V8JlGAUPNtM8o(n8YBk7AU?>< zp^P!||3IJrl@uS3l4qgqSVi*`0;u#ni0vQ+> z6rp7WwsZ$78>69P?OhBE4AU4G7^XvM5E~hT=H@_iVlW!U2Jw;A!SsV@5C+MC=*bKW z3>6Fv45p=AsV3=5!mJ_7>-41?5w^nhp>hVfxENF2rnnPH3W;UUHc z<$sj*KLdIG=jzp~!Ruww^DVXb+G=Y5pWeSm#~hDp6*&K6Z~w!~C?foNk%57sgMono z`5a47od(K>+lbIlie03roy)+$fIN<2z`(!&S_ANF0Nq52`^iyzjDdkcpMik^)V3L7 zSs(0Ntofhbb7Y`>gP?ox=#fsc$VPIfDS;s|> zu*71=PiAK3YG!8UQbtC`hgjrcZXZtcaWclHz?p9l5TN{zl5RlvQT_e<_dg87$^sA# z5`)n&HYn>Li-Gn9gZ8z8_5mYf(EfH12I+(0BL@!rFE20u9~~V{*Yu#Hs{FsHqU`^< zlgB{LryG9p?Ad>FZT0`G4AfZ{&&bGlnSp@;v^L`B2+3=7O(!ITDQFKpsBbWbfq?Q1VZ z<)F5b8v_FaXnc~M1*8XrLHa;p1qut~Fam`Sh@YO0xWAFgY3nfq1A{j`Gd}|Z z!;r}TpgaxAH~2894+836fchUG3}RzDlZqN~#>39?f8UO+_?$y^xd(Ue{NKNG=YLHZ z{CO@rJ^laQy?g(E{P^+z*RNl}XN!TthUyOb|NsBJTetr2+qdt(kdP40d?qO<@PE_# zb^jmSy-N!x;5GB{RekN?KUp|FHw)xBrpdMh^Sltvml2(Z&!#=d|tFvxgkxsG_I6 zsR1R7KxI;I_rUHYLC*h0MMeK%X@F7>gVH3(EKnN@bU*Qn7cc&U+7mDu#0FsyA9S`O zi2dZrlmDP|TS06P?&|8o2(JOm|6I`dWMu{h1|=wlu@x8?7_eb^EaKS2koCgM2GJn% zL2{sZ;wzx^0>h@Jrr`MpO5=%I`mbNVjuKZgB0~R992&T@?cctB{a;Z;0L4w9b}6;| zOO83%_H8U)w2&O5sHO)w|5sI2QO#UrgFtO87zT-h$_7y16GS76gXEAgD869n9f=;O z`XAN~7zi4)o(;5q51yV)OiTt<{zpznptzC};{Si_z&_;Yq$~T=hY$bV?QG!T1#%N; ztdFjaK(h?g2LQPP8LwKr08JHrxybQWQBgr(%L&+qV{8(%hHD`5;6U05YBO9zPB+HJ z#{WTmcLG63H)-T_1ajxV=l}Qr-E1sT@;_+Z2HgS#i$&P-|FZdWv8be<5OTZ?k^G-9 zkQs4+>=tKWU_fdA8yFaX&(jCBpXirbaNC5Ojs`>i|M>phe+M(8L7)FuE*h=>aiuC8 z^*?Cu#sFo*0kamgR}XYABRoCp>FI&*92w33*i+BP_wWBZS(w7Z3sfcz#`=HdqWRc8 zKqpb;a(l4V|DgB+#Ty!q8n9eAa2A8|KT7?ttE>C}%a<>MW()v19f9I&pxgi8{BMbR zjtD3{(J5PDwFX=JfB69Kx4v@qD!hywZ22EY{Xd%j85sV9@;_+)4>X2~HL=lIaPZ~- zcmEyDP2g!86lSCOA2U&08^rk^6knitL&Knb-UC+?4~)&AJBU!m|3G^XK=uD{Z2y1# z^7a4vl`Huu|EV$I|6jj+iIJBG2~actKfHhMzq*nFIG?bwu>4=Kco8A%vC2~`|Ns5- z=l}9Wi~h5-qTbzzR!@T6i%$%Febivf|2XRZ*nz2n2h>(M=-EE-I0cRWf$~47Zo-<_ z=q!l7j-1^7|LYge|Jxer!~Mz4%=mxjrVS+fhMM{R^5x5L_ki*fx#vGoEB}A_^yzAYUY3Rv5o%zev;h-(m<{J z4>AjMPD(;l_|3PUBlrBicZ{EE5pBSHrEu1M5lNBXz{qNgXul~E)TEXp>5f%A=bU*3q2#0(A zCpDgNsYh?O!O|6IKRIaaJ}!Ou#6jhyovj@_4q;|ei5`jdKWHz&Q+(kEs(NIx5J3!5Cnq8HUsVw@J_d_tSurx}|JSen54QaO{@vUE6-7nha0>A8{(t4- zMZ95(OLC~?e~^1|`30XisDA`Y2O!$U!u-FJjn#i^Gn4-|=B9YDt%cctM;ojE9?nkx z^|ZCYVGc3_36I43A2j#~I;*~jfq?<*SwwT^lDCc=J^$BKRsO$x?%e;gCr|!AcZx6u zsk?CI^#3iJHloCpytvqZa?Su7jO~9|THm*0`+t!8V0=<(P<}#6$Kdc9%=JIWy`=gP zq#iy0AKbt1|I>#L{y)5Tmmq$0|K5Ml`3*0gKK8gD~h$1YcYeE-*AX#bNOs5mr$@)KHG z{y!4(|Lr?>aD)hc;n}liqogTl*p1ZsAC&)L7<4~0O4v{<|C4*SIcUrW8b4rnkvso4 zn*Z_V32Mut#~X4Sg32p$>_e~rL3WU1&glF)Lc z6DY2b@kpruNAo{M{-s0!bdL%~{s*;{$Vr*#?f=pGpPW!6PS0rmCoY^|sz&R7ti=Q< z|AX$71GlqbbqVOKBv`nSLXYNuQbLO|wWIl;wD23v|2XqMM*R=U|KzL%9&Gs^G`{X` zJGkcmNlUf3RgdO>++l-F2DGLHR=*+9BYpf2RR3e-f6&=>!y^9=!ufw}X_FkW!I=L+ z=kFrrEtEDT$i3wFb9DR7)K(&A&Gu;hPfiLaPY)fY~rUj0VYpFi0Or4Bx$yAor5vQ)=aZ9QFT5p8p4x zAz1VOaH;>_y?*`Q+YzxRWpw@@GY5k1FKKVYyh{MRY@w7t(D@%!r(yBKX#Qtlz!?7n zg%xH>AuKZ3>VMGuzbn$Yy~8R0-@kt!rF{)b+vL>$-@bnRpG=4Qpa(ktS5;M|2rDR{?vWrj|Ns2){eMY*4n|o5 zGLM>gH2=f0+@PZ|#{WR$|CqU(u*hJ`|Dg82r@bvaZ4ZX}|Hh3Q|3P=vQ8RDB%p#}$ z2j%~wT#UW(pnW0V85kHoBjGO$3=Cfw85ut_GBUzw7#k!9Qu_&{hJk_M56n$4dNltJ zx_l3E5Z3yC)~s2CGdmU)gDwAq=KtJm2G{<7^z(mU`GXqtiiM<~{|(Cj1=$(!G7{!s6Itc&*b+1^Rm*x?m;pS)c+?p|7$QXFg!pq3v4#X zy%-Tqga9afG&D58W>{NW{|AL15!x`6jMo3i*&fcun*Yfi{{sd3o40TOgVtD6(lNF2KWP5X*~%Q8c0lQIFpU3!LgVY#ui!8`dh{rWOBM#@Cy<|zF}e9aA2a_C zn))9UIOorw2Zz_AM~^^UvhZmA56|<+3{d{ZnExlY{wFJ9uxO%I{s;H}?Gg8O50?Co z#mgiMQ7ixd`2OwxU~d1D956UE;K=_Yz5fr&|JBHK2#8Hd{f{H~NfM@7{vU+>f06ifdM1`510BM)czlA>wic}w0IO#Gymsh zrosD2pz@!AfdSP1CpZ67b^H%c5RfD_n*Xtu;7kmo`JZ4q8qVkcfX4r^jQ@f1Ke^+7 zdJGH<&!FW9yj%g5R|Er^h6-@x|IzjTqxqj;svFMvAJqTHQU8;h|8*G{7+wsK{6E_M zXJDv8kE?-h|6fJAM;hcdve*C6u>U_}=1hX+1}znU>QhkIAY*dZ|4}*rgX;h1$nFBM zLGGnxcn~rhNBuw2^FP-1|MKO_2?ZxjP~QUyyO{GKOO*5SWks{?C!#{>PgC z!@|P;KYR9!g3zW+YZ3H*99X)R7Z?41^6(*&4F!$=Ia$+Y{@>Bw{{KLx=^2wIV&wmo zix!X^MtJf+CGCHV`hVt>NhG_CS{lB8{rW#WIT<6o7#JAhv5tz3EWr#|K0~Iv$XvTi zX`D^z>&1vCO7g!mRr3G)|4tUB819OXiv0io?_Wy2OtSvFH*fyuWoN^14>{|9@Z^7T z>whB#28NHwX$iy@;O6{)@Ahqy{YniDv!+b?&(6$*5nc=o4E`f4t7G-86DWSrv9zS* z|IDQL|9}7drbZMHWkyj^A=Y>T-T!y;@Ij)?Kvo2*|EV?q=U`@xE&crW^6>co`t@sM zYiY`!)YbXl+!V7c0>vLW`Tytl@Ba&^yZ%p*fq`K)wmra>78d_EtX)mh@Ig1cBq!^? zn20dexMN^ou)>-nMwXx`DDB|Fpf%T_0RjI{Qm|GPJx-AMhxYFI9~>C)-__L>R~-EZ z-T!<3x1yB9|MMqL5TzGc(Z4@`{znJ-<8+^~vGIRDPtX7BSFQa2 z{~wu)o}m{0{{8zu`q_)GU%vcboRt9%BOLV@*linDkv?t%vJcDtU(oy?XfH3hIl&v( z-IAcZ=_}!{VBmw=FV4Wgu#|y;;XE3? zz`(!&!Z2|V8-!teWco6eumPthWN{fOssDO zvb}n`y8n5(x#8xsv$FnIS5qU|90LP`|DwV;>kzp4!h(Wig%QYneSLkfUR_|Si?4-`hA@B(2_8kLoif!hQ14?6z{0|SE+G!KzOaWXJ4WHB%> z+-6{4_y%q3fXYnJxhEiu%m(q1F+MqDb-36+7#J8{GB7YaWnf@fFiL#yCdv;%FWlO#_2E4S@2#7AO;w zi6s~q7^XtcM59I7G-@XCb<}8BjfNGmX#lhzX+8r3gAked9;6M_=LY3{P~V7Hd+DZ* zhnxGqh#>!e9!`$`-0bZCx!BnLbAT`_>wi$cmxGn{KL~TOvHj;_XZtV2$M>I)i}ODp zH|Kv&HdeShS(zCBiwf}n7vbms&&$d2pO2H1AO_jX&&BzlotY7C4st!n%f<0uMne3* zxQOt7F(E;MSXx}{zqqi_e??iD|56eXSj|K>pIU5oCdU7o>T3VhRFwa#Dl3tV)s&U~ zYpJXK*HBgcuc4;;UtLv&SU((NU|`tEz`(GNfq`K=6BE-#YWZ!rn8V7z@ShR2+;LT=*Z<$JeCdA|r1N`0X3+wBI6M6>%gp>gXY$1V z*DqiEf9dR*{})c5A{$>kbL#(%%a{INJ%9fH)k_!tU%qhee@AWA|NNB1|7@sf7as0V zf2pIT(J-huTwPjh)c@MT-2XLH##Q;*{|nNR{-;Do{15l{{U7S<^*=Jm|9@&s0n%*oB6*iC*wbeuE@;<(;$9nR{H-^s2Y%XbwLi*-3aotj*P^ACPtKc<~Rcb z120;*QJV`o(-3sNF+3h%@e&yk@&D+-ga5yO{|?4Ke*F0V^XE@68zctegD{MZEQihp z@sZWS^nk=ba@Q_h{NG$(kKqQ8TZ#(v|AXc}U>G!q1e)6c=>?hd>({UUAU;SOHctYg zKfHVQUzimoJi&PnBu5JV_T|fe2^{%fM^5@b$R1M61F3!W{KbFd`#VAYq$cKIWcWX^ zz2*Pw7tcY~(FM<&Hu=A+Irg;#Sk|MZp!@g9Q`)V|1f>s9T6y#4&Hq=gUi}Brp!D(_$I9=s00A_+=Ud$(`_DTyurA3c1So=(89i^%+s(f=Rm z^*@&U4{HC@J^xRiG6f?}=_xRn^Z!t&{}1dV{X7wB#xJ?~f27y{PT1>zT95ya*8c<& zKg#$&2iyOZi%7qVl7JOtOJl452WkFqAMO9+k7g|OKRw$282$gz_CIPojpl#U@F2v) zQU8P1m@y;uJ2Be-Bfb8|k^d=K*NYU~IGIJreQgkXH2TZCo&A2k0jhBN02J==T6j2L;`QH z_y3p8pF@IgXseXk?f=7v4};?m6o>ELy(7!1&{Eu-q+ejV%1Lb|t`b1j;UGR7} zC=WvMIR*v>Y3gKioTijO?Sk7qgN*ZE-@bkO-`?69Zib|U#Q#kjHjtHmM)N=M!S?s} zZ;bgra_j%yyLbNw-P;RG52mK3|DQa4O1xvBD)HohA&*xt7|0Gh(o&%6|nBL6r0Zx+|NU zm>kUcpNF0GzqOv`e=l3h{{gNJ|8HEq@*fn3r1}%2=jOF*|5KwQ|2vx+{`a!8BpG|# zS^f91wfwJ)w*H^o{6BBrJe2s;Q&#x@?8#$Nz4jkR{s*=H@z(#kN^<`#wbcGwK(V%h z!vCD4g#Yi!?1zB%?3_Av>c4`50vLC7b&<8F1r%2oE?fYc0Wzz(xtT0;Kmqyd=db@W zCiMR|R8oNWQ&aW7nxg!FDJiM{EG*0@;m^RpK#%-i4yrR~fkEL7@-wM;Fz0_pq&==& z3=IF>ER6rZcuxAhwWm)W|BnmuLyvE&@TrymHRPoJKYjF&)ab*P|B>te9AeX4Q$^|j z|709J`taey|2#ZA@GxazVfjCIF6nDGpFe;8UqCz8H&HA9>r%J=M{oa!GB7ZFM|V3meol54S#7L)_wHeY=M*y5 zwmp6N6vLd}-d>X99He2{!i5-SVe>OoY%>D`1FhHpfyNg>d$aJm%hJ*Ud`2_qENfyg zC3i>-rTnidDf<7(!v~>yzkmNe+zgnRA=d?hJ;Q=)jJ=6_Iom7H+vY-elqe`-<^DZx!OwIenEU%7IHtT3#vu0e^rA(a0?X&ZFj zJSeS$+PR?nbwKA){e+ceAUZXbyt8NqWBy;hcri*`f&2$OZ=VMg7z2PY_F;nD)L2p82{~J{Kf9|YV#3w)+s2t7z#0Tnd%>PVGOepz3FE^X`06|hY zRNDWHjEpgKsONE6QHWgkgV;04T-$&Y^b|2i^FQ&yH^lNkQSJYcmj4+T7zVQbAI<*+ zvK#XLUr_mojHx;QPtN%NaLoVc?SD}HPwLnoC`t!o{l66Z`k#TU|1tXiqxC;1^&s#_ z&Hp+|aaLj7#LKbcXxyC@KvBg zzK2LBao9Hg85GR1#RD`Jec}8e;h$dHg?wn7j|l3mF;1Xa0ZTT+}lbK>ovn zw=gg;(E9vOs?`7Q-@g5Cs-+Ik{~$lL55x0+K>k9;!+HFl2K7I3{?A1YM||wo`WoU3 zL?o5i_Ww?wJQ+y^aZL34s6cM*A@h#Bom)5m=VvE+|39c-BuUH4pMimaD*6BO$B+O0 zU7b<#Ke>A(M?(Go;Lh#;4%U_^;WhZ?|Kw>o{+|iTN61)3Ugp2Hvci7@Ew%sV`r7~X zR22T_rltIU|Mm@W85KF<8Yu5Y+?cD|8qMV%n@7}&eQ$?5yI-7Ij#*J`u($dnv z_lFbKiK*iIw{QPJ_oG_rYyY=4)ctR1p#9(4NbkR$so{Sqejb$b^PqbnL3^WUSp-le z|9^P*?!T?EAxe7g?&`t}03t-FmH!_f#E+RBLsue+N#A1iEsg`5?YM^-MV_^ zzq!5+N_br+Mwu#_~Ae3+)Ob2{{4SD z1Jv|Dr~FTq{{PFDFaN74DZ$eZ==`5W^U1p>hg$g`l#Yy*<^D56&+HQC;rYL9<9d=~ zj28L-?5UIgEwq&3;iV!i`TyRXTO_-Un)x48SMu^A?p{}xmj3_f0qJL(5Sjlm&i}r8 z^&0qGJy3m1&U_!qfj5XWfW|km-2VYO|9?o-|Dd3J^7!$8J3Bito;!#9GxDjG|3PlL zcjxwhUwga%E_QbR*DhZI5+WJXBL9ONas2S1|3U7K|DEjY{@=WQ4J1S|re^*JS-yPv za&Y{C;t>=NATd%gp8Sv8|HsJx)H2*U&{4dDQMGGnVa)(;|fB4`*`UVi1Z5vlDhtF%k#&8%I7)J9yS~wwdan%2y z_P+?M!9*h(qy0a7#tdYq(VdN6|HsEh|Nr^@8{ORjvk+hYml5Fk|LFcbm{R)FfB*hR zzyI&_sZ;cK2a=6A+W&LV>i^O9KT??C$p4`FpVs*wqy0a1;zY8}TSM{=MNIVkFD}UU z|KyQF6q!kh=C`k2{g>oo!&ayL=VxX7|Ln;lN{pvS@7tHJ{s;N`qPVRewC?I385d?z z7_I*iL4?5q=YP!kKT!Us_4psg`9H?GI{%-LvF-!IQ)CLD=YLT8 zA!pqlnbu=ydvyQ)e^E|WY-t)ScId!93_bJ`*uP`@e->ucdm}A$HUEG6LcjZ3ko^iu z#~pRG;BW!O8xmeHTK^-56e=4OZdm&N^jQA`I(rBszIwX52doW%E&qEu+5bOra6f9G z(Si5$;e-DfanTszgOslS3vsdhKXI7;eeTa6Km4yM&c|?@04vk~^~;z3|3QVdv!n*` z!kN?mGeOr|B8L$J1H)882b2b#=j)3$eudHhfAW;{dz8s?>>$(x z%1_Sb#^~`$kNTgTfq|iqfq?<#%oS+7f!*V1XZwF*U*G@!-d->bVo&Pt2eT(nnDBqf z#EJhwd=T#M>G|K&)%71lgYd-u{{NGpYNk$_1Xeq3^5p+;eOTn`YEbX9LUs#?9Tye; zf8Nx||L0Ge`hVe!X<&NM%<2EQ?Iha0>97sPlxrH;Q{ZERC zA}Zg5+=Glm{Cxf|oH^zH+^G})&zm;s|C}ik!1Vm-lmE}1HtGL@8B@SCNDd^nVCK~S zi)Kyxzi{SMFb45K7$gVM3o>W+y1V|*oY4D! z{>6kj0wLGFNHsJ&1(g5*GI=1!gb zfA*va|3P{|W`OjA#9(Z6IZzq_sRgNbjLI(ogrh4`kzMjBj=|<%?91M$%vW%#gPMzhHQQY z28J2<+5sayexT=4mNPIgfX=N0oy`QguXa$UsR52N(4Dr}@;)dTW98QV1_lN{ z1_lOD8yDmTa@|iYefOaEBZI~$KaVY}>1E`#u%)r0^$_F4C zgh6a{j7=OS2BVSn%w}L<0ND@nIvWE61L$mY(74e=1_lP0dJql6Fufo?Ha4;tNDV$b zg@J(qRNosiFff3^0^|l<7}O>Jxh;`_fdS+;kUcQ7VQgd?#74&;^&l}24ZDzz87NnkfdOQ0149D?2O|rEsj)GGxv43GnTZLTnTd(2xv6Qi znW<@qxvA++GZT~l#)gLf%}q`JTUl8Aw=gq1YHn)UV{U31U~XzEWo~N9Vrp#6WNvE8 zYi?>9WNvD@#oW~No2jw!Uo#Vvf99s9|18YRKAD@E&NnwTH8D3e288~%bocsi z*E;pT{q$A;&z?Q|zrVNle{6L0{{TO~|64Y1{=Z`R^8d4E&HCTe*!ch8fdl_toSgob zm6ZGkfoIR2{m;zE_&HtZ2eFE8c-rUsmr@5(Vfw`$^p}DE)UvpE_hvufHM&_ob zhs{k*OU+G9IW5f0n9WU1^)1ZIu9%yeel<5W?Kd|y6*4z91&J$}o0`rtH#L1_Zfg3= z+|=}oxvA+jb5qj0sfwT)lFI;o7xp4A-w;XSj0tGQ*AQ z*BN&1+{rL|)+~m#t5-9uUAvay$dMxqM~@s~IC1m5|RweBTy+VEwCg+IX?S2IbA>*1jT+%WWyYh zEaBvY7znY%30cMkB8DJ|wx82kOG^vYe&hf^bv&~DC;`KX5;IyP_@5KxT~zy#3`3JZ zvLD6!oSd!*uY*~{`=8Su-Tz32p?V)V{Ly5Pr9ciK!G0GE`{4m#j2y?D$nlRBFr1tU zpmYSX8G^CdkH{~Iii)lXqcQD=8HS_?tQ-;k=-%h#gk*Mz?bzcVCI_M2z$StSO#7js ziBJMkhU|Ytz_>uAI5|At}YM8Y18b3VrP5KSTirX^dnjxCle!JWfbWh-^Qy z<1mckG$CRvC=u^Nn92|uXvl&mAO&y;(9kBV zMkAMCuJ$O!E*&`bkhlk@(otgIL%;(BJUP8Qyg_d9@#W;?^aBwfo-atwkJAf8`EvSu zcz6VOar$}%`hWz2IDJ9tyg&peCz$m2=k)LgY4rEt^!Ep;_weun8{!4#_ymF^QE@OQ zC#QFaS7=BWCnu+8xCbYvS4dbWM2!bX&LcDwM00WmdvkL7dvJP$1_cCia(ahzdW3}q zazZ7+O8opdgG0PIIlaPzIsN=NA#xsI!$4e4KOcy>ATk0(aB^~j?C10g4fPA~k8yy)H9Rp@S?Dq)`^$QI53iA*3;Pemo^9%O_OG51T3=Inn4fWy-4Gj$q z0{P$1k2BQIFPPIKl+!0H2&{+`OoIH+>EY)az=>?XC&;Z}|3lr%$;lZTryCEpf-^WY zG}JTPJJgReC^&#K)FUw5&(F^f6pEaj9$+~ysQuwVp`o52`$NM(tPqg>oIao!s)t(?5{Y+us|UfP%o0 z<`0te;`9bl{vbd5`FV5tdvk)t!7NTrPq2DUkP@&zIXOeUI63_|Lqj<^!Dc}ehk_IY zfh^?Y;KtkNkdt**&nWUK`_ z0EBCiL0uh!S67G3tF5c8t*eELfYpHskOW8uN`v)7mDPd8Ktvss36cd_%E-uA-_Y39 z)Y#n8+ScCQ4#910?QQLCV0K4aduLl)XIn>SdwW|)TSt3mJD3Sl($)%A*3sF~(Fx*r zcC>f2b%IT4YikEFK=Pe!9ql00-VQPeWNaJQq^@qpy1MS}p5DIx3H=i%Oz7{QG^u~` zgb5QTPna~NzkhQ7lu7;l6DCZW&_8j~#EFyo`}_MR^iKh+n$SNH1Sf(d`}-$Om^5)h z|AfgCCrp?yani*8$rC1m)lTZ4IC0{H{{H?+V0zM|i4&$wm^2Aw^(FexyC4j>R@6$0A{n9LSs~50C#5 zZf^fWU0nVLIXV6Jv$Ol}Wo`Z6)!h8Qy^+y>D?PpcrdnG64b|1bZUMOmhV@ld{~K#) z{I}HA{qJIC1~wza+4+Bfg9F?gHw%mZjwUAmt@ZW)n`&$SH__7iZ>Fsc#uhp{|2?d% z{>ONE{g3waB2FrosF(BZ7ytnuNcpsnt2~Z4T!!WWKjEzo%)FO+a^O5C1 zY-D*D8$`n}Obv(+VuLU;8^#BTfzl)>4S~{vo~kN1jz`O^(K2f^4UDFN(KJAvG+?Z$ z39fS!eSQDuL+k%EX#EeW3&C|JavhI_4X@+f-T#NXx`ONIKnI8a-ZnP>oz2Yt+ZY&t z>vvE&PAoQ1QvkF>` zLG>x9ZUtc&8=VHpfiO%Q#s=|`F-RPQi4_B>1!0hS7>&%vCI*rR)&HROBq+W?@j063 zsgvhN!*MhmN7KM)8UUpMSp5&GC-NgB!F67GP!PCZ531L}^*_>B0H|(^gx2#xj*j3y zIH(^FuAjBE{)5VCPy zB!`S)axfZQ4lEuT3Le)1)upgH7MTXIVHl(agpv6mHcSjggTz1>#0OzyHaZ_BhfIUm zAPiEAjzQuu43bOq^8=43fzk;mU4hc;C>|}hM$^D(8W>Fj)JX%Nv2sxP3K}Oah>H53 z8y@~2)NcgU`=Bv<&{#WYydE^h4hnM%U0v{ayq<~*c-#P_7aInR=fmpcU?(T=_i>Whs;LjBg=uO4^W>uzBIo@)p7 zt3my6P`?XAgZks3el}<sQ&aF7Jj`Le~$%`tu+fG&TXM4?uMTnD+Jk4_dDPs@G63sGsZW3m!8@aVN6f zM6yBpLG#a`d2|ql)vKU77KD-cFg7|3QU}5yaS#TvK^VqHr$KVKFib77JWLFoMppy! z2P_Q1;RgyQA0PO-0GJqzhJ`bX528UBCXS7UiGkFCFo+MrAT|ht*f0#^gJ>9r$$@B) z7>EYB8#E3BYM+AIprG-jp_s=;-8@=1jHZFnG%y&`0BrsrRL+9>yP&oIAPlOPL3JRw zUiR|(52}Y@7^D`4!F_yaeGXC!6Njk(6|H$gVrU0+y!ciZvAJi@d#rG&4 zEk{Swz-Ss6O#{?P1F-rZR38^Y=l?O&9)@sTm8?go|DAT^-+ z8&r3K=ITLn`k?Ux(E0(;_yTBd0W_`v>c@fVY0z8(Xifn%?qGyv?;oh#CkKPfhmCuK z+ytsaNUi^2>Otm!!UI;nf@ly%u47?*kQg!si6diVIS?BphfKrRAaM`|@j)2IhSBI^ z=;FwHklR7)IY9A)5@$I2{~$FWwJ;3g!!S$?M#IEmG)x>ugT(Q%Ve&8 zU>LN<5ER!SH-OIf0o4QO7-TP~jRJC`rJmk@J3~Y8xk8|E0FYgv^$Q^Xfa-KoFsS|q z)kUB_G^kz$VNlqBFpLeOk;Ty2AU+7=Qj1LvrWQtn)POLE55gceHVl#jVRSiAI|fw$ zgW?&4LH>ea7#~K1#6fHj2C+dH#)i?zVlXzk9EcCYAT=-y5(BaE(IB~GfB*lWxg1dX z1f3BDN(ZBuI{BX5a18VE`kxUS`#&`*>VHZ^#Q&tQu>Xmnp`&;-3`Wzy5KIFBZf^fw ztgZi-rKkUID=q!sSXlVKp`hS@Xi^R8bg-G_85#cx;>^tdH2gt)xI9QaJsl+uL3%*)Aa!7zkpVFqO+QE-7(?}g*kFBF)Pcld7;I*G`v2;j z9B`T9W^4ODJ~$Z69;tOrLP*H}_@JQwv4MgA16*9_z7L`(J^lZN<;(w1ZEO1vYDkhJspfI;^O|7#KeHbL2~7BasNTMB0l~< z2v94hQP?0c zm|S%9|KjNA|Fy}<|64LL{0k^CJ7gLp z2jU~s$ZT{u5FdnLYH+c!$s>!Q>uXF)`wxmUQ22r33&cjoFfkAf!XP;i4Z|=#G7Vyb zFh~uECI!Rvz-VN>ATbcGPf7V7>*@L5%gXA1dSKvac?&IXi{j(|=f%bS4|a8>OFLlZ zgbDv=c6X14KQ#P@dYM1!{?T>|EDeCp;{nzGp!yM1r-AAX5C)aUpt=tv4#uE5kpzrY zFQ{&XVUSrcHjKt629hIy!FFO(gKj=Z4NMFhjU*2;6BHJpumRQol?e&pb`6LIwJn;` z(*AcKwE;kNFbIRf5E&zj!PqbwrVhr3(J*mj8YTy$VR9foG6so*_#hgFLG2h&y^4%M zenZ9}IT#I5h zZ<@9NruX&zpWfLy8va_7bA5_nQ>Nr?k0V&-gWEcwv5VMP@OTHP z9;!}E1hZp2JpOxHT7t(*KViaR5*o0W?+st9xNIC|p5oWDFAn(I5EVPk{zVZ$)BAUQBQE$u(Ztu;wW|Em%bz~eZeaUM`yqu0N<_~>ep`5-n7BkKo= z!T88*bTOD5hz7Y46!xGn2CWSNg*|93ASk>eTwVXCj+V!eIyo@#f0%~{P1*pR_4WU! zb#y@N84d5za2QPk!!8ZL>i?psDDapzxSjyb`NqbA$G*Y!Kd9aW)sr9^gh6a{j7uC{ z9X>uTGjNIHGYee~W(GP9RR`+JgX$Yl-2=iPKFIGNG0<8%&>BWiU4#vT`l!tr8UNd} zvf%RopgOlTGxI-49K?o&D>54-hKylyATbadgwfd`J_y6)kl7$H5XL125(l+SKy*WD zDtKN4G>!rCFEWPJ%cRmEGqCAF7Dr~Is|Cq{Fi0Hak4QH+a9ax$=AgZ!AR2~2=R(AJ zc@4Y#NKQW@IUwM_zoR2n+W??-epB1qN5glt&Kpew!#EAV%2-fc2kZZX=88dmVQ~K+ zR6oM%Oc0w8CPgjCEK=2j^nft2`q0&(^Py`Ta>ByEcjSWV`V8p(N1%NJu<(J^JGkha z&`|Jt0MJpDPnFbKoyV`Mh67)Tr!CRQD~{<@SD@Ei-Su!f0))&+p} zbBvA!_=C^Gq~`g^Q%2|eN9(;|TqTJoVeJs$pH>~~#jS+*|1MvEvl=>E= z79C@$b3yh|1;fmS(dc&L;v=cAN=*C@>Py1v6>@0MxO854I5;dpd)B)1^1y4>K;tT) zaRB6c8C?HD*9?NhK^P79vHQ3lNF&GUR4*+3UI{-8u0IH8cbvFou*vJ^0 z7_vMeHcUT^MpqA-YXPlO0Np78iw98OKP?~tycQLdWQ2PXK9!NbtGoqux{mIhU*#GDlWCm=E9~2JM!k{)3$SlyA%Ahp? zp!ybsLG?O}2C+dHoevWOiNi3u7>JLK(basgr5(D-9L3JJ|>_8aQ4giVu#X!^QE{w@|g9x|L{5ig_fc1+{Bn7~~d^`$6X%7eq#a+c=>10H`eis_#H! z|Dd{rQVd!f2r~;*r-Azapm0U0Z*lbhVQR3c2Z@0&Obv(zVPr9EY?vBkIgl6(gT&D> zsBQ(d13>cv$aOc!KgfJsY;5X~#gN&cum|%&dn;mN!DA?(H~^gi1#%a7E(I;TKyC-E zxddTY8vry{Gt%=mtPZDyZYVAut^Y^s|Isus%+mm9OcitvAE>MamBFBL7F6DX#=}A5 z)}ZW%#HaQL_~s0{?Gw?XpcV$gbZ(D*c{?+WTugT~iE;R>p=Kr{$rV`CEo zsl|nn)q~W)_%IqK2IGTh7)F)@iGlba3}S;Yhz-K9b^s`Sfa~b^c8qtp!t5# zx(QI6g3c!fg)gWs2i57Ix*g^Qm>Xd2f#fel0au2932e}Q@rw8%DV-wK1eNg=Y8p{XCf$DOQI#Sm3fzFu&)lDG%AiW^F zJS;5WW6_{6A{K+{{bWBs@cuf`*gq&tVf7d`8d)C32GPhET^~peSqv8+Bo4wLwYX@I z90-HtVHlYY8p8ms4+Mn|D4ihFAT~ONsey^3^FiVuF;LwPipT7bkpG}G1qxqK{RL`k zz}8HF+yTQNw}IH8`W{sOgVH0Y?FQPf0TKtrJIIV62Zs?`e}TsHD5?8FdYg)hMr`W8Y2hQlW;Y# zIv<^e=_i5))dL_mfaV@xW`o2)bukQs(j;h&6G$GU4yGQ&2F+80#6k54XkG)fHw@%2 zQZQ(K091#7&cp$k1)3WmRzIlT0;vU=0jirobLXHs34~$w7Kn|ELE-HudugUVgdxhtTy1E@^L zrUtARqzBd(0I`X{puT&OukU{l2H68zg9xe%KzqGF{X9@#5w=$WbOs-&jtBMoKx4+B zbzh+R10;@IACSWawQoS}4p5y0YIlJ8^2p|Z#uPwq1lbKblODA093&4qn=ZuJ8GNQ5 zC>%j;08sq}3Re&f!pLkGA0!6C*!UnZ5QfQv*w`>Od0b-1;vhCMhM5f#gRx;WNDLGQ zpt>7`LGe!vMpp~tgVGsjj07|X1qw${7=q@PK=nIlya8k%41?SNI!6IC#t%vxAhj^; zZ)XQiGawo!2BJanG!o0W(fWVnmg^%iy^s2t^z;rY8)5xbP+19Ds|G7~LFF>I4hPlW zAPlX$L3JXiJ_MDspt=s!=LXmRNNT`*sCpDOObizt9SvRs20BL%IZ|y^kEpp2i1$9u@O)^1y=8a>n!M+ zbr>5&w9Y_s`528UB8yi^+qy~gRVjv7+W5dXDFg7k4n|@H63|4=WQuo93fM^f~ zr7=)n9dvdNC|!ZV7SxUc?dt=DAIwc4H-Ok63<_^hy9(P{4$#?6pgWmB>jpq(fiNh& zjKs2GwEic(JRFJXWYo_iH=TgSs6k~U41>yK*g7@P_&>bytfK+&K&1Qb4?`XAKS1o;ux1^}%I z0M$XDx(J3rd{Em7RBwU$t)My!gh6!{HX2zB#)hed@j)~Q!^B}UNDLh#%YoP+3{nH5 zL2M8P@j)2I#zrHHp|e4J(3}P+t$^YlMx(Pqd|Vi$2h@fDg)3;R1eB&g<1L{5lA!Pd zg(b+1APlk(gh6bO9B98kXxs%kT_BJ5fZY}s2OrY{?Q0#0W!z}}KXS|Uk(k~`{Y-j# z2bGP;i=r$A*#RL2P^&rXQ{*BLjSQ5Gc+;^*e|L zVGtV`V-thPgXBPGOM&K(Kx6)(IeJh!1kLk++E6e%K{Uu-7!69BpmiM}wICes;sS0j zg3=3U{s$xm!l1S*Xzm}x2F-7c#Ij+u{wKXW9Es^<)XyU`oq*^5?d`#JIH;TiVbGc> z&|WH7{|i*lW2^r`{WjQGc&wM#e^B`guKPiCIx+^;?=U`y4Z<)!h(_l_&)^4{4Vv!< z)yE)r(Hev1F+lc#`~{lN0IzS0ivynr0B!?-+zQ2@@BpcU)kz>4gpunh5Fdn*#gN$` zIS>YkfiN-~nGX{O(I5epKz(#j8w*tbgW6f3_yx5iLG?Sx9uNk(2ZTXv5C-i@0qFy& z1!2$}45$qT8t(_`1C3k3=7m6J!}hd*=BYqweWaChqxJvDEZ0X`Iv@2f`RN=~HiF7h zWDM$y_2lRO2ekn}^*X40M(+cI*64x6LHa=bEYP?(s7?f{gVpJ{XlOl(wY>oCUxVBL zD!)MH(;9=;K!ECekY7Q50M+-PIv#{k{DbW7=;;6Tsj2_b`}v@H3K_%dFA$9j!_*_o zgTz357>&+`@j>z+4C8}nWDJu7iJ`O6`RHoU`6%ks(*A?`>ae;Vokp(jk>x<*ps)t% z1WQIETHrVnj?Uv2ap-aV+9~KXe$Y#nLoZPdR*FRg&eUQl_7jzM)hs5}Oh#UM7Q&ju=Q zK^Rs?f@o0P57G+7?};@!^A)|2!q5y7{mr) z5F3P%*&seL2FbxNvN$N*K=nCt{SIS;#S;?1WAiXJn2wJJpM?Obr$O^Op#DE-&L32_ zgD}V*WII575C+xlpnVpwv;gYg!_p^6JxC3x{||~sm>Q5BAU0^60MwowY30*s{Xg`| zA?pe^!gN?4;=#lwL3s%H^_WiV9?q=P#p&H3%Krw*6pCS2a0=P;z%?|J*cjO)jgp4 z2gF9kATbbziGkQ44C8}nbUsK7gwe%ed~_OFEl3U-gXBOMBnF~E7@dvI2dM#JWN{cD zCI+KH?H^E_gTes=CnSLPKZ54!L2X7bj*kb=6M^CtG#(G4LF4tH@JFu8VfKOPw6y=A zdL1-o080a)aRbnpKWIz<qtv)qy8OQ z=`Gpc|3AL^A5@Nl=1^hfG>8wvu(}>p=EKTZ(E4joIS!f^AXInalLytSAag)%3sC(G zvX536WEaRD5KT;-kL+%c9*{dhbq}bX0%2TibU7Fwq#lGpd~^&F2VrdDFfouk2!r?_ z8iYY?7)IyA#9=f@9)v-B5DmgGHaZQHLly_M3t{y?G7Vyb+Et*ld_nC-5F3MLX*6{p{U9?z=kCMiZ(-(BlLoDG1l9eZu?(#4 z0=W$z2Dux{8URo|1j4X72_FrT17URaATbaIiGwhVjZDMX_~b!qU>K$j#D}p#Gzg=M z!T2CK5C-u<7?};?gZ4mx>UvP!4x>SAP(2UggXV8Q;R{M9AU;SO6y~5f28|_rL30WqcY)@I zNp%;o>OpP>)kC2A38nr=cNZ>xbToLMB4`X8)b9kKPXni~Sw_el2ug3<)&%zn^W{Gjvz z3LlUdNF9gSATiL| zL6AJG-w!%R2&4~$LF|!M#*NnhBeP5&Y3Y2_zvQQLP#Fz6V-HkDl8Qm=13=|FYz_c4 zmH?{1!Sz3=e+;TSVKj)1jIoG=%6d?}L8?2*Q4i`Hg4~L={s*}YgmJkSDhC?F2JI6> zum3@H5vUFWVGtXHL2P6U5`$roIEW3SL2M9)@nJNw7&;roN5&vMAPf?N(I7T528p9% zm^?@v#D>uzHaZ5)wS)W*s@FmFI~XSRZ^@KTICf*9T$HdOy&aKcM}5pgJ35 zF1kISF@BI7C{2Ol7c^D?5(8mu>cRRmGQjNv(0z*_J)k`Wu(S<2Ct#$N6QlJ%`Q_qB zODm)P9l2=*G@lPDD?nu?DHzm82bKAtIe(ZwP@M>_Q=xSvF@0;0dQe>q(hD<()-m+b}l%9?;Mhz23r$PEb7$y#4!!S$?M1wF$97Mw~h>wgx z;>dg$8zc_GAU=!+v0)e_2ErgdIt>y7VVF3K4XV#UVF1IRH36Xc8_?W7s67W7^9RX+ z(g{co)aM7qEl3||t{&Mun3*6kkR0;-52)`C8V`V}L8jsCjEw)FHU+4z2iXBi*RcI5 zAoq;4G7gldDVh5R=^dT_AG!6yNXsuH*}tH&60{Z@RBn=jL393~xm?g$z#x5~F? z4ju!5^`Ft}Q6xTS3?5V`fa+sdxeYRhmKfwuki8&`QvV~l3q>5}4-k!{22}rp%m9sF zgT??r^%lG?!g1a|ObtvOG9M%c!ys`O28n^#$TWzJ4a3wS%i$A4m&3(J7l)Y-8vlXS z@1Qy!G$#P6w?XGAf$Dfr{SOicVNm@KTK5l<1NGyP!whB~$R1GL4@yJGX#kY2K;kfU zAR43=M8h!1Owid?u(g69cfjrl0L@p8wER6<|Bu$)BQ4F3`j`AP4=OJ~bMLS*Q{?g& z7aMeD9;i$Qji-aufaYF7Wj#v$52`nDU{E;^8Yc#g?}GHx1B2QcpgIfgMx;6&E(UWi zvK&kdL__EQLFz&4;6Qa5tR6zImtcGt4O0iAVPd#wkQxvM$%8P6jf`PpAR2~|LQV@HeK0*BbujypX^>tJAJo1B=>_dGfbDMq-Bmf#%7)SUpZv0L zq@|Tn|Bj{=SQ<$1_Wlo=qXm_rgfOVB02=QFVbGbqpmTsg^8xVwGkX1r&X0-t4^j{6 z-x0El8uFm^4xn*q(3}I@jiCA*hGFi5(J*mj8c7Z`1_0{k!s>rm-2|dR7*rpDXb=Xm zkukCuhz-LaH6S)J4Pql>ba@aTgt4gsi6P4&vq5qo3=#uj7#l=`Fh~r9L2MXC=7ZWk zu=*dw2GzNscmj=!fa-f#-4CKc;gsa(_a8J~1RKi-nF%rvgh650o1gz5ww?rJ4h)0# zg2L)|kXn#FWDF7mwHrWgfaw9PGlZRQIa>c4{|AldlZr>j|3~WuSiLYxkDRmsswY8p zJFG0lM}yAj0hRZlv0kioDy;5=)tfLHBo1Bo57G~s2MBaVHss0#+A+>LC~gtwjfoNrUDGK=Lqg5E~Z;sR7BsXb>A6 zgXBOMCXUPoi6Qfm*&sO>MixhA!{pIvm>L)jme0ue4;t?W)$O3T2i5nWI04PIgX&?B z7+4OvKLAw!gUS$4{f<)qr=@|pQ{9Q+zb2-UjspLG?IB-3qHeVKlVv zgw?;GIuukdgUV}=7-%g5KD$Vj1FazkjZ1*cM{ys_Jun*0T_Cp*!Z5dk>LySf1gh&n zbw22hT2MHE>;>^bav%(7zl&d$QUFB!XPmi z4Pt{ZG9Si<(`jkobN)c}J*a&JiW`uhL3~hp0M*AZ466S@b48&13#zL@W`Hng%^nDY z*7$++ z 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�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%0Dh@;xZ+fX3fJ@kOn)1F{>GFG1x7C{Kgp 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ì@9U45`Lpn0b&6k4ubRhl2Vo+HQvK!RL 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

        1pf&=iYy#DZp!G_iJ^vs*;CdOf zuL`6#DCj>pEn8TC>rPO+2(<43WFI(9F zU0^$5c3WD4*K>mE5s(_te4M6&!hc06ssEaais1U6P`wY6C#C)e`4NOcYf3@w7jSZPGJ-z=R3@ST7=?NPKl@)lgmDPVxc?Q}m2I@zE`cCM6f!PI0 zzb2!-Ls>yF<2f{PJ`4BggXb) zPEZ};Y-R>t4-Pu>6%?=K@$vsbeSJ{79@HKH)vq9RpfUi&2etJG^u8pi=mgE%2Rv zAUg$T+zH3f@hA`*^AU}-a0SX5rBluh&s67UX4{R7z))B%W{h)FSG*1XB_b}oVY8NOC zgVqp()|7+Hv@h@+_X3sqT1ra)L2S^NI%vEPRPTc3`ax&nIGLLM2lYeKf`Y(jJAvAO zpn4ESgXZKx^#!QC2kM)H#3{yRX8%F6LE#I=ii-cWU>HdplrB-QvhshJ zUUYF#J_C!v)F9CycZ2Tn0m*~x0ks1_X&l}r(bNR50R*`fG#3E!2dF&^@)O99puGSf z42n;3>l=_>5GGguNYMvMx1jV0Dr-RTfsAbp4Z-z4s4X?n;Q^}uLG5EueUFYo^FE;Y zAJBP{F!zJf8>o%|m%YZukTQ6brfWEW(iA98Kyd-8+tA|z)b|C6fz%PgpmG?w{s-wp z#vuJ5yFl>|s!Ks-Hb`v1>wjon3UVu`ZU?yyROW%pNKkuQSsC0G0Ih=pm4Tpg9^`gV zcnub}gTj#(*ulsMyw3}{?gG_MpfU+`Mt^2V$bV4%589^=s>?xRN1*XYP=6RSW&jcc zVNl%<3R_V98R_BiAH+wN2dN8HgHT@5g z2gMO+FC7Sj+K?a`RHuT*DL^y~gZlTTnwsEoQji!ZU%|zo;-EYW%18?#uGqhz%a-zPI}iqi zA*j9qVGw(u>z(0lKPat%>Qhi$f#MVygVGOZ-Uy^-pu+)F|AWTHKyC$LSX%%@gXVHT zZUnWJVeSW|Ur>Gk<)cwd-+CVw-k|UYKlOS z3J?v_hm1k>Ca9kQihoew2~_S7GL!D|#>U_=Tu_+_D*Hfgg<%jMRNjO7lc4g`!Ndey zrh~$W?(T%PS?FOesLcZl0}!pLqy#?u1yt{6hlTwI)wAir!QeU_)PDx$bx_-}1`T~vJ7eq(@2aN+%B_;g_tuq1jk3sGRjX8kk zBtUKe)&C$GgkfwL4e|r1ta7)q0-tdUawn*4g{cLp1Mxw2g4%?jwhl-=OdMnfs4N6w z(B28q+B{Gh4dR2;`Ptip*A9SaQ2hz2Q$cz`Gz^2>0IG9A7$yc%1LA`)NFMBO3yc3C zcYxdgYPW#oKyCx&MbKC)h!4{br$K85pku`#_kh|upuQQ%-C(wZ19)$sqp2yl-3w}4 zfW$$50ns2mFbr}($i7i*2Z>W?xKcAbKw%A9iv;R#fYLEC9*p%rsJ;hbcpJdk8N9v& zMpMfx_ zo=47WFgBZ@*A#AE=E3>Py1fY;gapsQd@TF{qypn&$`A|Dbie zpt=TB2Z8E3@cMb^Js+U@35G#+7N{Pj>KuT%Ik@cs8mj=+_n@(V(A)%Q9sq**f1KT22_4~+1UKoS62s*$AS1Dc@PHa@v*Z5uXh234ajex z@mWy)3hMiV{0<5WkU1c=Ap1adE2#bl)uA8^VuQsT9R7pZj*kCfd{7+=W`o2)*umky zzk|bnxHyOn6^E;Xngdb;Y6F4VETH~AC@w&1(Dj4LVo>`7^*`VHr=hUGyR4X*#4oQOJy0b~{}F(@5_ z>U|i7)&HRM4oZ`tHYTX9fw>)&A3VpP=zkkY7OVMaH21Bxv3gghAs0pz%~t-80zy zL5X`nemBz8{12KV2F)Xb!T}kB#?(P|9e4~NH1t1c9spE7fWi$_|AFd6bPTHdL2(XB z7wB@7@ImwQp!OQ5d<5;E1FcI0)&HP<$CdH%;PZ$;?HEuS05q-xE(7iD|AXo>P+bS2 zK^U10QUj{bL3smI#)8T=kpDpHU>GD1D#Ji+Mo|3<>Vt#s%mb|<1&zCd#^6Eo>7cQD zPqVVVvsnACe+jC0LHb}ACI{k!>Izu? z1J(Z^y&&}<3{nSbyTJSaqCs^zh(^XBb71v9DC|J)L=GRAT2LDTq;?eBgX>^gg#%~| z36!^x%OMaOv~C*|$DsBat?VY&Tu?m^TIUC<|3U3=5C*fIo&QI;yMynF0F9S{+zrB@ z{uQV!7{voq_k+S6R7ZgFH>eH+m7yRpWK2r^57G~+*Fj|-h(;6FV?K$D$;QlEn96<3(NqtVLUQn9?R0o6B7?s7vf!F?l#{WU?DvFBwUz3~+KEnaj zR?}8g{12M90oUhtcHs4jpn4n~gX&38xd-wiD1JeFQ2zx)gX&XIT?k@>(g$dq1XTWl z#6k5U$o-&j2emaoc>&ah0JWV!Wgn=_1Fh2s_02(H3|a#KD%U}JKCnHvozUQ2h*(gPUh#1J(mG7v1k5KFB{HKY-SH zfZPl6JIH?^Ib;knV-!Q;fR^C^N^77w9Z-3Lj6rD+6fdASrltMFm<@6VD4l@P94POA z+zg^Y7&Hb2N`Iho6y$!;+!UzJ0hKkQc;M=PP}qa&IS>Z1DaD{R04SY;Xl!PI>;cJR zlN*d;F!zGoj0=PO3MwlHGbSZ$LH+^V_X^9ap!|vrgX%_5J(}e2{~t7`56b_b@B-Dx z_%Nuh!zWLy9H@Q+VNke(+zeX(5896a+M58vptcEU-#loqKZp(LD}m}_P@N4bi$G;2 zXdMDJ4BF=jk_YwOLGwJIxCiU8w*C)V8wX;8%0y843#!LKYC(Ju4GISk2Ju1lIVkKw zYCz_I!Vwg1Aa{V;10XhNd>z!r0JRA~_JPJ5Kx0rK8iYY?P+uHm4yb(v!k};l(I9_= zv9a-g5FadVV)EZiOAEX|1>|m!J`e_(18R4J)PuqeghB2D`2{%)Kzva90@S7gxeruM zgZu)*$m&3BP}q-R+V5Wi#T_UPLGg)(0C6h|AWi{)m3;gXzd~u_WgqFLdGCBfZT$N zLF-IGe2^TdyaD+GM1#sALKx&9kXjH1`v>H1Gz^jhVUSvwdB|*#K9CzhYQSY5bj>Kp z9bjx?@*gCJj6v!t#US%QX29$Rv5_%I9E{QYgX{;8dXO7IX2HbKX^@&xJX(H?rh(Bk zFq#HN)4*sN7)=ACX<#%BjHZFnG%%V5M$^D(8W>FjqiJ9?4UDFN(KIlc21e7sXc`z^ zX@Hpl0{;JJ;t^$FU?^b_U;wch85kI1pll8X1_mZU28N9M;*#{l+*BhIh#rzjHmD9J z1||hY76t|e0fy1^G`!N&Xnc;w=V%%jO#`qr0GfLS&EJFeje^$DW5Xadpf!c)bJO(V zgX~9k7s$OJF;eXZtxp84eFWW?RvH)gA9Pn@WkLe@Yy)KTL2S@^L0A}#(xdrhG!2ZV zfzdQDng)hb8UU>$2JN8()pxisNDXL>8p@hG9BbN0t&fRS4_eoU>^{(1e~=il`eEuo zegNqO?PGxLV+7r^1Zoc;n-5}x+C!kVm%}N(NBuHdevPJq(KIlc21e5WC=G!2%7N-S zTo|MVRQJQ`&w-*rbv?2hL2VXt-31yu0PU{_onZ*-|AXj?gaq*U1;}=Q*r4zMg~2Eu z%`c;AU^ESkrh(BkFdWhVs2&HMJpiiXaADB+ItYXM%pmmxiP7tS(AYe=^*?Al1GM)N zbfz-s9%ay3h9$AF|3Tvb==OlZ1~gtU9O8V`52Iz*Xc`zz1EXnRWTyd89fz;(2i-dW znj;6*{R3I&BijwC>p|z_fa+rq2AwYi5<^x)3L7-8ALZfkAG8Jle1>6k^ncJ80B9@# zbWaz^4j2Z_1AxpP%{L=E-;BopX#9_+fzdQDl+ys{JUT*kKd5~G@*}9u8!Q;q76F~} z3#*es=lM}o{~H*9&*uf*VGL>qfXo8T1%TE9g3eTj*#o0NVFq#oC|pMIXc;h?21e7s zXc`zz14Ahdfa)($y$P$+&}q=w{V@LwmU${T_8vfB!-MZ>jpsLqj)smkEVgqG%%V5M$^DhN&}!X=8@|&WH#um zd{FxUp`pESej18*SKy^O|Q&OMOQZLAD zpgDh-n?Y*p9Ul*7EF4opqahQ+K{|H~-|6$(VgBpkX z`1}v@@PPZl&DQpRq_6LPkT@l74{~?^pA#4Nzpu9T|Ae}_|3xV&a69r668`5VB*6LL zFtoAx4+^uvUWX-wg#3>W3i=-#82CTH#f9$em7?_Y{~MMs|39^@?SG2D|0o^}gV8iF zng&MG0G-o7h_my5H*<5W7$g_t;qgDh)fIg9O@y1 zNSqRPhdMj|kMr{S-PnY(z|08~{?F|09#Ua6+C~{|qm8D4(KIle(m=SY>wnOCHc*{~jsxuN|HpWG z4%+%2y-o+!^IuZJ4fq&I=AzOQaT)U>u5bYng(c_24X!u|AW@H!Rjky z8dP_JiwR)Jn$GmM@|k(ogd`r zh{6YjCrIy*OUHqM|HC{yXwnAgtgrt+t)pYK?jNoDN7KM)8W>Fj1C$0p{Z-H!c2FIK z4TI`U5C+v>pt^M^U{L)Jaxb!fKz;y=Q#fw{ngfXU_Ws|MoBO{vKmUJsZZ5bDP#77B zQRgGu4{Apx`uYyJbeO)5lkvV_lb_uAS2Vvy;ms<5ds9h26;_|;PB?UYN(4ChDZU=zY0)X05 z$abQ${p{@iCk??i0I1ypIzI`te}Wo#%IJLmXxnGBZ8Dk$M$^E6rU6i$h+ap*_(2X1 zkU9S$u-*^3?gz0!bw7xP`2|FS{0b8X$-yu-F_;`S8l)aH29OgP3a=R!7Y4~wtL;WlbA0XWs4@oNZEyd-x3+db(>*=IZPc#OzS?LS7)=9%Ee(Li zuyKw1gT&!;{uGXvgX&OFoe84pg<-=qTG|8o0aS-mf}2W8M$7&YTJ{gM^gild>h`fgW6q$pQ=om+ zpmkKBvK3Sgg4RueF!Mp_hLXA;q_?fC zY_$F#t^Y^Uzz9nNpt>D2_X#RPuwhVn2-+j%V`K9lG(HOIhYq#!aWI$NAh&_SlhC+7 zHS0)f)wSf9L+kn<)P@C(0f6QJK>dACoe#$O`Ts#QXj}kvMi3}Gk?VbAHfZk!C|-sN z2IXH+9Zm^uDk>T+`$t&WKUC89s5@!X_XPFrLFb?%mwouyu=W9{ycvpXr3Py{0-a3@ z3R`Sp52}kmXXKJo*A7NK==DE{52}kvaVsJ9ptFELcmMX}=Y!_~K=nQhgXRH1^?z$- z=6_JwVheLnT!7XQ4%YO7?k-RposzmAq<6Ibr%f4)9#^CM(QqCtX#iLGhpkLR7X$4> z8!Y}9%I*N|I|r5D=-~_EgX$sBST?A>17T9?NLs3;#4Vuu9^@~O|3DaI76?<*y`VV& zkeN+sY2Y~kSlth555U-cg@xez0&tDHfbzyrNmros1FFL*!K3y6XuUL4()*}8DNn1Q zzCWnk0F}YyV9>b1Xgp9J51{!JT;UI@6G8PQh^7>S>O)G+poV^se~|qPau*1bYBnJ~ zpgDltu(1E2dLCTwgU0`%7&Ha|5(BLTs8313y5|DaMggt2913Y1l#eN?`$2j~>wn7g z@=!=Cqi!6HXHXgdjgi92VNibw#wL~qm5-pZ9AwrgCNE8a_VRM?MA2|F_gM1$}E>;V9!8Du|$_+YnTaSJYSkRB9&V$lmq)1dH!odp2v z_oLAH`QY(^mW+)5p!F^2@c`N@I26+MX#G!K{u>H$JL<;KxTSU)0F60=*7SkOJJ9$i zXkRp_uLR%8c#1-BcbvBkd4rd(*s@q*%|AXcZKx+p;bsMNI z1J|3buKz(a$b6joNwJGWwII8Rt^cvQ&(-xmXpJAZZ2i_5DF(GoX4B6s}n7KwNbmNF3Vd2d!TN^?^a{JP!+t z{~=CJ|0CVq!Dk19%m%dwKxTvMQII|gF|p==?53pt2iXH^vx58vG7DcAf#v`}cLIXe z`+@6vP`wYT|3MhU&dURz5eVB805TIf?StGo6w>u*{ZD+p8!e+o!)m0b0rWX%(3$D& z+1dY#qN2ckL(tkj;zl5g7*4@+6K7lHBkKrs<$yP zs4ood^Mmw*+I1lFL2(1>FN4OyW4*logX%<(7|4E5{RuY@svl%7NDPKSd}1(2Ju&J) zc7p5&xebItd}8&2)PdB4+B9BPR{uf%#Ahd{J_ps`pfi8KcLGA|eDF8`j19djaAHx> zf6$%)keiS(DC~%h(}7YqTK|vMX#NtG$8ipLS&kqWFP&|UhtwH94>RFH& zC@w*E!o)#xpmqRAEzB&CouD}Za67@%^FL_b047IG8e|V>JObnf5C-v)-9gAMkh?%@ zBS3mVegKVS;nV}2D*(*_fX)Jdj{$({ezY+FkQ`_|ASjQ3%!XmmSVQU{-xoew|KrbZ zqvg?P_>86jfAIJ(wz?ly)`4iycs{7U0F|vEKB*XF{!o}R9jNpG3L8)uVGCE#m^`Sy z##x_X8>5HL=Y#4&Sf3wcw!fVn_{>1iTmq=C3=)H3P#XhO&x7h-aGmer0bVBv>Mw)L z0JRf9;{zZwKy@<+ljJ6B?u3eg>?FJXhmLQ6+5j-WfXu_^K2SQ&3=RhG0|1Qy!2AA4 z^*>Ckzp(H>XuTlJY!D5qTS0Atfl4pL*b8zaXbnFlcy#^$XdOvRS{qd}bkhl}-vlbx zU>H=^!`RfKL1pr2I>DY!aLuiN%5YG-3tX3h#^Ry%CEj`$TK9v(8#x|9bvURl2bqZ; zr=a!)%pTC0&!9F3Xzm6yR)DS+Bo1;92;+4JF>Zyb0lAf&`XA&5ke@(p63{#b$Za6^ zg7~2J0H{ra&5a;EAiWK#so=H#u(}?!{|_4*GzO3s5P)(|AZQL@FsElwJX2ElgY=Hp z|Jd{EV2<}uw~fXbDQN&y)`QAS7zXw6KxH7l^Uz^xNufb~PEy=8Qq+RZqyv@J*uoN2 zM}g`_T=f{Xx(%crw5AWa?gp*x0F7B=vjg1M_w)p>1q8)CHZ>r#Ky4I|dq86f*zBc5 z4CH257=Y{o@j-UsH4{3&0jkSEZU)u)AisdvAPh1Cr+!!0|Df{~3nC&Q^*?gIADIoB z6UfW^532t`Z3U3IFbo<)7|dxD6rP|uoDw`*|Bu!sgE@_lx{dPm2`blNWg3VEg(+z5 zKM2<*C!_RvK=R~bkUb!?M=@%gf$AwxorfN-pz(Q7zns##A5=eLGaqChXzT~n{sXNq z1o6=^NF3xo(78~cdLP8bS*Jq#^7!O&)#)H}L3Y9H2k~*KMKRyi6+E8-(+Bb^sNMtd zLG1x-V*oI7LG?GN4-eYs3L4`FwRv%2kUaVvK!Ah8pgw~f6b_Ws{UE)g^*?G}9WA>? z!(+Im0Z<(PDlcIebPfQh?uX&JloYbs0QnIS|3P&a%v{hKg5ef+l==rW?~kir4ywz* zbrq50{-8cTsNO`b>p^uOEc{8KL2d%s4QhXY`qUtEKw|?SF%U+ngNdm338@FU8&qF` z+z4_%h)wEiEh?`V}iN6j4^X$!sn2h~Zix*tS?%0JK^0OWENRQ`c5 zs80x@(J^SQ8C0%jhlIe}4xqW{(Kttqb5Pw1s_)Rl55x!eU5Tt)L3Jg_EaW~ksQd?+ zLkb4f`=B_5tpfzrcc69~$P7@Ng7}2$a&qKB=EB?y3J(w;cw7Z)E?mx21jAUi?k!DyJ7 zAot*`M@eX-;PMa1K2UuHav#VoAU?<)xYVPI!_7>2uWF z!I8E={W?%t2E(BG98|BvFlhWAG?ouK2cM49QdcPmtEJA$Hx=dL839<*&mVk|?gX$1a9SM>L z$*8aw|FYKgeAmGqAO%KFvx$PGp;~${GfUsRNrI6AbHR{0L+~r zw}QqO=$U3nu?yr*O6q=)-qHGhaFo%c#QUh)(KsU|4fxyJqtxlJ`X6-mAE5Fm3uG@>Jx$bPN2PGFfkAf(g&{pBO>5tgTw~&d?_hmMh&%~dKMH`=oqwz z4OFLNtE-U3KW(@Ci1RC3gm1iJ2JuvV;s9z82_k;ML`GL~d zSnwPv`hI{(B_-hVQ9*mJL26+bR40Mzf6)Fam>B4Mo6-J1A}zuC*s$<{(V+T>;8;6o z-Mgpfe~?<3K2m7VntxE83&OB^6%>cCIdo7P1SAf^xav)6ii6w%Iwun32VC_(G4_Gn z3o;924h)0FqCo8$occlM0lK*SuS`e)?*#f6KCcfra_(7FGh`X97@4RM2EA!AVAA5@RwtgqbM!1pnr*K^2b;9`U7LfCjX*beBrI8faW zs`EkmKs2b2i!6`NE!2<$`32-Qko_PG;)Crca%}NNofGo zA4jkMLH!$0{ST|_LFHyuVj_4<0J-b~m4ER5KU)0{s@p(q2IT%fsDGE_=Qr90fX+{W z`njMmM8=?S1C3$hs;9tp7qssW8!t!JkB<#98&t1?#uh+zD`>qRXwM+1Zw#w@L1_UL z-yn5(-GEegg589J53&cJJWLK`A85=7OYWqFbuK-gt7Sx zG>!r~P#l8VPJ^+`0Qny@hffI}o&O)L4+mq~ z9(5CS(j{m<9@O81m1iItwAK$)|AX%Q0r5de<#-oHgQ0~;GO*8qwmxY^J% z^Feh#s9grq14;)dYH-x)V0Ta;2dbaZ%>cOz)II^Z15|H;_}J8;>%+>2jsbwe5@a3> zgW46Kbt+(Uq2nHK{m{LDr7j&+12Axe0TKiWL9Ss%(%?-fRfoRzHKd8J0 z@nJaL%j-XAtN_$@fQfp>u1Fi1>sR7rCAT{WA(})kY4{A23EdpAn4{{SV>VHreg6ertoenY+ z8H48fL2Uz&8c;aEv8yY1A1f%$g4Vi#`~9%GA4ccpf#(O1_rZYLPJ^*b8?FBbPdPgn z)5oZrM$-pqJ|47I54n5Y(<)><5dZiNWM3rIF1>uKz*l1jI*{C)qA&dkJI)%&*8aNF0Qb%?0s6Z39pk zf%d-kfzAYk&Hp3S|DZJhpfLiNd4qKgASfI`WB8Qd(eeM$Is#OdkK*B(4nSwnpx6JP zaeq)<4=Mvebw6l405p~l5<@=E7gYYi>VMEWG7ukzL3gWz^nmn(`g0(0PQy# z5~#ifg#{=~U>L*))p^+JU{D z;IbE_4`e^BF=$)^br4FJ0P5;O(? z8t+FL2gu9&4>|(~BnDeE32KuK#&s>AG(}0>57IkY{}0b{f25beqyC4aYi#vDsO$sP z^`LWoK>c@6{SRCJmk|^MpU(%Csj&JVR9=JlFbrxZfY$$m<_$pO{vdHsc{E!8`~L^k z!=O426echX8v6!?Ax2#X?Z<-ZN0?edG^jlXuKSVt?I1gm>wb`ZU^R3c@5k^PlKVjZ z1GPs$eglOKh!3j2@#!Hb2c7FcUjqQL1BBsrAcXz-Oa?+618Wf-rR;8dm><`cfc148!Vw&{)D~{g0YfL3Io)oM1Gl?+dDrQ0g@3 zm_4ZOMvo(yK6DyXcY?+jz-B?~HIRN#od#12s{27|Q0zjgiw8m+VDRdJsm|12PxXpNIJ!nFh5BKE*#W|!IfQ|z`_b!VZ2p9~6I5@3{6R<$x)~rox*iZ8gh77ChCz0M?1F_C$P5q$ zwHZKTU44axh-J#vI=uc*OazyCpneXl%mdM|{y%yd3+fwz%16*x0?d3+c?6nopv0}iK`&^( z7%1$JF{qvfg(0Z!fnksss2)OA2MbGNF&G=99)v-48OSV9y#|`whslHb{owvCa$gsz ztpTzZqz^>X8-v^pYZsB*|HtZP=w3%q+Jl7yIt{WL-QS@493<9|nu>ZRFtiN->i>i8 zy@HtqI`3kzrA?5ZL3KDKc(nc>ty>0Lx*l~8_0lA0{2#P_8CH&gXwbMPsQz!s$oLPg z|05&+gTz2*pMu7cL26)_nED?!b`2_zK=TJ9J^ny-1uXnPG-w?es9pxuH^_AusQw1c z3xL#sFftp&N5-JK6I74E^n=(S^I&Q~V+bHSVDc~;qz1+wNE+l`SX+hK^*_jLY;7)B z*nrX}C|#rYAG8eJsoj(AfopEnS218zpr=NbhL< zPrb5su%(Yt_l(9Zs6P&>e_-Vphz6bU3#$J?eIL-+KWP15bz&m890c_(L26)_)cSuk z&H4XFzi$atuVd6d(0)0neg^eLL3KB1%{naHk!g@Pcr71D4`|JRyZe9ScmmaLApIb- zQ0h34dMaQ_%?0TP`5)v@kiS6dML>LzI5pf0G6#e~X5+%3HUdZuvVEYj7f|~cRNo`- z1q7}C2jvIQ`WR5V3S{PBJOf~~{vR#hN6XvMG=MJ+B>MRL2kl=1m0>Upy7v!M|AWpr z0oDB=T$h{-Uh@o^KZdCT(Xjd-)^`JmfiP_RA2bI5s((OYpz;WxTSkH$X#4{f9-uG* zVNhKSs((Or4|*L05(CwRpt=a878?eQ6M*%B>V7vj@csgrI?#Lp&FX$6`@r^-*p>k4 z0r?x0c0ld~wSz$J2C+eY2KgO^LFzyl6jm@XQfN>Zp|^8EcEK>HO@?khs67I5V{=9Z zxa|u%4+GQ|0QLPr<1L`|0ig9WATvN?XrQOlf-5E!0hq zp#6BD{uZbVgJEp-Kd3FxUs(7b*584t1=atceh{b(hlzn`&>aGxxqndo59*(S#6aZ{ zXuM%0$04Xc398>f;Q_;-x(-y&VAN;Od3w+ueVAHw8dOKY>Mf8Np!fuhpTpFFp~AG^m=Cxh1NgT|I&;fhRy;sR8!fx;eCmx9beHX9}m zuFJ5PO}02_U%jU%_zq&2dqC|FaJ@{7J)kvt?(Y9VXGDYQD3BST{xql!0b+yNi=es{ z>^^8a0~7|J{yV6R02&J++AgSjVCq5U!!XQl7$4Ne0EHtc+`x9bx%~&(1*+>obN`@o z|3Ga3P+I`BMi$hL%LxmE=N-`An8B2`LH+~P;gsOf`hR5C4}&Q^kGh5WX%Sof530{W z^*?AF0922IFz7A-&>SeJ9EO#bAR1f!4=Q&+`~G3|KTHp(t^?UOlH(D%zY7XKY;_K- z?g7>3p!yD^4jqH~$S8HchsS?V_`=kI>SJ(S2Ce^KW>Q2$`^KO>ATW1<#u`9&!Rl9n z=0odqP&mNc3z|~`@j>kwko!Sn@$mZJ%?;enfVB-k{sxT$km@&(`#@&G>;&0^K9&U% z1BE$q{SRily8Z{{1yH>Y8vh671JIZkNIhuGALJ$w8x#(MDQ$!DAtiM`NbhLD*+gD^-fvKml51Tq)B zE(WPZ7bBVvo$CkH{jho(lx{%vBd8rhl-W=-Kxq!-2auaV?H^FR40125J_eZ&5`(!7 zWHv0^K;s*r^aK(EVVD|%G-%Ai!{a|_oj%B35C)k8N~<6?41>%8g(t{gAT|ht!V`3! zHE8?`)c*&q{{xK&fcyX&9{`yH(hqX~U`pGd_yN`7l;F|&e`MDWgDE|ax`p~_5xFb| zm0=*v|AYE)FfmYh2p5t@8dTSSF=%|;!{a|_d>Nz;9fQIUR_B7+Q=mE#rUukE z2KA-EbtAgDXl)FzUBrk%`|O~(2$-8dWAq?9KyCq<17d?{oEYjBPukT?v3%m=B5=>zdW7$#4UhWY_iuY=40VNiMmg+GW5!=Uy6%uO&e zL30xzb)Y^!sP7MI1Ax{5g60Ka`am>DFX(Q^!IHi~;YCT^57IkY|5Lxr9W3c%)E%R7 z3o6q=*TyXsls=Gn;KWGm$X#O8G)(r**0*qTL1H9gkQ+em0l5*>&H&B7gX{s-b09uQ93&4)6JUGr+3D)~AC%TW z>Of|IFvxrm2AKge3*>%~IH)ZN;)B$}Fo+Mb7bFi#M<6|5y(IVvq#oo}kQp!xYLCGD z1rr0Q1K9_&8)O#U~iC56TOmHZDvLhz7O8Kyf@+()VcnKU%&Imb5tPj=`B0 zL1i+iJO!0sAPg!qK51I=AiGkVzAayVd5(AZopgJEW2CCOUXa9oMNP*V7 z!^A=MfXda8nifF)MdZB}pmAkTT?49Hkn0*y-3nVX0Sh}A4eA$z^nk(~AbUU7}K;aCQ!#DnpUN2+egW?tB9uN(x`$6sn*$Z+5Xucm*_k-*Qxf@g; zgZjxJIS>Ykf%Jjo;TYr|XrCLTAEXY1L49|S`5?PsYC-xzbummH#D~d&XfWT^6~6Wq z+Z+K*9fmv5{0eeA$Q}>|)sdimh#Yr)(IYHxt_fzHGR)&1ag0Qvd!j z=Yy>a0QK!*>R~iUAB>HU2Gw07HNFEJ9N_gAs6GVOX-IVwh!4Wp!Vgxrf#M72oIjFT zAoZkRkiD>a6I9QE+7vK%fa*BVJQ2t|kUEe&a{B|M4;FM*;q<^jc$|XtfZ}Gbr0>!Cf8fg1!IB0>-7%U5@TCDz zeGDqMU>LMN3RM4t`uZg?G4T6;Kzji|;vfua2f)3*@w?P!&wegXTib+ z-oJ#^OVD$BLE#Tm1EWFfDM0lTs6GPKgD`PW-yBqzg2XWDUL;UNpsRNk-tEWNk0M&P3d00J(WIjkONDoLI41>lgK;r1`1*rq= zhXAPq$%FVHJCQNSZ7{n*eg~^TvKOQe)V=_%MFGnpxdmbIv0f(=b7skB| zAUA@{1nY&~2Lx&hgZlrV`XAH|0Obpin_(EVK4P$>;nDhkwCo=&X>rsYgEK9H%1Kz+ z1)@P^A*hZA)&HRN`=Ig;H2>e6o(|p<0Fnb?(3mMmJq+Wk|3PD-Fm)rj{)g3Fps)bd zv7oRA*DY>t;Jy4HK1dE7gZjoGIZ*uvs`p^>ATe>4)g#r5ATvN}L1u#L z3*@*0wFzK#J4hW!FS7k0^&mHa^n>I;Gz^3IAUWiE7Sz4~#XqQCg{gzlAoF2ngV-Sb zFgX|vYCC}HSCCsl7^Dtn7Dzpa4-yC22?{fqJ`@_X2Eg6@KPdb`YC#yJ9%MGi3=kiN zL3sgWCfE*W{SP|t53~;!RR4q80ig4MVD1L#1I6)RDeFM-0~*7p1dopY56*IXu%xk3 zcMR?H0V>}>$rYLFB$IOdLdm%T^B$ z_!uduj2($-2DJ7cxt;*cCxgNsRyTpxMS$vCP?#ZOP#pxSM?q>qV+JreP`?~kT?#Xk z5DhXD6dy1%L4A1`8)h%4?gOa-VVE3<2KfbKKS&&gk?jMS4N6NOwJ;2l$EFq}4pI;6 z|AW{dbs%vV4Pt}B0ojcpbs%vN2B`z_LGA*jMGzY#jtzs;(y zaMTThHw}U69ZR*r@AT=NiQUk&uIS>sq1LPMF8zhbm!_>m|HGs?lsRQ{LWCw^3 z!yx;>WrZ!g@R&cS-T`4y9Rm^v$-^+H9R-RH5C*Yf z;-EGZNIi%K=_Lt6_wh+pkb6LKFbtCixd)V-y>_bkoAos!A9UwDc7*w}|!T@9jNDXKmWP5ft_%3YF7yzjL2l)x6 z9z=uG4~8@j3I|H+evsbL`hRGb?}H&7j=Ev+rXf%n2`aN-7}TE!)$gFP4YcMTRF{M1 zI6-1C465^C>Op-WP#FjsF9wN$#uJd&M1krPkeMJk5Ds;58F6wuf=BEB!CQ6@hBP+nhM}E4KxHJT z%z|Oid8nXz9#sE>>VDAqy`VAwnOAD9B8hdQcfU z($Wli7=!9RP@Ms)w?G(F@4(tmuy6v=AT^-62gHV95Fcb7wmJ>37_{yO*#|QVnFiI_ zAhSVcfZPMB2a)ALY>*ttZjc;u-4ANJfb_sHNG&o3`vbZL1k@G)@j>nYnFqokGeH=n z2b(-d4ajUzy$q5EwJAYrL3K9R&7d`X(ESr2aS#Tn2bl@diw%S1Kp3PJghA;Pqz8nN z{RWZ)xfLW1O1q%6+yNT@FD(2IY8Qj@Mv|W&crFa27KB0S2SXYkt^bF1**qB1(5M@R zcN#)213_gMXsjMo&x86n;C25Q87O1_pz;p6d<3lv0M-AXIt`>BWFDx^0AhnMsLTeL z31WjVXnu91r76&UG?3q67*vnI>Mc-R0jf_yeO8z}hz8Yjpt=TBFN63Xj9lMgtJ83b zLC5?-aRV|39fRTsR40SvK^WvVboYSb7gPtr`sOe*KyCu*1=$Vi7JV4=sEDzELl7p!M(V(z_sRii=u|eV>3{npgLpB4Q4RSZk zT`)Z$H6Z_k_%I9_X8@TEiZ@VN290@v`v0){KQBBSrTz!ykHL_}N9+ILU3L$KG&bsn zp`FG+VMGv@Syq?=6?_knzshkPoO#uR7Zg@NE{i%)F6w2!WN_!6lX+ZXx|uA*CCq) zV}t5>P<;n78{{5PT@8vem^_FEjZJ{u3o--bE|3@ugX%?)n?PoO>OGh^hz6Mr8ZQT# z3*v+7YmgZrJ~sD*){KDbT6g#V=xRXrgZ4bY%mLA$wg$+4kXo=CpkoXmIgomg7&d#r zVxaL5PfwKd`(WxpW+I0HcnyGu$A3`$4+ManBUT=cbf%?+O?FLXC1ge)ndO&eT z6o&TuL49^~H-PK_VPv;}+zP7eLEm>c{Ri2Dt_~yy3nx&$4>A+vCs=y|q#qPMAaM`|sRxPS3@6Yz zK<@6~dwoFaK^WA&0PAyi{|~CeL1G{bvIpdLQ2h^T%Xa4Gg4h4S>i?{e5S0Eu$bEyM z+#Id{hj-aM7}D6N8-{io1C_I&G7g48=b3`)^w!MG{~!!v!!YQ)Gf;g1QwyR&a-eb$ zR6l|Epn3rLUQ|$7h^47&o$+p!yV4uYuA4sJ#KI|B&TDXYGLMR8SoYawoDJsGR^32iXU*19m?k zObw{r2kI+>#{WTLAU}cHh#-A1J3)G37-T*ut$^xS5F6wsm>h@(i@CXh>sioTJ;+QD z289zy9uzhp_kikZkT^&^NDL&03xniA{sXB8VNiPu#0RMd$$`XR7!*e!w}I+<@ZP`t zeE9r7D9^yufoPEX2E!h}(fWUAm(8Pf>uCJZIt_s808p6)!XTptdcj9Sphy7=%IVVUXLmAoZj5|7f{AQp&ece-7=m4yp%0WflyB&hi1( z>7a5AL?dHRIR`2eLFGS8JxCr@|AXoakQk`kM?M=6z5WOF2S-Yp0fiTO{R;{^P`wDN zk6?8aDEvTS3##Klbq^>kVHi{&fy6<2VCq3^To|MVWCpt3F!MnDe2^PJ>Ok>@UVnq? zK~TL9QUkIV)Q^Pe1<{}}e~>uH4&-rikQ@ku>PgV~&@g?VGytk&LFU5hS7f(?%mS$e zxdUV`$iJZW0!SRh2DuZ2L3%-R1Ry&=W`Sr>y$o^($ULyTr6suS333C-ogi_X7&-@l z-1Y&P0a6dL8`*Cl_k-j>XJLTWyMod@XxETsLeo$Qt>Pv&_66AUtRPTW5 zXi%L5!k~H(gh6bq7`m5ks4`eUQTu@sP)E)ro0f~X? zUr-wXWERMsAR5%y2KfUf4|6Zbevm%6J?QfzP(DZ>2!qT5VUQjWABI6)4d z*2Lng|3T_OVKC6?e6;=_+-2`Tr;kzlN7DzWoCK9uFbvxB531AAF=#Cys4fD{3B%Na z%3hE<(A@x_{wqivRPJRXt%m~D|Dd^0kQ@ku?!X->=?>Hfgw<0Zzk@JnO&q9>L8$|w z_y2(E98lc~QU}8zF>LCw)@#sle~{TQ{m3+^J^-~bKzc#-D*D(DNG-@dP#p}i6BNH7 zF&GBPf!qhy@8R(u-EW}u0cu--%!cU!*#R>LWF|;2G6tCm>Z`-lgVccRfbl`*f!Z>l zzBs7W-U4ArTEh>j<6-?PkRA{pqz+X7gUWu87^waSt&sw;K^UY4BnD!GFsT1FQsNU-hk*Qy zj6ro0NF1Xs0*ys`c>D+Td12~7bq}a+0oCUi>Y@EtWO2}VH>l2n=|`twc7y6SP(6n( z4;pg^=?AF;#T&9bXiNfBr-9r8qCtFQc@P_<7gQI6+I%2B$o;VT8YBji2k8g-A7lr} z?I5#|+ms;n$Yy}j3&<=`T?P^d=>hSPF~}^CnIL&s{SO+40EvUtBHugVg?jKzL=jX%ge~>*Od1MUo>p-V-P?%9t_k;9~*8j9C zdj~pwjM_gMx1fF%a=BHRkN_V42lZ<}7*xN5$~;iH4Jsp%%R^8d0FnothXN~iLFc1@ z(iO~1(D*lU`3Ne{LGmL3gT~rn;Q*sS^#Zo~2wZ=m^{GK^0Z`b1!XBF*WHFe2P(2H? z3z-J>!$Ed~%mdZ2$Z{Yy$PQ3_2WlIjw+TV@I7kj;2gnSNyFhx7G01$78j$%gaZukK zq!+{o*$L7Qax;hq@j-Ti%mdZcAT=NivK!PU0GS8k!!XDkkXjIiiNR=)IUsvM`e5x- zP}&5Ef#g7T;>1X64?*UE>;d@$7AQ}k*Z&~3AbDgAa_2y&@zMH! zw0s}vG&pMi;7)_cWjUzq1fA^k z`ax{~5F3O+?FCR-4`PEbs0}ev(gb=R8x(e+It5!@1gfh*a|56-f?-g-0>aqTBa4C5 zfb@gn2&NaA2K8w{_JY)a>O*8X5F0cv59;%R<)M4*K;keAia(HkP}=~#UIwWF)sZ0m zAT=O1NDP#&K<)yuVg3g3LG>c6z6Y6$ZYHSS2GzgV+zE0YNDh|PKxTt5D4bz(p!Oz6 z4CH5!7|0ytu)@X$xeKHgqz{BadO&;-2FZcMKp2#6LHPn)|L5iX2i=hcY8!*X4K1J(baaudV`VNm^#TrYvz5FmR;0*2Lvpl|?TP*{NKNKoB?UJrr73{>}l z)PXR({=zcOkD?bk=Z~#k2AKn@dqH(G$b96w3?v7_AUi>IDp=m#9lmZ8BnQHvx*8@A zs%JrB$QU&41Cj@s4Kf2J2kQI7*6M@J@bCbi>w~NY)ZPK{LH>d11JNM!KK0*PS@Ymj~D7~~F^eV{x6(hKqvD84{;fG{X+gX(|K zzCTbK0JJ6+v_}>cuONA34AMK$X&jU%L1Xxo;L-8_(RyN_)A6YNv`d4avJO^mfy!0T zx&NR#9fm>W9jIIdsR8x7Ky3h6c?YZin=>-tYr#Nu4XBR~QV+r)waE1#NY6-!Pte+b zP#q2m0~iL?wV<%XRwse#ADB824XV#UV(9f03LjecW1D9HnE}EeGe8(rAA$JD800=s z{RWZ)VPrWF8|Ge+e&loll7nH8e?WRcYGCmU@*l|k$ZA0HAiF?z!o)#hApd}9m>7r# znFlf#-A<7Cp!y%#Y>;}GJ3)0evK+_^kXt}@5W*lgfYLUyc_6(YanQO7kT~dUOi+FR z)%_q0y88lj7BEN-9fQWe20ERO*8j9CHwQXyN9`YtTWX{MDYXT!=y z(A|Hq^L;_(E~uT*oSqKvH-gGaP@NAe4?+Df&^!T*4>F4y?jG!BB>Vfr_e8?{4hln1 z9SEvd;Pnw`{@L9fe6~DH9jG4)s=Gk-AY2`maR87!NF7WcIt}VygW>~ZCvv?DQU|jG zWIjk9qxJu29Wl^paMb?6 zod%KTE^CwIKI_>RS*WhCy{WSkA)(qYVXe56E9IwICW+|AX{^!V4q@!XR@%?gF_H zB#sY*^n%ob^noyl4{ASw^n&ifg82!=2KD=4^?y}D0zB=5^nox)ZR#Mn7aWxLC>i?) z=^Y*aAKc~lNGVH4{Ym|F2r8pMbElv(3xq*sdV5wDc>O=9UI&$Pp#B!9jsex_pn3w- z=K-A&08$Uq3sMI<6Ai=%VdOFt#0OzeIRv6X7-Sa6-r*jf*!uq<|AXoy5Qf!7AU3G3 z0m;EIhz}BnsR7kNATbaIu|eXXdJtP!!^{BnT|sp#s1AdP!Dvu>091#<%!7%;Xi&U@ z=5avvKTHgn2E`#rKgb;*cf!;&m$5(BA676-9G?gPnz*vJ?(h7WQZ2&20n zRJVf07eM0|Fg>vPA7mD?Js^LA%mBHQ5C-W5jg`R61cfaKgWL$(-wHe9za}Z^KPV5t z>VM?BE|K*PhV%`}cc40)5m%s=J#rlfs>?ui4p<&E<`0@5fSwNo3R{p~5Qf#c*uohUU!Ze-u&DvH@j&7rGeB)S zP<$Yp0U9>|)%_q0YV#q>f!LtFI;iad(hqVY=xhhjx)6{YNE}4NFvu*JU7)rBOdLdm z%*JLvNDfrTgUkZifn1-1@jKyC$@ z1=0)JhX|_wLF4$K^Zr2R{)5CpG;;l47#WE*jt4{f9$59A+^ewbQh8e}HO4X`>HSq{VowUN-%8AvS%gX{vC z4N?bkFUX&;a0Iy-CkDlZr{{lAn*pR3lukkIvb4ZJ@Lj*Kd45pZ2i5c?T-LKxHnduLG*nK^Rn)!rBL* za&uBi33zS*bPftgJ*eyhsjE#+hWCN6&3S{$A&`0y29>LzGIhA89Z*=J*Lfg5sDBCy zOAvUi}2 zI7kghFKBEXy&eb2fiS2p2VqdWgT@y?Z55C>2&3Bv5(B9N`3KZa1o4qEs4W7LM;1e7 zgXBPVfx-(}9L7cu1CUy<-#k42!@>)s7Nj2}4)PlaBeOw#IEJ1Bi0mg&{ht>e4nFe_ zwC)9D9%#%ARR4qa{(;8F(ESYxXVAINgCTu`+ybh@DZ!)l|Ijbv2SZvMb;ICGN1!ok zU>!J4=NKuWg$pCNG<4Y01zL9G0H;=3zRinAo-Ed z{|EJLLG?W-OkfyP9)s#5P`H8W9Z;PGs$*dCpn3~k9>fR9gUkZe{UCiHJ~j;M&x7vW z!?qs~ROf^21J!>Z8eKoAjt15Jpz$7bIS?P@PLLU(b_1wRN3JJf{cVss7zVi)T>x1$GXwD0C<`3u&K+sxQm|7SO3O`UAVK9_;p!7yb-4D_`TK^Bea(ghO ztx-1&{d9p||AWSBL1X-&F-}l<2C9!>Wjkp66I9oOaAt5YxW5l7D?xnZ`X7B<8pKB~ zk3nVpNJu-N`X3aA$QV?Afa*h7{ST@~k?TNEeFLh4Ky?#{2AKh>Pe5jX>M>CL4+>8Z zA031G(;#_JoS@5r#6a~Z$X<|{Aa@|E0j&uD%~ycN7m&qaY>+GhQaDV>nxxc zPS@sTkoEC);a9p>V)SAfJpbqR}%{m}Xy7QQeVqzA?Z`_aP#z6Jnf zKj>^r&^{Ot2Du+(E@-_AsQxdBjz)1WNDedxGg#6#C~iT0cuMeS|9|+E`-3HYj=E!D z(-x>62CcOMm0KVTss}*zJZNkd#D~odfbR1J)$=e6>eqqfLFz$b`09U9`43VDQV+tQ zHSr++aF2Uf8wuoR7zXvPL3Iqt2k8gt1KAH^gD@x^ zz|M^T@j-1N5Dmj1wdi~4L25v42$&jNG^kAh@&hP5Vg7`v1^E}$E`rH{Jr+oSdWz?QFrB^`{qV>BIL zO9SBg-_8!)hXM7|L25u{9jKlHm3^Qx8zc_e-w&$iK^U|K091a0$~%yLkQl!DAEXX6 z9}1#Dc%;<-p!yi(Ut|pG^MdM7Q22rBD^On%CJ(ANKw=;{SX~8@1H}QTy#$IA5FZ_b z27e;L-YjwA>#I>2TBy zgEJk1>Tg*8A5>m~;t6!NDX8uO^{GJR8mKG;m3^Rk9)v;lKWuyew0{sJhCKfd(u0mc z>-}M3AbUXd8OW~Tj6roS%+D|yRR4nN7f?L|s-r;l7P1^DtU>xfa&GCThesp~x{UCS2>P(PZK>9&-2}q6@3~H-@ z%s^HPIwKOacOF>`nGISK3R-&tau-Y-RR1E^{~*7@ z@&`Hw>p^Z0fc60*-NRg;nhIY34;uf6&G&=y2WXxQW6$1pXZu^o`Puy}-tgJ@9u4Ad?F=>@q1^yjf_F#0id)#Skg5puYu}tO7Lj?KXl9Y z!IBO~-7$F65U4Hym0_ShJ*eyg)$^cw9V7-S13_gnNDMUI3AziY3F)pM&^|y=djNS{ z7o-mzgZf{fdI}~EDvyVInn16|Kz;|+OE3%y6Ob4PgX(cmJqN0nKx6ixx(p-^iW3kY z#KwkUV*}{*GpO$mGY@1BsO|%a!OQ@e2@;3#VKk`j2g!ll2y#Di9ST!Jhz7X@gkkDH zZ5~j+9)z<(LU7jqpnf*!Eo zRAzz7Fi@Wc#0S;&pfV361{zle@j)1L=Q(Kp6S)rtI{OqkU7IS?P04sL3J6Zjt9}8F>+XVfaZ)rWA&iA3snEY#6fiyXbl{Uk4%HY6cj%o z^N__sY>@e&acEE-4>r@o16-GZ{Z@UwY9YsW$H1gh&n^R%F{vp6~$eBK{O473jlbRICMu7Z_$pt%81nFv}B4H_$e ziDRQdYGG>%KxTv1tbyzst{Ab9f*w$ zgX(8cJr3)S!qkB3Ku|pnG82SB=EB+{AUA;4UV!RDn0gQmiWiU`P`w9I57Gw`CkBJs za=6rk(hsO!2kn;wr5}*l*vtftrGv%?Kp4552vQ63Cx`~&s>HUz*zEU4TA&3A(MAPicY4eIYBmv^B3T%dE& zK>dGM9fK^7%m$6!g34c*7-+rwaE@#A`X5vlgX$nq-2?uDTPne*~l!RR5!=F=Y3G&Y*(LO`+QdRTA(xss>3P4qxC=i%H!c& z9*+8L@TDVA{ST{eKz(>nISi`nLGu8h`U6zvf%vdG9<+xGxy%Fg$3SwRJ5WLWM`Ss4 zHfa7Ix$Fk@L5FjifYlwaZ~%ofs7?aaK_Cnh2hpH<7bXYdgD^-9sGbM0(J`oP0P1U^ z_k}@yaZud{iaSsp2V%p<6F}n)*xG2I`V3?@sGR^)i*6q-KIlG3P#X|k9wZK`%R&1_ zL3KZf24PT~qpJn2O8|`#fc6J~^nlu)$ZA0DhVeo7Oc0s_0M&UQzkvLN>|fBh6-W#e zE}*al(O5C)3;;Jb@SFuGAAsxzwS7T(0o4CTHWMTV!=SdtU`x-Su%M*w2k9NH{|8^W zJ=oIOsC$NH8bPlAL1i$gE(euypmGtkrVmv2gD^-AR4#++3RrmuqCw>%XiXI8jCAC> z9VCYhgX$w>aZq1vxTYOYeUI!{P(22!e?Wb0Sp5sCCqZ=-vVLSXNIiO3 zg5*KwgY<#o4@QH;LFWjex6eTKg4zinJs>&QI1orZF&I=gg8IdvI7C(t;)BFN>qJ3y zKL~^Beo)h^Df!Y}$F_51@;e!i<;s&$^5tI*L_gsVKF+lY{XdNKPOptl#7}Vw%Y-t%3 zHlRA35pa=ir#15p1ET-SPd{0H^ZL1G{bVuR{)kQ^vH zKw_Xe2(<1D#74&;b3pYI`rH7Bk6gcj>VHsO464^bbrUR}LFU2Q7a(&$;|Q=i5+p|q z2IXZ?Izd180aP!8>ig#O^#33lhC%5Bz5a*U32JA8>V44IKB&zA8V5iRJD8h5ZBWph z6v%#<7%a?Sd=L!^Q&2q(YS)13eUKOkBZm*R`X3f%pz|s~^*v}j45Sa#)&cQB7!*$+ zF=PyK11Qgc+%=f+X#GF<%G|+}K1SU#veO5s%mSUq2P(_jv$DYTJ?NfO&|Cnh-Uqb@ zK;E;gX$CzhUo#-*Dy9Z4XU?5bvC*<$ZSyk1(Jth(0C2VEabKXs2u=O3!0As^@Txo z7rI&a_@FhTpm+!E)dTJSL{&chkjrLJSq)MT8XpDK|Dd`Cq=r-ssso2px&ZkHJq$qg3aCy3_4SeE zK=l!5Z5pVq28o0E<{)(-HaZ5i8$f+_36jLA3SC4U`!vQZW`I?16Kco>J`v< zKd7${s`FtORQ`eHTtWRUSiKJ`yFq0jsJsW2lb|tNP}vMx;|~%i2Zy@249Y$fIe7#$ z4vroMpuQ)lJ_6MhFgZ}TgX$+x{ST_IK;odf44ZzK9H{woAOHlX?y zqz{Bac7gPQ>Q)dNBt{Ab-Dd>q^Mm^GAdFlWg4TtC>Tyv29afLSXi(h_N++PU2+TfE zTLrX65VUR-WENa)O3HtbIml{ZdO$R2jtQh5)J6cMU62?EgW60Wzk}E?3`(ycb3k?> z`xg`@Ahp;qsO|^F2gtpkv=2(#ptcgoOpv=kZU(WDF=+gZoHRlYJ)`yi$S&XMk;X>t z7`kZ;REC1eFVK7`XdE9l<`1j?L1i9j%oVv_2h~-u@(;= z29?nuy+b`cf%>_iFh%z}sJ;Q!MIb-IaCF{thb_2EHvFKC_~G%gM@A7l>5E)X9y zCIG9)(P>b93Tpd+)Ppc+zduM1*u2zK_*wzbdQy;D(0n^c9eO(mR{w*>06=R_Kx$wZ zJKC9BbE(HBcOI5sQw4l{h+!RG(HZ}4;pg^t=EIeq1XE`KB!Iyxe=}>JsrHi4kizy zLG?eV9RW&9Ahn=$38G;bG{yvy2emgrZh?t|XwVt}m>nQK2!q@QYIlIb0~EF(F;F;w z!UGge=opmtKyw_Rv3}4T7$^_G+yaVQ@Lg33KmSqG}iVHi}mgZlFz3~D2Q$~sUvihMpBsE-6v528VB08kqO)Q1A8MaG~q z5_#SLw3ZOLPll`(#0JgNg6g`Vl0HFo1E@|x_9Mt2Fbt}DKy?!+{6O_FNF1~$4dCYAA~_+1P*s-zaJcSuCD(Uk4id2laJ@_d#l5Z3j@l2~@9v#zaA74@e&fgZf~gauvh| zVUWGBeiew14TH*7P<=Pp(+Oxi1XRa>>MLyi0EvOZ0^}D^y$PzbL1LhK3RDk)Fldb# zsEq)U2g#vhkQ}HUht=yac~H9wT#rH5v%%OPc~Cn7RPTZGg7~Cj(4BptHXW?54XSfN z^)jfg2eorR=RJVh0w6v}4i^U1^Pu`4RJVfM0IK6bbt<}gkUEfAAPlkxbQUFYS_A0? z)&C$lkY3Q31NwbJur?AXOhM{F7!=;1Z~$T0dxKU5AkQ27c{1Hzzs3#1oRPlEWMau_tX zfL^|X1)g zIuHhphk*LFAag)`5C*j$Ky?~O53C*o)&HRI0`*lvbsRK2E^|?WD z3~CdC>Tpoo049fz2G#!{|AFdVTz!8~y$?zwAPh1Kqz5+70P_PVU4h&Hk_Xw3ex?9u zZUmH;K^PPcFnypf0);(H3>1zaJ}lh8G?w}w)CK^xZ9(panT1S)>=~@-667vWTBD@y z2k9NH|A%h*4oU-~cr^ZSr2$y|52{;WbvTFyt<3`M=>uU{c?V*H&IJICb;HDv>wi#R z3DnmFm93z18)PR;9jNaIS}zXjTfxLYbw8-A2hH`v#6UEtUIWp{7*s!k>;;)Q*f1#U zK;L!plX#N1-+5wPSm|hSK8nXe3f$J_^r*Aoqge4pgs$>Uxkk41??eiGj=p z(I9b<9#CH&6m~FwfZPTW1IdHNr$A!>pm2oAgJ@8j2o#)aFYbw-Une&-yhUB2bF_4VPW8VV?kv%XgmP4&kt4>g8J~FIv=D5gh72qQ27X2 z{|?d*G84oHVNkydrXN&ag2X`U(?ESmP+I{swha=4VbGduP(23YgJ_T$gRu<&s)Ir9 z!-qlh#-REggNcE{9uz*H`U`|X^%sZ+nE_(M z)R9Vq=6gVGKTv%Ps$;QXQtEw}evlr}+I`Uc5r_>F2hkwAKy^NtM%oJiQU_`)fcypX z2Pmz8#6kK%7&QNYydDLl4m9oo(gO+$P`U+)fzmi=4hqx;fVCGuaRE{X3NJ8**8iY1 z3CaVYzCUOm0I2>4&2@mxLB^mtkilLij@JLfugo6oX>QbgLnqC_>VMD}HmD8<;ogFR z|Dd`bG}a2Lqd;XIsBQ<9i=h4&s4fDDf#&C7^*^Y;1e*5;iGkLHfz*M@T97&r29>p- z`X6K_NFLV52bl#j7bFKOmqF@57&JZrYHxtbXb>NSLGBrB=?gSA4{{qm3>rTM)&HO| zaF{xfzd#sV_qe(J2h~@gdI}~Fqd{Q`+PeqigJ_UBpzsBS2XcLfYy1GD2OkExuP!+m zye1!14}B zh5ukni|Fndt^bEkS&SZcqx{jhqjeep^~FJT4yeBks{270H0BAa|3Q60P&o%G8$sj# zATdzg4XVdL;-E4XRPTfIz}EJG%4%>OA0Pi8RK9}LfiS3S1=aB&GeGh%vq5s8ei=v( zRPKVt`9WeZ4C;4*`h1{%KS&JJ?**}G9WKP04{ASw+yrtPJ`AdFKy?vvA0AXcfx;G6 z|A6?|%m9TWNI$Y1$Sjb0P#l2F1o1(27qS{+*`V+Q_4#4r>YzH7UKmt|gD}WGP`wU{ zYveHkQ2h@}TOj{{)POKZ4+w+wfzAR-^zi|YQ-RdLFsSbj3L{YZ0*Qgz0U$Okyg@WF z2BlF@7=qFvdi@V-hl0$2VNjj{#XYgUU6iiCkxa%2rSt z0%Q)z3=js@?I1lM44NwdmHi-hfcP*BG6SR*gh6ajxeF@O2TR(5g&)klxM)xv4jQkA zjqiijNPzgr^*=}rHvJ$wKcL3Js$FvvX6 zcmk+z4w|FK)wTfD;UEmM7o-L>t^x7`sGSMw+k^Ci+5;dl5C*9MsRii)VGtX%76G)j z1SF4)LGw$Xv;yjr=> zKlsaFTyZxlJ{otlP6MF21yrYk#y3HAIjF1y)&HQf8&uzd`b?lY8&vm$FsNJxm8YPx z5VRipCN6Ql-I--Gxdc@PHGX&^Nq zGeCS029?{Ox*wz-cGnEZURs9>vF5|tLLj%|!yx~I!VPQv4?U|F)`mhh2Q;UGKK2i) zvq9#8)Pd$vVB;|$KB*WK=Aifn)z_dgbx?guDF&GZG6NKEp!Iy9J$j(_AgB%niNi3c z{szf|XqXHUAEXC_!R*vj@Vx_|{yt0{hz5)Q#5vqjktYrM*#m2Y=dw z)&HRTeL!_NXgxn@{vT9cgX(@z8HZf|gUWPJJq9WVL1WJ#J)klb#D`(fxG1Ro0IHi{ zVxTe?xn2i}gX%HRcmb$>0P#T>G$sIAivVK7Fvw1jI*>a+{a{ePZm^^+Q2hyWCoURP zhlAP)pfCW18Au(72KE0z^$w^m0RDKw3aVGh!65yhK0Bzb2#Pb%m=DM;pg0B9=g4M))WYh2P#Y4|1_h}FVNhIy%mK9v zKx_O!ZAnnvgVce{0O;%>2p#DFI2Gzr$@)A^z zBV$lq464UqWh|(T0AeGHfy!x6-yTGRgD|N62aUsk(qiAq2S%qzBw~fY$$@b^=HaHYWly2ZTZO zA83386vm+TCI}{zA z461WL7*tn-#sWa{pn3*W-@)o7Q2h@QN5>#Fp!Ney9N9k5m;y|k8Z;*h0WK1+DO>U1lRr0b^joFSb71)E9{IQkQ$Jgp!KPsFa!1TLGA*H zgE6%J2Z@2&7sz8turLAj|3P67O1B_)foNCyFd9_ErjdtiKO&>%N~>Pt{R3{>~w^B2A3Kz&t0egoC*Aa{et@j-3} zsRxB2sICEtgX$y@8zhd7L48+Py#s4IfYgBMG?-Z+KD98Y4F-y9(3${Hor+$^g2ZrP zP@f&79^@8K{DZ;}y)RR4qgjch)sUIq0(k;SOZ2E`|+4FKwggX&*Uy$h~y zp>-{&4o1hIIdV|EfZPI#8<4v}<3gbH1k#JH9>xcm4_Y4p(g#XUps@gu9B4cNG{z6& zgZlrVIUT{5ruwhU*fH1f|ad-a@QxBSJ2Gx}yahN#gU4Z@YyEK5|DZGpvJZ6k5h&cjM9VQ1e2Q==FK8}K~tpw8tqe1mGs166Y6J!TWoKzYV z=Abj5L1_Y1FM{e^P(2I7pfLha-y2k4g3Jbu9f8siY_1+uH{-&f`W!Uh1WQw(x)-Jv zmOeljVwe^6M0#6TFd=4B|9hoklX@GG;2Lb@AuJ~L1iDP ztVgc*L2S^NFsQE&8q)^p0bx*I3s(Pw;v6If!l3nfAQ~G6)pek<8Z_q%nrj8^6$F*D zusQ%)4`?qo`k6o=`N2^CgX(jTTd-kJ7=h|;YQvrnwvRNQ8P@RP= zhAoVc)4KTx^=wFyD~ftdk{ zTTpre)uW(#85aii^FiuB^*Kl{sQmy+docANbCBzIY~nC^kX<0XAoD=;_1M~|FN+s>!3hmydZHL&=rjpx<6!HLqtyMbt|<5W!2AJf7l7*`(0H_~ z>wgd*a!k~USD9wQ6VePwAe}BmR1JFGIu=*cX$Aj7lAoU<|7zT|C zfb0T|4S>{v%mlSZL4HPeBPjep?I}>$;H&>Z?NLyj57G}B4*;=2^*_jLkQfMq;tpiT zV8^5N|L`og2Yb33b>GlPcd+^&GzSYR=Rg=#o?`9)M@Rn$_5VTR(x5UBgh6#6s165} z`LO;gXuUN^93+p9LFcrC#`HmY&@o6HROcb<0nHL_F}P??tC?fri+q%oMEk=+NH zuK?BC==BV!&VZ={vB7FU^}m}Nxc&##H86P)4N`*~)*yd_#EHQmH-PGR(AYKdx^)%~FK0%|*f=6+!99#H=p)PD!n>7aHC ztd0lO>mUr{gW3Tg3>xPLse`#2)F(%F2R1e+eSyLiZ~dQ=0-o;&wTVD(1dXGB*8hRr z3^Nndju;H-kB}QcX$CZhPYE8K{~sDV8mt4XWcobt}khP&xq7APkz10L=q|^nuy{APiEEj6roiNF3DP2Z@8) zGa$XhVo-eus=Gny7CnAI=@S$WAh(0s!LW7-$W0(VXkQ}89#C9><`+O=I@mGDzm(Md zAibmY|7g82*wgu_`^Zb9pz;n>rh(Rq!RiH2*^0CNkBOzpa zU>Gz%4yqf`>ll>!-@^mk=Lgq8(DVOcbt1?dP#9y|#|Dxk7K6^P0qxe>UR)^)$zz~0mTz&9tl)`W5b|6J4hcW?m_xMX#^CHAT|tx)*6Ds1eE?j zW`OE=ki9S(#DwogfMMB{^DnA;o!yyfT%0W<>2HNWls~d3E|IyLlJprJ)38V*xL3KKE zKMb@c0J*LMsRPYFgUVG<*$=~@`W{wyg3h!BjT?j3tAWZakRA{Q^z=aX{vP*py(9nV>lo&{zOy8~{|0!Qz<^ zjch+?%m%bhAJqQ_%@2X-&I zPoVPwKxqh+&Or4vsNIQ6A0ctjoDC?v(c=fy-T|2nO3$Eh0=0QSW`SrBA0!Uq52o=a zLiqrcmq2}ZO7Lj^f3&V6l+H%whh`c9mD`{)4Y~dY&9#F1U!b*j$QU$!48rL3Kd7z( znE}I~ejupchVel(sILak$n_n0V zX%1Zf+u5P4tp~XiT>nGo_F;WYSiJ|9NACZ-x%~&#N67vL)qNm!)WRUMLE|!@^YK7y z0tnUpp!yDGH%KpNOdM42gJ{rxKTv%PlLytypn4tDCcswj!^A-CN|1h-K2VziG*$xR z(~AcA2Yqh_D2_mVe^C7oN|zx2gVH+4O`x%U5Fa#81>%F^W-z2ZV%#uV{}0V_nV7g8 zRWlm5l%@etxd$rKK;y)qIssJ9f%@s7J~wjR4`PGH=0P;5OabY^g+X;YsE$UK2bHCu zaup;8!yrC#-45Dw01`vi2V#TzX&@SgLF3|-`kR{i(ftZ?C#bFmwXHzm3&J2a2!rH6 z7*yYb_#iou|6p^?AUO~QjWL60T47K<2dcM0@d?79I03~wC=GxxXm0?_ZcrNyRQJRB z{>X6zia$`j55ll|9v2NV1JpKznLCg)sIL!-BXIab+i9@+AJoqWL1P4LuXs;h=JOacXC=3d7P}sxb2jn)8 zzd`jpC?9~vqCjo~`4u!~0!y2q_P}6DfB4)oTK^Ah`HC-YM&(B1W}wpmsLTV6XM)N* zSp5&G<8#8oz-zfdbvB3(!l3dVM1#siTo_~)sQw4dJHym~*0qEBmY}*GhC$|n)FJOp z1DOq42ME)LjRw_EpnmH>ha0l}p#D3$TS5K@)&I!#3#h(ag$z#RDjALFYGsX*gq&e zfW`wrd;dYQIpTVQvKJLyrH! z%m%p~)Q6`8kM{pZ>#4z<#z);oe)KD)T{g z0I1FY$>GAFz7eR7N0tYz*#edKAaNK5@j-L2$m&4mgT@??#n9QHzF6`gYd3=Ga&&is z_@KH4z5WN)ub?s+G~N%ZcR*@D7^H_73~E<^_G^Ip-k`80Mi06g(3lLUjRI;)9hAPkBlP&|O*9<)9WWFKhV0I049jSYcl&^Q30Iv-gc)b|IiqXW4Eltw^p36L0Q zO(DoWP@4uM2XYsvJpfwc3F1?NL2X5lUAW8ur6rKxK=y&+0yORcVuRMdfbs#z&oI59 zF%TFV6jz`y8wwbd)+nj_L3&5)fAY)Mp^!#K-8gdN7gWcC=66ALKL~^7eL;O7SXl?6 zL445KJW$;Lsuw_FxG+d9dLJIt*97&cK;=9LgZfpVx*pvO(D-U$R20TqI%IXAdIGfO zZm^|UP+f}bP7oWkP65;g0M#uZ45~LkVGZ&Fcz+;h-WhuKAE@2|=^+MZhlc(K)t{jH zAB1tWKZr34Sq&&&K;sIadKqLshz8a5pn4qC{{_+HVvu>Dv<9*dwC4}hegTPr#sENV z36K~_4unDVHYhwmX$~~c4jMng7QP_0pgJ5Bo}jP>sRf-~1ezNGtv3bnL2XRXSQf|( zka~0suK%I&07|={_yYMERR4q0JGy!hAJldmZ0Qe|dq(U3kz2OoN)w~vqiF(`20&#V zs7?aa{U8jQ=Y)-Og31oq`GBBu55y)^|AWd;bTy#59<+8ERQH20s9c5h1wrP5FsL62 z5(ky}AU-Y(D(hix2hpJZDX2UK)vusB0940<>JpF~y)bAl8(V)B6t1A~0J#l>L2d($ zwSfEpb2F%(1E~SU11>+Ki-X!%pt>0}o(`fxbtuR#bafy;D4apfOKg`oNw#HR#<>UvPU4srviodM#5=5at{3?Meh z9#ESIBoD)&bO;I?kUCHu4yxNhV^g3y8x-%L^9?|04YaltG(H7NW1u;EP`@4ICr~(p z%mVHA1F6Fn#-M&Z$X-x9faF1KDNvY#>VJ^`LHdy~$PXYj^h#Tl+5^hNpgue$c(ngN zT3=9_4oCG5&NKw73qW-TsO|@0P`L-Hn_y)gs4NB55ukDsBnGPMKr}84DwjcH$;k4c zIv>=x2hku58vBR!1!3wyYv@4du7m0%m>4!1G(HS+9|(i?j)BJ0L480_xeQVdD(?au z9R7pq40@(HP}>7!KQac@wV?V7RQH20sQw4Fb3kqe*E!IBCrAx8{m5n^vqAMUsJ?{N z$DsNXRPTZ6Fl2QgHmGd?>eGYb5!4O?(I9;wJ)nJjpz(JQ2Jt~_{6KQl#-K3@P@IF@ z1H!!p1^;35NTBu!sJ;cM0r?43r-Rg>V^CWFlvY7u1*-o+^B$l$28AgIgTfCKuAsCG z3S)Hrps{^Wn4^n>_#knR86fjPW`f2hK;vK_cY)-QF)00k(l|ZS7A1Cp@&hGxKS=Lr z{XaO%Zc5U{sNT^y1*HK{xd|#WL3KX}gX(|K7(A>D1=X#fG8(iu4^-}f&TK<257F76 zv1w4B4p|)3-vibAAPnlGf!0@p%28xBpgtO?{s*-+kj1gFL2g3VkFE|>_k#M0AV1Or zgY1H}L11nHjah^0D^T4J!k{_^G#?GB%i!X!uKz*x4`@vpOdmcP6i%SJ8o7=JwFf|A zpt>GZe}ek918UIBS;-BF(~XoaR93SL1QJL`vXB|C4t&a==Or*6qE<(k*26& z2Pm9DbvPw>wEiEhE2xncN6i>~=?K*C2G#YTx*vo=QBPzSy2BUR5ydh zVbRM(WIkvt7SvvViGkV{pgt$4?gwGeIsj0;1e1r+p!yJ02Y|+HVPeQMXe<}x24pcp zY>*z%oCQ779ca!0-F+bYLH+{O{U8jg|3P&Ps1ApVL+gJ~-9yMfAbC*z4ywyRVTD{r zgZQ96G^kGx!k|7ZsQ!Yf0j=9Z#xQYO)1Y<*$i1NS1ad#9e+>#35F3=XknIQg0n}Cj z)xXH$0ctaW)Pu$^Kw$@B!!XD!PWcOM}{zAiW?vL30eC@d;2q0EHpC z8KC+fvfyiy|#fX2{4WhSWZ2Vu}T0I)I-R33u*L!h!1 zCI%`WVQkRY0jP}tXL@L4JaX!Dvvw8q{w@ zuU}#EAaRfzLG>%hKQM6+4bls$YeDAH8iV`_vJ-|uVFPM^fa-n_2DuO9PLMhf8zct8 zpz&;wI7}Zt8WfhG{xWjCiOvSqx#(g8#Rv82LF?&Zegd_VU~EuZ4>T5m>^6|!KRAvQCI>2uL1nUsg#~!cKByf5s-KYerGx4~kQk`%55gceXsjG&28;&H2ZQPf(6}{B z3`T?M0#N-A<0I1`vq1G7sILaXp!x*e3{XE4)aIadn1bdSxe;MUcN>VFF@84IfKL3Invy4C13>P#umg25OUl=8Hjf2B-}H zsvALT4?t#t!Vg(J$gLnTT4PWf31lxQ3_)uYG3tNNnm;H8$-(OVAO{C<8w#Ws7Y40i z1NEl|d!3K$KF}NltnLP-A5dEp=0DJS4^W&Ts|VG&ptbriHK6$;P}&65$)L0c3Rh5C z0JSMV;)F0r56molG$`GH+y^@M8g$k#Xv_hWwm@wbWPPBvF=&2_*6D~^=7YkElDU77 z-qHF0(fWv5>2cJY!IhRk^&+U;gO#J8`XAJfM=tY_*`WFynGa%v${0}n1u_TJ&j!`) zAaM`|#W!fqA5g$6rsC)<62deu)>OgfINFN~#atCN#8FKvrVuRWupmAl8 z9iTEDW)8?6(B1`*duWM4dkoJa6_iFnbu)|&;uFH4 zIVG4m_-IgEfYKhwZjc?IIRy}gwdY`ZLGeY)^h0g4L3tBYhf{(_>;J)3W>Y(jjG8xc z;}=$M!^%-mzX#Mm2aVgq$~{Q;5#nF$(`0F{3r^FZY|XuN>dX&tnl5@a6;gTfG0ufXbibQ&ZF zau>**pt=X72OkEle*@Kz$o?J7Y*76Un#%{x-GlrE3V#p{!l1AL`32NQK=uPDK0)I- zptJ%T8v&^Y_4h$@Q?PVOEDc%<3DQppgW>|@CQw@gG}Zvh2iWR=Pj!G4#Zj{cUpfNyy+QR7tULv+pDK-w{SVrw2bv27)lbM}CumL^nNNrf zTI&xo3sj!NFlf&g2!r~Cpz&akIEW8w4-o1HgXYdbeM(T>f?RK)vq5XOkn3XPaa+** z1gI{eMS4VTAA#z15Fb1S;OhDx6wb&PROf)g57egwsR6O^VNm-BeZCys--C${s{29x zZ`c?*sNDwhA1LfW@rcX4pf&(V9yDeE(*p`GP`rZbXJW?F*QGd^E^xko!R4 z3tIaRs{29v5J2e$Ss!R$Dah?Z1&`MMgRjgTDrslbox?xvfYw)o>L^(K4=P_leRj|s zET|m-s+&RM=CCplw4NQtCWZ!?gM9W6$UIOV3we(>s9pot|A~qJ@%4j2{YcPwF$m+T zH$dW`J|w8_0If$rb|a{c1KghYqrxpz;@FF9?JBm$3RD#0O!JT2LDZ zRR4h3xG-qk9ON%t?H-UE$nS#*gZlTNHXX=Mpf#ePxgii6gh6dfP#ocNFR1PYsR4}< zf%L#IXs(q8xM)z?gXzIXgW4yc@CTiN2%7%_)%&>m|DgB;`D3V*jUe}e`tX$C z(fCl9KxLG?FiZ97OUsQ(R;Cl-U+ z5TLppWDX32_@Fu;W(H_{0AvS998?y=#L;Pxdq8yxzB&V44!QpZDhojvWCsX?`~&hA zHPaNxJY+jTegM^dpfCp2{h&G@M#I7qH0A*k1F6M@LG3h9-4DX(ejKcPP+WoH733#S zyAJujUt;4D)Yb!;1FD-r<{)Fx_zI{^1!_xx&KCr=D?$7BKw*s@2gv%+*&wx`b}eYE z3f%Y4%li+m|MT+xqmO@q(haD+OwBYyOS3@foszmAq<6Ibr*4@`%lIBOdo->{Ndurd z5Y#7z)&HPzS6KN7s;fYKC{S4qs-r=Bw?TCkOr8)8THg<<(?J+k_rqwAnV_->WCo}$ z05TtR?jVSd4TJ891+`6xsp~*}Lr^^l!l1GpW*(>yjm!s?eqtS1%lT2BbSFTHu79MObnzCRHnk}d>9QAgQ)}8|8a5u zL2JBVV#qYeZctqUss{+w7ofTyG=~dX0|={MVP=8aFQ9e@j1QwhWjv_=N3Hn67Dk}3 z0Ii(>*ZVFUh_47etfh(NI5eL=(pf)gQtN~vC7Zm&lohO0KywUo9v}~tVSutwPXj&S`Gytmq zLFF>6{s)bFqR+R&%0N)L2dckdd>9Ry4+Yif==CkAoCnSS!s>k(4LT11xi1GABLSaFDw0+}!`5HUrEI7!9g_LFGHhE?C_QlLL)afc!>{ zxB!JGsGkTk8$^TJ7$EyWVFI!T)ZYZ{fdk2b+Fzh?2oM_=2A!!m)arjwA0M`c9~9=W zbtIs%08sr8iZ4QOiYyPR|2uPY|AWE{S2z(P4yx-xV?i*rp!y%QCKOcPgVH~E{(rRo z{|_4b2jS82|Is>%8s*}s8G|n!f$D!y{f%7zgZfyYIaN@(2rDB&G-#bVs6Gaa}wiK++2elWF)nQ|U;$tY)|DbpR#Rse%1ZoR_!W85;&^QlhYycEz=v^>p@2bY8dQf< zf=BEB!B=h%g|s*7#=)O%K;wl11Q2!samLH@BgkfqxY#0WW)1Y<%Ob)a@0HhDr4nVFaK=lZy zz5(^$Kz&P?8KC|)s0;_KL4=8cXi&c!bWagzoB%W~jocRm)mNbU0Mupxxu0ANs_Q{^ zA!AV3fy6=me^C7o8gl^2BZo1Fj}3$ByrEYAgW?F}7f@V+;s$hwB*_0DanM*hh$a<- z;u(}iLHkEQaRoA;SPTk(P}>&d7ErqtrVr#kkT_^;2-Non)&C$iXef3&_Bh_pLuC+*W6 zsEz`ajp+41sLTV+=Y!_tL1j5;Z9b^J1gQtf!7ykZA5{N?`t_jkewa9j2FZcydr&zI z!=UyBsLcS9hhb2=0>%c>p!NZ%j)&<%r$Kgs%mLLWpt=CGW)W0Bg7ktgXp9|H&Vw*W z4X7Un8V5k1p8%-^)d`?;VnBWa@sTlToPd(K0MHl$vU#BXKB%sT)&C$lP(KvpUJx4} z9*X^cP#l8%1lp4a3V%>K0@c0b)ce@5a>K1P~8v0p#DGTj3H3E1IeRf&>7D|rECKE6I6#&f=BCr z+LyyaB|VM0bNHkMP~8Tr&p~VZL3JQ{T?8smL1WdRIvLa-2h~@|0aK5Q2F*8s%m$U|AUDADgZg!#ItJAD2i5(c zdILm*%6!lm0jR78`4OZJv=#uQA7md$3}yy0P03s@Xbb=}mVs;@Z0{ea{|^!eg(qll zJcx}CgTf!=R*-*&0tVIfptuIr$)Gp{#Rf?jzf6)4WIA6O-cC=3U6At85FM|b3x{V+5(_40nojDpm+w=^&mNz8W0;4hM@JTurLOt zQ_$EyXuco0{s)Z*fW{SI>X2zrn+B9_$W0UU)CWqxl=S^UdPn>JL#IrqXWAOIYv`v7 zFKcUp_s+t~K2ZG*s;^*t5Dn@hf%@X0G8I&og2X@=)UE*4#h`HkIP6<46`3J-wzra0JU*oVlW!y zHgeklpmP*KVF5D>G~NQL`$6jfKw_Xd0b=TZkh?(cM)nK6*r2)?xjJ*W);>idH*s2uK{;VKG8d^D&{0UG-U)uk|VKy&J#vYk-<0;=~x^$~KN3mW?e z)fcdSBdARSGZ#jK+zhJA$w}kLc7e=8?*D`QjxG;UgN_HP{|^c)P(2D7GY8S6VwirA zK2R8g+616F8pIz63`!%Qu!My#s4WVr>tXl(fa-q`8#EsPO2aU9$TTRv$VmqSp=Y%I zA6jMdK%|jTJ4a?30o7-q`Ukme1NCh{^)P7N6tXxjHmJ`HD$_x0yph#_)&hXUVRb&J zJ_q&f(d$-Fy$TWs*$GlZ2!qT6nTy^x1JyI2vK?RD0_wwp`m&(50?4hPu?&z|u(4uL z{RFC$Ky%5Ub_Du4bD;HnHI$^TtFD)KT{QuA@*9RhaM$QWcE$ZXKOF#7xevN~*R&^!Z3KXSheR8NB16d-YsdD!YX&^kX*y#*SR zfVmOmHc(vv5(l*nK>b`$odn{;>KYImBo3M*2I&LUgP<`JQqwwUj0AbE0@RKGwOL?h zqWAwnegfGAl80eXI}7AqnA_+;<^463U^{eBRQE{Bhg z%?+Ts71W=E=>wfN0IDNE^$myy)!!gCs9ghcBd8t&)kC1V6g1usYEytPXb&N1Odix% z2g!l-g6aSe4VxnYt(7FF{s+Y&sLlu355l1O9W*`yVuQjPJzPQZpn4J{55u7Kf}lDR z$+6xLxP&*A|7ASl{^YEa! zA=f-|^nua?Xn!fl4Im712WXuitnLTR`-9k^`X4mj0#bvHL31}lsf+=oFHjv$2_CKg zNh?!_Qu-Km>&T8<^u8ykyaUaNg2w(qN}#> ziJ)}=pt>HLxuA9dsJusBCkSf8fa)+129@Ku`~h0a0IFX=brh)Hf~fb& zpwiu_y+b42VJqiAWA~u45mZ)!XwY0edO1jl58BTMsyjgXDaD|=2fgnP;^V6OLH2>{ z2Du;RPEh|9R_B1~F_0f&a_BUuJ_e}))qkM*0+>9gt|oWw7pT66nFFFhW`V>&G-w57Gx3^8on+)Fy+) z1u5>KR4u6f2i4yoH-Io`p9k#Be^9*-8v6&W{R6cLKx0cFHOLs${u^rL+GzbhG|J(j zmaazKJ3P`Awz>y&rXQ#d1=XJ*8Z;h&Tn-Y$295QC=J-MSDZwB!K=mG|uMD#nRQH4W z@}O}ETxNsX4A|ECgZi(aF?3LW6t)i#W-g2djWvMQ{)6_a!Nfpw2%xeQR1cDq_7l9l z|AXp!n0X)?*0un(!9Zq%#9$b`{|^!ejm3c6O=&$ytbR~i0~8h@yFnNfo}l&sC~QDs z2ntJL%mUT_p!y!vjsTehYTJO$U<8>#jDBjV0oDJ=YyUuP66Cdip!y#)9{}<<$erjI zlm!AJo1C$)n?;bng!+t$^@o{XcliUQqmu;?ejS$TR?2hYqWU zkjpzz-4CiCL48h8Umm#*Kvsv14eHN=>S$c`Gd6K>ot=>IA6X7Gz7Gl;kR71$SWvkP zYFB{Dab$JqY>*mII{~B*ghBmyQ2!ITt^u_xK;sG^c^C%u$3b@qg2sYD{d|x(XpJ7o zd=MMt29SHm#prcB$V^b!gT^61a{(Ye41??iwE*$0bLm^(mj zN3Q>S3ktw{|IpWJz|@1p$&LGg(l=WFkJc{(mG(yM9U5s5RM)`DI2a8oD?#-rsH_In zf26DdfawM4BL;)&eh`M)1*+dcd{~_UsvALKp!ym_6EYJtMh)sy!~6nT%LuAdK=l}i zhGEbcG-zx9rViBB0rhK<&oTzJfk5RxNDZa^KhW9%kU7X0G^Pw1gTZzOAn2ZXWVIkR zs6K_cpB^-*od9ZcfWiem4S?>)0g1!H6{HsCCJ-A`=Yr%x;{_nMgD@y8LFU2qz|_-< z2Dt-d7idf$eLMvemdN!#Xx<;>W{^A4F{mB|jROs}G7aQz&=@`?cy#=KXq4kaEp3jv zcW|UDP??Ng-hsw>L3J$%gX(3_csi)ALRW{459)7&+75*3X_!1{tN=9U0NP^!s`o*5 zg2wkjV-6rO&|E*U=7H3L>T#I6Ky3$*UXZz;bt2z3l>W4|@F% z8v6(N2PB7%L1Qs?ngZxGb2G#W-`;al{ zTmjJeKA^S=vN&iy0wjkl25Jw1#w|c?7?5A+i9z88njb-KFM`@npmq&x%_zt{pmqW% z%t7n?klhZ73s4&YR40Sf(F23x85ED`ZUMOqBo6QY=jVgR{z35ol0(Lzv;Z2Tp(Nf1 zO7Cd>KU)3|RN5Q0cj%-&P(KaS=SMF0Kx|N14;sG(^{GL1DDt>ENFEyo?X3gN-GkKQ z!=QErsDBNs<3N2|P&)&r2UMTK*u>DFb^`KV1yKJP)E3UoXF)KG80qhW3V?fD0piL3^+ zh5%H~gX$@mIuIMwE`aetG^n0J?yG~&4y4xJFJyB;cEK>n9q4k%^ARw0Ab*0|03bJ# zib4J)RS&Xy(3&|=Jq~g!%su#M&>RYAegHHkFc57PP+Jd{#*p0!>d%Av{=ND6|6%+7 zklT*PYC-Lnp<2d`*8jt!Y#yrVZ`9pGC;fru+mXvXY;4e2C_Z(dHCD)dc;vblnGLJw zLFR$%0hPVzbv3ejV%VVe1gIYkG7p47bH3`u?DOf1tI0pfLfE z95M!tV}RO})QWq0n=@Mf51sOt-f3ghzR|RSoCZMWv%%_PH=dgT|_n^}yx>U}``#XpI4=j0dqnxF9m}KYBkL zG=Gd7R+O?q;~gNo&@pHoAo89BP~8O*Lskbmvl&$X4@7?&R)>S?bkH~eXef0VEEZ;{eeh3|jLCqCxdF zHPbR^J{i=v1euMDLE(qq_5iK$p^Uuxm|}G&LBC^S%09uKd2o5id$rP5F0e60TLg|c(nc>I_2+BPG_TTAKK{* zwEhn?CJh>E2F;O!)}DjPKx7Qs{|@S#qSr;pYC!clG4(&FZU$k{Jpt%-G)SCO464^b zbtlLzpguFG-v`6UW`Wd!+BYC|APgFN0QFfxY!C*S0qXyQ*r2unXiXl74Vs6ib{dDZ zw?O72V^G@*IgCN$>!9`rvKo*dKy@rV>(ilR7iiocH2#1bW-vBrO)IF*2hIJ1`u?E# ze^5OMlZVluFsF8$)7w0dzd&pFD8Zxa|AuziPVY1~YTwXHFQ9r5RPKTLrJyq&PA5=#p*U!YTL3)tK3qW%Tpt*jSJ3#9bKz_hx z7DybVAEp*GKLBd`!1$m!5RgAXeAqYvs67EvL+x}8Yg>TqLdT#s0J0cpOaL_Q4-*5e zM+Eh^LG>IZ^)g65s2wrTeRWFwfUXxbHUjb!`n(A&>_GEGp!y%y_lLzZOddpo=CP<9 z-veRZX#GF*%Hn}YC!=~sR_i-O8VQ2mWu*MQ0p(0Dp>8UgXq>nKpU3F=#c^kb`g zDG>wp(Lr@S7{|r^2bI~Nu>+8qpgJAo9+3SY4C))>asx;lG*1mu2kK*k>QI>9L1G|t zL1uyKTiCjBP@4wX@6=*r3qOz>Ko~R*19BgT4Z@&t70_5VXiNgc2VqcLfyS}X>px=n zpmltpIucaxgVr2^!f`OnClKRyd}=`c0)+`^j|3=;uwhWW59;@Wa93{be^B~HRtE}q zP*_tdo(Iw#kl!fj`-Ak3_WwtA-7t{pchqj$r#(=A7c}k-8fOO8rJ(u|c`rPuPRAAx zAbp^E3AyY9nFFe0LG=l>FsSYa)ytsuH!d@MO^?IPXNugfb7JD(Zd!ru7TWE0mTcb z4hQ*x6b$koNFQkI1J<4Z&B1`eg%ooJqgqgV2IM!`courtg5n(9_s`4w528V9P|($Y z!Wdh6ABtk5^*`;)&!LzuM%_G`E?{W@RF8wkJ3;H6Ky@sr{|hSf0$Zy8niAR zrWQtn>SR!Tf?oHM!v~oIG7r=?0l5oQeuL}*-7y5Jqe1mGX#5}KPLMbVgW3xqJ=p96 zwM{_v9H_kj@++th4blU{pt=#%Cj{L!1QG*{{iFMt8hqHgLXaJ}FsSSXVVFE9q0@{P`JU&1)Y5e8VA9qAEX{64w@$bVGw(;Vo={76c(T~1M?d? z4H_E&o%I7c_XiZu=<=ZO#+Tly5%=^o1LPl2AD$9C+W#M|E9jYKNA042dIQZTqnCxC zzC5VUi7!5o=Lul?L3hQ0>RD{{FRpqSn_7?m|&~dLE!;9y9Y#rFlfIY$SzpB0GpnH5(D`G zv@a6WHiY>PnFiJCpguony&s4Moeza94`PGPTfmpzhnn1I{ZIe0bf~3~QTL9f5ztsN zsQd$AQ2hex9}_d~jjgPWaC7?)T6>MH{w1~k2el(Wbri^5$QZP@A5@QlF!I_zP#+m2 zhRtq}7_9yW)%~El5ZO#n{Qx=-1~fJg5(k9?=w2df=MQXQ2C@$u2Dt$go-jGkoB(>; z0W?+ts-r>uUqW>+sQ(M{6UaPJy9snY4@fVl4FIasVHji%NE{SipmYG54+6CjL3Jib z9Ml#7sRgNnVGtje8*quk^x~pH`atzM2;))%69@SX>9?}0RLwEiD0+XpiJjoLjl(jVv!pimc=|DZK#puKLO{xvai2U^1ps-uw0Qc&L+ z)Gr5(F@x${N-(HA2ldsF%?FK1fW`$t=AyR`K=TA3F_0WK4664*^#!Q@0^RM4Y%Zv6 z0^0is69d(G#DoEr_{)PdEcrv3-9K^VjbwM#(ufX)yGnF|sF$zj7FcZ1x9?p{zlgVF@3-UngO zS%08@KC(K{Sqz|d4ykcD*wv5L|3jnv9qj37)P1Ar2wNHe^_fBaLgca(#0Jf+gUVcN zbucMnATyBr%b+uUK>d5r952WmQ2PK>mx1gAVNm@D(gTu1$FTYxRCj>tO4wQgkUkIw z^$%g=AfPr4E$Rbo>m@*T6T%>Of!b)GwU5~9e^9*#@)M}u1^Evb2FZief!a{Wc7oQt zf!0ER+HIgP1@-fhOdIOen7?` zF)&7||3URVsJ#YqE6DF4d5|5*W`futaZucW;v42Z7!69ZpgMn2Ny&fEdPh*4gTfFd z528WqUO;w$)DAZciZ@E;{y}<2=l@5`{^6D{M*Ty*Gz}_KLFFhi2CdZt)gz!XnOqF2 zuR;BMSbYcT+k@s6Ky?(zOprWi3>!2j4zn9{RvxbUA5>p~>L5@Z0_sSy8*<P2iARHuT(LG=Pm zA2JPEKY?yONG+)S0h)&Z$-~rx`~q5k2TpW%X#G#UvU0Gbi&1xs#woSZ0B8&VeViCHj{vF*Ky@mp zt|kY=<_|z+H3)d`sLlrU%|Uh|y9ZR)qu2eQx*Vnk zq#hL4Aah_Cbgly^?qF(QG^mb8AFlxE0i{b&-4ELDkG_r)G852A-F9JE_I)WV>?JIHJp2K7Zj^U#w^ zO8$ew2qsR5289F2eYn(t+zaY+gZzmPgX&DsoH}T)186-ws4fPLqad3NVxx~wfYiX+ z3m`wh+yQDIz}Vgj zXF+4Dpn4cow}HxSaxkdA2Gv0zGeK+CLFGKMIiRrx&{_cGwg+ghATB#W?FUeu0jl@X z0s{Vn%*BR5YvSZggt#o%?9FgZ$TP`HEYPmo`6VNhQi zH1+_hlR<3(&{{yyJUFPI465Tn?I92bjS+y>gCf`OAbHTfNzl9xwlQ~*S`Y@U1BLko zv_=C|SA*JXpm>1w<3aU4sO3sQ?bmH--a0J#<9W|$ffALLKaxCG1|7!8VF zP~RUkW&jfdwO2rOKdJFIl+}asBqd}2AibmG|D$F9P|gFRZl_QB1&yh~%34sl1FEY* zeRL2_DhAcUmIG1Evn72ZWK;!PubjWY9fzpt=QHodGff*hf9K4`xos2u=WqYkp48WO01|^?P`wVa z9~K@Uy&y4|Jg6N2YD0kLZD49(G^iZ|+P?sbcbFKc?x%LUj+$wNR%U_HGpG)y1drDL z^eI1Sl?F!59gRPFqygl0`k-`~XykfZ72d_hG}JJ|{K93bcm+R0bp41#&N_&IjE;2b!A(txX5{4_OVR zY*2q5)Xss`m$+z99Sp)SH-hSKP<;<_A83vQ6dvF)05`Y)AaUe29wlxBjUj;S1+~Xu zZ2(X^0On4R94OvF@eix}L3KV%9u$ut_hEAbC@ewojVuRh*HANFhl*LCc%`K72k9NH z|3~YOp_1N5-8ryn6}j&RiVIj-3@VRF#h|fbkRE(>I!GR52dKRO>O+J0*f6M_0IFX= zbs}i&9l35mW`oA9L3K9B?bN`ab&$yBgZiPMdLMN645;o0VNm@K@*}c3YOq1`0H8iH ztj@$ngX&R`I+%T+`X5x^gU$i~t)&3<>p^ue===fDnn+L^57d7L^|4`ku+gA(3fRPv z#Xx%pVDtIl@&A+*_}+hzTS0CI&DDV12;##qsBHjJkDS(E=7Qo5qz=Z1(V+GQHR5xq znK4@b4{Uij)Y8kSdq>j?C20UO77QzMLG=WvUc*)&6DtO)w~0{;QU}7g)Pm$d^#Z6) z0l5q2Mr<^w4g~d|DG3LVUeNkA^g0T(<{vaK4Qd0xFsS|qxeuFLC=mnI+l1x-KJoe2sH(6~9Q{s*-IKx_~Og(E1wL2V{by9R_o{soQ0fW`_yW+0FM zgX{pERR{_L5F6B%0L2HW{|~CqLG3dT8x&8tFsSYa`3dAskQvArWH-n^pf(G#IEW3p zYYDUt5EL&X36IwQqviQXO7Ek79oX~^S}O)BZ$TJT_JHa&5C+vT1BpT71E9JCRL6ka zh7W`4G0-_fl%^%nS~FyOK=l%+&IjK=lb`<|#0K^ML1XQpu?}Rl)MA6~VgSwWgZz!H zP6hR?LGc2!4^*#$#>zqUKByf4!XPnFT@I@ALG?cjgZLl}nx_Yi8Gz2z1F=D3ARO)P z{vXsnfSCQcLBR9Q(%2-gD11obubGV@KWl$Y6kQg)$ z0jg_2X9&RD2BSgy+0e)7L48w7(lMz11GOVyc7SM*|Iz#Yu=*d@TsBA_r5I!{XfGVL zHUKD0K z)cqj6qxJvDEzgHynjdxZz@}GF-w{^!g4zS1`FT*;Kad!-PY_gpfabJeZiCUF^YB4# z1C3+D#3-r%LG20j`Ek(LG-$0qXult*-;azz{eMt931&C7Y0w^iP~REU??xYA2d$|C z)tjKY9b_*k3_#=lp!ykH_uJe52eZ-I0HAsp9fRt8kQj^x_5WdGARse9bv>va2i4V} zx)`)a55xzZ=?JRhL3KSk2DumHZcv*6G`;|GBQgfP?tAFdDRf5j4+_TLwl0NK>d19-3qGfk?UGe{R$E*h>V1v zhX887f$D8goejoFZ2(Xm3u+&L`tG1M1E@|0)#adiAB^4I|AXd$U}B(l5NI3(GzJ8! z_d#v|VNiPvR`28M`-AF!P}>Y!n1a?;KU*d8DNEQGX7Ov<{j(2bKA-G8Z(r4Vr%kmE!}2LG?bYuZz6?A5@2d+ytthKy?Gi z%^AXaL3I~sy*~(p>U?wz>i>h<2Qc-tqCsQvpm6|DJ&fE20M*B! zzB$OxFuOr&LG?VSUIn=y+zzm_gO3G(#6WVOb_J-d08$TX6Tq>v^M8;Uka?gm0rk;A z;SaJ4gh6fqwZ}m2K(GHnVjwxt9t6-H0gxH!7!)_4eSx5Jp+I#UvOMT4Do~h$>_ip^ zu>%|&hV^;Bpm0IPps)dr;ZuS~$NvXMxr!XGqwLW*8O&(_xsMIn?+)r;gX-CV!k{_@ zRPTWLilDk4R2P6SsQw47PXvj9>Nt=XXuKRWZ$WDKg8G{vy&yA?F{p13s*gZ@ee}8? z#0QNFfWie?53SgszB%aZAyEAa>idJj1Vn?{1)%yFRG)+F2DM>8;Q^}GVHi};gX(;c zI6e$g15yhz2ZTZU1VH_Gkoh3{kTED;K=nUN48#Yy1*9I^S`CnSAdEc51mYuO(0Rt7 z@CISfIY!8Gp!gv*UWc;!(fWV1o*2sMchv1eGyTHq5m4C+ng<4z@t`_xATX$Y2h}T} zItJA51l4z-`VHhZ(7ZgTZ34Ql7{mu*a`%dX>O_!!bPSsJ2lf52)&C$dQ2h@Y4@cKW zD?X@B1nsK_)yJT)0EG*P2Ca_(#S^Ga1hX3yPM|S-PRHLH2^e1%^TG0@(h1Z0-QH1weghP`e4VwgXh>BV&*lsLnyw3mRJi)$5@8 z9cB+Y4Uz-J3kZYSC&>CqVT0CffWjMwLF)rR?n5>MbT(1)2wAHGiVIL3P6-~Z{|8_B zI$GzA#>rq#1EBlWKy?MI+y&J)pf&)gE*=OB>es^R98evHyoVe#j|}Rw!rU6_;zH6K zF{rJBt?mbz2dei#eSh?NADIuTqp;0YgY?r9gT_TbeQi)1095~iXwcX@XpKCv_JYp$ z0o5@e|AR2PKF~TqP#D0%9@Y+n@j*1mUXVLLafG}E0o^QO`JnL@Sp5&8v9)JFYg7hv z{-KuJKygD!-4D_`TK|vMHPlLvqvnj9v;K=mA` zu0dV{h`jC})Mf#V1rU=?LF>#wd)+`~EXa@OI6W}%KWJ=yP3u5AUsH*{`O;8<92_CKgM^2eN)YJQ@`v*^2 z1&zhR%3aXhF=&o^pymKT>;FM@4yXq+-y$37~OzSonbY>!9%n&^QUGJpihkLG1+4dOXmc zeNejq?gKUgv}C0by9(kG%H~n^~laf!cGRyA?rU3d6{28bIcO z>P6660b=5MD60Yalajh0q<6IbA3SC1P)>`ZZXa3c2sDoi>Q95pTM!2AG$j?E)AEwG%*fIH*krn(qP48-T_< zKx-jDZ3U1%kXhI;NFPWZ)UKeWUtnf|%m#%&41>}eOb$ka#%>73^-z}|t^Y?>nLE_e z>!|yOS9%4F0mI5$&^$Y63;wFt>qdP+18Y)5nztLHEai z>I~$0Zfs-rp#CSQ-XS#akK7gjtpNm`lK^tZKwwZ?4OE|l>U>x@A=9At04Us$#Xxm9 zXlx%8mY}u)9A{_$2bqPg9;O#$2S{IGR22NoA!_>>)UE)<0Stq}7u^m}+61**aK-m< z5C^4cP#>NWJlg*sUS;xdNY|r&7#e93wBH<7?tfiurMN(##P@Vn**x*L3ZSXh0(0;2ZbGI9tYI^g4O>Z8stBa91MfTJwW?2u*LUq z5gV=lhekO$T+-X9KSt9VavA{5vBLVxpmSiV5)%H?yYCOP53~jVRR6&0BTzjJ>I1^+ z0}vb8?Jzdzj5*MrK$toZ4eDQFyR!#$))A<#0oCca>U(r?kXlgx6q|Vrp=qopcS_ z6AmkPL3J^xFAk#VjX`xAa(xD>|3UpfnA`Owo9sQm&O7l5e&(V+bSptET~Y;+9T zdj{%vg6eeidL9=aq!v{FW80^OZa%H~pmhzPb`q$MjvQ8$vO#q*$V|{23a$MBGaodz z53Bn@G-!+keGCUzn-4u53|0PU{XcZd$)TFYM%_J{#_**94k+9~>jLTNCs2I$6&C&n)%`FGN(0Dl0L3q; z4G4<6;fP1;|IxB}IHv1SKMkF94O&wVn*#uyl>_RBgX&#+V^GZqhnAV2kK+utLM?>K<0tQ3qWVqqnkI7e9&AC zsJ{*hBjhk6l?^&;0b~YfKjc982XwbHtnLTVptBax*KC5;sDR>pIATy5rey6ONbl(S zzoAps4#zY+>ZhTf{y=?7SouFtYXCrXJ*bX`)nTA|3B(5V0by4iUF7-zoef$80O~h__UMCXQ2PK~4XAzu$rGyUvB`t#e^7X! zn>iTxp!s^xx;ao?4yyY>{shsuFi0L0uAnml2I@Qm^l$^YA5`zdF#7lnXxs-B$3s1j zVRQdz{XbfFU`rRHVx#GTo@oHo4+E96pt2d%766^cI}r6hsBS{8yFlyFLG2NcyRc!< z+C|V9J!o7X)V~MqTSr$1nzskl{p9rhL1u&Mf6%^2baMv_AJjeq?Ue-8o1pQ0P#A#1 z5VYS9RNsSfYAX0HA<$X7-MP8{(f8UB;}?(~kX^*6B}EPBd_h><52Hc#J+c{~H7fMX z5A?EYwEiD0=joN!M(r6*Yq-(?=-gQ3adyxi08pJm&o%(4kBzPV2e}2gE`YH?N}! zn&ZKheut{~X#GE0CJ)uLJL>M?m3EQ$(1ZGVpt)gCxlb>Qt^NnCa|iWhLFFWJeE{nB zgXRW6^#!c{2Ce%?Kko;01`tRMxphCtY*70G)Q3j4f3UJa;RM=42igOf9TM^%v=#ys zf1q{|XdDE2od?VhAU&WxAE0v-U}DHLXbc7vhA<53izCZZgAHo4z|4oy==OllZ5(c8 z4k+wFYxpR^qwD{MS2;Y~()g%{1I64}a~FsP)eWF=c~HF$!k{`H z)Q1Gg!7!*j1FE}8t?$v*gXRwCS^tCTSLAqr`G?vx$PUn*2B7%?P&*4WHvrm`k8BTU zECE&@!)Sc#F_86=!UnZ7K=BE)14g6Ad-5<_YYd75O8WjFy`%mA(Yk54*G;4TqfZ(K zjjO}TZP3^`Xx$q<>VA+NIP3rH?Ej$g2$;J-G-w_gxo!v5(dg&%gX%V9HR$y^F?>+l z0<^A>p7lQ{+(C0M9u^kx@feVwsfj^%1B2ogv~K{^mI8$*C=Sr=0I7r3#V{JQ#sFO% zHTWPm!0dq0pg2S}8?-icIF$vX^*?>ewc(UzM*T9HW@wcLK>OrjH=lf!YPc)bqI1fXoJ&0lG^MW-dKwQ2h@& zbAZs;JvnXx&8vgL6%;<;Jp!qz|3UL4pmTQ6%>$jY018`V3<`U6b=2U4;t$y#5F2z} zGqTyBH7cNUgK3ri>22<4{Xbfk(>u+L+Bcf!aHRpzzANN92ef_+G(QaL8`2tM>;Hr5 zDNy|%?e31!7Y5Z=pn4frZ-d$bpuQojt_X5)0IvrC%?rTPkVC`je|q-+VSWJBv!K2? z^7)J~IdW;x9Y&yi03iQ>%m#%o2!rNM(9hk2*#Qb?P+bfgp9k?lZ9|wmwP?`(6Ht7C z>_Wz%b&D`NK=tKl{crpqH0}?>qvQXhVMEYG^jp8#-REiw4NR2CeR!OsGa~}Q2h*|LFfL!Du$5^?nNfI;@5@4W9{0G$wp!NQsdKxr84;l}E$%ANEJpz)a6ocx2bn`)W z&;x_UF+g=Qs0{=<*C#tP^nbjU*MCqL5Mw`RzaOZs2CeM_wP8T@Ju(J`H>hq0jr-s; z54M&P6z(7lN)!0hlPd@E7bv_zcEB*G4Trog5#%S(TGioDUX0fNgQLtF4ryuB52I;` z8fgGD-ika206LEyR5yeAfwaURJCN%p7#mdgA=ghJ_krpLc>P~o{2w%)ja=t|>L*bD zpVGP?G`;|8Ux4aJWb^6C2DQOJVF9YYK^W8)0nwnk8x&@seg2@m@t|=VkXle%3Do`p zt=#~%89?emYwJK}AY+hzkU51>Q7CgOxcmm%BM1t25C)yKfJ+^v;vhGI>_En#^C*zb z1)Wz(jkG?{W{lSVqhMCN7Ep38UXdJKz%G&c?%kM28}<{vhD|&4XVpPWj{Iw z)&HP6ALbrVTL4ryfa-Qo{R|qH2I+yxgJ_Uh)TsYKc7W=CP#p>~msS{5cO$P~K(`09 z?yW948N5yp|)!!ft8ovkC^PoB&gyHP8wErM=*f6NQ1k#H|YN)}_kB9)D?Etd}M1%Z=Y&K{=2y&Vos_fDFf3)l!s%dxB-NQHSqOb1)owq~l zbpW6`8(Uoks{cX#Jy`hw2ucr>U^1({1r z3|i-hetsdkeYs&_|6%L*ki!a8mm_0jIT#zX)*n=lg2EHj=SObiq1yxEgW?0!_5-m& zxF{+LrCz4RIRGGgKyx0T@dZ%)!7ym-0VD^*Aa@Oi@@KUEAHHSia7dq{ei)hQ6TSWi z?F$6WLxbvBP+y%E7*yZD>MCR!R9_+Q{{yW_1l0?m`W)8(2hDH8>IM)E+CvX&7l71I zib3^1t^5BVH-j)}>;*K}4r1fNps{|?9nGM20LWdSdLI^EpgJCz4dR0^NDU|)LG?ej zbNAcVgXRT5?u21bKNuuVZoLoF2O5h8^_^kn(wg?Sw+GMLgYN7h#xBsD0m$#5 zF@4Y+4XBL<8V>=nK^Qb=08&GYS)e)<6yBh=LsxF@e^7iQ>jT9Hto{el#Ec~%>nD~C zif_>P1IP{#2HA_O7bFkz^H49NM(h8PS;h|abUW();hk<_bHkv1H)z}!R`yoJ#r+3i zP<>5pjII6$)k7eAVD^J(&{}*@oeZm=K{Ti@ie5*6)`)@D?t$b${YQ{GQZYy$$S#nb zAiL>>L1!F*>Tpn72NVay+6$@|K^SzF59s`05GGbHXxs-hjsQAu0My!7pz(K5KMc0k8&u|k%6w3rOl=IR|3UNApnf|HgT}8xcf*0)0>Yqr4OFLt+=O12 zgZlb09v<-VYLI%^nl(_JhOV9%KB)eOwI4v{(G!F2-U0Q&L3=MiZ5dkH4O-s;vI~Sk zbv_7#+C1I4x&J}y4PbT$Iyj(=%XjAHqJ%e09W`iBIt11KAU9z%4>TS%)XS&Q`hVn= zuR}e}j=Fz%r&-XLE~x$ol}(_zZ%`Qws_S88Fo+FWUk{?Gi9z*0tlo#wp!y#)9|5x) zv^EY@&x7h^^!gjrPe&gE0G(eCQU|NUL2ObnNG}M3!UN_GTGFtw7tk6E&>A~X7=YSE z$ZPSaX+LOu0o30I)w7^_A7md0gV>;OMxTcOsRN}65C(-gtZhh5H-XFo%|U_eK#qTq zI0%EnXgHKZpfpA9xqmQyqv!t(@A7y!r1Mcf44pIznpgF*w*C(q_XX9JpfVn`{u(r{ z3@Up;@}M>4)U5kKW}(;rpgIp!pM&arki8%b8l%Qm|AXo&(6|7oz5w-6L26+bHf9Yw zF9_r(QZT6Q2dRgdM=KiCRsqe`gZvE|?*^^G1F=E#@t|-3)ybgo4A5B!#IEB5wc|kM z;&L-c4rB+&f1vsvWCsj`_@H;jERfZPSDvp^Wc2DuT`E&$zE1X72NLG#)md60TiF{u6rVNiIW zn@epzsE-eta{;wgKy@#uE(V?N0}2z6IA|?DXj~q&HUMOJT@SJg8H2i-;c(nc>EsuwK8Xk53@Jhq5`X5x5gXYcq3Jd>(>OW9D0TKgY(0X#vI&%;P)ydSr zAhSUA91Mf{yr6al$UYbb)rFw(2=qD})FuGwhp9uSLG=YlAJ`xH`Tx=Nk^)aYk2F=YQyBic&pmq)@j6iD! zK@*4LM}o$ULFG88jsew~pn4G0e?}eyi1zUK52~L)bu=~Ve~>w# zx(OI(Xxti9kAubvkj;RZg^LEM1?jmWhr`h&t6G&cac%NH~s02&7X$$`#10S7QL!XUSS z>L1XUG_t#}u|Z~m)~kc`fb@d;wP2dScmPN}$p6^P9ExI~HUlUOL2*k6gX(`!oTHzA z42o}1xWh1rPp_~5t$!FU<;`gQKYYr~;gTjt{V|#*LH$lpc@C=ELH%n`{RgTuKy@Lg zKMInAVNl-`qz+UEP^Ct&ctBQnt$Xme$W^ZXejHk~RQnJ{q*I0AxO>PC{SD587vjTxWyoWb}S1y1TIPVe8>Q^&hBh1M(L> z3~Kj){0$2eY-SDxG0+(TAU}h`7lc7$_@Hnmgh6^h^Df9^ETHv(pfH2g{~(&!JqeVC z73hAT;ZoL&*8jt!%p5N1anv89=@C@_gVuO~%4yJfJD@rj)CUH&0YGffIsk0@vOwqZ zQ_=axUeg^p))b}LE zp2468GYIZ4n8#_k-|IuKz*) z1l8l9dLJ2s#6WdCAq-ky32K)ihb?Fw0j%x^(V(^;vOF!>p!*<)L%B0r{|~>ib2y~S zQ9q3AbO|b7VdXbyz8_S+!{^GO^X{PjGfWLS4XUd_d(=s31Ay8Mp#DFoZGm3bfXoNY z+auTipn4iKE&-~WLHa;tDM%eD7&Imh8qWZk12PXCgW3h4b_S@80NQs(irIrjEhr8^ z^*nOD4`YMG3Dx~DdC(j`a=Q>T9|KAkFbql`^z!p?83O>NS=c##8o`dRRP#p-XA7S++`WQV-J%|RKO#`ZzLG=$Y7`FZ&G)4`o>p^B9 zW6+oYvKwG-0oDH?3>pgnoePJohZr`ftpcjUK=l{QOc)KT|3U2zQ-h5LnFFeGKzF$jY6F1k zf6)3rP(2S)k8B=j>>YHr4QS3ERyV_FP#q0&7sx%JacWTC5LquVY*618G!6hZ3w=L8 zLBW5J9B8b77_$b88qoL*sD1~v-9T}G4THj(P`wY62kiksj~7ro4U{fm7~dI8)D9QW zI?kb94vp6T!@C?E>gjXT{UbAdg4S0d*Z-jL08kwW>hHnoT@V}89|zSdpml<{%6HKG z0jQn;VSH@>Sp5&Gvp{FsAe#pocLv!D>gR)KY#8JokQ+hs2gIC#gKR$Nj$@Es*tiC| z`5-w^e-l~HU}l5-1FE+{VF7AWf#L`o2FZie5raYPFOYgny4KfE=o|bG- zn-H`PbtsonqxJvDEMJFmnjLlf@K3X#`W|`xU9`J9_zYa+`VrJu2Ju1VK4>jDzBT}8 zTpqT*57dXm)(!yG|DZYwREMCiH3#Vj)%_rhUN@ugp?!5wJw@txJ?P9_&=>-WdC;){ zQ2h@&o1d2T8MVv?^@~CKB0+t7PD=GGubN0j@3LGeRs zxWmjMhX(l-G{!Vk%cRlzfB2WBLp5!Vx_jiNP0(I%NAi&WOJ~wL2d$xgX%4iKF~M<$WJf~G85!K(3l8F-C)O{@CErD6vl+=evleaTM49| z7z_#v(Ahu8VE_^Xg&Pcm?ps8br!^ZiE;Cfis?qv?|KVSj z4#jji>gJK1F46n{png5*9vE!(Kd4Rs)sY|?R0n|6psy20F0YZ~=+6gdm5F2C<%ugU1RR4q8 zL@+gjkp}gHL1Xlw`j=D;+H*mu4FIbDL177Mry=_vR91k(8HPb&2O5`0Rzoc|$c>;m z8g%nOXETECtpK@YDB;oie`J@lLn*C}x^?8FRZw3S)USe-v!Hq!RxjeJYeC}Ry0W+! zJSPm=GXT?1hz6MtT4Mkj69C<9hkVZ;y!Uia~QXpt=x2|wtqowP?-6kaSn9z0~{RwgVOC#DyK&4|B+Ls4yANC>ei8+ zE4#o!U z(FDcyP$|Dg>;I8m&JLAyI_l1ml}o1NoI)3~KX$;us$W#U&_=(AW5Z+Ge1*hGEcH5vAdR zKHmb0ADHvjdcNL2^R@gYp>c93OJ&(er;sR@poh()Fkthjy9-mA#;{3Aua) zmHnVH7*zffgF*EsNFAu|1eMpI^#h=ODrg)R*<51Tpgn;gvp{ANgF*E-$WGAQFtQz> zz9p!xL^liMUXVLM>*qo0LF?i`?H!OfsGR_sD*%ZPCJgcm$eo~Zf6)2~a_fGOKG2>) ze04ua4wME!bvrDKU||6|YX}r}$Qa+=3(y)+m|k2oXuJhB=K`XU%?7bS?!cxu)Wv1U zoLd6QW8~KRFny!-|IjXLN9)Sb_#13#0CbNJsBS?nUqR(RDfK^c9Ss_X2i2vZavNj@ zXkGyM>|hTI3-EX{Xs!UX7C+I)=Ras(8QK1VhzRf*1jy#%WET{G_bYVHrj2hu;7Fld||6fcz4{h<0E)Q$j|g%5-3e~>(= z?gj1VgoOnt&Oq%cP`JV{Y+ofz4U7hbBgj4&9~TW;&j=gm2aWx}%tfX_W})i`tvv+A z`%u86_5WzuKNQmGs2fLCI>lE1gUWtT-3_V_$;F_)G^maR)fJ%j0I1&zG8a^)gZk?r z8W|(E5kTYb#M%!sAGD_cy>3Vg3;I8et`7F}IO@L9^ax4=*y?{! z84N1BLG>XuFlcTa)D{4l2`kUhX;3*1D$hX}H0KObOUQ0eodBx0L3+?Js6Pp^6I9RR zGY2#V0Kzaep!y#)|A21ZK=DEQ;6d>LTDOm{J||U<*f{`DI94Sjpw#c6IvqLwK=F$l zKA`a&P`e8hhoJTYvK%fpXpJUl>;)7Lpm;?#AI3&MD*|K|sGR{y$AcY@*8ijB?O;!% zqwX7dX%sZ}3MxmDF{s}MD!V~tF*Px08~|39qtnRy$cU}~L1th(e<0Q0|35kI2elPI zbr1TP1ju1SZ#HQD9aR65TE7!g4_X(2ukR0&1ML9>*^lgR(76Dhu!mt#n+f^sB~V)h z7XBbPV%7kF${vt;;PeJM+ZnpI6eI>}7l3GxnaJ%#kefhr6GLGg;As6n^2%0FnjXcY z@jjT-0Ji!cw8k7%4}!~L=(+gRV1vvAmE+hjXdNP`JO^RW_&cbq$7d%<9@O^-ohJa& zgN#9aTaY|H{n+F{^*=}-`kBPYX48|M6BhO#R1XuX%gK=ktpNbF^FZbk!l1JNKz(|c z-$8RL=y3=dyNAh_L`Q?$U!d>=)&JPqXfU-fI?Tldye|_LFR->ED9wQ48D<}--2&4C zqCsm{Kx+mEa~=b^ZM6O$tp`BqU=)w0gTa&rKg8@6I6y{!^md{g7%Yv%70vDg6ejVJgA+3>~;_vR1bmb3|xBg ziG$n-YCC||+Jnp*C=6SMG&UBcO#})jjzMh*kR71)prG{uAT|i2kI#U{06^_WP?|AESXP=63qub^X4odT*~ zKz&AJw}bS7`tKl&u7?;tsNMn9KcMsHkjs-4AL9fa+zCJ%li54IoG@ zayWqQast)GFbryQf#%_1YC!V=p!ypWS0Mc`aeOqajt9j9D84}YLFR+v19nz3h!2Wi z^s^=WY;FG!=JNnY>;IuyK91IFqwzMJ(*WqcU*s|wRIY;dcY(@nP#H{33@W!l&s#DP209sQ9s;@xmkTK{kL69DhJ?MIf z<%9Ht)|w%kOD{I4eg*jpRyWgwCZ_%esR6|U`nm{EIzf+1(7Hufc!B!pAbC)Hf$|Vc z92X6$Bf)KkqN4vG`#|+RNIxh}Kzd?4J;8efKw=;aYA1ojVHh<30~!MY*)`ZO$ZzD% z`@{5&&i{|rMT0F}kGf}Qr%BL!Kdk%&(V#vQs9Xn?xy06)#Hs_;%b;=_8wQp8Ap2n$ zG?omiH?Wxv>LX%X`w!9!Ix7#)C-9wLhA7%$J zYXCv+0gkj`!2S92PyuAnI7{F-#KeWq9P+A_vqj5Og(g0|@AGr($)kC2A zkKXk^$WG8%E-<%%#(F_zJxClKgT&F-fP?N6fawSI3qj+~usQ@?KR!OF{s-xUxr1Ib zs67L!XF>HJtZt??4O(9aIx7J*=70}_+y$Bw0bx)d8x|&@@fKJ;45LA6VDg~&0Hq_4 z9LRq#aeOrBE(TEj4~ipDJb>zc5FfVo05rD)G7pB)%>~_&I2iNjX#GE0cMQgKIqIg7 zoi5Sqe^4I_RK|kJZBQ9ZO$;&?4+qw6KaABg%N)Heprf6%k;hqWz0;|=)geq=dNc*4RM6wV+vs4a#bm$14Tqz2?C zkUYp75T6hR%^!g3d{{hy(hP_XYL|lag4!Y=^I#ZcKXRJ{v=3k~mT9B)|Hv+92V3L3h%C+6m}-3GqR01gU|ULu(o|UJg264^|%!1P!WFLG?2}3{nFM7tq;^ z$YBDSw?U6f7h?(0L=i;E3f+X;$ekbR)~A9+0ntUZBjC-VISpgDlS zxDQ~o{vX+8EvRf7#iMCpFr@)d{g2#t0+q+0FKQ7_>eNbp9Vm4AhnYnF&%0qKWkfXx#t^gX$5GIkd!} zdJ5zZ&_29@sP|!ZlClN>v_~H~Ot7s10JRBVYC!P-3Qy2jPK28qQELE@+iu|a%gg%@ zn%@DL2|5b^Io-h6pmBeYJP3o*!C=Z~Ah(Rx|D$C;C>@OA(R46a(g5hZ7EnD4Dl?HW zXbu=7YpQbqe~~#UMX`)(wDY5C*Y9 zeNSY)1la`z;B)KH-2yU?ni$mX0`<2+bf_^&Ds}8r1g&mAll!pgJ5>Z=;vnFg{2g)K>(R@h}Xk zmq2w1NDkc{p#CIie;G_Ij0UX-2Voc=G+qo+i)|hO-AouC0yBdaG-xj!s7@V- z`X1d*P&nhO`;p~3b94WL+Agp#iS_dO4+>vcJi_R#kPvuZALLh%IPx6=F#XtQ(3w=Q z^arZ{LGc0FmjY4?>f2+p57f>B%^88zfZR72@)xojM(h94G9NiTjIu}5!$7A2T=hSw zJ^+=cu=<85kpz#6pGk`(*kk5qyt!D)3 zCuKYXq!zRe4P+KAFlc?^V5$2-Z2{2y1IRtd^*lBUblnVkD%~Hk5iDj zu&@Ko$$;bwA|l}WU~;%8 zkegup_{pV5_y3R98OUjBls%drC`kjLa@ot;8ly}G?Wv-6{SWHH<0`j7Lld)8+IlDx*53mp!y%ymxP%~EgG~24piTQ z+E}1EaW8ud4=?nJ^6MFN4Z&(Xr6; zUP1b>*$)~|0AbkLaF8BkjJ&rIRQ`g@0nHnL+78&vgNcFEfZ86&W>JF;IR){IKj`c?ko_MBG^|ev>feL(qnioigWL$Zzm|}Bq{xHnKTzEY8v7?_y+67hP~8vePlM*vLG>!g zTo6qz2I&X2O+aoWghBmp%eNY+%)#sr8KXN(+ zg(bRO$b8t^Ls0rbPxAxC2e}_skCRJ}*8ihr_&}xKQG179+5?rz$YbQNav4-sfy!QN z^)9TAB!>o>2dZ0<%W7mcXdD^l1`rKe2M&@4xdq)mP#q5H7n0gf2c=_B{~n|t-AouC z7@6q`v<@BA&jOW|=onPL;Hx8HbtSPhsJ{&= z$FbEDu<{%IY#Gq_J*e&nVRU;y=783Sp}U(HKB%1mvJ>PcbaO#`P@fZhEP@zwv8e(1 z0aO=*&e$PT_Y;x_nFGS0xq8sv2$+4Kel|!9RELA)$;G79|DZFAVfKS)(EUK5Fh$46 z;{+geq+nP)f#L&H=fm`Z%tW^bnGZ@Ep!o^V8W2!BWiXU)qxJvDEMo^l+8cGlXxhV; z20&#hsQ(BnSCMJZTs)}ng{zJP)sv)RLiInW9z%8mXlw$s-yBr_quT{4??L+mkkymI z2CZWQ)f1pTD!SPq`wAl?;p@#wF&9~_hlRy|ke@*PQDW+3eDy!5JqBt+fH0_@MqWz~ zngapZ0XiE86mKB4#Mp-|9O4D@=IR6eL*532KF^)hJw9oc=LxeAaRs4W-o<@F!LCe;p* zdQez{^b*1#`$26CkRM?fH0KVBM`Rk=oiMe;(x5p5P?`amhkU*tNIxj5P;#;BRja?&pHWOVQ8M1@$YbH3k5xV?kv(sBXno zW}}z!pz<5E)*Ivo^!gvf2bl$`8>5iUqXFq57Q^Z+kh?(U!7#{N<|M79SP8+1M-2!qbz z0of12ptU5};uW+;10+u_2DN)Y=7PpOkj((`LE^YDsC@vc`$1y`pmm?5W_o^$RPiK>QxX; z2}U26hnWqt7u0qGr2!Bhv~B_9CsOSLxf4|XgX&w5eta0T=MYq{gX(;cogfTq3*d@Z zP(2J%Lk(+j z51I#n*#R;SdA^w#b6{#f?GVtK1yEf|Y8{MAJt$m|>tj$|2;zhKwlI4^Yu!O?(A~Qr zIb3ED5=XZSWEM6IYJZ`h0|@GKV~bnRJxn0Ck%K|wFd#EQ@r*oI1-geAB#sY*!U<$2 zXs&0V^W13tKU(e&bQ&DBe>4rErvX^~52{N*^?V@GIjf+u6SNN=RK~*UMv7td}wK0(U)v$FCpfMbfT4K#cS4Zp`08p5tw~;{hg3<~)28pAG6|sEK z*geQRQ2Pvawl7F8=&VSPI3Wz0(*m_^(bGM>`J?s!XxU5eG&gGBXqqFG24M9+X#5{k zmZJC7K>OD~^W&iM7gj%#LxbuILgW9SF=h1qh@k#7c>KSh0A4?1vmazWNFAvD1=SCv zV33`lIdzyH$*uoEZ3fWTI5q2jQ2mUpP6mY)wzc)3@e)vd3(`jp28AC;KRyhaBLLYC znwvomXOMlMG=z>p;{u?)5XfqYWrNytpm+hrEoiI;rVqqMw+9;^G>-$SdkN(OTFZmn z0Nck;EkyN8)UEDfqVLGB~9{s)~w2&yMZt#64{52|NDbuP#b5C*Y9 z^%`g%0KL5g@;7MyfmpMV)e&3&gWLd`s{y$IHtzrmW6*p6C=RjV(%4wC>wi$Y3S=ho zdIL~>3W_U`I3Wz0HvqL4NXZw}Rts`3x&3~azR~{wXxUEfbUA9?$W2qo_y2(Q!hyr!g7L3KLF9%Kv(3())svO7Wh06}WWwIAdUWIJ%N zL3J`{4gmRFUeFi_uDY1m@I>|tj16)F$XrnS0wxBcLGcR`Cxk(3NI>l*P&;j)%Dd6} zf8>_41C{1R?Hx^X_|iZ$(wHo0uN0`C4XUR>>i|JzE2!TODrZ4B*wGO@1`F!LgX$e} zF{oa~S6+kGYJ=>9Vc6U}$Ze$930kuNvI{hK4l|1w8dRTx>VMFBb3$zg(E0nIzBp*i zoZR}BSbZQnK=mLDgX{&l5xq_XjbVV~h&2~o9jN{X>4({aj|Qcc2sbx)zaG>-#}&7r zwk7Bu1Y+U;|2)1FB;|Wjd&y1(nz6YXM;MyD&8%b);fYos6%%My^j_Wj(0;2I(W! zE>K$q^nu16@TmvYwIH{l*P+zngT~`wW`XKukXU@1VXu zvKuLN6UZKr*)V(X(V+N1p4ZO|4hFXoam6oad;r<4#Iix|0htL(qsV$d>pVc>gfM9A z2(-=xl(tCCBh*qqTK|uh&(umwqvnjJB}&sks=xn#x504~cxeL7f~ z3mQWOmHD9Y0T4|N2G!&E%Ik2XHVMpLklR4|$gvMJ4ghM)fX0Af<`JSnYyUucki!R? z9@tnray<>JuW3Pp!U4HH2Jt~-@SrskF!zDt3p6%QiTxmRk?q082B`tX2WY$mW;f{m z0eo>wYC8;OF35h6xgbBm#6UFYj75+*Aq*PN0j(VjaBvu~drU{`|Isp=(lUEg|7aSb zRvG}U@k3s_1?o#8*Z-h)0EiE&KSBH2LFFw7gYMh`mA9a>pA-x-52PMckAw8%!l3zd zkUhv4w5APIAA|IhgF*fPVe~Z($aWyJLFz#6Bc}cbjZK5hr_g4~i?$TmcA^>n4!7FgtM3AT^*kMUF2*{eMteg1M6v8Z;&WiVu*Vko6I=52Oc% zL1R~5*4F<)?Eq@!AyUj4t^Y^MZc@_AsM^u=Ld!G&+E<5MmV)XLP#uY0zk>Qsp#Ctj zTF}}6P(6;WmKZ)rAFNEqMuW<9WV=9Y(3!R%eZ-iLOASar$lahZV33)FFz7xzMMQ%TmysH@5m8G=~oAdxQ1|!qkJxP*8ac>d%q7ClFK*<142@ zW5^(TK;sM`8iYZ03?*|8pf&-ht^&CkG+vHehl9+=hC%&kSR#c4K$tuauW!H=DI=ZKyD=mgX(sWeta0D1{AKK{xrx=5Qd#0fiHeR z=M#a{l7eC5KcMspnuCJr1??3Dt<%6~A50FU4ixVoJ@n3NAp1t^|IsoYlnzGmXgU}S zX#lw&3@TGW^*pFP2bJl_7+h}_7yk#%55US@5DhAmLFF-MA2_mlLTp0yKdA2tG9P3w zY<>c?Cjev@$c==|$0ZLk4}?K&0FYnE>4$>)n;`eY^n$_wG$v0@9ZRkrP`!&@FN5lT z^f4Mx`w66$oVE!_AG#gb_@J-`-4O+fFAyfC{s*NokXlkOXq_LZ4GO}bwhc@#XiYz; zJ%?P!gX(!0ADsrBZ3)r?YO~Ng502LVqvbxm)7+?iqiGIT8UWR)uyPc1HVUYI1(nU9 zG93d$*8+mh2!QDUmGz+V7*v;HsL#*Gc~&2&{zNaAk@>K>Y|vOe=-d{NeW0_6!Q%`B z&HyIH9iTP<$Ue|`2kh)4kR8O}crUO2pt=^cjvb^I)E@_7a_e$Z^?~YgY;yphH~{Uh z2esp1{s7gJpt%83?EtAKw*Ci&CGvVr&{_ac*b>6XZ3dWo@zJ0(0ZMBib0d-V8-nzJ z+9e=y5C(+}s2v1T3lc-dptc%F4`|;ju6#i&@zMH!v@E7o+8Q-?G;NWZ29U?LL1ika z{>N8;g6eHhc@HW-VHi~2g34NuI6l2FIgmP#J;-G;IvZ5hgUkoj&#?J-P`w6jn^2+t z2e}304v@XD`T%4fF&N|?P(2H(BSCGUx|Edv^sfIw_JQg=bPNhFX87__zm6J~j+mUjo_(0NVdb zt-M5xIivOeXxU9nIvG_nnoj7E20&x}uyPbsCW6XWeDmv|`UNz%3hHOV=H)^9LG$&X zeif+9B~<^y%)nMI!^A-4Imld4-x72tA&3pap!x<>ZxFJB6nT)FL2d_~3k$M?5C+vf zAa{W3Q_$H+AbKD$s85evAA{;^P(2S4LyjBJxCyA80>Z?)6V$c=nL`M}>;tW-hlLxc z?FNfSd^9M`NtpuxwF5!zQ;?aUyaBThL?gF3Kzm0(^AVu53{r~?gTeu%544sOWEQ>f zX#GE0uG1^6joLGs)(E8m(7nE(au9?;XXAj%OhR=hsQw0(-JpAJLHb}ARA+$Z0SM^_ z$%EPu*ve&?7^rRonG4$M1sb;ou|XKL)()f>WCpb`$UmSq1;}pX_46S6uwl?V39SAH z)guFiLGu>a>Ss{6fa*YGw}aYeAhpE071XW)smF&w?F~@hAG96;*)Guee4wx-29q-G z0y@(OR{w+6@FClo5flVIrwU|ete4k+P#l5S_%LVhjEBY?~Xr47(p1km0LkUEeUE(}_y2$}-`jr-6mzm3-aqh&k2(%Ps!qiKy$8UU4l zu(B3(E-R?~B(}~3)#0GAbI|xQ%nVRn04k$F z&jyv*pmH5#1}^i-6$hCKvKx860ptdB466S@=ly}|NMhVMEYP;qoLysZI>Cr}uYfVHr@3o3I#;|3u8APhPi4^+3~TcZc6XF+Q4mCc|!A2c@ss%JrJLFR(Y2i+Y9 zvJ+%CEilOcpf(4{E?ju9)c>HqJg5%FRzHKf`X6L3C@yot z!r=8ksNan*Ua`p$dlnGv{3p;H703_BeglmmfYJ$Q>S&3v)&C$d&{+VW_8hYNL1W|~Ibz&{Yi$9j z&PT?exI|tvLCo2|p!h__u(=*&w_;<1=JY{zKPc^h#wXC#fYKsp+yf*I+RFlpN054C zyO7zSb|ffFKy6EU%>j(o|AV(Y9IdNH<7OnK0Z`cos>?v-B?yD+1yGquY8?tHN0G+> zKxTpZrl7JGR6n4b2NDC7;UIZj7~~GndIC^64^jgf&jpzaaxbWy2Vrz`sl^A`2U<@K zvJV#q^;wCnOF`jED-3FbAlJvpY|t7-&{ze`51_Gm(0B?Vw}ATp#MJ*F^FiYbpgup$ z4$$5^Q23F8L2-?*y#+HH)K3S^ErHSw$ZnW8j0U9%kpDq^Sp5%Di_a~fxgJoR3_8=1 z9(f;R7bSgvklxY$|7bl$kF+{!$M8;P$oIv9%1lsQ3o46Atw%xSE(jyfH-p9lKxHqe z{{^b=klNI%FNWOJ#-2Duw#2goj57&Mj+ zavPz#l-BZ~I0Lx@8wSS_X|lfoNRr0l62X9@N&PM|n3| z{}1mnl^$tm)Q-_KM2$3nzRn#~=7Z{8a_Uh~`3hQ304hsi7}Tc%iG#{& zaAA-qh^ezBTCZ%=pHms zSqa0S@)J}Zg34D?FswcYwI5(+!D!H)ZBShRny&|`1DOk=LFGM292W+a@5pLE_9Zgtsu99Xlxkd zCy+i+dccQ4?F(3a3o;jU*8r~gBt{%GzYj787Y4OgL3KGOen9aLS|5U}7PKb-wif~9 zZjf3~`T&g?;Ikiet{^CkK;uo6<|#t@LH2;g@F~Hg&KcRFsDnFV=2&DngeLBeH zCulquR91q@OmZ-&Oh)f-g3K?Ci2T*X{VqW|$nZxuCiWBn~o%9Cs3< z2jo7G`5^b>!l1enG*1qq2NHwEyg~IHHVoRI4_cFl><3UC2~rE%|Ay{v(7XVs{s+ku z!l3#e`K)2kxyYb+As6FoZ-Ly8UjKv6GysXiFi0NME(5J|0L3vVEra3^Him@DU7+*? zGJ_s-0HgK)Xt_+NTppDlO(XP31E6)!pmGm{L2OW60V*p&WhXfpq!(1iqMywIG9Ogu zfa-rx8v#@%gXU#HYKg_5ItgSB2!}X3{|C*_gU0B|aVN2QKw|*teN2%3FbrA)06w2E zHT6GwJxWhLs11Uxt_JntL1B%)mJu{h18VExawDid#AY747^waS^_gMe0UDzrHa@Yb z1EmR=S=eY${SHb)AU}c95h(m|sRPM_(j!PMD84~_Y<7agKs9H29Vc=gXV=nx@ zRE~q{ZxEXp460{g=74C>KEUqW-2b3*ogB9kqX*F zZE?^XJje~`7*zj*!U%bc9^?;D*n!Rn0=22Ixdm5y0^NMj`~t`l= z83CDv4TI`uP@4>t&OkKmjtF$MATvOAfaaWF@eE6sAaQIMbOsTq4M6LCfTQ*QXxU6m z**vOdG@Z~g4S?1u340=XCDZjiko`>BaR^*^XDjBYP7A2e z$QUFBYBz!U`k=ZE+1;S_3dqga+=g#H0cJjE{~gGDn3P=JLrrDn7QaQNFJ0%L2(0`e?XT9@j-PtC@q8h4T@I~ z4O-6uN+Y=31ZwMn^n%vJfZE2yn8;x}jzo0M(nIJ{zda17T2K z9aJ`g%1dfsP?-zrtAWf!-n$2~3x+}K0zv9PYH(pt{RCRi1=E9#2Kfb4FM!H?kewj+ zgUkidlweRj1F9E5^#QuQpfP69cr;8LJapM%_hE)U{Y#K->! zr3LgfKxoVf6sMs28FbDt$PKi>AoD3%`w!APy8eH(E}%u)95r*~q$^li2P!W?7*rR7 z%4tgKOLV=U@)uMegUki(u>#qHjzM)dXx%rc{|u@>L3Iv{Mn6*!T`w{p5dFU%jHbqk=n9@H*Cb|`5`;p@voDK^L!23`^a@a7){UH6IIRHxY7cTvy_5Wzu zjVo=8ijSrZdZhu-+Br~J2g9IpAJlI~E;Fgc29>>_@p(|03#w}f)!{HVVWUC%LG1%< zaxgK_d_CwqSx_GpR9Ap7sIDN#KcFxH)sZl>VKnH>dypK+PoVxHOdMRVrlfTw z9vHOd0AwGie#VADbu*|=MW4q2t-}PxJF*)=Z5M22z{Egif!Y$tbN}Fdc|}G4LE#Jv zV^BQ`3KvQ+^4tO}Y(X^0pJ00m3c&WEuWJCQ0gWkv>;|PdkbB^`pa8sI1SE$GgX{&Z zi%IhHqsbk6qxJu28Beb=e$<}Pw1z7UguA-J_veAu0f6cU(EKR8tjy1+`d9$SY*3vE z!l3mApf!M?z8a{^#)d(CJM=mWG*19>D=}>dP(KbdP7i8-fa-tHI0QzWfXAO8eIU1j z>O^$+f$ANQnV@~Ua{agmn*agV#Fn59G0zmaUtggpK zgXBTs0*XIan1IXyg#$<&ghAl~3OA4#xfs-bgPD&^gU*41rBhHl0CXQTvOI_ln%e-` z4~}oN_yy_3=O&Q(U^Cp^N9+I5Gt_9325^bP38UfI}1ZWH&)XxKz(;#<&`qUtIf-tB~1?dHegUV{qya7lY z9|rjkR7ZjQ1uFkR_Jisv5T6hR)gz#K5S#h1wP>I@0+3sf)qvVHptcIEZlyI13PX@P zv0+f14O#<$ehvW0jmY&sD9o|xM;8Ny9Vnh){srj+g%d~|7M`H^0mUD=7}SP|xd}A40W*UZd2zJ=KU&7qB3+G|Ihw9W zNdusBQbFY$2!rO_LFG57Y(y?AX~hQB6Ck@_3z-Z7qMUY!SW`Noipfe6( zav&PiM+ViMAU9KjLH&C|`a$(SsGbMehYf?;BA~h+foM=01||oiLG3-z-T+wK zfYib;s9gclhs!-6IZ%27)zhFov83cFV$_1n1+C$y1dp!&A1&*NNo%8OM$-wdG=SW1 z2Az2VDi2|0Bt2+C>npFukBL1&~_MI0LdeP<;hb2XZ&8o}~p%sQw4J z0fdp))q&>8L3KLFZN%sYsRe}vXs-y&kNFW1;JtRpVFqJ^+D@SGB^M*x1G5j*#sbyR zAUi-bt~dwz6=Xk19XbYy<8u?p4v>ApPEJ%G{~fLWN6TbfW%8)_XxgAh8UW3y``OvS z=l@}A+0n~MTJb^kEGhLrXg&Z`9)mDwj~1w&MRps=EU;KX0r)Il(0)SDdB!01_%NtW z2c7o{TF(Zm4`6jUve}@v1qdUD7tBo1xHqUSfvE?n17T3V8m0zBgT~!KV+EjkmKJqC z%uG=I4665VVNe?hd0z!+oE+5W2e}L67hL*a;voH?umZIgLH+_^kQ~U*urNTTL2&{K zS8_3E{U*o`WSkQg25xVF(h#Wr2ko~&mWQ!H{sPG(y9dT5;KU*o|@@t)U46;L~0sH3k>{^Jf{w-UqNLws7!^Gk+h~kbvCGc2H8sp!}?>OGPxu= z`ag1=i|kHNJp_^i)#IQsd(av(V%hVnWI*~rA50vi zA9?H_v=0LmHpu=*W`n|xP~75^2c-|>aVk*QgXa4|dO%?el1E>60a63PpuLSCd1Uv1 z*dTp`+y#nLSUU+sgW8Cs<}qCAN9+I5@)}p#7!@B)8}vv6p!?rIWk0B#1Yyt^DyU2a zm5=nmpfZ@0`X9NE2XZT@TnCwf?pBx>$ZSv<4pIl|vx55HpfVifS9}=M9|qNjps)a$ z1;U`Z0%R6Q4qY#3%p4?#><&=-0i+*P7bB|&jURyOB=9&uN(xQx3k2B-tE;impt*a{ zJvYei0@eK>e-Iiw0GS8s`y;QlC;*N97Z>B+Cql%2J5X5R!|3q_O1mKSptu3WFDP!2 z{R3myB`1UT`XR>+hz-&QN*^G-AaiixST8T|_!y|Z294)XD_?@lqh#(Mq<3`wf3%*U zR(c#YXXK?NP#KCm4-6VF2bG7Q@{w+sgt`H_&H?q)L3J#s9LMKYkUVlZ530vOa|f_; z9ac}E)1Y<{sGbDX3n2ZVd3}(5$m=CxdO&p#a=3x)1g$Fo?F#_u2eDylK{Ut=&{=|@ zx)el%>RxJMLVb8p{~fem59AgY28AuCPY-evJ`8FffY#I@uf+hhH$dYZ_~HR14+;x% zF(`~-ZUxbxy?r3FKz4${9@Jg~iKAnXK2W@Y)M3M*b{ohXTo|;j0cIx1PHL5tqxJvD zD{rZlc1Fz^O*_;`1E6(Zpt((0`35T6LFF{4{=!yP(n<_ee&Z^Ck;OrEB+RX#whKs( zSU17^1gigG`at6epmpP*J^V0pk!jFaKWOb4NIl4npn3!}4~(n^#0H(81Cj^31-cdy zw3Y%iRsgdPWDZCz41>l2K>h*EPf)uJK&bu)_1{712j&(KT^JShA2dcnsO|@iTY%CD zNDl~u#^phN1YxlM(e~Mc#6V#Wk_Uw&xfs;`0-a9*vJ-?s?N*T4pm_&S9S&-PfW*-; zs9gh!H;`I%400DpKR!2s;s<6XXr2QUZq&e|_5WxYPK|UlYQ|_fA~y}hczS}zHeux( zsC)#K(;%9j7*u}aD}!Nj$n_4W|B9l>~AN6T&WG%?B_O%wD?1L*sz zL46@mKMTE_q%|K@eiJH#LGqw_6jY~z%3@I6iCpKB>PAr657GnjFUTC2`JnLtP~RM6 z2QsdRivyn-k38-TlLwur2l4~RJQxPmIiN9V(7G|u+Cxyk8Ds}~y$c#60L@W@o{ zF>8={AUA-{|Bu>gxL?GL3bB`=Jj#u0htM^>p|lh zAoU;&YBPZRLn!V+VF3yoQsNn8E;c5s9+Y(t&^8oE4K@r44^a95g&`#veas5vR*-ohw}blUFt@>I(7Xny zU5BrYLdad9^`bEIK;cA5o`dNHg*|8uKP7l{{r_nB4@*y@^k`ZjH4T93d|0^#s#htg z|3Tx)p!M$L)W?L%Ur_lD!=QD4FgJt7t3i4}bqlsSha54GS)ld^XiOhw4~Pc!k3nt# z?K=nYkuj()N3Z{3c7x0V=>yfbFg>6-22fam#{OYqFdDQ*091d2*5ZT44oJnM)c>$H z3CwQLm;k740J0xcufi~h59<4a+9fcxpz#+_IDx_+=2t>As162&1tl0XP6BfShz7N- zK<0tm3gV+VHsuMW`G{mj~4Wp#5~9HRR-&0n(4H+{Gpasykt2F=)ITR5p|2W^_Lw z^Fehv@)$j+odlXI0l5eLTwjn|@YVkyb3yI{g$t<8hs`U1!X7ln09(%hG6#l1egxI~ zp!ya>6N^D(1|U74x)2`*)$ySA2)f-My&ySIeUGjmI#9a@#7D=V_97@gL3KPnH-glF%)y31?HuH_p`f#qD9xv% z_5WyDPiYz&)jyhs$V~&Fact23HduL?9U2NgCxxW)JU{ps)w&17T3T0t!128ySP{vjz3XL3J{*^*=}*Xxsq3?ndW>>UdDtf$AV+J3;#f zL2~HzKS&JZ7G$-cwF02J800UI|A@gLwWP!~D6FtyP3pmrO` zouIJ?d~O7(!Dbgs40PWh%v{i!j^yS$m_AV0Q!@4s(mOi-KU)67($gqCnifb&1E6tH z&|D_0Oaql~p!x|^M&m0d(d9tuLG>kQT@+|e9#j^C%2IT7xcDIbAU&{hmJkhcC(O;D zx{(|=<8lj39ONHRzY%5+=-e03`bdyG`uHp|{Do}-7k6GVgBZJ@qCp?N7#`vBx8Ty`UmFMz@g6z8Pm zH*~ciGeC7XC3v*{A1(9I)72<{G))kb20(o%P@M)UBS9FnHXT$CgUV?1a+?qzR0o5` zL_y|&>K{-!N=Oe(9%LUWbpmM5H^?3k2F?9~>;jnqGmjcHs4hpI=LfBM1BDf6jTvZ- z9>{KF3<__M9%AhV`4@yiW7o*$U}J;oFVH$WP@N2_=LlhtI`sM;oe!$xvDN>e@C42C zBbxzQ4+!Fe=DlI=1DOX(E5!O2Sskbz2E`e!dX^Y*kQp8p7Vx#Jpl}3*3(S4UG-!_i z$bOI>5RDIm(lIXkL2(Z=7Zettvok>PPA(p;|3}Mda?{SJzR|QpX&L~{_k;TDurdv_ zuZ!F=9aL_D)(?Wr0@Wd){w=<87FiBdcZ2FeT;(phIH;WhvIm4gbuq{;kQvBkQpyH} z18CeBWCsX?%6d@!4{FZ5|{Wra^7puO^-HI< z0mPUA(hn+|ah1F1;-ESS=4Mdc391V~W)Nc+x*Cu^7zW9~>SU0epm2rR1KPU}VuR{l zP&k3u$QU$EPfpl@>QIp1L2Vl3xIi`=nGG6a0o8M$b%Y>yfY`_wBnGOt31M*kpONt& z-A>Tn16chJ3TIH*fZABdZh*xvD7?tUps)gkF(nuj_sH%7tw%)W!`PrXE|8x<;f&9{ zAisjt;Byo5+LK@>r_uV~f3*Asl@p_QG#w1JGyqz!4=W=M{^kUby_I!lk(`X6Ku48!VqkY1R%Fd9@RgT}x? z^SdBBKp0m4gX&jMy$BLR#-P3+s7^!n7qM)ReW3m{$Xw(x2W0b+*`WFiRM&yVB4F(R z(7Jz6I{+j`sO|^JgW?)A{*PY&gTfQEt`FoE(40RAgVwsi><8Hm3V(9_3JVjEpJCxm zE)ClI0dp6KM(&$~_{bP^-XX}{F#B=Qpmc%HJ)n6Qn7N>F1xoV#X#an-&Y&dyjOrat zKa`{aSbrTZd1H>myx&2@v?7U=E(hc~`^ehHibgd8p)|H9&e92%sbnD!FLe<1%58$Td( zak&SSra|U`FlgTaXdef;c@UJwC|Ual(mT5TZ?p~|H~o$38`)_GG?ol1$3Pg=mjRV+ zAdFl_6UzpbnV|V;kXfK{QII*rmbV}~Kx%Q7x!A=0Y;D1F*PwB8kUYo?bPO^R)K3Mu z4WtHyL3JLet_RKM!^{A=nGlA}HG|p;pm|_)^_2Agk=+e)E699M{R|q52dz0kw+o#Q zYI}gj13>K(ke@+%3AF=2YCv-t=w^Z95LEwz#%@62ge(t=SCHF4b|AZ%TsA0fKyg9| z&ItmL za{Uh~)4=6=LBW4QWh6FvP`w4JJ78rmsJ{g&N3p5JCI)IRkWvr8_RE9Tc7yD~r5DuS z2bm43w?X3_pgtSSjik`9Iq>}OaPWD)=z2l@P;mH>(Er624j?g*dqMRq$WNg53aG7u zZXY&2X#NG{Pte>2$St6;d(apFwzdGM{s)%u^0fiSqgMZ!2SsLms$9ssRD2iXI{pf&*LtUeG1 zti>iKu*l|s=0iYj1N3nRP(K&c zmIAp2WFCm71cS|>!dZYIbCBJSiw&B$0Hsl)+zh?{0Tj>JFmk&oz`=p+HGre_|7aOb zX&FAMe>4q|n+8B-7p%Ml^=Ux;K2Uu@R2hlZ&jppOp!x=89%!B%Y#y3ATxP@SI&9@F zHZf4$4zr8aG-&M~s7?gg1G~EiwjKZ^2ErgU)U5wO;RLGNKr|?9L16$I-v_mAkk{jZ z?8b#b=LUf01wegYP~DFlx1g~Zn4ggKgU0+pV?oGbpmheIF$Itwkb9_s;eIPB0*|MF z{6{WEcQ3NrVQkR3)TFd;VPTHVO`vuV%v{h~5pvf6jMo37WjDEH_o%+nv_okcK(0sf zBO<_O|B_p_gX#uQpAuFsg4U7Kvi=9T7iJeVXiz^G)Tal{rGv&okj)46ypt&TF zJ)k-q6c^;=MUY<58a_(!==#6WdVrj?H>zhe-FR7B!`Dug#>P@q|AWd)P#+Oghl0vQ z&^$S)z9Ocq1*svm{|~CaK=x3ALH%0LI0C4y2hDeb=C_gE0W%w97pQ&$oi_){Hy}1> zUI8W#qUllpgTe{ahX=JqKyCohp!y87P7pLc4{`^!F(_<6c7ehLY(J6XImD<1xgC^l zK;~0|L1RsX{0(X&fco?xJBe`{$iMj91e#xg*$HY3fYJr2c(nc>ErUr-Go$K9(+oAz z0H}`(tE)lf7^(er^fDAwj)T^X!{&|C0t5ep%3Dx}&7iRiP#+s+9%xS-NFAuJo#^8O96t;g3JfiVIaFe z7}UlBxebIt?u>MIhqviq?kAT9t!V(63$h1fC&+GUVz8Mc#yiM8=ol0Rg!~xq%li-8QwJIo1=XWO*Z=wX;PM$(z7nEAYuZ6>2hF{L=EXsMc@Uoz3|h+v8W#rn z8Pwkc)eRsFayP7f0WuHNHUhZ^v<@HSFAy8l=L5;XFsLmBGJ_QVg6t(1gWL(iApIa3 z6#gK0fiNg8LHiX!^$W~>QazhlwjoXcx?UyrAtuyBGxY;cY)F`E;oVF46Mxos>ea&X{45^Abp@Z zoDw`*|Bvi)oYXWos(v)RfYLymw>Qe!@1XNzL1h}Tkl+618fJg9C4)q8~610Z!Ey`VZ1*ipJhDHK*`PfTp!NTx`Uw_p*xUtLGYYch}@p%v*dAUjAIj{?ObD2zbuA#CmfwOK&*KFB^$`vSC< zgp|BFTK|uh<)oySQMIG#g<5F##YYa5(ACngWL}q&jzW%WiF}Wp!y%A2V^z~gXTs+=7akGpmr0;ov=C+BoD(N zb)fnJRBwRv4+RWzFKDg6lFU;>CHa#)OUQifQfb%Tr0bmjt8-G=@(J9v%N5trMtKCybgia?%oLFFUMU1ks@VbfnbP*ve2){SVrM z4l)mf3!rBT5?ddF>Q!9jEH-h_o^Fsmp!07)^4Q!&ju@>x%Bs2&8l8DusHgX({nKR|Qlpn3{h{SWdx zs2(N8j!`xF823zq!VVOVlwi=j1}M(3VbFd^P+N!8um|bEFW4?3=SD_? zT2R>Hs%J?N2i=PRiVt)Q+9L?EgVeADwJAVxj?E3AGz(jY3R;gs${fIG{XbfsgUYT^ zJem&Zod!T<6|8&&tz80*je^QDQp-kU^`JTuG)E3I7c@T)5<^ylj}5XPTN#T>478^m zWEW^208~DM`tA74Cq)iaPk_P&WPW9Q{C}7~Ky^FFF7$QtAa$U-bwF#vKx#;_Yg8>{ zEC63Uiz^La6UVg=0My0>#Va}C4T@K6c7en|XA6SjAJh&2oqJ7eULLLgN6UR;)5@s2 z(X>L%GytpHK;;(bE?dxgcXG={Sa}Mn7eQm?ATwbYR40SXC8kaUsRNa##9~mt9AppZ z%mI+yp!x&m7D{Q5TR`CgG9S7A2bl}9s~|EGWBos9OaRnQAjYpCb4D?w-bW4x&=?f4 z@sCR#dKv`9Aqa!orXcgli64AzQ_$VnAoD@zDS*z0BsQOp*8ihrI;au+1S+3F`bl*&F7+U@V0Rf*B_zQ6{~+}s|A6jG1lf&@LHoZ(>wnBT9TaB7Vo~+(6?+q@)2{YC-4m zA;%4f4Vtq7#UscblEaxpfZ}6G8be&NG-7#v}Xb2evo~jwOybw07~4C ztQX`K*cwTU{(n)?e~=i+Ze$EP8vqmr$mWc)5%oKvuz;lzP#>MxG=Q!S6#gJF(4J7_ zxB;<2Yx6*IgxrBk9@M@C>Bojad;dUofZB{8dx*)aqxJu2nNCbP8C5fyPNQpt2jJ9v245gX&n2Jm_9KkR2clI-?&X2XhalG$<@!{s7Nml$3ziNPy}mP#ptW zO9rwR8H2(R%p6uOg4WN0%0*EB zo1AhHqz6>)g2ul=^R6KCU}l5FKy@OhZU?Euhe2vUYH^jZAUTj4kX;}(pz#Jz=r{)G z3}C9)|BjB}G97vTA67qs)-}TX2%|yu3)l_N^8@htbyN=b*Z?SwLGep22G#u_y`cGi zSlqy9O3%55nGG@@8H3seust=A?(U=Y|LC4>qS62{<@KnV(R!VlX#iA5!^%St4Z717 zR=1K{FM-NMP`L*(4^}6G*r54PkQ}IdBxE+BavxN;g6e#bS)j5Pq~6cY4qQir<{3ct z5VC_@3+sUO9->v?=(1Bz=<9FvMc zZ9~wyP>?>*oDh2az}BPSvm2ir$b695*f8j9XpnuNc_3o)>uCRfv|J}9os6m(O()b$ z1IYbzPRH$rFKBKTG=_o8d{V_hW`ovpgZu(o>kq5{LFRzuKy?gA4jof_9U{oSk%mF> z3yMon9FvMc^)qN+C@4LG*swMnES^ATMuX#$%rP2J`wo|zK=VW(d;IO~{}ZzYV6^@p zE!U}8u8*2Enx2SB1E4W^P&oy|u=<~vIeJ`m5vaTd&Go~~M5aMw<)Ho?F1^U&pmG~m z`3e#TtuFx8y&yIS!`d96J{PE7ro<1(?f}&t!A?%#u?6J%A5=Gi>;c`EgzQHc8{}7z zA3*Am%^PKtHVyy^V^I8(ia~8iSR8=#Ci(h;;}8}%CZ@a|RWq7SsF?;pbtR~rf??3OC8#VTx9$Yhb)fnm~`kkI>0JPs9R1U&0Xsi-kKa)8o3MxlI zIzJ-fKd8I}sUw6z=77}V!l3#eboU-i9@KV$*#lY|02-eqWCt<*#R;e9fRzIwHaePJqecmqy7KUa-W{%{-|A}=?#O5?>nu=HqnO{%wnO_K4AAl>kE(_pfwFJ{~^<`xdKoDfZAio@dILm z<^(|POmfGHK>9#+J_W;nDhkv^>U_K1St6(+4fm0Bm17sGI^} z(Aqgr{YFXO88rUikeUkaFN4fP#-M&Qs4NH7n|SLqBIC@02G#_V9>Y>XdVlu z2ecLtJ&r(YQbBPDGN0V=1*LbG9mq6je*wro&|W~$xEj9vJ6ivbmhbq|$Ee(B`k+M` z0PRx;l~FJZum36O{}&bg$F(L7RL+6QWl-HrsJsRB%aF@cbT+I!2hkuo(0l;QAE5aM zP``|j9R%eI3jTxY2G}?WtWJmN1JxZM45~+9cEjkLurQ+MI$-9F(%9zTq(x9@Mr2r4MXw0<}*;_JGp-X#GE0e$%4-9yN0`T~U$- zV0-34NIl7LXaL%eF>U(MZQ-MR0hH@s2>LE zmx0vc!=QEqtXu`D2e}Kz2hpH*1jtO#9!3x!)*b+ff#zI6>Otni>JJc`91QXgY@7sr z{U4~E1PUwUJCs27gYanmkG(!8Ck{Yyh@2ik@l7hmRsTo0x`Nl5fb1a0Z6H0M^oh+q zuy!M8oh^FaL*|dx|D$Cya(WnLkERD&rvXsE2fh9W?V$(No1i)kRIZVOLG>jF!`458 z>Oy1;?n4(BgU`^%XFhUy4=P_l?m{kOVdt!a%m#@g&pCkB1%TWD!jzQjAoqd#hM+lI zkUiMye~=xp_5nx@43F0T)UE$PX%ZCA~4m9Qfs`p`Hpz#6F90EDzI!q5JEI{=;%uLX_LXa4;+d=LG z)gdr7FnYB9r*8cZ3Ug3ABc}mU*tD$wL1_e=TM8l~!0TW^XAOb&1Ay`bHauGYkCyM) z(#5FQXu6wnN(D5&lO^=C*e1CiB(>VHuE zi(Jma*q}NZRCj|hp1Kj_4p^BADxX0Z#s|@$`WZIv4%%x45(AC1!tBWk2_bp?J!mZ# z$Xt;BLF);9ZEeB*H;|d(E-wE;{sO5%_AAJpv0h$qbs)7M44O*;xd~J^Agdo`lV10O z!VFaZgW?4gruZ-@{y-RA4QxF=C~lB(s=q&Y{vTuqB^W(@!t95&Q9)xwxbpI7{XbgH z<4PN&;-hJUR%rlMf5OT`Q2hy7w+t$0DJcs<^<-UgGDe*Uvj;R*k6w==+lOA(gUVJA zhLx!>8dRo&%mkgW4iW>c`vdVo7&Mmw5(C)-tAjx_$Zs$VYJ`o9H)F%barGV5RV^F^mWDohlLv`O@QJH6sEW^DBXe1g8;=N zx|-~e5UlADw5Jmk_h9q!v`1m?z(s@Ff#`OE_@FbYK|Q%i`2@q@G47%wg6s2em4hI0P(9g{mWH*w1=#}{R|l1sAhp;qs4PY z%Yf<@kh?(okuj+L2lXLAb|Pa?TLk28kom~!N7fGNS=~-0i_F2I}_PX7#nm(HOMYdx&pNmvE}8_`hT>H$CfTe#YWQwEz>}# ziwi~_4XT?#Wh^D-AxJ;yoF7oR1}gi|aan9Ecntuk+{9%MsNRH?p&;`>Wi*Trqe1)p zL1u&MT98<@yE}@1Kz%;Yx-ZZ@Fra=RsH_K_6AU`{6%?+ZzCNgKkH<284>A{oLHou) zX5(@vsQw4dHGtG2WAHpjem>Zrxb%*Slin6UP8XnfLB^o_{6OwIgp!ynAFN4fP$FO?_z~v^6F;|copt2i;LGA%z5E~i8#_9cR zZNYQ>pn4tME^_&xxqr|eLr}jTD04QyN z(kCdskufNJfcBh#?)^a)2ZcXuod_sSkTLj^$t5F4~+0hY%=`$Vwi z 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

        JCsCj$%mt4+;-(|2!bzKe+C< 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�O!x9?+RPSmq*NYCvTqhz+X0L1iVV>;r< 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�#I27s^5|A1dR`X#6jkOFvu*> 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

        wnOB>B#d7O#%!IpzRT0$1yN4K;>5v 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 z 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

        cHCe+9a}uQoIk+kHLf{@?w7 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 zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w zjfMv_AfVJ}ct8UJN{xmGG$5eVXm~&a0!odB2Q(m{)M$7>0|H8oh6gktpwwu1Km!6w ijfMv_AfVJ}ct8UJN{xmGG$5eVa0w4)xPO>c2(<{eh_r~d zh_#5fNVG_{NVQ0}$h63|$hF9~D6}ZHD77fJsI;iIsI{oKXtZdyXtij!=(Omz=(Xs# z7_=C+7_}I;n6#L-n6;R#I(e=#I?k?B(x;9B()^B zq_m{Aq_w2CWVB?qWVK|s`ty|wg`7bB0=>E52)hcBEe+4xDDgt~= z^@^wlf(*F-|2+tTECgAwUBImRI5Wt#UCjIr3=Iqo3=UAYGEASqQzcQqqFaH%)YMcI z?C$^n|8ve++5PX&pFc4E$;l_X6;>@$K<0C-(%?YmH?8VwLgo{t9_-HlobO>4Ae`FG zJbgkh6W?@)*cOR;_F@GFQBl#UF!NWh$!Pxf@83TdAEbTNDvebrd<_m%{;EZ2d?M5% zyANamhWqOO{{Qp;$Nw+z*oQfRHHd*hbm~;NlQrk8=>GHT_ivay$jOToRxLv2YjCX6 zK<0Nft?EMNV^Ob&sR80U%!6+fbl_2 zCMs5;8gQsr#7s6wP6k;(ypwtMqB>b~&dJH~adB}_7yJh~0Tgd2e9{w!B3jB>vMfXs+yEwwFIWmWuO$j7PWD=Ia&kyWSQv6b z7?^}HeSyI8-b3=bK;pgT2DfRmA#8EO;QsjJ9o z5kL(9IhCl21=*<}4aiQd|HAN%;g`Tam{Xx<|39R_zz`aG6<&CGEm@YdaN%Ne@Llht6zYT!`O=z7_Ls8isbl{ljB1|P|5_VB@%6D z4#Qg8AUPg2k#sUocL13||@&CvFpGbWUuu1>_|9?3dRCutW6do&9t%4Ls(6FLH$}vPq ziln8SDo|nKz~I180893e!h~~<0tb3wf;C#9eg%aaC|aRhaE_)xy(HKGaKc0ic#s8% zfUjcaKfv&b;R|Nr(ui5OV2e_yTR~0-MJbdEws{r#>LE@CCrTuzgDgOHdi{5X-wb~l z{=z~XW_h9jdSR0qwQ%9$#V~o0W3k3CQ~^jHR9!&1V9#Jv?|`g;7!9E2H3-8jK=I69 zgZ~BpCt&1WRxbvW!Uxp2{*2bRrXZ1kJqJo7D4qc&5@gR|wE!t*Kb#Rb-ciR2rQ zdSu^#T3#&m-~a!?@DAr31qM}BRbFJ%(F-SRDF<0SQ3(gxJ49(f@(xHn!aG^a{0iWr zY6C3WKnkm~cO5y_u3fnr*=e9?Mdo8o22cf{fTlpbCOGP_T7cvgkOjzIslUMRnc3(2wo$)6wxA=0iFbNxex zZw!AhGiFCKs5V2C|Dew5Z?y8C8VRl*>Upr|Kq(HHPYnw|)i?-)LKkE{EK>hN((!hA zv+5n-0cua?`iB3H{$sB_5;;^^c~Lr>pag^LRw^XOdeR56p)LSg}KtV&4gOGw|)hZ1}q)v||bG^bpP};y8)6trvz+kG1NEt6DcXXq-D?q6Z>KJe; zCnHtY6YNh@XaT1ANWrm4foatuM4_R>%$LBhf#DM@Y5bi&k*7+$9@PJ1WM)Ds9;s36 zBl`?bCd&keEhteFseyR)NI?NI9}yB-%=OJBEvy~cxEFsK?Ul8{}=v$#t0rzhg+1uP$(7JNA=JK5~NrnBi~_W z3ut(ON)^KST4+_*f270%(tt=j3e5Eeuq^cL|Ih!R8BZ7=YRmtZlNA_P(MCD(pdNj{ue;3EZN)iYSt_=B()c z^#ip?qDB@$2`x~Phk6d2IH_R)vUym{CuLe%5>!NO`2P^g{1WFJ2M$qFRrqWTXgCL{ zQv>!56>pysk0_0;vnZ*U_EMH)F$beC1EtEhnvltkdnVC@9&sY*Q z$rTYwE~G+LN@`6?$uK<^s0{lp@DHg&oL2$YECxo`lC7ep{Brzz}*Bv4qcS348IvRV!8? zdxjbr3#FhVBdeq3RFaoDI-(gsNzVPrRPXS=;XkOy32UMtf=hv6swiS+U2D$C$su9k z;RyMY-QZ*n6#$hZpkxl^g7Xa#P1k|$Z#t2&R0k<>f_#ifoIjcBKmY&!|L6Z-Sn3f5 z231v7_-xwC$ty8Ny}&6S8h)VQ1f_f^7aW{KWW{>IwII|)GA$rrz7yH2ios1nkdG0; z`HHDtfWd(wfnfnGal&feM(`{+q8kfZg@r!PK#i=4n%C*yjSWQ0>m(Nzc*dGuG1Y%! z_`&eE03)qtEdi|wLd;Gqb0ZNO_?ELyiwXmVq$XLeNw{QfPxh z2oc(6KxHy$RvTI*fBXLzr18IN5U7)mSOf`5*(+C5eJR_b|No((4RR_S$_UIN0%|`v zWn(E+Fg1X~2huMfN|m%JCFa{cnf=8?Y>k1f_iBIX3XJ zNT@qN6e#d;WLuCl*l)y?JFu`IS_9a0XjUV}0s`vkFcgRs8=!IrH8v2_zq>&BqJaTa zqe7KH^2PuEIcF6(LPM{@r++!89C5^${w18r3FdK>xBz8ZfP?tqWp_Fi>F$sS%y(xMhF zLhZJLG9I$;$SFBcvIjNFJ`x=?&^sMnIVB=qb9?x`R- z9<#6@TvniD9}UuXzEWDa40Lg-ge8cOiaVtRT1<%Onh6?KBd+!Vr9Sl9hYF?BK$kZ4 zWQ+qLrBG1m1m%LOGm;B@WsL3aT#Jy4KTvxJ5no-9?DZM5c0zBwc`ZrBsGUG&Av>0w z(h((lVQE~Uw*Ek61=L1R`k{jQfi8Xt%|B_aLK(>d6+npSYhbFs1S=O6{%-&;3sNrz z^+!YDtK|8fDKKnZix_FaHvS4S6&kGIR7ZTd30)RMyaq^jkZS5d$p@4Y$oBzd4zd9S z8^{6ZRm+MMT@4^P5C+MEGd5DW3Ch@rh|FWEKa>C;#wh^r3;6$Ea}KBjH5F;-oPmKC zY5gp=s07;svXsQWCMY1maSw7BR6m$cg)*7&7#D1C10GUP7l8QmagZOxMv#T*K3<@u zv;ZOtNh?^3Ii#os6^n?djbW-kWbpqxJaWH7jRGxe44ujg-|72$53AQo^c@0J=pDm? z795#WC@@Jckikg{njEo)9W+EhVGjyBC>QErGDiNP27t|5rLhWSF9;zEw3x88caRJO z=X0dU1{FMr$aY|=hwnXS*kJG%w7&=3Pz?=541>%`6qu^Y4DSbeE$L|f0h`}}1{2s8 zBwInYK)K*x!Cihr3uNLoK+-hT)Po`$6!7HxfHDVx>?aUJa0^go$hB6XMm$l)4pKq@ zsb^qd*e+~VeFQv6smD}bAOP>S82tMJjzFy?3ZOmnNJ|ABIaHYui@`yIGHcL=kI@Sx zV#|1VSP-iLjQEfv}n~L)B$sjRT^9%!$271Lo5zLDdSgkHK7%B zWORG^k&*|f+(DERGEDUe0>2NyD}~1(cYzPI0xjiGg>N3>oO4Kl6KSge$m!H6!y$14 zj+}uglVOt?5C>4Dnu7!(u^|NYKjDEKn}pLU=d;!&CAIrCx>1SMM+2+T&R^w z*P=yA$PNTm8pwPs#S*CTjM()~lm?`P#G$of0VE-T&ei+CSpOK7kQlxc{Qvd;|9^J0 z{vv1{qbV<9k+Ij3V_E3qG(@=q>Mu~RA=E=t5)OZYwV-N%L@c`cRjXF*0xO2Lmxw6d zLE#8#3ln1jm1;n+8$tHLJOEEgkQxds4=w{&Ag!?hrKH%flqafEp18&u- zRqLQ!a7?~hwH|sZE2JD;y$U>#2eu!q0HZ=8d=w|8Etf7xDGGHlMq21Vuki@fkgHaq zbi-D?`h`-muiNzxB}5jjTD1t=9smUsC<o>cVMLAEz&PFfQ59dk zz|yyf1j!)K`s@GyC63@Gnl3}&QgChp5BP*`Wr7thpgqu`y2w30RxjkXKBy;%Uh(4c zEI2`cLIYOMz+8_@15AF^di26>7fQ9Fu}VV=q!xrh=C4|XrheBhP~ix+ADkdp{ac3; zU#nKFqQmJk5c|OnAmn585L$#ZrvNGpOG86TLB0iH5T8&*yz14vbtnn)_3vG;L7G7r z6lA;ptwTxCq}NA?(i~(Sw(14tggkT$x)ycdnF04>tQT!HJG&BwBf9Nhi^gpteoSYmNirP4ac?2AJ zV4q>HS;01f)VAnwl!&R%+ zp;(Asal(8I(gW5H_AuE0kn$Zp>ac47X(wGhC^3hIB5HaF|9U7&;$5YIXc~ZBh?d`f z?b?UpNoVeFO0T=9#9j z#136ph&a|off2FI9;8U%+Dmv(o1y3$*rQrYK*jo2ZdlLz<>W+xtGtMuptarCwXhq_d{|2iWIs6T;SM4yr4#HS1hyaS01dS9;4T7P{Z*@8!D@D}{#~zr zqZIq=cI`t6f!FKaqgE5ILFys)gAG{s3rouf8s?xVBDJC;q@GD@mBxR0Bn!Y%fYb^H zhmWydfZ-r0mw@rFgW%a`tvR6Ffi&4Mg@Hkp6ET_qst2mj>H+i`nUF(a>cL?} zi;#d>0169i=4-6d05zh)_JgBp6{J}XQV-$3dW91A8fd%m*8O^ol6zLY`h}8PR_#J9 zCDH2~3OUfDFh$ z4P5vBHEQlaZ$#}wZA7hG|9TzN{}3O8a}U&spg8-F$UNW>LUtfXo(eUqAxfNaVJy7q z!qMuQUa(N)U%dcgbC5bIBH;6Va{aPtxx zuH*$I+Dr;GEracc7zl0zL9Bo{2(_yD^=cPNW?HohwNau{X%JE?OV4CrE(_JDBHL0 z*FKp2;1GEC`afDL4myAb&7J?&{Rj5~KyHBe2(^3y)eImx5C+L>5FS@?MA;;_Vu2Rw zC; z-+}qsv=Nk`c?nk;Qs-nH5MRufH3F`15s68_@4Z%H76&Bq18TQxE;mmAitsn zCb-%J*$xdnN-bD{7MSq18r1w%t6tTkw6QhNM!D9#dXJj^R-tB?eP|hmbPv>{wz($PNPM7xY<{dJ@}euU27edqJ!OrC-dp+IlQ)HH7;5b^p;CcmL5W_z!B_ zAvCN*s-8d=f=9I=(qJD$DtL$hNS;7_?Fzc}2xYn10%ET0!P>S1WvEy63JePvzA3;@ z{D3T)S4H8g7rd4%%UZZ%1xoUwM%x1=LlN*i$nPj^2`uVSax8jl4Sn)x)v8tX zs7?9TsLi=mulAwTIKS7U7KdalC4odXIQBVK)sub<4OBna0Q4vzWwHsB+*Z}&859FG z-&U=9g%anx(3@w3n{y~d*1C7_`~~(vJyL!F3n1k$2p^HZAbdprg77J8{)Kj9w4)X^ zpv>44l|zv-7)U*$#=2K;zyLq0d%=Imn!t=|)aD;(CYF~G(RTvH47BwGj%*Mg!VgQMa84L^XFO~R(HlqO@KnB|nj;ZzQUZG^Be`vLl7Ph7U*#FSR5r%_^xlavZ zKiC1-+lLSv2!#;1Ho`Wh2GI^RA2Fl`R}Zxx+WbRZee&uR{xLPun|uG!nuq`2!|VsU z@b@m%=H9+_m>QrS!m6H(=3yeJ0}VD46vSQF2JOJIB*ZaNW&?HZ5Si^({a1m%3;tss zaRusMO+`A87krZy)LIY)avHw22uPlowhl^Q6VkA1)q0eo6Q|x8DX!Xw)>^|l6bEuY zB>7=92j3xTACM1sA=OqOK6-1g{x!koAew^+sz+3BAPWgJA5**0n?&HTK8OdwIhw3A zft2AuX$XK=SBolUCKgB5^biv$=>e!0`)_J-}%K zDSJTpXsy3`lADVpT7cAj13LgY#7<5=S>Fw+fuJD@QGnKp!8%$9)c}eDY^fS54K@#) zNRcuiNIiHQ9=uq1yOde=US?2F?m#{KW{QOWkHACpIcHIunV=)2R5=m*5kS^sHZ#d> zB|;~(C~0JY9E29Y1j84u9#j-S3?SDBkUD@|4}k0k#~9p2uwff)qk_;V24yPJ2L)fD zbg7`NM6mr}2M`_=L?1=`hj&nrxK<*>ey{_G(*OwqP?V9X9&0lcYCqTkpjrxIJTy+x zMv}>mW00932ZN&+DN}+90Yt6XP@f3Pp&;7fbLiBH1|MJ z0SYFBiy+ZJF9(6_2d4u{eY^^35d%1@qK`*nAC3gu59#rtX;?*S0~AC3Ym_OHbx0K^ zD8wP{Pl)~C5FpfIg=he$LF%c8+7C96umvQwaJv_1tw7nogDr|tF2f@#(IMq!ka|R3 zj;j|yTzA93AaD(|!UJ?WeQ0Q?=@Lk|{Red~kyoI;oV-v%7hFF>6o3xZhY#9AF|HP=}BAqs?7owszs8pCJ8M22;U~1rZ>5P;V1vKR5(v z-rB`%9mDO1H~_8vO|pX!nH_8%xFQ947uHrn8{^Yjk+guEeKcSrK|zQ$RU_qgP&Py4 zcAt6!h64=WK(#gqPXrtD|Nm;V>#aZwd^wTUK!T_1(MM-Mi3h45+LWR>umAW3I6^N?`gy-bD8$HuWf3ffx;>T0lVk0NgGIbrB?l2HjXPQOi0ZUI6)E z5RN4yYIl$W3AD`XyU|Ct31}cgJ)$)LauDj^cKyk2^adMIYaJjl04_X;$~8!h0g!r7 zRtMq#+a=Aa_koK7D**xU3GEj^;voDFcDG?72PY%y&0?VT1k?p!Ctz)VKox-eOo4jH zWfnBFfPe>}qYM=IfPe*%K?9uTg9=Dc5TXxiYphxXpA`bt;>fLb5Fh_OpO@X}YjQER z`9POIfb0kRfY6dwq&_-WJ)uEuA{*6U`ymD*GB$*dn6-lNDQ&f5H6LO>bu2&>1Yq+Z zjbTVO0Y&jDv>{Y*nn2!%N|jsyEeSyTIR5|N?~mvfSk-@F_`&d70KQ5J;V!)(NAXoku~t9ESxc6XBR4 zRFB~zR1GUSQ1>o&HK8owS+z(3bzPVScv(N#(+~%t?gqnX$JZ0s{IqY~E|f*>?_a+| z8&Us_GR?Jb-9EI18t?I{uP0RlmDSgG|K3HJ4@h;;zjesDsQzR(@=z=&&K4l6Mj`2PsUS`$;G zD;cm|rv_?hK&*yjX>9F(WO*#=@i)&`fliZzng9wdGAw}Cp&NSdazjy6J$-?#f*1bp4aI*XT z>s@Gh7+xfR6X-ug76$tN+FZlcwMixgI%l>21l0{HTYmy=b47!D*vz{&&;*Qh6s9Lx+1h%!N^ zUVx#1;WMa*0K&hZ_lBsV-5UbhtH6nL5F99OC>`1cH;7>SdqDn^xX6W4lkOx-n`h}9e*S|;P zAMjw{Yt+HOUHg95qt4B}rpB~7B#1x`B0SbsPuc2D!WIxPAGG`p;$BFip>(+^sSc_q zG`xsjk1DKKL})_+N*Y2=q~HR9;Q->y(Qa4Kppfv;P*@4^?ieH3a6|#2RsTBx$Mz)# z22-T%OQ0?YbR_^dJVDVN+x=au zQ2PmsR-yG1P|idEwFy=s&ELK3-i3BJ+3S7lP~;bNp|(-iAum@01tIlE)R4=llild% z*AK{Y0B{lpmk9M3E~2l4>Q8o)x*==DA_bK72KW*wXjRTCEiEsohyR0$h=7=I_?%Lz zc$8}tX!#HBB0>thU*s#pA5aSdgkffRfli~iida$GwI(%c;VRS(S!A?tFk1O2MFe_z zNev5N9s;F*Eav0y*I?0r;R6B|pr}XgRe~A;q1Wrtj;_JejR5&z)hhI%0}6Wu^)wl) zgM192DAk}ROA1QW(AJWt5e}K8(MQZx#w_}Xev z2ch*yDDUFHOMY;30`0hQEy#I7U^jvs(6y?bKo4XWYL5e>M}ag52r>}8!B4Pxja=P> z3?QfhsrsgddeDL+_&6!ZK$3kxnS<)P>Fs0GRTcG^oit1bA=)3H5JFuhaT4392=F7E zUQT8WVrXzE0H-+c8Q`p5U;ZN67w^oWgA_0YsZp*`=tWNGRa0JA38Fbiy?Wt_RnS9v zr(R& z2O~&H3L(%$2tf^q5(FIN_$u0$lU<`27#bX4*%Z`fhzUdViqYE`7U%++bDRzT|KG2V zFd#Jwd>b@$eZ}|xhay38@J0xy0BEY@?|;Na#?vS8R7uo>_A4@TB34?03Iya4SP-9v zZT>;Bz6$x+VvvtDK&Ll?!VfwV3hRY{gh2A>osdFg zesF5V+UN&)7a9UIauC>lumfmh0oV(m5XNpk#D1^?=p6;%P7Bn2umh0C$+VWR7q41{ zI?7pqJjw|hAPwDM4N}VgiK%HG?R_%A-n{E^;#4dR86PCZ-E7E{{H_Db>wu&^;#C8?QYdVT08|Q z9$;sZKqrHCk$AEk_9ieSDnJ$x-2w)+T1nCX?L-i50Rik0=%5OvU}C4SMUjY zQ2l=(0Wo*FENO`&xcvaNA7hvTb0)+!DDp@fgngZIBd!2qG-T^25bQ4 z%m>C;a6cB%rLI-$q_9%0`0;1$F_;(QOaOgR7a3^ujao|9{c;@8f6QEKPsgyn0y=pb; zEfU0bUcjXX$VtR%0C|xZ_2``ujFJN~!vVG*oNTGqxqzk;;u^LP`@s$%P6NpQkhTX^ z)I;qDJ76F>BQX2H4j6zas7Kq5M_}^`=1Dh@_<+Xw|8?u(>##tHbUjjM1jJv|fT#{3 z>%i*~QzV>oT!SJ)5aXTbB?USk)HqqS>XjAD1)!3H73p#{kcHsJ3seDm!2sqvLnT2J zNW&_$iNmf2ESI?;l_a1R1E?*sof)yfG~xdj@B&i>2FQ7qAhSUjG*yefz;r#H))~k> z$Q}Ukad$zWT?BAZ2eJ(sCAc*}auGiDkZBRb9huPPB)q-^Ip`Iv#Q{pmAOXVdQ$+np zP4yuA!MO<1Vul0(H7x*{2r>_c`C$9O4j2Mm1R6vE#Q%^)g(HYSAxK0BVVP?~8(BkM z-38l+4znM;p~RseCJbyF`0`#Hi^ZV|AoC`Oi=08_h^Q(rd=L~gHim^E5U967E|HHCMzy4GYgBaQ=rxZ>A7 z)Y}u#OA}&tionAal=g|y0CONV^_cycUGSgg zpV;*c+-mv%|BwQx-GUf7;hf^Y!O4ucc?mRX^nX40vT%?K!P$V^6a2xs8{{OM8&{z1 z7%crG_-Vl){i{%pra0NX3bdXd>^w+Oh@-avwjb;R^bXRhRj*LavRJhW^&HAotB{YO zJkgEX;X2W+fmUa|N8_(r1sb@A*bjEVf3$-$-@it^s1T{30jozUD#3iRx-U@s!3N+6 zB5)vrf|x7|z`Aiq0nC1|1889Z)P7v%*Q3NSsU0w+ffKL=>(?Vj0njrtIv=uxv>t5@ zDQIgv)XC^23p)ShWY?h3P((HbwOhbTNTK@CEkx&oqI6ZV)++euFGzsY0nAlRs0TcN z7gi#bG_d~BLgxA(2H?dcpgA27hPv|q^CAX@siLCr(H1Yz3iv;WxgC(J@O4rk@>t3{ zs0Cno4USbPDQy+T;a3Y#55s!(8fAEg(oPNN5=A5nFiQ*6(gU;u8Sxd+?;bjyW;HOqdPAr*Q*8M4 z^3h8dNUsR7nhaFBu;RHF2i*Z62ZE0WgPMObee%g}a$5-?Ge8D*t?EL`MbKS6NTm&^ zk+5CBuVOlLy}|$g3=AP5At7J?{{Rnafyx{Z2AKuICnq~{nDX+%`%l=;CnvSLgJ?s* zM`Pe;--9cNSBR^s!F)=awy##Lg103>0R-~B5^&J||GVHT&d{?pIv->n^7Xf%VgfXS4E6v2|DaJ?hRtu$T`m2cSjc|6RLKR^$9%_Y0N38q`06Bnwao zq2Gl2A1wslqipdz(T(MFM~L~LqzN(*dAkOPk6zfXKwG}|3eCd*yHGDS*|!d{2_0k} zt`Gv*k1L44WhcnbAOmRB9|PMDb^whm0J$HR`TyWW6Uc{%CM2YXh+I&hXKZvnsQZI5 z@m$T~_2oO#u3cQ4b|L=%4<08DMH)Z_4J0o{T3?TDAt64~U8a}YXhJk@s zbt?Rd4$#86|NsA?T#m<~wTJ`R(pTvBnM3L{uo94?(VO0@RX9q}hZ6dERft89(85M*)hhS_RiK96s#U9)z~1@)|34%|)>pvz5P1e& z7#|}4j|;&+IXN`+>jxPB{KO$zT6+vLgo* zGbenhE@-$IIjli8YjriDB;Q}J5JT=D`TvNXE;w@0>)usp)8^1tKgjox5(hRb4H5wv zh+MOP_(&SS7ND#D{~Ixq2PqH`<7AKwu7x<%aljTig}FZDw^CVthb zf3U6=q^x;Ic&Z6rSAYWLKT^*Iy=(zxWrl_Xc(MR_@CVYQK!N}RLpVI^Pj5TW+*E&Z zG6MrMFEsmuyU;7TSFJ!j)f=O;gMQF6frZJdG*+QxW>C8mniL^{u!;$Fq0}k{#8NMi zr?of`7tVnASR1xb6G8Gw7JxG|ZuQV69`PC=Ep7Df-72(|UaQdWPC&U2 zLL+4iP>^adpq_+^o+ef)AmSLTAHDN}d7A)eXwDWKYak1ViUOqE4pI+VZcTEtCQyQ6MBHpkR8#f#x0cFDEw& zFrggQa-zFy)hbY*4Wt=t8**0#|p&Yl3-n8OarNw}(9;s0W$*E+u z0-+{ia}bgRU=QFnADUB%*8s_>gw?NrpXG&~5mES{oB~>9notk{@2!ExAHnq|)Q9Nx zE_?A4&;RxR<)PC5UrtUoM6Rb%EPzJQs#S=x5S)=hLt{buLH2`#2z_-J#x3PY27rQG zV-@*Fu!HnN(-5Rf3lhK@q)0gvqydyO7cwh=RK}IiTyCAsIF2 ztRu(Tt!Nv1Q7(BpF%VnTxnqayx|+P?b#A8l#W|JTqVL`b?oT3u`j4p#KJg)XFC z#_BDuL8$F7M~;Aqm{3qVLahFMB-}s$|Igpg%n0K$-0x(9vq6lG4iJgJJN`2`A$SZ7 z|L2+@a~V2PQMe2<{xf`Ga6pKG(#3ynq$3tU4w9&UIaz^$*Ay{q!#U?<_y7NYP*y9f zTBLw_D%uJT_?QCcl#FiV={L?Ppg{?SIIwlFHo~eED8n|Zx|(2v9FUS?)v5)k7HBY_ zOuwz_Y64XNU^7AKJRGq?27DDX=#+o3Bs9X2)q_$Y>XlP3yBQc@%b1`g#i~`v-9(TA zhgyItuZ7%x1=ZmUkUAV3BFmECM|y#BYDaT35q0){kW#QGK`nAo zRbKe8K4=U9xy}YVXcgLiE*$M+u%QqQXm$3hUvM)a@~G>uR$;W*VL=MXGmt(C*u9V} zgIztMq`;~Hsic6k*v+apGEX;uRK+jw2UI@%XZQt6;gIAE+EO!hD&k;vP;&l*w#Wn2 z8h|(q>eNMO%@MTAi1wjPARw3GprBc#1aE{|`@a z|6lI`pRP~^lLzJLhJ*0^KPFQ4SuWN3N_vN8qf2sR!i|^xFDlcd{k&$>A?2FU!KWCJN-BRZQ@7 z0(LNZI_zRXq(jgS2!^HxaDxqGKUf3$DlqhRHS(kY$U+PYu(zwhVSq=yEL;KD0;D_% zvH(f-*38Yln%|NH;_KVqdksOXVVy$Uh~>I_hhV?g3FX)-WWfcPL=-0Kqs z7#KQ1T&QwT_FIp{Z?|3UftKazzY2fRY!gN8Rac@c*_fnX64>?Y7ixbCsUZlGN1q!ZXaSK9(gC>&WC5|QW8_U= z2LCSn|MCC-f6!2HXlN*8EEaTk!IVY;Q&vu-X2y!{1+XFv-0V0xxgK1UfNY1>d^lPK zAQd3@Au4%m92$_?L69^6Z#4XW_mqL5s;a6AT#2di?1$y5|J-@gAI@%(pI)#~q)xy9 zRE0lcFo4N|`mf)on@_GX1Xp{!yojSXKo-1uu>#&w1o4s59JnR;??3!ti~pdB+k}Du z_z)MN9+=h~)u2$sr7rdVLA4C>p#q>(|N9r}6(bleLG0}uP>4dyCe&p}zkcmP85Be$ zL3q;?RRbbUa6}0;&OZc|@!aqKzXvA*4G!=c{*9nQ{+Gl51Ms0yu&2ODi-Fkmq4F&V)FIr}BHRTJ=Kq99wb4a1>~_=4&lm;=x?yaaEYMogrD3jKnBhzL+Y zEy_1HAC}k{{`0J#evx&;UWH%(8~!s~g^NQ6HnzaM3eqV)z5HM^U;R8!xH6Fa9j_P! zU;-fi|Nky7sC<(aRQ}z&l<l4<4bMAjc$pPWlgUe}fkfO&gh!1XyfMr1m>SQ;1dO&X+{n~{(`i|)H!!jCDH-H!m zu%%F_d%!sz-9cE@BWE;_22g8iDRaF5qUZkg|1WURpr)Ds|GkzZ3Ya3DYzB&yfB*h~ zss^wtK#>OT#e@6BFT0h{)>>oKkkAS&8Ds(|4Di)>APc^Jz4{fT7KA~)lKuM;Ev<~^ zL;=uRG>{w!!#rTmV9(&sU=M0p-BL`1i9+a^Ga)pLtOPf}&a*#cSiq3LATT}RbG1VK z>phMfQ<0LZ*OC?8|4mQn2(KXeUN)dy;bwXdy=o((o_pGI($g z6KRkJlt@)s5raCQ-1YAtd<+IQPKG*2vx4aM8#MUP)pw!ZjfJts8J6ZiMKL&hsnNKA zMkv@kbO&KGA34#15(FgC$-`@1NWA^~|LgzP{})hdY|!u~Xch-?UMwhB(O0FdKp7|i z*Cg=aO^_q87Tj=8yzE}F0`=}%q%ekK?F9=(RxnO4 zP^po?NMKoOUQP}V4~L~ra4Ce;j|H`Eqe9Rs-Tz3XSZWk&(5tL0xKBU{j1gsX<;lrN zRW77dtN&jg5A_*1`+%w>WIq0&IN7~|19kP-s�K=pl!}fQ4yLK&Xa130G{rL6k1=tthdKPpQ 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 !342-IW+dkVzYScIy+s{=_r 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

        5xJFUFj2>x)KrZIN!6-9S=q*>! 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%0D9({5>(QeC5=H-!M%7h=wys?b53zdC)FFCd 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 diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index beebacf9..a0b70f27 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -8,6 +8,7 @@ #include "Pad.h" #include "Text.h" #include "main.h" +#include "RwHelper.h" #include "Timer.h" #include "Game.h" #include "DMAudio.h" @@ -28,14 +29,31 @@ #include "Renderer.h" #include "CdStream.h" #include "Radar.h" +#include "Stats.h" +#include "Messages.h" -#define DONT_USE_SUSPICIOUS_FUNCS 1 #define TIDY_UP_PBP // ProcessButtonPresses #define MAX_VISIBLE_LIST_ROW 30 -#define SCROLLBAR_MAX_HEIGHT 263.0f // actually it's 273. but calculating it from scrollbar drawing code gives 287. i don't know +#define SCROLLBAR_MAX_HEIGHT 263.0f // not in end result + +#ifdef USE_PRECISE_MEASUREMENT_CONVERTION +#define MILES_IN_METER 0.000621371192f +#define FEET_IN_METER 3.28084f +#else +#define MILES_IN_METER 0.00059880241f +#define FEET_IN_METER 3.33f +#endif + +#define SCROLLABLE_STATS_PAGE +#ifdef SCROLLABLE_STATS_PAGE +#define isPlainTextScreen(screen) (screen == MENUPAGE_BRIEFS) +#else +#define isPlainTextScreen(screen) (screen == MENUPAGE_BRIEFS || screen == MENUPAGE_STATS) +#endif #ifdef MENU_MAP bool CMenuManager::bMenuMapActive = false; +bool CMenuManager::bMapMouseShownOnce = false; float CMenuManager::fMapSize; float CMenuManager::fMapCenterY; float CMenuManager::fMapCenterX; @@ -63,6 +81,7 @@ int8 &CMenuManager::m_PrefsSpeakers = *(int8*)0x95CD7E; int32 &CMenuManager::m_ControlMethod = *(int32*)0x8F5F7C; int8 &CMenuManager::m_PrefsDMA = *(int8*)0x5F2F74; // 1 int32 &CMenuManager::m_PrefsLanguage = *(int32*)0x941238; +uint8 CMenuManager::m_PrefsStereoMono; // *(bool*)0x95CDB5; // unused except restore settings bool &CMenuManager::m_PrefsAllowNastyGame = *(bool*)0x5F2E64; // true bool &CMenuManager::m_bStartUpFrontEndRequested = *(bool*)0x95CCF4; @@ -80,26 +99,37 @@ char *CMenuManager::m_PrefsSkinFile = (char*)0x5F2E74; //[256] "$$\"\"" int32 &CMenuManager::m_KeyPressedCode = *(int32*)0x5F2E70; // -1 -float &CMenuManager::menuXYpadding = *(float*)0x5F355C; // don't know the original name. MENUACTION_X_MARGIN, never changes -float &CMenuManager::actionTextScaleX = *(float*)0x5F2E40; -float &CMenuManager::actionTextScaleY = *(float*)0x5F2E44; +// This is PS2 option color, they forget it here and used in PrintBriefs once(but didn't use the output anyway) +#ifdef FIX_BUGS +CRGBA TEXT_COLOR = CRGBA(235, 170, 50, 255); // PC briefs text color +#else +CRGBA TEXT_COLOR = CRGBA(150, 110, 30, 255); +#endif -int32 &CMenuManager::sthWithButtons = *(int32*)0x8E2880; -int32 &CMenuManager::sthWithButtons2 = *(int32*)0x942F88; +float menuXYpadding = MENUACTION_POS_Y; // *(float*)0x5F355C; // never changes. not original name +float MENU_TEXT_SIZE_X = SMALLTEXT_X_SCALE; //*(float*)0x5F2E40; +float MENU_TEXT_SIZE_Y = SMALLTEXT_Y_SCALE; //*(float*)0x5F2E44; + +bool holdingScrollBar; // *(bool*)0x628D59; // not original name +int32 CMenuManager::m_SelectedMap; // *(int32*)0x8E2880; +int32 CMenuManager::m_SelectedGameType; // *(int32*)0x942F88; + +// Used in a hidden menu +uint8 CMenuManager::m_PrefsPlayerRed = 255; +uint8 CMenuManager::m_PrefsPlayerGreen = 128; +uint8 CMenuManager::m_PrefsPlayerBlue; // why?? CMenuManager &FrontEndMenuManager = *(CMenuManager*)0x8F59D8; // Move this somewhere else. float &CRenderer::ms_lodDistScale = *(float*)0x5F726C; // 1.2 -// Stuff not in CMenuManager: uint32 &TimeToStopPadShaking = *(uint32*)0x628CF8; char *&pEditString = *(char**)0x628D00; int32 *&pControlEdit = *(int32**)0x628D08; bool &DisplayComboButtonErrMsg = *(bool*)0x628D14; int32 &MouseButtonJustClicked = *(int32*)0x628D0C; int32 &JoyButtonJustClicked = *(int32*)0x628D10; -bool &holdingScrollBar = *(bool*)0x628D59; //int32 *pControlTemp = 0; #ifndef MASTER @@ -204,8 +234,6 @@ ScaleAndCenterX(float x) #define MENU_Y(y) StretchY(y) #endif -#define isPlainTextScreen(screen) (screen == MENUPAGE_BRIEFS || screen == MENUPAGE_STATS) - #ifdef PS2_LIKE_MENU #define ChangeScreen(screen, option, updateDelay, withReverseAlpha) \ do { \ @@ -245,14 +273,14 @@ ScaleAndCenterX(float x) #define ProcessSlider(value, increaseAction, decreaseAction, hoverStartX, hoverEndX) \ do { \ - lastBarX = DisplaySlider(SCREEN_STRETCH_FROM_RIGHT(MENUSLIDER_X + columnWidth), MENU_Y(bitAboveNextItemY), MENU_Y(smallestSliderBar), MENU_Y(usableLineHeight), MENU_X(MENUSLIDER_UNK), value); \ + lastActiveBarX = DisplaySlider(SCREEN_STRETCH_FROM_RIGHT(MENUSLIDER_X + columnWidth), MENU_Y(bitAboveNextItemY), MENU_Y(smallestSliderBar), MENU_Y(usableLineHeight), MENU_X(MENUSLIDER_UNK), value); \ if (i != m_nCurrOption || !itemsAreSelectable) \ break; \ \ - if (CheckHover(hoverStartX, lastBarX - MENU_X(10.0f), MENU_Y(nextYToUse), MENU_Y(28.0f + nextYToUse))) \ + if (CheckHover(hoverStartX, lastActiveBarX - MENU_X(10.0f), MENU_Y(nextYToUse), MENU_Y(28.0f + nextYToUse))) \ m_nHoverOption = decreaseAction; \ \ - if (!CheckHover(MENU_X(10.0f) + lastBarX, hoverEndX, MENU_Y(nextYToUse), MENU_Y(28.0f + nextYToUse))) \ + if (!CheckHover(MENU_X(10.0f) + lastActiveBarX, hoverEndX, MENU_Y(nextYToUse), MENU_Y(28.0f + nextYToUse))) \ break; \ \ m_nHoverOption = increaseAction; \ @@ -331,6 +359,11 @@ CMenuManager::PageDownList(bool playSoundOnSuccess) inline void CMenuManager::ThingsToDoBeforeLeavingPage() { +#ifndef MASTER + if (m_nCurrScreen == MENUPAGE_NO_MEMORY_CARD || m_nCurrScreen == MENUPAGE_MEMORY_CARD_DEBUG) { + SaveSettings(); + } +#endif if ((m_nCurrScreen == MENUPAGE_SKIN_SELECT) && strcmp(m_aSkinName, m_PrefsSkinFile) != 0) { CWorld::Players[0].SetPlayerSkin(m_PrefsSkinFile); } else if (m_nCurrScreen == MENUPAGE_SOUND_SETTINGS) { @@ -356,18 +389,18 @@ CMenuManager::ThingsToDoBeforeLeavingPage() // ------ Functions not in the game/inlined ends void -CMenuManager::BuildStatLine(char *text, void *stat, uint8 aFloat, void *stat2) +CMenuManager::BuildStatLine(char *text, void *stat, bool itsFloat, void *stat2) { if (!text) return; if (stat2) { - if (aFloat) + if (itsFloat) sprintf(gString2, " %.2f %s %.2f", *(float*)stat, UnicodeToAscii(TheText.Get("FEST_OO")), *(float*)stat2); else sprintf(gString2, " %d %s %d", *(int*)stat, UnicodeToAscii(TheText.Get("FEST_OO")), *(int*)stat2); } else if (stat) { - if (aFloat) + if (itsFloat) sprintf(gString2, " %.2f", *(float*)stat); else sprintf(gString2, " %d", *(int*)stat); @@ -378,10 +411,8 @@ CMenuManager::BuildStatLine(char *text, void *stat, uint8 aFloat, void *stat2) AsciiToUnicode(gString2, gUString2); } -#if 0 -WRAPPER void CMenuManager::CentreMousePointer() { EAXJMP(0x48ACE0); } -#else -void CMenuManager::CentreMousePointer() +void +CMenuManager::CentreMousePointer() { tagPOINT Point; @@ -395,28 +426,85 @@ void CMenuManager::CentreMousePointer() PSGLOBAL(lastMousePos.y) = SCREEN_HEIGHT / 2; } } -#endif -#if 1 -WRAPPER int CMenuManager::CheckCodesForControls(int32) { EAXJMP(0x48A950); } -#else -void CMenuManager::CheckCodesForControls(int, int) +void +CMenuManager::CheckCodesForControls(int typeOfControl) { - DisplayComboButtonErrMsg = 0; -} -#endif + DisplayComboButtonErrMsg = false; + bool invalidKey = false; + bool escPressed = false; + eControllerType typeToSave; + // GetStartOptionsCntrlConfigScreens(); + e_ControllerAction action = (e_ControllerAction) m_CurrCntrlAction; -#if 0 -WRAPPER bool CMenuManager::CheckHover(int, int, int, int) { EAXJMP(0x48ACA0); } -#else -bool CMenuManager::CheckHover(int x1, int x2, int y1, int y2) + if (typeOfControl == KEYBOARD) { + if (*pControlEdit == rsESC) { + escPressed = true; + } else if (*pControlEdit > rsF3 && *pControlEdit != rsF9 && *pControlEdit != rsLWIN && + *pControlEdit != rsRWIN && *pControlEdit != rsRALT) { + typeToSave = KEYBOARD; + if (ControlsManager.GetControllerKeyAssociatedWithAction(action, KEYBOARD) != rsNULL && + *pControlEdit != ControlsManager.GetControllerKeyAssociatedWithAction(action, KEYBOARD)) { + typeToSave = OPTIONAL_EXTRA; + } + } else { + invalidKey = true; + } + } else if (typeOfControl == MOUSE) { + typeToSave = MOUSE; + } else if (typeOfControl == JOYSTICK) { + typeToSave = JOYSTICK; + if (ControlsManager.GetIsActionAButtonCombo(action)) + DisplayComboButtonErrMsg = true; + } + + ControlsManager.ClearSettingsAssociatedWithAction(action, typeToSave); + if (!DisplayComboButtonErrMsg && !escPressed && !invalidKey) { + if (typeOfControl == KEYBOARD) { + ControlsManager.DeleteMatchingActionInitiators(action, *pControlEdit, KEYBOARD); + ControlsManager.DeleteMatchingActionInitiators(action, *pControlEdit, OPTIONAL_EXTRA); + } else { + if (typeOfControl == MOUSE) { + ControlsManager.DeleteMatchingActionInitiators(action, MouseButtonJustClicked, MOUSE); + } else if (typeOfControl == JOYSTICK) { + ControlsManager.DeleteMatchingActionInitiators(action, JoyButtonJustClicked, JOYSTICK); + } + } + if (typeOfControl == KEYBOARD) { + ControlsManager.SetControllerKeyAssociatedWithAction(action, *pControlEdit, typeToSave); + + } else if (typeOfControl == MOUSE) { + ControlsManager.SetControllerKeyAssociatedWithAction(action, MouseButtonJustClicked, typeToSave); + } else { + if (typeOfControl == JOYSTICK) { + ControlsManager.SetControllerKeyAssociatedWithAction(action, JoyButtonJustClicked, typeToSave); + } + } + pControlEdit = nil; + m_bWaitingForNewKeyBind = false; + m_KeyPressedCode = -1; + m_bStartWaitingForKeyBind = false; + SaveSettings(); + } + + if (escPressed) { + pControlEdit = nil; + m_bWaitingForNewKeyBind = false; + m_KeyPressedCode = -1; + m_bStartWaitingForKeyBind = false; + SaveSettings(); + } +} + +bool +CMenuManager::CheckHover(int x1, int x2, int y1, int y2) { return m_nMousePosX > x1 && m_nMousePosX < x2 && m_nMousePosY > y1 && m_nMousePosY < y2; } -#endif -void CMenuManager::CheckSliderMovement(int value) +void +CMenuManager::CheckSliderMovement(int value) { switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) { case MENUACTION_BRIGHTNESS: @@ -452,103 +540,106 @@ void CMenuManager::CheckSliderMovement(int value) SaveSettings(); } -#if 1 -WRAPPER int CMenuManager::CostructStatLine(int) { EAXJMP(0x482800); } -#else -int CMenuManager::CostructStatLine(int) +void +CMenuManager::DisplayHelperText() { + // there was a unused static bool + static uint32 LastFlash = 0; + int32 alpha; -} -#endif + if (m_nHelperTextMsgId != 0 && m_nHelperTextMsgId != 1) { -#if DONT_USE_SUSPICIOUS_FUNCS -WRAPPER void CMenuManager::DisplayHelperText() { EAXJMP(0x48B490); } -#else -void CMenuManager::DisplayHelperText() -{ - static int32 AlphaText = 255; - static int32 Time = 0; - - if (m_nHelperTextMsgId && m_nHelperTextMsgId != 1) { - if (CTimer::GetTimeInMillisecondsPauseMode() - Time > 10) { - Time = CTimer::GetTimeInMillisecondsPauseMode(); + // FIX: High fps bug +#ifndef FIX_BUGS + if (CTimer::GetTimeInMillisecondsPauseMode() - LastFlash > 10) { + LastFlash = CTimer::GetTimeInMillisecondsPauseMode(); m_nHelperTextAlpha -= 2; - - if (AlphaText < 1) - ResetHelperText(); - - AlphaText = m_nHelperTextAlpha > 255 ? 255 : m_nHelperTextAlpha; } +#else + static float fadeAlpha = 0.0f; // To keep it precisely + if (m_nHelperTextAlpha >= 255 && fadeAlpha < 250) fadeAlpha = m_nHelperTextAlpha; + + // -2 per every 33 ms (1000.f/30.f - original frame limiter fps) + fadeAlpha -= (frameTime / 33.0f) * 2.0f; + m_nHelperTextAlpha = fadeAlpha; +#endif + if (m_nHelperTextAlpha < 1) + ResetHelperText(); + + alpha = m_nHelperTextAlpha > 255 ? 255 : m_nHelperTextAlpha; } - wchar *HelperTextToPrint = nil; + CFont::SetCentreOn(); + CFont::SetScale(SCREEN_SCALE_X(SMALLESTTEXT_X_SCALE), SCREEN_SCALE_Y(SMALLESTTEXT_Y_SCALE)); + CFont::SetFontStyle(FONT_HEADING); + // TODO: name this cases? switch (m_nHelperTextMsgId) { - case 0: - HelperTextToPrint = TheText.Get("FET_MIG"); - break; - case 1: - HelperTextToPrint = TheText.Get("FET_APP"); - break; - case 2: - HelperTextToPrint = TheText.Get("FET_HRD"); - break; - case 3: - HelperTextToPrint = TheText.Get("FET_RSO"); - break; - case 4: - HelperTextToPrint = TheText.Get("FET_RSC"); - break; - default: - break; + case 0: + { + int action = aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action; + if (action != MENUACTION_CHANGEMENU && action != MENUACTION_REDEFCTRL && action != MENUACTION_RESTOREDEF) { + CFont::SetColor(CRGBA(255, 255, 255, 255)); + CFont::PrintString(MENU_X_LEFT_ALIGNED(320.0f), SCREEN_SCALE_FROM_BOTTOM(120.0f), TheText.Get("FET_MIG")); + } + break; + } + case 1: + CFont::SetColor(CRGBA(255, 255, 255, 255)); + CFont::PrintString(MENU_X_LEFT_ALIGNED(320.0f), SCREEN_SCALE_FROM_BOTTOM(120.0f), TheText.Get("FET_APP")); + break; + case 2: + CFont::SetColor(CRGBA(255, 255, 255, alpha)); + CFont::PrintString(MENU_X_LEFT_ALIGNED(320.0f), SCREEN_SCALE_FROM_BOTTOM(120.0f), TheText.Get("FET_HRD")); + break; + case 3: + CFont::SetColor(CRGBA(255, 255, 255, alpha)); + CFont::PrintString(MENU_X_LEFT_ALIGNED(320.0f), SCREEN_SCALE_FROM_BOTTOM(120.0f), TheText.Get("FET_RSO")); + break; + case 4: + CFont::SetColor(CRGBA(255, 255, 255, alpha)); + CFont::PrintString(MENU_X_LEFT_ALIGNED(320.0f), SCREEN_SCALE_FROM_BOTTOM(120.0f), TheText.Get("FET_RSC")); + break; + default: + break; } - - CFont::SetAlignment(ALIGN_CENTER); - CFont::SetScale(SCREEN_SCALE_X(0.4f), SCREEN_SCALE_Y(0.6f)); - CFont::SetFontStyle(FONT_HEADING); - CFont::SetDropColor(CRGBA(0, 0, 0, AlphaText)); - CFont::SetDropShadowPosition(MENUDROP_COLOR_SIZE); - CFont::SetColor(CRGBA(255, 255, 255, AlphaText)); - - CFont::PrintString(SCREEN_WIDTH / 2, SCREEN_SCALE_FROM_BOTTOM(120.0f), HelperTextToPrint); + CFont::SetRightJustifyOff(); } -#endif -#if DONT_USE_SUSPICIOUS_FUNCS -WRAPPER int CMenuManager::DisplaySlider(float, float, float, float, float, float) { EAXJMP(0x488420); } -#else -int CMenuManager::DisplaySlider(float x, float y, float leftSize, float rightSize, float rectSize, float progress) +int +CMenuManager::DisplaySlider(float x, float y, float mostLeftBarSize, float mostRightBarSize, float rectSize, float progress) { CRGBA color; - float sizeRange; + float maxBarHeight; - float input = 0.0f; + int lastActiveBarX = 0; + float curBarX = 0.0f; + float spacing = SCREEN_SCALE_X(10.0f); for (int i = 0; i < 16; i++) { - input = i * rectSize/16.0f + x; + curBarX = i * rectSize/16.0f + x; - if (i/16.0f + 1/32.0f < progress) + if (i / 16.0f + 1 / 32.0f < progress) { color = CRGBA(255, 217, 106, FadeIn(255)); - else + lastActiveBarX = curBarX; + } else color = CRGBA(185, 120, 0, FadeIn(255)); - sizeRange = max(leftSize, rightSize); + maxBarHeight = max(mostLeftBarSize, mostRightBarSize); - float _x = i * rectSize/16.0f + x; - float _y = y + sizeRange - ((16 - i) * leftSize + i * rightSize)/16.0f; - float _w = SCREEN_SCALE_X(10.0f) + i * rectSize/16.0f + x; - float _h = y + sizeRange; - float _s = SCREEN_SCALE_X(2.0f); - CSprite2d::DrawRect(CRect(_x + _s, _y + _s, _w + _s, _h + _s), CRGBA(0, 0, 0, FadeIn(255))); // Shadow - CSprite2d::DrawRect(CRect(i * rectSize/16.0f + x, y + sizeRange - ((16 - i) * leftSize + i * rightSize)/16.0f, SCREEN_SCALE_X(10.0f) + i * rectSize/16.0f + x, y + sizeRange), color); + float curBarFreeSpace = ((16 - i) * mostLeftBarSize + i * mostRightBarSize) / 16.0f; + float left = curBarX; + float top = y + maxBarHeight - curBarFreeSpace; + float right = spacing + curBarX; + float bottom = y + maxBarHeight; + float shadowOffset = SCREEN_SCALE_X(2.0f); + CSprite2d::DrawRect(CRect(left + shadowOffset, top + shadowOffset, right + shadowOffset, bottom + shadowOffset), CRGBA(0, 0, 0, FadeIn(200))); // Shadow + CSprite2d::DrawRect(CRect(left, top, right, bottom), color); } - return input; + return lastActiveBarX; } -#endif -#if 0 -WRAPPER void CMenuManager::DoSettingsBeforeStartingAGame() { EAXJMP(0x48AB40); } -#else -void CMenuManager::DoSettingsBeforeStartingAGame() +void +CMenuManager::DoSettingsBeforeStartingAGame() { CCamera::m_bUseMouse3rdPerson = m_ControlMethod == CONTROL_STANDARD; if (m_PrefsVsyncDisp != m_PrefsVsync) @@ -563,19 +654,16 @@ void CMenuManager::DoSettingsBeforeStartingAGame() DMAudio.SetMusicFadeVol(0); DMAudio.ResetTimers(CTimer::GetTimeInMilliseconds()); } -#endif -#if 0 -WRAPPER void CMenuManager::Draw() { EAXJMP(0x47AE00); } -#else -void CMenuManager::Draw() +void +CMenuManager::Draw() { CFont::SetBackgroundOff(); CFont::SetPropOn(); CFont::SetCentreOff(); CFont::SetJustifyOn(); CFont::SetBackGroundOnlyTextOn(); - CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENUACTION_X_MARGIN)); + CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENU_X_MARGIN)); CFont::SetRightJustifyWrap(SCREEN_SCALE_X(MENUACTION_WIDTH)); switch (m_nCurrScreen) { @@ -617,8 +705,8 @@ void CMenuManager::Draw() } CFont::SetFontStyle(FONT_BANK); - CFont::SetScale(MENU_X(MENUACTION_SCALE_MULT * actionTextScaleX), MENU_Y(MENUACTION_SCALE_MULT * actionTextScaleY)); - CFont::SetRightJustifyOff(); // AG used SetAlignment(ALIGN_LEFT); + CFont::SetScale(MENU_X(MENUACTION_SCALE_MULT * MENU_TEXT_SIZE_X), MENU_Y(MENUACTION_SCALE_MULT * MENU_TEXT_SIZE_Y)); + CFont::SetRightJustifyOff(); CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255))); // Label @@ -631,6 +719,13 @@ void CMenuManager::Draw() else str = TheText.Get(aScreens[m_nCurrScreen].m_aEntries[0].m_EntryName); break; +#ifndef MASTER + case MENUPAGE_NO_MEMORY_CARD: + case MENUPAGE_MEMORY_CARD_DEBUG: + CFont::SetColor(CRGBA(235, 170, 50, FadeIn(127))); // white in mobile, because all texts are white there + str = TheText.Get(aScreens[m_nCurrScreen].m_aEntries[0].m_EntryName); + break; +#endif case MENUPAGE_SAVE_OVERWRITE_CONFIRM: if (Slots[m_nCurrSaveSlot + 1] == SLOT_EMPTY) str = TheText.Get("FESZ_QZ"); @@ -648,12 +743,20 @@ void CMenuManager::Draw() break; } -#ifdef FIX_BUGS - // Label is wrapped from right by StretchX(40)px, but wrapped from left by 40px. And this is only place R* didn't use StretchX in menu. - CFont::PrintString(MENU_X_LEFT_ALIGNED(MENUACTION_X_MARGIN), MENU_Y(menuXYpadding), str); -#else - CFont::PrintString(MENUACTION_X_MARGIN, menuXYpadding, str); +#ifndef MASTER + if (m_nCurrScreen == MENUPAGE_NO_MEMORY_CARD || m_nCurrScreen == MENUPAGE_MEMORY_CARD_DEBUG) { + // CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENU_X_MARGIN)); // it's always like that on PC + CFont::PrintString(MENU_X_LEFT_ALIGNED(MENU_X_MARGIN), MENU_Y(210.0), str); + } else #endif + { +#ifdef FIX_BUGS + // Label is wrapped from right by StretchX(40)px, but wrapped from left by 40px. And this is only place R* didn't use StretchX in here. + CFont::PrintString(MENU_X_LEFT_ALIGNED(MENU_X_MARGIN), MENU_Y(menuXYpadding), str); +#else + CFont::PrintString(MENU_X_MARGIN, menuXYpadding, str); +#endif + } } CFont::SetCentreSize(SCREEN_WIDTH); @@ -673,7 +776,7 @@ void CMenuManager::Draw() headerHeight = 240; lineHeight = 24; CFont::SetFontStyle(FONT_HEADING); - CFont::SetScale(MENU_X(actionTextScaleX = 0.75f), MENU_Y(actionTextScaleY = 0.9f)); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = BIGTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = BIGTEXT_Y_SCALE)); CFont::SetCentreOn(); break; case MENUPAGE_SOUND_SETTINGS: @@ -690,7 +793,7 @@ void CMenuManager::Draw() headerHeight = 0; lineHeight = 20; CFont::SetFontStyle(FONT_HEADING); - CFont::SetScale(MENU_X(actionTextScaleX = 0.55f), MENU_Y(actionTextScaleY = 0.8f)); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = MEDIUMTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = MEDIUMTEXT_Y_SCALE)); CFont::SetRightJustifyOff(); break; case MENUPAGE_CHOOSE_LOAD_SLOT: @@ -700,7 +803,7 @@ void CMenuManager::Draw() headerHeight = 38; lineHeight = 20; CFont::SetFontStyle(FONT_BANK); - CFont::SetScale(MENU_X(actionTextScaleX = SMALLTEXT_X_SCALE), MENU_Y(actionTextScaleY = SMALLTEXT_Y_SCALE)); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = SMALLTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = SMALLTEXT_Y_SCALE)); CFont::SetRightJustifyOff(); break; case MENUPAGE_NEW_GAME_RELOAD: @@ -712,7 +815,7 @@ void CMenuManager::Draw() headerHeight = 60; lineHeight = 24; CFont::SetFontStyle(FONT_HEADING); - CFont::SetScale(MENU_X(actionTextScaleX = 0.75f), MENU_Y(actionTextScaleY = 0.9f)); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = BIGTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = BIGTEXT_Y_SCALE)); CFont::SetCentreOn(); break; case MENUPAGE_START_MENU: @@ -720,7 +823,7 @@ void CMenuManager::Draw() headerHeight = 140; lineHeight = 24; CFont::SetFontStyle(FONT_HEADING); - CFont::SetScale(MENU_X(actionTextScaleX = 0.75f), MENU_Y(actionTextScaleY = 0.9f)); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = BIGTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = BIGTEXT_Y_SCALE)); CFont::SetCentreOn(); break; case MENUPAGE_PAUSE_MENU: @@ -728,7 +831,7 @@ void CMenuManager::Draw() headerHeight = 117; lineHeight = 24; CFont::SetFontStyle(FONT_HEADING); - CFont::SetScale(MENU_X(actionTextScaleX = 0.75f), MENU_Y(actionTextScaleY = 0.9f)); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = BIGTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = BIGTEXT_Y_SCALE)); CFont::SetCentreOn(); break; #ifdef PS2_SAVE_DIALOG @@ -737,7 +840,7 @@ void CMenuManager::Draw() headerHeight = 60; lineHeight = 24; CFont::SetFontStyle(FONT_BANK); - CFont::SetScale(MENU_X(actionTextScaleX = 0.75f), MENU_Y(actionTextScaleY = 0.9f)); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = BIGTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = BIGTEXT_Y_SCALE)); break; #endif default: @@ -745,7 +848,7 @@ void CMenuManager::Draw() headerHeight = 40; lineHeight = 24; CFont::SetFontStyle(FONT_HEADING); - CFont::SetScale(MENU_X(actionTextScaleX = 0.75f), MENU_Y(actionTextScaleY = 0.9f)); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = BIGTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = BIGTEXT_Y_SCALE)); CFont::SetCentreOn(); break; } @@ -759,7 +862,7 @@ void CMenuManager::Draw() if (m_bWaitingForNewKeyBind) itemsAreSelectable = false; - CMenuManager::DrawControllerScreenExtraText(nextYToUse - 8.0f, 350, lineHeight); + DrawControllerScreenExtraText(nextYToUse - 8.0f, MENU_X_LEFT_ALIGNED(350), lineHeight); break; default: break; @@ -794,7 +897,7 @@ void CMenuManager::Draw() case MENUACTION_CHANGEMENU: { switch (aScreens[m_nCurrScreen].m_aEntries[i].m_TargetMenu) { case MENUPAGE_MULTIPLAYER_MAP: - switch (sthWithButtons) { + switch (m_SelectedMap) { case 0: rightText = TheText.Get("FEM_MA0"); break; @@ -824,7 +927,7 @@ void CMenuManager::Draw() } break; case MENUPAGE_MULTIPLAYER_MODE: - switch (sthWithButtons2) { + switch (m_SelectedGameType) { case 0: rightText = TheText.Get("FEN_TY0"); break; @@ -859,7 +962,7 @@ void CMenuManager::Draw() break; } case MENUACTION_CTRLVIBRATION: - if (CMenuManager::m_PrefsUseVibration) + if (m_PrefsUseVibration) rightText = TheText.Get("FEM_ON"); else rightText = TheText.Get("FEM_OFF"); @@ -1025,23 +1128,23 @@ void CMenuManager::Draw() #endif m_nMousePosY < MENU_Y((nextYToCheck + 2) + usableLineHeight)) { - static int lastHoveringOption = -99; - static int lastScreen = m_nCurrScreen; + static int oldOption = -99; + static int oldScreen = m_nCurrScreen; m_nPrevOption = rowToCheck; if (m_nMouseOldPosX != m_nMousePosX || m_nMouseOldPosY != m_nMousePosY) { m_nCurrOption = rowToCheck; m_bShowMouse = true; } - if (lastHoveringOption != m_nCurrOption) { - if (lastScreen == m_nCurrScreen && m_bShowMouse) + if (oldOption != m_nCurrOption) { + if (oldScreen == m_nCurrScreen && m_bShowMouse) DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0); - lastHoveringOption = m_nCurrOption; - lastScreen = m_nCurrScreen; + oldOption = m_nCurrOption; + oldScreen = m_nCurrScreen; } - if (lastScreen == m_nPrevScreen) - lastScreen = m_nCurrScreen; + if (oldScreen == m_nPrevScreen) + oldScreen = m_nCurrScreen; m_nHoverOption = HOVEROPTION_RANDOM_ITEM; foundTheHoveringItem = true; @@ -1124,7 +1227,7 @@ void CMenuManager::Draw() // Sliders // We stretch slider start X here(like original code), because it will always be center of screen - int lastBarX; + int lastActiveBarX; switch (aScreens[m_nCurrScreen].m_aEntries[i].m_Action) { case MENUACTION_BRIGHTNESS: ProcessSlider(m_PrefsBrightness / 512.0f, HOVEROPTION_INCREASE_BRIGHTNESS, HOVEROPTION_DECREASE_BRIGHTNESS, MENU_X_LEFT_ALIGNED(170.0f), SCREEN_WIDTH); @@ -1184,21 +1287,18 @@ void CMenuManager::Draw() if (m_nCurrScreen == MENUPAGE_CONTROLLER_SETTINGS) PrintController(); - -/* else if (m_nCurrScreen == MENUPAGE_SKIN_SELECT_OLD) { - CSprite2d::DrawRect(CRect(StretchX(180), MENU_Y(98), StretchX(230), MENU_Y(123)), CRGBA(255, 255, 255, FadeIn(255))); - CSprite2d::DrawRect(CRect(StretchX(181), MENU_Y(99), StretchX(229), MENU_Y(233)), CRGBA(Player color from PickNewPlayerColour, FadeIn(255))); + else if (m_nCurrScreen == MENUPAGE_SKIN_SELECT_OLD) { + CSprite2d::DrawRect(CRect(MENU_X_LEFT_ALIGNED(180), MENU_Y(98), MENU_X_LEFT_ALIGNED(230), MENU_Y(123)), CRGBA(255, 255, 255, FadeIn(255))); + CSprite2d::DrawRect(CRect(MENU_X_LEFT_ALIGNED(181), MENU_Y(99), MENU_X_LEFT_ALIGNED(229), MENU_Y(122)), CRGBA(m_PrefsPlayerRed, m_PrefsPlayerGreen, m_PrefsPlayerBlue, FadeIn(255))); } -*/ + } -#endif int CMenuManager::GetNumOptionsCntrlConfigScreens(void) { int number = 0; - switch (m_nCurrScreen) - { + switch (m_nCurrScreen) { case MENUPAGE_CONTROLLER_PC_OLD3: number = 2; break; @@ -1227,12 +1327,12 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 int numOptions = GetNumOptionsCntrlConfigScreens(); int bindingMargin = MENU_X(3.0f); float rowHeight; - switch (CMenuManager::m_ControlMethod) { + switch (m_ControlMethod) { case CONTROL_STANDARD: - rowHeight = 10.7f; + rowHeight = CONTSETUP_STANDARD_ROW_HEIGHT; break; case CONTROL_CLASSIC: - rowHeight = 9.0f; + rowHeight = CONTSETUP_CLASSIC_ROW_HEIGHT; break; default: break; @@ -1302,13 +1402,13 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 controllerAction = PED_LOOKBEHIND; break; case 23: - if (CMenuManager::m_ControlMethod == CONTROL_STANDARD) + if (m_ControlMethod == CONTROL_STANDARD) controllerAction = -1; else controllerAction = PED_1RST_PERSON_LOOK_LEFT; break; case 24: - if (CMenuManager::m_ControlMethod == CONTROL_STANDARD) + if (m_ControlMethod == CONTROL_STANDARD) controllerAction = -1; else controllerAction = PED_1RST_PERSON_LOOK_RIGHT; @@ -1415,15 +1515,19 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 if (column == CONTSETUP_PED_COLUMN && m_nSelectedContSetupColumn == CONTSETUP_PED_COLUMN) { #ifdef FIX_BUGS if (controllerAction == -1) { - CSprite2d::DrawRect(CRect(nextX, MENU_Y(bgY), nextX + MENU_X(190.0f), MENU_Y(bgY + 10)), CRGBA(235, 170, 50, FadeIn(150))); + CSprite2d::DrawRect(CRect(nextX, MENU_Y(bgY), nextX + MENU_X(CONTSETUP_BOUND_COLUMN_WIDTH), + MENU_Y(bgY + CONTSETUP_BOUND_HIGHLIGHT_HEIGHT)), CRGBA(235, 170, 50, FadeIn(150))); } else { - CSprite2d::DrawRect(CRect(nextX, MENU_Y(bgY), nextX + MENU_X(190.0f), MENU_Y(bgY + 10)), CRGBA(255, 217, 106, FadeIn(210))); + CSprite2d::DrawRect(CRect(nextX, MENU_Y(bgY), nextX + MENU_X(CONTSETUP_BOUND_COLUMN_WIDTH), + MENU_Y(bgY + CONTSETUP_BOUND_HIGHLIGHT_HEIGHT)), CRGBA(255, 217, 106, FadeIn(210))); } #else if (controllerAction == -1) { - CSprite2d::DrawRect(CRect(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(bgY), MENU_X_LEFT_ALIGNED(400.0f), MENU_Y(bgY + 10)), CRGBA(235, 170, 50, FadeIn(150))); + CSprite2d::DrawRect(CRect(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(bgY), + MENU_X_LEFT_ALIGNED(400.0f), MENU_Y(bgY + CONTSETUP_BOUND_HIGHLIGHT_HEIGHT)), CRGBA(235, 170, 50, FadeIn(150))); } else { - CSprite2d::DrawRect(CRect(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(bgY), MENU_X_LEFT_ALIGNED(400.0f), MENU_Y(bgY + 10)), CRGBA(255, 217, 106, FadeIn(210))); + CSprite2d::DrawRect(CRect(MENU_X_LEFT_ALIGNED(210.0f), MENU_Y(bgY), + MENU_X_LEFT_ALIGNED(400.0f), MENU_Y(bgY + CONTSETUP_BOUND_HIGHLIGHT_HEIGHT)), CRGBA(255, 217, 106, FadeIn(210))); } #endif CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255))); @@ -1432,9 +1536,11 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 } else if (column == CONTSETUP_VEHICLE_COLUMN && m_nSelectedContSetupColumn == CONTSETUP_VEHICLE_COLUMN) { #ifdef FIX_BUGS if (controllerAction == -1) { - CSprite2d::DrawRect(CRect(nextX, MENU_Y(bgY), nextX + MENU_X(190.0f), MENU_Y(bgY + 10)), CRGBA(235, 170, 50, FadeIn(150))); + CSprite2d::DrawRect(CRect(nextX, MENU_Y(bgY), nextX + MENU_X(CONTSETUP_BOUND_COLUMN_WIDTH), + MENU_Y(bgY + CONTSETUP_BOUND_HIGHLIGHT_HEIGHT)), CRGBA(235, 170, 50, FadeIn(150))); } else { - CSprite2d::DrawRect(CRect(nextX, MENU_Y(bgY), nextX + MENU_X(190.0f), MENU_Y(bgY + 10)), CRGBA(255, 217, 106, FadeIn(210))); + CSprite2d::DrawRect(CRect(nextX, MENU_Y(bgY), nextX + MENU_X(CONTSETUP_BOUND_COLUMN_WIDTH), + MENU_Y(bgY + CONTSETUP_BOUND_HIGHLIGHT_HEIGHT)), CRGBA(255, 217, 106, FadeIn(210))); } #else if (controllerAction == -1) { @@ -1553,25 +1659,273 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 } } -#if 1 -WRAPPER void CMenuManager::DrawControllerScreenExtraText(int, int, int) { EAXJMP(0x4892F0); } -#else -void CMenuManager::DrawControllerScreenExtraText(int, int, int) +// TODO: Complete aScreens and test that +void +CMenuManager::DrawControllerScreenExtraText(int yStart, int xStart, int lineHeight) { + int extraTextStart = GetStartOptionsCntrlConfigScreens(); + int numOpts = GetNumOptionsCntrlConfigScreens(); + int spacing = MENU_X(10.0f); + for (int i = extraTextStart; i < extraTextStart + numOpts; i++) { + int numTextsPrinted = 0; + int nextX = xStart; + for (int j = 1; j < 5; j++) { + wchar *text = ControlsManager.GetControllerSettingTextWithOrderNumber((e_ControllerAction)i, (eContSetOrder)j); + if (text) + ++numTextsPrinted; + if (text) { + // Seperator + if (numTextsPrinted > 1) { + CFont::PrintString(nextX, MENU_Y(yStart), TheText.Get("FEC_IBT")); + nextX = CFont::GetStringWidth(TheText.Get("FEC_IBT"), true) + spacing + nextX; + } + CFont::PrintString(nextX, MENU_Y(yStart), text); + } + if (text) + nextX = CFont::GetStringWidth(text, true) + spacing + nextX; + } + if (m_nCurrOption == i - extraTextStart && m_bWaitingForNewKeyBind) { + static bool waitingTextVisible = false; + + // Seperator + if (numTextsPrinted > 0) { + CFont::PrintString(nextX, MENU_Y(yStart), TheText.Get("FEC_IBT")); + nextX = CFont::GetStringWidth(TheText.Get("FEC_IBT"), true) + spacing + nextX; + } + static uint32 lastStateChange = 0; + if (CTimer::GetTimeInMillisecondsPauseMode() - lastStateChange > 150) { + waitingTextVisible = !waitingTextVisible; + lastStateChange = CTimer::GetTimeInMillisecondsPauseMode(); + } + if (waitingTextVisible) { + CFont::SetColor(CRGBA(255, 255, 0, FadeIn(255))); + CFont::PrintString(nextX, MENU_Y(yStart), TheText.Get("FEC_QUE")); + CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255))); + } + } + yStart += lineHeight; + } + wchar *error = nil; + if (DisplayComboButtonErrMsg) + error = ControlsManager.GetButtonComboText((e_ControllerAction)(m_nCurrOption + extraTextStart)); + + if (error) { + CFont::SetColor(CRGBA(233, 22, 159, 255)); + CFont::PrintString(xStart, MENU_Y(yStart + 10), error); + } } -#endif -#if 1 -WRAPPER void CMenuManager::DrawControllerSetupScreen() { EAXJMP(0x481210); } -#else -void CMenuManager::DrawControllerSetupScreen() +void +CMenuManager::DrawControllerSetupScreen() { + float rowHeight; + switch (m_ControlMethod) { + case CONTROL_STANDARD: + rowHeight = CONTSETUP_STANDARD_ROW_HEIGHT; + break; + case CONTROL_CLASSIC: + rowHeight = CONTSETUP_CLASSIC_ROW_HEIGHT; + break; + default: + break; + } + CFont::SetBackgroundOff(); + CFont::SetScale(MENU_X(MENUACTION_SCALE_MULT), MENU_Y(MENUACTION_SCALE_MULT)); + CFont::SetPropOn(); + CFont::SetCentreOff(); + CFont::SetJustifyOn(); + CFont::SetRightJustifyOff(); + CFont::SetBackGroundOnlyTextOn(); + CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENU_X_MARGIN)); + CFont::SetRightJustifyWrap(SCREEN_SCALE_X(MENUACTION_WIDTH)); -} + // Page header + CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255))); + CFont::SetRightJustifyOn(); + CFont::SetScale(MENU_X(MENUHEADER_WIDTH), MENU_Y(MENUHEADER_HEIGHT)); + CFont::SetFontStyle(FONT_HEADING); + switch (m_ControlMethod) { + case CONTROL_STANDARD: + CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(MENUHEADER_POS_X), SCREEN_SCALE_FROM_BOTTOM(MENUHEADER_POS_Y), + TheText.Get(aScreens[m_nCurrScreen].m_ScreenName)); + break; + case CONTROL_CLASSIC: + CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(MENUHEADER_POS_X), SCREEN_SCALE_FROM_BOTTOM(MENUHEADER_POS_Y), + TheText.Get("FET_CTI")); + break; + default: + break; + } + wchar *actionTexts[31]; + actionTexts[0] = TheText.Get("FEC_FIR"); + actionTexts[1] = TheText.Get("FEC_NWE"); + actionTexts[2] = TheText.Get("FEC_PWE"); + actionTexts[3] = TheText.Get("FEC_FOR"); + actionTexts[4] = TheText.Get("FEC_BAC"); + actionTexts[5] = TheText.Get("FEC_LEF"); + actionTexts[6] = TheText.Get("FEC_RIG"); + actionTexts[7] = TheText.Get("FEC_ZIN"); + actionTexts[8] = TheText.Get("FEC_ZOT"); + actionTexts[9] = TheText.Get("FEC_EEX"); + actionTexts[10] = TheText.Get("FEC_RAD"); + actionTexts[11] = TheText.Get("FEC_HRN"); + actionTexts[12] = TheText.Get("FEC_SUB"); + actionTexts[13] = TheText.Get("FEC_CMR"); + actionTexts[14] = TheText.Get("FEC_JMP"); + actionTexts[15] = TheText.Get("FEC_SPN"); + actionTexts[16] = TheText.Get("FEC_HND"); + actionTexts[17] = TheText.Get("FEC_TAR"); + if (m_ControlMethod == CONTROL_CLASSIC) { + actionTexts[18] = TheText.Get("FEC_TFL"); + actionTexts[19] = TheText.Get("FEC_TFR"); + actionTexts[20] = TheText.Get("FEC_TFU"); + actionTexts[21] = TheText.Get("FEC_TFD"); + actionTexts[22] = TheText.Get("FEC_LBA"); + actionTexts[23] = TheText.Get("FEC_LOL"); + actionTexts[24] = TheText.Get("FEC_LOR"); + actionTexts[25] = TheText.Get("FEC_LUD"); + actionTexts[26] = TheText.Get("FEC_LDU"); + actionTexts[27] = TheText.Get("FEC_NTR"); + actionTexts[28] = TheText.Get("FEC_PTT"); + actionTexts[29] = TheText.Get("FEC_CEN"); + actionTexts[30] = nil; + } else { + actionTexts[18] = TheText.Get("FEC_TFL"); + actionTexts[19] = TheText.Get("FEC_TFR"); + actionTexts[20] = TheText.Get("FEC_TFU"); + actionTexts[21] = TheText.Get("FEC_TFD"); + actionTexts[22] = TheText.Get("FEC_LBA"); + actionTexts[23] = TheText.Get("FEC_LOL"); + actionTexts[24] = TheText.Get("FEC_LOR"); + actionTexts[25] = nil; + } + + // Gray panel background + CSprite2d::DrawRect(CRect(MENU_X_LEFT_ALIGNED(CONTSETUP_LIST_LEFT), MENU_Y(CONTSETUP_LIST_TOP), + MENU_X_RIGHT_ALIGNED(CONTSETUP_LIST_RIGHT), SCREEN_SCALE_FROM_BOTTOM(CONTSETUP_LIST_BOTTOM)), + CRGBA(200, 200, 50, FadeIn(50))); + + if (m_nCurrExLayer == HOVEROPTION_LIST) + CFont::SetColor(CRGBA(255, 217, 106, FadeIn(255))); + else + CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255))); + + // List header + CFont::SetFontStyle(FONT_HEADING); + CFont::SetScale(MENU_X(MENUACTION_SCALE_MULT), MENU_Y(MENUACTION_SCALE_MULT)); + CFont::SetRightJustifyOff(); + CFont::PrintString(MENU_X_LEFT_ALIGNED(CONTSETUP_COLUMN_1_X), MENU_Y(CONTSETUP_LIST_TOP), TheText.Get("FET_CAC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(CONTSETUP_COLUMN_2_X), MENU_Y(CONTSETUP_LIST_TOP), TheText.Get("FET_CFT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(CONTSETUP_COLUMN_3_X), MENU_Y(CONTSETUP_LIST_TOP), TheText.Get("FET_CCR")); + CFont::SetRightJustifyOff(); + CFont::SetScale(MENU_X_LEFT_ALIGNED(SMALLESTTEXT_X_SCALE), MENU_Y(SMALLESTTEXT_Y_SCALE)); + CFont::SetFontStyle(FONT_BANK); + int yStart; + if (m_ControlMethod == CONTROL_CLASSIC) + yStart = CONTSETUP_LIST_HEADER_HEIGHT + 29; + else + yStart = CONTSETUP_LIST_HEADER_HEIGHT + 34; + + for (int i = 0; i < ARRAY_SIZE(actionTexts); ++i) { + wchar *actionText = actionTexts[i]; + if (!actionText) + break; + + if (m_nMousePosX > MENU_X_LEFT_ALIGNED(CONTSETUP_LIST_LEFT + 2.0f) && + m_nMousePosX < MENU_X_LEFT_ALIGNED(CONTSETUP_COLUMN_3_X + CONTSETUP_BOUND_COLUMN_WIDTH)) { + + float curOptY = i * rowHeight + yStart; + if (m_nMousePosY > MENU_Y(curOptY) && m_nMousePosY < MENU_Y(rowHeight + curOptY)) { + if (m_nPrevOption != i && m_nCurrExLayer == HOVEROPTION_LIST) + DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0); + + m_nPrevOption = i; + if (m_nMouseOldPosX != m_nMousePosX || m_nMouseOldPosY != m_nMousePosY) { + m_nCurrExLayer = HOVEROPTION_LIST; + m_nSelectedListRow = i; + + // why different number for 3rd column hovering X?? this function is a mess +#ifdef FIX_BUGS + if (m_nMousePosX > MENU_X_LEFT_ALIGNED(0.0f) && m_nMousePosX < MENU_X_LEFT_ALIGNED(CONTSETUP_COLUMN_2_X + CONTSETUP_BOUND_COLUMN_WIDTH)) { +#else + if (m_nMousePosX > MENU_X_LEFT_ALIGNED(0.0f) && m_nMousePosX < MENU_X_LEFT_ALIGNED(370.0f)) { #endif + if (m_nSelectedContSetupColumn != CONTSETUP_PED_COLUMN && m_nCurrExLayer == HOVEROPTION_LIST) + DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0); -void CMenuManager::DrawFrontEnd() + m_nSelectedContSetupColumn = CONTSETUP_PED_COLUMN; +#ifdef FIX_BUGS + } else if (m_nMousePosX > MENU_X_LEFT_ALIGNED(CONTSETUP_COLUMN_2_X + CONTSETUP_BOUND_COLUMN_WIDTH) && m_nMousePosX < SCREEN_WIDTH) { +#else + } else if (m_nMousePosX > MENU_X_LEFT_ALIGNED(370.0f) && m_nMousePosX < SCREEN_WIDTH) { +#endif + if (m_nSelectedContSetupColumn != CONTSETUP_VEHICLE_COLUMN && m_nCurrExLayer == HOVEROPTION_LIST) + DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0); + + m_nSelectedContSetupColumn = CONTSETUP_VEHICLE_COLUMN; + } + } + // what?? + if (m_nHoverOption == HOVEROPTION_SKIN) { + if (i == m_nSelectedListRow) { + m_nHoverOption = HOVEROPTION_NOT_HOVERING; + m_bWaitingForNewKeyBind = true; + m_bStartWaitingForKeyBind = true; + pControlEdit = &m_KeyPressedCode; + } + } else + m_nHoverOption = HOVEROPTION_NOT_HOVERING; + } + } + if (m_nSelectedListRow != 35) + CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255))); + else if (m_nCurrExLayer == HOVEROPTION_LIST) + CFont::SetColor(CRGBA(255, 217, 106, FadeIn(255))); + + CFont::SetRightJustifyOff(); + if (m_PrefsLanguage != LANGUAGE_GERMAN || i != 20 && i != 21) + CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE), MENU_Y(SMALLESTTEXT_Y_SCALE)); + else + CFont::SetScale(MENU_X(0.32f), MENU_Y(SMALLESTTEXT_Y_SCALE)); + + CFont::PrintString(MENU_X_LEFT_ALIGNED(CONTSETUP_COLUMN_1_X), MENU_Y(i * rowHeight + yStart), actionText); + } + DrawControllerBound(yStart, MENU_X_LEFT_ALIGNED(CONTSETUP_COLUMN_2_X), rowHeight, CONTSETUP_PED_COLUMN); + DrawControllerBound(yStart, MENU_X_LEFT_ALIGNED(CONTSETUP_COLUMN_3_X), rowHeight, CONTSETUP_VEHICLE_COLUMN); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X), MENU_Y(MENU_TEXT_SIZE_Y)); + + if ((m_nMousePosX > MENU_X_RIGHT_ALIGNED(CONTSETUP_BACK_RIGHT) - CFont::GetStringWidth(TheText.Get("FEDS_TB"), true) + && m_nMousePosX < MENU_X_RIGHT_ALIGNED(CONTSETUP_BACK_RIGHT) && m_nMousePosY > SCREEN_SCALE_FROM_BOTTOM(CONTSETUP_BACK_BOTTOM) + && m_nMousePosY < SCREEN_SCALE_FROM_BOTTOM(CONTSETUP_BACK_BOTTOM - CONTSETUP_BACK_HEIGHT)) || m_nCurrExLayer == HOVEROPTION_BACK) { + m_nHoverOption = HOVEROPTION_BACK; + + } else if (m_nMousePosX > MENU_X_LEFT_ALIGNED(CONTSETUP_LIST_LEFT + 2.0f) && m_nMousePosX < MENU_X_LEFT_ALIGNED(CONTSETUP_COLUMN_3_X + CONTSETUP_BOUND_COLUMN_WIDTH) + && m_nMousePosY > MENU_Y(CONTSETUP_LIST_TOP + CONTSETUP_LIST_HEADER_HEIGHT) && m_nMousePosY < SCREEN_SCALE_FROM_BOTTOM(CONTSETUP_LIST_BOTTOM + 5.0f)) { + m_nHoverOption = HOVEROPTION_LIST; + + } else { + m_nHoverOption = HOVEROPTION_NOT_HOVERING; + } + + // Back button and it's shadow + CFont::SetFontStyle(FONT_HEADING); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X), MENU_Y(MENU_TEXT_SIZE_Y)); + CFont::SetRightJustifyOn(); + CFont::SetColor(CRGBA(0, 0, 0, FadeIn(90))); + for (int i = 0; i < 2; i++) { + CFont::PrintString(MENU_X_RIGHT_ALIGNED(CONTSETUP_BACK_RIGHT - 2.0f - i), + SCREEN_SCALE_FROM_BOTTOM(CONTSETUP_BACK_BOTTOM - 4.0f - i), TheText.Get("FEDS_TB")); + + if (m_nHoverOption == HOVEROPTION_BACK) + CFont::SetColor(CRGBA(255, 217, 106, FadeIn(255))); + else + CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255))); + } +} + +void +CMenuManager::DrawFrontEnd() { CFont::SetAlphaFade(255.0f); @@ -1628,7 +1982,8 @@ void CMenuManager::DrawFrontEnd() } #ifdef PS2_SAVE_DIALOG -void CMenuManager::DrawFrontEndSaveZone() +void +CMenuManager::DrawFrontEndSaveZone() { CSprite2d::InitPerFrame(); CFont::InitPerFrame(); @@ -1640,7 +1995,7 @@ void CMenuManager::DrawFrontEndSaveZone() m_nMenuFadeAlpha = 255; RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)rwTEXTUREADDRESSCLAMP); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); - CMenuManager::Draw(); + Draw(); CFont::DrawFonts(); @@ -1671,7 +2026,8 @@ void CMenuManager::DrawFrontEndSaveZone() #endif #ifdef PS2_LIKE_MENU -void CMenuManager::DrawFrontEndNormal() +void +CMenuManager::DrawFrontEndNormal() { CSprite2d::InitPerFrame(); CFont::InitPerFrame(); @@ -1747,13 +2103,11 @@ void CMenuManager::DrawFrontEndNormal() reverseAlpha = false; ChangeScreen(pendingScreen, pendingOption, true, false); } else { - float timestep = CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerMillisecond(); - // +20 per every 33 ms (1000.f/30.f - original frame limiter fps) if (!reverseAlpha) - fadeAlpha += (timestep * 100.f) * 20.f / 33.f; + fadeAlpha += (frameTime) * 20.f / 33.f; else - fadeAlpha = max(0.0f, fadeAlpha - (timestep * 100.f) * 30.f / 33.f); + fadeAlpha = max(0.0f, fadeAlpha - (frameTime) * 30.f / 33.f); m_nMenuFadeAlpha = fadeAlpha; } @@ -1762,8 +2116,7 @@ void CMenuManager::DrawFrontEndNormal() if (lastState == 0) fadeAlpha = 255.f; if (reverseAlpha) { - float timestep = CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerMillisecond(); - fadeAlpha -= (timestep * 100.f) * 30.f / 33.f; + fadeAlpha -= (frameTime) * 30.f / 33.f; m_nMenuFadeAlpha = fadeAlpha; } @@ -1785,13 +2138,13 @@ void CMenuManager::DrawFrontEndNormal() RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); switch (m_nCurrScreen) { case MENUPAGE_SKIN_SELECT: - CMenuManager::DrawPlayerSetupScreen(); + DrawPlayerSetupScreen(); break; case MENUPAGE_KEYBOARD_CONTROLS: - CMenuManager::DrawControllerSetupScreen(); + DrawControllerSetupScreen(); break; default: - CMenuManager::Draw(); + Draw(); break; } @@ -1865,7 +2218,8 @@ void CMenuManager::DrawFrontEndNormal() } } #else -void CMenuManager::DrawFrontEndNormal() +void +CMenuManager::DrawFrontEndNormal() { CSprite2d::InitPerFrame(); CFont::InitPerFrame(); @@ -1971,10 +2325,8 @@ void CMenuManager::DrawFrontEndNormal() static float fadeAlpha = 0.0f; if (m_nMenuFadeAlpha == 0 && fadeAlpha > 1.0f) fadeAlpha = 0.0f; - float timestep = CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerMillisecond(); - // +20 per every 33 ms (1000.f/30.f - original frame limiter fps) - fadeAlpha += (timestep * 100.f) * 20.f / 33.f; + fadeAlpha += (frameTime) * 20.f / 33.f; m_nMenuFadeAlpha = fadeAlpha; #else static uint32 LastFade = 0; @@ -2019,13 +2371,13 @@ void CMenuManager::DrawFrontEndNormal() RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); switch (m_nCurrScreen) { case MENUPAGE_SKIN_SELECT: - CMenuManager::DrawPlayerSetupScreen(); + DrawPlayerSetupScreen(); break; case MENUPAGE_KEYBOARD_CONTROLS: - CMenuManager::DrawControllerSetupScreen(); + DrawControllerSetupScreen(); break; default: - CMenuManager::Draw(); + Draw(); break; } @@ -2057,10 +2409,8 @@ void CMenuManager::DrawFrontEndNormal() } #endif -#if 0 -WRAPPER void CMenuManager::DrawPlayerSetupScreen() { EAXJMP(0x47F2B0); } -#else -void CMenuManager::DrawPlayerSetupScreen() +void +CMenuManager::DrawPlayerSetupScreen() { CFont::SetBackgroundOff(); CFont::SetScale(MENU_X(MENUACTION_SCALE_MULT), MENU_Y(MENUACTION_SCALE_MULT)); @@ -2069,7 +2419,7 @@ void CMenuManager::DrawPlayerSetupScreen() CFont::SetJustifyOn(); CFont::SetRightJustifyOff(); CFont::SetBackGroundOnlyTextOn(); - CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENUACTION_X_MARGIN)); + CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENU_X_MARGIN)); CFont::SetRightJustifyWrap(SCREEN_SCALE_X(MENUACTION_WIDTH)); CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255))); @@ -2118,7 +2468,8 @@ void CMenuManager::DrawPlayerSetupScreen() m_pSelectedSkin->skinNameOriginal[oldLength - 4] = '\0'; // Truncate to 40 bytes-39 chars, idk why. This is done in sepearate function in game. - strncpy(m_pSelectedSkin->skinNameDisplayed, m_pSelectedSkin->skinNameDisplayed, 39); + strncpy(nameTemp, m_pSelectedSkin->skinNameDisplayed, 39); // game doesn't do that, but in our day strncpy to same string is forbidden + strncpy(m_pSelectedSkin->skinNameDisplayed, nameTemp, 39); if (oldLength - 4 > 39) m_pSelectedSkin->skinNameDisplayed[39] = '\0'; @@ -2173,7 +2524,7 @@ void CMenuManager::DrawPlayerSetupScreen() CFont::SetScale(MENU_X(MENUACTION_SCALE_MULT), MENU_Y(MENUACTION_SCALE_MULT)); CFont::SetRightJustifyOn(); CFont::PrintString(MENU_X_RIGHT_ALIGNED(PLAYERSETUP_DATE_COLUMN_RIGHT), MENU_Y(PLAYERSETUP_LIST_TOP), TheText.Get("FES_DAT")); - switch (CMenuManager::m_PrefsLanguage) { + switch (m_PrefsLanguage) { case LANGUAGE_FRENCH: case LANGUAGE_SPANISH: CFont::SetScale(MENU_X(0.6f), MENU_Y(MENUACTION_SCALE_MULT)); @@ -2343,7 +2694,7 @@ void CMenuManager::DrawPlayerSetupScreen() // Big apply button if (strcmp(m_aSkinName, m_PrefsSkinFile) != 0) { CFont::SetFontStyle(FONT_HEADING); - switch (CMenuManager::m_PrefsLanguage) { + switch (m_PrefsLanguage) { case LANGUAGE_FRENCH: CFont::SetScale(MENU_X(1.1f), MENU_Y(1.9f)); break; @@ -2470,12 +2821,9 @@ void CMenuManager::DrawPlayerSetupScreen() } } -#endif -#if 0 -WRAPPER int CMenuManager::FadeIn(int alpha) { EAXJMP(0x48AC60); } -#else -int CMenuManager::FadeIn(int alpha) +int +CMenuManager::FadeIn(int alpha) { if (m_nCurrScreen == MENUPAGE_LOADING_IN_PROGRESS || m_nCurrScreen == MENUPAGE_SAVING_IN_PROGRESS || @@ -2484,27 +2832,57 @@ int CMenuManager::FadeIn(int alpha) return min(m_nMenuFadeAlpha, alpha); } -#endif -#if 1 -WRAPPER void CMenuManager::FilterOutColorMarkersFromString(uint16, CRGBA &) { EAXJMP(0x4889C0); } -#else -void CMenuManager::FilterOutColorMarkersFromString(uint16, CRGBA &) +void +CMenuManager::FilterOutColorMarkersFromString(wchar *str, CRGBA &newColor) { + int newIdx = 0; + wchar copy[256], *c; + UnicodeStrcpy(copy, str); + for (c = copy; *c != '\0'; c++) { + if (*c == '~') { + c++; + switch (*c) { + case 'b': newColor = CRGBA(40, 40, 255, 255); break; + case 'g': newColor = CRGBA(40, 235, 40, 255); break; + // There is no case for "h", is that a mistake? + case 'l': newColor = CRGBA(0, 0, 0, 255); break; + case 'p': newColor = CRGBA(255, 0, 255, 255); break; + case 'r': newColor = CRGBA(255, 0, 0, 255); break; + case 'w': newColor = CRGBA(255, 255, 255, 255); break; + case 'y': newColor = CRGBA(255, 255, 0, 255); break; + } + while (*c != '~') c++; + } else { + str[newIdx++] = *c; + } + } + str[newIdx] = '\0'; } -#endif -#if 1 -WRAPPER int CMenuManager::GetStartOptionsCntrlConfigScreens() { EAXJMP(0x489270); } -#else -int CMenuManager::GetStartOptionsCntrlConfigScreens() +int +CMenuManager::GetStartOptionsCntrlConfigScreens() { - + int number = 0; + switch (m_nCurrScreen) { + case MENUPAGE_CONTROLLER_PC_OLD3: + number = 34; + break; + case MENUPAGE_CONTROLLER_DEBUG: + number = 35; + break; + case MENUPAGE_KEYBOARD_CONTROLS: + number = 0; + break; + default: + break; + } + return number; } -#endif -void CMenuManager::InitialiseChangedLanguageSettings() +void +CMenuManager::InitialiseChangedLanguageSettings() { if (m_bFrontEnd_ReloadObrTxtGxt) { m_bFrontEnd_ReloadObrTxtGxt = false; @@ -2515,7 +2893,7 @@ void CMenuManager::InitialiseChangedLanguageSettings() CGame::frenchGame = false; CGame::germanGame = false; #ifdef MORE_LANGUAGES - switch (CMenuManager::m_PrefsLanguage) { + switch (m_PrefsLanguage) { case LANGUAGE_RUSSIAN: CFont::ReloadFonts(FONT_LANGSET_RUSSIAN); break; @@ -2525,7 +2903,7 @@ void CMenuManager::InitialiseChangedLanguageSettings() } #endif - switch (CMenuManager::m_PrefsLanguage) { + switch (m_PrefsLanguage) { case LANGUAGE_FRENCH: CGame::frenchGame = true; break; @@ -2543,22 +2921,23 @@ void CMenuManager::InitialiseChangedLanguageSettings() } } -void CMenuManager::LoadAllTextures() +void +CMenuManager::LoadAllTextures() { if (m_bSpritesLoaded) return; - CMenuManager::CentreMousePointer(); + CentreMousePointer(); DMAudio.ChangeMusicMode(MUSICMODE_FRONTEND); DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_STARTING, 0); m_nCurrOption = 0; m_PrefsRadioStation = DMAudio.GetRadioInCar(); if (DMAudio.IsMP3RadioChannelAvailable()) { - if (CMenuManager::m_PrefsRadioStation > USERTRACK) - CMenuManager::m_PrefsRadioStation = CGeneral::GetRandomNumber() % 10; - } else if (CMenuManager::m_PrefsRadioStation > CHATTERBOX) - CMenuManager::m_PrefsRadioStation = CGeneral::GetRandomNumber() % 9; + if (m_PrefsRadioStation > USERTRACK) + m_PrefsRadioStation = CGeneral::GetRandomNumber() % 10; + } else if (m_PrefsRadioStation > CHATTERBOX) + m_PrefsRadioStation = CGeneral::GetRandomNumber() % 9; CFileMgr::SetDir(""); //CFileMgr::SetDir(""); @@ -2607,10 +2986,9 @@ void CMenuManager::LoadAllTextures() m_bSpritesLoaded = true; CTxdStore::PopCurrentTxd(); } -#if 0 -WRAPPER void CMenuManager::LoadSettings() { EAXJMP(0x488EE0); } -#else -void CMenuManager::LoadSettings() + +void +CMenuManager::LoadSettings() { CFileMgr::SetDirMyDocuments(); int fileHandle = CFileMgr::OpenFile("gta3.set", "r"); @@ -2699,12 +3077,9 @@ void CMenuManager::LoadSettings() strcpy(m_aSkinName, "$$\"\""); } } -#endif -#if 0 -WRAPPER void CMenuManager::SaveSettings() { EAXJMP(0x488CC0); } -#else -void CMenuManager::SaveSettings() +void +CMenuManager::SaveSettings() { static char RubbishString[48] = "stuffmorestuffevenmorestuff etc"; @@ -2747,44 +3122,115 @@ void CMenuManager::SaveSettings() CFileMgr::CloseFile(fileHandle); CFileMgr::SetDir(""); } -#endif -#if 1 -WRAPPER void CMenuManager::MessageScreen(char *) { EAXJMP(0x48B7E0); } -#else -void CMenuManager::MessageScreen(char *) +bool DoRWStuffStartOfFrame(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomRed, int16 BottomGreen, int16 BottomBlue, int16 Alpha); +void DoRWStuffEndOfFrame(void); + +void +CMenuManager::MessageScreen(const char *text) { + CSprite2d *splash = LoadSplash(nil); + if (!DoRWStuffStartOfFrame(0, 0, 0, 0, 0, 0, 255)) + return; + CSprite2d::SetRecipNearClip(); + CSprite2d::InitPerFrame(); + CFont::InitPerFrame(); + DefinedState(); + + RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)rwTEXTUREADDRESSCLAMP); + splash->Draw(CRect(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT), CRGBA(255, 255, 255, 255)); + + CFont::SetBackgroundOff(); + CFont::SetPropOn(); + CFont::SetJustifyOn(); + CFont::SetBackGroundOnlyTextOn(); + CFont::SetWrapx(SCREEN_SCALE_FROM_RIGHT(170.0f)); + CFont::SetRightJustifyWrap(SCREEN_SCALE_FROM_RIGHT(170.0f)); + CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(120.0f), SCREEN_SCALE_Y(150.0f), SCREEN_SCALE_FROM_RIGHT(120.0f), SCREEN_SCALE_FROM_BOTTOM(220.0f)), CRGBA(50, 50, 50, 210)); + CFont::SetFontStyle(FONT_BANK); + CFont::SetCentreSize(SCREEN_SCALE_X(380.0f)); + CFont::SetCentreOn(); + CFont::SetColor(CRGBA(255, 217, 106, 255)); + CFont::SetScale(SCREEN_SCALE_X(SMALLTEXT_X_SCALE), SCREEN_SCALE_Y(SMALLTEXT_Y_SCALE)); + CFont::PrintString(SCREEN_SCALE_X(320.0f), SCREEN_SCALE_Y(170.0f), TheText.Get(text)); + CFont::DrawFonts(); + DoRWStuffEndOfFrame(); } -#endif -#if 1 -WRAPPER void CMenuManager::PickNewPlayerColour() { EAXJMP(0x488C40); } -#else -void CMenuManager::PickNewPlayerColour() +void +CMenuManager::PickNewPlayerColour() { - + m_PrefsPlayerRed = 0; + m_PrefsPlayerGreen = 0; + m_PrefsPlayerBlue = 0; + while (true) { + int sum = m_PrefsPlayerRed + m_PrefsPlayerGreen + m_PrefsPlayerBlue; + if (sum >= 100 && sum <= 650) + break; + m_PrefsPlayerRed = CGeneral::GetRandomNumber(); + m_PrefsPlayerGreen = CGeneral::GetRandomNumber(); + m_PrefsPlayerBlue = CGeneral::GetRandomNumber(); + } } -#endif -#if 1 -WRAPPER void CMenuManager::PrintBriefs() { EAXJMP(0x484D60); } -#else -void CMenuManager::PrintBriefs() +void +CMenuManager::PrintBriefs() { + CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255))); + CFont::SetFontStyle(FONT_BANK); + CFont::SetRightJustifyOff(); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X * 0.7), MENU_Y(MENU_TEXT_SIZE_Y * 0.9)); // second mulipliers are double, idk why -} + float nextY = 40.0f; + CRGBA newColor; + for (int i = 4; i >= 0; i--) { + tPreviousBrief &brief = CMessages::PreviousBriefs[i]; + if (brief.m_pText) { + CMessages::InsertNumberInString(brief.m_pText, + brief.m_nNumber[0], brief.m_nNumber[1], + brief.m_nNumber[2], brief.m_nNumber[3], + brief.m_nNumber[4], brief.m_nNumber[5], gUString); + CMessages::InsertStringInString(gUString, brief.m_pString); + CMessages::InsertPlayerControlKeysInString(gUString); + newColor = TEXT_COLOR; + FilterOutColorMarkersFromString(gUString, newColor); + + // newColor wasn't used at all! let's fix this + bool rgSame = newColor.r == TEXT_COLOR.r && newColor.g == TEXT_COLOR.g; + bool bSame = rgSame && newColor.b == TEXT_COLOR.b; + bool colorNotChanged = bSame +#ifndef FIX_BUGS + && newColor.a == TEXT_COLOR.a #endif + ; -#if DONT_USE_SUSPICIOUS_FUNCS -WRAPPER void CMenuManager::PrintErrorMessage() { EAXJMP(0x484F70); } -#else -void CMenuManager::PrintErrorMessage() + if (!colorNotChanged) { + newColor.r /= 2; + newColor.g /= 2; + newColor.b /= 2; + } +#ifdef FIX_BUGS + newColor.a = FadeIn(255); + // because some colors aren't visible, due to they were made for PS2 + CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255))); + CFont::SetDropShadowPosition(1); + CFont::SetColor(newColor); +#endif + CFont::PrintString(MENU_X_LEFT_ALIGNED(50.0f), nextY, gUString); + nextY += MENU_Y(menuXYpadding); + } + } +} + +// Not sure about name. Not to be confused with CPad::PrintErrorMessage +void +CMenuManager::PrintErrorMessage() { if (!CPad::bDisplayNoControllerMessage && !CPad::bObsoleteControllerMessage) return; - CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(20.0f), SCREEN_SCALE_Y(140.0f), SCREEN_WIDTH - SCREEN_SCALE_X(20.0f), SCREEN_HEIGHT - SCREEN_SCALE_Y(140.0f)), CRGBA(64, 16, 16, 224)); + CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(20.0f), SCREEN_SCALE_Y(140.0f), SCREEN_SCALE_FROM_RIGHT(20.0f), SCREEN_SCALE_FROM_BOTTOM(120.0f)), CRGBA(64, 16, 16, 224)); CFont::SetFontStyle(FONT_BANK); CFont::SetBackgroundOff(); CFont::SetPropOn(); @@ -2792,27 +3238,96 @@ void CMenuManager::PrintErrorMessage() CFont::SetJustifyOn(); CFont::SetRightJustifyOff(); CFont::SetBackGroundOnlyTextOn(); - CFont::SetWrapx(SCREEN_WIDTH - 40.0f); - CFont::SetColor(CRGBA(165, 165, 165, 255)); - CFont::SetScale(SCREEN_SCALE_X(0.9f), SCREEN_SCALE_Y(0.9f)); - CFont::PrintString(SCREEN_SCALE_X(40.0f), (SCREEN_HEIGHT / 2) - SCREEN_SCALE_Y(60.0f), TheText.Get(CPad::bDisplayNoControllerMessage ? "NOCONT" : "WRCONT")); + CFont::SetWrapx(SCREEN_SCALE_FROM_RIGHT(40.0f)); +#ifdef FIX_BUGS + CFont::PrintString(SCREEN_SCALE_X(50.0f), SCREEN_SCALE_Y(180.0f), TheText.Get(CPad::bDisplayNoControllerMessage ? "NOCONT" : "WRCONT")); +#else + CFont::PrintString(SCREEN_SCALE_X(50.0f), SCREEN_SCALE_Y(40.0f), TheText.Get(CPad::bDisplayNoControllerMessage ? "NOCONT" : "WRCONT")); +#endif CFont::DrawFonts(); } -#endif -#if 1 -WRAPPER void CMenuManager::PrintStats() { EAXJMP(0x482100); } -#else -void CMenuManager::PrintStats() +void +CMenuManager::PrintStats() { + int rowNum = ConstructStatLine(99999); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X * 0.7), MENU_Y(MENU_TEXT_SIZE_Y * 0.9)); // second mulipliers are double, idk why + float nextYChange, y, alphaMult; -} + // Scroll stats with mouse +#ifdef SCROLLABLE_STATS_PAGE + static float scrollY = 0; + static uint32 lastChange = m_nScreenChangeDelayTimer; + if (CPad::GetPad(0)->GetLeftMouse()) { + scrollY += (m_nMouseOldPosY - m_nMousePosY); + lastChange = CTimer::GetTimeInMillisecondsPauseMode(); + } else { + scrollY += MENU_Y(STATS_SLIDE_Y_PER_SECOND) / 1000.0f * (CTimer::GetTimeInMillisecondsPauseMode() - lastChange); + lastChange = CTimer::GetTimeInMillisecondsPauseMode(); + } +#else + // MENU_Y(30.0f) per second + float scrollY = MENU_Y(STATS_SLIDE_Y_PER_SECOND) * (CTimer::GetTimeInMillisecondsPauseMode() - m_nScreenChangeDelayTimer) / 1000.0f; #endif -#if 0 -WRAPPER void CMenuManager::Process(void) { EAXJMP(0x485100); } -#else -void CMenuManager::Process(void) + for (int row = 0; row < rowNum; ++row) { + // Put just got hidden text at the top back to the bottom, in circular fashion + for (y = MENU_Y(STATS_ROW_HEIGHT - 1) * row + SCREEN_HEIGHT - scrollY; MENU_Y(STATS_PUT_BACK_TO_BOTTOM_Y) > y; y += nextYChange) { + nextYChange = (MENU_Y(STATS_ROW_HEIGHT) + rowNum) * MENU_Y(STATS_ROW_HEIGHT - 1); + } + + // If it's still on screen + if (y > 0.0f && SCREEN_HEIGHT > y) { + ConstructStatLine(row); + + // But about to dim from top + if (y - MENU_Y(STATS_BOTTOM_MARGIN) < MENU_Y(STATS_TOP_DIMMING_AREA_LENGTH)) { + if ((y - MENU_Y(STATS_BOTTOM_MARGIN)) / MENU_Y(STATS_TOP_DIMMING_AREA_LENGTH) < 0.0f) + alphaMult = 0.0f; + else + alphaMult = (y - MENU_Y(STATS_BOTTOM_MARGIN)) / MENU_Y(STATS_TOP_DIMMING_AREA_LENGTH); + + // About to dim from bottom + } else if (y > SCREEN_SCALE_FROM_BOTTOM(STATS_TOP_DIMMING_AREA_LENGTH) - MENU_Y(STATS_BOTTOM_DIMMING_AREA_LENGTH)) { + if ((SCREEN_SCALE_FROM_BOTTOM(STATS_BOTTOM_DIMMING_AREA_LENGTH) - y) / MENU_Y(STATS_TOP_DIMMING_AREA_LENGTH) < 0.0f) + alphaMult = 0.0f; + else + alphaMult = (SCREEN_SCALE_FROM_BOTTOM(STATS_BOTTOM_DIMMING_AREA_LENGTH) - y) / MENU_Y(STATS_TOP_DIMMING_AREA_LENGTH); + } else + alphaMult = 1.0f; + + CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255.0f * alphaMult))); + CFont::SetRightJustifyOff(); + CFont::PrintString(MENU_X_LEFT_ALIGNED(STATS_ROW_X_MARGIN), y - MENU_Y(STATS_BOTTOM_MARGIN - STATS_TOP_MARGIN), gUString); + CFont::SetRightJustifyOn(); + CFont::PrintString(MENU_X_RIGHT_ALIGNED(STATS_ROW_X_MARGIN), y - MENU_Y(STATS_BOTTOM_MARGIN - STATS_TOP_MARGIN), gUString2); + } + } + // Game doesn't do that, but it's better + float nextX = MENU_X_LEFT_ALIGNED(STATS_RATING_X); + + CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255))); + CFont::SetRightJustifyOff(); + CFont::PrintString(nextX, MENU_Y(STATS_RATING_Y), TheText.Get("CRIMRA")); nextX += MENU_X(10.0f) + CFont::GetStringWidth(TheText.Get("CRIMRA"), true); + UnicodeStrcpy(gUString, CStats::FindCriminalRatingString()); + CFont::PrintString(nextX, MENU_Y(STATS_RATING_Y), gUString); nextX += MENU_X(6.0f) + CFont::GetStringWidth(gUString, true); + sprintf(gString, "%d", CStats::FindCriminalRatingNumber()); + AsciiToUnicode(gString, gUString); + CFont::PrintString(nextX, MENU_Y(STATS_RATING_Y), gUString); + + // ::Draw already does that. + /* + CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255))); + CFont::SetRightJustifyOn(); + CFont::SetFontStyle(FONT_HEADING); + CFont::SetScale(MENU_X(MENUHEADER_WIDTH), MENU_Y(MENUHEADER_HEIGHT)); + CFont::PrintString(MENU_X_RIGHT_ALIGNED(MENUHEADER_POS_X), SCREEN_SCALE_FROM_BOTTOM(MENUHEADER_POS_Y), TheText.Get(aScreens[m_nCurrScreen].m_ScreenName)); + */ + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X), MENU_Y(MENU_TEXT_SIZE_Y)); +} + +void +CMenuManager::Process(void) { m_bMenuStateChanged = false; @@ -2888,8 +3403,8 @@ void CMenuManager::Process(void) m_bStartWaitingForKeyBind = false; else { pControlEdit = CPad::EditCodesForControls(pControlEdit, 1); - JoyButtonJustClicked = 0; - MouseButtonJustClicked = 0; + JoyButtonJustClicked = false; + MouseButtonJustClicked = false; if (CPad::GetPad(0)->GetLeftMouseJustDown()) MouseButtonJustClicked = 1; @@ -2905,13 +3420,13 @@ void CMenuManager::Process(void) JoyButtonJustClicked = ControlsManager.GetJoyButtonJustDown(); - int32 TypeOfControl = 0; + int32 TypeOfControl = KEYBOARD; if (JoyButtonJustClicked) - TypeOfControl = 3; + TypeOfControl = JOYSTICK; if (MouseButtonJustClicked) - TypeOfControl = 2; + TypeOfControl = MOUSE; if (*pControlEdit != rsNULL) - TypeOfControl = 0; + TypeOfControl = KEYBOARD; if (!m_bKeyIsOK) { DMAudio.PlayFrontEndSound(SOUND_FRONTEND_FAIL, 0); @@ -2919,14 +3434,12 @@ void CMenuManager::Process(void) m_bWaitingForNewKeyBind = false; m_KeyPressedCode = -1; m_bStartWaitingForKeyBind = false; - } - else if (!m_bKeyChangeNotProcessed) { + } else if (!m_bKeyChangeNotProcessed) { if (*pControlEdit != rsNULL || MouseButtonJustClicked || JoyButtonJustClicked) CheckCodesForControls(TypeOfControl); field_535 = true; - } - else { + } else { DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); for (int i = 0; i < 4; i++) ControlsManager.ClearSettingsAssociatedWithAction((e_ControllerAction)m_CurrCntrlAction, (eControllerType)i); @@ -2940,7 +3453,7 @@ void CMenuManager::Process(void) } } - if ((m_nCurrScreen == MENUPAGE_13 || m_nCurrScreen == MENUPAGE_16) && CTimer::GetTimeInMillisecondsPauseMode() > field_558) { + if ((m_nCurrScreen == MENUPAGE_NO_MEMORY_CARD || m_nCurrScreen == MENUPAGE_PS2_LOAD_FAILED) && CTimer::GetTimeInMillisecondsPauseMode() > field_558) { m_nCurrScreen = m_nPrevScreen; m_nCurrOption = 0; } @@ -2965,11 +3478,7 @@ void CMenuManager::Process(void) DMAudio.Service(); } } -#endif -#if 0 -WRAPPER void CMenuManager::ProcessButtonPresses() { EAXJMP(0x4856F0); } -#else void CMenuManager::ProcessButtonPresses(void) { @@ -3277,10 +3786,10 @@ CMenuManager::ProcessButtonPresses(void) #ifdef TIDY_UP_PBP if (m_nHoverOption >= HOVEROPTION_RADIO_0 && m_nHoverOption <= HOVEROPTION_RADIO_9) { DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); - CMenuManager::m_PrefsRadioStation = m_nHoverOption - HOVEROPTION_RADIO_0; + m_PrefsRadioStation = m_nHoverOption - HOVEROPTION_RADIO_0; SaveSettings(); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("FRONTEND RADIO STATION CHANGED"); } else if (m_nHoverOption == HOVEROPTION_RANDOM_ITEM && aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action != MENUACTION_RESUME) { @@ -3291,82 +3800,82 @@ CMenuManager::ProcessButtonPresses(void) switch (m_nHoverOption) { case HOVEROPTION_RADIO_0: DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); - CMenuManager::m_PrefsRadioStation = HEAD_RADIO; + m_PrefsRadioStation = HEAD_RADIO; SaveSettings(); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_1: DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); - CMenuManager::m_PrefsRadioStation = DOUBLE_CLEF; + m_PrefsRadioStation = DOUBLE_CLEF; SaveSettings(); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_2: DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); - CMenuManager::m_PrefsRadioStation = JAH_RADIO; + m_PrefsRadioStation = JAH_RADIO; SaveSettings(); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_3: DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); - CMenuManager::m_PrefsRadioStation = RISE_FM; + m_PrefsRadioStation = RISE_FM; SaveSettings(); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_4: DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); - CMenuManager::m_PrefsRadioStation = LIPS_106; + m_PrefsRadioStation = LIPS_106; SaveSettings(); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_5: DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); - CMenuManager::m_PrefsRadioStation = GAME_FM; + m_PrefsRadioStation = GAME_FM; SaveSettings(); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_6: DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); - CMenuManager::m_PrefsRadioStation = MSX_FM; + m_PrefsRadioStation = MSX_FM; SaveSettings(); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_7: DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); - CMenuManager::m_PrefsRadioStation = FLASHBACK; + m_PrefsRadioStation = FLASHBACK; SaveSettings(); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_8: DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); - CMenuManager::m_PrefsRadioStation = CHATTERBOX; + m_PrefsRadioStation = CHATTERBOX; SaveSettings(); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_9: DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); - CMenuManager::m_PrefsRadioStation = USERTRACK; + m_PrefsRadioStation = USERTRACK; SaveSettings(); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RANDOM_ITEM: @@ -3383,74 +3892,74 @@ CMenuManager::ProcessButtonPresses(void) #ifndef TIDY_UP_PBP switch (m_nHoverOption) { case HOVEROPTION_INCREASE_BRIGHTNESS: - CMenuManager::m_PrefsBrightness = CMenuManager::m_PrefsBrightness + 32; - if (CMenuManager::m_PrefsBrightness < 0) { - CMenuManager::m_PrefsBrightness = 0; + m_PrefsBrightness = m_PrefsBrightness + 32; + if (m_PrefsBrightness < 0) { + m_PrefsBrightness = 0; } - if (510 < CMenuManager::m_PrefsBrightness) { - CMenuManager::m_PrefsBrightness = 511; + if (510 < m_PrefsBrightness) { + m_PrefsBrightness = 511; } SaveSettings(); break; case HOVEROPTION_DECREASE_BRIGHTNESS: - CMenuManager::m_PrefsBrightness = CMenuManager::m_PrefsBrightness - 32; - if (CMenuManager::m_PrefsBrightness < 0) { - CMenuManager::m_PrefsBrightness = 0; + m_PrefsBrightness = m_PrefsBrightness - 32; + if (m_PrefsBrightness < 0) { + m_PrefsBrightness = 0; } - if (510 < CMenuManager::m_PrefsBrightness) { - CMenuManager::m_PrefsBrightness = 511; + if (510 < m_PrefsBrightness) { + m_PrefsBrightness = 511; } SaveSettings(); break; case HOVEROPTION_INCREASE_DRAWDIST: - CMenuManager::m_PrefsLOD = CMenuManager::m_PrefsLOD + (1.0f / 16); + m_PrefsLOD = m_PrefsLOD + (1.0f / 16); m_PrefsLOD = min(1.8f, m_PrefsLOD); - CRenderer::ms_lodDistScale = CMenuManager::m_PrefsLOD; + CRenderer::ms_lodDistScale = m_PrefsLOD; SaveSettings(); break; case HOVEROPTION_DECREASE_DRAWDIST: - CMenuManager::m_PrefsLOD = CMenuManager::m_PrefsLOD - (1.0f / 16); + m_PrefsLOD = m_PrefsLOD - (1.0f / 16); m_PrefsLOD = max(0.8f, m_PrefsLOD); - CRenderer::ms_lodDistScale = CMenuManager::m_PrefsLOD; + CRenderer::ms_lodDistScale = m_PrefsLOD; SaveSettings(); break; case HOVEROPTION_INCREASE_MUSICVOLUME: - CMenuManager::m_PrefsMusicVolume = CMenuManager::m_PrefsMusicVolume + 8; + m_PrefsMusicVolume = m_PrefsMusicVolume + 8; m_PrefsMusicVolume = clamp(m_PrefsMusicVolume, 0, 127); - DMAudio.SetMusicMasterVolume(uchar)(CMenuManager::m_PrefsMusicVolume); + DMAudio.SetMusicMasterVolume(uchar)(m_PrefsMusicVolume); SaveSettings(); break; case HOVEROPTION_DECREASE_MUSICVOLUME: - CMenuManager::m_PrefsMusicVolume = CMenuManager::m_PrefsMusicVolume - 8; - if (CMenuManager::m_PrefsMusicVolume < 0) { - CMenuManager::m_PrefsMusicVolume = 0; + m_PrefsMusicVolume = m_PrefsMusicVolume - 8; + if (m_PrefsMusicVolume < 0) { + m_PrefsMusicVolume = 0; } - if (126 < CMenuManager::m_PrefsMusicVolume) { - CMenuManager::m_PrefsMusicVolume = 127; + if (126 < m_PrefsMusicVolume) { + m_PrefsMusicVolume = 127; } - DMAudio.SetMusicMasterVolume(uchar)(CMenuManager::m_PrefsMusicVolume); + DMAudio.SetMusicMasterVolume(uchar)(m_PrefsMusicVolume); SaveSettings(); break; case HOVEROPTION_INCREASE_SFXVOLUME: - CMenuManager::m_PrefsSFXVolume = CMenuManager::m_PrefsSFXVolume + 8; - if (CMenuManager::m_PrefsSFXVolume < 0) { - CMenuManager::m_PrefsSFXVolume = 0; + m_PrefsSFXVolume = m_PrefsSFXVolume + 8; + if (m_PrefsSFXVolume < 0) { + m_PrefsSFXVolume = 0; } - if (126 < CMenuManager::m_PrefsSFXVolume) { - CMenuManager::m_PrefsSFXVolume = 127; + if (126 < m_PrefsSFXVolume) { + m_PrefsSFXVolume = 127; } - DMAudio.SetEffectsMasterVolume(uchar)(CMenuManager::m_PrefsSFXVolume); + DMAudio.SetEffectsMasterVolume(uchar)(m_PrefsSFXVolume); SaveSettings(); break; case HOVEROPTION_DECREASE_SFXVOLUME: - CMenuManager::m_PrefsSFXVolume = CMenuManager::m_PrefsSFXVolume - 8; - if (CMenuManager::m_PrefsSFXVolume < 0) { - CMenuManager::m_PrefsSFXVolume = 0; + m_PrefsSFXVolume = m_PrefsSFXVolume - 8; + if (m_PrefsSFXVolume < 0) { + m_PrefsSFXVolume = 0; } - if (126 < CMenuManager::m_PrefsSFXVolume) { - CMenuManager::m_PrefsSFXVolume = 127; + if (126 < m_PrefsSFXVolume) { + m_PrefsSFXVolume = 127; } - DMAudio.SetEffectsMasterVolume(uchar)(CMenuManager::m_PrefsSFXVolume); + DMAudio.SetEffectsMasterVolume(uchar)(m_PrefsSFXVolume); SaveSettings(); break; case HOVEROPTION_INCREASE_MOUSESENS: @@ -3664,7 +4173,7 @@ CMenuManager::ProcessButtonPresses(void) strcpy(m_PrefsSkinFile, m_aSkinName); CWorld::Players[0].SetPlayerSkin(m_PrefsSkinFile); m_nCurrExLayer = HOVEROPTION_BACK; - CMenuManager::SaveSettings(); + SaveSettings(); } m_nHoverOption = HOVEROPTION_NOT_HOVERING; break; @@ -3700,54 +4209,54 @@ CMenuManager::ProcessButtonPresses(void) #ifdef TIDY_UP_PBP assumeIncrease = true; #else - ++CMenuManager::m_PrefsRadioStation; + ++m_PrefsRadioStation; if (DMAudio.IsMP3RadioChannelAvailable()) { - if (CMenuManager::m_PrefsRadioStation > USERTRACK) - CMenuManager::m_PrefsRadioStation = HEAD_RADIO; - } else if (CMenuManager::m_PrefsRadioStation > CHATTERBOX) { - CMenuManager::m_PrefsRadioStation = USERTRACK; + if (m_PrefsRadioStation > USERTRACK) + m_PrefsRadioStation = HEAD_RADIO; + } else if (m_PrefsRadioStation > CHATTERBOX) { + m_PrefsRadioStation = USERTRACK; } SaveSettings(); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("FRONTEND RADIO STATION CHANGED"); #endif break; case MENUACTION_LANG_ENG: m_PrefsLanguage = LANGUAGE_AMERICAN; m_bFrontEnd_ReloadObrTxtGxt = true; - CMenuManager::InitialiseChangedLanguageSettings(); - CMenuManager::SaveSettings(); + InitialiseChangedLanguageSettings(); + SaveSettings(); break; case MENUACTION_LANG_FRE: m_PrefsLanguage = LANGUAGE_FRENCH; m_bFrontEnd_ReloadObrTxtGxt = true; - CMenuManager::InitialiseChangedLanguageSettings(); - CMenuManager::SaveSettings(); + InitialiseChangedLanguageSettings(); + SaveSettings(); break; case MENUACTION_LANG_GER: m_PrefsLanguage = LANGUAGE_GERMAN; m_bFrontEnd_ReloadObrTxtGxt = true; - CMenuManager::InitialiseChangedLanguageSettings(); - CMenuManager::SaveSettings(); + InitialiseChangedLanguageSettings(); + SaveSettings(); break; case MENUACTION_LANG_ITA: m_PrefsLanguage = LANGUAGE_ITALIAN; m_bFrontEnd_ReloadObrTxtGxt = true; - CMenuManager::InitialiseChangedLanguageSettings(); - CMenuManager::SaveSettings(); + InitialiseChangedLanguageSettings(); + SaveSettings(); break; case MENUACTION_LANG_SPA: m_PrefsLanguage = LANGUAGE_SPANISH; m_bFrontEnd_ReloadObrTxtGxt = true; - CMenuManager::InitialiseChangedLanguageSettings(); + InitialiseChangedLanguageSettings(); SaveSettings(); break; #ifdef MORE_LANGUAGES case MENUACTION_LANG_RUS: m_PrefsLanguage = LANGUAGE_RUSSIAN; m_bFrontEnd_ReloadObrTxtGxt = true; - CMenuManager::InitialiseChangedLanguageSettings(); + InitialiseChangedLanguageSettings(); SaveSettings(); break; #endif @@ -3779,7 +4288,7 @@ CMenuManager::ProcessButtonPresses(void) if (changeMenu) { if (strncmp(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_EntryName, "FEDS_TB", 8) == 0) { #ifndef TIDY_UP_PBP - CMenuManager::ResetHelperText(); + ResetHelperText(); if (!m_bGameNotLoaded) ChangeScreen(aScreens[m_nCurrScreen].m_PreviousPage[1], aScreens[m_nCurrScreen].m_ParentEntry[1], true, true); else @@ -3794,6 +4303,9 @@ CMenuManager::ProcessButtonPresses(void) fMapCenterX = SCREEN_WIDTH / 2; fMapCenterY = SCREEN_HEIGHT / 3; fMapSize = SCREEN_HEIGHT / CDraw::GetAspectRatio(); + bMapMouseShownOnce = false; + CPad::GetPad(0)->Clear(false); + CPad::GetPad(1)->Clear(false); } #endif @@ -3815,7 +4327,7 @@ CMenuManager::ProcessButtonPresses(void) break; } case MENUACTION_NEWGAME: - CMenuManager::DoSettingsBeforeStartingAGame(); + DoSettingsBeforeStartingAGame(); break; case MENUACTION_RELOADIDE: // TODO @@ -3830,7 +4342,7 @@ CMenuManager::ProcessButtonPresses(void) case MENUACTION_MEMCARDSAVECONFIRM: return; case MENUACTION_RESUME_FROM_SAVEZONE: - CMenuManager::RequestFrontEndShutDown(); + RequestFrontEndShutDown(); break; case MENUACTION_MPMAP_LIBERTY: case MENUACTION_MPMAP_REDLIGHT: @@ -3840,8 +4352,8 @@ CMenuManager::ProcessButtonPresses(void) case MENUACTION_MPMAP_INDUSTPARK: case MENUACTION_MPMAP_DOCKS: case MENUACTION_MPMAP_STAUNTON: - sthWithButtons = option - MENUACTION_MPMAP_LIBERTY; - CMenuManager::SaveSettings(); + m_SelectedMap = option - MENUACTION_MPMAP_LIBERTY; + SaveSettings(); ChangeScreen(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_TargetMenu, 0, true, true); break; case MENUACTION_MPMAP_DEATHMATCH1: @@ -3852,8 +4364,8 @@ CMenuManager::ProcessButtonPresses(void) case MENUACTION_MPMAP_CAPTURE: case MENUACTION_MPMAP_RATRACE: case MENUACTION_MPMAP_DOMINATION: - sthWithButtons2 = option - MENUACTION_MPMAP_DEATHMATCH1; - CMenuManager::SaveSettings(); + m_SelectedGameType = option - MENUACTION_MPMAP_DEATHMATCH1; + SaveSettings(); ChangeScreen(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_TargetMenu, 0, true, true); break; case MENUACTION_REDEFCTRL: @@ -3874,10 +4386,10 @@ CMenuManager::ProcessButtonPresses(void) break; case MENUACTION_RESUME: #ifndef TIDY_UP_PBP - if (CMenuManager::m_PrefsVsyncDisp != CMenuManager::m_PrefsVsync) { - CMenuManager::m_PrefsVsync = CMenuManager::m_PrefsVsyncDisp; + if (m_PrefsVsyncDisp != m_PrefsVsync) { + m_PrefsVsync = m_PrefsVsyncDisp; } - CMenuManager::RequestFrontEndShutDown(); + RequestFrontEndShutDown(); #else goBack = true; #endif @@ -3929,26 +4441,25 @@ CMenuManager::ProcessButtonPresses(void) break; case MENUACTION_RESTOREDEF: if (m_nCurrScreen == MENUPAGE_SOUND_SETTINGS) { - CMenuManager::m_PrefsSfxVolume = 102; + m_PrefsSfxVolume = 102; m_PrefsSpeakers = 0; - CMenuManager::m_PrefsMusicVolume = 102; - // unused - // byte_95CDB5 = 0; - CMenuManager::m_PrefsRadioStation = HEAD_RADIO; + m_PrefsMusicVolume = 102; + m_PrefsStereoMono = 0; + m_PrefsRadioStation = HEAD_RADIO; DMAudio.SetMusicMasterVolume(102); - DMAudio.SetEffectsMasterVolume(CMenuManager::m_PrefsSfxVolume); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.SetEffectsMasterVolume(m_PrefsSfxVolume); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); SaveSettings(); } else if (m_nCurrScreen == MENUPAGE_GRAPHICS_SETTINGS) { - CMenuManager::m_PrefsFrameLimiter = true; - CMenuManager::m_PrefsBrightness = 256; - CMenuManager::m_PrefsVsyncDisp = true; - CMenuManager::m_PrefsLOD = 1.2f; - CMenuManager::m_PrefsVsync = true; + m_PrefsFrameLimiter = true; + m_PrefsBrightness = 256; + m_PrefsVsyncDisp = true; + m_PrefsLOD = 1.2f; + m_PrefsVsync = true; CRenderer::ms_lodDistScale = 1.2f; - CMenuManager::m_PrefsUseWideScreen = false; - CMenuManager::m_PrefsShowSubtitles = true; + m_PrefsUseWideScreen = false; + m_PrefsShowSubtitles = true; m_nDisplayVideoMode = m_nPrefsVideoMode; CMBlur::BlurOn = true; SaveSettings(); @@ -3962,23 +4473,23 @@ CMenuManager::ProcessButtonPresses(void) PSGLOBAL(joy1)->GetCapabilities(&devCaps); ControlsManager.InitDefaultControlConfigJoyPad(devCaps.dwButtons); } - CMenuManager::m_ControlMethod = CONTROL_STANDARD; + m_ControlMethod = CONTROL_STANDARD; MousePointerStateHelper.bInvertVertically = false; TheCamera.m_fMouseAccelHorzntl = 0.0025f; CVehicle::m_bDisableMouseSteering = true; TheCamera.m_bHeadBob = false; SaveSettings(); } - CMenuManager::SetHelperText(2); + SetHelperText(2); break; case MENUACTION_CTRLMETHOD: #ifndef TIDY_UP_PBP - if (CMenuManager::m_ControlMethod == CONTROL_CLASSIC) { + if (m_ControlMethod == CONTROL_CLASSIC) { CCamera::m_bUseMouse3rdPerson = true; - CMenuManager::m_ControlMethod = CONTROL_STANDARD; + m_ControlMethod = CONTROL_STANDARD; } else { CCamera::m_bUseMouse3rdPerson = false; - CMenuManager::m_ControlMethod = CONTROL_CLASSIC; + m_ControlMethod = CONTROL_CLASSIC; } SaveSettings(); #else @@ -3987,7 +4498,7 @@ CMenuManager::ProcessButtonPresses(void) break; case MENUACTION_LOADRADIO: ChangeScreen(MENUPAGE_SOUND_SETTINGS, 0, true, true); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("STARTED PLAYING FRONTEND AUDIO TRACK"); break; } @@ -3996,7 +4507,7 @@ CMenuManager::ProcessButtonPresses(void) } if (goBack) { - CMenuManager::ResetHelperText(); + ResetHelperText(); DMAudio.PlayFrontEndSound(SOUND_FRONTEND_EXIT, 0); #ifdef PS2_LIKE_MENU if (m_nCurrScreen == MENUPAGE_PAUSE_MENU || bottomBarActive) { @@ -4004,10 +4515,10 @@ CMenuManager::ProcessButtonPresses(void) if (m_nCurrScreen == MENUPAGE_PAUSE_MENU) { #endif if (!m_bGameNotLoaded && !m_bMenuStateChanged) { - if (CMenuManager::m_PrefsVsyncDisp != CMenuManager::m_PrefsVsync) { - CMenuManager::m_PrefsVsync = CMenuManager::m_PrefsVsyncDisp; + if (m_PrefsVsyncDisp != m_PrefsVsync) { + m_PrefsVsync = m_PrefsVsyncDisp; } - CMenuManager::RequestFrontEndShutDown(); + RequestFrontEndShutDown(); } // We're already resuming, we don't need further processing. @@ -4020,7 +4531,7 @@ CMenuManager::ProcessButtonPresses(void) #else else if (m_nCurrScreen == MENUPAGE_CHOOSE_SAVE_SLOT) { #endif - CMenuManager::RequestFrontEndShutDown(); + RequestFrontEndShutDown(); } // It's now in ThingsToDoBeforeLeavingPage() #ifndef TIDY_UP_PBP @@ -4068,13 +4579,13 @@ CMenuManager::ProcessButtonPresses(void) if (CPad::GetPad(0)->GetLeft() || CPad::GetPad(0)->GetPedWalkLeftRight() < 0 || CPad::GetPad(0)->GetDPadLeft()) { static uint32 lastSliderDecrease = 0; if (CTimer::GetTimeInMillisecondsPauseMode() - lastSliderDecrease > 150) { - CMenuManager::CheckSliderMovement(-1); + CheckSliderMovement(-1); lastSliderDecrease = CTimer::GetTimeInMillisecondsPauseMode(); } } else if (CPad::GetPad(0)->GetRight() || CPad::GetPad(0)->GetPedWalkLeftRight() > 0 || CPad::GetPad(0)->GetDPadRight()) { static uint32 lastSliderIncrease = 0; if (CTimer::GetTimeInMillisecondsPauseMode() - lastSliderIncrease > 150) { - CMenuManager::CheckSliderMovement(1); + CheckSliderMovement(1); lastSliderIncrease = CTimer::GetTimeInMillisecondsPauseMode(); } } @@ -4084,7 +4595,7 @@ CMenuManager::ProcessButtonPresses(void) increase = true; } else if (CPad::GetPad(0)->GetMouseWheelUpJustDown() && m_nCurrScreen != MENUPAGE_KEYBOARD_CONTROLS) { increase = true; - CMenuManager::CheckSliderMovement(1); + CheckSliderMovement(1); m_bShowMouse = true; } @@ -4092,7 +4603,7 @@ CMenuManager::ProcessButtonPresses(void) if (CPad::GetPad(0)->GetMouseWheelDownJustDown()) { if (m_nCurrScreen != MENUPAGE_KEYBOARD_CONTROLS) { decrease = true; - CMenuManager::CheckSliderMovement(-1); + CheckSliderMovement(-1); m_bShowMouse = true; } } @@ -4109,22 +4620,22 @@ CMenuManager::ProcessButtonPresses(void) if (changeValueBy != 0) { switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) { case MENUACTION_RADIO: - CMenuManager::m_PrefsRadioStation += changeValueBy; + m_PrefsRadioStation += changeValueBy; DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); if (DMAudio.IsMP3RadioChannelAvailable()) { - if (CMenuManager::m_PrefsRadioStation < HEAD_RADIO) - CMenuManager::m_PrefsRadioStation = USERTRACK; - if (CMenuManager::m_PrefsRadioStation > USERTRACK) - CMenuManager::m_PrefsRadioStation = HEAD_RADIO; + if (m_PrefsRadioStation < HEAD_RADIO) + m_PrefsRadioStation = USERTRACK; + if (m_PrefsRadioStation > USERTRACK) + m_PrefsRadioStation = HEAD_RADIO; } else { - if (CMenuManager::m_PrefsRadioStation < HEAD_RADIO) - CMenuManager::m_PrefsRadioStation = CHATTERBOX; - if (CMenuManager::m_PrefsRadioStation > CHATTERBOX) - CMenuManager::m_PrefsRadioStation = HEAD_RADIO; + if (m_PrefsRadioStation < HEAD_RADIO) + m_PrefsRadioStation = CHATTERBOX; + if (m_PrefsRadioStation > CHATTERBOX) + m_PrefsRadioStation = HEAD_RADIO; } - CMenuManager::SaveSettings(); - DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + SaveSettings(); + DMAudio.SetRadioInCar(m_PrefsRadioStation); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case MENUACTION_SCREENRES: @@ -4160,15 +4671,15 @@ CMenuManager::ProcessButtonPresses(void) m_PrefsSpeakers -= changeValueBy; m_PrefsSpeakers = clamp(m_PrefsSpeakers, 0, 2); DMAudio.SetSpeakerConfig(m_PrefsSpeakers); - CMenuManager::SaveSettings(); + SaveSettings(); DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); } break; case MENUACTION_CTRLMETHOD: - CMenuManager::m_ControlMethod = !m_ControlMethod; + m_ControlMethod = !m_ControlMethod; CCamera::m_bUseMouse3rdPerson = !m_ControlMethod; DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); - CMenuManager::SaveSettings(); + SaveSettings(); break; } ProcessOnOffMenuOptions(); @@ -4182,12 +4693,9 @@ CMenuManager::ProcessButtonPresses(void) } } } -#endif -#if 0 -WRAPPER void CMenuManager::ProcessOnOffMenuOptions() { EAXJMP(0x48AE60); } -#else -void CMenuManager::ProcessOnOffMenuOptions() +void +CMenuManager::ProcessOnOffMenuOptions() { switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) { case MENUACTION_CTRLVIBRATION: @@ -4265,7 +4773,9 @@ void CMenuManager::ProcessOnOffMenuOptions() DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); break; case MENUACTION_MP_PLAYERCOLOR: - assert(0 && "Not implemented"); + PickNewPlayerColour(); + DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); + SaveSettings(); break; case MENUACTION_SHOWHEADBOB: TheCamera.m_bHeadBob = !TheCamera.m_bHeadBob; @@ -4290,34 +4800,29 @@ void CMenuManager::ProcessOnOffMenuOptions() break; } } -#endif -void CMenuManager::RequestFrontEndShutDown() +void +CMenuManager::RequestFrontEndShutDown() { m_bShutDownFrontEndRequested = true; DMAudio.ChangeMusicMode(MUSICMODE_GAME); } -#if DONT_USE_SUSPICIOUS_FUNCS -WRAPPER void CMenuManager::RequestFrontEndStartUp() { EAXJMP(0x488770); } -#else -void CMenuManager::RequestFrontEndStartUp() +void +CMenuManager::RequestFrontEndStartUp() { m_bStartUpFrontEndRequested = true; } -#endif -#if DONT_USE_SUSPICIOUS_FUNCS -WRAPPER void CMenuManager::ResetHelperText() { EAXJMP(0x48B470); } -#else -void CMenuManager::ResetHelperText() +void +CMenuManager::ResetHelperText() { m_nHelperTextMsgId = 0; m_nHelperTextAlpha = 300; } -#endif -void CMenuManager::SaveLoadFileError_SetUpErrorScreen() +void +CMenuManager::SaveLoadFileError_SetUpErrorScreen() { switch (PcSaveHelper.nErrorCode) { case SAVESTATUS_ERR_SAVE_CREATE: @@ -4341,27 +4846,22 @@ void CMenuManager::SaveLoadFileError_SetUpErrorScreen() } } -#if DONT_USE_SUSPICIOUS_FUNCS -WRAPPER void CMenuManager::SetHelperText(int text) { EAXJMP(0x48B450); } -#else -void CMenuManager::SetHelperText(int text) +void +CMenuManager::SetHelperText(int text) { m_nHelperTextMsgId = text; m_nHelperTextAlpha = 300; } -#endif -#if DONT_USE_SUSPICIOUS_FUNCS -WRAPPER void CMenuManager::ShutdownJustMenu() { EAXJMP(0x488920); } -#else -void CMenuManager::ShutdownJustMenu() +void +CMenuManager::ShutdownJustMenu() { m_bMenuActive = false; CTimer::EndUserPause(); } -#endif -float CMenuManager::StretchX(float x) +float +CMenuManager::StretchX(float x) { if (SCREEN_WIDTH == DEFAULT_SCREEN_WIDTH) return x; @@ -4379,10 +4879,8 @@ float CMenuManager::StretchY(float y) return SCREEN_STRETCH_Y(y); } -#if 0 -WRAPPER void CMenuManager::SwitchMenuOnAndOff() { EAXJMP(0x488790); } -#else -void CMenuManager::SwitchMenuOnAndOff() +void +CMenuManager::SwitchMenuOnAndOff() { bool menuWasActive = !!m_bMenuActive; @@ -4414,7 +4912,7 @@ void CMenuManager::SwitchMenuOnAndOff() m_bStartUpFrontEndRequested = false; pControlEdit = nil; m_bShutDownFrontEndRequested = false; - DisplayComboButtonErrMsg = 0; + DisplayComboButtonErrMsg = false; CPad::GetPad(0)->Clear(0); CPad::GetPad(1)->Clear(0); m_nCurrScreen = MENUPAGE_NONE; @@ -4449,12 +4947,9 @@ void CMenuManager::SwitchMenuOnAndOff() m_bStartUpFrontEndRequested = false; m_bShutDownFrontEndRequested = false; } -#endif -#if 0 -WRAPPER void CMenuManager::UnloadTextures() { EAXJMP(0x47A440); } -#else -void CMenuManager::UnloadTextures() +void +CMenuManager::UnloadTextures() { if (!m_bSpritesLoaded) return; @@ -4478,26 +4973,34 @@ void CMenuManager::UnloadTextures() m_bSpritesLoaded = false; } + +void +CMenuManager::WaitForUserCD() +{ + CSprite2d *splash; + char *splashscreen = nil; + +#ifndef RANDOMSPLASH + if (CGame::frenchGame || CGame::germanGame || !CGame::nastyGame) + splashscreen = "mainsc2"; + else + splashscreen = "mainsc1"; #endif -#if DONT_USE_SUSPICIOUS_FUNCS -WRAPPER void CMenuManager::WaitForUserCD(void) { EAXJMP(0x48ADD0); } -#else -void CMenuManager::WaitForUserCD() -{ - LoadSplash(0); - if (!RsGlobal.quit) { - HandleExit(); - CPad::UpdatePads(); - MessageScreen("NO_PCCD"); + splash = LoadSplash(splashscreen); - if (GetPadBack()) { - m_bQuitGameNoCD = true; - RsEventHandler(rsQUITAPP, 0); - } + if (RsGlobal.quit) + return; + + HandleExit(); + CPad::UpdatePads(); + MessageScreen("NO_PCCD"); + + if (CPad::GetPad(0)->GetEscapeJustDown()) { + m_bQuitGameNoCD = true; + RsEventHandler(rsQUITAPP, nil); } } -#endif void CMenuManager::PrintController(void) @@ -4760,7 +5263,7 @@ CMenuManager::PrintMap(void) fMapCenterX + halfTile, fMapCenterY - halfTile), CRGBA(255, 255, 255, FadeIn(255))); } - if (SCREEN_WIDTH >= fMapCenterX - halfTile || SCREEN_HEIGHT >= fMapCenterY - fMapSize) { + if (SCREEN_WIDTH >= fMapCenterX + halfTile || SCREEN_HEIGHT >= fMapCenterY - fMapSize) { m_aMapSprites[MAPTOP3].Draw(CRect(fMapCenterX + halfTile, fMapCenterY - fMapSize, fMapCenterX + fMapSize, fMapCenterY - halfTile), CRGBA(255, 255, 255, FadeIn(255))); } @@ -4775,47 +5278,55 @@ CMenuManager::PrintMap(void) fMapCenterX + halfTile, fMapCenterY + halfTile), CRGBA(255, 255, 255, FadeIn(255))); } - if (SCREEN_WIDTH >= fMapCenterX - halfTile || SCREEN_HEIGHT >= fMapCenterY - halfTile) { + if (SCREEN_WIDTH >= fMapCenterX + halfTile || SCREEN_HEIGHT >= fMapCenterY - halfTile) { m_aMapSprites[MAPMID3].Draw(CRect(fMapCenterX + halfTile, fMapCenterY - halfTile, fMapCenterX + fMapSize, fMapCenterY + halfTile), CRGBA(255, 255, 255, FadeIn(255))); } - if (SCREEN_WIDTH >= fMapCenterX - fMapSize || SCREEN_HEIGHT >= fMapCenterY - halfTile) { + if (SCREEN_WIDTH >= fMapCenterX - fMapSize || SCREEN_HEIGHT >= fMapCenterY + halfTile) { m_aMapSprites[MAPBOT1].Draw(CRect(fMapCenterX - fMapSize, fMapCenterY + halfTile, fMapCenterX - halfTile, fMapCenterY + fMapSize), CRGBA(255, 255, 255, FadeIn(255))); } - if (SCREEN_WIDTH >= fMapCenterX - halfTile || SCREEN_HEIGHT >= fMapCenterY - halfTile) { + if (SCREEN_WIDTH >= fMapCenterX - halfTile || SCREEN_HEIGHT >= fMapCenterY + halfTile) { m_aMapSprites[MAPBOT2].Draw(CRect(fMapCenterX - halfTile, fMapCenterY + halfTile, fMapCenterX + halfTile, fMapCenterY + fMapSize), CRGBA(255, 255, 255, FadeIn(255))); } - if (SCREEN_WIDTH >= fMapCenterX - halfTile || SCREEN_HEIGHT >= fMapCenterY - halfTile) { + if (SCREEN_WIDTH >= fMapCenterX + halfTile || SCREEN_HEIGHT >= fMapCenterY + halfTile) { m_aMapSprites[MAPBOT3].Draw(CRect(fMapCenterX + halfTile, fMapCenterY + halfTile, fMapCenterX + fMapSize, fMapCenterY + fMapSize), CRGBA(255, 255, 255, FadeIn(255))); } CRadar::DrawBlips(); - if (CPad::GetPad(0)->GetRightMouseJustDown()) { - if (m_nMousePosY > fMapCenterY - fMapSize && m_nMousePosY < fMapCenterY + fMapSize && - m_nMousePosX > fMapCenterX - fMapSize && m_nMousePosX < fMapCenterX + fMapSize) { + CVector2D mapPoint; + mapPoint.x = m_nMousePosX; + mapPoint.y = m_nMousePosY; - float diffX = fMapCenterX - fMapSize, diffY = fMapCenterY - fMapSize; - float x = ((m_nMousePosX - diffX) / (fMapSize * 2)) * 4000.0f - 2000.0f; - float y = 2000.0f - ((m_nMousePosY - diffY) / (fMapSize * 2)) * 4000.0f; - CRadar::ToggleTargetMarker(x, y); - } + if (m_bShowMouse) { + bMapMouseShownOnce = true; + } else if (!bMapMouseShownOnce) { + mapPoint.x = SCREEN_WIDTH / 2; + mapPoint.y = SCREEN_HEIGHT / 2; } - if (CPad::GetPad(0)->GetCrossJustDown()) { - if (SCREEN_HEIGHT / 2 > fMapCenterY - fMapSize && SCREEN_HEIGHT / 2 < fMapCenterY + fMapSize && - SCREEN_WIDTH / 2 > fMapCenterX - fMapSize && SCREEN_WIDTH / 2 < fMapCenterX + fMapSize) { + CSprite2d::DrawRect(CRect(mapPoint.x - MENU_X(1.0f), 0.0f, + mapPoint.x + MENU_X(1.0f), SCREEN_HEIGHT), + CRGBA(0, 0, 0, 150)); + CSprite2d::DrawRect(CRect(0.0f, mapPoint.y + MENU_X(1.0f), + SCREEN_WIDTH, mapPoint.y - MENU_X(1.0f)), + CRGBA(0, 0, 0, 150)); + + if (CPad::GetPad(0)->GetRightMouseJustDown() || CPad::GetPad(0)->GetCrossJustDown()) { + if (mapPoint.y > fMapCenterY - fMapSize && mapPoint.y < fMapCenterY + fMapSize && + mapPoint.x > fMapCenterX - fMapSize && mapPoint.x < fMapCenterX + fMapSize) { float diffX = fMapCenterX - fMapSize, diffY = fMapCenterY - fMapSize; - float x = ((SCREEN_WIDTH / 2 - diffX) / (fMapSize * 2)) * 4000.0f - 2000.0f; - float y = 2000.0f - ((SCREEN_HEIGHT / 2 - diffY) / (fMapSize * 2)) * 4000.0f; + float x = ((mapPoint.x - diffX) / (fMapSize * 2)) * 4000.0f - 2000.0f; + float y = 2000.0f - ((mapPoint.y - diffY) / (fMapSize * 2)) * 4000.0f; CRadar::ToggleTargetMarker(x, y); + DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0); } } @@ -4838,14 +5349,14 @@ CMenuManager::PrintMap(void) fMapCenterY -= CPad::GetPad(0)->GetLeftStickY() / 128.0f * 20.0f; } - if (CPad::GetPad(0)->GetMouseWheelDown() || CPad::GetPad(0)->GetPageUp() || CPad::GetPad(0)->GetRightShoulder2()) { + if (CPad::GetPad(0)->GetMouseWheelDown() || CPad::GetPad(0)->GetPageDown() || CPad::GetPad(0)->GetRightShoulder2()) { if (CPad::GetPad(0)->GetMouseWheelDown()) - ZOOM(m_nMousePosX, m_nMousePosY, false); + ZOOM(mapPoint.x, mapPoint.y, false); else ZOOM(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, false); - } else if (CPad::GetPad(0)->GetMouseWheelUp() || CPad::GetPad(0)->GetPageDown() || CPad::GetPad(0)->GetRightShoulder1()) { + } else if (CPad::GetPad(0)->GetMouseWheelUp() || CPad::GetPad(0)->GetPageUp() || CPad::GetPad(0)->GetRightShoulder1()) { if (CPad::GetPad(0)->GetMouseWheelUp()) - ZOOM(m_nMousePosX, m_nMousePosY, true); + ZOOM(mapPoint.x, mapPoint.y, true); else ZOOM(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, true); } @@ -4880,11 +5391,11 @@ CMenuManager::PrintMap(void) text = TheText.Get(key); CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), text); nextX += CFont::GetStringWidth(text, true) + MENU_X(extraSpace); TEXT_PIECE("FEC_MWF", 3.0f); - TEXT_PIECE("FEC_PGD", 1.0f); + TEXT_PIECE("FEC_PGU", 1.0f); TEXT_PIECE("FEC_IBT", 1.0f); TEXT_PIECE("FEC_ZIN", 20.0f); TEXT_PIECE("FEC_MWB", 3.0f); - TEXT_PIECE("FEC_PGU", 1.0f); + TEXT_PIECE("FEC_PGD", 1.0f); TEXT_PIECE("FEC_IBT", 1.0f); CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), TheText.Get("FEC_ZOT")); nextX = MENU_X(30.0f); nextY -= 11.0f; TEXT_PIECE("FEC_UPA", 2.0f); @@ -4903,6 +5414,179 @@ CMenuManager::PrintMap(void) #undef ZOOM #endif +// rowIdx 99999 returns total numbers of rows. otherwise it returns 0. +int +CMenuManager::ConstructStatLine(int rowIdx) +{ +#define STAT_LINE(str, left, isFloat, right) \ + do { \ + if(counter == rowIdx){ \ + BuildStatLine(str, left, isFloat, right); \ + return 0; \ + } counter++; \ + } while(0) + + int counter = 0, nTemp; + + STAT_LINE("PL_STAT", nil, false, nil); + + int percentCompleted = (CStats::TotalProgressInGame == 0 ? 0 : + CStats::ProgressMade * 100.0f / (CGame::nastyGame ? CStats::TotalProgressInGame : CStats::TotalProgressInGame - 1)); + percentCompleted = min(percentCompleted, 100); + + STAT_LINE("PER_COM", &percentCompleted, false, nil); + STAT_LINE("NMISON", &CStats::MissionsGiven, false, nil); + STAT_LINE("FEST_MP", &CStats::MissionsPassed, 0, &CStats::TotalNumberMissions); + if (CGame::nastyGame) { + STAT_LINE("FEST_RP", &CStats::NumberKillFrenziesPassed, 0, &CStats::TotalNumberKillFrenzies); + } + + CPlayerInfo &player = CWorld::Players[CWorld::PlayerInFocus]; + float packagesPercent = 0.0f; + if (player.m_nTotalPackages != 0) + packagesPercent = player.m_nCollectedPackages * 100.0f / player.m_nTotalPackages; + + STAT_LINE("PERPIC", &packagesPercent, 0, &(nTemp = 100)); + STAT_LINE("NOUNIF", &CStats::TotalNumberOfUniqueJumps, 0, &CStats::NumberOfUniqueJumpsFound); + STAT_LINE("DAYSPS", &CStats::DaysPassed, false, nil); + if (CGame::nastyGame) { + STAT_LINE("PE_WAST", &CStats::PeopleKilledByPlayer, false, nil); + STAT_LINE("PE_WSOT", &CStats::PeopleKilledByOthers, false, nil); + } + STAT_LINE("CAR_EXP", &CStats::CarsExploded, false, nil); + STAT_LINE("TM_BUST", &CStats::TimesArrested, false, nil); + STAT_LINE("TM_DED", &CStats::TimesDied, false, nil); + STAT_LINE("GNG_WST", &(nTemp = CStats::PedsKilledOfThisType[PEDTYPE_GANG9] + CStats::PedsKilledOfThisType[PEDTYPE_GANG8] + + CStats::PedsKilledOfThisType[PEDTYPE_GANG7] + CStats::PedsKilledOfThisType[PEDTYPE_GANG6] + + CStats::PedsKilledOfThisType[PEDTYPE_GANG5] + CStats::PedsKilledOfThisType[PEDTYPE_GANG4] + + CStats::PedsKilledOfThisType[PEDTYPE_GANG3] + CStats::PedsKilledOfThisType[PEDTYPE_GANG2] + + CStats::PedsKilledOfThisType[PEDTYPE_GANG1]), false, nil); + STAT_LINE("DED_CRI", &(nTemp = CStats::PedsKilledOfThisType[PEDTYPE_CRIMINAL]), false, nil); + STAT_LINE("HEL_DST", &CStats::HelisDestroyed, false, nil); + STAT_LINE("KGS_EXP", &CStats::KgsOfExplosivesUsed, false, nil); + STAT_LINE("ACCURA", &(nTemp = (CStats::InstantHitsFiredByPlayer == 0 ? 0 : + CStats::InstantHitsHitByPlayer * 100.0f / CStats::InstantHitsFiredByPlayer)), false, nil); + + if (CStats::ElBurroTime > 0) { + STAT_LINE("ELBURRO", &CStats::ElBurroTime, false, nil); + } + if (CStats::Record4x4One > 0) { + STAT_LINE("FEST_R1", &CStats::Record4x4One, false, nil); + } + if (CStats::Record4x4Two > 0) { + STAT_LINE("FEST_R2", &CStats::Record4x4Two, false, nil); + } + if (CStats::Record4x4Three > 0) { + STAT_LINE("FEST_R3", &CStats::Record4x4Three, false, nil); + } + if (CStats::Record4x4Mayhem > 0) { + STAT_LINE("FEST_RM", &CStats::Record4x4Mayhem, false, nil); + } + if (CStats::LongestFlightInDodo > 0) { + STAT_LINE("FEST_LF", &CStats::LongestFlightInDodo, false, nil); + } + if (CStats::TimeTakenDefuseMission > 0) { + STAT_LINE("FEST_BD", &CStats::TimeTakenDefuseMission, false, nil); + } + STAT_LINE("CAR_CRU", &CStats::CarsCrushed, false, nil); + + if (CStats::HighestScores[0] > 0) { + STAT_LINE("FEST_BB", nil, false, nil); + STAT_LINE("FEST_H0", &CStats::HighestScores[0], false, nil); + } + if (CStats::HighestScores[4] + CStats::HighestScores[3] + CStats::HighestScores[2] + CStats::HighestScores[1] > 0) { + STAT_LINE("FEST_GC", nil, false, nil); + } + if (CStats::HighestScores[1] > 0) { + STAT_LINE("FEST_H1", &CStats::HighestScores[1], false, nil); + } + if (CStats::HighestScores[2] > 0) { + STAT_LINE("FEST_H2", &CStats::HighestScores[2], false, nil); + } + if (CStats::HighestScores[3] > 0) { + STAT_LINE("FEST_H3", &CStats::HighestScores[3], false, nil); + } + if (CStats::HighestScores[4] > 0) { + STAT_LINE("FEST_H4", &CStats::HighestScores[4], false, nil); + } + + switch (m_PrefsLanguage) { + case LANGUAGE_AMERICAN: +#ifndef USE_MEASUREMENTS_IN_METERS + float fTemp; + STAT_LINE("FEST_DF", &(fTemp = CStats::DistanceTravelledOnFoot * MILES_IN_METER), true, nil); + STAT_LINE("FEST_DC", &(fTemp = CStats::DistanceTravelledInVehicle * MILES_IN_METER), true, nil); + STAT_LINE("MMRAIN", &CStats::mmRain, false, nil); + STAT_LINE("MXCARD", &(fTemp = CStats::MaximumJumpDistance * FEET_IN_METER), true, nil); + STAT_LINE("MXCARJ", &(fTemp = CStats::MaximumJumpHeight * FEET_IN_METER), true, nil); + break; +#endif + case LANGUAGE_FRENCH: + case LANGUAGE_GERMAN: + case LANGUAGE_ITALIAN: + case LANGUAGE_SPANISH: +#ifdef MORE_LANGUAGES + case LANGUAGE_RUSSIAN: +#endif + STAT_LINE("FESTDFM", &CStats::DistanceTravelledOnFoot, true, nil); + STAT_LINE("FESTDCM", &CStats::DistanceTravelledInVehicle, true, nil); + STAT_LINE("MMRAIN", &CStats::mmRain, false, nil); + STAT_LINE("MXCARDM", &CStats::MaximumJumpDistance, true, nil); + STAT_LINE("MXCARJM", &CStats::MaximumJumpHeight, true, nil); + break; + default: + break; + } + + STAT_LINE("MXFLIP", &CStats::MaximumJumpFlips, false, nil); + STAT_LINE("MXJUMP", &CStats::MaximumJumpSpins, false, nil); + STAT_LINE("BSTSTU", nil, false, nil); + + if (counter == rowIdx) { + gUString[0] = '\0'; + switch (CStats::BestStuntJump) { + case 1: + UnicodeStrcpy(gUString2, TheText.Get("INSTUN")); + return 0; + case 2: + UnicodeStrcpy(gUString2, TheText.Get("PRINST")); + return 0; + case 3: + UnicodeStrcpy(gUString2, TheText.Get("DBINST")); + return 0; + case 4: + UnicodeStrcpy(gUString2, TheText.Get("DBPINS")); + return 0; + case 5: + UnicodeStrcpy(gUString2, TheText.Get("TRINST")); + return 0; + case 6: + UnicodeStrcpy(gUString2, TheText.Get("PRTRST")); + return 0; + case 7: + UnicodeStrcpy(gUString2, TheText.Get("QUINST")); + return 0; + case 8: + UnicodeStrcpy(gUString2, TheText.Get("PQUINS")); + return 0; + default: + UnicodeStrcpy(gUString2, TheText.Get("NOSTUC")); + return 0; + } + } + counter++; + STAT_LINE("PASDRO", &CStats::PassengersDroppedOffWithTaxi, false, nil); + STAT_LINE("MONTAX", &CStats::MoneyMadeWithTaxi, false, nil); + STAT_LINE("FEST_LS", &CStats::LivesSavedWithAmbulance, false, nil); + STAT_LINE("FEST_HA", &CStats::HighestLevelAmbulanceMission, false, nil); + STAT_LINE("FEST_CC", &CStats::CriminalsCaught, false, nil); + STAT_LINE("FEST_FE", &CStats::FiresExtinguished, false, nil); + STAT_LINE("DAYPLC", &(nTemp = CTimer::GetTimeInMilliseconds() + 100), false, nil); + return counter; + +#undef STAT_LINE +} + #if 0 uint8 CMenuManager::GetNumberOfMenuOptions() { @@ -4918,11 +5602,8 @@ uint8 CMenuManager::GetNumberOfMenuOptions() #endif STARTPATCHES -#if DONT_USE_SUSPICIOUS_FUNCS -#else for (int i = 1; i < ARRAY_SIZE(aScreens); i++) Patch(0x611930 + sizeof(CMenuScreen) * i, aScreens[i]); -#endif InjectHook(0x4856F0, &CMenuManager::ProcessButtonPresses, PATCH_JUMP); InjectHook(0x485100, &CMenuManager::Process, PATCH_JUMP); InjectHook(0x47A230, &CMenuManager::LoadAllTextures, PATCH_JUMP); diff --git a/src/core/Frontend.h b/src/core/Frontend.h index 20cf9e42..a1ee53f2 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -7,28 +7,11 @@ #define MENUHEADER_WIDTH 0.84f #define MENUHEADER_HEIGHT 1.6f -#define MENUACTION_X_MARGIN 40.0f +#define MENU_X_MARGIN 40.0f #define MENUACTION_POS_Y 60.0f -#define MENUACTION_WIDTH 0.38f +#define MENUACTION_WIDTH 38.0f #define MENUACTION_SCALE_MULT 0.9f -#define MENUCOLUMN_POS_X MENUHEADER_POS_X + 16.0f -#define MENUCOLUMN_MAX_Y 149.0f -#define MENUCOLUMN_MID_Y 100.0f -#define MENUCOLUMN_MIN_Y 110.0f -#define MENUCOLUMN_PAUSE_Y 25.0f -#define MENUCOLUMN_START_Y 9.0f -#define MENUCOLUMN_FEDS 139.0f - -#define MENUCOLUMN_SAVE_X 121.0f -#define MENUCOLUMN_SAVE_Y 111.0f - -#define MENUCOLUMN_SPACING_MAX 24.0f -#define MENUCOLUMN_SPACING_MIN 20.0f - -#define MENUSELECT_BOX_MAX 20.5f -#define MENUSELECT_BOX_MIN 17.0f - #ifndef ASPECT_RATIO_SCALE #define MENURADIO_ICON_X 31.5f #else @@ -38,12 +21,13 @@ #define MENURADIO_ICON_W 60.0f #define MENURADIO_ICON_H 60.0f -#define MENUDROP_COLOR_A 150 -#define MENUDROP_COLOR_SIZE -1 - #define MENUSLIDER_X 256.0f #define MENUSLIDER_UNK 256.0f +#define BIGTEXT_X_SCALE 0.75f +#define BIGTEXT_Y_SCALE 0.9f +#define MEDIUMTEXT_X_SCALE 0.55f +#define MEDIUMTEXT_Y_SCALE 0.8f #define SMALLTEXT_X_SCALE 0.45f #define SMALLTEXT_Y_SCALE 0.7f #define SMALLESTTEXT_X_SCALE 0.4f @@ -67,6 +51,33 @@ #define PLAYERSETUP_LIST_BODY_TOP 47 #define PLAYERSETUP_ROW_HEIGHT 9 +#define STATS_SLIDE_Y_PER_SECOND 30.0f +#define STATS_ROW_HEIGHT 20.0f +#define STATS_ROW_X_MARGIN 50.0f +#define STATS_BOTTOM_MARGIN 135.0f +#define STATS_TOP_MARGIN 40.0f +#define STATS_TOP_DIMMING_AREA_LENGTH (93.0f - STATS_TOP_MARGIN) +#define STATS_BOTTOM_DIMMING_AREA_LENGTH 55.0f +#define STATS_PUT_BACK_TO_BOTTOM_Y 50.0f +#define STATS_RATING_X 24.0f +#define STATS_RATING_Y 20.0f + +#define CONTSETUP_STANDARD_ROW_HEIGHT 10.7f +#define CONTSETUP_CLASSIC_ROW_HEIGHT 9.0f +#define CONTSETUP_BOUND_HIGHLIGHT_HEIGHT 10 +#define CONTSETUP_BOUND_COLUMN_WIDTH 190.0f +#define CONTSETUP_LIST_HEADER_HEIGHT 20.0f +#define CONTSETUP_LIST_TOP 28.0f +#define CONTSETUP_LIST_RIGHT 18.0f +#define CONTSETUP_LIST_BOTTOM 120.0f +#define CONTSETUP_LIST_LEFT 18.0f +#define CONTSETUP_COLUMN_1_X 40.0f +#define CONTSETUP_COLUMN_2_X 210.0f +#define CONTSETUP_COLUMN_3_X (CONTSETUP_COLUMN_2_X + CONTSETUP_BOUND_COLUMN_WIDTH + 10.0f) +#define CONTSETUP_BACK_RIGHT 35.0f +#define CONTSETUP_BACK_BOTTOM 122.0f +#define CONTSETUP_BACK_HEIGHT 25.0f + enum eLanguages { LANGUAGE_AMERICAN, @@ -185,19 +196,19 @@ enum eMenuScreen MENUPAGE_NEW_GAME_RELOAD = 10, MENUPAGE_LOAD_SLOT_CONFIRM = 11, MENUPAGE_DELETE_SLOT_CONFIRM = 12, - MENUPAGE_13 = 13, + MENUPAGE_NO_MEMORY_CARD = 13, MENUPAGE_LOADING_IN_PROGRESS = 14, MENUPAGE_DELETING_IN_PROGRESS = 15, - MENUPAGE_16 = 16, + MENUPAGE_PS2_LOAD_FAILED = 16, MENUPAGE_DELETE_FAILED = 17, MENUPAGE_DEBUG_MENU = 18, - MENUPAGE_MEMORY_CARD_1 = 19, - MENUPAGE_MEMORY_CARD_2 = 20, + MENUPAGE_MEMORY_CARD_DEBUG = 19, + MENUPAGE_MEMORY_CARD_TEST = 20, MENUPAGE_MULTIPLAYER_MAIN = 21, - MENUPAGE_SAVE_FAILED_1 = 22, - MENUPAGE_SAVE_FAILED_2 = 23, + MENUPAGE_PS2_SAVE_FAILED = 22, + MENUPAGE_PS2_SAVE_FAILED_2 = 23, MENUPAGE_SAVE = 24, - MENUPAGE_NO_MEMORY_CARD = 25, + MENUPAGE_NO_MEMORY_CARD_2 = 25, MENUPAGE_CHOOSE_SAVE_SLOT = 26, MENUPAGE_SAVE_OVERWRITE_CONFIRM = 27, MENUPAGE_MULTIPLAYER_MAP = 28, @@ -438,7 +449,7 @@ struct BottomBarOption struct CMenuScreen { char m_ScreenName[8]; - int32 unk; + int32 unk; // 2 on MENUPAGE_MULTIPLAYER_START, 1 on everywhere else int32 m_PreviousPage[2]; // eMenuScreen int32 m_ParentEntry[2]; // row @@ -544,11 +555,12 @@ public: static bool &m_bShutDownFrontEndRequested; static bool &m_PrefsAllowNastyGame; - static float &menuXYpadding; - static float &actionTextScaleX; - static float &actionTextScaleY; - static int32 &sthWithButtons; - static int32 &sthWithButtons2; + static uint8 m_PrefsStereoMono; + static int32 m_SelectedMap; + static int32 m_SelectedGameType; + static uint8 m_PrefsPlayerRed; + static uint8 m_PrefsPlayerGreen; + static uint8 m_PrefsPlayerBlue; #ifndef MASTER static bool m_PrefsMarketing; @@ -557,6 +569,7 @@ public: #ifdef MENU_MAP static bool bMenuMapActive; + static bool bMapMouseShownOnce; static float fMapSize; static float fMapCenterY; static float fMapCenterX; @@ -565,9 +578,9 @@ public: #endif public: - static void BuildStatLine(char *text, void *stat, uint8 aFloat, void *stat2); + static void BuildStatLine(char *text, void *stat, bool itsFloat, void *stat2); static void CentreMousePointer(); - int CheckCodesForControls(int32); + void CheckCodesForControls(int); bool CheckHover(int x1, int x2, int y1, int y2); void CheckSliderMovement(int); int CostructStatLine(int); @@ -585,13 +598,13 @@ public: #endif void DrawPlayerSetupScreen(); int FadeIn(int alpha); - void FilterOutColorMarkersFromString(uint16, CRGBA &); + void FilterOutColorMarkersFromString(wchar*, CRGBA &); int GetStartOptionsCntrlConfigScreens(); static void InitialiseChangedLanguageSettings(); void LoadAllTextures(); void LoadSettings(); - static void MessageScreen(char *); - static void PickNewPlayerColour(); + void MessageScreen(const char *); + void PickNewPlayerColour(); void PrintBriefs(); static void PrintErrorMessage(); void PrintStats(); @@ -612,6 +625,7 @@ public: void WaitForUserCD(); void PrintController(); int GetNumOptionsCntrlConfigScreens(); + int ConstructStatLine(int); // New (not in function or inlined in the game) void ThingsToDoBeforeLeavingPage(); diff --git a/src/core/MenuScreens.h b/src/core/MenuScreens.h index bac8f0a8..cece80c7 100644 --- a/src/core/MenuScreens.h +++ b/src/core/MenuScreens.h @@ -1,22 +1,22 @@ #pragma once -// There are some missing/wrong entries in here. +// TODO: There are some missing/wrong entries in here. const CMenuScreen aScreens[] = { // MENUPAGE_NONE = 0 - { "", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, + { "", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, - // MENUPAGE_STATS = 1 - Both PrintStats and Draw were printing the page name, so deleted the string Draw looked for. + // MENUPAGE_STATS = 1 #ifdef MENU_MAP - { ""/*"FET_STA"*/, MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 5, 3, + { "FET_STA", 1, MENUPAGE_NONE, MENUPAGE_NONE, 5, 3, #else - { ""/*"FET_STA"*/, MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 5, 2, + { "FET_STA", 1, MENUPAGE_NONE, MENUPAGE_NONE, 5, 2, #endif MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, }, // MENUPAGE_NEW_GAME = 2 - { "FET_SGA", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 0, 1, + { "FET_SGA", 1, MENUPAGE_NONE, MENUPAGE_NONE, 0, 1, MENUACTION_CHANGEMENU, "FES_SNG", SAVESLOT_NONE, MENUPAGE_NEW_GAME_RELOAD, MENUACTION_POPULATESLOTS_CHANGEMENU, "GMLOAD", SAVESLOT_NONE, MENUPAGE_CHOOSE_LOAD_SLOT, MENUACTION_POPULATESLOTS_CHANGEMENU, "FES_DGA", SAVESLOT_NONE, MENUPAGE_CHOOSE_DELETE_SLOT, @@ -25,15 +25,15 @@ const CMenuScreen aScreens[] = { // MENUPAGE_BRIEFS = 3 #ifdef MENU_MAP - { "FET_BRE", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 6, 4, + { "FET_BRE", 1, MENUPAGE_NONE, MENUPAGE_NONE, 6, 4, #else - { "FET_BRE", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 6, 3, + { "FET_BRE", 1, MENUPAGE_NONE, MENUPAGE_NONE, 6, 3, #endif MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, }, // MENU_CONTROLLER_SETTINGS = 4 - { "FET_CON", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, 0, 0, + { "FET_CON", 1, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, 0, 0, MENUACTION_CTRLCONFIG, "FEC_CCF", SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS, MENUACTION_CTRLDISPLAY, "FEC_CDP", SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS, MENUACTION_CTRLVIBRATION, "FEC_VIB", SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS, @@ -41,7 +41,7 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_SOUND_SETTINGS = 5 - { "FET_AUD", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, 1, 1, + { "FET_AUD", 1, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, 1, 1, MENUACTION_MUSICVOLUME, "FEA_MUS", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, MENUACTION_SFXVOLUME, "FEA_SFX", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, MENUACTION_AUDIOHW, "FEA_3DH", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, @@ -53,7 +53,7 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_GRAPHICS_SETTINGS = 6 - { "FET_DIS", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, 2, 2, + { "FET_DIS", 1, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, 2, 2, MENUACTION_BRIGHTNESS, "FED_BRI", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS, MENUACTION_DRAWDIST, "FEM_LOD", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS, MENUACTION_FRAMESYNC, "FEM_VSC", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS, @@ -67,7 +67,7 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_LANGUAGE_SETTINGS = 7 - { "FET_LAN", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, 3, 3, + { "FET_LAN", 1, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, 3, 3, MENUACTION_LANG_ENG, "FEL_ENG", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_LANG_FRE, "FEL_FRE", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_LANG_GER, "FEL_GER", SAVESLOT_NONE, MENUPAGE_NONE, @@ -80,7 +80,7 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_CHOOSE_LOAD_SLOT = 8 - { "FET_LG", MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, 1, 1, + { "FET_LG", 1, MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, 1, 1, MENUACTION_CHANGEMENU, "FESZ_CA", SAVESLOT_NONE, MENUPAGE_NEW_GAME, MENUACTION_CHECKSAVE, "FEM_SL1", SAVESLOT_1, MENUPAGE_LOAD_SLOT_CONFIRM, MENUACTION_CHECKSAVE, "FEM_SL2", SAVESLOT_2, MENUPAGE_LOAD_SLOT_CONFIRM, @@ -93,7 +93,7 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_CHOOSE_DELETE_SLOT = 9 - { "FET_DG", MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, 2, 2, + { "FET_DG", 1, MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, 2, 2, MENUACTION_CHANGEMENU, "FESZ_CA", SAVESLOT_NONE, MENUPAGE_NEW_GAME, MENUACTION_CHECKSAVE, "FEM_SL1", SAVESLOT_1, MENUPAGE_DELETE_SLOT_CONFIRM, MENUACTION_CHECKSAVE, "FEM_SL2", SAVESLOT_2, MENUPAGE_DELETE_SLOT_CONFIRM, @@ -106,104 +106,123 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_NEW_GAME_RELOAD = 10 - { "FET_NG", MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, 0, 0, + { "FET_NG", 1, MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, 0, 0, MENUACTION_LABEL, "FESZ_QR", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEM_NO", SAVESLOT_NONE, MENUPAGE_NEW_GAME, MENUACTION_NEWGAME, "FEM_YES", SAVESLOT_NONE, MENUPAGE_NEW_GAME_RELOAD, }, // MENUPAGE_LOAD_SLOT_CONFIRM = 11 - { "FET_LG", MENUPAGE_CHOOSE_LOAD_SLOT, MENUPAGE_CHOOSE_LOAD_SLOT, MENUPAGE_CHOOSE_LOAD_SLOT, 0, 0, + { "FET_LG", 1, MENUPAGE_CHOOSE_LOAD_SLOT, MENUPAGE_CHOOSE_LOAD_SLOT, 0, 0, MENUACTION_LABEL, "FESZ_QL", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEM_NO", SAVESLOT_NONE, MENUPAGE_CHOOSE_LOAD_SLOT, MENUACTION_CHANGEMENU, "FEM_YES", SAVESLOT_NONE, MENUPAGE_LOADING_IN_PROGRESS, }, // MENUPAGE_DELETE_SLOT_CONFIRM = 12 - { "FET_DG", MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, 0, 0, + { "FET_DG", 1, MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, 0, 0, MENUACTION_LABEL, "FESZ_QD", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEM_NO", SAVESLOT_NONE, MENUPAGE_CHOOSE_DELETE_SLOT, MENUACTION_CHANGEMENU, "FEM_YES", SAVESLOT_NONE, MENUPAGE_DELETING, }, - // MENUPAGE_13 = 13 - { "FES_NOC", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, - + // MENUPAGE_NO_MEMORY_CARD = 13 + { "FES_NOC", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + MENUACTION_LABEL, "FEC_OFI", SAVESLOT_NONE, MENUPAGE_NONE, // only in mobile. FEC_OFI is missing }, // MENUPAGE_LOADING_IN_PROGRESS = 14 - { "FET_LG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_LG", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, MENUACTION_LABEL, "FED_LDW", SAVESLOT_NONE, MENUPAGE_LOAD_SLOT_CONFIRM, }, // MENUPAGE_DELETING_IN_PROGRESS = 15 - { "FET_DG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_DG", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, MENUACTION_LABEL, "FEDL_WR", SAVESLOT_NONE, MENUPAGE_NONE, }, - // MENUPAGE_16 = 16 - { "FET_LG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + // MENUPAGE_PS2_LOAD_FAILED = 16 + { "FET_LG", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, MENUACTION_LABEL, "FES_LOE", SAVESLOT_NONE, MENUPAGE_NONE, }, // MENUPAGE_DELETE_FAILED = 17 - { "FET_DG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_DG", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, MENUACTION_LABEL, "FES_DEE", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEC_OKK", SAVESLOT_NONE, MENUPAGE_CHOOSE_DELETE_SLOT, }, // MENUPAGE_DEBUG_MENU = 18 - { "FED_DBG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, - + { "FED_DBG", 1, MENUPAGE_NONE, MENUPAGE_NONE, 4, 0, + MENUACTION_RELOADIDE, "FED_RID", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_RELOADIPL, "FED_RIP", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_SETDBGFLAG, "FED_DFL", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_SWITCHBIGWHITEDEBUGLIGHT, "FED_DLS", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_PEDROADGROUPS, "FED_SPR", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_CARROADGROUPS, "FED_SCR", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_COLLISIONPOLYS, "FED_SCP", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_PARSEHEAP, "FED_PAH", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_SHOWCULL, "FED_SCZ", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_DEBUGSTREAM, "FED_DSR", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, }, - // MENUPAGE_MEMORY_CARD_1 = 19 - { "FEM_MCM", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, - + // MENUPAGE_MEMORY_CARD_DEBUG = 19 + { "FEM_MCM", 1, MENUPAGE_NONE, MENUPAGE_NONE, 7, 0, + MENUACTION_REGMEMCARD1, "FEM_RMC", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_TESTFORMATMEMCARD1, "FEM_TFM", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_TESTUNFORMATMEMCARD1, "FEM_TUM", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_CREATEROOTDIR, "FEM_CRD", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_CREATELOADICONS, "FEM_CLI", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_FILLWITHGUFF, "FEM_FFF", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_SAVEONLYTHEGAME, "FEM_SOG", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_SAVEGAME, "FEM_STG", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_SAVEGAMEUNDERGTA, "FEM_STS", SAVESLOT_NONE, MENUPAGE_NONE, + MENUACTION_CREATECOPYPROTECTED, "FEM_CPD", SAVESLOT_NONE, MENUPAGE_NONE, }, - // MENUPAGE_MEMORY_CARD_2 = 20 - { "FEM_MC2", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + // MENUPAGE_MEMORY_CARD_TEST = 20 + { "FEM_MC2", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, // MENUPAGE_MULTIPLAYER_MAIN = 21 - { "FET_MP", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_MP", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, - // MENUPAGE_SAVE_FAILED_1 = 22 - { "MCDNSP", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + // MENUPAGE_PS2_SAVE_FAILED = 22 + { "MCDNSP", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, MENUACTION_MEMCARDSAVECONFIRM, "JAILB_U", SAVESLOT_NONE, MENUPAGE_NONE, }, - // MENUPAGE_SAVE_FAILED_2 = 23 - { "MCGNSP", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + // MENUPAGE_PS2_SAVE_FAILED_2 = 23 + { "MCGNSP", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, MENUACTION_MEMCARDSAVECONFIRM, "JAILB_U", SAVESLOT_NONE, MENUPAGE_NONE, }, // Unused in PC but anyway // MENUPAGE_SAVE = 24 #ifdef PS2_SAVE_DIALOG - { "FET_SG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_SG", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, MENUACTION_CHANGEMENU, "FESZ_SA", SAVESLOT_NONE, MENUPAGE_CHOOSE_SAVE_SLOT, MENUACTION_RESUME_FROM_SAVEZONE, "FESZ_CA", SAVESLOT_NONE, MENUPAGE_NONE, }, #else - { "FET_SG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_SG", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, MENUACTION_LABEL, "FES_SCG", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_POPULATESLOTS_CHANGEMENU, "GMSAVE", SAVESLOT_NONE, MENUPAGE_CHOOSE_SAVE_SLOT, MENUACTION_RESUME_FROM_SAVEZONE, "FESZ_CA", SAVESLOT_NONE, MENUPAGE_NONE, }, #endif - // MENUPAGE_NO_MEMORY_CARD = 25 - { "FES_NOC", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, - + // MENUPAGE_NO_MEMORY_CARD_2 = 25 + { "FES_NOC", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + MENUACTION_CHANGEMENU, "FESZ_CA", SAVESLOT_NONE, MENUPAGE_NONE, }, // MENUPAGE_CHOOSE_SAVE_SLOT = 26 - { "FET_SG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_SG", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, MENUACTION_RESUME_FROM_SAVEZONE, "FESZ_CA", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEM_SL1", SAVESLOT_1, MENUPAGE_SAVE_OVERWRITE_CONFIRM, MENUACTION_CHANGEMENU, "FEM_SL2", SAVESLOT_2, MENUPAGE_SAVE_OVERWRITE_CONFIRM, @@ -216,49 +235,49 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_SAVE_OVERWRITE_CONFIRM = 27 - { "FET_SG", MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, 0, 0, + { "FET_SG", 1, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, 0, 0, MENUACTION_LABEL, "FESZ_QO", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEM_YES", SAVESLOT_NONE, MENUPAGE_SAVING_IN_PROGRESS, MENUACTION_CHANGEMENU, "FEM_NO", SAVESLOT_NONE, MENUPAGE_CHOOSE_SAVE_SLOT, }, // MENUPAGE_MULTIPLAYER_MAP = 28 - { "FET_MAP", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_MAP", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, // MENUPAGE_MULTIPLAYER_CONNECTION = 29 - { "FET_CON", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_CON", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, // MENUPAGE_MULTIPLAYER_FIND_GAME = 30 - { "FET_FG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_FG", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, // MENUPAGE_MULTIPLAYER_MODE = 31 - { "FET_GT", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_GT", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, // MENUPAGE_MULTIPLAYER_CREATE = 32 - { "FET_HG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_HG", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, // MENUPAGE_MULTIPLAYER_START = 33 - { "FEN_STA", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FEN_STA", 2, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, // MENUPAGE_SKIN_SELECT_OLD = 34 - { "FET_PS", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_PS", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, // MENUPAGE_CONTROLLER_PC = 35 - { "FET_CTL", MENUPAGE_DISABLED, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, 0, 0, + { "FET_CTL", 1, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, 0, 0, MENUACTION_CTRLMETHOD, "FET_CME", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC, MENUACTION_CHANGEMENU, "FET_RDK", SAVESLOT_NONE, MENUPAGE_KEYBOARD_CONTROLS, MENUACTION_CHANGEMENU, "FET_AMS", SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS, @@ -268,7 +287,7 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_CONTROLLER_PC_OLD1 = 36 - { "FET_CTL", MENUPAGE_DISABLED, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, 0, 0, + { "FET_CTL", 1, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, 0, 0, MENUACTION_GETKEY, "FEC_PLB", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC_OLD1, MENUACTION_GETKEY, "FEC_CWL", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC_OLD1, MENUACTION_GETKEY, "FEC_CWR", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC_OLD1, @@ -282,12 +301,12 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_CONTROLLER_PC_OLD2 = 37 - { "FET_CTL", MENUPAGE_DISABLED, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, 1, 1, + { "FET_CTL", 1, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, 1, 1, }, // MENUPAGE_CONTROLLER_PC_OLD3 = 38 - { "FET_CTL", MENUPAGE_DISABLED, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, 2, 2, + { "FET_CTL", 1, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, 2, 2, MENUACTION_GETKEY, "FEC_LUP", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC_OLD3, MENUACTION_GETKEY, "FEC_LDN", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC_OLD3, MENUACTION_GETKEY, "FEC_SMS", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC_OLD3, @@ -296,20 +315,24 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_CONTROLLER_PC_OLD4 = 39 - { "FET_CTL", MENUPAGE_DISABLED, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, 3, 3, + { "FET_CTL", 1, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, 3, 3, }, // MENUPAGE_CONTROLLER_DEBUG = 40 - { "FEC_DBG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, - + { "FEC_DBG", 1, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, 3, 3, + MENUACTION_GETKEY, "FEC_TGD", SAVESLOT_NONE, MENUPAGE_CONTROLLER_DEBUG, + MENUACTION_GETKEY, "FEC_TDO", SAVESLOT_NONE, MENUPAGE_CONTROLLER_DEBUG, + MENUACTION_GETKEY, "FEC_TSS", SAVESLOT_NONE, MENUPAGE_CONTROLLER_DEBUG, + MENUACTION_GETKEY, "FEC_SMS", SAVESLOT_NONE, MENUPAGE_CONTROLLER_DEBUG, + MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, }, // MENUPAGE_OPTIONS = 41 #ifdef MENU_MAP - { "FET_OPT", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 1, 5, + { "FET_OPT", 1, MENUPAGE_NONE, MENUPAGE_NONE, 1, 5, #else - { "FET_OPT", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 1, 4, + { "FET_OPT", 1, MENUPAGE_NONE, MENUPAGE_NONE, 1, 4, #endif MENUACTION_CHANGEMENU, "FET_CTL", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC, MENUACTION_LOADRADIO, "FET_AUD", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, @@ -321,9 +344,9 @@ const CMenuScreen aScreens[] = { // MENUPAGE_EXIT = 42 #ifdef MENU_MAP - { "FET_QG", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 2, 6, + { "FET_QG", 1, MENUPAGE_NONE, MENUPAGE_NONE, 2, 6, #else - { "FET_QG", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 2, 5, + { "FET_QG", 1, MENUPAGE_NONE, MENUPAGE_NONE, 2, 5, #endif MENUACTION_LABEL, "FEQ_SRE", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEM_NO", SAVESLOT_NONE, MENUPAGE_NONE, @@ -331,58 +354,58 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_SAVING_IN_PROGRESS = 43 - { "", MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, 0, 0, + { "", 1, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, 0, 0, MENUACTION_LABEL, "FES_WAR", SAVESLOT_NONE, MENUPAGE_NONE, }, // MENUPAGE_SAVE_SUCCESSFUL = 44 - { "FET_SG", MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, 0, 0, + { "FET_SG", 1, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, 0, 0, MENUACTION_LABEL, "FES_SSC", SAVESLOT_LABEL, MENUPAGE_NONE, MENUACTION_RESUME_FROM_SAVEZONE, "FEC_OKK", SAVESLOT_NONE, MENUPAGE_CHOOSE_SAVE_SLOT, }, // MENUPAGE_DELETING = 45 - { "FET_DG", MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, 0, 0, + { "FET_DG", 1, MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, 0, 0, MENUACTION_LABEL, "FED_DLW", SAVESLOT_NONE, MENUPAGE_NONE, }, // MENUPAGE_DELETE_SUCCESS = 46 - { "FET_DG", MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, 0, 0, + { "FET_DG", 1, MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, 0, 0, MENUACTION_LABEL, "DEL_FNM", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEC_OKK", SAVESLOT_NONE, MENUPAGE_CHOOSE_DELETE_SLOT, }, // MENUPAGE_SAVE_FAILED = 47 - { "FET_SG", MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, 0, 0, + { "FET_SG", 1, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, 0, 0, MENUACTION_LABEL, "FEC_SVU", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEC_OKK", SAVESLOT_NONE, MENUPAGE_CHOOSE_SAVE_SLOT, }, // MENUPAGE_LOAD_FAILED = 48 - { "FET_SG", MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, 0, 0, + { "FET_SG", 1, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, 0, 0, MENUACTION_LABEL, "FEC_SVU", SAVESLOT_NONE, MENUPAGE_NONE, }, // MENUPAGE_LOAD_FAILED_2 = 49 - { "FET_LG", MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, 0, 0, + { "FET_LG", 1, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, 0, 0, MENUACTION_LABEL, "FEC_LUN", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_CHOOSE_LOAD_SLOT, }, // MENUPAGE_FILTER_GAME = 50 - { "FIL_FLT", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FIL_FLT", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, }, // MENUPAGE_START_MENU = 51 - { "FEM_MM", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FEM_MM", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, MENUACTION_CHANGEMENU, "FEN_STA", SAVESLOT_NONE, MENUPAGE_NEW_GAME, MENUACTION_CHANGEMENU, "FET_OPT", SAVESLOT_NONE, MENUPAGE_OPTIONS, MENUACTION_CHANGEMENU, "FEM_QT", SAVESLOT_NONE, MENUPAGE_EXIT, }, // MENUPAGE_PAUSE_MENU = 52 - { "FET_PAU", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "FET_PAU", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, MENUACTION_RESUME, "FEM_RES", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEN_STA", SAVESLOT_NONE, MENUPAGE_NEW_GAME, #ifdef MENU_MAP @@ -395,22 +418,24 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_CHOOSE_MODE = 53 - { "FEN_STA", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, - + { "FEN_STA", 1, MENUPAGE_NONE, MENUPAGE_NONE, 0, 1, + MENUACTION_CHANGEMENU, "FET_SP", SAVESLOT_NONE, MENUPAGE_NEW_GAME, + MENUACTION_INITMP, "FET_MP", SAVESLOT_NONE, MENUPAGE_MULTIPLAYER_MAIN, + MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, }, // MENUPAGE_SKIN_SELECT = 54 - { "FET_PSU", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, 4, 4, - MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_MULTIPLAYER_MAIN, + { "FET_PSU", 1, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, 4, 4, + MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_MULTIPLAYER_MAIN, }, // MENUPAGE_KEYBOARD_CONTROLS = 55 - { "FET_STI", MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, 1, 1, - MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC, + { "FET_STI", 1, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, 1, 1, + MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC, }, // MENUPAGE_MOUSE_CONTROLS = 56 - { "FET_MTI", MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, 2, 2, + { "FET_MTI", 1, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, 2, 2, MENUACTION_MOUSESENS, "FEC_MSH", SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS, MENUACTION_INVVERT, "FEC_IVV", SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS, MENUACTION_MOUSESTEER, "FET_MST", SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS, @@ -418,18 +443,18 @@ const CMenuScreen aScreens[] = { }, // MENUPAGE_57 = 57 - { "", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "", 0, MENUPAGE_NONE, MENUPAGE_NONE, 0, 0, }, // MENUPAGE_58 = 58 - { "", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, + { "", 0, MENUPAGE_NONE, MENUPAGE_NONE, 0, 0, }, #ifdef MENU_MAP // MENUPAGE_MAP = 59 - { "FEG_MAP", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, 5, 2, + { "FEG_MAP", 1, MENUPAGE_NONE, MENUPAGE_NONE, 5, 2, }, #endif }; diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 994c94ca..154e7e9a 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -1412,8 +1412,8 @@ CRadar::DrawYouAreHereSprite(float x, float y) } } else { if (CTimer::GetTimeInMillisecondsPauseMode() - lastChange > 200) { - lastChange = CTimer::GetTimeInMillisecondsPauseMode(); - show = !show; + lastChange = CTimer::GetTimeInMillisecondsPauseMode(); + show = !show; } } @@ -1422,7 +1422,7 @@ CRadar::DrawYouAreHereSprite(float x, float y) float top = y - SCREEN_SCALE_Y(2.0f); float right = SCREEN_SCALE_X(12.0) + x; float bottom = y - SCREEN_SCALE_Y(26.0f); - CentreSprite.Draw(CRect(left, top, right, bottom), CRGBA(255, 217, 106, 255)); + CentreSprite.Draw(CRect(left, top, right, bottom), CRGBA(255, 255, 255, 255)); } MapLegendList[MapLegendCounter++] = RADAR_SPRITE_CENTRE; } @@ -1503,4 +1503,4 @@ STARTPATCHES InjectHook(0x4A6F30, CRadar::LoadAllRadarBlips, PATCH_JUMP); //InjectHook(0x4A7000, `global constructor keyed to'Radar.cpp, PATCH_JUMP); //InjectHook(0x4A7260, sRadarTrace::sRadarTrace, PATCH_JUMP); -ENDPATCHES +ENDPATCHES \ No newline at end of file diff --git a/src/core/Timer.cpp b/src/core/Timer.cpp index 18d6b6a3..b5e031ed 100644 --- a/src/core/Timer.cpp +++ b/src/core/Timer.cpp @@ -34,6 +34,10 @@ LARGE_INTEGER &perfSuspendCounter = *(LARGE_INTEGER*)0x62A318; //UInt32 suspendDepth; uint32 &suspendDepth = *(uint32*)0x62A320; +#ifdef FIX_BUGS +double frameTime; +#endif + void CTimer::Initialise(void) { debug("Initialising CTimer...\n"); @@ -90,17 +94,21 @@ void CTimer::Update(void) float updInCyclesScaled = updInCycles * ms_fTimeScale; - double upd = updInCyclesScaled / (double)_nCyclesPerMS; + // We need that real frame time to fix transparent menu bug. +#ifndef FIX_BUGS + double +#endif + frameTime = updInCyclesScaled / (double)_nCyclesPerMS; - m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + upd; + m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + frameTime; if ( GetIsPaused() ) ms_fTimeStep = 0.0f; else { - m_snTimeInMilliseconds = m_snTimeInMilliseconds + upd; - m_snTimeInMillisecondsNonClipped = m_snTimeInMillisecondsNonClipped + upd; - ms_fTimeStep = updInCyclesScaled / (double)_nCyclesPerMS / 20.0f; + m_snTimeInMilliseconds = m_snTimeInMilliseconds + frameTime; + m_snTimeInMillisecondsNonClipped = m_snTimeInMillisecondsNonClipped + frameTime; + ms_fTimeStep = frameTime / 1000.0f * 50.0f; } } else @@ -109,19 +117,23 @@ void CTimer::Update(void) uint32 updInMs = timer - oldPcTimer; - double upd = (double)updInMs * ms_fTimeScale; + // We need that real frame time to fix transparent menu bug. +#ifndef FIX_BUGS + double +#endif + frameTime = (double)updInMs * ms_fTimeScale; oldPcTimer = timer; - m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + upd; + m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + frameTime; if ( GetIsPaused() ) ms_fTimeStep = 0.0f; else { - m_snTimeInMilliseconds = m_snTimeInMilliseconds + upd; - m_snTimeInMillisecondsNonClipped = m_snTimeInMillisecondsNonClipped + upd; - ms_fTimeStep = upd / 1000.0f * 50.0f; + m_snTimeInMilliseconds = m_snTimeInMilliseconds + frameTime; + m_snTimeInMillisecondsNonClipped = m_snTimeInMillisecondsNonClipped + frameTime; + ms_fTimeStep = frameTime / 1000.0f * 50.0f; } } diff --git a/src/core/Timer.h b/src/core/Timer.h index 2498ec8a..7b35f79a 100644 --- a/src/core/Timer.h +++ b/src/core/Timer.h @@ -53,3 +53,7 @@ public: static void StartUserPause(void); static void EndUserPause(void); }; + +#ifdef FIX_BUGS +extern double frameTime; +#endif diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 6eae8685..a35a9fd9 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -21,6 +21,7 @@ #include "Particle.h" #include "Console.h" #include "Debug.h" +#include "Hud.h" #include @@ -338,6 +339,7 @@ DebugMenuPopulate(void) DebugMenuAddCmd("Spawn", "Spawn Rhino", [](){ SpawnCar(MI_RHINO); }); DebugMenuAddCmd("Spawn", "Spawn Firetruck", [](){ SpawnCar(MI_FIRETRUCK); }); + DebugMenuAddVarBool8("Debug", "Draw hud", (int8*)&CHud::m_Wants_To_Draw_Hud, nil); DebugMenuAddVar("Debug", "Engine Status", &engineStatus, nil, 1, 0, 226, nil); DebugMenuAddCmd("Debug", "Set Engine Status", SetEngineStatus); DebugMenuAddCmd("Debug", "Fix Car", FixCar); diff --git a/src/peds/CivilianPed.cpp b/src/peds/CivilianPed.cpp index 533d7c98..a9e0580e 100644 --- a/src/peds/CivilianPed.cpp +++ b/src/peds/CivilianPed.cpp @@ -28,10 +28,8 @@ CCivilianPed::CivilianAI(void) return; if (m_objective == OBJECTIVE_KILL_CHAR_ON_FOOT || m_objective == OBJECTIVE_KILL_CHAR_ANY_MEANS) { - if (m_pedInObjective) { - if (m_pedInObjective->IsPlayer()) - return; - } + if (m_pedInObjective && m_pedInObjective->IsPlayer()) + return; } if (CTimer::GetTimeInMilliseconds() <= m_lookTimer) return; @@ -75,7 +73,7 @@ CCivilianPed::CivilianAI(void) } else { SetMoveState(PEDMOVE_WALK); } - } else if (threatPed->IsPlayer() && FindPlayerPed()->m_pWanted->m_CurrentCops) { + } else if (threatPed->IsPlayer() && FindPlayerPed()->m_pWanted->m_CurrentCops != 0) { SetFindPathAndFlee(m_threatEntity, 5000); if (threatDistSqr < sq(10.0f)) { SetMoveState(PEDMOVE_RUN); @@ -170,8 +168,8 @@ CCivilianPed::CivilianAI(void) if (m_threatEntity && m_threatEntity->IsPed()) { CPed *threatPed = (CPed*)m_threatEntity; if (m_pedStats->m_fear <= 100 - threatPed->m_pedStats->m_temper && threatPed->m_nPedType != PEDTYPE_COP) { - if (threatPed->GetWeapon()->IsTypeMelee() || !GetWeapon()->IsTypeMelee()) { - if (threatPed->IsPlayer() && FindPlayerPed()->m_pWanted->m_CurrentCops) { + if (threatPed->GetWeapon(m_currentWeapon).IsTypeMelee() || !GetWeapon()->IsTypeMelee()) { + if (threatPed->IsPlayer() && FindPlayerPed()->m_pWanted->m_CurrentCops != 0) { if (m_objective == OBJECTIVE_KILL_CHAR_ON_FOOT || m_objective == OBJECTIVE_KILL_CHAR_ANY_MEANS) { SetFindPathAndFlee(m_threatEntity, 10000); } diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp index 80d7fe47..f8b86bd2 100644 --- a/src/render/Hud.cpp +++ b/src/render/Hud.cpp @@ -21,54 +21,52 @@ #include "User.h" #include "World.h" -wchar *CHud::m_HelpMessage = (wchar*)0x86B888; -wchar *CHud::m_LastHelpMessage = (wchar*)0x6E8F28; -int32 &CHud::m_HelpMessageState = *(int32*)0x880E1C; -int32 &CHud::m_HelpMessageTimer = *(int32*)0x880FA4; -int32 &CHud::m_HelpMessageFadeTimer = *(int32*)0x8F6258; -wchar *CHud::m_HelpMessageToPrint = (wchar*)0x664480; -float &CHud::m_HelpMessageDisplayTime = *(float*)0x8E2C28; -float &CHud::m_fTextBoxNumLines = *(float*)0x8E2C28; -float &CHud::m_fHelpMessageTime = *(float *)0x8E2C28; -bool &CHud::m_HelpMessageQuick = *(bool *)0x95CCF7; -int32 CHud::m_ZoneState = *(int32*)0x8F29AC; +wchar CHud::m_HelpMessage[256]; // = (wchar*)0x86B888; +wchar CHud::m_LastHelpMessage[256]; // = (wchar*)0x6E8F28; +uint32 CHud::m_HelpMessageState; // = *(int32*)0x880E1C; +uint32 CHud::m_HelpMessageTimer; // = *(int32*)0x880FA4; +int32 CHud::m_HelpMessageFadeTimer; // = *(int32*)0x8F6258; +wchar CHud::m_HelpMessageToPrint[256]; // = (wchar*)0x664480; +float CHud::m_fHelpMessageTime; // *(float *)0x8E2C28; +bool CHud::m_HelpMessageQuick; // = *(bool*)0x95CCF7; +uint32 CHud::m_ZoneState; // = *(int32*)0x8F29AC; int32 CHud::m_ZoneFadeTimer; -int32 CHud::m_ZoneNameTimer = *(int32*)0x8F1A50; -wchar *&CHud::m_pZoneName = *(wchar **)0x8E2C2C; -wchar *CHud::m_pLastZoneName = (wchar*)0x8F432C; +uint32 CHud::m_ZoneNameTimer; // = *(int32*)0x8F1A50; +wchar *CHud::m_pZoneName; // = *(wchar**)0x8E2C2C; +wchar *CHud::m_pLastZoneName; // = (wchar*)0x8F432C; wchar *CHud::m_ZoneToPrint; -int32 CHud::m_VehicleState = *(int32*)0x940560; +uint32 CHud::m_VehicleState; // = *(int32*)0x940560; int32 CHud::m_VehicleFadeTimer; -int32 CHud::m_VehicleNameTimer = *(int32*)0x8F2A14; -wchar *&CHud::m_VehicleName = *(wchar **)0x942FB4; -wchar *CHud::m_pLastVehicleName = *(wchar **)0x8E2DD8; +uint32 CHud::m_VehicleNameTimer; // = *(int32*)0x8F2A14; +wchar *CHud::m_VehicleName; // = *(wchar**)0x942FB4; +wchar *CHud::m_pLastVehicleName; // = *(wchar**)0x8E2DD8; wchar *CHud::m_pVehicleNameToPrint; -wchar *CHud::m_Message = (wchar*)0x72E318; -wchar *CHud::m_PagerMessage = (wchar*)0x878840; -bool &CHud::m_Wants_To_Draw_Hud = *(bool*)0x95CD89; -bool &CHud::m_Wants_To_Draw_3dMarkers = *(bool*)0x95CD62; -wchar(&CHud::m_BigMessage)[6][128] = *(wchar(*)[6][128])*(uintptr*)0x664CE0; -int16 &CHud::m_ItemToFlash = *(int16*)0x95CC82; +wchar CHud::m_Message[256];// = (wchar*)0x72E318; +wchar CHud::m_PagerMessage[256]; // = (wchar*)0x878840; +bool CHud::m_Wants_To_Draw_Hud; // (bool*)0x95CD89; +bool CHud::m_Wants_To_Draw_3dMarkers; // = *(bool*)0x95CD62; +wchar CHud::m_BigMessage[6][128]; // = *(wchar(*)[6][128]) * (uintptr*)0x664CE0; +int16 CHud::m_ItemToFlash; // = *(int16*)0x95CC82; // These aren't really in CHud float CHud::BigMessageInUse[6]; float CHud::BigMessageAlpha[6]; float CHud::BigMessageX[6]; -float &CHud::OddJob2OffTimer = *(float*)0x942FA0; -int8 &CHud::CounterOnLastFrame = *(int8*)0x95CD67; -float &CHud::OddJob2XOffset = *(float*)0x8F1B5C; -int16 &CHud::CounterFlashTimer = *(int16*)0x95CC20; -int16 &CHud::OddJob2Timer = *(int16*)0x95CC52; -int8 &CHud::TimerOnLastFrame = *(int8*)0x95CDA7; -int16 &CHud::OddJob2On = *(int16*)0x95CC78; -int16 &CHud::TimerFlashTimer = *(int16*)0x95CC6C; -int16 &CHud::PagerSoundPlayed = *(int16*)0x95CC4A; -int32 &CHud::SpriteBrightness = *(int32*)0x95CC54; -float &CHud::PagerXOffset = *(float*)0x941590; -int16 &CHud::PagerTimer = *(int16*)0x95CC3A; -int16 &CHud::PagerOn = *(int16*)0x95CCA0; +float CHud::OddJob2OffTimer; // = *(float*)0x942FA0; +bool CHud::CounterOnLastFrame; // = *(int8*)0x95CD67; +float CHud::OddJob2XOffset; // = *(float*)0x8F1B5C; +uint16 CHud::CounterFlashTimer; // = *(int16*)0x95CC20; +uint16 CHud::OddJob2Timer; // = *(int16*)0x95CC52; +bool CHud::TimerOnLastFrame; //= *(int8*)0x95CDA7; +int16 CHud::OddJob2On; //= *(int16*)0x95CC78; +uint16 CHud::TimerFlashTimer; //= *(int16*)0x95CC6C; +int16 CHud::PagerSoundPlayed; //= *(int16*)0x95CC4A; +int32 CHud::SpriteBrightness; //= *(int32*)0x95CC54; +float CHud::PagerXOffset; //= *(float*)0x941590; +int16 CHud::PagerTimer; //= *(int16*)0x95CC3A; +int16 CHud::PagerOn; //= *(int16*)0x95CCA0; -CSprite2d *CHud::Sprites = (CSprite2d*)0x95CB9C; +CSprite2d CHud::Sprites[NUM_HUD_SPRITES]; // = (CSprite2d*)0x95CB9C; struct { @@ -90,14 +88,14 @@ struct {"detonator", "detonator_mask"}, {"", ""}, {"", ""}, - {"radardisc", "radardiscm"}, + {"radardisc", "radardisc"}, {"pager", "pagerm"}, {"", ""}, {"", ""}, {"bleeder", ""}, {"sitesniper", "sitesniperm"}, {"siteM16", "siteM16m"}, - {"siterocket", "siterocketm"} + {"siterocket", "siterocket"} }; RwTexture *&gpSniperSightTex = *(RwTexture**)0x8F5834; @@ -415,7 +413,7 @@ void CHud::Draw() DrawZoneName */ if (m_pZoneName) { - float fZoneAlpha = 0.0f; + float fZoneAlpha = 255.0f; if (m_pZoneName != m_pLastZoneName) { switch (m_ZoneState) { @@ -429,7 +427,7 @@ void CHud::Draw() case 2: case 3: case 4: - m_ZoneNameTimer = 0; + m_ZoneNameTimer = 5; m_ZoneState = 4; break; default: @@ -441,6 +439,7 @@ void CHud::Draw() if (m_ZoneState) { switch (m_ZoneState) { case 1: + m_ZoneFadeTimer = 1000; if (m_ZoneNameTimer > 10000) { m_ZoneFadeTimer = 1000; m_ZoneState = 3; @@ -468,7 +467,6 @@ void CHud::Draw() if (m_ZoneFadeTimer < 0) { m_ZoneFadeTimer = 0; m_ZoneToPrint = m_pLastZoneName; - m_ZoneNameTimer = 0; m_ZoneState = 2; } fZoneAlpha = m_ZoneFadeTimer * 0.001f * 255.0f; @@ -500,12 +498,6 @@ void CHud::Draw() } } } - /*else { - m_pLastZoneName = nil; - m_ZoneState = 0; - m_ZoneFadeTimer = 0; - m_ZoneNameTimer = 0; - }*/ /* DrawVehicleName @@ -633,9 +625,9 @@ void CHud::Draw() wchar sTimer[16]; if (!CUserDisplay::OnscnTimer.m_sEntries[0].m_bTimerProcessed) - TimerOnLastFrame = 0; + TimerOnLastFrame = false; if (!CUserDisplay::OnscnTimer.m_sEntries[0].m_bCounterProcessed) - CounterOnLastFrame = 0; + CounterOnLastFrame = false; #ifdef FIX_BUGS #define TIMER_RIGHT_OFFSET 34.0f // Taken from VC frenzy timer @@ -647,7 +639,7 @@ void CHud::Draw() if (!TimerOnLastFrame) TimerFlashTimer = 1; - TimerOnLastFrame = 1; + TimerOnLastFrame = true; if (TimerFlashTimer) { if (++TimerFlashTimer > 50) @@ -685,7 +677,7 @@ void CHud::Draw() if (!CounterOnLastFrame) CounterFlashTimer = 1; - CounterOnLastFrame = 1; + CounterOnLastFrame = true; if (CounterFlashTimer) { if (++CounterFlashTimer > 50) @@ -739,11 +731,9 @@ void CHud::Draw() /* DrawPager */ - if (!m_PagerMessage[0]) { - if (PagerOn == 1) { - PagerSoundPlayed = false; - PagerOn = 2; - } + if (!m_PagerMessage[0] && PagerOn == 1) { + PagerSoundPlayed = false; + PagerOn = 2; } if (m_PagerMessage[0] || PagerOn == 2) { if (!PagerOn) { @@ -752,7 +742,7 @@ void CHud::Draw() } if (PagerOn == 1) { if (PagerXOffset > 0.0f) { - float fStep = PagerXOffset * 0.05f; + float fStep = PagerXOffset * 0.1f; if (fStep > 10.0f) fStep = 10.0f; PagerXOffset -= fStep * CTimer::GetTimeStep(); @@ -763,10 +753,10 @@ void CHud::Draw() } } else if (PagerOn == 2) { - float fStep = PagerXOffset * 0.05f; + float fStep = PagerXOffset * 0.1f; if (fStep < 2.0f) fStep = 2.0f; - PagerXOffset += fStep * CTimer::GetTimeStep(); + PagerXOffset += fStep; if (PagerXOffset > 150.0f) { PagerXOffset = 150.0f; PagerOn = 0; @@ -815,9 +805,7 @@ void CHud::Draw() DrawScriptText */ if (!CTimer::GetIsUserPaused()) { - intro_text_line* IntroText = CTheScripts::IntroTextLines; - - for (int i = 0; i < MAX_NUM_INTRO_TEXT_LINES; i++) { + for (int i = 0; i < ARRAY_SIZE(CTheScripts::IntroTextLines); i++) { if (CTheScripts::IntroTextLines[i].m_Text[0] && CTheScripts::IntroTextLines[i].m_bTextBeforeFade) { CFont::SetScale(SCREEN_SCALE_X(CTheScripts::IntroTextLines[i].m_fScaleX), SCREEN_SCALE_Y(CTheScripts::IntroTextLines[i].m_fScaleY * 0.5f)); CFont::SetColor(CTheScripts::IntroTextLines[i].m_sColor); @@ -858,31 +846,31 @@ void CHud::Draw() CFont::SetPropOff(); CFont::SetFontStyle(CTheScripts::IntroTextLines[i].m_nFont); - CFont::PrintString(SCREEN_SCALE_X(640.0f - CTheScripts::IntroTextLines[i].m_fAtX), SCREEN_SCALE_Y(448.0f - CTheScripts::IntroTextLines[i].m_fAtY), IntroText->m_Text); + CFont::PrintString(SCREEN_SCALE_X(DEFAULT_SCREEN_WIDTH - CTheScripts::IntroTextLines[i].m_fAtX), SCREEN_SCALE_Y(DEFAULT_SCREEN_HEIGHT - CTheScripts::IntroTextLines[i].m_fAtY), CTheScripts::IntroTextLines[i].m_Text); } } + for (int i = 0; i < ARRAY_SIZE(CTheScripts::IntroRectangles); i++) { + intro_script_rectangle &IntroRect = CTheScripts::IntroRectangles[i]; - intro_script_rectangle* IntroRect = CTheScripts::IntroRectangles; - - for (int i = 0; i < 16; i++) { - if (CTheScripts::IntroRectangles[i].m_bIsUsed && CTheScripts::IntroRectangles[i].m_bBeforeFade) { - if (CTheScripts::IntroRectangles[i].m_nTextureId >= 0) { + // Yeah, top and bottom changed place. R* vision + if (IntroRect.m_bIsUsed && IntroRect.m_bBeforeFade) { + if (IntroRect.m_nTextureId >= 0) { CRect rect = { - CTheScripts::IntroRectangles[i].m_sRect.left, - CTheScripts::IntroRectangles[i].m_sRect.bottom, - CTheScripts::IntroRectangles[i].m_sRect.right, - CTheScripts::IntroRectangles[i].m_sRect.bottom }; + IntroRect.m_sRect.left, + IntroRect.m_sRect.top, + IntroRect.m_sRect.right, + IntroRect.m_sRect.bottom }; - CTheScripts::ScriptSprites[CTheScripts::IntroRectangles[i].m_nTextureId].Draw(rect, IntroRect->m_sColor); + CTheScripts::ScriptSprites[IntroRect.m_nTextureId].Draw(rect, IntroRect.m_sColor); } else { CRect rect = { - CTheScripts::IntroRectangles[i].m_sRect.left, - CTheScripts::IntroRectangles[i].m_sRect.bottom, - CTheScripts::IntroRectangles[i].m_sRect.right, - CTheScripts::IntroRectangles[i].m_sRect.bottom }; + IntroRect.m_sRect.left, + IntroRect.m_sRect.top, + IntroRect.m_sRect.right, + IntroRect.m_sRect.bottom }; - CSprite2d::DrawRect(rect, IntroRect->m_sColor); + CSprite2d::DrawRect(rect, IntroRect.m_sColor); } } } @@ -928,7 +916,7 @@ void CHud::Draw() CFont::SetCentreSize(SCREEN_SCALE_X(615.0f)); CFont::SetFontStyle(FONT_HEADING); - if (BigMessageX[0] >= (SCREEN_WIDTH - 20)) { + if (BigMessageX[0] >= SCREEN_SCALE_FROM_RIGHT(20.0f)) { BigMessageInUse[0] += CTimer::GetTimeStep(); if (BigMessageInUse[0] >= 120.0f) { @@ -945,7 +933,7 @@ void CHud::Draw() BigMessageX[0] += (CTimer::GetTimeStepInMilliseconds() * 0.3f); BigMessageAlpha[0] += (CTimer::GetTimeStepInMilliseconds() * 0.3f); - if (BigMessageAlpha[0] >= 255.0f) + if (BigMessageAlpha[0] > 255.0f) BigMessageAlpha[0] = 255.0f; } @@ -989,7 +977,7 @@ void CHud::Draw() CFont::SetFontStyle(FONT_HEADING); CFont::SetColor(CRGBA(0, 0, 0, BigMessageAlpha[2])); - CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(20.0f + 4.0f), SCREEN_SCALE_FROM_BOTTOM(78.0f), m_BigMessage[2]); + CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(20.0f - 4.0f), SCREEN_SCALE_FROM_BOTTOM(78.0f), m_BigMessage[2]); CFont::SetColor(CRGBA(170, 123, 87, BigMessageAlpha[2])); CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(20.0f), SCREEN_SCALE_FROM_BOTTOM(82.0f), m_BigMessage[2]); @@ -1018,7 +1006,7 @@ void CHud::DrawAfterFade() m_HelpMessageState = 2; m_HelpMessageTimer = 0; CMessages::WideStringCopy(m_HelpMessageToPrint, m_HelpMessage, 256); - m_HelpMessageDisplayTime = CMessages::GetWideStringLength(m_HelpMessage) * 0.05f + 3.0f; + m_fHelpMessageTime = CMessages::GetWideStringLength(m_HelpMessage) * 0.05f + 3.0f; if (TheCamera.m_ScreenReductionPercentage == 0.0f) DMAudio.PlayFrontEndSound(SOUND_A0, 0); @@ -1036,14 +1024,14 @@ void CHud::DrawAfterFade() CMessages::WideStringCopy(m_LastHelpMessage, m_HelpMessage, 256); } - float fAlpha = 255.0f; + float fAlpha = 225.0f; - if (m_HelpMessageState) { + if (m_HelpMessageState != 0) { switch (m_HelpMessageState) { case 1: - fAlpha = 255.0f; + fAlpha = 225.0f; m_HelpMessageFadeTimer = 600; - if (m_HelpMessageTimer > m_fHelpMessageTime * 1000 || m_HelpMessageQuick && m_HelpMessageTimer > 1500) { + if (m_HelpMessageTimer > m_fHelpMessageTime * 1000.0f || m_HelpMessageQuick && m_HelpMessageTimer > 1500.0f) { m_HelpMessageFadeTimer = 600; m_HelpMessageState = 3; } @@ -1054,24 +1042,24 @@ void CHud::DrawAfterFade() m_HelpMessageState = 1; m_HelpMessageFadeTimer = 0; } - fAlpha = m_HelpMessageFadeTimer * 0.001f * 255.0f; + fAlpha = m_HelpMessageFadeTimer * 0.001f * 225.0f; break; case 3: m_HelpMessageFadeTimer -= 2 * CTimer::GetTimeStepInMilliseconds(); - if (m_HelpMessageFadeTimer >= 0) { + if (m_HelpMessageFadeTimer < 0) { m_HelpMessageState = 0; m_HelpMessageFadeTimer = 0; } - fAlpha = m_HelpMessageFadeTimer * 0.001f * 255.0f; + fAlpha = m_HelpMessageFadeTimer * 0.001f * 225.0f; break; case 4: m_HelpMessageFadeTimer -= 2 * CTimer::GetTimeStepInMilliseconds(); - if (m_HelpMessageFadeTimer >= 0) { + if (m_HelpMessageFadeTimer < 0) { m_HelpMessageState = 2; m_HelpMessageFadeTimer = 0; - CMessages::WideStringCopy(m_HelpMessageToPrint, m_LastHelpMessage, 400); + CMessages::WideStringCopy(m_HelpMessageToPrint, m_LastHelpMessage, 256); } - fAlpha = m_HelpMessageFadeTimer * 0.001f * 255.0f; + fAlpha = m_HelpMessageFadeTimer * 0.001f * 225.0f; break; default: break; @@ -1088,19 +1076,75 @@ void CHud::DrawAfterFade() else CFont::SetScale(SCREEN_SCALE_X(0.52f), SCREEN_SCALE_Y(1.1f)); + CFont::SetColor(CRGBA(175, 175, 175, 255)); CFont::SetJustifyOff(); CFont::SetWrapx(SCREEN_SCALE_X(200.0f + 26.0f - 4.0f)); CFont::SetFontStyle(FONT_BANK); CFont::SetBackgroundOn(); CFont::SetBackGroundOnlyTextOff(); - CFont::SetBackgroundColor(CRGBA(0, 0, 0, fAlpha * 0.8f)); - CFont::SetColor(CRGBA(175, 175, 175, 255)); + CFont::SetBackgroundColor(CRGBA(0, 0, 0, fAlpha * 0.9f)); CFont::PrintString(SCREEN_SCALE_X(26.0f), SCREEN_SCALE_Y(28.0f + (150.0f - PagerXOffset) * 0.6f), CHud::m_HelpMessageToPrint); CFont::SetAlphaFade(255.0f); } } - else - m_HelpMessageState = 0; + + for (int i = 0; i < ARRAY_SIZE(CTheScripts::IntroTextLines); i++) { + intro_text_line &line = CTheScripts::IntroTextLines[i]; + if (line.m_Text[0] != '\0' && !line.m_bTextBeforeFade) { + CFont::SetScale(SCREEN_SCALE_X(line.m_fScaleX), SCREEN_SCALE_Y(line.m_fScaleY) / 2); + + CFont::SetColor(line.m_sColor); + if (line.m_bJustify) + CFont::SetJustifyOn(); + else + CFont::SetJustifyOff(); + + if (line.m_bRightJustify) + CFont::SetRightJustifyOn(); + else + CFont::SetRightJustifyOff(); + + if (line.m_bCentered) + CFont::SetCentreOn(); + else + CFont::SetCentreOff(); + + CFont::SetWrapx(SCREEN_SCALE_X(line.m_fWrapX)); + CFont::SetCentreSize(SCREEN_SCALE_X(line.m_fCenterSize)); + if (line.m_bBackground) + CFont::SetBackgroundOn(); + else + CFont::SetBackgroundOff(); + + CFont::SetBackgroundColor(line.m_sBackgroundColor); + if (line.m_bBackgroundOnly) + CFont::SetBackGroundOnlyTextOn(); + else + CFont::SetBackGroundOnlyTextOff(); + + if (line.m_bTextProportional) + CFont::SetPropOn(); + else + CFont::SetPropOff(); + + CFont::SetFontStyle(line.m_nFont); + CFont::PrintString(SCREEN_SCALE_X(DEFAULT_SCREEN_WIDTH - line.m_fAtX), SCREEN_SCALE_Y(DEFAULT_SCREEN_HEIGHT - line.m_fAtY), line.m_Text); + } + } + for (int i = 0; i < ARRAY_SIZE(CTheScripts::IntroRectangles); i++) { + intro_script_rectangle &rectangle = CTheScripts::IntroRectangles[i]; + if (rectangle.m_bIsUsed && !rectangle.m_bBeforeFade) { + + // Yeah, top and bottom changed place. R* vision + if (rectangle.m_nTextureId >= 0) { + CTheScripts::ScriptSprites[rectangle.m_nTextureId].Draw(CRect(rectangle.m_sRect.left, rectangle.m_sRect.bottom, + rectangle.m_sRect.right, rectangle.m_sRect.top), rectangle.m_sColor); + } else { + CSprite2d::DrawRect(CRect(rectangle.m_sRect.left, rectangle.m_sRect.bottom, + rectangle.m_sRect.right, rectangle.m_sRect.top), rectangle.m_sColor); + } + } + } /* DrawBigMessage2 @@ -1142,10 +1186,9 @@ void CHud::DrawAfterFade() if (OddJob2OffTimer > 0) OddJob2OffTimer -= CTimer::GetTimeStepInMilliseconds(); - static float fStep; + float fStep; if (m_BigMessage[5][0] && OddJob2OffTimer <= 0.0f) { - if (OddJob2On <= 3) { - switch (OddJob2On) { + switch (OddJob2On) { case 0: OddJob2On = 1; OddJob2XOffset = 380.0f; @@ -1156,9 +1199,7 @@ void CHud::DrawAfterFade() OddJob2On = 2; } else { - fStep = 40.0f; - if ((OddJob2XOffset / 6.0f) <= 40.0f) - fStep = OddJob2XOffset / 6.0f; + fStep = min(40.0f, OddJob2XOffset / 6.0f); OddJob2XOffset = OddJob2XOffset - fStep; } break; @@ -1169,9 +1210,7 @@ void CHud::DrawAfterFade() } break; case 3: - fStep = 30.0f; - if ((OddJob2XOffset / 5.0f) >= 30.0f) - fStep = OddJob2XOffset / 5.0f; + fStep = max(30.0f, OddJob2XOffset / 5.0f); OddJob2XOffset = OddJob2XOffset - fStep; @@ -1182,7 +1221,6 @@ void CHud::DrawAfterFade() break; default: break; - } } if (!m_BigMessage[1][0]) { @@ -1216,10 +1254,10 @@ void CHud::DrawAfterFade() CFont::SetScale(SCREEN_SCALE_X(1.04f), SCREEN_SCALE_Y(1.6f)); CFont::SetPropOn(); - CFont::SetRightJustifyWrap(-500.0f); + CFont::SetRightJustifyWrap(SCREEN_SCALE_X(-500.0f)); CFont::SetRightJustifyOn(); CFont::SetFontStyle(FONT_HEADING); - if (BigMessageX[1] >= (SCREEN_WIDTH - 20)) { + if (BigMessageX[1] >= SCREEN_SCALE_FROM_RIGHT(20.0f)) { BigMessageInUse[1] += CTimer::GetTimeStep(); if (BigMessageInUse[1] >= 120.0f) { @@ -1230,12 +1268,11 @@ void CHud::DrawAfterFade() m_BigMessage[1][0] = 0; BigMessageAlpha[1] = 0.0f; } - } - else { + } else { BigMessageX[1] += (CTimer::GetTimeStepInMilliseconds() * 0.3f); BigMessageAlpha[1] += (CTimer::GetTimeStepInMilliseconds() * 0.3f); - if (BigMessageAlpha[1] >= 255.0f) + if (BigMessageAlpha[1] > 255.0f) BigMessageAlpha[1] = 255.0f; } @@ -1273,7 +1310,7 @@ void CHud::GetRidOfAllHudMessages() m_HelpMessageFadeTimer = 0; m_HelpMessageState = 0; m_HelpMessageQuick = 0; - m_HelpMessageDisplayTime = 1.0f; + m_fHelpMessageTime = 1.0f; m_VehicleName = nil; m_pLastVehicleName = nil; m_pVehicleNameToPrint = nil; @@ -1303,7 +1340,7 @@ void CHud::Initialise() CTxdStore::PopCurrentTxd(); CTxdStore::SetCurrentTxd(HudTXD); - for (int i = 0; i < ARRAY_SIZE(WeaponFilenames); i++) { + for (int i = 0; i < NUM_HUD_SPRITES; i++) { Sprites[i].SetTexture(WeaponFilenames[i].name, WeaponFilenames[i].mask); } @@ -1314,14 +1351,14 @@ void CHud::Initialise() if (gpRocketSightTex == nil) gpRocketSightTex = RwTextureRead("siterocket", nil); - CounterOnLastFrame = 0; + CounterOnLastFrame = false; m_ItemToFlash = ITEM_NONE; OddJob2Timer = 0; OddJob2OffTimer = 0.0f; OddJob2On = 0; OddJob2XOffset = 0.0f; CounterFlashTimer = 0; - TimerOnLastFrame = 0; + TimerOnLastFrame = false; TimerFlashTimer = 0; SpriteBrightness = 0; PagerOn = 0; @@ -1338,14 +1375,14 @@ void CHud::ReInitialise() { GetRidOfAllHudMessages(); - CounterOnLastFrame = 0; + CounterOnLastFrame = false; m_ItemToFlash = ITEM_NONE; OddJob2Timer = 0; OddJob2OffTimer = 0.0f; OddJob2On = 0; OddJob2XOffset = 0.0f; CounterFlashTimer = 0; - TimerOnLastFrame = 0; + TimerOnLastFrame = false; TimerFlashTimer = 0; SpriteBrightness = 0; PagerOn = 0; @@ -1435,7 +1472,7 @@ void CHud::SetZoneName(wchar *name) void CHud::Shutdown() { - for (int i = 0; i < ARRAY_SIZE(WeaponFilenames); ++i) { + for (int i = 0; i < NUM_HUD_SPRITES; ++i) { Sprites[i].Delete(); } diff --git a/src/render/Hud.h b/src/render/Hud.h index d3482ae6..701e47e2 100644 --- a/src/render/Hud.h +++ b/src/render/Hud.h @@ -27,59 +27,60 @@ enum eSprites HUD_RADARDISC = 15, HUD_PAGER = 16, HUD_SITESNIPER = 20, - HUD_SITEM16 = 21 + HUD_SITEM16, + HUD_SITEROCKET, + NUM_HUD_SPRITES, }; class CHud { public: - static CSprite2d *Sprites; - static int32 &SpriteBrightness; - static wchar *m_HelpMessage; - static wchar *m_LastHelpMessage; - static int32 &m_HelpMessageState; - static int32 &m_HelpMessageTimer; - static int32 &m_HelpMessageFadeTimer; - static wchar *m_HelpMessageToPrint; + static CSprite2d Sprites[NUM_HUD_SPRITES]; + static wchar m_HelpMessage[256]; + static wchar m_LastHelpMessage[256]; + static uint32 m_HelpMessageState; + static uint32 m_HelpMessageTimer; + static int32 m_HelpMessageFadeTimer; + static wchar m_HelpMessageToPrint[256]; static float &m_HelpMessageDisplayTime; - static float &m_fTextBoxNumLines; - static float &m_fHelpMessageTime; - static bool &m_HelpMessageQuick; - static int32 m_ZoneState; + static float m_fHelpMessageTime; + static bool m_HelpMessageQuick; + static uint32 m_ZoneState; static int32 m_ZoneFadeTimer; - static int32 m_ZoneNameTimer; - static wchar *&m_pZoneName; + static uint32 m_ZoneNameTimer; + static wchar *m_pZoneName; static wchar *m_pLastZoneName; static wchar *m_ZoneToPrint; - static wchar *&m_VehicleName; + static wchar *m_VehicleName; static wchar *m_pLastVehicleName; static wchar *m_pVehicleNameToPrint; - static int32 m_VehicleState; + static uint32 m_VehicleState; static int32 m_VehicleFadeTimer; - static int32 m_VehicleNameTimer; - static wchar *m_Message; - static wchar *m_PagerMessage; - static bool &m_Wants_To_Draw_Hud; - static bool &m_Wants_To_Draw_3dMarkers; - static wchar(&m_BigMessage)[6][128]; - static int16 &m_ItemToFlash; + static uint32 m_VehicleNameTimer; + static wchar m_Message[256]; + static wchar m_PagerMessage[256]; + static bool m_Wants_To_Draw_Hud; + static bool m_Wants_To_Draw_3dMarkers; + static wchar m_BigMessage[6][128]; + static int16 m_ItemToFlash; // These aren't really in CHud static float BigMessageInUse[6]; static float BigMessageAlpha[6]; static float BigMessageX[6]; - static float &OddJob2OffTimer; - static int8 &CounterOnLastFrame; - static float &OddJob2XOffset; - static int16 &CounterFlashTimer; - static int16 &OddJob2Timer; - static int8 &TimerOnLastFrame; - static int16 &OddJob2On; - static int16 &TimerFlashTimer; - static int16 &PagerSoundPlayed; - static float &PagerXOffset; - static int16 &PagerTimer; - static int16 &PagerOn; + static float OddJob2OffTimer; + static bool CounterOnLastFrame; + static float OddJob2XOffset; + static uint16 CounterFlashTimer; + static uint16 OddJob2Timer; + static bool TimerOnLastFrame; + static int16 OddJob2On; + static uint16 TimerFlashTimer; + static int16 PagerSoundPlayed; + static int32 SpriteBrightness; + static float PagerXOffset; + static int16 PagerTimer; + static int16 PagerOn; public: static void Draw(); From 1932d98482e3622501f7467a9162f4a3ba7cce19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Sun, 12 Apr 2020 01:33:04 +0300 Subject: [PATCH 080/112] CDebug fix --- src/core/Debug.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/Debug.cpp b/src/core/Debug.cpp index 2b713198..917c99ab 100644 --- a/src/core/Debug.cpp +++ b/src/core/Debug.cpp @@ -24,7 +24,7 @@ CDebug::DebugAddText(const char *str) { int32 i = 0; if (*str != '\0') { - while (i < MAX_STR_LEN) { + while (i < MAX_STR_LEN - 1) { ms_aTextBuffer[ms_nCurrentTextLine][i++] = *(str++); if (*str == '\0') break; From 7d137d8f2d3effa96593cae34e7259e0ab025e4d Mon Sep 17 00:00:00 2001 From: Filip Gawin Date: Sun, 12 Apr 2020 02:39:27 +0200 Subject: [PATCH 081/112] Cleanup audio code --- src/audio/AudioCollision.cpp | 8 +- src/audio/AudioManager.cpp | 473 ++++++++++++++++++----------------- src/audio/AudioManager.h | 12 +- src/audio/PoliceRadio.cpp | 19 +- 4 files changed, 270 insertions(+), 242 deletions(-) diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp index 4039bd75..99c87a6a 100644 --- a/src/audio/AudioCollision.cpp +++ b/src/audio/AudioCollision.cpp @@ -151,7 +151,7 @@ cAudioManager::SetUpLoopingCollisionSound(cAudioCollision *col, uint8 counter) m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, CollisionSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = counter; + m_sQueueSample.m_nCounter = counter; m_sQueueSample.m_vecPos = col->m_vecPosition; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -164,7 +164,7 @@ cAudioManager::SetUpLoopingCollisionSound(cAudioCollision *col, uint8 counter) SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -270,7 +270,7 @@ cAudioManager::SetUpOneShotCollisionSound(cAudioCollision *col) break; } m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); - m_sQueueSample.m_counter = counter++; + m_sQueueSample.m_nCounter = counter++; if(counter >= 255) counter = 28; m_sQueueSample.m_vecPos = col->m_vecPosition; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; @@ -282,7 +282,7 @@ cAudioManager::SetUpOneShotCollisionSound(cAudioCollision *col) m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index b73cf3ca..2453e066 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -216,7 +216,9 @@ cPedComments::Add(tPedComment *com) } } - if(i < index) memmove(&m_nIndexMap[m_nActiveBank][i + 1], &m_nIndexMap[m_nActiveBank][i], NUM_PED_COMMENTS_SLOTS -1 - i); + if(i < index) + memmove(&m_nIndexMap[m_nActiveBank][i + 1], &m_nIndexMap[m_nActiveBank][i], + NUM_PED_COMMENTS_SLOTS - 1 - i); } m_nIndexMap[m_nActiveBank][i] = index; @@ -239,7 +241,7 @@ cPedComments::Process() AudioManager.m_sQueueSample.m_nEntityIndex = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nEntityIndex; - AudioManager.m_sQueueSample.m_counter = 0; + AudioManager.m_sQueueSample.m_nCounter = 0; AudioManager.m_sQueueSample.m_nSampleIndex = sampleIndex; AudioManager.m_sQueueSample.m_bBankIndex = SAMPLEBANK_PED; AudioManager.m_sQueueSample.m_nReleasingVolumeModificator = 3; @@ -260,7 +262,7 @@ cPedComments::Process() break; default: AudioManager.m_sQueueSample.m_fSoundIntensity = defaultIntensity; break; } - AudioManager.m_sQueueSample.m_bReleasingSoundFlag = 1; + AudioManager.m_sQueueSample.m_bReleasingSoundFlag = true; AudioManager.m_sQueueSample.m_vecPos = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_vecPos; @@ -326,7 +328,7 @@ cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sampl { m_sQueueSample.m_bVolume = ComputeVolume(emittingVolume, 50.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = counter; + m_sQueueSample.m_nCounter = counter; m_sQueueSample.m_nSampleIndex = sample; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -343,7 +345,7 @@ cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sampl m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -368,7 +370,7 @@ cAudioManager::AddReflectionsToRequestedQueue() m_sQueueSample.m_bVolume = ComputeVolume( emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume > emittingVolume >> 4) { - m_sQueueSample.m_counter += ((i + 1) << 8); + m_sQueueSample.m_nCounter += ((i + 1) << 8); if(m_sQueueSample.m_nLoopCount) { noise = RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); if(noise <= 0) @@ -402,15 +404,15 @@ cAudioManager::AddReleasingSounds() m_asSamples[m_bActiveSampleQueue] [m_abSampleQueueIndexTable[m_bActiveSampleQueue][j]] .m_nEntityIndex && - sample.m_counter == m_asSamples[m_bActiveSampleQueue] + sample.m_nCounter == m_asSamples[m_bActiveSampleQueue] [m_abSampleQueueIndexTable[m_bActiveSampleQueue][j]] - .m_counter) { + .m_nCounter) { toProcess[i] = true; break; } } if(!toProcess[i]) { - if(sample.m_counter <= 255 || !sample.m_bLoopsRemaining) { + if(sample.m_nCounter <= 255 || !sample.m_bLoopsRemaining) { if(!sample.m_nReleasingVolumeDivider) continue; if(!sample.m_nLoopCount) { if(sample.m_nVolumeChange == -1) { @@ -453,7 +455,7 @@ cAudioManager::AddSampleToRequestedQueue() ++m_bSampleRequestQueuesStatus[m_bActiveSampleQueue]; } m_sQueueSample.calculatedVolume = calculatedVolume; - m_sQueueSample.m_bLoopEnded = 0; + m_sQueueSample.m_bLoopEnded = false; if(m_sQueueSample.m_bIs2D) { m_sQueueSample.m_bRequireReflection = false; m_sQueueSample.m_bLoopsRemaining = 0; @@ -495,7 +497,7 @@ cAudioManager::ClearActiveSamples() { for(int32 i = 0; i < m_bActiveSamples; i++) { m_asActiveSamples[i].m_nEntityIndex = AEHANDLE_NONE; - m_asActiveSamples[i].m_counter = 0; + m_asActiveSamples[i].m_nCounter = 0; m_asActiveSamples[i].m_nSampleIndex = NO_SAMPLE; m_asActiveSamples[i].m_bBankIndex = SAMPLEBANK_INVALID; m_asActiveSamples[i].m_bIs2D = false; @@ -504,8 +506,8 @@ cAudioManager::ClearActiveSamples() m_asActiveSamples[i].m_bVolume = 0; m_asActiveSamples[i].m_bEmittingVolume = 0; m_asActiveSamples[i].m_fDistance = 0.0f; - m_asActiveSamples[i].m_bIsProcessed = 0; - m_asActiveSamples[i].m_bLoopEnded = 0; + m_asActiveSamples[i].m_bIsProcessed = false; + m_asActiveSamples[i].m_bLoopEnded = false; m_asActiveSamples[i].m_nLoopCount = 1; m_asActiveSamples[i].m_nLoopStart = 0; m_asActiveSamples[i].m_nLoopEnd = -1; @@ -532,8 +534,8 @@ cAudioManager::ClearMissionAudio() m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_STOPPED; m_sMissionAudio.field_22 = 0; m_sMissionAudio.m_bIsPlayed = false; - m_sMissionAudio.field_12 = 1; - m_sMissionAudio.field_24 = 0; + m_sMissionAudio.m_bPredefinedProperties = 1; + m_sMissionAudio.m_nMissionAudioCounter = 0; } } @@ -554,7 +556,7 @@ cAudioManager::ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, if(!TheCamera.Get_Just_Switched_Status() && speedMultiplier != 0.0f) { float dist = position2 - position1; if(dist != 0.0f) { - float speedOfSource = (dist / field_19192) * speedMultiplier; + float speedOfSource = (dist / m_bTimeSpent) * speedMultiplier; if(m_fSpeedOfSound > Abs(speedOfSource)) { if(speedOfSource < 0.0f) { speedOfSource = max(speedOfSource, -1.5f); @@ -654,7 +656,7 @@ cAudioManager::DestroyEntity(int32 id) if(id == m_anAudioEntityIndices[i]) { if(i < totalAudioEntitiesSlots - 1) memmove(&m_anAudioEntityIndices[i], &m_anAudioEntityIndices[i + 1], - 4 * (m_nAudioEntitiesTotal - (i + 1))); + NUM_AUDIOENTITY_EVENTS * (m_nAudioEntitiesTotal - (i + 1))); m_anAudioEntityIndices[--m_nAudioEntitiesTotal] = totalAudioEntitiesSlots; return; } @@ -720,7 +722,7 @@ cAudioManager::GetSwatTalkSfx(int16 sound) GetPhrase(&sfx, &lastSfx, SFX_SWAT_VOICE_1_CHASE_1, 6); } - return (SFX_SWAT_VOICE_2_CHASE_1 - SFX_SWAT_VOICE_1_CHASE_1) * (m_sQueueSample.m_nEntityIndex % 3) + sfx; + return (SFX_SWAT_VOICE_2_CHASE_1 - SFX_SWAT_VOICE_1_CHASE_1) * (m_sQueueSample.m_nEntityIndex % 4) + sfx; } uint32 @@ -2164,7 +2166,13 @@ cAudioManager::GetSecurityGuardTalkSfx(int16 sound) case SOUND_PED_CAR_JACKED: case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_SECURITY_GUARD_VOICE_1_DRIVER_ABUSE_1, 6); break; case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_SECURITY_GUARD_VOICE_1_FIGHT_1, 2); break; - case SOUND_PED_FLEE_RUN: GetPhrase(&sfx, &lastSfx, SFX_SECURITY_GUARD_VOICE_1_DRIVER_ABUSE_1, 12); break; + case SOUND_PED_FLEE_RUN: +#ifdef FIX_BUGS + sfx = SFX_SECURITY_GUARD_VOICE_1_RUN_FROM_FIGHT_1; +#else + GetPhrase(&sfx, &lastSfx, SFX_SECURITY_GUARD_VOICE_1_DRIVER_ABUSE_1, 12); +#endif + break; default: return GetGenericMaleTalkSfx(sound); } return sfx; @@ -2560,11 +2568,15 @@ cAudioManager::PlayOneShot(int32 index, int16 sound, float vol) break; ++i; } - if(i < 3) { + if(i < NUM_AUDIOENTITY_EVENTS - 1) { memmove(&entity.m_awAudioEvent[i + 1], - &entity.m_awAudioEvent[i], (3 - i) * 2); - memmove(&entity.m_afVolume[i + 1], &entity.m_afVolume[i], - (3 - i) * 4); + &entity.m_awAudioEvent[i], + (NUM_AUDIOENTITY_EVENTS - 1 - i) * + NUM_AUDIOENTITY_EVENTS / 2); + memmove(&entity.m_afVolume[i + 1], + &entity.m_afVolume[i], + (NUM_AUDIOENTITY_EVENTS - 1 - i) * + NUM_AUDIOENTITY_EVENTS); } entity.m_awAudioEvent[i] = sound; entity.m_afVolume[i] = vol; @@ -2617,8 +2629,8 @@ cAudioManager::PostInitialiseGameSpecificSetup() m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_STOPPED; m_sMissionAudio.field_22 = 0; m_sMissionAudio.m_bIsPlayed = false; - m_sMissionAudio.field_12 = 1; - m_sMissionAudio.field_24 = 0; + m_sMissionAudio.m_bPredefinedProperties = 1; + m_sMissionAudio.m_nMissionAudioCounter = 0; ResetAudioLogicTimers(CTimer::GetTimeInMilliseconds()); } @@ -2713,11 +2725,11 @@ cAudioManager::PreloadMissionAudio(const char *name) m_sMissionAudio.m_bLoadingStatus = LOADING_STATUS_NOT_LOADED; m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_STOPPED; m_sMissionAudio.field_22 = 0; - m_sMissionAudio.field_24 = - field_19192 * SampleManager.GetStreamedFileLength(missionAudioSfx) / 1000; - m_sMissionAudio.field_24 *= 4; + m_sMissionAudio.m_nMissionAudioCounter = + m_bTimeSpent * SampleManager.GetStreamedFileLength(missionAudioSfx) / 1000; + m_sMissionAudio.m_nMissionAudioCounter *= 4; m_sMissionAudio.m_bIsPlayed = false; - m_sMissionAudio.field_12 = 1; + m_sMissionAudio.m_bPredefinedProperties = 1; g_bMissionAudioLoadFailed = 0; } } @@ -2775,8 +2787,8 @@ cAudioManager::ProcessActiveQueues() CVector position; for (int32 i = 0; i < m_bActiveSamples; i++) { - m_asSamples[m_bActiveSampleQueue][i].m_bIsProcessed = 0; - m_asActiveSamples[i].m_bIsProcessed = 0; + m_asSamples[m_bActiveSampleQueue][i].m_bIsProcessed = false; + m_asActiveSamples[i].m_bIsProcessed = false; } for (int32 i = 0; i < m_bSampleRequestQueuesStatus[m_bActiveSampleQueue]; ++i) { @@ -2784,7 +2796,7 @@ cAudioManager::ProcessActiveQueues() if (sample.m_nSampleIndex != NO_SAMPLE) { for (int32 j = 0; j < m_bActiveSamples; ++j) { if (sample.m_nEntityIndex == m_asActiveSamples[j].m_nEntityIndex && - sample.m_counter == m_asActiveSamples[j].m_counter && + sample.m_nCounter == m_asActiveSamples[j].m_nCounter && sample.m_nSampleIndex == m_asActiveSamples[j].m_nSampleIndex) { if (sample.m_nLoopCount) { if (m_FrameCounter & 1) { @@ -2794,15 +2806,15 @@ cAudioManager::ProcessActiveQueues() flag = !(j & 1); } if (flag && !SampleManager.GetChannelUsedFlag(j)) { - sample.m_bLoopEnded = 1; - m_asActiveSamples[j].m_bLoopEnded = 1; + sample.m_bLoopEnded = true; + m_asActiveSamples[j].m_bLoopEnded = true; m_asActiveSamples[j].m_nSampleIndex = NO_SAMPLE; m_asActiveSamples[j].m_nEntityIndex = AEHANDLE_NONE; continue; } } - sample.m_bIsProcessed = 1; - m_asActiveSamples[j].m_bIsProcessed = 1; + sample.m_bIsProcessed = true; + m_asActiveSamples[j].m_bIsProcessed = true; sample.m_nVolumeChange = -1; if (!sample.m_bReleasingSoundFlag) { if (sample.m_bIs2D) { @@ -2872,8 +2884,8 @@ cAudioManager::ProcessActiveQueues() SampleManager.SetChannelReverbFlag(j, sample.m_bReverbFlag); continue; } - sample.m_bIsProcessed = 0; - m_asActiveSamples[j].m_bIsProcessed = 0; + sample.m_bIsProcessed = false; + m_asActiveSamples[j].m_bIsProcessed = false; break; } } @@ -2890,7 +2902,7 @@ cAudioManager::ProcessActiveQueues() tSound& sample = m_asSamples[m_bActiveSampleQueue][m_abSampleQueueIndexTable[m_bActiveSampleQueue][i]]; if (!sample.m_bIsProcessed && !sample.m_bLoopEnded && m_asAudioEntities[sample.m_nEntityIndex].m_bIsUsed && sample.m_nSampleIndex < NO_SAMPLE) { - if (sample.m_counter > 255 && sample.m_nLoopCount && sample.m_bLoopsRemaining) { + if (sample.m_nCounter > 255 && sample.m_nLoopCount && sample.m_bLoopsRemaining) { --sample.m_bLoopsRemaining; sample.m_nReleasingVolumeDivider = 1; } @@ -2898,7 +2910,7 @@ cAudioManager::ProcessActiveQueues() for (int32 j = 0; j < m_bActiveSamples; ++j) { if (!m_asActiveSamples[j].m_bIsProcessed) { if (sample.m_nLoopCount) { - v28 = sample.m_nFrequency / field_19192; + v28 = sample.m_nFrequency / m_bTimeSpent; v29 = sample.m_nLoopCount * SampleManager.GetSampleLength(sample.m_nSampleIndex); if (v28 == 0) continue; @@ -2954,8 +2966,8 @@ cAudioManager::ProcessActiveQueues() 0.25f * m_asActiveSamples[j].m_fSoundIntensity); SampleManager.StartChannel(j); } - m_asActiveSamples[j].m_bIsProcessed = 1; - sample.m_bIsProcessed = 1; + m_asActiveSamples[j].m_bIsProcessed = true; + sample.m_bIsProcessed = true; sample.m_nVolumeChange = -1; break; } @@ -2983,7 +2995,7 @@ cAudioManager::ProcessAirBrakes(cVehicleParams *params) rand = m_anRandomTable[0] % 10 + 70; m_sQueueSample.m_bVolume = ComputeVolume(rand, 30.0f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 13; + m_sQueueSample.m_nCounter = 13; m_sQueueSample.m_nSampleIndex = SFX_AIR_BRAKES; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_AIR_BRAKES); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); @@ -2996,7 +3008,7 @@ cAudioManager::ProcessAirBrakes(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3031,10 +3043,10 @@ cAudioManager::ProcessAirportScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_counter = counter++; + m_sQueueSample.m_nCounter = counter++; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 110; @@ -3070,7 +3082,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); m_sQueueSample.m_bVolume = ComputeVolume(80, 50.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 39; + m_sQueueSample.m_nCounter = 39; m_sQueueSample.m_nSampleIndex = SFX_FISHING_BOAT_IDLE; m_sQueueSample.m_nFrequency = 10386; m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex << 16) % 1000; @@ -3085,7 +3097,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 7; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -3115,7 +3127,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) } m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 50.f, m_sQueueSample.m_fDistance); if(!m_sQueueSample.m_bVolume) return 1; - m_sQueueSample.m_counter = 40; + m_sQueueSample.m_nCounter = 40; m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_ACCEL; m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex << 16) % 1000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; @@ -3128,7 +3140,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 7; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -3141,7 +3153,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) if(padAccelerate <= 20) { emittingVol = 45 - 45 * padAccelerate / 40; m_sQueueSample.m_nFrequency = 100 * padAccelerate + 11025; - m_sQueueSample.m_counter = 39; + m_sQueueSample.m_nCounter = 39; m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_IDLE; if(LastAccel > 20) { oneShotVol = LastVol; @@ -3152,7 +3164,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) m_sQueueSample.m_nFrequency = 4000 * padAccelerate / 255 + 8000; if(!boat->m_bIsAnchored) m_sQueueSample.m_nFrequency = 11 * m_sQueueSample.m_nFrequency / 10; - m_sQueueSample.m_counter = 40; + m_sQueueSample.m_nCounter = 40; m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_ACCEL; } LastVol = emittingVol; @@ -3162,14 +3174,14 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) if(gasPedal > 0.0f) { m_sQueueSample.m_nFrequency = 11025; emittingVol = 45; - m_sQueueSample.m_counter = 39; + m_sQueueSample.m_nCounter = 39; m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_IDLE; } else { emittingVol = (105.f * gasPedal) + 15; m_sQueueSample.m_nFrequency = (4000.f * gasPedal) + 8000; if(!boat->m_bIsAnchored) m_sQueueSample.m_nFrequency = 11 * m_sQueueSample.m_nFrequency / 10; - m_sQueueSample.m_counter = 40; + m_sQueueSample.m_nCounter = 40; m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_ACCEL; } } @@ -3187,7 +3199,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 7; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -3216,7 +3228,7 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams *params) vol = (30.f * multiplier); m_sQueueSample.m_bVolume = ComputeVolume(vol, 50.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 38; + m_sQueueSample.m_nCounter = 38; m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -3228,7 +3240,7 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -3271,7 +3283,7 @@ cAudioManager::ProcessBridgeMotor() if(m_sQueueSample.m_fDistance < bridgeIntensity) { m_sQueueSample.m_bVolume = ComputeVolume(maxVolume, bridgeIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 1; + m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nSampleIndex = SFX_FISHING_BOAT_IDLE; // todo check sfx name m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -3284,7 +3296,7 @@ cAudioManager::ProcessBridgeMotor() m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = bridgeIntensity; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = false; AddSampleToRequestedQueue(); @@ -3316,7 +3328,7 @@ cAudioManager::ProcessBridgeOneShots() if(m_sQueueSample.m_fDistance < bridgeIntensity) { m_sQueueSample.m_bVolume = ComputeVolume(maxVolume, bridgeIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 2; + m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 1; @@ -3328,7 +3340,7 @@ cAudioManager::ProcessBridgeOneShots() m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = bridgeIntensity; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_bReverbFlag = false; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3342,7 +3354,7 @@ cAudioManager::ProcessBridgeWarning() if(CStats::CommercialPassed && m_sQueueSample.m_fDistance < 450.f) { m_sQueueSample.m_bVolume = ComputeVolume(100, 450.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 0; + m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nSampleIndex = SFX_BRIDGE_OPEN_WARNING; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -3355,7 +3367,7 @@ cAudioManager::ProcessBridgeWarning() m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 450.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_bReverbFlag = false; m_sQueueSample.m_bRequireReflection = false; @@ -3375,7 +3387,7 @@ cAudioManager::ProcessCarBombTick(cVehicleParams *params) CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); m_sQueueSample.m_bVolume = ComputeVolume(60, 40.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 35; + m_sQueueSample.m_nCounter = 35; m_sQueueSample.m_nSampleIndex = SFX_COUNTDOWN; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -3388,7 +3400,7 @@ cAudioManager::ProcessCarBombTick(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -3422,7 +3434,7 @@ cAudioManager::ProcessCesna(cVehicleParams *params) CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); m_sQueueSample.m_bVolume = ComputeVolume(80, 200.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 52; + m_sQueueSample.m_nCounter = 52; m_sQueueSample.m_nSampleIndex = SFX_CESNA_IDLE; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -3436,7 +3448,7 @@ cAudioManager::ProcessCesna(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 8.0f; m_sQueueSample.m_fSoundIntensity = 200.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3444,7 +3456,7 @@ cAudioManager::ProcessCesna(cVehicleParams *params) if(params->m_fDistance < 8100.f) { m_sQueueSample.m_bVolume = ComputeVolume(80, 90.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 2; + m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_nSampleIndex = SFX_CESNA_REV; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -3459,7 +3471,7 @@ cAudioManager::ProcessCesna(cVehicleParams *params) SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 8.0f; m_sQueueSample.m_fSoundIntensity = 90.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3498,10 +3510,10 @@ cAudioManager::ProcessCinemaScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 4); - m_sQueueSample.m_counter = counter++; + m_sQueueSample.m_nCounter = counter++; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = rand; @@ -3533,7 +3545,7 @@ cAudioManager::ProcessCrane() CalculateDistance(distCalculated, distSquared); m_sQueueSample.m_bVolume = ComputeVolume(100, 80.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 0; + m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nSampleIndex = SFX_CRANE_MAGNET; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -3547,19 +3559,19 @@ cAudioManager::ProcessCrane() SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); } if(m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents) { - m_sQueueSample.m_counter = 1; + m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nSampleIndex = SFX_COL_CAR_2; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COL_CAR_2); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = true; AddSampleToRequestedQueue(); @@ -3601,10 +3613,10 @@ cAudioManager::ProcessDocksScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_DOCKS_FOGHORN); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 3); - m_sQueueSample.m_counter = counter++; + m_sQueueSample.m_nCounter = counter++; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = rand; @@ -3645,7 +3657,7 @@ cAudioManager::ProcessEngineDamage(cVehicleParams *params) CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); m_sQueueSample.m_bVolume = ComputeVolume(emittingVolume, engineDamageIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 28; + m_sQueueSample.m_nCounter = 28; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; @@ -3655,7 +3667,7 @@ cAudioManager::ProcessEngineDamage(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = engineDamageIntensity; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -3798,11 +3810,11 @@ cAudioManager::ProcessExplosions(int32 explosion) m_sQueueSample.m_bVolume = ComputeVolume(maxVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = i; + m_sQueueSample.m_nCounter = i; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bEmittingVolume = maxVolume; m_sQueueSample.m_nLoopStart = 0; @@ -3829,7 +3841,7 @@ cAudioManager::ProcessFireHydrant() CalculateDistance(distCalculated, distSquared); m_sQueueSample.m_bVolume = ComputeVolume(40, 35.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 0; + m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -3842,7 +3854,7 @@ cAudioManager::ProcessFireHydrant() m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -3904,13 +3916,13 @@ void cAudioManager::ProcessFires(int32) m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = i; + m_sQueueSample.m_nCounter = i; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nReleasingVolumeDivider = 10; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); @@ -4059,9 +4071,9 @@ cAudioManager::ProcessFrontEnd() SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); } m_sQueueSample.m_bVolume = 110; - m_sQueueSample.m_counter = counter++; + m_sQueueSample.m_nCounter = counter++; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_bIs2D = true; @@ -4077,7 +4089,7 @@ cAudioManager::ProcessFrontEnd() AddSampleToRequestedQueue(); if(stereo) { ++m_sQueueSample.m_nSampleIndex; - m_sQueueSample.m_counter = counter++; + m_sQueueSample.m_nCounter = counter++; m_sQueueSample.m_bOffset = maxVolume - m_sQueueSample.m_bOffset; AddSampleToRequestedQueue(); } @@ -4096,48 +4108,53 @@ cAudioManager::ProcessGarages() static uint8 iSound = 32; -#define LOOP_HELPER \ - for(j = 0; j < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; ++j) { \ - switch(m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[j]) { \ - case SOUND_GARAGE_DOOR_CLOSED: \ - case SOUND_GARAGE_DOOR_OPENED: \ - if(distSquared < 6400.f) { \ - CalculateDistance(distCalculated, distSquared); \ - m_sQueueSample.m_bVolume = ComputeVolume(60, 80.f, m_sQueueSample.m_fDistance); \ - if(m_sQueueSample.m_bVolume) { \ - if(CGarages::aGarages[i].m_eGarageType == GARAGE_CRUSHER) { \ - m_sQueueSample.m_nSampleIndex = SFX_COL_CAR_PANEL_2; \ - m_sQueueSample.m_nFrequency = 6735; \ - } else if(m_asAudioEntities[m_sQueueSample.m_nEntityIndex] \ - .m_awAudioEvent[j] == 69) { \ - m_sQueueSample.m_nSampleIndex = SFX_COL_CAR_PANEL_2; \ - m_sQueueSample.m_nFrequency = 22000; \ - } else { \ - m_sQueueSample.m_nSampleIndex = SFX_COL_GARAGE_DOOR_1; \ - m_sQueueSample.m_nFrequency = 18000; \ - } \ - m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; \ - m_sQueueSample.m_nReleasingVolumeModificator = 4; \ - m_sQueueSample.m_bEmittingVolume = 60; \ - m_sQueueSample.m_fSpeedMultiplier = 0.0f; \ - m_sQueueSample.m_fSoundIntensity = 80.0f; \ - /*m_sQueueSample.m_nReleasingVolumeModificator = 4;*/ \ - m_sQueueSample.m_bReverbFlag = true; \ - /*m_sQueueSample.m_bReverbFlag = true;*/ \ - m_sQueueSample.m_bIs2D = false; \ - m_sQueueSample.m_bReleasingSoundFlag = 1; \ - m_sQueueSample.m_nLoopCount = 1; \ - m_sQueueSample.m_nLoopStart = 0; \ - m_sQueueSample.m_nLoopEnd = -1; \ - m_sQueueSample.m_counter = iSound++; \ - if(iSound < 32) iSound = 32; \ - m_sQueueSample.m_bRequireReflection = true; \ - AddSampleToRequestedQueue(); \ - } \ - } \ - break; \ - default: continue; \ - } \ +#define LOOP_HELPER \ + for(j = 0; j < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; ++j) { \ + switch(m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[j]) { \ + case SOUND_GARAGE_DOOR_CLOSED: \ + case SOUND_GARAGE_DOOR_OPENED: \ + if(distSquared < 6400.f) { \ + CalculateDistance(distCalculated, distSquared); \ + m_sQueueSample.m_bVolume = \ + ComputeVolume(60, 80.f, m_sQueueSample.m_fDistance); \ + if(m_sQueueSample.m_bVolume) { \ + if(CGarages::aGarages[i].m_eGarageType == \ + GARAGE_CRUSHER) { \ + m_sQueueSample.m_nSampleIndex = \ + SFX_COL_CAR_PANEL_2; \ + m_sQueueSample.m_nFrequency = 6735; \ + } else if(m_asAudioEntities[m_sQueueSample.m_nEntityIndex] \ + .m_awAudioEvent[j] == 69) { \ + m_sQueueSample.m_nSampleIndex = \ + SFX_COL_CAR_PANEL_2; \ + m_sQueueSample.m_nFrequency = 22000; \ + } else { \ + m_sQueueSample.m_nSampleIndex = \ + SFX_COL_GARAGE_DOOR_1; \ + m_sQueueSample.m_nFrequency = 18000; \ + } \ + m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; \ + m_sQueueSample.m_nReleasingVolumeModificator = 4; \ + m_sQueueSample.m_bEmittingVolume = 60; \ + m_sQueueSample.m_fSpeedMultiplier = 0.0f; \ + m_sQueueSample.m_fSoundIntensity = 80.0f; \ + /*m_sQueueSample.m_nReleasingVolumeModificator = 4;*/ \ + m_sQueueSample.m_bReverbFlag = true; \ + /*m_sQueueSample.m_bReverbFlag = true;*/ \ + m_sQueueSample.m_bIs2D = false; \ + m_sQueueSample.m_bReleasingSoundFlag = true; \ + m_sQueueSample.m_nLoopCount = 1; \ + m_sQueueSample.m_nLoopStart = 0; \ + m_sQueueSample.m_nLoopEnd = -1; \ + m_sQueueSample.m_nCounter = iSound++; \ + if(iSound < 32) iSound = 32; \ + m_sQueueSample.m_bRequireReflection = true; \ + AddSampleToRequestedQueue(); \ + } \ + } \ + break; \ + default: continue; \ + } \ } for(uint32 i = 0; i < CGarages::NumGarages; ++i) { @@ -4173,8 +4190,8 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_nCounter = iSound++; if(iSound < 32) iSound = 32; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -4200,10 +4217,10 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nSampleIndex = SFX_GARAGE_DOOR_LOOP; m_sQueueSample.m_nFrequency = 13961; } - m_sQueueSample.m_counter = i; + m_sQueueSample.m_nCounter = i; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 3; @@ -4259,7 +4276,7 @@ cAudioManager::ProcessHelicopter(cVehicleParams *params) m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, gHeliSfxRanges[i].m_fMaxDistance, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = i + 65; + m_sQueueSample.m_nCounter = i + 65; m_sQueueSample.m_nSampleIndex = i + SFX_HELI_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -4273,7 +4290,7 @@ cAudioManager::ProcessHelicopter(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = gHeliSfxRanges[i].m_fMaxDistance; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -4315,10 +4332,10 @@ cAudioManager::ProcessHomeScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); - m_sQueueSample.m_counter = counter++; + m_sQueueSample.m_nCounter = counter++; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bEmittingVolume = rand; @@ -4461,10 +4478,10 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_LAUNDERETTE_LOOP; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_LAUNDERETTE_LOOP); - m_sQueueSample.m_counter = 0; + m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 45; @@ -4481,10 +4498,10 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_LAUNDERETTE_SONG_LOOP; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_LAUNDERETTE_SONG_LOOP); - m_sQueueSample.m_counter = 1; + m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 110; @@ -5072,10 +5089,10 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 0; + m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bEmittingVolume = emittingVolume; m_sQueueSample.m_nLoopStart = @@ -5140,12 +5157,12 @@ cAudioManager::ProcessMissionAudio() --nCheckPlayingDelay; } else if(GetMissionScriptPoliceAudioPlayingStatus() == PLAY_STATUS_FINISHED || - m_sMissionAudio.field_24-- == 0) { + m_sMissionAudio.m_nMissionAudioCounter-- == 0) { m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_FINISHED; m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; SampleManager.StopStreamedFile(1); - m_sMissionAudio.field_24 = 0; + m_sMissionAudio.m_nMissionAudioCounter = 0; } } } else if(m_sMissionAudio.field_22) { @@ -5159,7 +5176,7 @@ cAudioManager::ProcessMissionAudio() m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_FINISHED; m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; SampleManager.StopStreamedFile(1); - m_sMissionAudio.field_24 = 0; + m_sMissionAudio.m_nMissionAudioCounter = 0; } } else { if(m_bUserPause) return; @@ -5175,7 +5192,7 @@ cAudioManager::ProcessMissionAudio() SetMissionScriptPoliceAudio(m_sMissionAudio.m_nSampleIndex); } else { if(m_bUserPause) SampleManager.PauseStream(1, 1); - if(m_sMissionAudio.field_12) { + if(m_sMissionAudio.m_bPredefinedProperties) { SampleManager.SetStreamedVolumeAndPan(80, 63, 1, 1); } else { distSquared = @@ -5243,7 +5260,7 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams *params) m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 30.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 2; + m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_nSampleIndex = SFX_REMOTE_CONTROLLED_CAR; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -5259,7 +5276,7 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams *params) SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -5463,9 +5480,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_bEmittingVolume = emittingVolume; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -5506,9 +5523,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_bEmittingVolume = emittingVolume; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -5564,7 +5581,7 @@ cAudioManager::ProcessPedHeadphones(cPedParams *params) m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 7.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 64; + m_sQueueSample.m_nCounter = 64; m_sQueueSample.m_nSampleIndex = SFX_HEADPHONES; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -5579,7 +5596,7 @@ cAudioManager::ProcessPedHeadphones(cPedParams *params) SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 7.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -6795,10 +6812,10 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); - m_sQueueSample.m_counter = counter++; + m_sQueueSample.m_nCounter = counter++; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bEmittingVolume = emittingVol; @@ -6876,10 +6893,10 @@ cAudioManager::ProcessPornCinema(uint8 sound) if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_counter = 0; + m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = maxVolume; @@ -6903,10 +6920,10 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); - m_sQueueSample.m_counter = rand + 1; + m_sQueueSample.m_nCounter = rand + 1; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_nReleasingVolumeModificator = 6; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_nLoopStart = 0; @@ -6957,7 +6974,7 @@ cAudioManager::ProcessProjectiles() m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = i; + m_sQueueSample.m_nCounter = i; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; @@ -6965,7 +6982,7 @@ cAudioManager::ProcessProjectiles() SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -6992,7 +7009,7 @@ cAudioManager::ProcessRainOnVehicle(cVehicleParams *params) m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, rainOnVehicleIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = veh->m_bRainSamplesCounter++; + m_sQueueSample.m_nCounter = veh->m_bRainSamplesCounter++; veh = params->m_pVehicle; if(veh->m_bRainSamplesCounter > 4) veh->m_bRainSamplesCounter = 68; m_sQueueSample.m_nSampleIndex = (m_anRandomTable[1] & 3) + SFX_CAR_RAIN_1; @@ -7006,7 +7023,7 @@ cAudioManager::ProcessRainOnVehicle(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = rainOnVehicleIntensity; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_bReverbFlag = false; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -7019,8 +7036,16 @@ void cAudioManager::ProcessReverb() const { if(SampleManager.UpdateReverb() && m_bDynamicAcousticModelingStatus) { - for(uint32 i = 0; i < channels; i++) { // bug? - if(m_asActiveSamples[i].m_bReverbFlag) SampleManager.SetChannelReverbFlag(i, 1); + for(uint32 i = 0; i < +#ifdef FIX_BUGS + channels +#else + 28 +#endif + ; + i++) { + if(m_asActiveSamples[i].m_bReverbFlag) + SampleManager.SetChannelReverbFlag(i, 1); } } } @@ -7050,10 +7075,10 @@ cAudioManager::ProcessReverseGear(cVehicleParams *params) m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, reverseGearIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { if(params->m_pVehicle->m_fGasPedal >= 0.0f) { - m_sQueueSample.m_counter = 62; + m_sQueueSample.m_nCounter = 62; m_sQueueSample.m_nSampleIndex = SFX_REVERSE_GEAR_2; } else { - m_sQueueSample.m_counter = 61; + m_sQueueSample.m_nCounter = 61; m_sQueueSample.m_nSampleIndex = SFX_REVERSE_GEAR; } m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; @@ -7067,7 +7092,7 @@ cAudioManager::ProcessReverseGear(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = reverseGearIntensity; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -7099,10 +7124,10 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_SAWMILL_LOOP; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SAWMILL_LOOP); - m_sQueueSample.m_counter = 0; + m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 30; @@ -7122,10 +7147,10 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_counter = 1; + m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nLoopStart = 0; @@ -7175,10 +7200,10 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_SHOP_LOOP; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SHOP_LOOP); - m_sQueueSample.m_counter = 0; + m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 30; @@ -7199,10 +7224,10 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_counter = rand + 1; + m_sQueueSample.m_nCounter = rand + 1; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 70; @@ -7257,7 +7282,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams *params) if(train->m_fWagonPosition == 0.0f) { m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 300.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 32; + m_sQueueSample.m_nCounter = 32; m_sQueueSample.m_nSampleIndex = SFX_TRAIN_FAR; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -7272,7 +7297,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams *params) SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = 300.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -7282,7 +7307,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams *params) if(params->m_fDistance < 4900.f) { m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 70.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 33; + m_sQueueSample.m_nCounter = 33; m_sQueueSample.m_nSampleIndex = SFX_TRAIN_NEAR; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -7296,7 +7321,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 70.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -7419,7 +7444,7 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams *params) m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 40.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = i + 6; + m_sQueueSample.m_nCounter = i + 6; m_sQueueSample.m_nSampleIndex = m_anRandomTable[1] % 6 + SFX_COL_CAR_PANEL_1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency( @@ -7434,7 +7459,7 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_fSpeedMultiplier = 1.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = true; AddSampleToRequestedQueue(); @@ -7580,7 +7605,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) m_sQueueSample.m_nSampleIndex = CarSounds[params->m_nIndex].m_bEngineSoundType + SFX_CAR_REV_10; freq = 10000.f * modificator + 22050; - m_sQueueSample.m_counter = 52; + m_sQueueSample.m_nCounter = 52; m_sQueueSample.m_bBankIndex = 0; m_sQueueSample.m_bIs2D = 0; m_sQueueSample.m_nReleasingVolumeModificator = 3; @@ -7597,7 +7622,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_bReverbFlag = 1; m_sQueueSample.m_bRequireReflection = 0; @@ -7612,7 +7637,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) CarSounds[params->m_nIndex].m_bEngineSoundType + SFX_CAR_REV_10; // to recheck idle sounds start 1 postion later freq = 10000.f * modificator + 22050; - m_sQueueSample.m_counter = 52; + m_sQueueSample.m_nCounter = 52; m_sQueueSample.m_bBankIndex = 0; m_sQueueSample.m_bIs2D = 0; m_sQueueSample.m_nReleasingVolumeModificator = 3; @@ -7629,7 +7654,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_bReverbFlag = 1; m_sQueueSample.m_bRequireReflection = 0; @@ -7639,7 +7664,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) accelerationSample = CarSounds[params->m_nIndex].m_nAccelerationSampleIndex; } m_sQueueSample.m_nSampleIndex = accelerationSample; - m_sQueueSample.m_counter = 2; + m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_bBankIndex = 0; m_sQueueSample.m_bIs2D = 0; m_sQueueSample.m_nReleasingVolumeModificator = 3; @@ -7655,7 +7680,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -7687,7 +7712,7 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams *params) CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); m_sQueueSample.m_bVolume = ComputeVolume(80, 40.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 4; + m_sQueueSample.m_nCounter = 4; m_sQueueSample.m_nSampleIndex = CarSounds[params->m_nIndex].m_nHornSample; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -7701,7 +7726,7 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams *params) SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 5.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -7730,7 +7755,7 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams *params) CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); m_sQueueSample.m_bVolume = ComputeVolume(60, 50.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 12; + m_sQueueSample.m_nCounter = 12; m_sQueueSample.m_nSampleIndex = SFX_REVERSE_WARNING; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -7745,7 +7770,7 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -7774,7 +7799,7 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams *params) 30.f * min(1.f, velocity / (0.5f * params->m_pTransmission->fMaxVelocity)); m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 95.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 0; + m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 3; @@ -7797,7 +7822,7 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams *params) SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 95.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -7819,7 +7844,7 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams *params) CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); m_sQueueSample.m_bVolume = ComputeVolume(80, 110.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 5; + m_sQueueSample.m_nCounter = 5; if(UsesSiren(params->m_nIndex)) { if(params->m_pVehicle->m_status == STATUS_ABANDONED) return; if(veh->m_nCarHornTimer && params->m_nIndex != FIRETRUK) { @@ -7829,7 +7854,7 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams *params) else m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SIREN_FAST); - m_sQueueSample.m_counter = 60; + m_sQueueSample.m_nCounter = 60; } else { m_sQueueSample.m_nSampleIndex = CarSounds[params->m_nIndex].m_nSirenOrAlarmSample; @@ -7850,7 +7875,7 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 7.0f; m_sQueueSample.m_fSoundIntensity = 110.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -7913,7 +7938,7 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams *params) emittingVol = 50.f * skidVal; m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 40.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 3; + m_sQueueSample.m_nCounter = 3; switch(params->m_pVehicle->m_nSurfaceTouched) { case SURFACE_GRASS: case SURFACE_HEDGE: @@ -7946,7 +7971,7 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams *params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -7971,12 +7996,12 @@ void cAudioManager::ProcessWaterCannon(int32) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = 15591; m_sQueueSample.m_nReleasingVolumeModificator = 5; - m_sQueueSample.m_counter = i; + m_sQueueSample.m_nCounter = i; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_bEmittingVolume = 50; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); @@ -8012,12 +8037,12 @@ cAudioManager::ProcessWeather(int32 id) m_sQueueSample.m_bVolume = vol; if(TheCamera.SoundDistUp < 20.f) m_sQueueSample.m_bVolume >>= 1; if(counter == 4) counter = 0; - m_sQueueSample.m_counter = counter++; + m_sQueueSample.m_nCounter = counter++; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_bOffset = (m_anRandomTable[2] & 15) + 55; m_sQueueSample.m_bIs2D = true; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_bEmittingVolume = m_sQueueSample.m_bVolume; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -8030,13 +8055,13 @@ cAudioManager::ProcessWeather(int32 id) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAIN); m_sQueueSample.m_bVolume = (int32)(25.f * CWeather::Rain); - m_sQueueSample.m_counter = 4; + m_sQueueSample.m_nCounter = 4; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_bOffset = 63; m_sQueueSample.m_bIs2D = true; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 30; m_sQueueSample.m_bReverbFlag = false; m_sQueueSample.m_bEmittingVolume = m_sQueueSample.m_bVolume; @@ -8067,7 +8092,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams *params) emittingVol = 23.0f * relativeVelocity * CWeather::WetRoads; m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 30.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 1; + m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nSampleIndex = SFX_ROAD_NOISE; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -8083,7 +8108,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams *params) SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -8116,10 +8141,10 @@ cAudioManager::ProcessWorkShopScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_WORKSHOP_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_WORKSHOP_1); - m_sQueueSample.m_counter = 0; + m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = 30; @@ -8325,7 +8350,7 @@ void cAudioManager::SetMissionAudioLocation(float x, float y, float z) { if(m_bIsInitialised) { - m_sMissionAudio.field_12 = 0; + m_sMissionAudio.m_bPredefinedProperties = 0; m_sMissionAudio.m_vecPos = {x, y, z}; } } @@ -8356,7 +8381,7 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, int32 freq) uint8 emittingVol = vol - gJumboVolOffsetPercentage / 100; m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 180.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 3; + m_sQueueSample.m_nCounter = 3; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_ENGINE; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -8368,7 +8393,7 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, int32 freq) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 180.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -8386,7 +8411,7 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol) m_sQueueSample.m_bVolume = vol; if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nSampleIndex = SFX_JUMBO_DIST_FLY; - m_sQueueSample.m_counter = 0; + m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 1; @@ -8395,7 +8420,7 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_DIST_FLY); m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSoundIntensity = 440.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_nReleasingVolumeDivider = 5; @@ -8413,7 +8438,7 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 240.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 5; + m_sQueueSample.m_nCounter = 5; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_RUMBLE; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = true; @@ -8425,13 +8450,13 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 240.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 12; m_sQueueSample.m_bOffset = 0; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); - m_sQueueSample.m_counter = 6; + m_sQueueSample.m_nCounter = 6; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_RUMBLE; m_sQueueSample.m_nFrequency += 200; m_sQueueSample.m_bOffset = maxVolume; @@ -8451,7 +8476,7 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol) m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 180.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 1; + m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -8463,7 +8488,7 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 180.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -8480,7 +8505,7 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, int32 freq) m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 170.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_counter = 2; + m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_WHINE; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -8492,7 +8517,7 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, int32 freq) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 170.0f; - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 910ffcaf..c5350e10 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -138,7 +138,7 @@ class tSound { public: int32 m_nEntityIndex; - int32 m_counter; + int32 m_nCounter; int32 m_nSampleIndex; uint8 m_bBankIndex; bool m_bIs2D; @@ -170,8 +170,8 @@ public: bool m_bRequireReflection; // Used for oneshots uint8 m_bOffset; int32 m_nReleasingVolumeDivider; - uint8 m_bIsProcessed; - uint8 m_bLoopEnded; + bool m_bIsProcessed; + bool m_bLoopEnded; uint8 field_82; uint8 field_83; int32 calculatedVolume; @@ -244,14 +244,14 @@ class cMissionAudio { public: CVector m_vecPos; - uint8 field_12; + bool m_bPredefinedProperties; uint8 gap_13[3]; int m_nSampleIndex; uint8 m_bLoadingStatus; uint8 m_bPlayStatus; uint8 field_22; uint8 field_23; - int field_24; + int32 m_nMissionAudioCounter; bool m_bIsPlayed; uint8 field_29; uint8 field_30; @@ -328,7 +328,7 @@ public: int32 m_nBridgeEntity; cMissionAudio m_sMissionAudio; int32 m_anRandomTable[5]; - uint8 field_19192; // time? + uint8 m_bTimeSpent; uint8 m_bUserPause; uint8 m_bPreviousUserPause; uint8 field_19195; // unused diff --git a/src/audio/PoliceRadio.cpp b/src/audio/PoliceRadio.cpp index 3ba16ef3..255d7026 100644 --- a/src/audio/PoliceRadio.cpp +++ b/src/audio/PoliceRadio.cpp @@ -125,7 +125,7 @@ void cAudioManager::DoPoliceRadioCrackle() { m_sQueueSample.m_nEntityIndex = m_nPoliceChannelEntity; - m_sQueueSample.m_counter = 0; + m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nSampleIndex = SFX_POLICE_RADIO_CRACKLE; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = true; @@ -136,7 +136,7 @@ cAudioManager::DoPoliceRadioCrackle() m_sQueueSample.m_bEmittingVolume = m_sQueueSample.m_bVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_POLICE_RADIO_CRACKLE); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_POLICE_RADIO_CRACKLE); - m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_bReverbFlag = false; m_sQueueSample.m_bOffset = 63; m_sQueueSample.m_nReleasingVolumeDivider = 3; @@ -147,17 +147,20 @@ cAudioManager::DoPoliceRadioCrackle() void cAudioManager::ServicePoliceRadio() { - int32 wantedLevel = 0; // bug?; + int32 wantedLevel = 0; // uninitialized variable static uint32 nLastSeen = 300; - if (!m_bIsInitialised) return; + if(!m_bIsInitialised) return; - if (!m_bUserPause) { + if(!m_bUserPause) { bool crimeReport = SetupCrimeReport(); +#ifdef FIX_BUGS // Crash at 0x5fe6ef + if(!FindPlayerPed() || !FindPlayerPed()->m_pWanted) return; +#endif wantedLevel = FindPlayerPed()->m_pWanted->m_nWantedLevel; - if (!crimeReport) { - if (wantedLevel) { - if (nLastSeen) { + if(!crimeReport) { + if(wantedLevel) { + if(nLastSeen) { --nLastSeen; } else { nLastSeen = m_anRandomTable[1] % 1000 + 2000; From 9593a2c000c8fed4a83e26995acdba27074d5f5a Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 12 Apr 2020 11:36:51 +0300 Subject: [PATCH 082/112] fixed cranes bug --- src/control/Cranes.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/control/Cranes.cpp b/src/control/Cranes.cpp index 021a5c19..33385dae 100644 --- a/src/control/Cranes.cpp +++ b/src/control/Cranes.cpp @@ -410,6 +410,8 @@ void CCrane::FindCarInSectorList(CPtrList* pList) if (pVehicle->GetPosition().x < m_fPickupX1 || pVehicle->GetPosition().x > m_fPickupX2 || pVehicle->GetPosition().y < m_fPickupY1 || pVehicle->GetPosition().y > m_fPickupY2) continue; + if (pVehicle->pDriver) + continue; if (Abs(pVehicle->GetMoveSpeed().x) >= CAR_MOVING_SPEED_THRESHOLD || Abs(pVehicle->GetMoveSpeed().y) >= CAR_MOVING_SPEED_THRESHOLD || Abs(pVehicle->GetMoveSpeed().z) >= CAR_MOVING_SPEED_THRESHOLD) @@ -674,4 +676,4 @@ void CranesLoad(uint8* buf, uint32 size) STARTPATCHES InjectHook(0x5454D0, CranesLoad, PATCH_JUMP); // GenericLoad -ENDPATCHES \ No newline at end of file +ENDPATCHES From 1732f9b5c66ed661e4874de7c32212274b0b1ec0 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 12 Apr 2020 12:10:25 +0300 Subject: [PATCH 083/112] obviously forgot about it --- src/core/Pad.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp index 973b4ef6..f83998b8 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -94,7 +94,7 @@ void TankCheat() if (node < 0) return; -#ifndef FIX_BUGS // TEMP!!! +#ifdef FIX_BUGS CAutomobile* tank = new CAutomobile(MI_RHINO, RANDOM_VEHICLE); #else CAutomobile *tank = new CAutomobile(MI_RHINO, MISSION_VEHICLE); From e77accb3f5ee7c3606525755b20aceeedc36dced Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 12 Apr 2020 12:29:29 +0300 Subject: [PATCH 084/112] Remove CObject from readme --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 07bdfbc2..fd5c2041 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,6 @@ to reverse at the time, calling the original functions is acceptable. cAudioManager - WIP CBoat CBulletInfo -CObject CPacManPickups CPedPath CRoadBlocks From 8476283174411e80b5129611763f1beb868edffc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Sun, 12 Apr 2020 18:37:59 +0300 Subject: [PATCH 085/112] Ped fix --- src/peds/Ped.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 2cd942f9..51e49875 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -2724,7 +2724,10 @@ CPed::SetObjective(eObjective newObj, void *entity) break; } } else { - if ((newObj == OBJECTIVE_LEAVE_VEHICLE + if ((newObj == OBJECTIVE_WAIT_IN_CAR_THEN_GETOUT || newObj == OBJECTIVE_KILL_CHAR_ON_FOOT || + newObj == OBJECTIVE_KILL_CHAR_ANY_MEANS || newObj == OBJECTIVE_FLEE_CHAR_ON_FOOT_TILL_SAFE || + newObj == OBJECTIVE_FLEE_CHAR_ON_FOOT_ALWAYS || newObj == OBJECTIVE_GOTO_CHAR_ON_FOOT || + newObj == OBJECTIVE_FOLLOW_PED_IN_FORMATION || newObj == OBJECTIVE_LEAVE_VEHICLE #ifdef VC_PED_PORTS || newObj == OBJECTIVE_LEAVE_CAR_AND_DIE #endif @@ -2733,7 +2736,6 @@ CPed::SetObjective(eObjective newObj, void *entity) } #ifdef VC_PED_PORTS - SetObjectiveTimer(0); ClearPointGunAt(); #endif bObjectiveCompleted = false; From bde3ef4f43afef08d56f7e47c75fc4f20f6ec279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Sun, 12 Apr 2020 18:51:46 +0300 Subject: [PATCH 086/112] Revert "fix" --- src/peds/Ped.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 51e49875..a1450ade 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -2724,10 +2724,7 @@ CPed::SetObjective(eObjective newObj, void *entity) break; } } else { - if ((newObj == OBJECTIVE_WAIT_IN_CAR_THEN_GETOUT || newObj == OBJECTIVE_KILL_CHAR_ON_FOOT || - newObj == OBJECTIVE_KILL_CHAR_ANY_MEANS || newObj == OBJECTIVE_FLEE_CHAR_ON_FOOT_TILL_SAFE || - newObj == OBJECTIVE_FLEE_CHAR_ON_FOOT_ALWAYS || newObj == OBJECTIVE_GOTO_CHAR_ON_FOOT || - newObj == OBJECTIVE_FOLLOW_PED_IN_FORMATION || newObj == OBJECTIVE_LEAVE_VEHICLE + if ((newObj == OBJECTIVE_LEAVE_VEHICLE #ifdef VC_PED_PORTS || newObj == OBJECTIVE_LEAVE_CAR_AND_DIE #endif From 8b2138f7bdfb508c5ff42681013dd886a5eb1955 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Sun, 12 Apr 2020 20:22:28 +0300 Subject: [PATCH 087/112] Frontend fixes + triangle for back as default --- src/core/Frontend.cpp | 89 ++++++++++++++++++++++++------------------ src/core/Frontend.h | 5 ++- src/core/MenuScreens.h | 4 +- src/core/Pad.h | 1 + src/core/config.h | 5 ++- 5 files changed, 62 insertions(+), 42 deletions(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index a0b70f27..0e719cca 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -44,16 +44,27 @@ #define FEET_IN_METER 3.33f #endif -#define SCROLLABLE_STATS_PAGE #ifdef SCROLLABLE_STATS_PAGE #define isPlainTextScreen(screen) (screen == MENUPAGE_BRIEFS) #else #define isPlainTextScreen(screen) (screen == MENUPAGE_BRIEFS || screen == MENUPAGE_STATS) #endif +#ifdef TRIANGLE_BACK_BUTTON +#define GetBackJustUp GetTriangleJustUp +#define GetBackJustDown GetTriangleJustDown +#elif defined(CIRCLE_BACK_BUTTON) +#define GetBackJustUp GetCircleJustUp +#define GetBackJustDown GetCircleJustDown +#else +#define GetBackJustUp GetSquareJustUp +#define GetBackJustDown GetSquareJustDown +#endif + #ifdef MENU_MAP bool CMenuManager::bMenuMapActive = false; bool CMenuManager::bMapMouseShownOnce = false; +bool CMenuManager::bMapLoaded = false; float CMenuManager::fMapSize; float CMenuManager::fMapCenterY; float CMenuManager::fMapCenterX; @@ -359,11 +370,6 @@ CMenuManager::PageDownList(bool playSoundOnSuccess) inline void CMenuManager::ThingsToDoBeforeLeavingPage() { -#ifndef MASTER - if (m_nCurrScreen == MENUPAGE_NO_MEMORY_CARD || m_nCurrScreen == MENUPAGE_MEMORY_CARD_DEBUG) { - SaveSettings(); - } -#endif if ((m_nCurrScreen == MENUPAGE_SKIN_SELECT) && strcmp(m_aSkinName, m_PrefsSkinFile) != 0) { CWorld::Players[0].SetPlayerSkin(m_PrefsSkinFile); } else if (m_nCurrScreen == MENUPAGE_SOUND_SETTINGS) { @@ -719,13 +725,6 @@ CMenuManager::Draw() else str = TheText.Get(aScreens[m_nCurrScreen].m_aEntries[0].m_EntryName); break; -#ifndef MASTER - case MENUPAGE_NO_MEMORY_CARD: - case MENUPAGE_MEMORY_CARD_DEBUG: - CFont::SetColor(CRGBA(235, 170, 50, FadeIn(127))); // white in mobile, because all texts are white there - str = TheText.Get(aScreens[m_nCurrScreen].m_aEntries[0].m_EntryName); - break; -#endif case MENUPAGE_SAVE_OVERWRITE_CONFIRM: if (Slots[m_nCurrSaveSlot + 1] == SLOT_EMPTY) str = TheText.Get("FESZ_QZ"); @@ -743,20 +742,12 @@ CMenuManager::Draw() break; } -#ifndef MASTER - if (m_nCurrScreen == MENUPAGE_NO_MEMORY_CARD || m_nCurrScreen == MENUPAGE_MEMORY_CARD_DEBUG) { - // CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENU_X_MARGIN)); // it's always like that on PC - CFont::PrintString(MENU_X_LEFT_ALIGNED(MENU_X_MARGIN), MENU_Y(210.0), str); - } else -#endif - { #ifdef FIX_BUGS - // Label is wrapped from right by StretchX(40)px, but wrapped from left by 40px. And this is only place R* didn't use StretchX in here. - CFont::PrintString(MENU_X_LEFT_ALIGNED(MENU_X_MARGIN), MENU_Y(menuXYpadding), str); + // Label is wrapped from right by StretchX(40)px, but wrapped from left by 40px. And this is only place R* didn't use StretchX in here. + CFont::PrintString(MENU_X_LEFT_ALIGNED(MENU_X_MARGIN), MENU_Y(menuXYpadding), str); #else - CFont::PrintString(MENU_X_MARGIN, menuXYpadding, str); + CFont::PrintString(MENU_X_MARGIN, menuXYpadding, str); #endif - } } CFont::SetCentreSize(SCREEN_WIDTH); @@ -3337,6 +3328,7 @@ CMenuManager::Process(void) m_bWantToRestart = false; InitialiseChangedLanguageSettings(); + // Just a hack by R* to not make game continuously resume/pause. But we it seems we can live with it. if (CPad::GetPad(0)->GetEscapeJustDown()) RequestFrontEndStartUp(); @@ -3662,7 +3654,7 @@ CMenuManager::ProcessButtonPresses(void) } #ifndef TIDY_UP_PBP - if (CPad::GetPad(0)->GetEscapeJustDown() || CPad::GetPad(0)->GetSquareJustDown()) { + if (CPad::GetPad(0)->GetEscapeJustDown() || CPad::GetPad(0)->GetBackJustDown()) { m_bShowMouse = false; goBack = true; } @@ -3741,7 +3733,7 @@ CMenuManager::ProcessButtonPresses(void) if (CPad::GetPad(0)->GetEnterJustDown() || CPad::GetPad(0)->GetCrossJustDown() || CPad::GetPad(0)->GetLeftMouseJustDown()) { optionSelected = true; } - if (CPad::GetPad(0)->GetEscapeJustDown() || CPad::GetPad(0)->GetSquareJustUp()) { + if (CPad::GetPad(0)->GetEscapeJustDown() || CPad::GetPad(0)->GetBackJustUp()) { if (m_nCurrScreen != MENUPAGE_START_MENU) { goBack = true; } @@ -4009,7 +4001,7 @@ CMenuManager::ProcessButtonPresses(void) } #ifndef TIDY_UP_PBP - if (CPad::GetPad(0)->GetSquareJustDown()) { + if (CPad::GetPad(0)->GetBackJustDown()) { if (m_nCurrScreen != MENUPAGE_START_MENU && m_nCurrScreen != MENUPAGE_PAUSE_MENU) { m_bShowMouse = false; goBack = true; @@ -4050,11 +4042,11 @@ CMenuManager::ProcessButtonPresses(void) if (!goDown && !goUp && !optionSelected) { if (m_nCurrScreen != MENUPAGE_START_MENU) { if (isPlainTextScreen(m_nCurrScreen)) { - if (CPad::GetPad(0)->GetEscapeJustDown() || CPad::GetPad(0)->GetSquareJustUp()) { + if (CPad::GetPad(0)->GetEscapeJustDown() || CPad::GetPad(0)->GetBackJustUp()) { goBack = true; } } else { - if (CPad::GetPad(0)->GetEscapeJustDown() || (m_nCurrScreen != MENUPAGE_PAUSE_MENU && CPad::GetPad(0)->GetSquareJustDown())) { + if (CPad::GetPad(0)->GetEscapeJustDown() || (m_nCurrScreen != MENUPAGE_PAUSE_MENU && CPad::GetPad(0)->GetBackJustDown())) { m_bShowMouse = false; goBack = true; } @@ -4300,12 +4292,7 @@ CMenuManager::ProcessButtonPresses(void) } else { #ifdef MENU_MAP if (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_TargetMenu == MENUPAGE_MAP) { - fMapCenterX = SCREEN_WIDTH / 2; - fMapCenterY = SCREEN_HEIGHT / 3; - fMapSize = SCREEN_HEIGHT / CDraw::GetAspectRatio(); - bMapMouseShownOnce = false; - CPad::GetPad(0)->Clear(false); - CPad::GetPad(1)->Clear(false); + bMapLoaded = false; } #endif @@ -4913,8 +4900,19 @@ CMenuManager::SwitchMenuOnAndOff() pControlEdit = nil; m_bShutDownFrontEndRequested = false; DisplayComboButtonErrMsg = false; - CPad::GetPad(0)->Clear(0); - CPad::GetPad(1)->Clear(0); + +#ifdef REGISTER_START_BUTTON + int16 start1 = CPad::GetPad(0)->PCTempJoyState.Start, start2 = CPad::GetPad(0)->PCTempKeyState.Start, + start3 = CPad::GetPad(0)->OldState.Start, start4 = CPad::GetPad(0)->NewState.Start; +#endif + CPad::GetPad(0)->Clear(false); + CPad::GetPad(1)->Clear(false); +#ifdef REGISTER_START_BUTTON + CPad::GetPad(0)->PCTempJoyState.Start = start1; + CPad::GetPad(0)->PCTempKeyState.Start = start2; + CPad::GetPad(0)->OldState.Start = start3; + CPad::GetPad(0)->NewState.Start = start4; +#endif m_nCurrScreen = MENUPAGE_NONE; } } @@ -5243,6 +5241,20 @@ CMenuManager::PrintMap(void) bMenuMapActive = true; CRadar::InitFrontEndMap(); + if (!bMapLoaded) { + fMapCenterX = SCREEN_WIDTH / 2; + fMapCenterY = SCREEN_HEIGHT / 3; + fMapSize = SCREEN_HEIGHT / CDraw::GetAspectRatio(); + bMapMouseShownOnce = false; + bMapLoaded = true; + + // Let's wait for a frame to not toggle the waypoint + if (CPad::GetPad(0)->NewState.Cross) { + bMenuMapActive = false; + return; + } + } + // Because fMapSize is half of the map length, and map consists of 3x3 tiles. float halfTile = fMapSize / 3.0f; @@ -5601,6 +5613,9 @@ uint8 CMenuManager::GetNumberOfMenuOptions() } #endif +#undef GetBackJustUp +#undef GetBackJustDown + STARTPATCHES for (int i = 1; i < ARRAY_SIZE(aScreens); i++) Patch(0x611930 + sizeof(CMenuScreen) * i, aScreens[i]); diff --git a/src/core/Frontend.h b/src/core/Frontend.h index a1ee53f2..69851c12 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -196,7 +196,7 @@ enum eMenuScreen MENUPAGE_NEW_GAME_RELOAD = 10, MENUPAGE_LOAD_SLOT_CONFIRM = 11, MENUPAGE_DELETE_SLOT_CONFIRM = 12, - MENUPAGE_NO_MEMORY_CARD = 13, + MENUPAGE_NO_MEMORY_CARD = 13, // hud adjustment page in mobile MENUPAGE_LOADING_IN_PROGRESS = 14, MENUPAGE_DELETING_IN_PROGRESS = 15, MENUPAGE_PS2_LOAD_FAILED = 16, @@ -240,7 +240,7 @@ enum eMenuScreen MENUPAGE_SKIN_SELECT = 54, MENUPAGE_KEYBOARD_CONTROLS = 55, MENUPAGE_MOUSE_CONTROLS = 56, - MENUPAGE_57 = 57, + MENUPAGE_57 = 57, // mission failed, wanna restart page in mobile MENUPAGE_58 = 58, #ifdef MENU_MAP MENUPAGE_MAP = 59, @@ -570,6 +570,7 @@ public: #ifdef MENU_MAP static bool bMenuMapActive; static bool bMapMouseShownOnce; + static bool bMapLoaded; static float fMapSize; static float fMapCenterY; static float fMapCenterX; diff --git a/src/core/MenuScreens.h b/src/core/MenuScreens.h index cece80c7..9c0dde69 100644 --- a/src/core/MenuScreens.h +++ b/src/core/MenuScreens.h @@ -128,7 +128,7 @@ const CMenuScreen aScreens[] = { // MENUPAGE_NO_MEMORY_CARD = 13 { "FES_NOC", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, - MENUACTION_LABEL, "FEC_OFI", SAVESLOT_NONE, MENUPAGE_NONE, // only in mobile. FEC_OFI is missing + // hud adjustment page in mobile }, // MENUPAGE_LOADING_IN_PROGRESS = 14 @@ -444,7 +444,7 @@ const CMenuScreen aScreens[] = { // MENUPAGE_57 = 57 { "", 0, MENUPAGE_NONE, MENUPAGE_NONE, 0, 0, - + // mission failed, wanna restart page in mobile }, // MENUPAGE_58 = 58 diff --git a/src/core/Pad.h b/src/core/Pad.h index 78bfac1d..cb705c6b 100644 --- a/src/core/Pad.h +++ b/src/core/Pad.h @@ -418,6 +418,7 @@ public: bool GetLeftStickXJustDown() { return !!(NewState.LeftStickX && !OldState.LeftStickX); } bool GetLeftStickYJustDown() { return !!(NewState.LeftStickY && !OldState.LeftStickY); } + bool GetTriangleJustUp() { return !!(!NewState.Triangle && OldState.Triangle); } bool GetCrossJustUp() { return !!(!NewState.Cross && OldState.Cross); } bool GetSquareJustUp() { return !!(!NewState.Square && OldState.Square); } bool GetDPadUpJustUp() { return !!(!NewState.DPadUp && OldState.DPadUp); } diff --git a/src/core/config.h b/src/core/config.h index 8dea3216..3e3d1a90 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -192,7 +192,7 @@ enum Config { // Pad #define XINPUT #define KANGAROO_CHEAT -#define REGISTER_START_BUTTON // currently only in menu sadly. resumes the game +#define REGISTER_START_BUTTON // Hud, frontend and radar #define ASPECT_RATIO_SCALE // Not just makes everything scale with aspect ratio, also adds support for all aspect ratios @@ -200,6 +200,9 @@ enum Config { #define PS2_SAVE_DIALOG // PS2 style save dialog with transparent black box // #define PS2_LIKE_MENU // An effort to recreate PS2 menu, cycling through tabs, different bg etc. #define MENU_MAP // VC-like menu map. Make sure you have new menu.txd +#define SCROLLABLE_STATS_PAGE // only draggable by mouse atm +#define TRIANGLE_BACK_BUTTON +// #define CIRCLE_BACK_BUTTON // Script #define USE_DEBUG_SCRIPT_LOADER // makes game load main_freeroam.scm by default From 3aae52d220e163243c2ee47fde354687f16acb03 Mon Sep 17 00:00:00 2001 From: aap Date: Mon, 13 Apr 2020 00:02:11 +0200 Subject: [PATCH 088/112] finished CBoat --- README.md | 1 - src/core/re3.cpp | 1 + src/entities/Physical.cpp | 2 +- src/entities/Physical.h | 2 +- src/modelinfo/VehicleModelInfo.cpp | 7 +- src/vehicles/Automobile.cpp | 10 +- src/vehicles/Boat.cpp | 641 +++++++++++++++++++++++++++-- src/vehicles/Boat.h | 49 ++- src/vehicles/Vehicle.cpp | 49 +++ src/vehicles/Vehicle.h | 1 + 10 files changed, 695 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index fd5c2041..1f27fdb2 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,6 @@ to reverse at the time, calling the original functions is acceptable. ### Unreversed / incomplete classes (at least the ones we know) ``` cAudioManager - WIP -CBoat CBulletInfo CPacManPickups CPedPath diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 00674b19..51213048 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -342,6 +342,7 @@ DebugMenuPopulate(void) DebugMenuAddCmd("Spawn", "Spawn Dodo", [](){ SpawnCar(MI_DODO); }); DebugMenuAddCmd("Spawn", "Spawn Rhino", [](){ SpawnCar(MI_RHINO); }); DebugMenuAddCmd("Spawn", "Spawn Firetruck", [](){ SpawnCar(MI_FIRETRUCK); }); + DebugMenuAddCmd("Spawn", "Spawn Predator", [](){ SpawnCar(MI_PREDATOR); }); DebugMenuAddVarBool8("Debug", "Draw hud", (int8*)&CHud::m_Wants_To_Draw_Hud, nil); DebugMenuAddVar("Debug", "Engine Status", &engineStatus, nil, 1, 0, 226, nil); diff --git a/src/entities/Physical.cpp b/src/entities/Physical.cpp index faa8a484..9fc77a8c 100644 --- a/src/entities/Physical.cpp +++ b/src/entities/Physical.cpp @@ -21,7 +21,7 @@ CPhysical::CPhysical(void) { int i; - fForceMultiplier = 1.0f; + m_fForceMultiplier = 1.0f; m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); m_vecMoveFriction = CVector(0.0f, 0.0f, 0.0f); diff --git a/src/entities/Physical.h b/src/entities/Physical.h index 1b9f0e02..6fbc3ffd 100644 --- a/src/entities/Physical.h +++ b/src/entities/Physical.h @@ -29,7 +29,7 @@ public: CVector m_vecTurnSpeedAvg; float m_fMass; float m_fTurnMass; // moment of inertia - float fForceMultiplier; + float m_fForceMultiplier; float m_fAirResistance; float m_fElasticity; float m_fBuoyancy; diff --git a/src/modelinfo/VehicleModelInfo.cpp b/src/modelinfo/VehicleModelInfo.cpp index 432a9ea2..0c45aa12 100644 --- a/src/modelinfo/VehicleModelInfo.cpp +++ b/src/modelinfo/VehicleModelInfo.cpp @@ -12,6 +12,7 @@ #include "World.h" #include "Vehicle.h" #include "Automobile.h" +#include "Boat.h" #include "Train.h" #include "Plane.h" #include "Heli.h" @@ -80,9 +81,9 @@ RwObjectNameIdAssocation carIds[] = { }; RwObjectNameIdAssocation boatIds[] = { - { "boat_moving_hi", 1, VEHICLE_FLAG_COLLAPSE }, - { "boat_rudder_hi", 3, VEHICLE_FLAG_COLLAPSE }, - { "windscreen", 2, VEHICLE_FLAG_WINDSCREEN | VEHICLE_FLAG_COLLAPSE }, + { "boat_moving_hi", BOAT_MOVING, VEHICLE_FLAG_COLLAPSE }, + { "boat_rudder_hi", BOAT_RUDDER, VEHICLE_FLAG_COLLAPSE }, + { "windscreen", BOAT_WINDSCREEN, VEHICLE_FLAG_WINDSCREEN | VEHICLE_FLAG_COLLAPSE }, { "ped_frontseat", BOAT_POS_FRONTSEAT, VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID }, { nil, 0, 0 } }; diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index d94428e5..257c8d33 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -667,7 +667,7 @@ CAutomobile::ProcessControl(void) if(!strongGrip1 && !CVehicle::bCheat3) gripCheat = false; float acceleration = pHandling->Transmission.CalculateDriveAcceleration(m_fGasPedal, m_nCurrentGear, m_fChangeGearTime, fwdSpeed, gripCheat); - acceleration /= fForceMultiplier; + acceleration /= m_fForceMultiplier; // unused if(GetModelIndex() == MI_MIAMI_RCBARON || @@ -718,7 +718,7 @@ CAutomobile::ProcessControl(void) else traction = 0.004f; traction *= pHandling->fTractionMultiplier / 4.0f; - traction /= fForceMultiplier; + traction /= m_fForceMultiplier; if(CVehicle::bCheat3) traction *= 4.0f; @@ -3791,7 +3791,7 @@ CAutomobile::BlowUpCar(CEntity *culprit) } ChangeLawEnforcerState(false); - gFireManager.StartFire(this, culprit, 0.8f, 1); // TODO + gFireManager.StartFire(this, culprit, 0.8f, true); CDarkel::RegisterCarBlownUpByPlayer(this); if(GetModelIndex() == MI_RCBANDIT) CExplosion::AddExplosion(this, culprit, EXPLOSION_CAR_QUICK, GetPosition(), 0); @@ -4054,7 +4054,7 @@ CAutomobile::HasCarStoppedBecauseOfLight(void) if(ThePaths.m_connections[curnode->firstLink + i] == AutoPilot.m_nNextRouteNode) break; if(i < curnode->numLinks && - ThePaths.m_carPathLinks[ThePaths.m_carPathConnections[curnode->firstLink + i]].trafficLightType & 3) // TODO + ThePaths.m_carPathLinks[ThePaths.m_carPathConnections[curnode->firstLink + i]].trafficLightType & 3) return true; } @@ -4064,7 +4064,7 @@ CAutomobile::HasCarStoppedBecauseOfLight(void) if(ThePaths.m_connections[curnode->firstLink + i] == AutoPilot.m_nPrevRouteNode) break; if(i < curnode->numLinks && - ThePaths.m_carPathLinks[ThePaths.m_carPathConnections[curnode->firstLink + i]].trafficLightType & 3) // TODO + ThePaths.m_carPathLinks[ThePaths.m_carPathConnections[curnode->firstLink + i]].trafficLightType & 3) return true; } diff --git a/src/vehicles/Boat.cpp b/src/vehicles/Boat.cpp index 0b3dab3d..0159d168 100644 --- a/src/vehicles/Boat.cpp +++ b/src/vehicles/Boat.cpp @@ -1,12 +1,25 @@ #include "common.h" #include "patcher.h" -#include "Boat.h" +#include "General.h" +#include "Timecycle.h" #include "HandlingMgr.h" +#include "CarCtrl.h" #include "RwHelper.h" #include "ModelIndices.h" +#include "VisibilityPlugins.h" +#include "DMAudio.h" +#include "Camera.h" +#include "Darkel.h" +#include "Explosion.h" +#include "Particle.h" #include "WaterLevel.h" -#include "Pools.h" +#include "Floater.h" #include "World.h" +#include "Pools.h" +#include "Pad.h" +#include "Boat.h" + +#define INVALID_ORIENTATION (-9999.99f) float &fShapeLength = *(float*)0x600E78; float &fShapeTime = *(float*)0x600E7C; @@ -19,10 +32,6 @@ float WAKE_LIFETIME = 400.0f; CBoat * (&CBoat::apFrameWakeGeneratingBoats)[4] = *(CBoat * (*)[4])*(uintptr*)0x8620E0; -WRAPPER void CBoat::ProcessControl() { EAXJMP(0x53EF10); } -WRAPPER void CBoat::ProcessControlInputs(uint8) { EAXJMP(0x53EC70); } -WRAPPER void CBoat::BlowUpCar(CEntity* ent) { EAXJMP(0x541CB0); } - CBoat::CBoat(int mi, uint8 owner) : CVehicle(owner) { CVehicleModelInfo *minfo = (CVehicleModelInfo*)CModelInfo::GetModelInfo(mi); @@ -47,35 +56,31 @@ CBoat::CBoat(int mi, uint8 owner) : CVehicle(owner) m_fGasPedal = 0.0f; m_fBrakePedal = 0.0f; - field_288 = 0.25f; - field_28C = 0.35f; - field_290 = 0.7f; - field_294 = 0.998f; - field_298 = 0.999f; - field_29C = 0.85f; - field_2A0 = 0.96f; - field_2A4 = 0.96f; + m_fPropellerZ = 0.25f; + m_fPropellerY = 0.35f; + m_waterMoveDrag = CVector(0.7f, 0.998f, 0.999f); + m_waterTurnDrag = CVector(0.85f, 0.96f, 0.96f); _unk2 = false; - m_fTurnForceZ = 7.0f; - field_2FC = 7.0f; - m_vecMoveForce = CVector(0.0f, 0.0f, 0.0f); + m_fVolumeUnderWater = 7.0f; + m_fPrevVolumeUnderWater = 7.0f; + m_vecBuoyancePoint = CVector(0.0f, 0.0f, 0.0f); - field_300 = 0; - m_bBoatFlag1 = true; - m_bBoatFlag2 = true; + m_nDeltaVolumeUnderWater = 0; + bBoatInWater = true; + bPropellerInWater = true; bIsInWater = true; unk1 = 0.0f; m_bIsAnchored = true; - field_2C4 = -9999.99f; + m_fOrientation = INVALID_ORIENTATION; bTouchingWater = true; - field_2CC = 0.0f; - field_2D0 = 0; + m_fDamage = 0.0f; + m_pSetOnFireEntity = nil; m_nNumWakePoints = 0; - for (int16 i = 0; i < 32; i++) + for (int16 i = 0; i < ARRAY_SIZE(m_afWakePointLifeTime); i++) m_afWakePointLifeTime[i] = 0.0f; m_nAmmoInClip = 20; @@ -94,6 +99,541 @@ CBoat::GetComponentWorldPosition(int32 component, CVector &pos) pos = *RwMatrixGetPos(RwFrameGetLTM(m_aBoatNodes[component])); } +void +CBoat::ProcessControl(void) +{ + if(m_nZoneLevel > LEVEL_NONE && m_nZoneLevel != CCollision::ms_collisionInMemory) + return; + + bool onLand = m_fDamageImpulse > 0.0f && m_vecDamageNormal.z > 0.1f; + + PruneWakeTrail(); + + int r, g, b; + RwRGBA splashColor, jetColor; + r = 114.75f*(CTimeCycle::GetAmbientRed() + 0.5f*CTimeCycle::GetDirectionalRed()); + g = 114.75f*(CTimeCycle::GetAmbientGreen() + 0.5f*CTimeCycle::GetDirectionalGreen()); + b = 114.75f*(CTimeCycle::GetAmbientBlue() + 0.5f*CTimeCycle::GetDirectionalBlue()); + r = clamp(r, 0, 255); + g = clamp(g, 0, 255); + b = clamp(b, 0, 255); + splashColor.red = r; + splashColor.green = g; + splashColor.blue = b; + splashColor.alpha = CGeneral::GetRandomNumberInRange(128, 150); + + r = 242.25f*(CTimeCycle::GetAmbientRed() + 0.5f*CTimeCycle::GetDirectionalRed()); + g = 242.25f*(CTimeCycle::GetAmbientGreen() + 0.5f*CTimeCycle::GetDirectionalGreen()); + b = 242.25f*(CTimeCycle::GetAmbientBlue() + 0.5f*CTimeCycle::GetDirectionalBlue()); + r = clamp(r, 0, 255); + g = clamp(g, 0, 255); + b = clamp(b, 0, 255); + jetColor.red = r; + jetColor.green = g; + jetColor.blue = b; + jetColor.alpha = CGeneral::GetRandomNumberInRange(96, 128); + + CGeneral::GetRandomNumber(); // unused + + ProcessCarAlarm(); + + switch(m_status){ + case STATUS_PLAYER: + m_bIsAnchored = false; + m_fOrientation = INVALID_ORIENTATION; + ProcessControlInputs(0); + if(GetModelIndex() == MI_PREDATOR) + DoFixedMachineGuns(); + break; + case STATUS_SIMPLE: + m_bIsAnchored = false; + m_fOrientation = INVALID_ORIENTATION; + CPhysical::ProcessControl(); + bBoatInWater = true; + bPropellerInWater = true; + bIsInWater = true; + return; + case STATUS_PHYSICS: + m_bIsAnchored = false; + m_fOrientation = INVALID_ORIENTATION; + CCarCtrl::SteerAIBoatWithPhysics(this); + break; + case STATUS_ABANDONED: + case STATUS_WRECKED: + bBoatInWater = true; + bPropellerInWater = true; + bIsInWater = true; + m_fSteerAngle = 0.0; + bIsHandbrakeOn = false; + m_fBrakePedal = 0.5f; + m_fGasPedal = 0.0f; + if((GetPosition() - CWorld::Players[CWorld::PlayerInFocus].GetPos()).Magnitude() > 150.0f){ + m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); + m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); + return; + } + break; + } + + float collisionDamage = pHandling->fCollisionDamageMultiplier * m_fDamageImpulse; + if(collisionDamage > 25.0f && m_status != STATUS_WRECKED && m_fHealth >= 150.0f){ + float prevHealth = m_fHealth; + if(this == FindPlayerVehicle()){ + if(bTakeLessDamage) + m_fHealth -= (collisionDamage-25.0f)/6.0f; + else + m_fHealth -= (collisionDamage-25.0f)/2.0f; + }else{ + if(collisionDamage > 60.0f && pDriver) + pDriver->Say(SOUND_PED_CAR_COLLISION); + if(bTakeLessDamage) + m_fHealth -= (collisionDamage-25.0f)/12.0f; + else + m_fHealth -= (collisionDamage-25.0f)/4.0f; + } + + if(m_fHealth <= 0.0f && prevHealth > 0.0f){ + m_fHealth = 1.0f; + m_pSetOnFireEntity = m_pDamageEntity; + } + } + + // Damage particles + if(m_fHealth <= 600.0f && m_status != STATUS_WRECKED && + Abs(GetPosition().x - TheCamera.GetPosition().x) < 200.0f && + Abs(GetPosition().y - TheCamera.GetPosition().y) < 200.0f){ + float speedSq = m_vecMoveSpeed.MagnitudeSqr(); + CVector smokeDir = 0.8f*m_vecMoveSpeed; + CVector smokePos; + switch(GetModelIndex()){ + case MI_SPEEDER: + smokePos = CVector(0.4f, -2.4f, 0.8f); + smokeDir += 0.05f*GetRight(); + smokeDir.z += 0.2f*m_vecMoveSpeed.z; + break; + case MI_REEFER: + smokePos = CVector(2.0f, -1.0f, 0.5f); + smokeDir += 0.07f*GetRight(); + break; + case MI_PREDATOR: + default: + smokePos = CVector(-1.5f, -0.5f, 1.2f); + smokeDir += -0.08f*GetRight(); + break; + } + + smokePos = GetMatrix() * smokePos; + + // On fire + if(m_fHealth < 150.0f){ + CParticle::AddParticle(PARTICLE_CARFLAME, smokePos, + CVector(0.0f, 0.0f, CGeneral::GetRandomNumberInRange(2.25f/200.0f, 0.09f)), + nil, 0.9f); + CVector smokePos2 = smokePos; + smokePos2.x += CGeneral::GetRandomNumberInRange(-2.25f/4.0f, 2.25f/4.0f); + smokePos2.y += CGeneral::GetRandomNumberInRange(-2.25f/4.0f, 2.25f/4.0f); + smokePos2.z += CGeneral::GetRandomNumberInRange(2.25f/4.0f, 2.25f); + CParticle::AddParticle(PARTICLE_ENGINE_SMOKE2, smokePos2, CVector(0.0f, 0.0f, 0.0f)); + + m_fDamage += CTimer::GetTimeStepInMilliseconds(); + if(m_fDamage > 5000.0f) + BlowUpCar(m_pSetOnFireEntity); + } + + if(speedSq < 0.25f && (CTimer::GetFrameCounter() + m_randomSeed) & 1) + CParticle::AddParticle(PARTICLE_ENGINE_STEAM, smokePos, smokeDir); + if(speedSq < 0.25f && m_fHealth <= 350.0f) + CParticle::AddParticle(PARTICLE_ENGINE_SMOKE, smokePos, 1.25f*smokeDir); + } + + CPhysical::ProcessControl(); + + CVector buoyanceImpulse(0.0f, 0.0f, 0.0f); + CVector buoyancePoint(0.0f, 0.0f, 0.0f); + if(mod_Buoyancy.ProcessBuoyancy(this, pHandling->fBuoyancy, &buoyancePoint, &buoyanceImpulse)){ + // Process boat in water + if(0.1f * m_fMass * GRAVITY*CTimer::GetTimeStep() < buoyanceImpulse.z){ + bBoatInWater = true; + bIsInWater = true; + }else{ + bBoatInWater = false; + bIsInWater = false; + } + + m_fVolumeUnderWater = mod_Buoyancy.m_volumeUnderWater; + m_vecBuoyancePoint = buoyancePoint; + ApplyMoveForce(buoyanceImpulse); + if(!onLand) + ApplyTurnForce(buoyanceImpulse, buoyancePoint); + + if(!onLand && bBoatInWater && GetUp().z > 0.0f){ + float impulse; + if(m_fGasPedal > 0.05f) + impulse = m_vecMoveSpeed.MagnitudeSqr()*pHandling->fSuspensionForceLevel*buoyanceImpulse.z*CTimer::GetTimeStep()*0.5f*m_fGasPedal; + else + impulse = 0.0f; + impulse = min(impulse, GRAVITY*pHandling->fSuspensionDampingLevel*m_fMass*CTimer::GetTimeStep()); + ApplyMoveForce(impulse*GetUp()); + ApplyTurnForce(impulse*GetUp(), buoyancePoint - pHandling->fSuspensionBias*GetForward()); + } + + // Handle boat moving forward + if(Abs(m_fGasPedal) > 0.05f || m_vecMoveSpeed.Magnitude() > 0.01f){ + if(bBoatInWater) + AddWakePoint(GetPosition()); + + float steerFactor = 1.0f - DotProduct(m_vecMoveSpeed, GetForward()); + if(m_modelIndex == MI_GHOST) + steerFactor = 1.0f - DotProduct(m_vecMoveSpeed, GetForward())*0.3f; + if(steerFactor < 0.0f) steerFactor = 0.0f; + + CVector propeller(0.0f, -pHandling->Dimension.y*m_fPropellerY, -pHandling->Dimension.z*m_fPropellerZ); + propeller = Multiply3x3(GetMatrix(), propeller); + CVector propellerWorld = GetPosition() + propeller; + + float steerSin = Sin(-m_fSteerAngle * steerFactor); + float steerCos = Cos(-m_fSteerAngle * steerFactor); + float waterLevel; + CWaterLevel::GetWaterLevel(propellerWorld, &waterLevel, true); + if(propellerWorld.z-0.5f < waterLevel){ + float propellerDepth = waterLevel - (propellerWorld.z - 0.5f); + if(propellerDepth > 1.0f) + propellerDepth = 1.0f; + else + propellerDepth = SQR(propellerDepth); + bPropellerInWater = true; + + if(Abs(m_fGasPedal) > 0.05f){ + CVector forceDir = Multiply3x3(GetMatrix(), CVector(-steerSin, steerCos, -Abs(m_fSteerAngle))); + CVector force = propellerDepth * m_fGasPedal * 40.0f * pHandling->Transmission.fEngineAcceleration * pHandling->fMass * forceDir; + if(force.z > 0.2f) + force.z = SQR(1.2f - force.z) + 0.2f; + if(onLand){ + if(m_fGasPedal < 0.0f){ + force.x *= 5.0f; + force.y *= 5.0f; + } + if(force.z < 0.0f) + force.z = 0.0f; + ApplyMoveForce(force * CTimer::GetTimeStep()); + }else{ + ApplyMoveForce(force * CTimer::GetTimeStep()); + ApplyTurnForce(force * CTimer::GetTimeStep(), propeller - pHandling->fTractionBias*GetUp()); + float rightForce = DotProduct(GetRight(), force); + ApplyTurnForce(-rightForce*GetRight() * CTimer::GetTimeStep(), GetUp()); + } + + // Spray some particles + CVector jetDir = -0.04f * force; + if(m_fGasPedal > 0.0f){ + if(m_status == STATUS_PLAYER){ + bool cameraHack = TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || + TheCamera.WhoIsInControlOfTheCamera == CAMCONTROL_OBBE; + CVector sternPos = GetColModel()->boundingBox.min; + sternPos.x = 0.0f; + sternPos.z = 0.0f; + sternPos = Multiply3x3(GetMatrix(), sternPos); + + CVector jetPos = GetPosition() + sternPos; + if(cameraHack) + jetPos.z = 1.0f; + else + jetPos.z = 0.0f; + + CVector wakePos = GetPosition() + sternPos; + wakePos.z -= 0.65f; + + CVector wakeDir = 0.75f * jetDir; + + CParticle::AddParticle(PARTICLE_BOAT_THRUSTJET, jetPos, jetDir, nil, 0.0f, jetColor); + CParticle::AddParticle(PARTICLE_CAR_SPLASH, jetPos, 0.25f * jetDir, nil, 1.0f, splashColor, + CGeneral::GetRandomNumberInRange(0, 30), + CGeneral::GetRandomNumberInRange(0, 90), 3); + if(!cameraHack) + CParticle::AddParticle(PARTICLE_BOAT_WAKE, wakePos, wakeDir, nil, 0.0f, jetColor); + }else if((CTimer::GetFrameCounter() + m_randomSeed) & 1){ + jetDir.z = 0.018f; + jetDir.x *= 0.01f; + jetDir.y *= 0.01f; + propellerWorld.z += 1.5f; + + CParticle::AddParticle(PARTICLE_BOAT_SPLASH, propellerWorld, jetDir, nil, 1.5f, jetColor); + CParticle::AddParticle(PARTICLE_CAR_SPLASH, propellerWorld, 0.1f * jetDir, nil, 0.5f, splashColor, + CGeneral::GetRandomNumberInRange(0, 30), + CGeneral::GetRandomNumberInRange(0, 90), 3); + } + } + }else if(!onLand){ + float force = 50.0f*DotProduct(m_vecMoveSpeed, GetForward()); + if(force > 10.0f) force = 10.0f; + CVector propellerForce = propellerDepth * Multiply3x3(GetMatrix(), force*CVector(-steerSin, 0.0f, 0.0f)); + ApplyMoveForce(propellerForce * CTimer::GetTimeStep()*0.5f); + ApplyTurnForce(propellerForce * CTimer::GetTimeStep()*0.5f, propeller); + } + }else + bPropellerInWater = false; + } + + // Slow down or push down boat as it approaches the world limits + m_vecMoveSpeed.x = min(m_vecMoveSpeed.x, -(GetPosition().x - 1900.0f)*0.01f); // east + m_vecMoveSpeed.x = max(m_vecMoveSpeed.x, -(GetPosition().x - -1515.0f)*0.01f); // west + m_vecMoveSpeed.y = min(m_vecMoveSpeed.y, -(GetPosition().y - 600.0f)*0.01f); // north + m_vecMoveSpeed.y = max(m_vecMoveSpeed.y, -(GetPosition().y - -1900.0f)*0.01f); // south + + if(!onLand && bBoatInWater) + ApplyWaterResistance(); + + // No idea what exactly is going on here besides drag in YZ + float fx = Pow(m_waterTurnDrag.x, CTimer::GetTimeStep()); + float fy = Pow(m_waterTurnDrag.y, CTimer::GetTimeStep()); + float fz = Pow(m_waterTurnDrag.z, CTimer::GetTimeStep()); + m_vecTurnSpeed = Multiply3x3(m_vecTurnSpeed, GetMatrix()); // invert - to local space + // TODO: figure this out + float magic = 1.0f/(1000.0f * SQR(m_vecTurnSpeed.x) + 1.0f) * fx; + m_vecTurnSpeed.y *= fy; + m_vecTurnSpeed.z *= fz; + float forceUp = (magic - 1.0f) * m_vecTurnSpeed.x * m_fTurnMass; + m_vecTurnSpeed = Multiply3x3(GetMatrix(), m_vecTurnSpeed); // back to world + CVector com = Multiply3x3(GetMatrix(), m_vecCentreOfMass); + ApplyTurnForce(CVector(0.0f, 0.0f, forceUp), com + GetForward()); + + m_nDeltaVolumeUnderWater = (m_fVolumeUnderWater-m_fPrevVolumeUnderWater)*10000; + + // Falling into water + if(!onLand && bBoatInWater && GetUp().z > 0.0f && m_nDeltaVolumeUnderWater > 200){ + DMAudio.PlayOneShot(m_audioEntityId, SOUND_CAR_SPLASH, m_nDeltaVolumeUnderWater); + + float speedUp = m_vecMoveSpeed.MagnitudeSqr() * m_nDeltaVolumeUnderWater * 0.0004f; + if(speedUp + m_vecMoveSpeed.z > pHandling->fBrakeDeceleration) + speedUp = pHandling->fBrakeDeceleration - m_vecMoveSpeed.z; + if(speedUp < 0.0f) speedUp = 0.0f; + float speedFwd = DotProduct(m_vecMoveSpeed, GetForward()); + speedFwd *= -m_nDeltaVolumeUnderWater * 0.01f * pHandling->fTractionLoss; + CVector speed = speedFwd*GetForward() + CVector(0.0f, 0.0f, speedUp); + CVector splashImpulse = speed * m_fMass; + ApplyMoveForce(splashImpulse); + ApplyTurnForce(splashImpulse, buoyancePoint); + } + + // Spray particles on sides of boat + if(m_nDeltaVolumeUnderWater > 75){ + float speed = m_vecMoveSpeed.Magnitude(); + float splash1Size = speed; + float splash2Size = m_nDeltaVolumeUnderWater * 0.005f * 0.2f; + float front = 0.9f * GetColModel()->boundingBox.max.y; + if(splash1Size > 0.75f) splash1Size = 0.75f; + + CVector dir, pos; + + // right + dir = -0.5f*m_vecMoveSpeed; + dir.z += 0.1f*speed; + dir += 0.5f*GetRight()*speed; + pos = front*GetForward() + 0.5f*GetRight() + GetPosition() + m_vecBuoyancePoint; + CWaterLevel::GetWaterLevel(pos, &pos.z, true); + CParticle::AddParticle(PARTICLE_CAR_SPLASH, pos, 0.75f * dir, nil, splash1Size, splashColor, + CGeneral::GetRandomNumberInRange(0, 30), + CGeneral::GetRandomNumberInRange(0, 90), 1); + CParticle::AddParticle(PARTICLE_BOAT_SPLASH, pos, dir, nil, splash2Size, jetColor); + + // left + dir = -0.5f*m_vecMoveSpeed; + dir.z += 0.1f*speed; + dir -= 0.5f*GetRight()*speed; + pos = front*GetForward() - 0.5f*GetRight() + GetPosition() + m_vecBuoyancePoint; + CWaterLevel::GetWaterLevel(pos, &pos.z, true); + CParticle::AddParticle(PARTICLE_CAR_SPLASH, pos, 0.75f * dir, nil, splash1Size, splashColor, + CGeneral::GetRandomNumberInRange(0, 30), + CGeneral::GetRandomNumberInRange(0, 90), 1); + CParticle::AddParticle(PARTICLE_BOAT_SPLASH, pos, dir, nil, splash2Size, jetColor); + } + + m_fPrevVolumeUnderWater = m_fVolumeUnderWater; + }else{ + bBoatInWater = false; + bIsInWater = false; + } + + if(m_bIsAnchored){ + m_vecMoveSpeed.x = 0.0f; + m_vecMoveSpeed.y = 0.0f; + + if(m_fOrientation == INVALID_ORIENTATION){ + m_fOrientation = GetForward().Heading(); + }else{ + // is this some inlined CPlaceable method? + CVector pos = GetPosition(); + GetMatrix().RotateZ(m_fOrientation - GetForward().Heading()); + GetPosition() = pos; + } + } + + ProcessDelayedExplosion(); +} + +void +CBoat::ProcessControlInputs(uint8 pad) +{ + m_nPadID = pad; + if(m_nPadID > 3) + m_nPadID = 3; + + m_fBrake += (CPad::GetPad(pad)->GetBrake()/255.0f - m_fBrake)*0.1f; + m_fBrake = clamp(m_fBrake, 0.0f, 1.0f); + + if(m_fBrake < 0.05f){ + m_fBrake = 0.0f; + m_fAccelerate += (CPad::GetPad(pad)->GetAccelerate()/255.0f - m_fAccelerate)*0.1f; + m_fAccelerate = clamp(m_fAccelerate, 0.0f, 1.0f); + }else + m_fAccelerate = -m_fBrake*0.2f; + + m_fSteeringLeftRight += (-CPad::GetPad(pad)->GetSteeringLeftRight()/128.0f - m_fSteeringLeftRight)*0.2f; + m_fSteeringLeftRight = clamp(m_fSteeringLeftRight, -1.0f, 1.0f); + + float steeringSq = m_fSteeringLeftRight < 0.0f ? -SQR(m_fSteeringLeftRight) : SQR(m_fSteeringLeftRight); + m_fSteerAngle = pHandling->fSteeringLock * DEGTORAD(steeringSq); + m_fGasPedal = m_fAccelerate; +} + +void +CBoat::ApplyWaterResistance(void) +{ + float fwdSpeed = DotProduct(GetMoveSpeed(), GetForward()); + // TODO: figure out how this works + float magic = (SQR(fwdSpeed) + 0.05f) * (0.001f * SQR(m_fVolumeUnderWater) * m_fMass) + 1.0f; + magic = Abs(magic); + // FRAMETIME + float fx = Pow(m_waterMoveDrag.x/magic, 0.5f*CTimer::GetTimeStep()); + float fy = Pow(m_waterMoveDrag.y/magic, 0.5f*CTimer::GetTimeStep()); + float fz = Pow(m_waterMoveDrag.z/magic, 0.5f*CTimer::GetTimeStep()); + + m_vecMoveSpeed = Multiply3x3(m_vecMoveSpeed, GetMatrix()); // invert - to local space + m_vecMoveSpeed.x *= fx; + m_vecMoveSpeed.y *= fy; + m_vecMoveSpeed.z *= fz; + float force = (fy - 1.0f) * m_vecMoveSpeed.y * m_fMass; + m_vecMoveSpeed = Multiply3x3(GetMatrix(), m_vecMoveSpeed); // back to world + + ApplyTurnForce(force*GetForward(), -GetUp()); + + if(m_vecMoveSpeed.z > 0.0f) + m_vecMoveSpeed.z *= fz; + else + m_vecMoveSpeed.z *= (1.0f - fz)*0.5f + fz; +} + +RwObject* +GetBoatAtomicObjectCB(RwObject *object, void *data) +{ + RpAtomic *atomic = (RpAtomic*)object; + assert(RwObjectGetType(object) == rpATOMIC); + if(RpAtomicGetFlags(atomic) & rpATOMICRENDER) + *(RpAtomic**)data = atomic; + return object; + + +} + +void +CBoat::BlowUpCar(CEntity *culprit) +{ + RpAtomic *atomic; + RwFrame *frame; + RwMatrix *matrix; + CObject *obj; + + if(!bCanBeDamaged) + return; + + // explosion pushes vehicle up + m_vecMoveSpeed.z += 0.13f; + m_status = STATUS_WRECKED; + bRenderScorched = true; + + m_fHealth = 0.0; + m_nBombTimer = 0; + TheCamera.CamShake(0.7f, GetPosition().x, GetPosition().y, GetPosition().z); + + if(this == FindPlayerVehicle()) + FindPlayerPed()->m_fHealth = 0.0f; // kill player + if(pDriver){ + CDarkel::RegisterKillByPlayer(pDriver, WEAPONTYPE_EXPLOSION); + pDriver->SetDead(); + pDriver->FlagToDestroyWhenNextProcessed(); + } + + bEngineOn = false; + bLightsOn = false; + ChangeLawEnforcerState(false); + + CExplosion::AddExplosion(this, culprit, EXPLOSION_CAR, GetPosition(), 0); + if(m_aBoatNodes[BOAT_MOVING] == nil) + return; + + // much like CAutomobile::SpawnFlyingComponent from here on + + atomic = nil; + RwFrameForAllObjects(m_aBoatNodes[BOAT_MOVING], GetBoatAtomicObjectCB, &atomic); + if(atomic == nil) + return; + + obj = new CObject(); + if(obj == nil) + return; + + obj->SetModelIndexNoCreate(MI_CAR_WHEEL); + + // object needs base model + obj->RefModelInfo(GetModelIndex()); + + // create new atomic + matrix = RwFrameGetLTM(m_aBoatNodes[BOAT_MOVING]); + frame = RwFrameCreate(); + atomic = RpAtomicClone(atomic); + *RwFrameGetMatrix(frame) = *matrix; + RpAtomicSetFrame(atomic, frame); + CVisibilityPlugins::SetAtomicRenderCallback(atomic, nil); + obj->AttachToRwObject((RwObject*)atomic); + + // init object + obj->m_fMass = 10.0f; + obj->m_fTurnMass = 25.0f; + obj->m_fAirResistance = 0.99f; + obj->m_fElasticity = 0.1f; + obj->m_fBuoyancy = obj->m_fMass*GRAVITY/0.75f; + obj->ObjectCreatedBy = TEMP_OBJECT; + obj->bIsStatic = false; + obj->bIsPickup = false; + + // life time + CObject::nNoTempObjects++; + obj->m_nEndOfLifeTime = CTimer::GetTimeInMilliseconds() + 20000; + + obj->m_vecMoveSpeed = m_vecMoveSpeed; + if(GetUp().z > 0.0f) + obj->m_vecMoveSpeed.z = 0.3f; + else + obj->m_vecMoveSpeed.z = 0.0f; + + obj->m_vecTurnSpeed = m_vecTurnSpeed*2.0f; + obj->m_vecTurnSpeed.x = 0.5f; + + // push component away from boat + CVector dist = obj->GetPosition() - GetPosition(); + dist.Normalise(); + if(GetUp().z > 0.0f) + dist += GetUp(); + obj->GetPosition() += GetUp(); + + CWorld::Add(obj); + + atomic = nil; + RwFrameForAllObjects(m_aBoatNodes[BOAT_MOVING], GetBoatAtomicObjectCB, &atomic); + if(atomic) + RpAtomicSetFlags(atomic, 0); +} + RwIm3DVertex KeepWaterOutVertices[4]; RwImVertexIndex KeepWaterOutIndices[6]; @@ -102,8 +642,8 @@ CBoat::Render() { CMatrix matrix; - if (m_aBoatNodes[1] != nil) { - matrix.Attach(RwFrameGetMatrix(m_aBoatNodes[1])); + if (m_aBoatNodes[BOAT_MOVING] != nil) { + matrix.Attach(RwFrameGetMatrix(m_aBoatNodes[BOAT_MOVING])); CVector pos = matrix.GetPosition(); matrix.SetRotateZ(m_fMovingHiRotation); @@ -111,7 +651,7 @@ CBoat::Render() matrix.UpdateRW(); if (CVehicle::bWheelsOnlyCheat) { - RpAtomicRender((RpAtomic*)GetFirstObject(m_aBoatNodes[1])); + RpAtomicRender((RpAtomic*)GetFirstObject(m_aBoatNodes[BOAT_MOVING])); } } m_fMovingHiRotation += 0.05f; @@ -234,10 +774,9 @@ CBoat::IsVertexAffectedByWake(CVector vecVertex, CBoat *pBoat) void CBoat::SetupModelNodes() { - m_aBoatNodes[0] = nil; - m_aBoatNodes[1] = nil; - m_aBoatNodes[2] = nil; - m_aBoatNodes[3] = nil; + int i; + for(i = 0; i < ARRAY_SIZE(m_aBoatNodes); i++) + m_aBoatNodes[i] = nil; CClumpModelInfo::FillFrameArray(GetClump(), m_aBoatNodes); } @@ -275,6 +814,43 @@ CBoat::FillBoatList() } } +void +CBoat::PruneWakeTrail(void) +{ + int i; + + for(i = 0; i < ARRAY_SIZE(m_afWakePointLifeTime); i++){ + if(m_afWakePointLifeTime[i] <= 0.0f) + break; + if(m_afWakePointLifeTime[i] <= CTimer::GetTimeStep()){ + m_afWakePointLifeTime[i] = 0.0f; + break; + } + m_afWakePointLifeTime[i] -= CTimer::GetTimeStep(); + } + m_nNumWakePoints = i; +} + +void +CBoat::AddWakePoint(CVector point) +{ + int i; + if(m_afWakePointLifeTime[0] > 0.0f){ + if((CVector2D(GetPosition()) - m_avec2dWakePoints[0]).MagnitudeSqr() < SQR(1.0f)){ + for(i = min(m_nNumWakePoints, ARRAY_SIZE(m_afWakePointLifeTime)-1); i != 0; i--){ + m_avec2dWakePoints[i] = m_avec2dWakePoints[i-1]; + m_afWakePointLifeTime[i] = m_afWakePointLifeTime[i-1]; + } + m_avec2dWakePoints[0] = point; + m_afWakePointLifeTime[0] = 400.0f; + } + }else{ + m_avec2dWakePoints[0] = point; + m_afWakePointLifeTime[0] = 400.0f; + m_nNumWakePoints = 1; + } +} + #include class CBoat_ : public CBoat @@ -291,4 +867,7 @@ STARTPATCHES InjectHook(0x542370, CBoat::IsSectorAffectedByWake, PATCH_JUMP); InjectHook(0x5424A0, CBoat::IsVertexAffectedByWake, PATCH_JUMP); InjectHook(0x542250, CBoat::FillBoatList, PATCH_JUMP); + InjectHook(0x542140, &CBoat::AddWakePoint, PATCH_JUMP); + InjectHook(0x5420D0, &CBoat::PruneWakeTrail, PATCH_JUMP); + InjectHook(0x541A30, &CBoat::ApplyWaterResistance, PATCH_JUMP); ENDPATCHES diff --git a/src/vehicles/Boat.h b/src/vehicles/Boat.h index d3a2ac13..f4c6a747 100644 --- a/src/vehicles/Boat.h +++ b/src/vehicles/Boat.h @@ -2,47 +2,41 @@ #include "Vehicle.h" +enum eBoatNodes +{ + BOAT_MOVING = 1, + BOAT_RUDDER, + BOAT_WINDSCREEN +}; + class CBoat : public CVehicle { public: // 0x288 - float field_288; - float field_28C; - float field_290; - float field_294; - float field_298; - float field_29C; - float field_2A0; - float field_2A4; + float m_fPropellerZ; + float m_fPropellerY; + CVector m_waterMoveDrag; + CVector m_waterTurnDrag; float m_fMovingHiRotation; int32 _unk0; RwFrame *m_aBoatNodes[4]; - uint8 m_bBoatFlag1 : 1; - uint8 m_bBoatFlag2 : 1; - uint8 m_bBoatFlag3 : 1; - uint8 m_bBoatFlag4 : 1; - uint8 m_bBoatFlag5 : 1; - uint8 m_bBoatFlag6 : 1; - uint8 m_bBoatFlag7 : 1; - uint8 m_bBoatFlag8 : 1; + uint8 bBoatInWater : 1; + uint8 bPropellerInWater : 1; bool m_bIsAnchored; - char _pad0[2]; - float field_2C4; + float m_fOrientation; int32 _unk1; - float field_2CC; - CEntity *field_2D0; + float m_fDamage; + CEntity *m_pSetOnFireEntity; bool _unk2; - char _pad1[3]; float m_fAccelerate; float m_fBrake; float m_fSteeringLeftRight; uint8 m_nPadID; - char _pad2[3]; int32 _unk3; - float m_fTurnForceZ; - CVector m_vecMoveForce; - float field_2FC; - uint16 field_300; + float m_fVolumeUnderWater; + CVector m_vecBuoyancePoint; + float m_fPrevVolumeUnderWater; + int16 m_nDeltaVolumeUnderWater; uint16 m_nNumWakePoints; CVector2D m_avec2dWakePoints[32]; float m_afWakePointLifeTime[32]; @@ -59,7 +53,10 @@ public: virtual bool IsComponentPresent(int32 component) { return true; } virtual void BlowUpCar(CEntity *ent); + void ApplyWaterResistance(void); void SetupModelNodes(); + void PruneWakeTrail(void); + void AddWakePoint(CVector point); static CBoat *(&apFrameWakeGeneratingBoats)[4]; diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index adeba19e..f47fd131 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -481,6 +481,55 @@ CVehicle::InflictDamage(CEntity* damagedBy, eWeaponType weaponType, float damage FindPlayerPed()->SetWantedLevelNoDrop(1); } +void +CVehicle::DoFixedMachineGuns(void) +{ + if(CPad::GetPad(0)->GetCarGunFired() && !bGunSwitchedOff){ + if(CTimer::GetTimeInMilliseconds() > m_nGunFiringTime + 150){ + CVector source, target; + float dx, dy, len; + + dx = GetForward().x; + dy = GetForward().y; + len = Sqrt(SQR(dx) + SQR(dy)); + if(len < 0.1f) len = 0.1f; + dx /= len; + dy /= len; + + m_nGunFiringTime = CTimer::GetTimeInMilliseconds(); + + source = GetMatrix() * CVector(2.0f, 2.5f, 1.0f); + target = source + CVector(dx, dy, 0.0f)*60.0f; + target += CVector( + ((CGeneral::GetRandomNumber()&0xFF)-128) * 0.015f, + ((CGeneral::GetRandomNumber()&0xFF)-128) * 0.015f, + ((CGeneral::GetRandomNumber()&0xFF)-128) * 0.02f); + CWeapon::DoTankDoomAiming(this, pDriver, &source, &target); + FireOneInstantHitRound(&source, &target, 15); + + source = GetMatrix() * CVector(-2.0f, 2.5f, 1.0f); + target = source + CVector(dx, dy, 0.0f)*60.0f; + target += CVector( + ((CGeneral::GetRandomNumber()&0xFF)-128) * 0.015f, + ((CGeneral::GetRandomNumber()&0xFF)-128) * 0.015f, + ((CGeneral::GetRandomNumber()&0xFF)-128) * 0.02f); + CWeapon::DoTankDoomAiming(this, pDriver, &source, &target); + FireOneInstantHitRound(&source, &target, 15); + + DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_SHOT_FIRED, 0.0f); + + m_nAmmoInClip--; + if(m_nAmmoInClip == 0){ + m_nAmmoInClip = 20; + m_nGunFiringTime = CTimer::GetTimeInMilliseconds() + 1400; + } + } + }else{ + if(CTimer::GetTimeInMilliseconds() > m_nGunFiringTime + 1400) + m_nAmmoInClip = 20; + } +} + void CVehicle::ExtinguishCarFire(void) { diff --git a/src/vehicles/Vehicle.h b/src/vehicles/Vehicle.h index c7be3674..ede9f8fe 100644 --- a/src/vehicles/Vehicle.h +++ b/src/vehicles/Vehicle.h @@ -269,6 +269,7 @@ public: bool IsSphereTouchingVehicle(float sx, float sy, float sz, float radius); bool ShufflePassengersToMakeSpace(void); void InflictDamage(CEntity *damagedBy, eWeaponType weaponType, float damage); + void DoFixedMachineGuns(void); bool IsAlarmOn(void) { return m_nAlarmState != 0 && m_nAlarmState != -1; } CVehicleModelInfo* GetModelInfo() { return (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex()); } From dbf6e155ff030e8c6c332e68678b943a70a077cf Mon Sep 17 00:00:00 2001 From: Wes Hampson Date: Sun, 12 Apr 2020 15:47:12 -0700 Subject: [PATCH 089/112] GenericLoad() done --- src/save/GenericGameStorage.cpp | 160 +++++++++++++++++++++++++++----- 1 file changed, 135 insertions(+), 25 deletions(-) diff --git a/src/save/GenericGameStorage.cpp b/src/save/GenericGameStorage.cpp index 2545b9ab..eb9092c3 100644 --- a/src/save/GenericGameStorage.cpp +++ b/src/save/GenericGameStorage.cpp @@ -9,11 +9,13 @@ #include "Clock.h" #include "Date.h" #include "FileMgr.h" +#include "Frontend.h" #include "GameLogic.h" #include "Gangs.h" #include "Garages.h" #include "GenericGameStorage.h" #include "Pad.h" +#include "Particle.h" #include "ParticleObject.h" #include "PathFind.h" #include "PCSave.h" @@ -48,7 +50,6 @@ char SaveFileNameJustSaved[260]; int (&Slots)[SLOT_COUNT+1] = *(int(*)[SLOT_COUNT+1])*(uintptr*)0x72803C; CDate &CompileDateAndTime = *(CDate*)0x72BCB8; - bool &b_FoundRecentSavedGameWantToLoad = *(bool*)0x95CDA8; bool &JustLoadedDontFadeInYet = *(bool*)0x95CDB4; bool &StillToFadeOut = *(bool*)0x95CD99; @@ -58,10 +59,22 @@ uint32 &TimeToStayFadedBeforeFadeOut = *(uint32*)0x611564; #define ReadDataFromBufferPointer(buf, to) memcpy(&to, buf, sizeof(to)); buf += align4bytes(sizeof(to)); #define WriteDataToBufferPointer(buf, from) memcpy(buf, &from, sizeof(from)); buf += align4bytes(sizeof(from)); -WRAPPER bool GenericLoad() { EAXJMP(0x590A00); } +#define LoadSaveDataBlock(msg,load_func)\ +do {\ + if (!ReadDataFromFile(file, (uint8 *) &size, 4))\ + return false;\ + size = align4bytes(size);\ + if (!ReadDataFromFile(file, work_buff, size))\ + return false;\ + buf = work_buff;\ + printf(msg);\ + ReadDataFromBufferPointer(buf, size);\ + load_func(buf, size);\ + size = align4bytes(size);\ + buf += size;\ +} while (0) - -#define WRITE_BLOCK(save_func)\ +#define WriteSaveDataBlock(save_func)\ do {\ buf = work_buff;\ reserved = 0;\ @@ -138,7 +151,6 @@ GenericSave(int file) WriteDataToBufferPointer(buf, CWeather::WeatherTypeInList); WriteDataToBufferPointer(buf, TheCamera.CarZoomIndicator); WriteDataToBufferPointer(buf, TheCamera.PedZoomIndicator); - assert(buf - work_buff == SIZE_OF_SIMPLEVARS); // Save scripts, block is nested within the same block as simple vars for some reason @@ -153,25 +165,25 @@ GenericSave(int file) totalSize = buf - work_buff; // Save the rest - WRITE_BLOCK(CPools::SavePedPool); - WRITE_BLOCK(CGarages::Save); - WRITE_BLOCK(CPools::SaveVehiclePool); - WRITE_BLOCK(CPools::SaveObjectPool); - WRITE_BLOCK(ThePaths.Save); - WRITE_BLOCK(CCranes::Save); - WRITE_BLOCK(CPickups::Save); - WRITE_BLOCK(gPhoneInfo.Save); - WRITE_BLOCK(CRestart::SaveAllRestartPoints); - WRITE_BLOCK(CRadar::SaveAllRadarBlips); - WRITE_BLOCK(CTheZones::SaveAllZones); - WRITE_BLOCK(CGangs::SaveAllGangData); - WRITE_BLOCK(CTheCarGenerators::SaveAllCarGenerators); - WRITE_BLOCK(CParticleObject::SaveParticle); - WRITE_BLOCK(cAudioScriptObject::SaveAllAudioScriptObjects); - WRITE_BLOCK(CWorld::Players[CWorld::PlayerInFocus].SavePlayerInfo); - WRITE_BLOCK(CStats::SaveStats); - WRITE_BLOCK(CStreaming::MemoryCardSave); - WRITE_BLOCK(CPedType::Save); + WriteSaveDataBlock(CPools::SavePedPool); + WriteSaveDataBlock(CGarages::Save); + WriteSaveDataBlock(CPools::SaveVehiclePool); + WriteSaveDataBlock(CPools::SaveObjectPool); + WriteSaveDataBlock(ThePaths.Save); + WriteSaveDataBlock(CCranes::Save); + WriteSaveDataBlock(CPickups::Save); + WriteSaveDataBlock(gPhoneInfo.Save); + WriteSaveDataBlock(CRestart::SaveAllRestartPoints); + WriteSaveDataBlock(CRadar::SaveAllRadarBlips); + WriteSaveDataBlock(CTheZones::SaveAllZones); + WriteSaveDataBlock(CGangs::SaveAllGangData); + WriteSaveDataBlock(CTheCarGenerators::SaveAllCarGenerators); + WriteSaveDataBlock(CParticleObject::SaveParticle); + WriteSaveDataBlock(cAudioScriptObject::SaveAllAudioScriptObjects); + WriteSaveDataBlock(CWorld::Players[CWorld::PlayerInFocus].SavePlayerInfo); + WriteSaveDataBlock(CStats::SaveStats); + WriteSaveDataBlock(CStreaming::MemoryCardSave); + WriteSaveDataBlock(CPedType::Save); // Write padding for (int i = 0; i < 4; i++) { @@ -198,6 +210,104 @@ GenericSave(int file) return true; } +bool +GenericLoad() +{ + uint8 *buf; + int32 file; + uint32 size; + + int32 saveSize; + CPad *currPad; + + uint32 timeInMilliseconds; + float timeScale; + float timeStep; + float timeStepNonClipped; + uint32 frameCounter; + + // Load SimpleVars and Scripts + CheckSum = 0; + CDate(CompileDateAndTime); + CPad::ResetCheats(); + if (!ReadInSizeofSaveFileBuffer(file, size)) + return false; + size = align4bytes(size); + ReadDataFromFile(file, work_buff, size); + buf = (work_buff + 0x40); + ReadDataFromBufferPointer(buf, saveSize); + ReadDataFromBufferPointer(buf, CGame::currLevel); + ReadDataFromBufferPointer(buf, TheCamera.GetPosition().x); + ReadDataFromBufferPointer(buf, TheCamera.GetPosition().y); + ReadDataFromBufferPointer(buf, TheCamera.GetPosition().z); + ReadDataFromBufferPointer(buf, CClock::ms_nMillisecondsPerGameMinute); + ReadDataFromBufferPointer(buf, CClock::ms_nLastClockTick); + ReadDataFromBufferPointer(buf, CClock::ms_nGameClockHours); + ReadDataFromBufferPointer(buf, CClock::ms_nGameClockMinutes); + currPad = CPad::GetPad(0); + ReadDataFromBufferPointer(buf, currPad->Mode); + ReadDataFromBufferPointer(buf, timeInMilliseconds); CTimer::SetTimeInMilliseconds(timeInMilliseconds); + ReadDataFromBufferPointer(buf, timeScale); CTimer::SetTimeScale(timeScale); + ReadDataFromBufferPointer(buf, timeStep); CTimer::SetTimeStep(timeStep); + ReadDataFromBufferPointer(buf, timeStepNonClipped); CTimer::SetTimeInMillisecondsNonClipped(timeStepNonClipped); + ReadDataFromBufferPointer(buf, frameCounter); CTimer::SetFrameCounter(frameCounter); + ReadDataFromBufferPointer(buf, CTimeStep::ms_fTimeStep); + ReadDataFromBufferPointer(buf, CTimeStep::ms_fFramesPerUpdate); + ReadDataFromBufferPointer(buf, CTimeStep::ms_fTimeScale); + ReadDataFromBufferPointer(buf, CWeather::OldWeatherType); + ReadDataFromBufferPointer(buf, CWeather::NewWeatherType); + ReadDataFromBufferPointer(buf, CWeather::ForcedWeatherType); + ReadDataFromBufferPointer(buf, CWeather::InterpolationValue); + ReadDataFromBufferPointer(buf, CompileDateAndTime.m_nSecond); + ReadDataFromBufferPointer(buf, CompileDateAndTime.m_nMinute); + ReadDataFromBufferPointer(buf, CompileDateAndTime.m_nHour); + ReadDataFromBufferPointer(buf, CompileDateAndTime.m_nDay); + ReadDataFromBufferPointer(buf, CompileDateAndTime.m_nMonth); + ReadDataFromBufferPointer(buf, CompileDateAndTime.m_nYear); + ReadDataFromBufferPointer(buf, CWeather::WeatherTypeInList); + ReadDataFromBufferPointer(buf, TheCamera.CarZoomIndicator); + ReadDataFromBufferPointer(buf, TheCamera.PedZoomIndicator); + assert(buf - work_buff == SIZE_OF_SIMPLEVARS); + printf("Loading Scripts \n"); + ReadDataFromBufferPointer(buf, size); + CTheScripts::LoadAllScripts(buf, size); + size = align4bytes(size); + buf += size; + + // Load the rest + LoadSaveDataBlock("Loading PedPool \n", CPools::LoadPedPool); + LoadSaveDataBlock("Loading Garages \n", CGarages::Load); + LoadSaveDataBlock("Loading Vehicles \n", CPools::LoadVehiclePool); + LoadSaveDataBlock("Loading Objects \n", CPools::LoadObjectPool); + LoadSaveDataBlock("Loading Paths \n", ThePaths.Load); + LoadSaveDataBlock("Loading Cranes \n", CranesLoad); + LoadSaveDataBlock("Loading Pickups \n", CPickups::Load); + LoadSaveDataBlock("Loading Phoneinfo \n", gPhoneInfo.Load); + LoadSaveDataBlock("Loading Restart \n", CRestart::LoadAllRestartPoints); + LoadSaveDataBlock("Loading Radar Blips \n", CRadar::LoadAllRadarBlips); + LoadSaveDataBlock("Loading Zones \n", CTheZones::LoadAllZones); + LoadSaveDataBlock("Loading Gang Data \n", CGangs::LoadAllGangData); + LoadSaveDataBlock("Loading Car Generators \n", CTheCarGenerators::LoadAllCarGenerators); + CParticle::ReloadConfig(); + LoadSaveDataBlock("Loading Particles \n", CParticleObject::LoadParticle); + LoadSaveDataBlock("Loading AudioScript Objects \n", cAudioScriptObject::LoadAllAudioScriptObjects); + LoadSaveDataBlock("Loading Player Info \n", CWorld::Players[CWorld::PlayerInFocus].LoadPlayerInfo); + LoadSaveDataBlock("Loading Stats \n", CStats::LoadStats); + LoadSaveDataBlock("Loading Streaming Stuff \n", CStreaming::MemoryCardLoad); + LoadSaveDataBlock("Loading PedType Stuff \n", CPedType::Load); + + DMAudio.SetMusicMasterVolume(CMenuManager::m_PrefsMusicVolume); + DMAudio.SetEffectsMasterVolume(CMenuManager::m_PrefsSfxVolume); + if (!CloseFile(file)) { + PcSaveHelper.nErrorCode = SAVESTATUS_ERR_LOAD_CLOSE; + return false; + } + DoGameSpecificStuffAfterSucessLoad(); + printf("Game successfully loaded \n"); + + return true; +} + bool ReadInSizeofSaveFileBuffer(int32 &file, uint32 &size) { @@ -411,7 +521,7 @@ align4bytes(int32 size) STARTPATCHES InjectHook(0x58F8D0, GenericSave, PATCH_JUMP); - //InjectHook(0x590A00, GenericLoad, PATCH_JUMP); + InjectHook(0x590A00, GenericLoad, PATCH_JUMP); InjectHook(0x591910, ReadInSizeofSaveFileBuffer, PATCH_JUMP); InjectHook(0x591990, ReadDataFromFile, PATCH_JUMP); InjectHook(0x591A00, CloseFile, PATCH_JUMP); From adde1f7b26a324ceba8ef49e54a710f019dbf41f Mon Sep 17 00:00:00 2001 From: Wes Hampson Date: Sun, 12 Apr 2020 16:07:41 -0700 Subject: [PATCH 090/112] Remove GenericLoad from TODOs --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index fd5c2041..722560ae 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,6 @@ CPedPath CRoadBlocks CWeapon CWorld -GenericLoad ``` The following classes have only unused or practically unused code left: From 28fb1bdde762bac46d784cba0602dcfb6a98b27f Mon Sep 17 00:00:00 2001 From: saml1er Date: Mon, 13 Apr 2020 05:52:18 +0500 Subject: [PATCH 091/112] Fix CRoadBlocks::GenerateRoadBlocks bugs --- src/control/RoadBlocks.cpp | 151 ++++++++++++++++++------------------- 1 file changed, 72 insertions(+), 79 deletions(-) diff --git a/src/control/RoadBlocks.cpp b/src/control/RoadBlocks.cpp index 5f98b942..90564e93 100644 --- a/src/control/RoadBlocks.cpp +++ b/src/control/RoadBlocks.cpp @@ -113,89 +113,82 @@ CRoadBlocks::GenerateRoadBlocks(void) for (; nRoadblockNode < numRoadBlocks; nRoadblockNode++) { CTreadable *mapObject = ThePaths.m_mapObjects[CRoadBlocks::RoadBlockObjects[nRoadblockNode]]; CVector2D direction = FindPlayerCoors() - mapObject->GetPosition(); - if ((direction.x <= -80.0f || direction.x < 80.0f) || (direction.y <= -80.0f || direction.y < 80.0f)) { + if (!((direction.x > -80.0f && direction.x < 80.0f) && (direction.y > -80.0f && direction.y < 80.0f))) { CRoadBlocks::InOrOut[nRoadblockNode] = false; - continue; } - if (direction.Magnitude() < 80.0f) { + else if (direction.Magnitude() >= 80.0f) { CRoadBlocks::InOrOut[nRoadblockNode] = false; - continue; - } else if (!CRoadBlocks::InOrOut[nRoadblockNode]) { + } + else if (!CRoadBlocks::InOrOut[nRoadblockNode]) { CRoadBlocks::InOrOut[nRoadblockNode] = true; - } else { - continue; - } - if (!FindPlayerVehicle()) - continue; - CWanted *pPlayerWanted = FindPlayerPed()->m_pWanted; - if ((CGeneral::GetRandomNumber() & 0x7F) >= pPlayerWanted->m_RoadblockDensity) - continue; - float fMapObjectRadius = 2.0f * mapObject->GetColModel()->boundingBox.max.x; - int32 vehicleId = MI_POLICE; - if (pPlayerWanted->AreArmyRequired()) - vehicleId = MI_BARRACKS; - else if (pPlayerWanted->AreFbiRequired()) - vehicleId = MI_FBICAR; - else if (pPlayerWanted->AreSwatRequired()) - vehicleId = MI_ENFORCER; - if (!CStreaming::HasModelLoaded(vehicleId)) - vehicleId = MI_POLICE; - CColModel *pVehicleColModel = CModelInfo::GetModelInfo(vehicleId)->GetColModel(); - float fModelRadius = 2.0f * pVehicleColModel->boundingSphere.radius + 0.25f; - int16 radius = (int16)(fMapObjectRadius / fModelRadius); - if (radius >= 6) - continue; - CVector2D directionToCamera = TheCamera.m_matrix.GetPosition() - mapObject->m_matrix.GetPosition(); - float fDotProduct = DotProduct2D(directionToCamera, mapObject->m_matrix.GetUp()); - if (radius <= 0) - continue; - float fOffset = 0.5f * fModelRadius * (float)(radius - 1); - for (int16 modelId = vehicleId; modelId < nRoadblockNode ; modelId++) { - uint8 nRoadblockType = fDotProduct >= 0.0f; - if (CGeneral::GetRandomNumber() & 1) { - offsetMatrix.SetRotateZ(((CGeneral::GetRandomNumber() & 0xFF) - 128.0f) * 0.003f + HALFPI); - } else { - nRoadblockType = fDotProduct < 0.0f; - offsetMatrix.SetRotateZ(((CGeneral::GetRandomNumber() & 0xFF) - 128.0f) * 0.003f - HALFPI); - } - if (ThePaths.m_objectFlags[CRoadBlocks::RoadBlockObjects[nRoadblockNode]] & ObjectEastWest) - offsetMatrix.GetPosition() = CVector(0.0f, -fOffset, 0.6f); - else - offsetMatrix.GetPosition() = CVector(-fOffset, 0.0f, 0.6f); - CMatrix vehicleMatrix = mapObject->m_matrix * offsetMatrix; - float fModelRadius = CModelInfo::GetModelInfo(modelId)->GetColModel()->boundingSphere.radius - 0.25f; - int16 colliding = 0; - CWorld::FindObjectsKindaColliding(vehicleMatrix.GetPosition(), fModelRadius, 0, &colliding, 2, nil, false, true, true, false, false); - if (colliding) - continue; - CAutomobile *pVehicle = new CAutomobile(vehicleId, RANDOM_VEHICLE); - pVehicle->m_status = STATUS_ABANDONED; - // pVehicle->GetHeightAboveRoad(); // called but return value is ignored? - vehicleMatrix.GetPosition().z += fModelRadius - 0.6f; - pVehicle->m_matrix = vehicleMatrix; - pVehicle->PlaceOnRoadProperly(); - pVehicle->bIsStatic = false; - pVehicle->m_matrix.UpdateRW(); - pVehicle->m_nDoorLock = CARLOCK_UNLOCKED; - CCarCtrl::JoinCarWithRoadSystem(pVehicle); - pVehicle->bIsLocked = false; - pVehicle->AutoPilot.m_nCarMission = MISSION_NONE; - pVehicle->AutoPilot.m_nTempAction = TEMPACT_NONE; - pVehicle->AutoPilot.m_nCurrentLane = 0; - pVehicle->AutoPilot.m_nNextLane = 0; - pVehicle->AutoPilot.m_fMaxTrafficSpeed = 0.0f; - pVehicle->AutoPilot.m_nCruiseSpeed = 0.0f; - pVehicle->bExtendedRange = true; - if (pVehicle->UsesSiren(pVehicle->GetModelIndex()) && CGeneral::GetRandomNumber() & 1) - pVehicle->m_bSirenOrAlarm = true; - if (pVehicle->m_matrix.GetForward().z > 0.94f) { - CVisibilityPlugins::SetClumpAlpha(pVehicle->GetClump(), 0); - CWorld::Add(pVehicle); - pVehicle->bCreateRoadBlockPeds = true; - pVehicle->m_nRoadblockType = nRoadblockType; - pVehicle->m_nRoadblockNode = nRoadblockNode; - } else { - delete pVehicle; + if (FindPlayerVehicle() && (CGeneral::GetRandomNumber() & 0x7F) < FindPlayerPed()->m_pWanted->m_RoadblockDensity) { + CWanted *pPlayerWanted = FindPlayerPed()->m_pWanted; + float fMapObjectRadius = 2.0f * mapObject->GetColModel()->boundingBox.max.x; + int32 vehicleId = MI_POLICE; + if (pPlayerWanted->AreArmyRequired()) + vehicleId = MI_BARRACKS; + else if (pPlayerWanted->AreFbiRequired()) + vehicleId = MI_FBICAR; + else if (pPlayerWanted->AreSwatRequired()) + vehicleId = MI_ENFORCER; + if (!CStreaming::HasModelLoaded(vehicleId)) + vehicleId = MI_POLICE; + CColModel* pVehicleColModel = CModelInfo::GetModelInfo(vehicleId)->GetColModel(); + float fModelRadius = 2.0f * pVehicleColModel->boundingSphere.radius + 0.25f; + int16 radius = (int16)(fMapObjectRadius / fModelRadius); + if (radius > 0 && radius < 6) { + CVector2D directionToCamera = TheCamera.m_matrix.GetPosition() - mapObject->m_matrix.GetPosition(); + float fDotProduct = DotProduct2D(directionToCamera, mapObject->m_matrix.GetUp()); + float fOffset = 0.5f * fModelRadius * (float)(radius - 1); + for (int16 i = 0; i < radius; i++) { + uint8 nRoadblockType = fDotProduct < 0.0f; + if (CGeneral::GetRandomNumber() & 1) { + offsetMatrix.SetRotateZ(((CGeneral::GetRandomNumber() & 0xFF) - 128.0f) * 0.003f + HALFPI); + } else { + nRoadblockType = !nRoadblockType; + offsetMatrix.SetRotateZ(((CGeneral::GetRandomNumber() & 0xFF) - 128.0f) * 0.003f - HALFPI); + } + if (ThePaths.m_objectFlags[CRoadBlocks::RoadBlockObjects[nRoadblockNode]] & ObjectEastWest) + offsetMatrix.GetPosition() = CVector(0.0f, -fOffset, 0.6f); + else + offsetMatrix.GetPosition() = CVector(-fOffset, 0.0f, 0.6f); + CMatrix vehicleMatrix = mapObject->m_matrix * offsetMatrix; + float fModelRadius = CModelInfo::GetModelInfo(vehicleId)->GetColModel()->boundingSphere.radius - 0.25f; + int16 colliding = 0; + CWorld::FindObjectsKindaColliding(vehicleMatrix.GetPosition(), fModelRadius, 0, &colliding, 2, nil, false, true, true, false, false); + if (!colliding) { + CAutomobile* pVehicle = new CAutomobile(vehicleId, RANDOM_VEHICLE); + pVehicle->m_status = STATUS_ABANDONED; + // pVehicle->GetHeightAboveRoad(); // called but return value is ignored? + vehicleMatrix.GetPosition().z += fModelRadius - 0.6f; + pVehicle->m_matrix = vehicleMatrix; + pVehicle->PlaceOnRoadProperly(); + pVehicle->bIsStatic = false; + pVehicle->m_matrix.UpdateRW(); + pVehicle->m_nDoorLock = CARLOCK_UNLOCKED; + CCarCtrl::JoinCarWithRoadSystem(pVehicle); + pVehicle->bIsLocked = false; + pVehicle->AutoPilot.m_nCarMission = MISSION_NONE; + pVehicle->AutoPilot.m_nTempAction = TEMPACT_NONE; + pVehicle->AutoPilot.m_nCurrentLane = 0; + pVehicle->AutoPilot.m_nNextLane = 0; + pVehicle->AutoPilot.m_fMaxTrafficSpeed = 0.0f; + pVehicle->AutoPilot.m_nCruiseSpeed = 0.0f; + pVehicle->bExtendedRange = true; + if (pVehicle->UsesSiren(pVehicle->GetModelIndex()) && CGeneral::GetRandomNumber() & 1) + pVehicle->m_bSirenOrAlarm = true; + if (pVehicle->m_matrix.GetForward().z > 0.94f) { + CVisibilityPlugins::SetClumpAlpha(pVehicle->GetClump(), 0); + CWorld::Add(pVehicle); + pVehicle->bCreateRoadBlockPeds = true; + pVehicle->m_nRoadblockType = nRoadblockType; + pVehicle->m_nRoadblockNode = nRoadblockNode; + } else { + delete pVehicle; + } + } + } + } } } } From 60c412149dd0788e31398667e515a17c1a9b449a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Mon, 13 Apr 2020 05:32:11 +0300 Subject: [PATCH 092/112] CFileLoader last funcs and Frontend cleanup --- README.md | 1 - src/core/FileLoader.cpp | 165 +++++++++++++++++++++++++++++++++++- src/core/FileLoader.h | 3 + src/core/Frontend.cpp | 62 ++++++++------ src/core/Frontend.h | 2 +- src/core/MenuScreens.h | 1 - src/core/re3.cpp | 15 ---- src/modelinfo/ModelInfo.cpp | 17 ++-- src/modelinfo/ModelInfo.h | 3 +- src/render/Renderer.h | 2 +- 10 files changed, 216 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index fd5c2041..f3a225c5 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,6 @@ The following classes have only unused or practically unused code left: ``` CCullZone - only mobile stuff CCullZones - only mobile stuff -CFileLoader - almost done CSceneEdit ``` diff --git a/src/core/FileLoader.cpp b/src/core/FileLoader.cpp index e0c8b01e..e0a0fafc 100644 --- a/src/core/FileLoader.cpp +++ b/src/core/FileLoader.cpp @@ -25,8 +25,6 @@ #include "CdStream.h" #include "FileLoader.h" -WRAPPER void CFileLoader::ReloadPaths(const char *filename) { EAXJMP(0x476DB0); } - char CFileLoader::ms_line[256]; const char* @@ -1198,6 +1196,165 @@ CFileLoader::LoadMapZones(const char *filename) debug("Finished loading IPL\n"); } +void +CFileLoader::ReloadPaths(const char *filename) +{ + enum { + NONE, + PATH, + }; + char *line; + int section = NONE; + int id, pathType, pathIndex = -1; + char pathTypeStr[20]; + debug("Reloading paths from %s...\n", filename); + + int fd = CFileMgr::OpenFile(filename, "r"); + for (line = CFileLoader::LoadLine(fd); line; line = CFileLoader::LoadLine(fd)) { + if (*line == '\0' || *line == '#') + continue; + + if (section == NONE) { + if (strncmp(line, "path", 4) == 0) { + section = PATH; + ThePaths.AllocatePathFindInfoMem(4500); + } + } else if (strncmp(line, "end", 3) == 0) { + section = NONE; + } else { + switch (section) { + case PATH: + if (pathIndex == -1) { + id = LoadPathHeader(line, pathTypeStr); + if (strncmp(pathTypeStr, "ped", 4) == 0) + pathType = 1; + else if (strncmp(pathTypeStr, "car", 4) == 0) + pathType = 0; + pathIndex = 0; + } else { + if (pathType == 1) + LoadPedPathNode(line, id, pathIndex); + else if (pathType == 0) + LoadCarPathNode(line, id, pathIndex); + pathIndex++; + if (pathIndex == 12) + pathIndex = -1; + } + break; + default: + break; + } + } + } + CFileMgr::CloseFile(fd); +} + +void +CFileLoader::ReloadObjectTypes(const char *filename) +{ + enum { + NONE, + OBJS, + TOBJ, + TWODFX + }; + char *line; + int section = NONE; + CModelInfo::ReInit2dEffects(); + debug("Reloading object types from %s...\n", filename); + + CFileMgr::ChangeDir("\\DATA\\MAPS\\"); + int fd = CFileMgr::OpenFile(filename, "r"); + CFileMgr::ChangeDir("\\"); + for (line = CFileLoader::LoadLine(fd); line; line = CFileLoader::LoadLine(fd)) { + if (*line == '\0' || *line == '#') + continue; + + if (section == NONE) { + if (strncmp(line, "objs", 4) == 0) section = OBJS; + else if (strncmp(line, "tobj", 4) == 0) section = TOBJ; + else if (strncmp(line, "2dfx", 4) == 0) section = TWODFX; + } else if (strncmp(line, "end", 3) == 0) { + section = NONE; + } else { + switch (section) { + case OBJS: + case TOBJ: + ReloadObject(line); + break; + case TWODFX: + Load2dEffect(line); + break; + default: + break; + } + } + } + CFileMgr::CloseFile(fd); +} + +void +CFileLoader::ReloadObject(const char *line) +{ + int id, numObjs; + char model[24], txd[24]; + float dist[3]; + uint32 flags; + CSimpleModelInfo *mi; + + if(sscanf(line, "%d %s %s %d", &id, model, txd, &numObjs) != 4) + return; + + switch(numObjs){ + case 1: + sscanf(line, "%d %s %s %d %f %d", + &id, model, txd, &numObjs, &dist[0], &flags); + break; + case 2: + sscanf(line, "%d %s %s %d %f %f %d", + &id, model, txd, &numObjs, &dist[0], &dist[1], &flags); + break; + case 3: + sscanf(line, "%d %s %s %d %f %f %f %d", + &id, model, txd, &numObjs, &dist[0], &dist[1], &dist[2], &flags); + break; + } + + mi = (CSimpleModelInfo*) CModelInfo::GetModelInfo(id); + if ( +#ifdef FIX_BUGS + mi && +#endif + mi->m_type == MITYPE_SIMPLE && !strcmp(mi->GetName(), model) && mi->m_numAtomics == numObjs) { + mi->SetLodDistances(dist); + SetModelInfoFlags(mi, flags); + } else { + printf("Can't reload %s\n", model); + } +} + +// unused mobile function - crashes +void +CFileLoader::ReLoadScene(const char *filename) +{ + char *line; + CFileMgr::ChangeDir("\\DATA\\"); + int fd = CFileMgr::OpenFile(filename, "r"); + CFileMgr::ChangeDir("\\"); + + for (line = CFileLoader::LoadLine(fd); line; line = CFileLoader::LoadLine(fd)) { + if (*line == '#') + continue; + + if (strncmp(line, "EXIT", 9) == 0) // BUG: 9? + break; + + if (strncmp(line, "IDE", 3) == 0) { + LoadObjectTypes(line + 4); + } + } + CFileMgr::CloseFile(fd); +} STARTPATCHES InjectHook(0x476290, CFileLoader::LoadLevel, PATCH_JUMP); @@ -1233,4 +1390,8 @@ STARTPATCHES InjectHook(0x478A90, CFileLoader::LoadCullZone, PATCH_JUMP); InjectHook(0x478550, CFileLoader::LoadMapZones, PATCH_JUMP); + + InjectHook(0x476DB0, CFileLoader::ReloadPaths, PATCH_JUMP); + InjectHook(0x476F30, CFileLoader::ReloadObjectTypes, PATCH_JUMP); + InjectHook(0x4772B0, CFileLoader::ReloadObject, PATCH_JUMP); ENDPATCHES diff --git a/src/core/FileLoader.h b/src/core/FileLoader.h index 1b390279..87b8fe61 100644 --- a/src/core/FileLoader.h +++ b/src/core/FileLoader.h @@ -43,4 +43,7 @@ public: static void LoadMapZones(const char *filename); static void ReloadPaths(const char *filename); + static void ReloadObjectTypes(const char *filename); + static void ReloadObject(const char *line); + static void ReLoadScene(const char *filename); // unused mobile function }; diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 0e719cca..643c450f 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -31,6 +31,7 @@ #include "Radar.h" #include "Stats.h" #include "Messages.h" +#include "FileLoader.h" #define TIDY_UP_PBP // ProcessButtonPresses #define MAX_VISIBLE_LIST_ROW 30 @@ -110,14 +111,14 @@ char *CMenuManager::m_PrefsSkinFile = (char*)0x5F2E74; //[256] "$$\"\"" int32 &CMenuManager::m_KeyPressedCode = *(int32*)0x5F2E70; // -1 -// This is PS2 option color, they forget it here and used in PrintBriefs once(but didn't use the output anyway) -#ifdef FIX_BUGS -CRGBA TEXT_COLOR = CRGBA(235, 170, 50, 255); // PC briefs text color +// Originally that was PS2 option color, they forget it here and used in PrintBriefs once(but didn't use the output anyway) +#ifdef PS2_LIKE_MENU +const CRGBA TEXT_COLOR = CRGBA(150, 110, 30, 255); #else -CRGBA TEXT_COLOR = CRGBA(150, 110, 30, 255); +const CRGBA TEXT_COLOR = CRGBA(235, 170, 50, 255); // PC briefs text color #endif -float menuXYpadding = MENUACTION_POS_Y; // *(float*)0x5F355C; // never changes. not original name +const float menuXYpadding = MENUACTION_POS_Y; // *(float*)0x5F355C; // not original name float MENU_TEXT_SIZE_X = SMALLTEXT_X_SCALE; //*(float*)0x5F2E40; float MENU_TEXT_SIZE_Y = SMALLTEXT_Y_SCALE; //*(float*)0x5F2E44; @@ -130,17 +131,17 @@ uint8 CMenuManager::m_PrefsPlayerRed = 255; uint8 CMenuManager::m_PrefsPlayerGreen = 128; uint8 CMenuManager::m_PrefsPlayerBlue; // why?? -CMenuManager &FrontEndMenuManager = *(CMenuManager*)0x8F59D8; +CMenuManager FrontEndMenuManager; // = *(CMenuManager*)0x8F59D8; // Move this somewhere else. -float &CRenderer::ms_lodDistScale = *(float*)0x5F726C; // 1.2 +float CRenderer::ms_lodDistScale = 1.2f; // *(float*)0x5F726C; -uint32 &TimeToStopPadShaking = *(uint32*)0x628CF8; -char *&pEditString = *(char**)0x628D00; -int32 *&pControlEdit = *(int32**)0x628D08; -bool &DisplayComboButtonErrMsg = *(bool*)0x628D14; -int32 &MouseButtonJustClicked = *(int32*)0x628D0C; -int32 &JoyButtonJustClicked = *(int32*)0x628D10; +uint32 TimeToStopPadShaking; // = *(uint32*)0x628CF8; +char *pEditString; // = *(char**)0x628D00; +int32 *pControlEdit; // = *(int32**)0x628D08; +bool DisplayComboButtonErrMsg; // = *(bool*)0x628D14; +int32 MouseButtonJustClicked; // = *(int32*)0x628D0C; +int32 JoyButtonJustClicked; // = *(int32*)0x628D10; //int32 *pControlTemp = 0; #ifndef MASTER @@ -844,6 +845,10 @@ CMenuManager::Draw() break; } +#ifdef PS2_LIKE_MENU + CFont::SetFontStyle(FONT_BANK); +#endif + switch (m_nCurrScreen) { case MENUPAGE_CONTROLLER_PC_OLD1: case MENUPAGE_CONTROLLER_PC_OLD2: @@ -2140,7 +2145,7 @@ CMenuManager::DrawFrontEndNormal() } #define optionWidth MENU_X(66.0f) - #define rawOptionHeight 20.0f + #define rawOptionHeight 22.0f #define optionBottom SCREEN_SCALE_FROM_BOTTOM(20.0f) #define optionTop SCREEN_SCALE_FROM_BOTTOM(20.0f + rawOptionHeight) #define leftPadding MENU_X_LEFT_ALIGNED(90.0f) @@ -3187,31 +3192,33 @@ CMenuManager::PrintBriefs() newColor = TEXT_COLOR; FilterOutColorMarkersFromString(gUString, newColor); - // newColor wasn't used at all! let's fix this +#ifdef PS2_LIKE_MENU + // This PS2 code was always here, but unused bool rgSame = newColor.r == TEXT_COLOR.r && newColor.g == TEXT_COLOR.g; bool bSame = rgSame && newColor.b == TEXT_COLOR.b; - bool colorNotChanged = bSame -#ifndef FIX_BUGS - && newColor.a == TEXT_COLOR.a -#endif - ; + bool colorNotChanged = bSame; /* && newColor.a == TEXT_COLOR.a; */ if (!colorNotChanged) { newColor.r /= 2; newColor.g /= 2; newColor.b /= 2; } -#ifdef FIX_BUGS - newColor.a = FadeIn(255); - // because some colors aren't visible, due to they were made for PS2 - CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255))); + CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255))); // But this is from PS2 CFont::SetDropShadowPosition(1); +#endif + +#if defined(FIX_BUGS) || defined(PS2_LIKE_MENU) + newColor.a = FadeIn(255); CFont::SetColor(newColor); #endif CFont::PrintString(MENU_X_LEFT_ALIGNED(50.0f), nextY, gUString); nextY += MENU_Y(menuXYpadding); } } + +#ifdef PS2_LIKE_MENU + CFont::SetDropShadowPosition(0); +#endif } // Not sure about name. Not to be confused with CPad::PrintErrorMessage @@ -4317,8 +4324,7 @@ CMenuManager::ProcessButtonPresses(void) DoSettingsBeforeStartingAGame(); break; case MENUACTION_RELOADIDE: - // TODO - // CFileLoader::ReloadObjectTypes("GTA3.IDE"); + CFileLoader::ReloadObjectTypes("GTA3.IDE"); break; case MENUACTION_RELOADIPL: CGame::ReloadIPLs(); @@ -5023,7 +5029,7 @@ CMenuManager::PrintController(void) CFont::SetFontStyle(FONT_BANK); // X // CFont::SetScale(0.4f, 0.4f); - CFont::SetScale(MENU_X(SMALLTEXT_X_SCALE), MENU_Y(SMALLTEXT_Y_SCALE)); // X + CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE), MENU_Y(SMALLESTTEXT_Y_SCALE)); // X // CFont::SetColor(CRGBA(128, 128, 128, FadeIn(255))); CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255))); // X @@ -5217,6 +5223,8 @@ CMenuManager::PrintController(void) return; } } + + CFont::SetDropShadowPosition(0); // X } #ifdef MENU_MAP diff --git a/src/core/Frontend.h b/src/core/Frontend.h index 69851c12..81765af9 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -640,4 +640,4 @@ public: static_assert(sizeof(CMenuManager) == 0x564, "CMenuManager: error"); -extern CMenuManager &FrontEndMenuManager; +extern CMenuManager FrontEndMenuManager; diff --git a/src/core/MenuScreens.h b/src/core/MenuScreens.h index 9c0dde69..e1b1bac6 100644 --- a/src/core/MenuScreens.h +++ b/src/core/MenuScreens.h @@ -281,7 +281,6 @@ const CMenuScreen aScreens[] = { MENUACTION_CTRLMETHOD, "FET_CME", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC, MENUACTION_CHANGEMENU, "FET_RDK", SAVESLOT_NONE, MENUPAGE_KEYBOARD_CONTROLS, MENUACTION_CHANGEMENU, "FET_AMS", SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS, - MENUACTION_RESTOREDEF, "FET_DEF", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC, MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, }, diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 00674b19..04987634 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -149,19 +149,6 @@ SpawnCar(int id) } } -static void -LetThemFollowYou(void) { - CPed *player = (CPed*) FindPlayerPed(); - for (int i = 0; i < player->m_numNearPeds; i++) { - CPed *nearPed = player->m_nearPeds[i]; - if (nearPed && !nearPed->IsPlayer()) { - nearPed->SetObjective(OBJECTIVE_FOLLOW_PED_IN_FORMATION, (void*)player); - nearPed->m_pedFormation = (eFormation)(1 + (rand() & 7)); - nearPed->bScriptObjectiveCompleted = false; - } - } -} - static void FixCar(void) { @@ -368,8 +355,6 @@ DebugMenuPopulate(void) DebugMenuAddVarBool8("Debug", "Don't render Peds", (int8*)&gbDontRenderPeds, nil); DebugMenuAddVarBool8("Debug", "Don't render Vehicles", (int8*)&gbDontRenderVehicles, nil); DebugMenuAddVarBool8("Debug", "Don't render Objects", (int8*)&gbDontRenderObjects, nil); - - DebugMenuAddCmd("Debug", "Make peds follow you in formation", LetThemFollowYou); #ifdef TOGGLEABLE_BETA_FEATURES DebugMenuAddVarBool8("Debug", "Toggle banned particles", (int8*)&CParticle::bEnableBannedParticles, nil); DebugMenuAddVarBool8("Debug", "Toggle popping heads on headshot", (int8*)&CPed::bPopHeadsOnHeadshot, nil); diff --git a/src/modelinfo/ModelInfo.cpp b/src/modelinfo/ModelInfo.cpp index d956abaa..b6a95992 100644 --- a/src/modelinfo/ModelInfo.cpp +++ b/src/modelinfo/ModelInfo.cpp @@ -234,12 +234,6 @@ CModelInfo::RemoveColModelsFromOtherLevels(eLevelName level) } } -CStore& -CModelInfo::GetMloInstanceStore() -{ - return CModelInfo::ms_mloInstanceStore; -} - void CModelInfo::ConstructMloClumps() { @@ -247,6 +241,17 @@ CModelInfo::ConstructMloClumps() ms_mloModelStore.store[i].ConstructClump(); } +void +CModelInfo::ReInit2dEffects() +{ + ms_2dEffectStore.clear(); + + for (int i = 0; i < MODELINFOSIZE; i++) { + if (ms_modelInfoPtrs[i]) + ms_modelInfoPtrs[i]->Init2dEffects(); + } +} + STARTPATCHES InjectHook(0x50B310, CModelInfo::Initialise, PATCH_JUMP); InjectHook(0x50B5B0, CModelInfo::ShutDown, PATCH_JUMP); diff --git a/src/modelinfo/ModelInfo.h b/src/modelinfo/ModelInfo.h index 13756ddf..e6dec1d8 100644 --- a/src/modelinfo/ModelInfo.h +++ b/src/modelinfo/ModelInfo.h @@ -36,7 +36,7 @@ public: static CVehicleModelInfo *AddVehicleModel(int id); static CStore &Get2dEffectStore(void) { return ms_2dEffectStore; } - static CStore &GetMloInstanceStore(); + static CStore &GetMloInstanceStore(void) { return ms_mloInstanceStore; } static CBaseModelInfo *GetModelInfo(const char *name, int *id); static CBaseModelInfo *GetModelInfo(int id){ @@ -47,4 +47,5 @@ public: static bool IsBikeModel(int32 id); static void RemoveColModelsFromOtherLevels(eLevelName level); static void ConstructMloClumps(); + static void ReInit2dEffects(); }; diff --git a/src/render/Renderer.h b/src/render/Renderer.h index 89fc23cb..42c154ec 100644 --- a/src/render/Renderer.h +++ b/src/render/Renderer.h @@ -29,7 +29,7 @@ class CRenderer static CVehicle *&m_pFirstPersonVehicle; public: - static float &ms_lodDistScale; // defined in Frontend.cpp + static float ms_lodDistScale; // defined in Frontend.cpp static bool &m_loadingPriority; static void Init(void); From 741c9405d0107daf28fefef3c882ba58a791e7d3 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 12 Apr 2020 23:50:34 +0300 Subject: [PATCH 093/112] CPacManPickups --- README.md | 1 - src/control/Pickups.cpp | 458 +++++++++++++++++++++++++++++++++++++--- src/control/Pickups.h | 25 ++- src/core/config.h | 1 + src/math/Vector.h | 2 +- 5 files changed, 456 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index fd5c2041..dcca1ab3 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,6 @@ to reverse at the time, calling the original functions is acceptable. cAudioManager - WIP CBoat CBulletInfo -CPacManPickups CPedPath CRoadBlocks CWeapon diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index 16123c63..4b98bcbc 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -54,23 +54,6 @@ uint8 aWeaponGreens[] = { 0, 255, 128, 255, 0, 255, 128, 255, 0, 255, 255, 0, 25 uint8 aWeaponBlues[] = { 0, 0, 255, 0, 255, 255, 0, 128, 255, 0, 255, 0, 128, 255, 0, 0 }; float aWeaponScale[] = { 1.0f, 2.0f, 1.5f, 1.0f, 1.0f, 1.5f, 1.0f, 2.0f, 1.0f, 2.0f, 2.5f, 1.0f, 1.0f, 1.0f, 1.0f }; -WRAPPER void CPacManPickups::Init(void) { EAXJMP(0x432760); } -WRAPPER void CPacManPickups::Update(void) { EAXJMP(0x432800); } -WRAPPER void CPacManPickups::GeneratePMPickUps(CVector, float, int16, uint8) { EAXJMP(0x432AE0); } -WRAPPER void CPacManPickups::GeneratePMPickUpsForRace(int32) { EAXJMP(0x432D50); } -WRAPPER void CPacManPickups::GenerateOnePMPickUp(CVector) { EAXJMP(0x432F20); } -WRAPPER void CPacManPickups::Render(void) { EAXJMP(0x432F60); } -WRAPPER void CPacManPickups::DoCleanUpPacManStuff(void) { EAXJMP(0x433150); } -WRAPPER void CPacManPickups::StartPacManRace(int32) { EAXJMP(0x433340); } -WRAPPER void CPacManPickups::StartPacManRecord(void) { EAXJMP(0x433360); } -WRAPPER uint32 CPacManPickups::QueryPowerPillsEatenInRace(void) { EAXJMP(0x4333A0); } -WRAPPER void CPacManPickups::ResetPowerPillsEatenInRace(void) { EAXJMP(0x4333B0); } -WRAPPER void CPacManPickups::CleanUpPacManStuff(void) { EAXJMP(0x4333C0); } -WRAPPER void CPacManPickups::StartPacManScramble(CVector, float, int16) { EAXJMP(0x4333D0); } -WRAPPER uint32 CPacManPickups::QueryPowerPillsCarriedByPlayer(void) { EAXJMP(0x4333F0); } -WRAPPER void CPacManPickups::ResetPowerPillsCarriedByPlayer(void) { EAXJMP(0x433410); } - - void CPickup::RemoveKeepType() { @@ -289,13 +272,6 @@ CPickup::Update(CPlayerPed *player, CVehicle *vehicle, int playerId) Remove(); DMAudio.PlayFrontEndSound(SOUND_PICKUP_MONEY, 0); return true; - //case PICKUP_IN_SHOP_OUT_OF_STOCK: - //case PICKUP_MINE_INACTIVE: - //case PICKUP_MINE_ARMED: - //case PICKUP_NAUTICAL_MINE_INACTIVE: - //case PICKUP_NAUTICAL_MINE_ARMED: - //case PICKUP_FLOATINGPACKAGE: - //case PICKUP_FLOATINGPACKAGE_FLOATING: default: break; } @@ -530,14 +506,12 @@ CPickups::GenerateNewOne(CVector pos, uint32 modelIndex, uint8 type, uint32 quan } } - if (!bFreeFound) - { + if (!bFreeFound) { for (slot = 0; slot < NUMGENERALPICKUPS; slot++) { if (aPickUps[slot].m_eType == PICKUP_MONEY) break; } - if (slot >= NUMGENERALPICKUPS) - { + if (slot >= NUMGENERALPICKUPS) { for (slot = 0; slot < NUMGENERALPICKUPS; slot++) { if (aPickUps[slot].m_eType == PICKUP_ONCE_TIMEOUT) break; } @@ -1021,6 +995,417 @@ INITSAVEBUF VALIDATESAVEBUF(*size) } +void +CPacManPickup::Update() +{ + if (FindPlayerVehicle() == nil) return; + + CVehicle *veh = FindPlayerVehicle(); + + if (DistanceSqr2D(FindPlayerVehicle()->GetPosition(), m_vecPosn.x, m_vecPosn.y) < 100.0f && veh->IsSphereTouchingVehicle(m_vecPosn.x, m_vecPosn.y, m_vecPosn.z, 1.5f)) { + switch (m_eType) + { + case PACMAN_SCRAMBLE: + { + veh->m_nPacManPickupsCarried++; + veh->m_vecMoveSpeed *= 0.65f; + float massMult = (veh->m_fMass + 250.0f) / veh->m_fMass; + veh->m_fMass *= massMult; + veh->m_fTurnMass *= massMult; + veh->fForceMultiplier *= massMult; + FindPlayerPed()->m_pWanted->m_nChaos += 10; + FindPlayerPed()->m_pWanted->UpdateWantedLevel(); + DMAudio.PlayFrontEndSound(SOUND_PICKUP_PACMAN_PACKAGE, 0); + } + case PACMAN_RACE: + CPacManPickups::PillsEatenInRace++; + DMAudio.PlayFrontEndSound(SOUND_PICKUP_PACMAN_PILL, 0); + break; + default: + break; + } + m_eType = PACMAN_NONE; + if (m_pObject != nil) { + CWorld::Remove(m_pObject); + delete m_pObject; + m_pObject = nil; + } + } +} + +int32 CollectGameState; +int16 ThingsToCollect; + +CPacManPickup CPacManPickups::aPMPickUps[NUMPACMANPICKUPS]; +CVector CPacManPickups::LastPickUpCoors; +int32 CPacManPickups::PillsEatenInRace; +bool CPacManPickups::bPMActive; + +void +CPacManPickups::Init() +{ + for (int i = 0; i < NUMPACMANPICKUPS; i++) + aPMPickUps[i].m_eType = PACMAN_NONE; + bPMActive = false; +} + +void +CPacManPickups::Update() +{ + if (FindPlayerVehicle()) { + float dist = Distance(FindPlayerCoors(), CVector(1072.0f, -948.0f, 14.5f)); + switch (CollectGameState) { + case 1: + if (dist < 10.0f) { + ThingsToCollect -= FindPlayerVehicle()->m_nPacManPickupsCarried; + FindPlayerVehicle()->m_nPacManPickupsCarried = 0; + FindPlayerVehicle()->m_fMass /= FindPlayerVehicle()->fForceMultiplier; + FindPlayerVehicle()->m_fTurnMass /= FindPlayerVehicle()->fForceMultiplier; + FindPlayerVehicle()->fForceMultiplier = 1.0f; + } + if (ThingsToCollect <= 0) { + CollectGameState = 2; + ClearPMPickUps(); + } + break; + case 2: + if (dist > 11.0f) + CollectGameState = 0; + break; + case 20: + if (Distance(FindPlayerCoors(), LastPickUpCoors) > 30.0f) { + LastPickUpCoors = FindPlayerCoors(); + printf("%f, %f, %f,\n", LastPickUpCoors.x, LastPickUpCoors.y, LastPickUpCoors.z); + } + break; + default: + break; + } + } + if (bPMActive) { +#define PACMANPICKUPS_FRAME_SPAN (4) + for (uint32 i = (CTimer::GetFrameCounter() % PACMANPICKUPS_FRAME_SPAN) * (NUMPACMANPICKUPS / PACMANPICKUPS_FRAME_SPAN); i < ((CTimer::GetFrameCounter() % PACMANPICKUPS_FRAME_SPAN) + 1) * (NUMPACMANPICKUPS / PACMANPICKUPS_FRAME_SPAN); i++) { + if (aPMPickUps[i].m_eType != PACMAN_NONE) + aPMPickUps[i].Update(); + } +#undef PACMANPICKUPS_FRAME_SPAN + } +} + +void +CPacManPickups::GeneratePMPickUps(CVector pos, float scrambleMult, int16 count, uint8 type) +{ + int i = 0; + while (count > 0) { + while (aPMPickUps[i].m_eType != PACMAN_NONE) + i++; + + bool bPickupCreated = false; + while (!bPickupCreated) { + CVector newPos = pos; + CColPoint colPoint; + CEntity *pRoad; + uint16 nRand = CGeneral::GetRandomNumber(); + newPos.x += ((nRand & 0xFF) - 128) * scrambleMult / 128.0f; + newPos.y += (((nRand >> 8) & 0xFF) - 128) * scrambleMult / 128.0f; + newPos.z = 1000.0f; + if (CWorld::ProcessVerticalLine(newPos, -1000.0f, colPoint, pRoad, true, false, false, false, true, false, nil) && pRoad->IsBuilding() && ((CBuilding*)pRoad)->GetIsATreadable()) { + newPos.z = 0.7f + colPoint.point.z; + aPMPickUps[i].m_eType = type; + aPMPickUps[i].m_vecPosn = newPos; + CObject *obj = new CObject(MI_BULLION, true); + if (obj != nil) { + obj->ObjectCreatedBy = MISSION_OBJECT; + obj->GetPosition() = aPMPickUps[i].m_vecPosn; + obj->SetOrientation(0.0f, 0.0f, -HALFPI); + obj->GetMatrix().UpdateRW(); + obj->UpdateRwFrame(); + + obj->bAffectedByGravity = false; + obj->bExplosionProof = true; + obj->bUsesCollision = false; + obj->bIsPickup = false; + CWorld::Add(obj); + } + aPMPickUps[i].m_pObject = obj; + bPickupCreated = true; + } + } + count--; + } + bPMActive = true; +} + +// diablo porn mission pickups +static const CVector aRacePoints1[] = { + CVector(913.62219f, -155.13692f, 4.9699469f), + CVector(913.92401f, -124.12943f, 4.9692569f), + CVector(913.27899f, -93.524231f, 7.4325991f), + CVector(912.60852f, -63.15905f, 7.4533591f), + CVector(934.22144f, -42.049122f, 7.4511471f), + CVector(958.88092f, -23.863735f, 7.4652338f), + CVector(978.50812f, -0.78458798f, 5.13515f), + CVector(1009.4175f, -2.1041219f, 2.4461579f), + CVector(1040.6313f, -2.0793829f, 2.293175f), + CVector(1070.7863f, -2.084095f, 2.2789791f), + CVector(1100.5773f, -8.468729f, 5.3248072f), + CVector(1119.9341f, -31.738031f, 7.1913071f), + CVector(1122.1664f, -62.762737f, 7.4703908f), + CVector(1122.814f, -93.650566f, 8.5577497f), + CVector(1125.8253f, -124.26616f, 9.9803305f), + CVector(1153.8727f, -135.47169f, 14.150617f), + CVector(1184.0831f, -135.82845f, 14.973998f), + CVector(1192.0432f, -164.57816f, 19.18627f), + CVector(1192.7761f, -194.28871f, 24.799675f), + CVector(1215.1527f, -215.0714f, 25.74975f), + CVector(1245.79f, -215.39304f, 28.70726f), + CVector(1276.2477f, -216.39485f, 33.71236f), + CVector(1306.5535f, -216.71007f, 39.711472f), + CVector(1335.0244f, -224.59329f, 46.474979f), + CVector(1355.4879f, -246.27664f, 49.934841f), + CVector(1362.6003f, -276.47064f, 49.96265f), + CVector(1363.027f, -307.30847f, 49.969173f), + CVector(1365.343f, -338.08609f, 49.967789f), + CVector(1367.5957f, -368.01105f, 50.092304f), + CVector(1368.2749f, -398.38049f, 50.061268f), + CVector(1366.9034f, -429.98483f, 50.057545f), + CVector(1356.8534f, -459.09259f, 50.035545f), + CVector(1335.5819f, -481.13544f, 47.217903f), + CVector(1306.7552f, -491.07443f, 40.202629f), + CVector(1275.5978f, -491.33194f, 33.969223f), + CVector(1244.702f, -491.46451f, 29.111021f), + CVector(1213.2222f, -491.8754f, 25.771168f), + CVector(1182.7729f, -492.19995f, 24.749964f), + CVector(1152.6874f, -491.42221f, 21.70038f), + CVector(1121.5352f, -491.94604f, 20.075182f), + CVector(1090.7056f, -492.63751f, 17.585758f), + CVector(1059.6008f, -491.65762f, 14.848632f), + CVector(1029.113f, -489.66031f, 14.918498f), + CVector(998.20679f, -486.78107f, 14.945688f), + CVector(968.00555f, -484.91266f, 15.001229f), + CVector(937.74939f, -492.09015f, 14.958629f), + CVector(927.17352f, -520.97736f, 14.972308f), + CVector(929.29749f, -552.08643f, 14.978855f), + CVector(950.69525f, -574.47778f, 14.972788f), + CVector(974.02826f, -593.56024f, 14.966445f), + CVector(989.04779f, -620.12854f, 14.951016f), + CVector(1014.1639f, -637.3905f, 14.966736f), + CVector(1017.5961f, -667.3736f, 14.956415f), + CVector(1041.9735f, -685.94391f, 15.003841f), + CVector(1043.3064f, -716.11298f, 14.974236f), + CVector(1043.5337f, -746.63855f, 14.96919f), + CVector(1044.142f, -776.93823f, 14.965424f), + CVector(1044.2657f, -807.29395f, 14.97171f), + CVector(1017.0797f, -820.1076f, 14.975431f), + CVector(986.23865f, -820.37103f, 14.972883f), + CVector(956.10065f, -820.23291f, 14.981133f), + CVector(925.86914f, -820.19049f, 14.976553f), + CVector(897.69702f, -831.08734f, 14.962709f), + CVector(868.06586f, -835.99237f, 14.970685f), + CVector(836.93054f, -836.84387f, 14.965049f), + CVector(811.63586f, -853.7915f, 15.067576f), + CVector(811.46344f, -884.27368f, 12.247812f), + CVector(811.60651f, -914.70959f, 9.2393751f), + CVector(811.10425f, -945.16272f, 5.817255f), + CVector(816.54584f, -975.64587f, 4.998558f), + CVector(828.2951f, -1003.3685f, 5.0471172f), + CVector(852.28839f, -1021.5963f, 4.9371028f), + CVector(882.50067f, -1025.4459f, 5.14077f), + CVector(912.84821f, -1026.7874f, 8.3415451f), + CVector(943.68274f, -1026.6914f, 11.341879f), + CVector(974.4129f, -1027.3682f, 14.410345f), + CVector(1004.1079f, -1036.0778f, 14.92961f), + CVector(1030.1144f, -1051.1224f, 14.850387f), + CVector(1058.7585f, -1060.342f, 14.821624f), + CVector(1087.7797f, -1068.3263f, 14.800561f), + CVector(1099.8807f, -1095.656f, 11.877907f), + CVector(1130.0005f, -1101.994f, 11.853914f), + CVector(1160.3809f, -1101.6355f, 11.854824f), + CVector(1191.8524f, -1102.1577f, 11.853843f), + CVector(1223.3307f, -1102.7448f, 11.852233f), + CVector(1253.564f, -1098.1045f, 11.853944f), + CVector(1262.0203f, -1069.1785f, 14.8147f), + CVector(1290.9998f, -1059.1882f, 14.816016f), + CVector(1316.246f, -1041.0635f, 14.81109f), + CVector(1331.7539f, -1013.835f, 14.81207f), + CVector(1334.0579f, -983.55402f, 14.827253f), + CVector(1323.2429f, -954.23083f, 14.954678f), + CVector(1302.7495f, -932.21216f, 14.962917f), + CVector(1317.418f, -905.89325f, 14.967506f), + CVector(1337.9503f, -883.5025f, 14.969675f), + CVector(1352.6929f, -855.96954f, 14.967854f), + CVector(1357.2388f, -826.26971f, 14.97295f), + CVector(1384.8668f, -812.47693f, 12.907736f), + CVector(1410.8983f, -795.39056f, 12.052228f), + CVector(1433.901f, -775.55811f, 11.96265f), + CVector(1443.8615f, -746.92511f, 11.976114f), + CVector(1457.7015f, -720.00903f, 11.971177f), + CVector(1481.5685f, -701.30237f, 11.977908f), + CVector(1511.4004f, -696.83295f, 11.972709f), + CVector(1542.1796f, -695.61676f, 11.970441f), + CVector(1570.3301f, -684.6239f, 11.969202f), + CVector(0.0f, 0.0f, 0.0f), +}; + +void +CPacManPickups::GeneratePMPickUpsForRace(int32 race) +{ + const CVector *pPos = nil; + int i = 0; + + if (race == 0) pPos = aRacePoints1; // there's only one available + assert(pPos != nil); + + while (!pPos->IsZero()) { + while (aPMPickUps[i].m_eType != PACMAN_NONE) + i++; + + aPMPickUps[i].m_eType = PACMAN_RACE; + aPMPickUps[i].m_vecPosn = *(pPos++); + if (race == 0) { + CObject* obj = new CObject(MI_DONKEYMAG, true); + if (obj != nil) { + obj->ObjectCreatedBy = MISSION_OBJECT; + + obj->GetPosition() = aPMPickUps[i].m_vecPosn; + obj->SetOrientation(0.0f, 0.0f, -HALFPI); + obj->GetMatrix().UpdateRW(); + obj->UpdateRwFrame(); + + obj->bAffectedByGravity = false; + obj->bExplosionProof = true; + obj->bUsesCollision = false; + obj->bIsPickup = false; + + CWorld::Add(obj); + } + aPMPickUps[i].m_pObject = obj; + } else + aPMPickUps[i].m_pObject = nil; + } + bPMActive = true; +} + +void +CPacManPickups::GenerateOnePMPickUp(CVector pos) +{ + bPMActive = true; + aPMPickUps[0].m_eType = PACMAN_RACE; + aPMPickUps[0].m_vecPosn = pos; +} + +void +CPacManPickups::Render() +{ + if (!bPMActive) return; + + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, FALSE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDONE); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDONE); + RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpCoronaTexture[6])); + + RwV3d pos; + float w, h; + + for (int i = 0; i < NUMPACMANPICKUPS; i++) { + switch (aPMPickUps[i].m_eType) + { + case PACMAN_SCRAMBLE: + case PACMAN_RACE: + if (CSprite::CalcScreenCoors(aPMPickUps[i].m_vecPosn, &pos, &w, &h, true) && pos.z < 100.0f) { + if (aPMPickUps[i].m_pObject != nil) { + aPMPickUps[i].m_pObject->GetMatrix().SetRotateZOnly((CTimer::GetTimeInMilliseconds() % 1024) * TWOPI / 1024.0f); + aPMPickUps[i].m_pObject->GetMatrix().UpdateRW(); + aPMPickUps[i].m_pObject->UpdateRwFrame(); + } + float fsin = Sin((CTimer::GetTimeInMilliseconds() % 1024) * 6.28f / 1024.0f); // yes, it is 6.28f when it was TWOPI just now... + CSprite::RenderOneXLUSprite(pos.x, pos.y, pos.z, 0.8f * w * fsin, 0.8f * h, 100, 50, 5, 255, 1.0f / pos.z, 255); + } + break; + default: + break; + } + } + + RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); + RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, FALSE); +} + +void +CPacManPickups::ClearPMPickUps() +{ + bPMActive = false; + + for (int i = 0; i < NUMPACMANPICKUPS; i++) { + if (aPMPickUps[i].m_pObject != nil) { + CWorld::Remove(aPMPickUps[i].m_pObject); + delete aPMPickUps[i].m_pObject; + aPMPickUps[i].m_pObject = nil; + } + aPMPickUps[i].m_eType = PACMAN_NONE; + } +} + +void +CPacManPickups::StartPacManRace(int32 race) +{ + GeneratePMPickUpsForRace(race); + PillsEatenInRace = 0; +} + +void +CPacManPickups::StartPacManRecord() +{ + CollectGameState = 20; + LastPickUpCoors = FindPlayerCoors(); +} + +uint32 +CPacManPickups::QueryPowerPillsEatenInRace() +{ + return PillsEatenInRace; +} + +void +CPacManPickups::ResetPowerPillsEatenInRace() +{ + PillsEatenInRace = 0; +} + +void +CPacManPickups::CleanUpPacManStuff() +{ + ClearPMPickUps(); +} + +void +CPacManPickups::StartPacManScramble(CVector pos, float scrambleMult, int16 count) +{ + GeneratePMPickUps(pos, scrambleMult, count, PACMAN_SCRAMBLE); +} + +uint32 +CPacManPickups::QueryPowerPillsCarriedByPlayer() +{ + if (FindPlayerVehicle()) + return FindPlayerVehicle()->m_nPacManPickupsCarried; + return 0; +} + +void +CPacManPickups::ResetPowerPillsCarriedByPlayer() +{ + if (FindPlayerVehicle() != nil) { + FindPlayerVehicle()->m_nPacManPickupsCarried = 0; + FindPlayerVehicle()->m_fMass /= FindPlayerVehicle()->fForceMultiplier; + FindPlayerVehicle()->m_fTurnMass /= FindPlayerVehicle()->fForceMultiplier; + FindPlayerVehicle()->fForceMultiplier = 1.0f; + } +} + STARTPATCHES InjectHook(0x430220, CPickups::Init, PATCH_JUMP); InjectHook(0x4303D0, CPickups::Update, PATCH_JUMP); @@ -1046,4 +1431,21 @@ STARTPATCHES InjectHook(0x433E40, CPickups::Save, PATCH_JUMP); InjectHook(0x433BA0, &CPickup::GiveUsAPickUpObject, PATCH_JUMP); InjectHook(0x430860, &CPickup::Update, PATCH_JUMP); + InjectHook(0x4331B0, &CPacManPickup::Update, PATCH_JUMP); + InjectHook(0x432760, CPacManPickups::Init, PATCH_JUMP); + InjectHook(0x432800, CPacManPickups::Update, PATCH_JUMP); + InjectHook(0x432AE0, CPacManPickups::GeneratePMPickUps, PATCH_JUMP); + InjectHook(0x432D50, CPacManPickups::GeneratePMPickUpsForRace, PATCH_JUMP); + InjectHook(0x432F20, CPacManPickups::GenerateOnePMPickUp, PATCH_JUMP); + InjectHook(0x432F60, CPacManPickups::Render, PATCH_JUMP); + InjectHook(0x433150, CPacManPickups::ClearPMPickUps, PATCH_JUMP); + InjectHook(0x433340, CPacManPickups::StartPacManRace, PATCH_JUMP); + InjectHook(0x433360, CPacManPickups::StartPacManRecord, PATCH_JUMP); + InjectHook(0x4333A0, CPacManPickups::QueryPowerPillsEatenInRace, PATCH_JUMP); + InjectHook(0x4333B0, CPacManPickups::ResetPowerPillsEatenInRace, PATCH_JUMP); + InjectHook(0x4333C0, CPacManPickups::CleanUpPacManStuff, PATCH_JUMP); + InjectHook(0x4333D0, CPacManPickups::StartPacManScramble, PATCH_JUMP); + InjectHook(0x4333F0, CPacManPickups::QueryPowerPillsCarriedByPlayer, PATCH_JUMP); + InjectHook(0x433410, CPacManPickups::ResetPowerPillsCarriedByPlayer, PATCH_JUMP); + ENDPATCHES diff --git a/src/control/Pickups.h b/src/control/Pickups.h index 3e075b24..b5b4f396 100644 --- a/src/control/Pickups.h +++ b/src/control/Pickups.h @@ -102,8 +102,31 @@ extern uint16 AmmoForWeapon[20]; extern uint16 AmmoForWeapon_OnStreet[20]; extern uint16 CostOfWeapon[20]; +enum ePacmanPickupType +{ + PACMAN_NONE, + PACMAN_SCRAMBLE, + PACMAN_RACE, +}; + +class CPacManPickup +{ +public: + CVector m_vecPosn; + CObject *m_pObject; + uint8 m_eType; + + void Update(); +}; + class CPacManPickups { + friend CPacManPickup; + + static CPacManPickup aPMPickUps[NUMPACMANPICKUPS]; + static CVector LastPickUpCoors; + static int PillsEatenInRace; + static bool bPMActive; public: static void Init(void); static void Update(void); @@ -111,11 +134,11 @@ public: static void GeneratePMPickUpsForRace(int32); static void GenerateOnePMPickUp(CVector); static void Render(void); - static void DoCleanUpPacManStuff(void); static void StartPacManRace(int32); static void StartPacManRecord(void); static uint32 QueryPowerPillsEatenInRace(void); static void ResetPowerPillsEatenInRace(void); + static void ClearPMPickUps(void); static void CleanUpPacManStuff(void); static void StartPacManScramble(CVector, float, int16); static uint32 QueryPowerPillsCarriedByPlayer(void); diff --git a/src/core/config.h b/src/core/config.h index 3e3d1a90..f7fde579 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -87,6 +87,7 @@ enum Config { NUMSCRIPTEDPICKUPS = 16, NUMPICKUPS = NUMGENERALPICKUPS + NUMSCRIPTEDPICKUPS, NUMCOLLECTEDPICKUPS = 20, + NUMPACMANPICKUPS = 256, NUMEVENTS = 64, NUM_CARGENS = 160, diff --git a/src/math/Vector.h b/src/math/Vector.h index 6f544ada..1274a4b2 100644 --- a/src/math/Vector.h +++ b/src/math/Vector.h @@ -83,7 +83,7 @@ public: return x == right.x && y == right.y && z == right.z; } - bool IsZero(void) { return x == 0.0f && y == 0.0f && z == 0.0f; } + bool IsZero(void) const { return x == 0.0f && y == 0.0f && z == 0.0f; } }; inline CVector operator+(const CVector &left, const CVector &right) From 68f8a6a9edb0197738f2ae99e42571b28181b2c9 Mon Sep 17 00:00:00 2001 From: saml1er Date: Mon, 13 Apr 2020 15:21:39 +0500 Subject: [PATCH 094/112] more CRoadBlocks::GenerateRoadBlocks improvements --- src/control/RoadBlocks.cpp | 148 +++++++++++++++++++------------------ 1 file changed, 75 insertions(+), 73 deletions(-) diff --git a/src/control/RoadBlocks.cpp b/src/control/RoadBlocks.cpp index 90564e93..65f039ae 100644 --- a/src/control/RoadBlocks.cpp +++ b/src/control/RoadBlocks.cpp @@ -112,84 +112,86 @@ CRoadBlocks::GenerateRoadBlocks(void) numRoadBlocks = maxRoadBlocks; for (; nRoadblockNode < numRoadBlocks; nRoadblockNode++) { CTreadable *mapObject = ThePaths.m_mapObjects[CRoadBlocks::RoadBlockObjects[nRoadblockNode]]; - CVector2D direction = FindPlayerCoors() - mapObject->GetPosition(); - if (!((direction.x > -80.0f && direction.x < 80.0f) && (direction.y > -80.0f && direction.y < 80.0f))) { - CRoadBlocks::InOrOut[nRoadblockNode] = false; - } - else if (direction.Magnitude() >= 80.0f) { - CRoadBlocks::InOrOut[nRoadblockNode] = false; - } - else if (!CRoadBlocks::InOrOut[nRoadblockNode]) { - CRoadBlocks::InOrOut[nRoadblockNode] = true; - if (FindPlayerVehicle() && (CGeneral::GetRandomNumber() & 0x7F) < FindPlayerPed()->m_pWanted->m_RoadblockDensity) { - CWanted *pPlayerWanted = FindPlayerPed()->m_pWanted; - float fMapObjectRadius = 2.0f * mapObject->GetColModel()->boundingBox.max.x; - int32 vehicleId = MI_POLICE; - if (pPlayerWanted->AreArmyRequired()) - vehicleId = MI_BARRACKS; - else if (pPlayerWanted->AreFbiRequired()) - vehicleId = MI_FBICAR; - else if (pPlayerWanted->AreSwatRequired()) - vehicleId = MI_ENFORCER; - if (!CStreaming::HasModelLoaded(vehicleId)) - vehicleId = MI_POLICE; - CColModel* pVehicleColModel = CModelInfo::GetModelInfo(vehicleId)->GetColModel(); - float fModelRadius = 2.0f * pVehicleColModel->boundingSphere.radius + 0.25f; - int16 radius = (int16)(fMapObjectRadius / fModelRadius); - if (radius > 0 && radius < 6) { - CVector2D directionToCamera = TheCamera.m_matrix.GetPosition() - mapObject->m_matrix.GetPosition(); - float fDotProduct = DotProduct2D(directionToCamera, mapObject->m_matrix.GetUp()); - float fOffset = 0.5f * fModelRadius * (float)(radius - 1); - for (int16 i = 0; i < radius; i++) { - uint8 nRoadblockType = fDotProduct < 0.0f; - if (CGeneral::GetRandomNumber() & 1) { - offsetMatrix.SetRotateZ(((CGeneral::GetRandomNumber() & 0xFF) - 128.0f) * 0.003f + HALFPI); - } else { - nRoadblockType = !nRoadblockType; - offsetMatrix.SetRotateZ(((CGeneral::GetRandomNumber() & 0xFF) - 128.0f) * 0.003f - HALFPI); - } - if (ThePaths.m_objectFlags[CRoadBlocks::RoadBlockObjects[nRoadblockNode]] & ObjectEastWest) - offsetMatrix.GetPosition() = CVector(0.0f, -fOffset, 0.6f); - else - offsetMatrix.GetPosition() = CVector(-fOffset, 0.0f, 0.6f); - CMatrix vehicleMatrix = mapObject->m_matrix * offsetMatrix; - float fModelRadius = CModelInfo::GetModelInfo(vehicleId)->GetColModel()->boundingSphere.radius - 0.25f; - int16 colliding = 0; - CWorld::FindObjectsKindaColliding(vehicleMatrix.GetPosition(), fModelRadius, 0, &colliding, 2, nil, false, true, true, false, false); - if (!colliding) { - CAutomobile* pVehicle = new CAutomobile(vehicleId, RANDOM_VEHICLE); - pVehicle->m_status = STATUS_ABANDONED; - // pVehicle->GetHeightAboveRoad(); // called but return value is ignored? - vehicleMatrix.GetPosition().z += fModelRadius - 0.6f; - pVehicle->m_matrix = vehicleMatrix; - pVehicle->PlaceOnRoadProperly(); - pVehicle->bIsStatic = false; - pVehicle->m_matrix.UpdateRW(); - pVehicle->m_nDoorLock = CARLOCK_UNLOCKED; - CCarCtrl::JoinCarWithRoadSystem(pVehicle); - pVehicle->bIsLocked = false; - pVehicle->AutoPilot.m_nCarMission = MISSION_NONE; - pVehicle->AutoPilot.m_nTempAction = TEMPACT_NONE; - pVehicle->AutoPilot.m_nCurrentLane = 0; - pVehicle->AutoPilot.m_nNextLane = 0; - pVehicle->AutoPilot.m_fMaxTrafficSpeed = 0.0f; - pVehicle->AutoPilot.m_nCruiseSpeed = 0.0f; - pVehicle->bExtendedRange = true; - if (pVehicle->UsesSiren(pVehicle->GetModelIndex()) && CGeneral::GetRandomNumber() & 1) - pVehicle->m_bSirenOrAlarm = true; - if (pVehicle->m_matrix.GetForward().z > 0.94f) { - CVisibilityPlugins::SetClumpAlpha(pVehicle->GetClump(), 0); - CWorld::Add(pVehicle); - pVehicle->bCreateRoadBlockPeds = true; - pVehicle->m_nRoadblockType = nRoadblockType; - pVehicle->m_nRoadblockNode = nRoadblockNode; - } else { - delete pVehicle; + CVector2D vecDistance = FindPlayerCoors() - mapObject->GetPosition(); + if (vecDistance.x > -80.0f && vecDistance.x < 80.0f && + vecDistance.y > -80.0f && vecDistance.y < 80.0f && + vecDistance.Magnitude() < 80.0f) { + if (!CRoadBlocks::InOrOut[nRoadblockNode]) { + CRoadBlocks::InOrOut[nRoadblockNode] = true; + if (FindPlayerVehicle() && (CGeneral::GetRandomNumber() & 0x7F) < FindPlayerPed()->m_pWanted->m_RoadblockDensity) { + CWanted *pPlayerWanted = FindPlayerPed()->m_pWanted; + float fMapObjectRadius = 2.0f * mapObject->GetColModel()->boundingBox.max.x; + int32 vehicleId = MI_POLICE; + if (pPlayerWanted->AreArmyRequired()) + vehicleId = MI_BARRACKS; + else if (pPlayerWanted->AreFbiRequired()) + vehicleId = MI_FBICAR; + else if (pPlayerWanted->AreSwatRequired()) + vehicleId = MI_ENFORCER; + if (!CStreaming::HasModelLoaded(vehicleId)) + vehicleId = MI_POLICE; + CColModel *pVehicleColModel = CModelInfo::GetModelInfo(vehicleId)->GetColModel(); + float fModelRadius = 2.0f * pVehicleColModel->boundingSphere.radius + 0.25f; + int16 radius = (int16)(fMapObjectRadius / fModelRadius); + if (radius > 0 && radius < 6) { + CVector2D vecDistanceToCamera = TheCamera.GetPosition() - mapObject->m_matrix.GetPosition(); + float fDotProduct = DotProduct2D(vecDistanceToCamera, mapObject->m_matrix.GetUp()); + float fOffset = 0.5f * fModelRadius * (float)(radius - 1); + for (int16 i = 0; i < radius; i++) { + uint8 nRoadblockType = fDotProduct < 0.0f; + if (CGeneral::GetRandomNumber() & 1) { + offsetMatrix.SetRotateZ(((CGeneral::GetRandomNumber() & 0xFF) - 128.0f) * 0.003f + HALFPI); + } + else { + nRoadblockType = !nRoadblockType; + offsetMatrix.SetRotateZ(((CGeneral::GetRandomNumber() & 0xFF) - 128.0f) * 0.003f - HALFPI); + } + if (ThePaths.m_objectFlags[CRoadBlocks::RoadBlockObjects[nRoadblockNode]] & ObjectEastWest) + offsetMatrix.GetPosition() = CVector(0.0f, -fOffset, 0.6f); + else + offsetMatrix.GetPosition() = CVector(-fOffset, 0.0f, 0.6f); + CMatrix vehicleMatrix = mapObject->m_matrix * offsetMatrix; + float fModelRadius = CModelInfo::GetModelInfo(vehicleId)->GetColModel()->boundingSphere.radius - 0.25f; + int16 colliding = 0; + CWorld::FindObjectsKindaColliding(vehicleMatrix.GetPosition(), fModelRadius, 0, &colliding, 2, nil, false, true, true, false, false); + if (!colliding) { + CAutomobile *pVehicle = new CAutomobile(vehicleId, RANDOM_VEHICLE); + pVehicle->m_status = STATUS_ABANDONED; + // pVehicle->GetHeightAboveRoad(); // called but return value is ignored? + vehicleMatrix.GetPosition().z += fModelRadius - 0.6f; + pVehicle->m_matrix = vehicleMatrix; + pVehicle->PlaceOnRoadProperly(); + pVehicle->bIsStatic = false; + pVehicle->m_matrix.UpdateRW(); + pVehicle->m_nDoorLock = CARLOCK_UNLOCKED; + CCarCtrl::JoinCarWithRoadSystem(pVehicle); + pVehicle->bIsLocked = false; + pVehicle->AutoPilot.m_nCarMission = MISSION_NONE; + pVehicle->AutoPilot.m_nTempAction = TEMPACT_NONE; + pVehicle->AutoPilot.m_nCurrentLane = 0; + pVehicle->AutoPilot.m_nNextLane = 0; + pVehicle->AutoPilot.m_fMaxTrafficSpeed = 0.0f; + pVehicle->AutoPilot.m_nCruiseSpeed = 0.0f; + pVehicle->bExtendedRange = true; + if (pVehicle->UsesSiren(pVehicle->GetModelIndex()) && CGeneral::GetRandomNumber() & 1) + pVehicle->m_bSirenOrAlarm = true; + if (pVehicle->m_matrix.GetForward().z > 0.94f) { + CVisibilityPlugins::SetClumpAlpha(pVehicle->GetClump(), 0); + CWorld::Add(pVehicle); + pVehicle->bCreateRoadBlockPeds = true; + pVehicle->m_nRoadblockType = nRoadblockType; + pVehicle->m_nRoadblockNode = nRoadblockNode; + } + else { + delete pVehicle; + } } } } } } + } else { + CRoadBlocks::InOrOut[nRoadblockNode] = false; } } } From d8be75ac46cf9e0e1056e94973cdf1c328bbf52e Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 13 Apr 2020 15:21:26 +0300 Subject: [PATCH 095/112] Fix compilation error --- src/control/Pickups.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index 4b98bcbc..80e89ee8 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -1012,7 +1012,7 @@ CPacManPickup::Update() float massMult = (veh->m_fMass + 250.0f) / veh->m_fMass; veh->m_fMass *= massMult; veh->m_fTurnMass *= massMult; - veh->fForceMultiplier *= massMult; + veh->m_fForceMultiplier *= massMult; FindPlayerPed()->m_pWanted->m_nChaos += 10; FindPlayerPed()->m_pWanted->UpdateWantedLevel(); DMAudio.PlayFrontEndSound(SOUND_PICKUP_PACMAN_PACKAGE, 0); @@ -1059,9 +1059,9 @@ CPacManPickups::Update() if (dist < 10.0f) { ThingsToCollect -= FindPlayerVehicle()->m_nPacManPickupsCarried; FindPlayerVehicle()->m_nPacManPickupsCarried = 0; - FindPlayerVehicle()->m_fMass /= FindPlayerVehicle()->fForceMultiplier; - FindPlayerVehicle()->m_fTurnMass /= FindPlayerVehicle()->fForceMultiplier; - FindPlayerVehicle()->fForceMultiplier = 1.0f; + FindPlayerVehicle()->m_fMass /= FindPlayerVehicle()->m_fForceMultiplier; + FindPlayerVehicle()->m_fTurnMass /= FindPlayerVehicle()->m_fForceMultiplier; + FindPlayerVehicle()->m_fForceMultiplier = 1.0f; } if (ThingsToCollect <= 0) { CollectGameState = 2; @@ -1400,9 +1400,9 @@ CPacManPickups::ResetPowerPillsCarriedByPlayer() { if (FindPlayerVehicle() != nil) { FindPlayerVehicle()->m_nPacManPickupsCarried = 0; - FindPlayerVehicle()->m_fMass /= FindPlayerVehicle()->fForceMultiplier; - FindPlayerVehicle()->m_fTurnMass /= FindPlayerVehicle()->fForceMultiplier; - FindPlayerVehicle()->fForceMultiplier = 1.0f; + FindPlayerVehicle()->m_fMass /= FindPlayerVehicle()->m_fForceMultiplier; + FindPlayerVehicle()->m_fTurnMass /= FindPlayerVehicle()->m_fForceMultiplier; + FindPlayerVehicle()->m_fForceMultiplier = 1.0f; } } From a19d5dbee146bef01ed44058d0498bce63b48279 Mon Sep 17 00:00:00 2001 From: Wes Hampson Date: Mon, 13 Apr 2020 11:20:57 -0700 Subject: [PATCH 096/112] Fixes --- src/core/Timer.h | 3 + src/save/GenericGameStorage.cpp | 104 ++++++++++++++++++-------------- 2 files changed, 63 insertions(+), 44 deletions(-) diff --git a/src/core/Timer.h b/src/core/Timer.h index b119bfb2..a4d674da 100644 --- a/src/core/Timer.h +++ b/src/core/Timer.h @@ -53,6 +53,9 @@ public: static void Stop(void); static void StartUserPause(void); static void EndUserPause(void); + + friend bool GenericLoad(void); + friend bool GenericSave(int file); }; #ifdef FIX_BUGS diff --git a/src/save/GenericGameStorage.cpp b/src/save/GenericGameStorage.cpp index eb9092c3..4cfa75b3 100644 --- a/src/save/GenericGameStorage.cpp +++ b/src/save/GenericGameStorage.cpp @@ -22,6 +22,7 @@ #include "Phones.h" #include "Pickups.h" #include "PlayerPed.h" +#include "ProjectileInfo.h" #include "Pools.h" #include "Radar.h" #include "Restart.h" @@ -59,7 +60,7 @@ uint32 &TimeToStayFadedBeforeFadeOut = *(uint32*)0x611564; #define ReadDataFromBufferPointer(buf, to) memcpy(&to, buf, sizeof(to)); buf += align4bytes(sizeof(to)); #define WriteDataToBufferPointer(buf, from) memcpy(buf, &from, sizeof(from)); buf += align4bytes(sizeof(from)); -#define LoadSaveDataBlock(msg,load_func)\ +#define LoadSaveDataBlock()\ do {\ if (!ReadDataFromFile(file, (uint8 *) &size, 4))\ return false;\ @@ -67,7 +68,11 @@ do {\ if (!ReadDataFromFile(file, work_buff, size))\ return false;\ buf = work_buff;\ - printf(msg);\ +} while (0) + +#define ReadDataFromBlock(msg,load_func)\ +do {\ + debug(msg);\ ReadDataFromBufferPointer(buf, size);\ load_func(buf, size);\ size = align4bytes(size);\ @@ -130,11 +135,11 @@ GenericSave(int file) WriteDataToBufferPointer(buf, CClock::ms_nGameClockMinutes); currPad = CPad::GetPad(0); WriteDataToBufferPointer(buf, currPad->Mode); - WriteDataToBufferPointer(buf, CTimer::GetTimeInMilliseconds()); - WriteDataToBufferPointer(buf, CTimer::GetTimeScale()); - WriteDataToBufferPointer(buf, CTimer::GetTimeStep()); - WriteDataToBufferPointer(buf, CTimer::GetTimeStepNonClipped()); - WriteDataToBufferPointer(buf, CTimer::GetFrameCounter()); + WriteDataToBufferPointer(buf, CTimer::m_snTimeInMilliseconds); + WriteDataToBufferPointer(buf, CTimer::ms_fTimeScale); + WriteDataToBufferPointer(buf, CTimer::ms_fTimeStep); + WriteDataToBufferPointer(buf, CTimer::ms_fTimeStepNonClipped); + WriteDataToBufferPointer(buf, CTimer::m_FrameCounter); WriteDataToBufferPointer(buf, CTimeStep::ms_fTimeStep); WriteDataToBufferPointer(buf, CTimeStep::ms_fFramesPerUpdate); WriteDataToBufferPointer(buf, CTimeStep::ms_fTimeScale); @@ -220,12 +225,6 @@ GenericLoad() int32 saveSize; CPad *currPad; - uint32 timeInMilliseconds; - float timeScale; - float timeStep; - float timeStepNonClipped; - uint32 frameCounter; - // Load SimpleVars and Scripts CheckSum = 0; CDate(CompileDateAndTime); @@ -246,11 +245,11 @@ GenericLoad() ReadDataFromBufferPointer(buf, CClock::ms_nGameClockMinutes); currPad = CPad::GetPad(0); ReadDataFromBufferPointer(buf, currPad->Mode); - ReadDataFromBufferPointer(buf, timeInMilliseconds); CTimer::SetTimeInMilliseconds(timeInMilliseconds); - ReadDataFromBufferPointer(buf, timeScale); CTimer::SetTimeScale(timeScale); - ReadDataFromBufferPointer(buf, timeStep); CTimer::SetTimeStep(timeStep); - ReadDataFromBufferPointer(buf, timeStepNonClipped); CTimer::SetTimeInMillisecondsNonClipped(timeStepNonClipped); - ReadDataFromBufferPointer(buf, frameCounter); CTimer::SetFrameCounter(frameCounter); + ReadDataFromBufferPointer(buf, CTimer::m_snTimeInMilliseconds); + ReadDataFromBufferPointer(buf, CTimer::ms_fTimeScale); + ReadDataFromBufferPointer(buf, CTimer::ms_fTimeStep); + ReadDataFromBufferPointer(buf, CTimer::ms_fTimeStepNonClipped); + ReadDataFromBufferPointer(buf, CTimer::m_FrameCounter); ReadDataFromBufferPointer(buf, CTimeStep::ms_fTimeStep); ReadDataFromBufferPointer(buf, CTimeStep::ms_fFramesPerUpdate); ReadDataFromBufferPointer(buf, CTimeStep::ms_fTimeScale); @@ -268,33 +267,50 @@ GenericLoad() ReadDataFromBufferPointer(buf, TheCamera.CarZoomIndicator); ReadDataFromBufferPointer(buf, TheCamera.PedZoomIndicator); assert(buf - work_buff == SIZE_OF_SIMPLEVARS); - printf("Loading Scripts \n"); - ReadDataFromBufferPointer(buf, size); - CTheScripts::LoadAllScripts(buf, size); - size = align4bytes(size); - buf += size; + ReadDataFromBlock("Loading Scripts \n", CTheScripts::LoadAllScripts); // Load the rest - LoadSaveDataBlock("Loading PedPool \n", CPools::LoadPedPool); - LoadSaveDataBlock("Loading Garages \n", CGarages::Load); - LoadSaveDataBlock("Loading Vehicles \n", CPools::LoadVehiclePool); - LoadSaveDataBlock("Loading Objects \n", CPools::LoadObjectPool); - LoadSaveDataBlock("Loading Paths \n", ThePaths.Load); - LoadSaveDataBlock("Loading Cranes \n", CranesLoad); - LoadSaveDataBlock("Loading Pickups \n", CPickups::Load); - LoadSaveDataBlock("Loading Phoneinfo \n", gPhoneInfo.Load); - LoadSaveDataBlock("Loading Restart \n", CRestart::LoadAllRestartPoints); - LoadSaveDataBlock("Loading Radar Blips \n", CRadar::LoadAllRadarBlips); - LoadSaveDataBlock("Loading Zones \n", CTheZones::LoadAllZones); - LoadSaveDataBlock("Loading Gang Data \n", CGangs::LoadAllGangData); - LoadSaveDataBlock("Loading Car Generators \n", CTheCarGenerators::LoadAllCarGenerators); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading PedPool \n", CPools::LoadPedPool); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Garages \n", CGarages::Load); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Vehicles \n", CPools::LoadVehiclePool); + LoadSaveDataBlock(); + CProjectileInfo::RemoveAllProjectiles(); + CObject::DeleteAllTempObjects(); + ReadDataFromBlock("Loading Objects \n", CPools::LoadObjectPool); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Paths \n", ThePaths.Load); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Cranes \n", CranesLoad); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Pickups \n", CPickups::Load); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Phoneinfo \n", gPhoneInfo.Load); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Restart \n", CRestart::LoadAllRestartPoints); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Radar Blips \n", CRadar::LoadAllRadarBlips); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Zones \n", CTheZones::LoadAllZones); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Gang Data \n", CGangs::LoadAllGangData); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Car Generators \n", CTheCarGenerators::LoadAllCarGenerators); CParticle::ReloadConfig(); - LoadSaveDataBlock("Loading Particles \n", CParticleObject::LoadParticle); - LoadSaveDataBlock("Loading AudioScript Objects \n", cAudioScriptObject::LoadAllAudioScriptObjects); - LoadSaveDataBlock("Loading Player Info \n", CWorld::Players[CWorld::PlayerInFocus].LoadPlayerInfo); - LoadSaveDataBlock("Loading Stats \n", CStats::LoadStats); - LoadSaveDataBlock("Loading Streaming Stuff \n", CStreaming::MemoryCardLoad); - LoadSaveDataBlock("Loading PedType Stuff \n", CPedType::Load); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Particles \n", CParticleObject::LoadParticle); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading AudioScript Objects \n", cAudioScriptObject::LoadAllAudioScriptObjects); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Player Info \n", CWorld::Players[CWorld::PlayerInFocus].LoadPlayerInfo); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Stats \n", CStats::LoadStats); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading Streaming Stuff \n", CStreaming::MemoryCardLoad); + LoadSaveDataBlock(); + ReadDataFromBlock("Loading PedType Stuff \n", CPedType::Load); DMAudio.SetMusicMasterVolume(CMenuManager::m_PrefsMusicVolume); DMAudio.SetEffectsMasterVolume(CMenuManager::m_PrefsSfxVolume); @@ -302,9 +318,9 @@ GenericLoad() PcSaveHelper.nErrorCode = SAVESTATUS_ERR_LOAD_CLOSE; return false; } - DoGameSpecificStuffAfterSucessLoad(); - printf("Game successfully loaded \n"); + DoGameSpecificStuffAfterSucessLoad(); + debug("Game successfully loaded \n"); return true; } From 3b9f1255af9b0a7ef8fe93f73878aade48ce02d8 Mon Sep 17 00:00:00 2001 From: Filip Gawin Date: Mon, 13 Apr 2020 03:19:20 +0200 Subject: [PATCH 097/112] Finish audio code --- src/audio/AudioManager.cpp | 4248 +++++++++++++++++++++++------------- src/audio/AudioManager.h | 346 +-- 2 files changed, 2960 insertions(+), 1634 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 2453e066..f015000a 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -1,8 +1,7 @@ -#include "common.h" +#include "common.h" #include "patcher.h" -#include "General.h" -#include "audio_enums.h" +#include "audio_enums.h" #include "AudioManager.h" #include "Automobile.h" @@ -13,14 +12,15 @@ #include "DMAudio.h" #include "Entity.h" #include "Explosion.h" +#include "Fire.h" #include "Garages.h" +#include "General.h" #include "HandlingMgr.h" #include "Heli.h" #include "ModelIndices.h" #include "MusicManager.h" #include "Pad.h" #include "Ped.h" -#include "Fire.h" #include "Physical.h" #include "Placeable.h" #include "Plane.h" @@ -40,19 +40,18 @@ #include "sampman.h" cAudioManager &AudioManager = *(cAudioManager *)0x880FC0; -uint32 &gPornNextTime = *(uint32*)0x6508A0; -uint32 &gSawMillNextTime = *(uint32*)0x6508A4; -uint32 &gShopNextTime = *(uint32*)0x6508A8; -uint32 &gAirportNextTime = *(uint32*)0x6508AC; -uint32 &gCinemaNextTime = *(uint32*)0x6508B0; -uint32 &gDocksNextTime = *(uint32*)0x6508B4; -uint32 &gHomeNextTime = *(uint32*)0x6508B8; -uint32 &gCellNextTime = *(uint32*)0x6508BC; -uint32 &gNextCryTime = *(uint32*)0x6508C0; -uint8 &jumboVolOffset = *(uint8 *)0x6508ED; -uint8 &gJumboVolOffsetPercentage = *(uint8 *)0x6508ED; -bool &bPlayerJustEnteredCar = *(bool *)0x6508C4; -bool &g_bMissionAudioLoadFailed = *(bool *)0x95CD8E; +uint32 gPornNextTime; // = *(uint32*)0x6508A0; +uint32 gSawMillNextTime; // = *(uint32*)0x6508A4; +uint32 gShopNextTime; // = *(uint32*)0x6508A8; +uint32 gAirportNextTime; // = *(uint32*)0x6508AC; +uint32 gCinemaNextTime; //= *(uint32*)0x6508B0; +uint32 gDocksNextTime; // = *(uint32*)0x6508B4; +uint32 gHomeNextTime; // = *(uint32*)0x6508B8; +uint32 gCellNextTime; // = *(uint32*)0x6508BC; +uint32 gNextCryTime; // = *(uint32*)0x6508C0; +uint8 gJumboVolOffsetPercentage; // = *(uint8 *)0x6508ED; +bool bPlayerJustEnteredCar; // = *(bool *)0x6508C4; +bool g_bMissionAudioLoadFailed; // = *(bool *)0x95CD8E; const int channels = ARRAY_SIZE(cAudioManager::m_asActiveSamples); const int policeChannel = channels + 1; @@ -70,39 +69,46 @@ const int rainOnVehicleIntensity = 22; const int reverseGearIntensity = 30; const int engineDamageIntensity = 40; - const bool hornPatternsArray[8][44] = { - {false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, - true, true, false, false, false, false, false, false, true, true, true, true, true, true, true, - true, true, true, true, true, true, true, true, true, true, false, false, false, false}, + {false, false, true, true, true, true, true, true, true, true, true, + true, true, true, true, true, true, false, false, false, false, false, + false, true, true, true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, false, false, false, false}, {false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false}, - {false, false, true, true, true, true, true, true, true, true, true, true, false, false, false, - false, true, true, true, true, true, false, false, false, true, true, true, true, true, true, - true, true, true, true, true, true, true, true, true, true, true, true, true, false}, - {false, false, true, true, true, true, true, false, false, true, true, true, true, true, false, - false, false, true, true, true, true, true, true, true, true, true, true, false, false, false, - true, true, true, true, true, true, true, true, true, true, true, true, true, false}, - {false, false, true, true, true, true, true, true, true, true, true, false, false, false, false, - false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, - false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, true, true, true, false, false, false, true, true, true, false, false, false, false, - false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, - false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, true, true, true, true, false, false, false, false, true, true, true, false, false, - true, true, true, false, false, true, true, true, true, true, true, false, false, false, false, - false, true, true, true, true, true, true, true, true, true, true, true, false, false}, - {false, false, true, true, true, true, false, false, true, true, true, true, true, false, false, - false, true, true, true, true, true, true, false, false, false, false, true, true, true, true, - true, true, true, true, true, true, true, true, true, false, false, false, false, false}, + {false, false, true, true, true, true, true, true, true, true, true, + true, false, false, false, false, true, true, true, true, true, false, + false, false, true, true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, true, true, false}, + {false, false, true, true, true, true, true, false, false, true, true, + true, true, true, false, false, false, true, true, true, true, true, + true, true, true, true, true, false, false, false, true, true, true, + true, true, true, true, true, true, true, true, true, true, false}, + {false, false, true, true, true, true, true, true, true, true, true, + false, false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, false}, + {false, false, true, true, true, false, false, false, true, true, true, + false, false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, false}, + {false, false, true, true, true, true, false, false, false, false, true, + true, true, false, false, true, true, true, false, false, true, true, + true, true, true, true, false, false, false, false, false, true, true, + true, true, true, true, true, true, true, true, true, false, false}, + {false, false, true, true, true, true, false, false, true, true, true, + true, true, false, false, false, true, true, true, true, true, true, + false, false, false, false, true, true, true, true, true, true, true, + true, true, true, true, true, true, false, false, false, false, false}, }; const int totalAudioEntitiesSlots = 200; -const uint8 panTable[64]{0, 3, 8, 12, 16, 19, 22, 24, 26, 28, 30, 31, 33, 34, 36, 37, 39, 40, 41, 42, 44, 45, - 46, 47, 48, 49, 49, 50, 51, 52, 53, 53, 54, 55, 55, 56, 56, 57, 57, 58, 58, 58, 59, 59, - 59, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63}; +const uint8 panTable[64]{0, 3, 8, 12, 16, 19, 22, 24, 26, 28, 30, 31, 33, 34, 36, 37, + 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 49, 50, 51, 52, 53, 53, + 54, 55, 55, 56, 56, 57, 57, 58, 58, 58, 59, 59, 59, 60, 60, 61, + 61, 61, 61, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63}; // TODO: where is this used? Is this the right file? enum eVehicleModel { @@ -179,15 +185,12 @@ enum eVehicleModel { }; enum PLAY_STATUS : uint8 { - PLAY_STATUS_STOPPED = 0, - PLAY_STATUS_PLAYING = 1, - PLAY_STATUS_FINISHED = 2 + PLAY_STATUS_STOPPED = 0, + PLAY_STATUS_PLAYING = 1, + PLAY_STATUS_FINISHED = 2 }; -enum LOADING_STATUS : uint8 { - LOADING_STATUS_NOT_LOADED = 0, - LOADING_STATUS_LOADED = 1 -}; +enum LOADING_STATUS : uint8 { LOADING_STATUS_NOT_LOADED = 0, LOADING_STATUS_LOADED = 1 }; void cPedComments::Add(tPedComment *com) @@ -236,11 +239,14 @@ cPedComments::Process() if(!AudioManager.m_bUserPause) { if(m_nCommentsInBank[m_nActiveBank]) { - sampleIndex = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nSampleIndex; - if(!SampleManager.IsPedCommentLoaded(sampleIndex)) SampleManager.LoadPedComment(sampleIndex); + sampleIndex = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]] + .m_nSampleIndex; + if(!SampleManager.IsPedCommentLoaded(sampleIndex)) + SampleManager.LoadPedComment(sampleIndex); AudioManager.m_sQueueSample.m_nEntityIndex = - m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nEntityIndex; + m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]] + .m_nEntityIndex; AudioManager.m_sQueueSample.m_nCounter = 0; AudioManager.m_sQueueSample.m_nSampleIndex = sampleIndex; AudioManager.m_sQueueSample.m_bBankIndex = SAMPLEBANK_PED; @@ -248,7 +254,8 @@ cPedComments::Process() AudioManager.m_sQueueSample.m_bVolume = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_bVolume; AudioManager.m_sQueueSample.m_fDistance = - m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_fDistance; + m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]] + .m_fDistance; AudioManager.m_sQueueSample.m_nLoopCount = 1; AudioManager.m_sQueueSample.m_nLoopStart = 0; AudioManager.m_sQueueSample.m_nLoopEnd = -1; @@ -260,7 +267,9 @@ cPedComments::Process() case SFX_POLICE_HELI_3: AudioManager.m_sQueueSample.m_fSoundIntensity = policeHeliIntensity; break; - default: AudioManager.m_sQueueSample.m_fSoundIntensity = defaultIntensity; break; + default: + AudioManager.m_sQueueSample.m_fSoundIntensity = defaultIntensity; + break; } AudioManager.m_sQueueSample.m_bReleasingSoundFlag = true; AudioManager.m_sQueueSample.m_vecPos = @@ -276,10 +285,13 @@ cPedComments::Process() AudioManager.m_sQueueSample.m_bIs2D = false; AudioManager.m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(AudioManager.m_sQueueSample.m_nSampleIndex) + + SampleManager.GetSampleBaseFrequency( + AudioManager.m_sQueueSample.m_nSampleIndex) + AudioManager.RandomDisplacement(750); - if(CTimer::GetIsSlowMotionActive()) AudioManager.m_sQueueSample.m_nFrequency /= 2; - m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].field_25 = -1; + if(CTimer::GetIsSlowMotionActive()) + AudioManager.m_sQueueSample.m_nFrequency /= 2; + m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nProcess = + -1; AudioManager.AddSampleToRequestedQueue(); } @@ -293,38 +305,78 @@ cPedComments::Process() } comment = m_asPedComments[actualUsedBank]; for(uint32 i = 0; i < m_nCommentsInBank[actualUsedBank]; i++) { - if(m_asPedComments[actualUsedBank][m_nIndexMap[actualUsedBank][i]].field_25 > 0) { - --m_asPedComments[actualUsedBank][m_nIndexMap[actualUsedBank][i]].field_25; + if(m_asPedComments[actualUsedBank][m_nIndexMap[actualUsedBank][i]] + .m_nProcess > 0) { + --m_asPedComments[actualUsedBank][m_nIndexMap[actualUsedBank][i]] + .m_nProcess; Add(&comment[m_nIndexMap[actualUsedBank][i]]); } } - for(uint32 i = 0; i < NUM_PED_COMMENTS_SLOTS; i++) { m_nIndexMap[actualUsedBank][i] = NUM_PED_COMMENTS_SLOTS; } + for(uint32 i = 0; i < NUM_PED_COMMENTS_SLOTS; i++) { + m_nIndexMap[actualUsedBank][i] = NUM_PED_COMMENTS_SLOTS; + } m_nCommentsInBank[actualUsedBank] = 0; } } +cAudioManager::cAudioManager() +{ + m_bIsInitialised = 0; + field_1 = 1; + m_fSpeedOfSound = 6.8600001f; + m_bTimeSpent = 50; + m_bActiveSamples = NUM_SOUNDS_SAMPLES_SLOTS; + m_bActiveSampleQueue = 1; + ClearRequestedQueue(); + m_bActiveSampleQueue = 0; + ClearRequestedQueue(); + ClearActiveSamples(); + GenerateIntegerRandomNumberTable(); + field_4 = 0; + m_bDynamicAcousticModelingStatus = 1; + + for(int i = 0; i < NUM_AUDIOENTITIES; i++) { + m_asAudioEntities[i].m_bIsUsed = false; + m_anAudioEntityIndices[i] = NUM_AUDIOENTITIES; + } + m_nAudioEntitiesTotal = 0; + m_FrameCounter = 0; + m_bFifthFrameFlag = 0; + m_bTimerJustReset = 0; + m_nTimer = 0; +} + +cAudioManager::~cAudioManager() +{ + if(m_bIsInitialised) Terminate(); + m_nScriptObjectEntityTotal = 0; +} + void cAudioManager::AddDetailsToRequestedOrderList(uint8 sample) { uint32 i = 0; if(sample != 0) { for(; i < sample; i++) { - if(m_asSamples[m_bActiveSampleQueue][m_abSampleQueueIndexTable[m_bActiveSampleQueue][i]] - .calculatedVolume > m_asSamples[m_bActiveSampleQueue][sample].calculatedVolume) + if(m_asSamples[m_bActiveSampleQueue] + [m_abSampleQueueIndexTable[m_bActiveSampleQueue][i]] + .m_nCalculatedVolume > + m_asSamples[m_bActiveSampleQueue][sample].m_nCalculatedVolume) break; } if(i < sample) { memmove(&m_abSampleQueueIndexTable[m_bActiveSampleQueue][i + 1], - &m_abSampleQueueIndexTable[m_bActiveSampleQueue][i], m_bActiveSamples - i - 1); + &m_abSampleQueueIndexTable[m_bActiveSampleQueue][i], + m_bActiveSamples - i - 1); } } m_abSampleQueueIndexTable[m_bActiveSampleQueue][i] = sample; } void -cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 unk1, uint8 counter, - bool notLooping) +cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 unk1, + uint8 counter, bool notLooping) { m_sQueueSample.m_bVolume = ComputeVolume(emittingVolume, 50.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { @@ -341,8 +393,10 @@ cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sampl m_sQueueSample.m_nLoopCount = 1; } m_sQueueSample.m_bEmittingVolume = emittingVolume; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -367,12 +421,14 @@ cAudioManager::AddReflectionsToRequestedQueue() if(m_sQueueSample.m_bLoopsRemaining > 5) { m_sQueueSample.m_fDistance = m_afReflectionsDistances[i]; m_sQueueSample.m_bEmittingVolume = emittingVolume; - m_sQueueSample.m_bVolume = ComputeVolume( - emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, + m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume > emittingVolume >> 4) { m_sQueueSample.m_nCounter += ((i + 1) << 8); if(m_sQueueSample.m_nLoopCount) { - noise = RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); + noise = RandomDisplacement( + m_sQueueSample.m_nFrequency >> 5); if(noise <= 0) m_sQueueSample.m_nFrequency += noise; else @@ -396,17 +452,18 @@ cAudioManager::AddReleasingSounds() for(int32 i = 0; i < m_bSampleRequestQueuesStatus[queue]; i++) { tSound &sample = m_asSamples[queue][m_abSampleQueueIndexTable[queue][i]]; - if (sample.m_bLoopEnded) continue; + if(sample.m_bLoopEnded) continue; toProcess[i] = false; for(int32 j = 0; j < m_bSampleRequestQueuesStatus[m_bActiveSampleQueue]; j++) { if(sample.m_nEntityIndex == - m_asSamples[m_bActiveSampleQueue] - [m_abSampleQueueIndexTable[m_bActiveSampleQueue][j]] - .m_nEntityIndex && - sample.m_nCounter == m_asSamples[m_bActiveSampleQueue] - [m_abSampleQueueIndexTable[m_bActiveSampleQueue][j]] - .m_nCounter) { + m_asSamples[m_bActiveSampleQueue] + [m_abSampleQueueIndexTable[m_bActiveSampleQueue][j]] + .m_nEntityIndex && + sample.m_nCounter == + m_asSamples[m_bActiveSampleQueue] + [m_abSampleQueueIndexTable[m_bActiveSampleQueue][j]] + .m_nCounter) { toProcess[i] = true; break; } @@ -416,8 +473,11 @@ cAudioManager::AddReleasingSounds() if(!sample.m_nReleasingVolumeDivider) continue; if(!sample.m_nLoopCount) { if(sample.m_nVolumeChange == -1) { - sample.m_nVolumeChange = sample.m_bVolume / sample.m_nReleasingVolumeDivider; - if(sample.m_nVolumeChange <= 0) sample.m_nVolumeChange = 1; + sample.m_nVolumeChange = + sample.m_bVolume / + sample.m_nReleasingVolumeDivider; + if(sample.m_nVolumeChange <= 0) + sample.m_nVolumeChange = 1; } if(sample.m_bVolume <= sample.m_nVolumeChange) { sample.m_nReleasingVolumeDivider = 0; @@ -446,15 +506,19 @@ cAudioManager::AddSampleToRequestedQueue() bool bReflections; if(m_sQueueSample.m_nSampleIndex < TOTAL_AUDIO_SAMPLES) { - calculatedVolume = m_sQueueSample.m_nReleasingVolumeModificator * (maxVolume - m_sQueueSample.m_bVolume); + calculatedVolume = m_sQueueSample.m_nReleasingVolumeModificator * + (maxVolume - m_sQueueSample.m_bVolume); sampleIndex = m_bSampleRequestQueuesStatus[m_bActiveSampleQueue]; if(sampleIndex >= m_bActiveSamples) { - sampleIndex = m_abSampleQueueIndexTable[m_bActiveSampleQueue][m_bActiveSamples - 1]; - if(m_asSamples[m_bActiveSampleQueue][sampleIndex].calculatedVolume <= calculatedVolume) return; + sampleIndex = + m_abSampleQueueIndexTable[m_bActiveSampleQueue][m_bActiveSamples - 1]; + if(m_asSamples[m_bActiveSampleQueue][sampleIndex].m_nCalculatedVolume <= + calculatedVolume) + return; } else { ++m_bSampleRequestQueuesStatus[m_bActiveSampleQueue]; } - m_sQueueSample.calculatedVolume = calculatedVolume; + m_sQueueSample.m_nCalculatedVolume = calculatedVolume; m_sQueueSample.m_bLoopEnded = false; if(m_sQueueSample.m_bIs2D) { m_sQueueSample.m_bRequireReflection = false; @@ -515,7 +579,7 @@ cAudioManager::ClearActiveSamples() m_asActiveSamples[i].m_fSoundIntensity = 200.0f; m_asActiveSamples[i].m_bOffset = 63; m_asActiveSamples[i].m_bReleasingSoundFlag = 0; - m_asActiveSamples[i].calculatedVolume = 0; + m_asActiveSamples[i].m_nCalculatedVolume = 0; m_asActiveSamples[i].m_nReleasingVolumeDivider = 0; m_asActiveSamples[i].m_nVolumeChange = -1; m_asActiveSamples[i].m_vecPos = {0.0f, 0.0f, 0.0f}; @@ -563,7 +627,8 @@ cAudioManager::ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, } else { speedOfSource = min(speedOfSource, 1.5f); } - newFreq = (oldFreq * m_fSpeedOfSound) / (speedOfSource + m_fSpeedOfSound); + newFreq = + (oldFreq * m_fSpeedOfSound) / (speedOfSource + m_fSpeedOfSound); } } } @@ -587,7 +652,9 @@ cAudioManager::ComputeVolume(uint8 emittingVolume, float soundIntensity, float d if((soundIntensity * 0.2f) <= distance) { newSoundIntensity = soundIntensity * 0.2f; emittingVolume = - sq((soundIntensity - newSoundIntensity - (distance - newSoundIntensity)) / (soundIntensity - newSoundIntensity)) * emittingVolume; + sq((soundIntensity - newSoundIntensity - (distance - newSoundIntensity)) / + (soundIntensity - newSoundIntensity)) * + emittingVolume; } return emittingVolume; } @@ -632,7 +699,8 @@ cAudioManager::DestroyAllGameCreatedEntities() case AUDIOTYPE_GARAGE: case AUDIOTYPE_FIREHYDRANT: DestroyEntity(i); break; case AUDIOTYPE_SCRIPTOBJECT: - entity = (cAudioScriptObject *)m_asAudioEntities[i].m_pEntity; + entity = + (cAudioScriptObject *)m_asAudioEntities[i].m_pEntity; if(entity) { delete entity; m_asAudioEntities[i].m_pEntity = nil; @@ -650,14 +718,18 @@ cAudioManager::DestroyAllGameCreatedEntities() void cAudioManager::DestroyEntity(int32 id) { - if(m_bIsInitialised && id >= 0 && id < totalAudioEntitiesSlots && m_asAudioEntities[id].m_bIsUsed) { + if(m_bIsInitialised && id >= 0 && id < totalAudioEntitiesSlots && + m_asAudioEntities[id].m_bIsUsed) { m_asAudioEntities[id].m_bIsUsed = false; for(int32 i = 0; i < m_nAudioEntitiesTotal; ++i) { if(id == m_anAudioEntityIndices[i]) { if(i < totalAudioEntitiesSlots - 1) - memmove(&m_anAudioEntityIndices[i], &m_anAudioEntityIndices[i + 1], - NUM_AUDIOENTITY_EVENTS * (m_nAudioEntitiesTotal - (i + 1))); - m_anAudioEntityIndices[--m_nAudioEntitiesTotal] = totalAudioEntitiesSlots; + memmove(&m_anAudioEntityIndices[i], + &m_anAudioEntityIndices[i + 1], + NUM_AUDIOENTITY_EVENTS * + (m_nAudioEntitiesTotal - (i + 1))); + m_anAudioEntityIndices[--m_nAudioEntitiesTotal] = + totalAudioEntitiesSlots; return; } } @@ -667,7 +739,8 @@ cAudioManager::DestroyEntity(int32 id) void cAudioManager::DoJumboVolOffset() const { - if(!(m_FrameCounter % (m_anRandomTable[0] % 6 + 3))) jumboVolOffset = m_anRandomTable[1] % 60; + if(!(m_FrameCounter % (m_anRandomTable[0] % 6 + 3))) + gJumboVolOffsetPercentage = m_anRandomTable[1] % 60; } uint32 @@ -698,11 +771,14 @@ cAudioManager::GetCopTalkSfx(int16 sound) if(sound != SOUND_PED_PURSUIT_COP) { return GetGenericMaleTalkSfx(sound); } pedState = FindPlayerPed()->m_nPedState; - if(pedState == PED_ARRESTED || pedState == PED_DEAD || pedState == PED_DIE) return NO_SAMPLE; + if(pedState == PED_ARRESTED || pedState == PED_DEAD || pedState == PED_DIE) + return NO_SAMPLE; GetPhrase(&sfx, &lastSfx, SFX_COP_VOICE_1_CHASE_1, 7); } - return (SFX_COP_VOICE_2_ARREST_1 - SFX_COP_VOICE_1_ARREST_1) * (m_sQueueSample.m_nEntityIndex % 5) + sfx; + return (SFX_COP_VOICE_2_ARREST_1 - SFX_COP_VOICE_1_ARREST_1) * + (m_sQueueSample.m_nEntityIndex % 5) + + sfx; } uint32 @@ -718,11 +794,14 @@ cAudioManager::GetSwatTalkSfx(int16 sound) if(sound != SOUND_PED_PURSUIT_SWAT) { return GetGenericMaleTalkSfx(sound); } pedState = FindPlayerPed()->m_nPedState; - if(pedState == PED_ARRESTED || pedState == PED_DEAD || pedState == PED_DIE) return NO_SAMPLE; + if(pedState == PED_ARRESTED || pedState == PED_DEAD || pedState == PED_DIE) + return NO_SAMPLE; GetPhrase(&sfx, &lastSfx, SFX_SWAT_VOICE_1_CHASE_1, 6); } - return (SFX_SWAT_VOICE_2_CHASE_1 - SFX_SWAT_VOICE_1_CHASE_1) * (m_sQueueSample.m_nEntityIndex % 4) + sfx; + return (SFX_SWAT_VOICE_2_CHASE_1 - SFX_SWAT_VOICE_1_CHASE_1) * + (m_sQueueSample.m_nEntityIndex % 4) + + sfx; } uint32 @@ -738,11 +817,14 @@ cAudioManager::GetFBITalkSfx(int16 sound) if(sound != SOUND_PED_PURSUIT_FBI) { return GetGenericMaleTalkSfx(sound); } pedState = FindPlayerPed()->m_nPedState; - if(pedState == PED_ARRESTED || pedState == PED_DEAD || pedState == PED_DIE) return NO_SAMPLE; + if(pedState == PED_ARRESTED || pedState == PED_DEAD || pedState == PED_DIE) + return NO_SAMPLE; GetPhrase(&sfx, &lastSfx, SFX_FBI_VOICE_1_CHASE_1, 6); } - return (SFX_FBI_VOICE_2_CHASE_1 - SFX_FBI_VOICE_1_CHASE_1) * (m_sQueueSample.m_nEntityIndex % 3) + sfx; + return (SFX_FBI_VOICE_2_CHASE_1 - SFX_FBI_VOICE_1_CHASE_1) * + (m_sQueueSample.m_nEntityIndex % 3) + + sfx; } uint32 @@ -755,10 +837,13 @@ cAudioManager::GetArmyTalkSfx(int16 sound) if(sound != SOUND_PED_PURSUIT_ARMY) { return GetGenericMaleTalkSfx(sound); } pedState = FindPlayerPed()->m_nPedState; - if(pedState == PED_ARRESTED || pedState == PED_DEAD || pedState == PED_DIE) return NO_SAMPLE; + if(pedState == PED_ARRESTED || pedState == PED_DEAD || pedState == PED_DIE) + return NO_SAMPLE; GetPhrase(&sfx, &lastSfx, SFX_ARMY_VOICE_1_CHASE_1, 15); - return (SFX_ARMY_VOICE_2_CHASE_1 - SFX_ARMY_VOICE_1_CHASE_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; + return (SFX_ARMY_VOICE_2_CHASE_1 - SFX_ARMY_VOICE_1_CHASE_1) * + (m_sQueueSample.m_nEntityIndex % 2) + + sfx; } uint32 @@ -768,14 +853,24 @@ cAudioManager::GetMedicTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_MEDIC_VOICE_1_GUN_PANIC_1, 5); break; - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_MEDIC_VOICE_1_CARJACKED_1, 5); break; + case SOUND_PED_HANDS_COWER: + GetPhrase(&sfx, &lastSfx, SFX_MEDIC_VOICE_1_GUN_PANIC_1, 5); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_MEDIC_VOICE_1_CARJACKED_1, 5); + break; case SOUND_PED_HEALING: GetPhrase(&sfx, &lastSfx, SFX_MEDIC_VOICE_1_AT_VICTIM_1, 12); break; - case SOUND_PED_LEAVE_VEHICLE: GetPhrase(&sfx, &lastSfx, SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_1, 9); break; - case SOUND_PED_FLEE_RUN: GetPhrase(&sfx, &lastSfx, SFX_MEDIC_VOICE_1_RUN_FROM_FIGHT_1, 6); break; + case SOUND_PED_LEAVE_VEHICLE: + GetPhrase(&sfx, &lastSfx, SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_1, 9); + break; + case SOUND_PED_FLEE_RUN: + GetPhrase(&sfx, &lastSfx, SFX_MEDIC_VOICE_1_RUN_FROM_FIGHT_1, 6); + break; default: return GetGenericMaleTalkSfx(sound); } - return (SFX_MEDIC_VOICE_2_GUN_PANIC_1 - SFX_MEDIC_VOICE_1_GUN_PANIC_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; + return (SFX_MEDIC_VOICE_2_GUN_PANIC_1 - SFX_MEDIC_VOICE_1_GUN_PANIC_1) * + (m_sQueueSample.m_nEntityIndex % 2) + + sfx; } uint32 @@ -791,10 +886,14 @@ cAudioManager::GetNormalMaleTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_NORMAL_MALE_GUN_PANIC_1, 7); break; + case SOUND_PED_HANDS_COWER: + GetPhrase(&sfx, &lastSfx, SFX_NORMAL_MALE_GUN_PANIC_1, 7); + break; case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_NORMAL_MALE_CARJACKED_1, 7); break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_NORMAL_MALE_DODGE_1, 9); break; - case SOUND_PED_FLEE_RUN: GetPhrase(&sfx, &lastSfx, SFX_NORMAL_MALE_RUN_FROM_FIGHT_1, 5); break; + case SOUND_PED_FLEE_RUN: + GetPhrase(&sfx, &lastSfx, SFX_NORMAL_MALE_RUN_FROM_FIGHT_1, 5); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_NORMAL_MALE_DRIVER_ABUSE_1, 12); break; @@ -818,7 +917,10 @@ cAudioManager::GetTaxiDriverTalkSfx(int16 sound) if(sound != SOUND_PED_CAR_COLLISION) return GetGenericMaleTalkSfx(sound); GetPhrase(&sfx, &lastSfx, SFX_ASIAN_TAXI_DRIVER_VOICE_1_DRIVER_ABUSE_1, 6); } - return (SFX_ASIAN_TAXI_DRIVER_VOICE_2_DRIVER_ABUSE_1 - SFX_ASIAN_TAXI_DRIVER_VOICE_1_DRIVER_ABUSE_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; + return (SFX_ASIAN_TAXI_DRIVER_VOICE_2_DRIVER_ABUSE_1 - + SFX_ASIAN_TAXI_DRIVER_VOICE_1_DRIVER_ABUSE_1) * + (m_sQueueSample.m_nEntityIndex % 2) + + sfx; } uint32 @@ -847,16 +949,26 @@ cAudioManager::GetMafiaTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_CAR_JACKING: GetPhrase(&sfx, &lastSfx, SFX_MAFIA_MALE_VOICE_1_CARJACKING_1, 2); break; - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_MAFIA_MALE_VOICE_1_CARJACKED_1, 2); break; + case SOUND_PED_CAR_JACKING: + GetPhrase(&sfx, &lastSfx, SFX_MAFIA_MALE_VOICE_1_CARJACKING_1, 2); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_MAFIA_MALE_VOICE_1_CARJACKED_1, 2); + break; case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_MAFIA_MALE_VOICE_1_FIGHT_1, 5); break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_MAFIA_MALE_VOICE_1_DODGE_1, 5); break; - case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_MAFIA_MALE_VOICE_1_DRIVER_ABUSE_1, 6); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_MAFIA_MALE_VOICE_1_EYING_1, 3); break; + case SOUND_PED_CAR_COLLISION: + GetPhrase(&sfx, &lastSfx, SFX_MAFIA_MALE_VOICE_1_DRIVER_ABUSE_1, 6); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_MAFIA_MALE_VOICE_1_EYING_1, 3); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_MAFIA_MALE_VOICE_1_CHAT_1, 7); break; default: return GetGenericMaleTalkSfx(sound); } - return (SFX_MAFIA_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_MAFIA_MALE_VOICE_1_DRIVER_ABUSE_1) * (m_sQueueSample.m_nEntityIndex % 3) + sfx; + return (SFX_MAFIA_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_MAFIA_MALE_VOICE_1_DRIVER_ABUSE_1) * + (m_sQueueSample.m_nEntityIndex % 3) + + sfx; } uint32 @@ -866,13 +978,23 @@ cAudioManager::GetTriadTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_UP: GetPhrase(&sfx, &lastSfx, SFX_TRIAD_MALE_VOICE_1_GUN_COOL_1, 3); break; - case SOUND_PED_CAR_JACKING: GetPhrase(&sfx, &lastSfx, SFX_TRIAD_MALE_VOICE_1_CARJACKING_1, 2); break; - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_TRIAD_MALE_VOICE_1_CARJACKED_1, 2); break; + case SOUND_PED_HANDS_UP: + GetPhrase(&sfx, &lastSfx, SFX_TRIAD_MALE_VOICE_1_GUN_COOL_1, 3); + break; + case SOUND_PED_CAR_JACKING: + GetPhrase(&sfx, &lastSfx, SFX_TRIAD_MALE_VOICE_1_CARJACKING_1, 2); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_TRIAD_MALE_VOICE_1_CARJACKED_1, 2); + break; case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_TRIAD_MALE_VOICE_1_FIGHT_1, 5); break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_TRIAD_MALE_VOICE_1_DODGE_1, 4); break; - case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_TRIAD_MALE_VOICE_1_DRIVER_ABUSE_1, 7); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_TRIAD_MALE_VOICE_1_EYING_1, 3); break; + case SOUND_PED_CAR_COLLISION: + GetPhrase(&sfx, &lastSfx, SFX_TRIAD_MALE_VOICE_1_DRIVER_ABUSE_1, 7); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_TRIAD_MALE_VOICE_1_EYING_1, 3); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_TRIAD_MALE_VOICE_1_CHAT_1, 8); break; default: return GetGenericMaleTalkSfx(sound); } @@ -886,21 +1008,33 @@ cAudioManager::GetDiabloTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_UP: GetPhrase(&sfx, &lastSfx, SFX_DIABLO_MALE_VOICE_1_GUN_COOL_1, 4); break; + case SOUND_PED_HANDS_UP: + GetPhrase(&sfx, &lastSfx, SFX_DIABLO_MALE_VOICE_1_GUN_COOL_1, 4); + break; case SOUND_PED_HANDS_COWER: sound = SOUND_PED_FLEE_SPRINT; return GetGenericMaleTalkSfx(sound); break; - case SOUND_PED_CAR_JACKING: GetPhrase(&sfx, &lastSfx, SFX_DIABLO_MALE_VOICE_1_CARJACKING_1, 2); break; - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_DIABLO_MALE_VOICE_1_CARJACKED_1, 2); break; + case SOUND_PED_CAR_JACKING: + GetPhrase(&sfx, &lastSfx, SFX_DIABLO_MALE_VOICE_1_CARJACKING_1, 2); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_DIABLO_MALE_VOICE_1_CARJACKED_1, 2); + break; case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_DIABLO_MALE_VOICE_1_FIGHT_1, 4); break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_DIABLO_MALE_VOICE_1_DODGE_1, 4); break; - case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_DIABLO_MALE_VOICE_1_DRIVER_ABUSE_1, 5); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_DIABLO_MALE_VOICE_1_EYING_1, 4); break; + case SOUND_PED_CAR_COLLISION: + GetPhrase(&sfx, &lastSfx, SFX_DIABLO_MALE_VOICE_1_DRIVER_ABUSE_1, 5); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_DIABLO_MALE_VOICE_1_EYING_1, 4); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_DIABLO_MALE_VOICE_1_CHAT_1, 5); break; default: return GetGenericMaleTalkSfx(sound); } - return (SFX_DIABLO_MALE_VOICE_2_CHAT_1 - SFX_DIABLO_MALE_VOICE_1_CHAT_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; + return (SFX_DIABLO_MALE_VOICE_2_CHAT_1 - SFX_DIABLO_MALE_VOICE_1_CHAT_1) * + (m_sQueueSample.m_nEntityIndex % 2) + + sfx; } uint32 @@ -910,15 +1044,23 @@ cAudioManager::GetYakuzaTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_CAR_JACKING: GetPhrase(&sfx, &lastSfx, SFX_YAKUZA_MALE_VOICE_1_CARJACKING_1, 2); break; - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_YAKUZA_MALE_VOICE_1_CARJACKED_1, 2); break; + case SOUND_PED_CAR_JACKING: + GetPhrase(&sfx, &lastSfx, SFX_YAKUZA_MALE_VOICE_1_CARJACKING_1, 2); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_YAKUZA_MALE_VOICE_1_CARJACKED_1, 2); + break; case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_YAKUZA_MALE_VOICE_1_FIGHT_1, 5); break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_YAKUZA_MALE_VOICE_1_DODGE_1, 4); break; - case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_YAKUZA_MALE_VOICE_1_DRIVER_ABUSE_1, 6); break; + case SOUND_PED_CAR_COLLISION: + GetPhrase(&sfx, &lastSfx, SFX_YAKUZA_MALE_VOICE_1_DRIVER_ABUSE_1, 6); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_YAKUZA_MALE_VOICE_1_CHAT_1, 5); break; default: return GetGenericMaleTalkSfx(sound); } - return (SFX_YAKUZA_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_YAKUZA_MALE_VOICE_1_DRIVER_ABUSE_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; + return (SFX_YAKUZA_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_YAKUZA_MALE_VOICE_1_DRIVER_ABUSE_1) * + (m_sQueueSample.m_nEntityIndex % 2) + + sfx; } uint32 @@ -929,16 +1071,24 @@ cAudioManager::GetYardieTalkSfx(int16 sound) switch(sound) { case SOUND_PED_HANDS_UP: sfx = SFX_YARDIE_MALE_VOICE_1_GUN_COOL_1; break; - case SOUND_PED_CAR_JACKING: GetPhrase(&sfx, &lastSfx, SFX_YARDIE_MALE_VOICE_1_CARJACKING_1, 2); break; + case SOUND_PED_CAR_JACKING: + GetPhrase(&sfx, &lastSfx, SFX_YARDIE_MALE_VOICE_1_CARJACKING_1, 2); + break; case SOUND_PED_CAR_JACKED: sfx = SFX_YARDIE_MALE_VOICE_1_CARJACKED_1; break; case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_YARDIE_MALE_VOICE_1_FIGHT_1, 6); break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_YARDIE_MALE_VOICE_1_DODGE_1, 5); break; - case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_YARDIE_MALE_VOICE_1_DRIVER_ABUSE_1, 6); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_YARDIE_MALE_VOICE_1_EYING_1, 2); break; + case SOUND_PED_CAR_COLLISION: + GetPhrase(&sfx, &lastSfx, SFX_YARDIE_MALE_VOICE_1_DRIVER_ABUSE_1, 6); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_YARDIE_MALE_VOICE_1_EYING_1, 2); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_YARDIE_MALE_VOICE_1_CHAT_1, 8); break; default: return GetGenericMaleTalkSfx(sound); } - return (SFX_YARDIE_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_YARDIE_MALE_VOICE_1_DRIVER_ABUSE_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; + return (SFX_YARDIE_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_YARDIE_MALE_VOICE_1_DRIVER_ABUSE_1) * + (m_sQueueSample.m_nEntityIndex % 2) + + sfx; } uint32 @@ -948,16 +1098,31 @@ cAudioManager::GetColumbianTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_CAR_JACKING: GetPhrase(&sfx, &lastSfx, SFX_COLUMBIAN_MALE_VOICE_1_CARJACKING_1, 2); break; - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_COLUMBIAN_MALE_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_COLUMBIAN_MALE_VOICE_1_FIGHT_1, 5); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_COLUMBIAN_MALE_VOICE_1_DODGE_1, 5); break; - case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_COLUMBIAN_MALE_VOICE_1_DRIVER_ABUSE_1, 6); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_COLUMBIAN_MALE_VOICE_1_EYING_1, 2); break; + case SOUND_PED_CAR_JACKING: + GetPhrase(&sfx, &lastSfx, SFX_COLUMBIAN_MALE_VOICE_1_CARJACKING_1, 2); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_COLUMBIAN_MALE_VOICE_1_CARJACKED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_COLUMBIAN_MALE_VOICE_1_FIGHT_1, 5); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_COLUMBIAN_MALE_VOICE_1_DODGE_1, 5); + break; + case SOUND_PED_CAR_COLLISION: + GetPhrase(&sfx, &lastSfx, SFX_COLUMBIAN_MALE_VOICE_1_DRIVER_ABUSE_1, 6); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_COLUMBIAN_MALE_VOICE_1_EYING_1, 2); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_COLUMBIAN_MALE_VOICE_1_CHAT_1, 5); break; default: return GetGenericMaleTalkSfx(sound); } - return (SFX_COLUMBIAN_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_COLUMBIAN_MALE_VOICE_1_DRIVER_ABUSE_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; + return (SFX_COLUMBIAN_MALE_VOICE_2_DRIVER_ABUSE_1 - + SFX_COLUMBIAN_MALE_VOICE_1_DRIVER_ABUSE_1) * + (m_sQueueSample.m_nEntityIndex % 2) + + sfx; } uint32 @@ -967,18 +1132,30 @@ cAudioManager::GetHoodTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_UP: GetPhrase(&sfx, &lastSfx, SFX_HOOD_MALE_VOICE_1_GUN_COOL_1, 5); break; - case SOUND_PED_CAR_JACKING: GetPhrase(&sfx, &lastSfx, SFX_HOOD_MALE_VOICE_1_CARJACKING_1, 2); break; - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_HOOD_MALE_VOICE_1_CARJACKED_1, 2); break; + case SOUND_PED_HANDS_UP: + GetPhrase(&sfx, &lastSfx, SFX_HOOD_MALE_VOICE_1_GUN_COOL_1, 5); + break; + case SOUND_PED_CAR_JACKING: + GetPhrase(&sfx, &lastSfx, SFX_HOOD_MALE_VOICE_1_CARJACKING_1, 2); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_HOOD_MALE_VOICE_1_CARJACKED_1, 2); + break; case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_HOOD_MALE_VOICE_1_FIGHT_1, 6); break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_HOOD_MALE_VOICE_1_DODGE_1, 5); break; - case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_HOOD_MALE_VOICE_1_DRIVER_ABUSE_1, 7); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_HOOD_MALE_VOICE_1_EYING_1, 2); break; + case SOUND_PED_CAR_COLLISION: + GetPhrase(&sfx, &lastSfx, SFX_HOOD_MALE_VOICE_1_DRIVER_ABUSE_1, 7); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_HOOD_MALE_VOICE_1_EYING_1, 2); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_HOOD_MALE_VOICE_1_CHAT_1, 6); break; default: return GetGenericMaleTalkSfx(sound); break; } - return (SFX_HOOD_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_HOOD_MALE_VOICE_1_DRIVER_ABUSE_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; + return (SFX_HOOD_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_HOOD_MALE_VOICE_1_DRIVER_ABUSE_1) * + (m_sQueueSample.m_nEntityIndex % 2) + + sfx; } uint32 @@ -988,11 +1165,19 @@ cAudioManager::GetBlackCriminalTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_UP: GetPhrase(&sfx, &lastSfx, SFX_BLACK_CRIMINAL_VOICE_1_GUN_COOL_1, 4); break; + case SOUND_PED_HANDS_UP: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_CRIMINAL_VOICE_1_GUN_COOL_1, 4); + break; case SOUND_PED_CAR_JACKING: sfx = SFX_BLACK_CRIMINAL_VOICE_1_CARJACKING_1; break; - case SOUND_PED_MUGGING: GetPhrase(&sfx, &lastSfx, SFX_BLACK_CRIMINAL_VOICE_1_MUGGING_1, 2); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_BLACK_CRIMINAL_VOICE_1_FIGHT_1, 5); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_BLACK_CRIMINAL_VOICE_1_DODGE_1, 6); break; + case SOUND_PED_MUGGING: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_CRIMINAL_VOICE_1_MUGGING_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_CRIMINAL_VOICE_1_FIGHT_1, 5); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_CRIMINAL_VOICE_1_DODGE_1, 6); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_BLACK_CRIMINAL_VOICE_1_DRIVER_ABUSE_1, 5); break; @@ -1008,11 +1193,19 @@ cAudioManager::GetWhiteCriminalTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_UP: GetPhrase(&sfx, &lastSfx, SFX_WHITE_CRIMINAL_VOICE_1_GUN_COOL_1, 3); break; + case SOUND_PED_HANDS_UP: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_CRIMINAL_VOICE_1_GUN_COOL_1, 3); + break; case SOUND_PED_CAR_JACKING: sfx = SFX_WHITE_CRIMINAL_VOICE_1_CARJACKING_1; break; - case SOUND_PED_MUGGING: GetPhrase(&sfx, &lastSfx, SFX_WHITE_CRIMINAL_VOICE_1_MUGGING_1, 2); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_WHITE_CRIMINAL_VOICE_1_FIGHT_1, 4); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_WHITE_CRIMINAL_VOICE_1_DODGE_1, 5); break; + case SOUND_PED_MUGGING: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_CRIMINAL_VOICE_1_MUGGING_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_CRIMINAL_VOICE_1_FIGHT_1, 4); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_CRIMINAL_VOICE_1_DODGE_1, 5); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_WHITE_CRIMINAL_VOICE_1_DRIVER_ABUSE_1, 4); break; @@ -1028,13 +1221,27 @@ cAudioManager::GetMaleNo2TalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_CARJACKED_1, 3); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_MUGGED_1, 4); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_FIGHT_1, 4); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_DODGE_1, 4); break; - case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_DRIVER_ABUSE_1, 7); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_EYING_1, 5); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_CHAT_1, 7); break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_CARJACKED_1, 3); + break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_MUGGED_1, 4); + break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_FIGHT_1, 4); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_DODGE_1, 4); + break; + case SOUND_PED_CAR_COLLISION: + GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_DRIVER_ABUSE_1, 7); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_EYING_1, 5); + break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_CASUAL_MALE_OLD_VOICE_1_CHAT_1, 7); + break; default: return GetGenericMaleTalkSfx(sound); } return sfx; @@ -1047,13 +1254,21 @@ cAudioManager::GetBlackProjectMaleTalkSfx(int16 sound, int32 model) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_UP: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_GUN_COOL_1, 3); break; + case SOUND_PED_HANDS_UP: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_GUN_COOL_1, 3); + break; case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_FIGHT_1, 6); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_DODGE_1, 5); break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_FIGHT_1, 6); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_DODGE_1, 5); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_DRIVER_ABUSE_1, 7); break; @@ -1064,7 +1279,9 @@ cAudioManager::GetBlackProjectMaleTalkSfx(int16 sound, int32 model) default: return GetGenericMaleTalkSfx(sound); } - if(model == MI_P_MAN2) sfx += (SFX_BLACK_PROJECT_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_BLACK_PROJECT_MALE_VOICE_1_DRIVER_ABUSE_1); + if(model == MI_P_MAN2) + sfx += (SFX_BLACK_PROJECT_MALE_VOICE_2_DRIVER_ABUSE_1 - + SFX_BLACK_PROJECT_MALE_VOICE_1_DRIVER_ABUSE_1); return sfx; } @@ -1075,9 +1292,15 @@ cAudioManager::GetWhiteFatMaleTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_CARJACKED_1, 3); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_MUGGED_1, 3); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_DODGE_1, 9); break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_CARJACKED_1, 3); + break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_MUGGED_1, 3); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_DODGE_1, 9); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_DRIVER_ABUSE_1, 9); break; @@ -1097,9 +1320,15 @@ cAudioManager::GetBlackFatMaleTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_CARJACKED_1, 4); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_MUGGED_1, 3); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_DODGE_1, 7); break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_CARJACKED_1, 4); + break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_MUGGED_1, 3); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_DODGE_1, 7); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_DRIVER_ABUSE_1, 6); break; @@ -1156,7 +1385,9 @@ cAudioManager::GetWhiteCasualFemaleTalkSfx(int16 sound) GetPhrase(&sfx, &lastSfx, SFX_WHITE_CASUAL_FEMALE_VOICE_1_CARJACKED_1, 2); break; case SOUND_PED_ROBBED: sfx = SFX_WHITE_CASUAL_FEMALE_VOICE_1_MUGGED_1; break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_WHITE_CASUAL_FEMALE_VOICE_1_DODGE_1, 3); break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_CASUAL_FEMALE_VOICE_1_DODGE_1, 3); + break; case SOUND_PED_FLEE_RUN: GetPhrase(&sfx, &lastSfx, SFX_WHITE_CASUAL_FEMALE_VOICE_1_RUN_FROM_FIGHT_1, 2); break; @@ -1166,7 +1397,9 @@ cAudioManager::GetWhiteCasualFemaleTalkSfx(int16 sound) case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_WHITE_CASUAL_FEMALE_VOICE_1_SHOCKED_1, 2); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_WHITE_CASUAL_FEMALE_VOICE_1_CHAT_1, 4); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_CASUAL_FEMALE_VOICE_1_CHAT_1, 4); + break; default: return GetGenericFemaleTalkSfx(sound); } return sfx; @@ -1179,15 +1412,23 @@ cAudioManager::GetFemaleNo3TalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_FEMALE_3_VOICE_1_GUN_PANIC_1, 5); break; - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_FEMALE_3_VOICE_1_CARJACKED_1, 3); break; + case SOUND_PED_HANDS_COWER: + GetPhrase(&sfx, &lastSfx, SFX_FEMALE_3_VOICE_1_GUN_PANIC_1, 5); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_FEMALE_3_VOICE_1_CARJACKED_1, 3); + break; case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_FEMALE_3_VOICE_1_MUGGED_1, 3); break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_FEMALE_3_VOICE_1_DODGE_1, 6); break; - case SOUND_PED_FLEE_RUN: GetPhrase(&sfx, &lastSfx, SFX_FEMALE_3_VOICE_1_RUN_FROM_FIGHT_1, 4); break; + case SOUND_PED_FLEE_RUN: + GetPhrase(&sfx, &lastSfx, SFX_FEMALE_3_VOICE_1_RUN_FROM_FIGHT_1, 4); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_FEMALE_3_VOICE_1_DRIVER_ABUSE_1, 6); break; - case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_FEMALE_3_VOICE_1_SHOCKED_1, 4); break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(&sfx, &lastSfx, SFX_FEMALE_3_VOICE_1_SHOCKED_1, 4); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_FEMALE_3_VOICE_1_CHAT_1, 5); break; default: return GetGenericFemaleTalkSfx(sound); } @@ -1207,15 +1448,21 @@ cAudioManager::GetBlackFatFemaleTalkSfx(int16 sound) case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_DODGE_1, 5); break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_DODGE_1, 5); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_DRIVER_ABUSE_1, 6); break; case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_SHOCKED_1, 5); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_CHAT_1, 7); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_CHAT_1, 7); + break; default: return GetGenericFemaleTalkSfx(sound); } return sfx; @@ -1231,8 +1478,12 @@ cAudioManager::GetWhiteFatFemaleTalkSfx(int16 sound) case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_DODGE_1, 6); break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_DODGE_1, 6); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_DRIVER_ABUSE_1, 8); break; @@ -1242,7 +1493,9 @@ cAudioManager::GetWhiteFatFemaleTalkSfx(int16 sound) case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_SHOCKED_1, 4); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_CHAT_1, 8); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_CHAT_1, 8); + break; default: return GetGenericFemaleTalkSfx(sound); } return sfx; @@ -1262,17 +1515,23 @@ cAudioManager::GetBlackFemaleProstituteTalkSfx(int16 sound) case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_FIGHT_1, 4); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_DODGE_1, 3); break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_DODGE_1, 3); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_DRIVER_ABUSE_1, 4); break; case SOUND_PED_SOLICIT: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_SOLICIT_1, 8); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_CHAT_1, 4); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_CHAT_1, 4); + break; default: return GetGenericFemaleTalkSfx(sound); } - return (SFX_BLACK_PROSTITUTE_VOICE_2_CHAT_1 - SFX_BLACK_PROSTITUTE_VOICE_1_CHAT_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; + return (SFX_BLACK_PROSTITUTE_VOICE_2_CHAT_1 - SFX_BLACK_PROSTITUTE_VOICE_1_CHAT_1) * + (m_sQueueSample.m_nEntityIndex % 2) + + sfx; } uint32 @@ -1288,17 +1547,23 @@ cAudioManager::GetWhiteFemaleProstituteTalkSfx(int16 sound) case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_FIGHT_1, 4); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_DODGE_1, 3); break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_DODGE_1, 3); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_DRIVER_ABUSE_1, 4); break; case SOUND_PED_SOLICIT: GetPhrase(&sfx, &lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_SOLICIT_1, 8); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_CHAT_1, 4); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_CHAT_1, 4); + break; default: return GetGenericFemaleTalkSfx(sound); } - return (SFX_WHITE_PROSTITUTE_VOICE_2_CHAT_1 - SFX_WHITE_PROSTITUTE_VOICE_1_CHAT_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; + return (SFX_WHITE_PROSTITUTE_VOICE_2_CHAT_1 - SFX_WHITE_PROSTITUTE_VOICE_1_CHAT_1) * + (m_sQueueSample.m_nEntityIndex % 2) + + sfx; } uint32 @@ -1326,7 +1591,9 @@ cAudioManager::GetBlackProjectFemaleOldTalkSfx(int16 sound) case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_SHOCKED_1, 2); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_CHAT_1, 10); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_CHAT_1, 10); + break; default: return GetGenericFemaleTalkSfx(sound); } return sfx; @@ -1355,7 +1622,9 @@ cAudioManager::GetBlackProjectFemaleYoungTalkSfx(int16 sound) case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_SHOCKED_1, 5); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_CHAT_1, 7); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_CHAT_1, 7); + break; default: return GetGenericFemaleTalkSfx(sound); } return sfx; @@ -1374,13 +1643,21 @@ cAudioManager::GetChinatownMaleOldTalkSfx(int16 sound) case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_FIGHT_1, 5); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_DODGE_1, 6); break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_FIGHT_1, 5); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_DODGE_1, 6); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_DRIVER_ABUSE_1, 6); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_EYING_1, 3); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_CHAT_1, 7); break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_EYING_1, 3); + break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_CHAT_1, 7); + break; default: return GetGenericMaleTalkSfx(sound); } return sfx; @@ -1399,15 +1676,21 @@ cAudioManager::GetChinatownMaleYoungTalkSfx(int16 sound) case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_FIGHT_1, 6); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_DODGE_1, 5); break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_FIGHT_1, 6); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_DODGE_1, 5); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_DRIVER_ABUSE_1, 6); break; case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_EYING_1, 3); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_CHAT_1, 6); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_CHAT_1, 6); + break; default: return GetGenericMaleTalkSfx(sound); } return sfx; @@ -1423,13 +1706,19 @@ cAudioManager::GetChinatownFemaleOldTalkSfx(int16 sound) case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_GUN_PANIC_1, 3); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_DODGE_1, 5); break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_DODGE_1, 5); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_DRIVER_ABUSE_1, 5); break; case SOUND_PED_CHAT_EVENT: sfx = SFX_CHINATOWN_OLD_FEMALE_VOICE_1_SHOCKED_1; break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_CHAT_1, 6); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_CHAT_1, 6); + break; default: return GetGenericFemaleTalkSfx(sound); } return sfx; @@ -1445,15 +1734,21 @@ cAudioManager::GetChinatownFemaleYoungTalkSfx(int16 sound) case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_DODGE_1, 6); break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_DODGE_1, 6); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_DRIVER_ABUSE_1, 7); break; case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_SHOCKED_1, 4); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_CHAT_1, 7); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_CHAT_1, 7); + break; default: return GetGenericFemaleTalkSfx(sound); } return sfx; @@ -1472,16 +1767,27 @@ cAudioManager::GetLittleItalyMaleTalkSfx(int16 sound) case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_FIGHT_1, 5); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_DODGE_1, 5); break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_FIGHT_1, 5); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_DODGE_1, 5); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_DRIVER_ABUSE_1, 7); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_CHAT_1, 6); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_CHAT_1, 6); + break; default: return GetGenericMaleTalkSfx(sound); } - return (SFX_LITTLE_ITALY_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_LITTLE_ITALY_MALE_VOICE_1_DRIVER_ABUSE_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; + return (SFX_LITTLE_ITALY_MALE_VOICE_2_DRIVER_ABUSE_1 - + SFX_LITTLE_ITALY_MALE_VOICE_1_DRIVER_ABUSE_1) * + (m_sQueueSample.m_nEntityIndex % 2) + + sfx; } uint32 @@ -1494,15 +1800,21 @@ cAudioManager::GetLittleItalyFemaleOldTalkSfx(int16 sound) case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_DODGE_1, 6); break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_DODGE_1, 6); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_DRIVER_ABUSE_1, 7); break; case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_SHOCKED_1, 4); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_CHAT_1, 7); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_CHAT_1, 7); + break; default: return GetGenericFemaleTalkSfx(sound); } return sfx; @@ -1521,14 +1833,18 @@ cAudioManager::GetLittleItalyFemaleYoungTalkSfx(int16 sound) case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_DODGE_1, 7); break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_DODGE_1, 7); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_DRIVER_ABUSE_1, 6); break; case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_SHOCKED_1, 4); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_CHAT_1, 6); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_CHAT_1, 6); + break; default: return GetGenericFemaleTalkSfx(sound); } return sfx; @@ -1544,13 +1860,21 @@ cAudioManager::GetWhiteDockerMaleTalkSfx(int16 sound) case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_GUN_PANIC_1, 2); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_FIGHT_1, 3); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_DODGE_1, 4); break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_FIGHT_1, 3); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_DODGE_1, 4); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_DRIVER_ABUSE_1, 4); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_EYING_1, 3); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_CHAT_1, 5); break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_EYING_1, 3); + break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_CHAT_1, 5); + break; default: return GetGenericMaleTalkSfx(sound); } return sfx; @@ -1566,12 +1890,16 @@ cAudioManager::GetBlackDockerMaleTalkSfx(int16 sound) case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_BLACK_DOCKER_VOICE_1_GUN_PANIC_1, 3); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_BLACK_DOCKER_VOICE_1_FIGHT_1, 5); break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_DOCKER_VOICE_1_FIGHT_1, 5); + break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_BLACK_DOCKER_VOICE_1_DODGE_1, 5); break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_BLACK_DOCKER_VOICE_1_DRIVER_ABUSE_1, 6); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_BLACK_DOCKER_VOICE_1_EYING_1, 3); break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_DOCKER_VOICE_1_EYING_1, 3); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_BLACK_DOCKER_VOICE_1_CHAT_1, 5); break; default: return GetGenericMaleTalkSfx(sound); } @@ -1585,15 +1913,21 @@ cAudioManager::GetScumMaleTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_SCUM_MALE_VOICE_1_GUN_PANIC_1, 5); break; + case SOUND_PED_HANDS_COWER: + GetPhrase(&sfx, &lastSfx, SFX_SCUM_MALE_VOICE_1_GUN_PANIC_1, 5); + break; case SOUND_PED_ROBBED: sfx = SFX_SCUM_MALE_VOICE_1_MUGGED_1; break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_SCUM_MALE_VOICE_1_FIGHT_1, 0xA); break; + case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_SCUM_MALE_VOICE_1_FIGHT_1, 10); break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_SCUM_MALE_VOICE_1_DODGE_1, 5); break; - case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_SCUM_MALE_VOICE_1_DRIVER_ABUSE_1, 6); break; + case SOUND_PED_CAR_COLLISION: + GetPhrase(&sfx, &lastSfx, SFX_SCUM_MALE_VOICE_1_DRIVER_ABUSE_1, 6); + break; case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(&sfx, &lastSfx, SFX_SCUM_MALE_VOICE_1_LOST_1, 3); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_SCUM_MALE_VOICE_1_EYING_1, 5); break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_SCUM_MALE_VOICE_1_EYING_1, 5); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_SCUM_MALE_VOICE_1_CHAT_1, 9); break; default: return GetGenericMaleTalkSfx(sound); } @@ -1607,8 +1941,12 @@ cAudioManager::GetScumFemaleTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_SCUM_FEMALE_VOICE_1_GUN_PANIC_1, 4); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_SCUM_FEMALE_VOICE_1_MUGGED_1, 2); break; + case SOUND_PED_HANDS_COWER: + GetPhrase(&sfx, &lastSfx, SFX_SCUM_FEMALE_VOICE_1_GUN_PANIC_1, 4); + break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_SCUM_FEMALE_VOICE_1_MUGGED_1, 2); + break; case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_SCUM_FEMALE_VOICE_1_FIGHT_1, 4); break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_SCUM_FEMALE_VOICE_1_DODGE_1, 8); break; case SOUND_PED_CAR_COLLISION: @@ -1630,13 +1968,21 @@ cAudioManager::GetWhiteWorkerMaleTalkSfx(int16 sound) case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_GUN_PANIC_1, 3); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_FIGHT_1, 3); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_DODGE_1, 4); break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_FIGHT_1, 3); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_DODGE_1, 4); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_DRIVER_ABUSE_1, 6); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_EYING_1, 2); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_CHAT_1, 6); break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_EYING_1, 2); + break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_CHAT_1, 6); + break; default: return GetGenericMaleTalkSfx(sound); } return sfx; @@ -1652,13 +1998,21 @@ cAudioManager::GetBlackWorkerMaleTalkSfx(int16 sound) case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_GUN_PANIC_1, 4); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_FIGHT_1, 3); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_DODGE_1, 3); break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_FIGHT_1, 3); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_DODGE_1, 3); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_DRIVER_ABUSE_1, 4); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_EYING_1, 3); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_CHAT_1, 4); break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_EYING_1, 3); + break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_CHAT_1, 4); + break; default: return GetGenericMaleTalkSfx(sound); } return sfx; @@ -1677,20 +2031,30 @@ cAudioManager::GetBusinessMaleYoungTalkSfx(int16 sound, int32 model) case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_FIGHT_1, 4); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_DODGE_1, 4); break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_FIGHT_1, 4); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_DODGE_1, 4); + break; case SOUND_PED_FLEE_RUN: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_RUN_FROM_FIGHT_1, 5); break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_DRIVER_ABUSE_1, 6); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_CHAT_1, 6); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_CHAT_1, 6); + break; default: return GetGenericMaleTalkSfx(sound); } - if(model == MI_B_MAN3) sfx += (SFX_BUSINESS_MALE_YOUNG_VOICE_2_DRIVER_ABUSE_1 - SFX_BUSINESS_MALE_YOUNG_VOICE_1_DRIVER_ABUSE_1); + if(model == MI_B_MAN3) + sfx += (SFX_BUSINESS_MALE_YOUNG_VOICE_2_DRIVER_ABUSE_1 - + SFX_BUSINESS_MALE_YOUNG_VOICE_1_DRIVER_ABUSE_1); return sfx; } @@ -1707,14 +2071,24 @@ cAudioManager::GetBusinessMaleOldTalkSfx(int16 sound) case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_FIGHT_1, 5); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_DODGE_1, 4); break; - case SOUND_PED_FLEE_RUN: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_MRUN_FROM_FIGHT_1, 5); break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_FIGHT_1, 5); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_DODGE_1, 4); + break; + case SOUND_PED_FLEE_RUN: + GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_MRUN_FROM_FIGHT_1, 5); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_DRIVER_ABUSE_1, 5); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_CHAT_1, 5); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_CHAT_1, 5); + break; default: return GetGenericMaleTalkSfx(sound); } return sfx; @@ -1730,19 +2104,33 @@ cAudioManager::GetWhiteBusinessFemaleTalkSfx(int16 sound, int32 model) case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_GUN_PANIC_1, 4); break; - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_DODGE_1, 6); break; - case SOUND_PED_FLEE_RUN: GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_RUN_FROM_FIGHT_1, 4); break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_CARJACKED_1, 2); + break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_DODGE_1, 6); + break; + case SOUND_PED_FLEE_RUN: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_RUN_FROM_FIGHT_1, 4); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_DRIVER_ABUSE_1, 5); break; - case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_SHOCKED_1, 4); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_CHAT_1, 7); break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_SHOCKED_1, 4); + break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_BUSINESS_FEMALE_VOICE_1_CHAT_1, 7); + break; default: return GetGenericFemaleTalkSfx(sound); } - if(model == MI_B_WOM2) sfx += (SFX_WHITE_BUSINESS_FEMALE_VOICE_2_DRIVER_ABUSE_1 - SFX_WHITE_BUSINESS_FEMALE_VOICE_1_DRIVER_ABUSE_1); + if(model == MI_B_WOM2) + sfx += (SFX_WHITE_BUSINESS_FEMALE_VOICE_2_DRIVER_ABUSE_1 - + SFX_WHITE_BUSINESS_FEMALE_VOICE_1_DRIVER_ABUSE_1); return sfx; } @@ -1759,8 +2147,12 @@ cAudioManager::GetBlackBusinessFemaleTalkSfx(int16 sound) case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_BLACK_BUSINESS_FEMALE_VOICE_1_CARAJACKED_1, 4); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_BLACK_BUSINESS_FEMALE_VOICE_1_MUGGED_1, 3); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_BLACK_BUSINESS_FEMALE_VOICE_1_DODGE_1, 6); break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_BUSINESS_FEMALE_VOICE_1_MUGGED_1, 3); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_BUSINESS_FEMALE_VOICE_1_DODGE_1, 6); + break; case SOUND_PED_FLEE_RUN: GetPhrase(&sfx, &lastSfx, SFX_BLACK_BUSINESS_FEMALE_VOICE_1_RUN_FROM_FIGHT_1, 6); break; @@ -1770,7 +2162,9 @@ cAudioManager::GetBlackBusinessFemaleTalkSfx(int16 sound) case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_BLACK_BUSINESS_FEMALE_VOICE_1_SHOCKED_1, 4); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_BLACK_BUSINESS_FEMALE_VOICE_1_CHAT_1, 7); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_BUSINESS_FEMALE_VOICE_1_CHAT_1, 7); + break; default: return GetGenericFemaleTalkSfx(sound); } return sfx; @@ -1783,14 +2177,18 @@ cAudioManager::GetSupermodelMaleTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_MODEL_MALE_VOICE_1_CARJACKED_1, 2); break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_MODEL_MALE_VOICE_1_CARJACKED_1, 2); + break; case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_MODEL_MALE_VOICE_1_MUGGED_1, 2); break; case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_MODEL_MALE_VOICE_1_FIGHT_1, 5); break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_MODEL_MALE_VOICE_1_DODGE_1, 6); break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_MODEL_MALE_VOICE_1_DRIVER_ABUSE_1, 6); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_MODEL_MALE_VOICE_1_EYING_1, 3); break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(&sfx, &lastSfx, SFX_MODEL_MALE_VOICE_1_EYING_1, 3); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_MODEL_MALE_VOICE_1_CHAT_1, 6); break; default: return GetGenericMaleTalkSfx(sound); } @@ -1807,7 +2205,9 @@ cAudioManager::GetSupermodelFemaleTalkSfx(int16 sound) case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_MODEL_FEMALE_VOICE_1_GUN_PANIC_1, 4); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_MODEL_FEMALE_VOICE_1_MUGGED_1, 3); break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_MODEL_FEMALE_VOICE_1_MUGGED_1, 3); + break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_MODEL_FEMALE_VOICE_1_DODGE_1, 4); break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_MODEL_FEMALE_VOICE_1_DRIVER_ABUSE_1, 7); @@ -1828,8 +2228,12 @@ cAudioManager::GetStewardMaleTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_STEWARD_MALE_VOICE_1_GUN_PANIC_1, 3); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_STEWARD_MALE_VOICE_1_FIGHT_1, 4); break; + case SOUND_PED_HANDS_COWER: + GetPhrase(&sfx, &lastSfx, SFX_STEWARD_MALE_VOICE_1_GUN_PANIC_1, 3); + break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_STEWARD_MALE_VOICE_1_FIGHT_1, 4); + break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_STEWARD_MALE_VOICE_1_DODGE_1, 3); break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_STEWARD_MALE_VOICE_1_DRIVER_ABUSE_1, 5); @@ -1850,14 +2254,19 @@ cAudioManager::GetStewardFemaleTalkSfx(int16 sound) case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_STEWARD_FEMALE_VOICE_1_GUN_PANIC_1, 3); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_STEWARD_FEMALE_VOICE_1_DODGE_1, 5); break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_STEWARD_FEMALE_VOICE_1_DODGE_1, 5); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_STEWARD_FEMALE_VOICE_1_DRIVER_ABUSE_1, 5); break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_STEWARD_FEMALE_VOICE_1_CHAT_1, 5); break; default: return GetGenericFemaleTalkSfx(sound); } - return (SFX_STEWARD_FEMALE_VOICE_2_DRIVER_ABUSE_1 - SFX_STEWARD_FEMALE_VOICE_1_DRIVER_ABUSE_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; + return (SFX_STEWARD_FEMALE_VOICE_2_DRIVER_ABUSE_1 - + SFX_STEWARD_FEMALE_VOICE_1_DRIVER_ABUSE_1) * + (m_sQueueSample.m_nEntityIndex % 2) + + sfx; } uint32 @@ -1867,15 +2276,25 @@ cAudioManager::GetFanMaleTalkSfx(int16 sound, int32 model) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_MALE_VOICE_1_FIGHT_1, 3); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_MALE_VOICE_1_DODGE_1, 4); break; - case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_MALE_VOICE_1_DRIVER_ABUSE_1, 5); break; - case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_MALE_VOICE_1_SHOCKED_1, 2); break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_MALE_VOICE_1_FIGHT_1, 3); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_MALE_VOICE_1_DODGE_1, 4); + break; + case SOUND_PED_CAR_COLLISION: + GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_MALE_VOICE_1_DRIVER_ABUSE_1, 5); + break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_MALE_VOICE_1_SHOCKED_1, 2); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_MALE_VOICE_1_CHAT_1, 6); break; default: return GetGenericMaleTalkSfx(sound); } - if(model == MI_FAN_MAN2) sfx += (SFX_FOOTBALL_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_FOOTBALL_MALE_VOICE_1_DRIVER_ABUSE_1); + if(model == MI_FAN_MAN2) + sfx += (SFX_FOOTBALL_MALE_VOICE_2_DRIVER_ABUSE_1 - + SFX_FOOTBALL_MALE_VOICE_1_DRIVER_ABUSE_1); return sfx; } @@ -1887,15 +2306,24 @@ cAudioManager::GetFanFemaleTalkSfx(int16 sound) switch(sound) { case SOUND_PED_ROBBED: sfx = SFX_FOOTBALL_FEMALE_VOICE_1_MUGGED_1; break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_FEMALE_VOICE_1_DODGE_1, 4); break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_FEMALE_VOICE_1_DODGE_1, 4); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_FEMALE_VOICE_1_DRIVER_ABUSE_1, 5); break; - case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_FEMALE_VOICE_1_SHOCKED_1, 2); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_FEMALE_VOICE_1_CHAT_1, 6); break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_FEMALE_VOICE_1_SHOCKED_1, 2); + break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_FOOTBALL_FEMALE_VOICE_1_CHAT_1, 6); + break; default: return GetGenericFemaleTalkSfx(sound); } - return (SFX_FOOTBALL_FEMALE_VOICE_2_DRIVER_ABUSE_1 - SFX_FOOTBALL_FEMALE_VOICE_1_DRIVER_ABUSE_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; + return (SFX_FOOTBALL_FEMALE_VOICE_2_DRIVER_ABUSE_1 - + SFX_FOOTBALL_FEMALE_VOICE_1_DRIVER_ABUSE_1) * + (m_sQueueSample.m_nEntityIndex % 2) + + sfx; } uint32 @@ -1905,9 +2333,15 @@ cAudioManager::GetHospitalMaleTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_HOSPITAL_MALE_VOICE_1_GUN_PANIC_1, 4); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_HOSPITAL_MALE_VOICE_1_FIGHT_1, 4); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_HOSPITAL_MALE_VOICE_1_DODGE_1, 4); break; + case SOUND_PED_HANDS_COWER: + GetPhrase(&sfx, &lastSfx, SFX_HOSPITAL_MALE_VOICE_1_GUN_PANIC_1, 4); + break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_HOSPITAL_MALE_VOICE_1_FIGHT_1, 4); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_HOSPITAL_MALE_VOICE_1_DODGE_1, 4); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_HOSPITAL_MALE_VOICE_1_DRIVER_ABUSE_1, 5); break; @@ -1924,11 +2358,15 @@ cAudioManager::GetHospitalFemaleTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_HOSPITAL_FEMALE_VOICE_1_DODGE_1, 5); break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_HOSPITAL_FEMALE_VOICE_1_DODGE_1, 5); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_HOSPITAL_FEMALE_VOICE_1_DRIVER_ABUSE_1, 6); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_HOSPITAL_FEMALE_VOICE_1_CHAT_1, 6); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_HOSPITAL_FEMALE_VOICE_1_CHAT_1, 6); + break; default: return GetGenericFemaleTalkSfx(sound); } return sfx; @@ -1948,14 +2386,18 @@ cAudioManager::GetWhiteConstructionWorkerTalkSfx(int16 sound) case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_WHITE_MALE_CONSTRUCTION_VOICE_1_FIGHT_1, 5); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_WHITE_MALE_CONSTRUCTION_VOICE_1_DODGE_1, 5); break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_MALE_CONSTRUCTION_VOICE_1_DODGE_1, 5); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_WHITE_MALE_CONSTRUCTION_VOICE_1_DRIVER_ABUSE_1, 4); break; case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_WHITE_MALE_CONSTRUCTION_VOICE_1_EYING_1, 3); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_WHITE_MALE_CONSTRUCTION_VOICE_1_CHAT_1, 7); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_WHITE_MALE_CONSTRUCTION_VOICE_1_CHAT_1, 7); + break; default: return GetGenericMaleTalkSfx(sound); } return sfx; @@ -1977,14 +2419,18 @@ cAudioManager::GetBlackConstructionWorkerTalkSfx(int16 sound) case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_BLACK_CONSTRUCTION_MALE_VOICE_1_FIGHT_1, 5); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_BLACK_CONSTRUCTION_MALE_VOICE_1_DODGE_1, 5); break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_CONSTRUCTION_MALE_VOICE_1_DODGE_1, 5); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_BLACK_CONSTRUCTION_MALE_VOICE_1_DRIVER_ABUSE_1, 5); break; case SOUND_PED_CHAT_SEXY: GetPhrase(&sfx, &lastSfx, SFX_BLACK_CONSTRUCTION_MALE_VOICE_1_EYING_1, 4); break; - case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_BLACK_CONSTRUCTION_MALE_VOICE_1_CHAT_1, 4); break; + case SOUND_PED_CHAT: + GetPhrase(&sfx, &lastSfx, SFX_BLACK_CONSTRUCTION_MALE_VOICE_1_CHAT_1, 4); + break; default: return GetGenericMaleTalkSfx(sound); } return sfx; @@ -1997,13 +2443,17 @@ cAudioManager::GetShopperFemaleTalkSfx(int16 sound, int32 model) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_CAR_JACKED: GetPhrase(&sfx, &lastSfx, SFX_SHOPPER_VOICE_1_CARJACKED_1, 2); break; + case SOUND_PED_CAR_JACKED: + GetPhrase(&sfx, &lastSfx, SFX_SHOPPER_VOICE_1_CARJACKED_1, 2); + break; case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_SHOPPER_VOICE_1_MUGGED_1, 2); break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_SHOPPER_VOICE_1_DODGE_1, 6); break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_SHOPPER_VOICE_1_DRIVER_ABUSE_1, 7); break; - case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_SHOPPER_VOICE_1_SHOCKED_1, 4); break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(&sfx, &lastSfx, SFX_SHOPPER_VOICE_1_SHOCKED_1, 4); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_SHOPPER_VOICE_1_CHAT_1, 7); break; default: return GetGenericFemaleTalkSfx(sound); } @@ -2023,14 +2473,22 @@ cAudioManager::GetStudentMaleTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_MALE_VOICE_1_GUN_PANIC_1, 2); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_MALE_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_MALE_VOICE_1_FIGHT_1, 4); break; + case SOUND_PED_HANDS_COWER: + GetPhrase(&sfx, &lastSfx, SFX_STUDENT_MALE_VOICE_1_GUN_PANIC_1, 2); + break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_STUDENT_MALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_STUDENT_MALE_VOICE_1_FIGHT_1, 4); + break; case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_MALE_VOICE_1_DODGE_1, 4); break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_MALE_VOICE_1_DRIVER_ABUSE_1, 4); break; - case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_MALE_VOICE_1_SHOCKED_1, 3); break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(&sfx, &lastSfx, SFX_STUDENT_MALE_VOICE_1_SHOCKED_1, 3); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_MALE_VOICE_1_CHAT_1, 5); break; default: return GetGenericMaleTalkSfx(sound); } @@ -2044,14 +2502,24 @@ cAudioManager::GetStudentFemaleTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_COWER: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_FEMALE_VOICE_1_GUN_PANIC_1, 4); break; - case SOUND_PED_ROBBED: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_FEMALE_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_FEMALE_VOICE_1_FIGHT_1, 4); break; - case SOUND_PED_EVADE: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_FEMALE_VOICE_1_DODGE_1, 4); break; + case SOUND_PED_HANDS_COWER: + GetPhrase(&sfx, &lastSfx, SFX_STUDENT_FEMALE_VOICE_1_GUN_PANIC_1, 4); + break; + case SOUND_PED_ROBBED: + GetPhrase(&sfx, &lastSfx, SFX_STUDENT_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_STUDENT_FEMALE_VOICE_1_FIGHT_1, 4); + break; + case SOUND_PED_EVADE: + GetPhrase(&sfx, &lastSfx, SFX_STUDENT_FEMALE_VOICE_1_DODGE_1, 4); + break; case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_FEMALE_VOICE_1_DRIVER_ABUSE_1, 4); break; - case SOUND_PED_CHAT_EVENT: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_FEMALE_VOICE_1_SHOCKED_1, 2); break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(&sfx, &lastSfx, SFX_STUDENT_FEMALE_VOICE_1_SHOCKED_1, 2); + break; case SOUND_PED_CHAT: GetPhrase(&sfx, &lastSfx, SFX_STUDENT_FEMALE_VOICE_1_CHAT_1, 4); break; default: return GetGenericFemaleTalkSfx(sound); } @@ -2068,10 +2536,15 @@ uint32 cAudioManager::GetSpecialCharacterTalkSfx(int32 modelIndex, int32 sound) { char *modelName = CModelInfo::GetModelInfo(modelIndex)->GetName(); - if(!CGeneral::faststricmp(modelName, "eight") || !CGeneral::faststricmp(modelName, "eight2")) { return GetEightTalkSfx(sound); } + if(!CGeneral::faststricmp(modelName, "eight") || + !CGeneral::faststricmp(modelName, "eight2")) { + return GetEightTalkSfx(sound); + } if(!CGeneral::faststricmp(modelName, "frankie")) { return GetFrankieTalkSfx(sound); } if(!CGeneral::faststricmp(modelName, "misty")) { return GetMistyTalkSfx(sound); } - if(!CGeneral::faststricmp(modelName, "ojg") || !CGeneral::faststricmp(modelName, "ojg_p")) { return GetOJGTalkSfx(sound); } + if(!CGeneral::faststricmp(modelName, "ojg") || !CGeneral::faststricmp(modelName, "ojg_p")) { + return GetOJGTalkSfx(sound); + } if(!CGeneral::faststricmp(modelName, "cat")) { return GetCatatalinaTalkSfx(sound); } if(!CGeneral::faststricmp(modelName, "bomber")) { return GetBomberTalkSfx(sound); } if(!CGeneral::faststricmp(modelName, "s_guard")) { return GetSecurityGuardTalkSfx(sound); } @@ -2161,11 +2634,17 @@ cAudioManager::GetSecurityGuardTalkSfx(int16 sound) static uint32 lastSfx = NO_SAMPLE; switch(sound) { - case SOUND_PED_HANDS_UP: GetPhrase(&sfx, &lastSfx, SFX_SECURITY_GUARD_VOICE_1_GUN_COOL_1, 2); break; + case SOUND_PED_HANDS_UP: + GetPhrase(&sfx, &lastSfx, SFX_SECURITY_GUARD_VOICE_1_GUN_COOL_1, 2); + break; case SOUND_PED_HANDS_COWER: sfx = SFX_SECURITY_GUARD_VOICE_1_GUN_PANIC_1; break; case SOUND_PED_CAR_JACKED: - case SOUND_PED_CAR_COLLISION: GetPhrase(&sfx, &lastSfx, SFX_SECURITY_GUARD_VOICE_1_DRIVER_ABUSE_1, 6); break; - case SOUND_PED_ATTACK: GetPhrase(&sfx, &lastSfx, SFX_SECURITY_GUARD_VOICE_1_FIGHT_1, 2); break; + case SOUND_PED_CAR_COLLISION: + GetPhrase(&sfx, &lastSfx, SFX_SECURITY_GUARD_VOICE_1_DRIVER_ABUSE_1, 6); + break; + case SOUND_PED_ATTACK: + GetPhrase(&sfx, &lastSfx, SFX_SECURITY_GUARD_VOICE_1_FIGHT_1, 2); + break; case SOUND_PED_FLEE_RUN: #ifdef FIX_BUGS sfx = SFX_SECURITY_GUARD_VOICE_1_RUN_FROM_FIGHT_1; @@ -2388,8 +2867,8 @@ cAudioManager::GetPhrase(uint32 *phrase, uint32 *prevPhrase, uint32 sample, uint } float -cAudioManager::GetVehicleDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, cTransmission *transmission, - float velocityChange) +cAudioManager::GetVehicleDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, + cTransmission *transmission, float velocityChange) { tWheelState wheelState; float relativeVelChange; @@ -2427,8 +2906,8 @@ cAudioManager::GetVehicleDriveWheelSkidValue(uint8 wheel, CAutomobile *automobil } float -cAudioManager::GetVehicleNonDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, cTransmission *transmission, - float velocityChange) +cAudioManager::GetVehicleNonDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, + cTransmission *transmission, float velocityChange) { float relativeVelChange; @@ -2444,7 +2923,8 @@ cAudioManager::GetVehicleNonDriveWheelSkidValue(uint8 wheel, CAutomobile *automo bool cAudioManager::HasAirBrakes(int32 model) const { - return model == LINERUN || model == FIRETRUK || model == TRASH || model == BUS || model == COACH; + return model == LINERUN || model == FIRETRUK || model == TRASH || model == BUS || + model == COACH; } void @@ -2524,7 +3004,8 @@ cAudioManager::MissionScriptAudioUsesPoliceChannel(int32 soundMission) const void cAudioManager::PlayLoadedMissionAudio() { - if(m_bIsInitialised && m_sMissionAudio.m_nSampleIndex != NO_SAMPLE && m_sMissionAudio.m_bLoadingStatus == LOADING_STATUS_LOADED && + if(m_bIsInitialised && m_sMissionAudio.m_nSampleIndex != NO_SAMPLE && + m_sMissionAudio.m_bLoadingStatus == LOADING_STATUS_LOADED && !m_sMissionAudio.m_bPlayStatus) { m_sMissionAudio.m_bIsPlayed = true; } @@ -2534,11 +3015,12 @@ void cAudioManager::PlayOneShot(int32 index, int16 sound, float vol) { static const uint8 OneShotPriority[] = { - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 3, 5, 2, 2, 1, 1, 3, 1, 3, 3, 1, 1, 1, 4, 4, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 3, 2, 2, 2, 2, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 3, 1, 1, 1, 9, - 2, 2, 0, 0, 0, 0, 3, 3, 5, 1, 1, 1, 1, 3, 4, 7, 6, 6, 6, 6, 1, 3, 4, 3, 4, 2, 1, 3, 5, 4, 6, 6, 1, 3, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 3, 5, 2, 2, 1, 1, 3, 1, 3, 3, 1, 1, + 1, 4, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 3, 2, 2, 2, 2, 0, 0, 6, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 3, 1, 1, 1, 9, 2, 2, 0, 0, 0, 0, 3, 3, 5, 1, + 1, 1, 1, 3, 4, 7, 6, 6, 6, 6, 1, 3, 4, 3, 4, 2, 1, 3, 5, 4, 6, 6, 1, 3, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; if(m_bIsInitialised) { if(index >= 0 && index < totalAudioEntitiesSlots) { @@ -2546,24 +3028,29 @@ cAudioManager::PlayOneShot(int32 index, int16 sound, float vol) if(entity.m_bIsUsed) { if(sound < SOUND_TOTAL_SOUNDS) { if(entity.m_nType == AUDIOTYPE_SCRIPTOBJECT) { - if(m_nScriptObjectEntityTotal < ARRAY_SIZE(m_anScriptObjectEntityIndices)) { + if(m_nScriptObjectEntityTotal < + ARRAY_SIZE(m_anScriptObjectEntityIndices)) { entity.m_awAudioEvent[0] = sound; entity.m_AudioEvents = 1; - m_anScriptObjectEntityIndices[m_nScriptObjectEntityTotal++] = - index; + m_anScriptObjectEntityIndices + [m_nScriptObjectEntityTotal++] = index; } } else { int32 i = 0; while(true) { if(i >= entity.m_AudioEvents) { - if(entity.m_AudioEvents < ARRAY_SIZE(entity.m_awAudioEvent)) { - entity.m_awAudioEvent[i] = sound; + if(entity.m_AudioEvents < + ARRAY_SIZE( + entity.m_awAudioEvent)) { + entity.m_awAudioEvent[i] = + sound; entity.m_afVolume[i] = vol; ++entity.m_AudioEvents; } return; } - if(OneShotPriority[entity.m_awAudioEvent[i]] > + if(OneShotPriority[entity + .m_awAudioEvent[i]] > OneShotPriority[sound]) break; ++i; @@ -2580,7 +3067,9 @@ cAudioManager::PlayOneShot(int32 index, int16 sound, float vol) } entity.m_awAudioEvent[i] = sound; entity.m_afVolume[i] = vol; - if(entity.m_AudioEvents < ARRAY_SIZE(entity.m_awAudioEvent)) ++entity.m_AudioEvents; + if(entity.m_AudioEvents < + ARRAY_SIZE(entity.m_awAudioEvent)) + ++entity.m_AudioEvents; } } } @@ -2606,22 +3095,22 @@ cAudioManager::PostInitialiseGameSpecificSetup() m_nFireAudioEntity = CreateEntity(AUDIOTYPE_FIRE, &gFireManager); if(m_nFireAudioEntity >= 0) SetEntityStatus(m_nFireAudioEntity, 1); - m_nCollisionEntity = CreateEntity(AUDIOTYPE_COLLISION, (void*)1); + m_nCollisionEntity = CreateEntity(AUDIOTYPE_COLLISION, (void *)1); if(m_nCollisionEntity >= 0) SetEntityStatus(m_nCollisionEntity, 1); - m_nFrontEndEntity = CreateEntity(AUDIOTYPE_FRONTEND, (void*)1); + m_nFrontEndEntity = CreateEntity(AUDIOTYPE_FRONTEND, (void *)1); if(m_nFrontEndEntity >= 0) SetEntityStatus(m_nFrontEndEntity, 1); - m_nProjectileEntity = CreateEntity(AUDIOTYPE_PROJECTILE, (void*)1); + m_nProjectileEntity = CreateEntity(AUDIOTYPE_PROJECTILE, (void *)1); if(m_nProjectileEntity >= 0) SetEntityStatus(m_nProjectileEntity, 1); - m_nWaterCannonEntity = CreateEntity(AUDIOTYPE_WATERCANNON, (void*)1); + m_nWaterCannonEntity = CreateEntity(AUDIOTYPE_WATERCANNON, (void *)1); if(m_nWaterCannonEntity >= 0) SetEntityStatus(m_nWaterCannonEntity, 1); - m_nPoliceChannelEntity = CreateEntity(AUDIOTYPE_POLICERADIO, (void*)1); + m_nPoliceChannelEntity = CreateEntity(AUDIOTYPE_POLICERADIO, (void *)1); if(m_nPoliceChannelEntity >= 0) SetEntityStatus(m_nPoliceChannelEntity, 1); - m_nBridgeEntity = CreateEntity(AUDIOTYPE_BRIDGE, (void*)1); + m_nBridgeEntity = CreateEntity(AUDIOTYPE_BRIDGE, (void *)1); if(m_nBridgeEntity >= 0) SetEntityStatus(m_nBridgeEntity, 1); m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; @@ -2709,7 +3198,8 @@ int32 FindMissionAudioSfx(const char *name) { for(uint32 i = 0; i < ARRAY_SIZE(MissionAudioNameSfxAssoc); ++i) { - if(!CGeneral::faststricmp(MissionAudioNameSfxAssoc[i].m_pName, name)) return MissionAudioNameSfxAssoc[i].m_nId; + if(!CGeneral::faststricmp(MissionAudioNameSfxAssoc[i].m_pName, name)) + return MissionAudioNameSfxAssoc[i].m_nId; } debug("Can't find mission audio %s", name); return NO_SAMPLE; @@ -2726,11 +3216,12 @@ cAudioManager::PreloadMissionAudio(const char *name) m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_STOPPED; m_sMissionAudio.field_22 = 0; m_sMissionAudio.m_nMissionAudioCounter = - m_bTimeSpent * SampleManager.GetStreamedFileLength(missionAudioSfx) / 1000; + m_bTimeSpent * SampleManager.GetStreamedFileLength(missionAudioSfx) / + 1000; m_sMissionAudio.m_nMissionAudioCounter *= 4; m_sMissionAudio.m_bIsPlayed = false; m_sMissionAudio.m_bPredefinedProperties = 1; - g_bMissionAudioLoadFailed = 0; + g_bMissionAudioLoadFailed = false; } } } @@ -2786,102 +3277,131 @@ cAudioManager::ProcessActiveQueues() uint8 emittingVol; CVector position; - for (int32 i = 0; i < m_bActiveSamples; i++) { + for(int32 i = 0; i < m_bActiveSamples; i++) { m_asSamples[m_bActiveSampleQueue][i].m_bIsProcessed = false; m_asActiveSamples[i].m_bIsProcessed = false; } - for (int32 i = 0; i < m_bSampleRequestQueuesStatus[m_bActiveSampleQueue]; ++i) { - tSound& sample = m_asSamples[m_bActiveSampleQueue][m_abSampleQueueIndexTable[m_bActiveSampleQueue][i]]; - if (sample.m_nSampleIndex != NO_SAMPLE) { - for (int32 j = 0; j < m_bActiveSamples; ++j) { - if (sample.m_nEntityIndex == m_asActiveSamples[j].m_nEntityIndex && - sample.m_nCounter == m_asActiveSamples[j].m_nCounter && - sample.m_nSampleIndex == m_asActiveSamples[j].m_nSampleIndex) { - if (sample.m_nLoopCount) { - if (m_FrameCounter & 1) { + for(int32 i = 0; i < m_bSampleRequestQueuesStatus[m_bActiveSampleQueue]; ++i) { + tSound &sample = m_asSamples[m_bActiveSampleQueue] + [m_abSampleQueueIndexTable[m_bActiveSampleQueue][i]]; + if(sample.m_nSampleIndex != NO_SAMPLE) { + for(int32 j = 0; j < m_bActiveSamples; ++j) { + if(sample.m_nEntityIndex == m_asActiveSamples[j].m_nEntityIndex && + sample.m_nCounter == m_asActiveSamples[j].m_nCounter && + sample.m_nSampleIndex == m_asActiveSamples[j].m_nSampleIndex) { + if(sample.m_nLoopCount) { + if(m_FrameCounter & 1) { flag = !!(j & 1); - } - else { + } else { flag = !(j & 1); } - if (flag && !SampleManager.GetChannelUsedFlag(j)) { + if(flag && !SampleManager.GetChannelUsedFlag(j)) { sample.m_bLoopEnded = true; m_asActiveSamples[j].m_bLoopEnded = true; - m_asActiveSamples[j].m_nSampleIndex = NO_SAMPLE; - m_asActiveSamples[j].m_nEntityIndex = AEHANDLE_NONE; + m_asActiveSamples[j].m_nSampleIndex = + NO_SAMPLE; + m_asActiveSamples[j].m_nEntityIndex = + AEHANDLE_NONE; continue; } } sample.m_bIsProcessed = true; m_asActiveSamples[j].m_bIsProcessed = true; sample.m_nVolumeChange = -1; - if (!sample.m_bReleasingSoundFlag) { - if (sample.m_bIs2D) { - if (field_4) { - emittingVol = 2 * min(63, sample.m_bEmittingVolume); + if(!sample.m_bReleasingSoundFlag) { + if(sample.m_bIs2D) { + if(field_4) { + emittingVol = + 2 * + min(63, + sample.m_bEmittingVolume); + } else { + emittingVol = + sample.m_bEmittingVolume; } - else { - emittingVol = sample.m_bEmittingVolume; - } - SampleManager.SetChannelFrequency(j, sample.m_nFrequency); - SampleManager.SetChannelEmittingVolume(j, emittingVol); - } - else { - m_asActiveSamples[j].m_fDistance = sample.m_fDistance; + SampleManager.SetChannelFrequency( + j, sample.m_nFrequency); + SampleManager.SetChannelEmittingVolume( + j, emittingVol); + } else { + m_asActiveSamples[j].m_fDistance = + sample.m_fDistance; position2 = sample.m_fDistance; - position1 = m_asActiveSamples[j].m_fDistance; - sample.m_nFrequency = ComputeDopplerEffectedFrequency( - sample.m_nFrequency, position1, position2, sample.m_fSpeedMultiplier); - if (sample.m_nFrequency != m_asActiveSamples[j].m_nFrequency) { + position1 = + m_asActiveSamples[j].m_fDistance; + sample.m_nFrequency = + ComputeDopplerEffectedFrequency( + sample.m_nFrequency, position1, + position2, + sample.m_fSpeedMultiplier); + if(sample.m_nFrequency != + m_asActiveSamples[j].m_nFrequency) { int32 freq; - if (sample.m_nFrequency <= - m_asActiveSamples[j].m_nFrequency) { - freq = max(sample.m_nFrequency, - m_asActiveSamples[j].m_nFrequency - - 6000); + if(sample.m_nFrequency <= + m_asActiveSamples[j] + .m_nFrequency) { + freq = max( + sample.m_nFrequency, + m_asActiveSamples[j] + .m_nFrequency - + 6000); + } else { + freq = min( + sample.m_nFrequency, + m_asActiveSamples[j] + .m_nFrequency + + 6000); } - else { - freq = min(sample.m_nFrequency, - m_asActiveSamples[j].m_nFrequency + - 6000); - } - m_asActiveSamples[j].m_nFrequency = freq; - SampleManager.SetChannelFrequency(j, freq); + m_asActiveSamples[j].m_nFrequency = + freq; + SampleManager.SetChannelFrequency( + j, freq); } - if (sample.m_bEmittingVolume != - m_asActiveSamples[j].m_bEmittingVolume) { - if (sample.m_bEmittingVolume <= - m_asActiveSamples[j].m_bEmittingVolume) { + if(sample.m_bEmittingVolume != + m_asActiveSamples[j].m_bEmittingVolume) { + if(sample.m_bEmittingVolume <= + m_asActiveSamples[j] + .m_bEmittingVolume) { vol = max( - m_asActiveSamples[j].m_bEmittingVolume - 10, - sample.m_bEmittingVolume); - } - else { + m_asActiveSamples[j] + .m_bEmittingVolume - + 10, + sample + .m_bEmittingVolume); + } else { vol = min( - m_asActiveSamples[j].m_bEmittingVolume + 10, - sample.m_bEmittingVolume); + m_asActiveSamples[j] + .m_bEmittingVolume + + 10, + sample + .m_bEmittingVolume); } uint8 emittingVol; - if (field_4) { - emittingVol = 2 * min(63, vol); - } - else { + if(field_4) { + emittingVol = + 2 * min(63, vol); + } else { emittingVol = vol; } - SampleManager.SetChannelEmittingVolume(j, emittingVol); - m_asActiveSamples[j].m_bEmittingVolume = vol; + SampleManager + .SetChannelEmittingVolume( + j, emittingVol); + m_asActiveSamples[j] + .m_bEmittingVolume = vol; } - TranslateEntity(&sample.m_vecPos, &position); - SampleManager.SetChannel3DPosition(j, position.x, position.y, - position.z); + TranslateEntity(&sample.m_vecPos, + &position); + SampleManager.SetChannel3DPosition( + j, position.x, position.y, position.z); SampleManager.SetChannel3DDistances( - j, sample.m_fSoundIntensity, - 0.25f * sample.m_fSoundIntensity); + j, sample.m_fSoundIntensity, + 0.25f * sample.m_fSoundIntensity); } - SampleManager.SetChannelReverbFlag(j, sample.m_bReverbFlag); + SampleManager.SetChannelReverbFlag( + j, sample.m_bReverbFlag); continue; } sample.m_bIsProcessed = false; @@ -2891,79 +3411,93 @@ cAudioManager::ProcessActiveQueues() } } } - for (int32 i = 0; i < m_bActiveSamples; i++) { - if (m_asActiveSamples[i].m_nSampleIndex != NO_SAMPLE && !m_asActiveSamples[i].m_bIsProcessed) { + for(int32 i = 0; i < m_bActiveSamples; i++) { + if(m_asActiveSamples[i].m_nSampleIndex != NO_SAMPLE && + !m_asActiveSamples[i].m_bIsProcessed) { SampleManager.StopChannel(i); m_asActiveSamples[i].m_nSampleIndex = NO_SAMPLE; m_asActiveSamples[i].m_nEntityIndex = AEHANDLE_NONE; } } - for (int32 i = 0; i < m_bSampleRequestQueuesStatus[m_bActiveSampleQueue]; ++i) { - tSound& sample = m_asSamples[m_bActiveSampleQueue][m_abSampleQueueIndexTable[m_bActiveSampleQueue][i]]; - if (!sample.m_bIsProcessed && !sample.m_bLoopEnded && - m_asAudioEntities[sample.m_nEntityIndex].m_bIsUsed && sample.m_nSampleIndex < NO_SAMPLE) { - if (sample.m_nCounter > 255 && sample.m_nLoopCount && sample.m_bLoopsRemaining) { + for(int32 i = 0; i < m_bSampleRequestQueuesStatus[m_bActiveSampleQueue]; ++i) { + tSound &sample = m_asSamples[m_bActiveSampleQueue] + [m_abSampleQueueIndexTable[m_bActiveSampleQueue][i]]; + if(!sample.m_bIsProcessed && !sample.m_bLoopEnded && + m_asAudioEntities[sample.m_nEntityIndex].m_bIsUsed && + sample.m_nSampleIndex < NO_SAMPLE) { + if(sample.m_nCounter > 255 && sample.m_nLoopCount && + sample.m_bLoopsRemaining) { --sample.m_bLoopsRemaining; sample.m_nReleasingVolumeDivider = 1; - } - else { - for (int32 j = 0; j < m_bActiveSamples; ++j) { - if (!m_asActiveSamples[j].m_bIsProcessed) { - if (sample.m_nLoopCount) { + } else { + for(int32 j = 0; j < m_bActiveSamples; ++j) { + if(!m_asActiveSamples[j].m_bIsProcessed) { + if(sample.m_nLoopCount) { v28 = sample.m_nFrequency / m_bTimeSpent; v29 = sample.m_nLoopCount * - SampleManager.GetSampleLength(sample.m_nSampleIndex); - if (v28 == 0) continue; - sample.m_nReleasingVolumeDivider = v29 / v28 + 1; + SampleManager.GetSampleLength( + sample.m_nSampleIndex); + if(v28 == 0) continue; + sample.m_nReleasingVolumeDivider = + v29 / v28 + 1; } - memcpy(&m_asActiveSamples[j], &sample, sizeof(tSound)); - if (!m_asActiveSamples[j].m_bIs2D) - TranslateEntity(&m_asActiveSamples[j].m_vecPos, &position); - if (field_4) { + memcpy(&m_asActiveSamples[j], &sample, + sizeof(tSound)); + if(!m_asActiveSamples[j].m_bIs2D) + TranslateEntity( + &m_asActiveSamples[j].m_vecPos, + &position); + if(field_4) { emittingVol = - 2 * min(63, m_asActiveSamples[j].m_bEmittingVolume); + 2 * min(63, m_asActiveSamples[j] + .m_bEmittingVolume); + } else { + emittingVol = + m_asActiveSamples[j].m_bEmittingVolume; } - else { - emittingVol = m_asActiveSamples[j].m_bEmittingVolume; - } - if (SampleManager.InitialiseChannel(j, - m_asActiveSamples[j].m_nSampleIndex, - m_asActiveSamples[j].m_bBankIndex)) { + if(SampleManager.InitialiseChannel( + j, m_asActiveSamples[j].m_nSampleIndex, + m_asActiveSamples[j].m_bBankIndex)) { SampleManager.SetChannelFrequency( - j, m_asActiveSamples[j].m_nFrequency); - SampleManager.SetChannelEmittingVolume(j, emittingVol); + j, m_asActiveSamples[j].m_nFrequency); + SampleManager.SetChannelEmittingVolume( + j, emittingVol); SampleManager.SetChannelLoopPoints( - j, m_asActiveSamples[j].m_nLoopStart, - m_asActiveSamples[j].m_nLoopEnd); + j, m_asActiveSamples[j].m_nLoopStart, + m_asActiveSamples[j].m_nLoopEnd); SampleManager.SetChannelLoopCount( - j, m_asActiveSamples[j].m_nLoopCount); + j, m_asActiveSamples[j].m_nLoopCount); SampleManager.SetChannelReverbFlag( - j, m_asActiveSamples[j].m_bReverbFlag); - if (m_asActiveSamples[j].m_bIs2D) { - uint8 offset = m_asActiveSamples[j].m_bOffset; - if (offset == 63) { + j, m_asActiveSamples[j].m_bReverbFlag); + if(m_asActiveSamples[j].m_bIs2D) { + uint8 offset = + m_asActiveSamples[j].m_bOffset; + if(offset == 63) { x = 0.f; - } - else if (offset >= 63) { - x = (offset - 63) * 1000.f / 63; - } - else { - x = -(63 - offset) * 1000.f / 63; + } else if(offset >= 63) { + x = (offset - 63) * 1000.f / + 63; + } else { + x = -(63 - offset) * + 1000.f / 63; } usedX = x; usedY = 0.f; usedZ = 0.f; - m_asActiveSamples[j].m_fSoundIntensity = 100000.0f; - } - else { + m_asActiveSamples[j] + .m_fSoundIntensity = 100000.0f; + } else { usedX = position.x; usedY = position.y; usedZ = position.z; } - SampleManager.SetChannel3DPosition(j, usedX, usedY, usedZ); + SampleManager.SetChannel3DPosition( + j, usedX, usedY, usedZ); SampleManager.SetChannel3DDistances( - j, m_asActiveSamples[j].m_fSoundIntensity, - 0.25f * m_asActiveSamples[j].m_fSoundIntensity); + j, + m_asActiveSamples[j].m_fSoundIntensity, + 0.25f * m_asActiveSamples[j] + .m_fSoundIntensity); SampleManager.StartChannel(j); } m_asActiveSamples[j].m_bIsProcessed = true; @@ -2987,7 +3521,8 @@ cAudioManager::ProcessAirBrakes(cVehicleParams *params) automobile = (CAutomobile *)params->m_pVehicle; if(!automobile->bEngineOn) return true; - if((automobile->m_fVelocityChangeForAudio < 0.025f || params->m_fVelocityChange >= 0.025f) && + if((automobile->m_fVelocityChangeForAudio < 0.025f || + params->m_fVelocityChange >= 0.025f) && (automobile->m_fVelocityChangeForAudio > -0.025f || params->m_fVelocityChange <= 0.025f)) return true; @@ -3036,13 +3571,14 @@ cAudioManager::ProcessAirportScriptObject(uint8 sound) float distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); if(distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_bVolume = - ComputeVolume(110, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + 110, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_nSampleIndex = (m_anRandomTable[1] & 3) + SFX_AIRPORT_ANNOUNCEMENT_1; + m_sQueueSample.m_nSampleIndex = + (m_anRandomTable[1] & 3) + SFX_AIRPORT_ANNOUNCEMENT_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nCounter = counter++; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; @@ -3080,21 +3616,24 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) boat = (CBoat *)params->m_pVehicle; if(params->m_nIndex == REEFER) { CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); - m_sQueueSample.m_bVolume = ComputeVolume(80, 50.f, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(80, 50.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 39; m_sQueueSample.m_nSampleIndex = SFX_FISHING_BOAT_IDLE; m_sQueueSample.m_nFrequency = 10386; - m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex << 16) % 1000; + m_sQueueSample.m_nFrequency += + (m_sQueueSample.m_nEntityIndex << 16) % 1000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = 80; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -3112,7 +3651,8 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) emittingVol = (100.f * padRelativeAccerate) + 15; m_sQueueSample.m_nFrequency = (3000.f * padRelativeAccerate) + 6000; if(!boat->m_bIsAnchored) - m_sQueueSample.m_nFrequency = 11 * m_sQueueSample.m_nFrequency / 10; + m_sQueueSample.m_nFrequency = + 11 * m_sQueueSample.m_nFrequency / 10; } else { gasPedal = Abs(boat->m_fGasPedal); if(gasPedal > 0.0f) { @@ -3122,10 +3662,12 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) emittingVol = (100.f * gasPedal) + 15; m_sQueueSample.m_nFrequency = (3000.f * gasPedal) + 6000; if(!boat->m_bIsAnchored) - m_sQueueSample.m_nFrequency = 11 * m_sQueueSample.m_nFrequency / 10; + m_sQueueSample.m_nFrequency = + 11 * m_sQueueSample.m_nFrequency / 10; } } - m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 50.f, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, 50.f, m_sQueueSample.m_fDistance); if(!m_sQueueSample.m_bVolume) return 1; m_sQueueSample.m_nCounter = 40; m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_ACCEL; @@ -3137,7 +3679,8 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -3157,13 +3700,16 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_IDLE; if(LastAccel > 20) { oneShotVol = LastVol; - PlayOneShot(m_sQueueSample.m_nEntityIndex, SOUND_17, oneShotVol); + PlayOneShot(m_sQueueSample.m_nEntityIndex, SOUND_17, + oneShotVol); } } else { emittingVol = 105 * padAccelerate / 255 + 15; - m_sQueueSample.m_nFrequency = 4000 * padAccelerate / 255 + 8000; + m_sQueueSample.m_nFrequency = + 4000 * padAccelerate / 255 + 8000; if(!boat->m_bIsAnchored) - m_sQueueSample.m_nFrequency = 11 * m_sQueueSample.m_nFrequency / 10; + m_sQueueSample.m_nFrequency = + 11 * m_sQueueSample.m_nFrequency / 10; m_sQueueSample.m_nCounter = 40; m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_ACCEL; } @@ -3180,13 +3726,15 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) emittingVol = (105.f * gasPedal) + 15; m_sQueueSample.m_nFrequency = (4000.f * gasPedal) + 8000; if(!boat->m_bIsAnchored) - m_sQueueSample.m_nFrequency = 11 * m_sQueueSample.m_nFrequency / 10; + m_sQueueSample.m_nFrequency = + 11 * m_sQueueSample.m_nFrequency / 10; m_sQueueSample.m_nCounter = 40; m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_ACCEL; } } CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); - m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 50.f, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, 50.f, m_sQueueSample.m_fDistance); if(!m_sQueueSample.m_bVolume) return 1; m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex << 16) % 1000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; @@ -3196,7 +3744,8 @@ cAudioManager::ProcessBoatEngine(cVehicleParams *params) m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -3236,8 +3785,10 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams *params) m_sQueueSample.m_nFrequency = (6050.f * multiplier) + 16000; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = vol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -3281,10 +3832,12 @@ void cAudioManager::ProcessBridgeMotor() { if(m_sQueueSample.m_fDistance < bridgeIntensity) { - m_sQueueSample.m_bVolume = ComputeVolume(maxVolume, bridgeIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(maxVolume, bridgeIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 1; - m_sQueueSample.m_nSampleIndex = SFX_FISHING_BOAT_IDLE; // todo check sfx name + m_sQueueSample.m_nSampleIndex = + SFX_FISHING_BOAT_IDLE; // todo check sfx name m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 1; @@ -3293,7 +3846,8 @@ cAudioManager::ProcessBridgeMotor() m_sQueueSample.m_bEmittingVolume = maxVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = bridgeIntensity; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -3307,10 +3861,12 @@ cAudioManager::ProcessBridgeMotor() void cAudioManager::ProcessBridgeOneShots() { - if(CBridge::State == STATE_LIFT_PART_IS_UP && CBridge::OldState == STATE_LIFT_PART_MOVING_UP) { + if(CBridge::State == STATE_LIFT_PART_IS_UP && + CBridge::OldState == STATE_LIFT_PART_MOVING_UP) { m_sQueueSample.m_nSampleIndex = SFX_COL_CONTAINER_1; } else { - if(CBridge::State == STATE_LIFT_PART_IS_DOWN && CBridge::OldState == STATE_LIFT_PART_MOVING_DOWN) { + if(CBridge::State == STATE_LIFT_PART_IS_DOWN && + CBridge::OldState == STATE_LIFT_PART_MOVING_DOWN) { m_sQueueSample.m_nSampleIndex = SFX_COL_CONTAINER_1; } else { if(CBridge::State == STATE_LIFT_PART_MOVING_UP && @@ -3326,7 +3882,8 @@ cAudioManager::ProcessBridgeOneShots() } } if(m_sQueueSample.m_fDistance < bridgeIntensity) { - m_sQueueSample.m_bVolume = ComputeVolume(maxVolume, bridgeIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(maxVolume, bridgeIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; @@ -3359,12 +3916,14 @@ cAudioManager::ProcessBridgeWarning() m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 1; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BRIDGE_OPEN_WARNING); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_BRIDGE_OPEN_WARNING); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = 100; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 450.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -3392,12 +3951,14 @@ cAudioManager::ProcessCarBombTick(cVehicleParams *params) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 0; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COUNTDOWN); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_COUNTDOWN); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = 60; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -3424,9 +3985,10 @@ cAudioManager::ProcessCesna(cVehicleParams *params) } else if(nAccel < 60) { ++nAccel; } - AddPlayerCarSample(85 * (60 - nAccel) / 60 + 20, 8500 * nAccel / 60 + 17000, SFX_CESNA_IDLE, 0, - 52, 1); - AddPlayerCarSample(85 * nAccel / 60 + 20, 8500 * nAccel / 60 + 17000, SFX_CESNA_REV, 0, 2, 1); + AddPlayerCarSample(85 * (60 - nAccel) / 60 + 20, 8500 * nAccel / 60 + 17000, + SFX_CESNA_IDLE, 0, 52, 1); + AddPlayerCarSample(85 * nAccel / 60 + 20, 8500 * nAccel / 60 + 17000, + SFX_CESNA_REV, 0, 2, 1); } } else if(params->m_nIndex == DODO) { AddPlayerCarSample(105, 17000, SFX_CESNA_IDLE, 0, 52, 1); @@ -3445,7 +4007,8 @@ cAudioManager::ProcessCesna(cVehicleParams *params) m_sQueueSample.m_bEmittingVolume = 80; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 8.0f; m_sQueueSample.m_fSoundIntensity = 200.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -3454,7 +4017,8 @@ cAudioManager::ProcessCesna(cVehicleParams *params) AddSampleToRequestedQueue(); } if(params->m_fDistance < 8100.f) { - m_sQueueSample.m_bVolume = ComputeVolume(80, 90.f, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(80, 90.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_nSampleIndex = SFX_CESNA_REV; @@ -3466,9 +4030,10 @@ cAudioManager::ProcessCesna(cVehicleParams *params) m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bEmittingVolume = 80; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 8.0f; m_sQueueSample.m_fSoundIntensity = 90.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -3502,14 +4067,15 @@ cAudioManager::ProcessCinemaScriptObject(uint8 sound) if(distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); rand = m_anRandomTable[0] % 90 + 30; - m_sQueueSample.m_bVolume = - ComputeVolume(rand, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + rand, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nSampleIndex = counter % 3 + SFX_CINEMA_BASS_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 4); + m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency / 4); m_sQueueSample.m_nCounter = counter++; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; @@ -3543,7 +4109,8 @@ cAudioManager::ProcessCrane() distSquared = GetDistanceSquared(&this->m_sQueueSample.m_vecPos); if(distSquared < SQR(intensity)) { CalculateDistance(distCalculated, distSquared); - m_sQueueSample.m_bVolume = ComputeVolume(100, 80.f, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(100, 80.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nSampleIndex = SFX_CRANE_MAGNET; @@ -3553,10 +4120,12 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_nFrequency = 6000; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = 100; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset( - m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -3565,11 +4134,13 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); } - if(m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents) { + if(m_asAudioEntities[m_sQueueSample.m_nEntityIndex] + .m_AudioEvents) { m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nSampleIndex = SFX_COL_CAR_2; m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(SFX_COL_CAR_2); + SampleManager.GetSampleBaseFrequency( + SFX_COL_CAR_2); m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_bReverbFlag = true; @@ -3606,13 +4177,15 @@ cAudioManager::ProcessDocksScriptObject(uint8 sound) if(distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); rand = m_anRandomTable[0] % 60 + 40; - m_sQueueSample.m_bVolume = - ComputeVolume(rand, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + rand, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nSampleIndex = SFX_DOCKS_FOGHORN; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_DOCKS_FOGHORN); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 3); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_DOCKS_FOGHORN); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 3); m_sQueueSample.m_nCounter = counter++; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; @@ -3652,10 +4225,12 @@ cAudioManager::ProcessEngineDamage(cVehicleParams *params) emittingVolume = 60; m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; m_sQueueSample.m_nReleasingVolumeModificator = 7; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); } CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); - m_sQueueSample.m_bVolume = ComputeVolume(emittingVolume, engineDamageIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume(emittingVolume, engineDamageIntensity, + m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 28; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; @@ -3664,7 +4239,8 @@ cAudioManager::ProcessEngineDamage(cVehicleParams *params) m_sQueueSample.m_bEmittingVolume = emittingVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = engineDamageIntensity; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -3797,7 +4373,8 @@ cAudioManager::ProcessExplosions(int32 explosion) m_sQueueSample.m_nSampleIndex = SFX_EXPLOSION_1; m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 38000; if(type == EXPLOSION_HELI) - m_sQueueSample.m_nFrequency = 8 * m_sQueueSample.m_nFrequency / 10; + m_sQueueSample.m_nFrequency = + 8 * m_sQueueSample.m_nFrequency / 10; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; break; @@ -3807,8 +4384,9 @@ cAudioManager::ProcessExplosions(int32 explosion) distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); if(distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_bVolume = ComputeVolume(maxVolume, m_sQueueSample.m_fSoundIntensity, - m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(maxVolume, m_sQueueSample.m_fSoundIntensity, + m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = i; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -3835,7 +4413,8 @@ cAudioManager::ProcessFireHydrant() bool distCalculated = false; static const int intensity = 35; - m_sQueueSample.m_vecPos = ((CEntity*)m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_pEntity)->GetPosition(); + m_sQueueSample.m_vecPos = + ((CEntity *)m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_pEntity)->GetPosition(); distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); if(distSquared < SQR(intensity)) { CalculateDistance(distCalculated, distSquared); @@ -3851,7 +4430,8 @@ cAudioManager::ProcessFireHydrant() m_sQueueSample.m_bEmittingVolume = 40; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -3879,8 +4459,11 @@ void cAudioManager::ProcessFires(int32) m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; emittingVol = 100; m_sQueueSample.m_nFrequency = - 8 * SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE) / 10; - m_sQueueSample.m_nFrequency += i * ((uint32)m_sQueueSample.m_nFrequency >> 6); + 8 * + SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE) / + 10; + m_sQueueSample.m_nFrequency += + i * ((uint32)m_sQueueSample.m_nFrequency >> 6); m_sQueueSample.m_nReleasingVolumeModificator = 6; break; case ENTITY_TYPE_PED: @@ -3889,7 +4472,8 @@ void cAudioManager::ProcessFires(int32) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PED_ON_FIRE); emittingVol = 60; - m_sQueueSample.m_nFrequency += i * ((uint32)m_sQueueSample.m_nFrequency >> 6); + m_sQueueSample.m_nFrequency += + i * ((uint32)m_sQueueSample.m_nFrequency >> 6); m_sQueueSample.m_nReleasingVolumeModificator = 10; break; default: @@ -3897,15 +4481,18 @@ void cAudioManager::ProcessFires(int32) m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); - m_sQueueSample.m_nFrequency += i * ((uint32)m_sQueueSample.m_nFrequency >> 6); + m_sQueueSample.m_nFrequency += + i * ((uint32)m_sQueueSample.m_nFrequency >> 6); emittingVol = 80; m_sQueueSample.m_nReleasingVolumeModificator = 8; } } else { m_sQueueSample.m_fSoundIntensity = 50.0f; m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); - m_sQueueSample.m_nFrequency += i * ((uint32)m_sQueueSample.m_nFrequency >> 6); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); + m_sQueueSample.m_nFrequency += + i * ((uint32)m_sQueueSample.m_nFrequency >> 6); emittingVol = 80; m_sQueueSample.m_nReleasingVolumeModificator = 8; } @@ -3913,8 +4500,9 @@ void cAudioManager::ProcessFires(int32) distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); if(distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, - m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, + m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = i; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; @@ -3925,9 +4513,11 @@ void cAudioManager::ProcessFires(int32) m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -3954,7 +4544,9 @@ cAudioManager::ProcessFrontEnd() stereo = false; processedMission = false; switch(m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i]) { - case SOUND_WEAPON_SNIPER_SHOT_NO_ZOOM: m_sQueueSample.m_nSampleIndex = SFX_ERROR_FIRE_RIFLE; break; + case SOUND_WEAPON_SNIPER_SHOT_NO_ZOOM: + m_sQueueSample.m_nSampleIndex = SFX_ERROR_FIRE_RIFLE; + break; case SOUND_WEAPON_ROCKET_SHOT_NO_ZOOM: m_sQueueSample.m_nSampleIndex = SFX_ERROR_FIRE_ROCKET_LAUNCHER; break; @@ -4007,7 +4599,9 @@ cAudioManager::ProcessFrontEnd() case SOUND_RACE_START_2: case SOUND_RACE_START_1: case SOUND_CLOCK_TICK: m_sQueueSample.m_nSampleIndex = SFX_TIMER_BEEP; break; - case SOUND_RACE_START_GO: m_sQueueSample.m_nSampleIndex = SFX_PART_MISSION_COMPLETE; break; + case SOUND_RACE_START_GO: + m_sQueueSample.m_nSampleIndex = SFX_PART_MISSION_COMPLETE; + break; case SOUND_PART_MISSION_COMPLETE: m_sQueueSample.m_nSampleIndex = SFX_PART_MISSION_COMPLETE; processedMission = true; @@ -4045,7 +4639,9 @@ cAudioManager::ProcessFrontEnd() stereo = true; break; case SOUND_FRONTEND_NO_RADIO: - case SOUND_FRONTEND_RADIO_CHANGE: m_sQueueSample.m_nSampleIndex = SFX_RADIO_CLICK; break; + case SOUND_FRONTEND_RADIO_CHANGE: + m_sQueueSample.m_nSampleIndex = SFX_RADIO_CLICK; + break; case SOUND_A0: m_sQueueSample.m_nSampleIndex = SFX_INFO; break; default: continue; } @@ -4168,19 +4764,24 @@ cAudioManager::ProcessGarages() state = CGarages::aGarages[i].m_eGarageState; if(state == GS_OPENING || state == GS_CLOSING || state == GS_AFTERDROPOFF) { CalculateDistance(distCalculated, distSquared); - m_sQueueSample.m_bVolume = ComputeVolume(90, 80.f, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(90, 80.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { if(CGarages::aGarages[i].m_eGarageType == GARAGE_CRUSHER) { - if(CGarages::aGarages[i].m_eGarageState == GS_AFTERDROPOFF) { + if(CGarages::aGarages[i].m_eGarageState == + GS_AFTERDROPOFF) { if(!(m_FrameCounter & 1)) { LOOP_HELPER continue; } if(m_anRandomTable[1] & 1) { - sampleIndex = m_anRandomTable[2] % 5 + SFX_COL_CAR_1; + sampleIndex = + m_anRandomTable[2] % 5 + + SFX_COL_CAR_1; } else { sampleIndex = - m_anRandomTable[2] % 6 + SFX_COL_CAR_PANEL_1; + m_anRandomTable[2] % 6 + + SFX_COL_CAR_PANEL_1; } m_sQueueSample.m_nSampleIndex = sampleIndex; m_sQueueSample.m_nFrequency = @@ -4188,14 +4789,17 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nSampleIndex) >> 1; m_sQueueSample.m_nFrequency += - RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); + RandomDisplacement( + m_sQueueSample.m_nFrequency >> 4); m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bReleasingSoundFlag = true; m_sQueueSample.m_nCounter = iSound++; if(iSound < 32) iSound = 32; - m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; + m_sQueueSample.m_bBankIndex = + SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample + .m_nReleasingVolumeModificator = 3; m_sQueueSample.m_bEmittingVolume = 90; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset( @@ -4211,10 +4815,12 @@ cAudioManager::ProcessGarages() LOOP_HELPER continue; } - m_sQueueSample.m_nSampleIndex = SFX_FISHING_BOAT_IDLE; + m_sQueueSample.m_nSampleIndex = + SFX_FISHING_BOAT_IDLE; m_sQueueSample.m_nFrequency = 6543; } else { - m_sQueueSample.m_nSampleIndex = SFX_GARAGE_DOOR_LOOP; + m_sQueueSample.m_nSampleIndex = + SFX_GARAGE_DOOR_LOOP; m_sQueueSample.m_nFrequency = 13961; } m_sQueueSample.m_nCounter = i; @@ -4226,9 +4832,11 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_bEmittingVolume = 90; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 80.0f; m_sQueueSample.m_bReverbFlag = true; @@ -4259,7 +4867,9 @@ cAudioManager::ProcessHelicopter(cVehicleParams *params) static const tHelicopterSampleData gHeliSfxRanges[3] = { {400.f, 380.f, 100}, {100.f, 70.f, maxVolume}, {60.f, 30.f, maxVolume}}; - if(gHeliSfxRanges[0].m_fMaxDistance * gHeliSfxRanges[0].m_fMaxDistance <= params->m_fDistance) return false; + if(gHeliSfxRanges[0].m_fMaxDistance * gHeliSfxRanges[0].m_fMaxDistance <= + params->m_fDistance) + return false; CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); heli = (CHeli *)params->m_pVehicle; @@ -4269,25 +4879,28 @@ cAudioManager::ProcessHelicopter(cVehicleParams *params) if(dist >= MaxDist) return true; baseDist = gHeliSfxRanges[i].m_fBaseDistance; if(dist < baseDist) - emittingVol = (gHeliSfxRanges[i].m_bBaseVolume * ((MaxDist - dist) / (MaxDist - baseDist))); + emittingVol = (gHeliSfxRanges[i].m_bBaseVolume * + ((MaxDist - dist) / (MaxDist - baseDist))); else emittingVol = gHeliSfxRanges[i].m_bBaseVolume; - m_sQueueSample.m_bVolume = - ComputeVolume(emittingVol, gHeliSfxRanges[i].m_fMaxDistance, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + emittingVol, gHeliSfxRanges[i].m_fMaxDistance, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = i + 65; m_sQueueSample.m_nSampleIndex = i + SFX_HELI_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 0; - m_sQueueSample.m_nFrequency = 1200 * heli->m_nHeliId + SampleManager.GetSampleBaseFrequency( - m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency = + 1200 * heli->m_nHeliId + + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = gHeliSfxRanges[i].m_fMaxDistance; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -4324,14 +4937,15 @@ cAudioManager::ProcessHomeScriptObject(uint8 sound) if(dist < SQR(m_sQueueSample.m_fSoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(dist); rand = m_anRandomTable[0] % 30 + 40; - m_sQueueSample.m_bVolume = - ComputeVolume(rand, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + rand, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nSampleIndex = m_anRandomTable[0] % 5 + SFX_HOME_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); + m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nCounter = counter++; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; @@ -4397,7 +5011,8 @@ cAudioManager::ProcessJumboAccel(CPlane *plane) if(SetupJumboFlySound(20)) { modificator = (plane->m_fSpeed - 0.10334f) * 1.676f; if(modificator > 1.0f) modificator = 1.0f; - if(SetupJumboRumbleSound(maxVolume * modificator) && SetupJumboTaxiSound((1.0f - modificator) * 75.f)) { + if(SetupJumboRumbleSound(maxVolume * modificator) && + SetupJumboTaxiSound((1.0f - modificator) * 75.f)) { if(modificator < 0.2f) { whineSoundFreq = modificator * 5.f * 14600.0f + 29500; vol = modificator * 5.f * maxVolume; @@ -4436,7 +5051,8 @@ cAudioManager::ProcessJumboLanding(CPlane *plane) if(SetupJumboFlySound(107.f * modificator + 20)) { if(SetupJumboTaxiSound(75.f * (1.f - modificator))) { SetupJumboEngineSound(maxVolume, 22050); - SetupJumboWhineSound(18.f * (1.f - modificator), 14600.f * modificator + 29500); + SetupJumboWhineSound(18.f * (1.f - modificator), + 14600.f * modificator + 29500); } } } @@ -4446,8 +5062,10 @@ cAudioManager::ProcessJumboTakeOff(CPlane *plane) { const float modificator = (PlanePathPosition[plane->m_nPlaneId] - TakeOffPoint) / 300.f; - if(SetupJumboFlySound((107.f * modificator) + 20) && SetupJumboRumbleSound(maxVolume * (1.f - modificator))) { - if(SetupJumboEngineSound(maxVolume, 22050)) SetupJumboWhineSound(18.f * (1.f - modificator), 44100); + if(SetupJumboFlySound((107.f * modificator) + 20) && + SetupJumboRumbleSound(maxVolume * (1.f - modificator))) { + if(SetupJumboEngineSound(maxVolume, 22050)) + SetupJumboWhineSound(18.f * (1.f - modificator), 44100); } } @@ -4464,9 +5082,7 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) { switch(sound) { case SCRIPT_SOUND_LAUNDERETTE_LOOP_S: - case SCRIPT_SOUND_LAUNDERETTE_LOOP_L: - m_sQueueSample.m_fSoundIntensity = 30.0f; - break; + case SCRIPT_SOUND_LAUNDERETTE_LOOP_L: m_sQueueSample.m_fSoundIntensity = 30.0f; break; default: return; } float distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); @@ -4477,7 +5093,8 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nSampleIndex = SFX_LAUNDERETTE_LOOP; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_LAUNDERETTE_LOOP); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_LAUNDERETTE_LOOP); m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; @@ -4487,17 +5104,19 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_bEmittingVolume = 45; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); } - m_sQueueSample.m_bVolume = - ComputeVolume(110, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume(110, m_sQueueSample.m_fSoundIntensity, + m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nSampleIndex = SFX_LAUNDERETTE_SONG_LOOP; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_LAUNDERETTE_SONG_LOOP); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_LAUNDERETTE_SONG_LOOP); m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; @@ -4507,7 +5126,8 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_bEmittingVolume = 110; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -4787,7 +5407,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_STRIP_CLUB_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_1); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_1); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4797,7 +5418,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_STRIP_CLUB_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_1); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_1); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4807,7 +5429,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_STRIP_CLUB_2; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_2); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_2); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4817,7 +5440,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_STRIP_CLUB_2; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_2); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_2); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4831,7 +5455,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_DOG_FOOD_FACTORY; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_DOG_FOOD_FACTORY); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_DOG_FOOD_FACTORY); m_sQueueSample.m_nReleasingVolumeModificator = 6; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4841,7 +5466,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_DOG_FOOD_FACTORY; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_DOG_FOOD_FACTORY); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_DOG_FOOD_FACTORY); m_sQueueSample.m_nReleasingVolumeModificator = 6; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4853,7 +5479,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_CHINATOWN; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_CHINATOWN); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_CHINATOWN); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4863,7 +5490,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_CHINATOWN; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_CHINATOWN); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_CHINATOWN); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4873,7 +5501,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_ITALY; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_ITALY); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_ITALY); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4883,7 +5512,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_ITALY; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_ITALY); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_ITALY); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4893,7 +5523,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_GENERIC_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_1); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_1); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4903,7 +5534,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_GENERIC_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_1); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_1); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4913,7 +5545,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_GENERIC_2; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_2); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_2); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4923,7 +5556,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_GENERIC_2; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 110; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_2); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_2); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4971,7 +5605,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_BANK_ALARM_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 90; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BANK_ALARM_1); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_BANK_ALARM_1); m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4981,7 +5616,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_BANK_ALARM_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = 90; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BANK_ALARM_1); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_BANK_ALARM_1); m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -4991,7 +5627,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_POLICE_BALL_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_BALL_1); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_POLICE_BALL_1); m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -5001,7 +5638,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_POLICE_BALL_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_BALL_1); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_POLICE_BALL_1); m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -5011,7 +5649,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_RAVE_INDUSTRIAL; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAVE_INDUSTRIAL); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_RAVE_INDUSTRIAL); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -5021,20 +5660,24 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_RAVE_INDUSTRIAL; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAVE_INDUSTRIAL); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_RAVE_INDUSTRIAL); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_POLICE_CELL_BEATING_LOOP_S: - case SCRIPT_SOUND_POLICE_CELL_BEATING_LOOP_L: ProcessPoliceCellBeatingScriptObject(sound); return; + case SCRIPT_SOUND_POLICE_CELL_BEATING_LOOP_L: + ProcessPoliceCellBeatingScriptObject(sound); + return; case SCRIPT_SOUND_RAVE_1_LOOP_S: case SCRIPT_SOUND_RAVE_2_LOOP_S: m_sQueueSample.m_fSoundIntensity = 30.0f; m_sQueueSample.m_nSampleIndex = SFX_RAVE_COMMERCIAL; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -5045,7 +5688,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_RAVE_COMMERCIAL; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -5055,7 +5699,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_RAVE_SUBURBAN; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAVE_SUBURBAN); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_RAVE_SUBURBAN); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -5065,7 +5710,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_RAVE_SUBURBAN; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAVE_SUBURBAN); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_RAVE_SUBURBAN); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -5086,8 +5732,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); if(distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_bVolume = - ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = false; @@ -5097,7 +5743,8 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bEmittingVolume = emittingVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); } @@ -5121,7 +5768,8 @@ cAudioManager::ProcessMissionAudio() if(m_sMissionAudio.m_nSampleIndex != NO_SAMPLE) { switch(m_sMissionAudio.m_bLoadingStatus) { case LOADING_STATUS_NOT_LOADED: - SampleManager.PreloadStreamedFile(m_sMissionAudio.m_nSampleIndex, 1); + SampleManager.PreloadStreamedFile(m_sMissionAudio.m_nSampleIndex, + 1); m_sMissionAudio.m_bLoadingStatus = LOADING_STATUS_LOADED; nFramesUntilFailedLoad = 0; return; @@ -5136,15 +5784,19 @@ cAudioManager::ProcessMissionAudio() nFramesUntilFailedLoad = 0; } else if(!m_bUserPause) { if(++nFramesForPretendPlaying < 120) { - m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_PLAYING; + m_sMissionAudio.m_bPlayStatus = + PLAY_STATUS_PLAYING; } else { - m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_FINISHED; + m_sMissionAudio.m_bPlayStatus = + PLAY_STATUS_FINISHED; m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; } } } else { if(m_sMissionAudio.m_bPlayStatus) { - if(m_sMissionAudio.m_bPlayStatus != PLAY_STATUS_PLAYING) return; + if(m_sMissionAudio.m_bPlayStatus != + PLAY_STATUS_PLAYING) + return; if(m_bTimerJustReset) { ClearMissionAudio(); SampleManager.StopStreamedFile(1); @@ -5155,33 +5807,49 @@ cAudioManager::ProcessMissionAudio() if(!m_bUserPause) { if(nCheckPlayingDelay) { --nCheckPlayingDelay; - } else if(GetMissionScriptPoliceAudioPlayingStatus() == - PLAY_STATUS_FINISHED || - m_sMissionAudio.m_nMissionAudioCounter-- == 0) { - m_sMissionAudio.m_bPlayStatus = + } else if( + GetMissionScriptPoliceAudioPlayingStatus() == + PLAY_STATUS_FINISHED || + m_sMissionAudio + .m_nMissionAudioCounter-- == + 0) { + m_sMissionAudio + .m_bPlayStatus = PLAY_STATUS_FINISHED; - m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; - SampleManager.StopStreamedFile(1); - m_sMissionAudio.m_nMissionAudioCounter = 0; + m_sMissionAudio + .m_nSampleIndex = + NO_SAMPLE; + SampleManager + .StopStreamedFile(1); + m_sMissionAudio + .m_nMissionAudioCounter = + 0; } } } else if(m_sMissionAudio.field_22) { - if(SampleManager.IsStreamPlaying(1) || m_bUserPause || - m_bPreviousUserPause) { + if(SampleManager.IsStreamPlaying(1) || + m_bUserPause || m_bPreviousUserPause) { if(m_bUserPause) - SampleManager.PauseStream(1, 1); + SampleManager.PauseStream( + 1, 1); else - SampleManager.PauseStream(0, 1); + SampleManager.PauseStream( + 0, 1); } else { - m_sMissionAudio.m_bPlayStatus = PLAY_STATUS_FINISHED; - m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; + m_sMissionAudio.m_bPlayStatus = + PLAY_STATUS_FINISHED; + m_sMissionAudio.m_nSampleIndex = + NO_SAMPLE; SampleManager.StopStreamedFile(1); - m_sMissionAudio.m_nMissionAudioCounter = 0; + m_sMissionAudio + .m_nMissionAudioCounter = 0; } } else { if(m_bUserPause) return; if(nCheckPlayingDelay--) { - if(!SampleManager.IsStreamPlaying(1)) return; + if(!SampleManager.IsStreamPlaying( + 1)) + return; nCheckPlayingDelay = 0; } m_sMissionAudio.field_22 = 1; @@ -5189,26 +5857,36 @@ cAudioManager::ProcessMissionAudio() } else { if(MissionScriptAudioUsesPoliceChannel( m_sMissionAudio.m_nSampleIndex)) { - SetMissionScriptPoliceAudio(m_sMissionAudio.m_nSampleIndex); + SetMissionScriptPoliceAudio( + m_sMissionAudio.m_nSampleIndex); } else { - if(m_bUserPause) SampleManager.PauseStream(1, 1); - if(m_sMissionAudio.m_bPredefinedProperties) { - SampleManager.SetStreamedVolumeAndPan(80, 63, 1, 1); + if(m_bUserPause) + SampleManager.PauseStream(1, 1); + if(m_sMissionAudio + .m_bPredefinedProperties) { + SampleManager + .SetStreamedVolumeAndPan(80, 63, + 1, 1); } else { - distSquared = - GetDistanceSquared(&m_sMissionAudio.m_vecPos); + distSquared = GetDistanceSquared( + &m_sMissionAudio.m_vecPos); if(distSquared >= 2500.f) { emittingVol = 0; pan = 63; } else { dist = Sqrt(distSquared); - emittingVol = ComputeVolume(80, 50.0f, dist); - TranslateEntity(&m_sMissionAudio.m_vecPos, - &vec); - pan = ComputePan(50.f, &vec); + emittingVol = ComputeVolume( + 80, 50.0f, dist); + TranslateEntity( + &m_sMissionAudio + .m_vecPos, + &vec); + pan = + ComputePan(50.f, &vec); } - SampleManager.SetStreamedVolumeAndPan(emittingVol, pan, - 1, 1); + SampleManager + .SetStreamedVolumeAndPan( + emittingVol, pan, 1, 1); } SampleManager.StartPreloadedStreamedFile(1); } @@ -5220,7 +5898,7 @@ cAudioManager::ProcessMissionAudio() case 2: if(++nFramesUntilFailedLoad >= 90) { nFramesForPretendPlaying = 0; - g_bMissionAudioLoadFailed = 1; + g_bMissionAudioLoadFailed = true; nFramesUntilFailedLoad = 0; m_sMissionAudio.m_bLoadingStatus = LOADING_STATUS_LOADED; } @@ -5246,8 +5924,10 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams *params) velocityChange = Abs(params->m_fVelocityChange); } else { if(automobile->m_nDriveWheelsOnGround) - automobile->m_fGasPedalAudio = automobile->m_fGasPedalAudio * 0.4f; - velocityChange = automobile->m_fGasPedalAudio * params->m_pTransmission->fMaxVelocity; + automobile->m_fGasPedalAudio = + automobile->m_fGasPedalAudio * 0.4f; + velocityChange = automobile->m_fGasPedalAudio * + params->m_pTransmission->fMaxVelocity; } if(velocityChange > 0.001f) { allowedVelocity = 0.5f * params->m_pTransmission->fMaxVelocity; @@ -5256,24 +5936,29 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams *params) else emittingVol = 90; if(emittingVol) { - CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); - m_sQueueSample.m_bVolume = - ComputeVolume(emittingVol, 30.f, m_sQueueSample.m_fDistance); + CalculateDistance(params->m_bDistanceCalculated, + params->m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + emittingVol, 30.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 2; - m_sQueueSample.m_nSampleIndex = SFX_REMOTE_CONTROLLED_CAR; + m_sQueueSample.m_nSampleIndex = + SFX_REMOTE_CONTROLLED_CAR; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = - (11025.f * velocityChange / params->m_pTransmission->fMaxVelocity + + (11025.f * velocityChange / + params->m_pTransmission->fMaxVelocity + 11025.f); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset( - m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -5336,7 +6021,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_fSoundIntensity = 50.0f; m_sQueueSample.m_nSampleIndex = m_anRandomTable[iSound % 5] % 3 + SFX_BULLET_WALL_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); m_sQueueSample.m_nReleasingVolumeModificator = 9; m_sQueueSample.m_fSpeedMultiplier = 0.0f; @@ -5350,7 +6036,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_TRAIN_STATION_ANNOUNCE; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; emittingVolume = maxVolume; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_STATION_ANNOUNCE); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_TRAIN_STATION_ANNOUNCE); m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bIs2D = false; @@ -5433,7 +6120,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_fSoundIntensity = 60.0f; m_sQueueSample.m_nSampleIndex = m_anRandomTable[3] % 5 + SFX_COL_CAR_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; @@ -5445,7 +6133,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_fSoundIntensity = 60.0f; m_sQueueSample.m_nSampleIndex = SFX_TYRE_BUMP; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; @@ -5476,9 +6165,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); if(distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_bVolume = - ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, - m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + emittingVolume, m_sQueueSample.m_fSoundIntensity, + m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nLoopCount = 1; @@ -5520,8 +6209,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); if(distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_bVolume = - ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nLoopCount = 1; @@ -5546,7 +6235,7 @@ cAudioManager::ProcessPed(CPhysical *ped) m_sQueueSample.m_vecPos = ped->GetPosition(); - //params.m_bDistanceCalculated = false; + // params.m_bDistanceCalculated = false; params.m_pPed = (CPed *)ped; params.m_fDistance = GetDistanceSquared(&m_sQueueSample.m_vecPos); if(ped->m_modelIndex == MI_FATMALE02) ProcessPedHeadphones(¶ms); @@ -5566,10 +6255,11 @@ cAudioManager::ProcessPedHeadphones(cPedParams *params) CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); if(ped->bInVehicle && ped->m_nPedState == PED_DRIVING) { emittingVol = 10; - veh = (CAutomobile*)ped->m_pMyVehicle; + veh = (CAutomobile *)ped->m_pMyVehicle; if(veh && veh->IsCar()) { for(int32 i = 2; i < ARRAYSIZE(veh->Doors); i++) { - if(!veh->IsDoorClosed((eDoors)i) || veh->IsDoorMissing((eDoors)i)) { + if(!veh->IsDoorClosed((eDoors)i) || + veh->IsDoorMissing((eDoors)i)) { emittingVol = 42; break; } @@ -5579,7 +6269,8 @@ cAudioManager::ProcessPedHeadphones(cPedParams *params) emittingVol = 42; } - m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 7.f, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, 7.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 64; m_sQueueSample.m_nSampleIndex = SFX_HEADPHONES; @@ -5591,9 +6282,10 @@ cAudioManager::ProcessPedHeadphones(cPedParams *params) m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 7.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -5607,14 +6299,6 @@ cAudioManager::ProcessPedHeadphones(cPedParams *params) } } -#if 1 -WRAPPER -void -cAudioManager::ProcessPedOneShots(cPedParams *params) -{ - EAXJMP(0x56F650); -} -#else void cAudioManager::ProcessPedOneShots(cPedParams *params) { @@ -5625,15 +6309,15 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) bool stereo; int16 sound; - char noReflection; + bool noReflection; CWeapon *weapon; - float maxDist; + float maxDist = 0.f; // uninitialized variable static uint8 iSound = 21; - weapon = nil; + weapon = params->m_pPed->GetWeapon(); for(uint32 i = 0; i < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; i++) { - noReflection = 0; + noReflection = false; stereo = 0; m_sQueueSample.m_bRequireReflection = false; sound = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i]; @@ -5642,7 +6326,8 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) case SOUND_STEP_END: if(!params->m_pPed->bIsLooking) { emittingVol = m_anRandomTable[3] % 15 + 45; - if(FindPlayerPed() != m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_pEntity) + if(FindPlayerPed() != + m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_pEntity) emittingVol >>= 1; maxDist = 400.f; switch(params->m_pPed->m_nSurfaceTouched) { @@ -5651,7 +6336,8 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) break; case SURFACE_DIRT: case SURFACE_DIRTTRACK: - sampleIndex = m_anRandomTable[4] % 5 + SFX_FOOTSTEP_GRAVEL_1; + sampleIndex = + m_anRandomTable[4] % 5 + SFX_FOOTSTEP_GRAVEL_1; break; case SURFACE_METAL6: case SURFACE_METAL_DOOR: @@ -5667,10 +6353,12 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) sampleIndex = m_anRandomTable[0] % 5 + SFX_FOOTSTEP_METAL_1; break; case SURFACE_SAND: - sampleIndex = (m_anRandomTable[4] & 3) + SFX_FOOTSTEP_SAND_1; + sampleIndex = + (m_anRandomTable[4] & 3) + SFX_FOOTSTEP_SAND_1; break; case SURFACE_PUDDLE: - sampleIndex = (m_anRandomTable[3] & 3) + SFX_FOOTSTEP_WATER_1; + sampleIndex = + (m_anRandomTable[3] & 3) + SFX_FOOTSTEP_WATER_1; break; case SURFACE_WOOD: case SURFACE_WOOD_BOX: @@ -5681,37 +6369,46 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) sampleIndex = m_anRandomTable[2] % 5 + SFX_COL_VEG_1; break; default: - sampleIndex = m_anRandomTable[2] % 5 + SFX_FOOTSTEP_CONCRETE_1; + sampleIndex = + m_anRandomTable[2] % 5 + SFX_FOOTSTEP_CONCRETE_1; break; } m_sQueueSample.m_nSampleIndex = sampleIndex; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = - m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i] - 28; - m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 17); + m_sQueueSample.m_nCounter = + m_asAudioEntities[m_sQueueSample.m_nEntityIndex] + .m_awAudioEvent[i] - + 28; + m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency / 17); switch(params->m_pPed->m_nMoveState) { - case 2: + case PEDMOVE_WALK: emittingVol >>= 2; - m_sQueueSample.m_nFrequency = 9 * m_sQueueSample.m_nFrequency / 10; + m_sQueueSample.m_nFrequency = + 9 * m_sQueueSample.m_nFrequency / 10; break; - case 3: + case PEDMOVE_RUN: emittingVol >>= 1; - m_sQueueSample.m_nFrequency = 11 * m_sQueueSample.m_nFrequency / 10; + m_sQueueSample.m_nFrequency = + 11 * m_sQueueSample.m_nFrequency / 10; + break; + case PEDMOVE_SPRINT: + m_sQueueSample.m_nFrequency = + 12 * m_sQueueSample.m_nFrequency / 10; break; - case 4: m_sQueueSample.m_nFrequency = 12 * m_sQueueSample.m_nFrequency / 10; break; default: break; } - m_sQueueSample.field_16 = 5; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 20.0f; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; } break; @@ -5729,32 +6426,32 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) m_sQueueSample.m_nSampleIndex = SFX_BODY_LAND_AND_FALL; } m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = 1; - m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 17); - m_sQueueSample.field_16 = 2; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nCounter = 1; + m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency / 17); + m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; - break; } break; case SOUND_FIGHT_PUNCH_33: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_1; m_sQueueSample.m_nFrequency = 18000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound; + m_sQueueSample.m_nCounter = iSound; stereo = 1; ++iSound; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -5762,19 +6459,19 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[3] % 26 + 100; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; break; case SOUND_FIGHT_KICK_34: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_1; m_sQueueSample.m_nFrequency = 16500; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound; + m_sQueueSample.m_nCounter = iSound; stereo = 1; ++iSound; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -5782,19 +6479,19 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[3] % 26 + 100; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; break; case SOUND_FIGHT_HEADBUTT_35: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_1; m_sQueueSample.m_nFrequency = 20000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound; + m_sQueueSample.m_nCounter = iSound; stereo = 1; ++iSound; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -5802,19 +6499,19 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[3] % 26 + 100; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; break; case SOUND_FIGHT_PUNCH_36: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_2; m_sQueueSample.m_nFrequency = 18000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound; + m_sQueueSample.m_nCounter = iSound; stereo = 1; ++iSound; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -5822,19 +6519,19 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[3] % 26 + 100; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; break; case SOUND_FIGHT_PUNCH_37: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_2; m_sQueueSample.m_nFrequency = 16500; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound; + m_sQueueSample.m_nCounter = iSound; stereo = 1; ++iSound; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -5842,19 +6539,19 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[3] % 26 + 100; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; break; case SOUND_FIGHT_CLOSE_PUNCH_38: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_2; m_sQueueSample.m_nFrequency = 20000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound; + m_sQueueSample.m_nCounter = iSound; stereo = 1; ++iSound; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -5862,19 +6559,19 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[3] % 26 + 100; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; break; case SOUND_FIGHT_PUNCH_39: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_4; m_sQueueSample.m_nFrequency = 18000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound; + m_sQueueSample.m_nCounter = iSound; stereo = 1; ++iSound; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -5882,19 +6579,19 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[3] % 26 + 100; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; break; case SOUND_FIGHT_PUNCH_OR_KICK_BELOW_40: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_4; m_sQueueSample.m_nFrequency = 16500; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound; + m_sQueueSample.m_nCounter = iSound; stereo = 1; ++iSound; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -5902,19 +6599,19 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[3] % 26 + 100; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; break; case SOUND_FIGHT_PUNCH_41: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_4; m_sQueueSample.m_nFrequency = 20000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound; + m_sQueueSample.m_nCounter = iSound; stereo = 1; ++iSound; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -5922,19 +6619,19 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[3] % 26 + 100; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; break; case SOUND_FIGHT_PUNCH_FROM_BEHIND_42: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_5; m_sQueueSample.m_nFrequency = 18000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound; + m_sQueueSample.m_nCounter = iSound; stereo = 1; ++iSound; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -5942,19 +6639,19 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[3] % 26 + 100; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; break; case SOUND_FIGHT_KNEE_OR_KICK_43: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_5; m_sQueueSample.m_nFrequency = 16500; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound; + m_sQueueSample.m_nCounter = iSound; stereo = 1; ++iSound; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -5962,19 +6659,19 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[3] % 26 + 100; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; break; case SOUND_FIGHT_KICK_44: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_5; m_sQueueSample.m_nFrequency = 20000; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound; + m_sQueueSample.m_nCounter = iSound; stereo = 1; ++iSound; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -5982,18 +6679,18 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[3] % 26 + 100; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; break; case SOUND_WEAPON_BAT_ATTACK: m_sQueueSample.m_nSampleIndex = SFX_BAT_HIT_LEFT; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; stereo = 1; m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 22000; - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -6001,12 +6698,12 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) m_sQueueSample.m_nLoopEnd = -1; emittingVol = m_anRandomTable[2] % 20 + 100; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; if(m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = true; else - noReflection = 1; + noReflection = true; break; case SOUND_WEAPON_SHOT_FIRED: weapon = &ped->m_weapons[ped->m_currentWeapon]; @@ -6014,13 +6711,14 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) case WEAPONTYPE_COLT45: m_sQueueSample.m_nSampleIndex = SFX_COLT45_LEFT; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; stereo = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COLT45_LEFT); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; maxDist = SQR(50); m_sQueueSample.m_nLoopCount = 1; @@ -6028,23 +6726,24 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) m_sQueueSample.m_nLoopEnd = -1; emittingVol = m_anRandomTable[1] % 10 + 90; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; if(m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = true; else - noReflection = 1; + noReflection = true; break; case WEAPONTYPE_UZI: m_sQueueSample.m_nSampleIndex = SFX_UZI_LEFT; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; stereo = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_UZI_LEFT); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; @@ -6052,19 +6751,20 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[3] % 15 + 70; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; break; case WEAPONTYPE_SHOTGUN: m_sQueueSample.m_nSampleIndex = SFX_SHOTGUN_LEFT; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; stereo = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SHOTGUN_LEFT); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 60.0f; maxDist = 3600.f; m_sQueueSample.m_nLoopCount = 1; @@ -6072,23 +6772,24 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) m_sQueueSample.m_nLoopEnd = -1; emittingVol = m_anRandomTable[2] % 10 + 100; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; if(m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = true; else - noReflection = 1; + noReflection = true; break; case WEAPONTYPE_AK47: m_sQueueSample.m_nSampleIndex = SFX_AK47_LEFT; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; stereo = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_AK47_LEFT); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; @@ -6096,19 +6797,20 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[1] % 15 + 70; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; break; case WEAPONTYPE_M16: m_sQueueSample.m_nSampleIndex = SFX_M16_LEFT; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; stereo = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_M16_LEFT); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; @@ -6116,19 +6818,20 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[4] % 15 + 70; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; break; case WEAPONTYPE_SNIPERRIFLE: m_sQueueSample.m_nSampleIndex = SFX_SNIPER_LEFT; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; stereo = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SNIPER_LEFT); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 60.0f; maxDist = 3600.f; m_sQueueSample.m_nLoopCount = 1; @@ -6136,23 +6839,24 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) m_sQueueSample.m_nLoopEnd = -1; emittingVol = m_anRandomTable[4] % 10 + 110; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; if(m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = true; else - noReflection = 1; + noReflection = true; break; case WEAPONTYPE_ROCKETLAUNCHER: m_sQueueSample.m_nSampleIndex = SFX_ROCKET_LEFT; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; stereo = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_ROCKET_LEFT); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); - m_sQueueSample.field_16 = 1; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); + m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 90.0f; maxDist = 8100.f; m_sQueueSample.m_nLoopCount = 1; @@ -6160,38 +6864,39 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) m_sQueueSample.m_nLoopEnd = -1; emittingVol = m_anRandomTable[0] % 20 + 80; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; if(m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = true; else - noReflection = 1; + noReflection = true; break; case WEAPONTYPE_FLAMETHROWER: m_sQueueSample.m_nSampleIndex = SFX_FLAMETHROWER_LEFT; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = 9; + m_sQueueSample.m_nCounter = 9; emittingVol = 90; m_sQueueSample.m_nFrequency = (10 * m_sQueueSample.m_nEntityIndex & 2047) + SampleManager.GetSampleBaseFrequency(SFX_FLAMETHROWER_LEFT); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 4.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 60.0f; maxDist = 3600.f; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_bEmittingVolume = 90; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 0; - m_sQueueSample.field_76 = 6; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 0; + m_sQueueSample.m_nReleasingVolumeDivider = 6; if(m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = true; else - noReflection = 1; + noReflection = true; break; default: continue; } @@ -6202,164 +6907,70 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) switch(weapon->m_eWeaponType) { case WEAPONTYPE_COLT45: m_sQueueSample.m_nSampleIndex = SFX_PISTOL_RELOAD; - emittingVol = 75; - m_sQueueSample.m_counter = iSound++; - stereo = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PISTOL_RELOAD) + RandomDisplacement(300); - m_sQueueSample.m_nFrequency += RandomDisplacement(300); - m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.field_16 = 5; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_fSoundIntensity = 30.0f; - maxDist = SQR(30); - m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bEmittingVolume = 75; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; - m_sQueueSample.m_bRequireReflection = true; break; case WEAPONTYPE_UZI: m_sQueueSample.m_nSampleIndex = SFX_M16_RELOAD; - emittingVol = 75; - m_sQueueSample.m_counter = iSound++; - stereo = 1; m_sQueueSample.m_nFrequency = 39243; - m_sQueueSample.m_nFrequency += RandomDisplacement(300); - m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.field_16 = 5; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_fSoundIntensity = 30.0f; - maxDist = SQR(30); - m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bEmittingVolume = 75; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; - m_sQueueSample.m_bRequireReflection = true; break; case WEAPONTYPE_SHOTGUN: m_sQueueSample.m_nSampleIndex = SFX_AK47_RELOAD; - emittingVol = 75; - m_sQueueSample.m_counter = iSound++; - stereo = 1; m_sQueueSample.m_nFrequency = 30290; - m_sQueueSample.m_nFrequency += RandomDisplacement(300); - m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.field_16 = 5; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_fSoundIntensity = 30.0f; - maxDist = SQR(30); - m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bEmittingVolume = 75; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; - m_sQueueSample.m_bRequireReflection = true; break; case WEAPONTYPE_AK47: m_sQueueSample.m_nSampleIndex = SFX_AK47_RELOAD; - emittingVol = 75; - m_sQueueSample.m_counter = iSound++; - stereo = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_AK47_RELOAD); - m_sQueueSample.m_nFrequency += RandomDisplacement(300); - m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.field_16 = 5; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_fSoundIntensity = 30.0f; - maxDist = SQR(30); - m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bEmittingVolume = 75; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; - m_sQueueSample.m_bRequireReflection = true; break; case WEAPONTYPE_M16: m_sQueueSample.m_nSampleIndex = SFX_M16_RELOAD; - emittingVol = 75; - m_sQueueSample.m_counter = iSound++; - stereo = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_M16_RELOAD); - m_sQueueSample.m_nFrequency += RandomDisplacement(300); - m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.field_16 = 5; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_fSoundIntensity = 30.0f; - maxDist = SQR(30); - m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bEmittingVolume = 75; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; - m_sQueueSample.m_bRequireReflection = true; break; case WEAPONTYPE_SNIPERRIFLE: m_sQueueSample.m_nSampleIndex = SFX_RIFLE_RELOAD; - emittingVol = 75; - m_sQueueSample.m_counter = iSound++; - stereo = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RIFLE_RELOAD); - m_sQueueSample.m_nFrequency += RandomDisplacement(300); - m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.field_16 = 5; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_fSoundIntensity = 30.0f; - maxDist = SQR(30); - m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bEmittingVolume = 75; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; - m_sQueueSample.m_bRequireReflection = true; break; case WEAPONTYPE_ROCKETLAUNCHER: m_sQueueSample.m_nSampleIndex = SFX_ROCKET_RELOAD; - emittingVol = 75; - m_sQueueSample.m_counter = iSound++; - stereo = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_ROCKET_RELOAD); - m_sQueueSample.m_nFrequency += RandomDisplacement(300); - m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.field_16 = 5; - m_sQueueSample.field_48 = 0.0f; - m_sQueueSample.m_fSoundIntensity = 30.0f; - maxDist = SQR(30); - m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bEmittingVolume = 75; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; - m_sQueueSample.m_bRequireReflection = true; break; default: continue; } + emittingVol = 75; + m_sQueueSample.m_nCounter = iSound++; + stereo = 1; + m_sQueueSample.m_nFrequency += RandomDisplacement(300); + m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; + m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 30.0f; + maxDist = SQR(30); + m_sQueueSample.m_nLoopCount = 1; + m_sQueueSample.m_nLoopStart = 0; + m_sQueueSample.m_nLoopEnd = -1; + m_sQueueSample.m_bEmittingVolume = 75; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; + m_sQueueSample.m_bRequireReflection = true; break; case SOUND_WEAPON_AK47_BULLET_ECHO: case SOUND_WEAPON_UZI_BULLET_ECHO: case SOUND_WEAPON_M16_BULLET_ECHO: m_sQueueSample.m_nSampleIndex = SFX_UZI_END_LEFT; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; stereo = 1; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_UZI_END_LEFT); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_UZI_END_LEFT); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; @@ -6367,22 +6978,23 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) m_sQueueSample.m_nLoopEnd = -1; emittingVol = m_anRandomTable[4] % 10 + 40; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; if(m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = true; else - noReflection = 1; + noReflection = true; break; case SOUND_WEAPON_FLAMETHROWER_FIRE: m_sQueueSample.m_nSampleIndex = SFX_FLAMETHROWER_START_LEFT; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_FLAMETHROWER_START_LEFT); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); - m_sQueueSample.field_16 = 3; - m_sQueueSample.field_48 = 4.0f; + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 60.0f; maxDist = 3600.f; m_sQueueSample.m_nLoopCount = 1; @@ -6390,18 +7002,20 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) m_sQueueSample.m_nLoopEnd = -1; emittingVol = 70; m_sQueueSample.m_bEmittingVolume = 70; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; break; case SOUND_WEAPON_HIT_PED: m_sQueueSample.m_nSampleIndex = SFX_BULLET_PED; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; stereo = 1; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BULLET_PED); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 3); - m_sQueueSample.field_16 = 7; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_BULLET_PED); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 3); + m_sQueueSample.m_nReleasingVolumeModificator = 7; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; @@ -6409,17 +7023,17 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[0] % 20 + 90; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; break; case SOUND_SPLASH: m_sQueueSample.m_nSampleIndex = SFX_SPLASH_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_counter = iSound++; + m_sQueueSample.m_nCounter = iSound++; stereo = 1; m_sQueueSample.m_nFrequency = RandomDisplacement(1400) + 20000; - m_sQueueSample.field_16 = 1; - m_sQueueSample.field_48 = 0.0f; + m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; maxDist = 1600.f; m_sQueueSample.m_nLoopCount = 1; @@ -6427,50 +7041,48 @@ cAudioManager::ProcessPedOneShots(cPedParams *params) emittingVol = m_anRandomTable[2] % 30 + 70; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_bIsDistant = false; - m_sQueueSample.field_56 = 1; + m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReleasingSoundFlag = 1; m_sQueueSample.m_bRequireReflection = true; break; - default: - SetupPedComments(params, sound); - continue; + default: SetupPedComments(params, sound); continue; + } - if(stereo && iSound > 60) iSound = 21; - if(params->m_fDistance < maxDist) { - CalculateDistance((bool *)params, params->m_fDistance); - m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, - m_sQueueSample.m_fDistance); - if(m_sQueueSample.m_bVolume) { - if(noReflection) { - if(0.2f * m_sQueueSample.m_fSoundIntensity > - m_sQueueSample.m_fDistance) { - noReflection = 0; - } else { - m_sQueueSample.m_bIsDistant = true; - m_sQueueSample.m_bOffset = 0; - } + if(stereo && iSound > 60) iSound = 21; + if(params->m_fDistance < maxDist) { + CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, + m_sQueueSample.m_fDistance); + if(m_sQueueSample.m_bVolume) { + if(noReflection) { + if(0.2f * m_sQueueSample.m_fSoundIntensity <= + m_sQueueSample.m_fDistance) { + noReflection = 0; + } else { + m_sQueueSample.m_bIs2D = true; + m_sQueueSample.m_bOffset = 0; + } + } + m_sQueueSample.m_bReverbFlag = true; + AddSampleToRequestedQueue(); + if(noReflection) { + m_sQueueSample.m_bOffset = 127; + ++m_sQueueSample.m_nSampleIndex; + if(m_asAudioEntities[m_sQueueSample.m_nEntityIndex] + .m_awAudioEvent[i] != SOUND_WEAPON_SHOT_FIRED || + weapon->m_eWeaponType != WEAPONTYPE_FLAMETHROWER) { + m_sQueueSample.m_nCounter = iSound++; + if(iSound > 60) iSound = 21; + } else { + ++m_sQueueSample.m_nCounter; } - m_sQueueSample.m_bReverbFlag = true; AddSampleToRequestedQueue(); - if(noReflection) { - m_sQueueSample.m_bOffset = 127; - ++m_sQueueSample.m_nSampleIndex; - if(m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i] != - 47 || - weapon->m_eWeaponType != WEAPONTYPE_FLAMETHROWER) { - m_sQueueSample.m_counter = iSound++; - if(iSound > 60) iSound = 21; - } else { - ++m_sQueueSample.m_counter; - } - AddSampleToRequestedQueue(); - } } } } } } -#endif void cAudioManager::ProcessPhysical(int32 id) @@ -6478,8 +7090,12 @@ cAudioManager::ProcessPhysical(int32 id) CPhysical *entity = (CPhysical *)m_asAudioEntities[id].m_pEntity; if(entity) { switch(entity->m_type) { - case ENTITY_TYPE_VEHICLE: ProcessVehicle((CVehicle *)m_asAudioEntities[id].m_pEntity); break; - case ENTITY_TYPE_PED: ProcessPed((CPhysical *)m_asAudioEntities[id].m_pEntity); break; + case ENTITY_TYPE_VEHICLE: + ProcessVehicle((CVehicle *)m_asAudioEntities[id].m_pEntity); + break; + case ENTITY_TYPE_PED: + ProcessPed((CPhysical *)m_asAudioEntities[id].m_pEntity); + break; default: return; } } @@ -6497,18 +7113,93 @@ cAudioManager::ProcessPlane(cVehicleParams *params) struct tVehicleSampleData { eSfxSample m_nAccelerationSampleIndex; - char m_bEngineSoundType; + uint8 m_bEngineSoundType; char gap_5[3]; eSfxSample m_nHornSample; int32 m_nHornFrequency; - char m_nSirenOrAlarmSample; - int m_nSirenOrAlarmFrequency; - char m_bDoorType; + uint8 m_nSirenOrAlarmSample; + int32 m_nSirenOrAlarmFrequency; + uint8 m_bDoorType; char gap_25[3]; }; -int32 *CSWTCH_554 = (int32 *)0x606A50; -tVehicleSampleData *CarSounds = (tVehicleSampleData *)0x606204; +// int32 *GearFreqAdj = (int32 *)0x606A50; +int32 GearFreqAdj[] = {112, 23, 0, 0, 112, 23, 0, 0, 72, 13, 0, 0, + 176, 4, 0, 0, 0, 0, 0, 0, 24, 252, 255, 255}; + +// tVehicleSampleData *CarSounds = (tVehicleSampleData *)0x606204; + +const tVehicleSampleData CarSounds[70] = { + {SFX_CAR_REV_2, 2, "", SFX_CAR_HORN_JEEP, 26513, SFX_CAR_ALARM_1, 9935, 1}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_56CHEV, 11487, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_8, 8, "", SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_ALARM_1, 10928, 1}, + {SFX_CAR_REV_6, 6, "", SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_ALARM_1, 9935, 2}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_56CHEV, 12893, SFX_CAR_ALARM_1, 8941, 0}, + {SFX_CAR_REV_5, 5, "", SFX_CAR_HORN_BMW328, 10706, SFX_CAR_ALARM_1, 11922, 1}, + {SFX_CAR_REV_4, 4, "", SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_ALARM_1, 7948, 2}, + {SFX_CAR_REV_6, 6, "", SFX_CAR_HORN_TRUCK, 29711, SFX_POLICE_SIREN_SLOW, 11556, 2}, + {SFX_CAR_REV_6, 6, "", SFX_CAR_HORN_TRUCK, 31478, SFX_CAR_ALARM_1, 8941, 2}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_BMW328, 9538, SFX_CAR_ALARM_1, 12220, 1}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_3, 3, "", SFX_CAR_HORN_BMW328, 12017, SFX_CAR_ALARM_1, 9935, 1}, + {SFX_CAR_REV_2, 2, "", SFX_CAR_HORN_JEEP, 22295, SFX_CAR_ALARM_1, 12200, 1}, + {SFX_CAR_REV_4, 4, "", SFX_CAR_HORN_BUS2, 18000, SFX_CAR_ALARM_1, 13400, 1}, + {SFX_CAR_REV_4, 4, "", SFX_CAR_HORN_BUS, 18286, SFX_CAR_ALARM_1, 9935, 2}, + {SFX_CAR_REV_3, 3, "", SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_ALARM_1, 13600, 1}, + {SFX_CAR_REV_4, 4, "", SFX_CAR_HORN_JEEP, 22295, SFX_AMBULANCE_SIREN_SLOW, 8795, 2}, + {SFX_CAR_REV_5, 5, "", SFX_CAR_HORN_PORSCHE, 9271, SFX_POLICE_SIREN_SLOW, 16168, 1}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_56CHEV, 12170, SFX_CAR_ALARM_1, 8000, 1}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_BUS2, 12345, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_2, 2, "", SFX_CAR_HORN_BMW328, 10796, SFX_CAR_ALARM_1, 8543, 1}, + {SFX_CAR_REV_5, 5, "", SFX_CAR_HORN_PORSCHE, 9271, SFX_CAR_ALARM_1, 9935, 1}, + {SFX_CAR_REV_2, 2, "", SFX_CAR_HORN_PICKUP, 10924, SFX_CAR_ALARM_1, 9935, 1}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_PICKUP, 11025, SFX_ICE_CREAM_TUNE, 11025, 0}, + {SFX_CAR_REV_7, 7, "", SFX_CAR_HORN_JEEP, 26513, SFX_CAR_ALARM_1, 9935, 1}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 26513, SFX_CAR_ALARM_1, 10000, 0}, + {SFX_CAR_REV_5, 5, "", SFX_CAR_HORN_BMW328, 10706, SFX_POLICE_SIREN_SLOW, 13596, 1}, + {SFX_CAR_REV_4, 4, "", SFX_CAR_HORN_BUS, 17260, SFX_POLICE_SIREN_SLOW, 13000, 2}, + {SFX_CAR_REV_4, 4, "", SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_ALARM_1, 9935, 2}, + {SFX_CAR_REV_8, 8, "", SFX_CAR_HORN_PORSCHE, 10400, SFX_CAR_ALARM_1, 10123, 1}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 26513, SFX_POLICE_SIREN_SLOW, 13596, 0}, + {SFX_CAR_REV_6, 6, "", SFX_CAR_HORN_BUS2, 11652, SFX_CAR_ALARM_1, 10554, 3}, + {SFX_CAR_REV_6, 6, "", SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_ALARM_1, 8000, 2}, + {SFX_CAR_REV_6, 6, "", SFX_CAR_HORN_TRUCK, 28043, SFX_CAR_ALARM_1, 9935, 2}, + {SFX_CAR_REV_1, 0, "", SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_ALARM_1, 9935, 3}, + {SFX_CAR_REV_1, 0, "", SFX_CAR_HORN_JEEP, 26513, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CESNA_IDLE, 0, "", SFX_CAR_HORN_JEEP, 26513, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_6, 6, "", SFX_CAR_HORN_BUS, 16291, SFX_CAR_ALARM_1, 7500, 3}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_56CHEV, 10233, SFX_CAR_ALARM_1, 8935, 0}, + {SFX_CAR_REV_4, 4, "", SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_ALARM_1, 8935, 0}, + {SFX_CAR_REV_1, 0, "", SFX_CAR_HORN_PICKUP, 2000, SFX_CAR_ALARM_1, 17000, 0}, + {SFX_CAR_REV_4, 4, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_4, 4, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_5, 5, "", SFX_CAR_HORN_BMW328, 9003, SFX_CAR_ALARM_1, 9935, 1}, + {SFX_CAR_REV_2, 2, "", SFX_CAR_HORN_PORSCHE, 12375, SFX_CAR_ALARM_1, 9935, 1}, + {SFX_CAR_REV_5, 5, "", SFX_CAR_HORN_BUS2, 15554, SFX_CAR_ALARM_1, 9935, 1}, + {SFX_CAR_REV_7, 7, "", SFX_CAR_HORN_BUS2, 13857, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_7, 7, "", SFX_CAR_HORN_PICKUP, 10924, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_4, 4, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 2}, + {SFX_CAR_REV_1, 0, "", SFX_CAR_HORN_JEEP, 20143, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 0, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_4, 4, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9000, 0}, + {SFX_CAR_REV_6, 6, "", SFX_CAR_HORN_TRUCK, 28043, SFX_CAR_ALARM_1, 9935, 2}, + {SFX_CAR_REV_4, 4, "", SFX_CAR_HORN_BUS, 18286, SFX_CAR_ALARM_1, 9935, 2}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_4, 4, "", SFX_CAR_HORN_BUS2, 18000, SFX_CAR_ALARM_1, 13400, 1}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}, + {SFX_CAR_REV_1, 1, "", SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, 0}}; void cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams *params, CAutomobile *automobile) @@ -6547,7 +7238,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams *params, CAutomobile * processedAccelSampleStopped = 0; if(bPlayerJustEnteredCar) { bAccelSampleStopped = 1; - bPlayerJustEnteredCar = 0; + bPlayerJustEnteredCar = false; nCruising = 0; LastAccel = 0; bLostTractionLastFrame = 0; @@ -6571,7 +7262,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams *params, CAutomobile * if(transmission->nDriveType == '4') { wheelInUseCounter = 0; - for (uint8 i = 0; i < ARRAY_SIZE(automobile->m_aWheelState); i++){ + for(uint8 i = 0; i < ARRAY_SIZE(automobile->m_aWheelState); i++) { if(automobile->m_aWheelState[i]) ++wheelInUseCounter; } if(wheelInUseCounter > 2) lostTraction = 1; @@ -6580,7 +7271,8 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams *params, CAutomobile * (automobile->m_aWheelState[1] || automobile->m_aWheelState[3])) { lostTraction = 1; } - } else if(transmission->nDriveType == 'R' && (automobile->m_aWheelState[1] || automobile->m_aWheelState[3])) { + } else if(transmission->nDriveType == 'R' && + (automobile->m_aWheelState[1] || automobile->m_aWheelState[3])) { lostTraction = 1; } if(0.0f != velocityChange) { @@ -6602,11 +7294,13 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams *params, CAutomobile * SampleManager.StopChannel(m_bActiveSamples); bAccelSampleStopped = 1; } - if(!automobile->m_nWheelsOnGround || automobile->bIsHandbrakeOn || lostTraction) { + if(!automobile->m_nWheelsOnGround || automobile->bIsHandbrakeOn || + lostTraction) { gasPedalAudio = automobile->m_fGasPedalAudio; } else { gasPedalAudio = - min(1.0f, params->m_fVelocityChange / params->m_pTransmission->fMaxReverseVelocity); + min(1.0f, params->m_fVelocityChange / + params->m_pTransmission->fMaxReverseVelocity); } gasPedalAudio = max(0.0f, gasPedalAudio); automobile->m_fGasPedalAudio = gasPedalAudio; @@ -6616,16 +7310,19 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams *params, CAutomobile * bAccelSampleStopped = 1; } nCruising = 0; - if(!automobile->m_nWheelsOnGround || automobile->bIsHandbrakeOn || lostTraction || - params->m_fVelocityChange >= 0.01f && automobile->m_fGasPedalAudio > 0.2f) { + if(!automobile->m_nWheelsOnGround || automobile->bIsHandbrakeOn || + lostTraction || + params->m_fVelocityChange >= 0.01f && + automobile->m_fGasPedalAudio > 0.2f) { automobile->m_fGasPedalAudio = automobile->m_fGasPedalAudio * 0.6f; gasPedalAudio = automobile->m_fGasPedalAudio; } if(gasPedalAudio > 0.05f) { freq = (5000.f * (gasPedalAudio - 0.05f) * 20.f / 19) + 19000; if(engineSoundType == 6) freq >>= 1; - AddPlayerCarSample((25.f * (gasPedalAudio - 0.05f) * 20.f / 19) + 40, freq, - (soundOffset + SFX_CAR_FINGER_OFF_ACCEL_1), + AddPlayerCarSample((25.f * (gasPedalAudio - 0.05f) * 20.f / 19) + + 40, + freq, (soundOffset + SFX_CAR_FINGER_OFF_ACCEL_1), engineSoundType, 63, 0); } } @@ -6642,16 +7339,19 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams *params, CAutomobile * return; } if(!nCruising) { - if(accelerateState < 150 || !automobile->m_nWheelsOnGround || automobile->bIsHandbrakeOn || - lostTraction || - currentGear < 2 && - velocityChange - automobile->m_fVelocityChangeForAudio < 0.01f) { // here could be used abs - if(!automobile->m_nWheelsOnGround || automobile->bIsHandbrakeOn || lostTraction) { - if(!automobile->m_nWheelsOnGround && automobile->m_nDriveWheelsOnGround || + if(accelerateState < 150 || !automobile->m_nWheelsOnGround || + automobile->bIsHandbrakeOn || lostTraction || + currentGear < 2 && velocityChange - automobile->m_fVelocityChangeForAudio < + 0.01f) { // here could be used abs + if(!automobile->m_nWheelsOnGround || automobile->bIsHandbrakeOn || + lostTraction) { + if(!automobile->m_nWheelsOnGround && + automobile->m_nDriveWheelsOnGround || (automobile->bIsHandbrakeOn && !bHandbrakeOnLastFrame || lostTraction && !bLostTractionLastFrame) && automobile->m_nWheelsOnGround) { - automobile->m_fGasPedalAudio = automobile->m_fGasPedalAudio * 0.6f; + automobile->m_fGasPedalAudio = + automobile->m_fGasPedalAudio * 0.6f; } freqModifier = 0; baseFreq = (15000.f * automobile->m_fGasPedalAudio) + 14000; @@ -6689,13 +7389,14 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams *params, CAutomobile * SampleManager.SetChannel3DPosition(m_bActiveSamples, pos.x, pos.y, pos.z); SampleManager.SetChannel3DDistances(m_bActiveSamples, 50.f, 12.5f); if(engineSoundType == 6) - freq = (CSWTCH_554[CurrentPretendGear] + freqModifier + 22050) >> 1; + freq = + (GearFreqAdj[CurrentPretendGear] + freqModifier + 22050) >> 1; else - freq = CSWTCH_554[CurrentPretendGear] + freqModifier + 22050; + freq = GearFreqAdj[CurrentPretendGear] + freqModifier + 22050; SampleManager.SetChannelFrequency(m_bActiveSamples, freq); if(!channelUsed) { - SampleManager.SetChannelReverbFlag(m_bActiveSamples, - m_bDynamicAcousticModelingStatus != 0); + SampleManager.SetChannelReverbFlag( + m_bActiveSamples, m_bDynamicAcousticModelingStatus != 0); SampleManager.StartChannel(m_bActiveSamples); } LastAccel = accelerateState; @@ -6705,20 +7406,22 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams *params, CAutomobile * return; } if(processedAccelSampleStopped) { - if(!SampleManager.InitialiseChannel(m_bActiveSamples, soundOffset + 345, 0)) return; + if(!SampleManager.InitialiseChannel(m_bActiveSamples, soundOffset + 345, 0)) + return; SampleManager.SetChannelLoopCount(m_bActiveSamples, 1); SampleManager.SetChannelLoopPoints(m_bActiveSamples, 0, -1); SampleManager.SetChannelEmittingVolume(m_bActiveSamples, 85); SampleManager.SetChannel3DPosition(m_bActiveSamples, pos.x, pos.y, pos.z); SampleManager.SetChannel3DDistances(m_bActiveSamples, 50.f, 12.5f); if(engineSoundType == 6) - freq = (CSWTCH_554[CurrentPretendGear] + freqModifier + 22050) >> 1; + freq = + (GearFreqAdj[CurrentPretendGear] + freqModifier + 22050) >> 1; else - freq = CSWTCH_554[CurrentPretendGear] + freqModifier + 22050; + freq = GearFreqAdj[CurrentPretendGear] + freqModifier + 22050; SampleManager.SetChannelFrequency(m_bActiveSamples, freq); if(!channelUsed) { - SampleManager.SetChannelReverbFlag(m_bActiveSamples, - m_bDynamicAcousticModelingStatus != 0); + SampleManager.SetChannelReverbFlag( + m_bActiveSamples, m_bDynamicAcousticModelingStatus != 0); SampleManager.StartChannel(m_bActiveSamples); } LastAccel = accelerateState; @@ -6729,20 +7432,21 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams *params, CAutomobile * } if(CurrentPretendGear < params->m_pTransmission->nNumberOfGears - 1) { ++CurrentPretendGear; - if(!SampleManager.InitialiseChannel(m_bActiveSamples, soundOffset + 345, 0)) return; + if(!SampleManager.InitialiseChannel(m_bActiveSamples, soundOffset + 345, 0)) + return; SampleManager.SetChannelLoopCount(m_bActiveSamples, 1); SampleManager.SetChannelLoopPoints(m_bActiveSamples, 0, -1); SampleManager.SetChannelEmittingVolume(m_bActiveSamples, 85); SampleManager.SetChannel3DPosition(m_bActiveSamples, pos.x, pos.y, pos.z); SampleManager.SetChannel3DDistances(m_bActiveSamples, 50.f, 12.5f); - freq = CSWTCH_554[CurrentPretendGear] + freqModifier + 22050; + freq = GearFreqAdj[CurrentPretendGear] + freqModifier + 22050; if(engineSoundType == 6) freq >>= 1; SampleManager.SetChannelFrequency(m_bActiveSamples, freq); if(!channelUsed) { - SampleManager.SetChannelReverbFlag(m_bActiveSamples, - m_bDynamicAcousticModelingStatus != 0); + SampleManager.SetChannelReverbFlag( + m_bActiveSamples, m_bDynamicAcousticModelingStatus != 0); SampleManager.StartChannel(m_bActiveSamples); } LastAccel = accelerateState; @@ -6754,8 +7458,8 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams *params, CAutomobile * nCruising = 1; } bAccelSampleStopped = 1; - if(accelerateState < 150 || !automobile->m_nWheelsOnGround || automobile->bIsHandbrakeOn || lostTraction || - currentGear < params->m_pTransmission->nNumberOfGears - 1) { + if(accelerateState < 150 || !automobile->m_nWheelsOnGround || automobile->bIsHandbrakeOn || + lostTraction || currentGear < params->m_pTransmission->nNumberOfGears - 1) { nCruising = 0; } else { if(accelerateState >= 220 && @@ -6766,8 +7470,8 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams *params, CAutomobile * } freq = 27 * nCruising + freqModifier + 22050; if(engineSoundType == 6) freq >>= 1; - AddPlayerCarSample(85, freq, (soundOffset + SFX_CAR_AFTER_ACCEL_1), - engineSoundType, 64, 1); + AddPlayerCarSample(85, freq, (soundOffset + SFX_CAR_AFTER_ACCEL_1), engineSoundType, + 64, 1); } LastAccel = accelerateState; @@ -6806,12 +7510,14 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = sampleIndex; emittingVol = m_anRandomTable[0] % 50 + 55; m_sQueueSample.m_bVolume = - ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, + m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); + m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nCounter = counter++; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; @@ -6889,10 +7595,11 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_fDistance = Sqrt(distSquared); if(sound != SCRIPT_SOUND_MISTY_SEX_S && sound != SCRIPT_SOUND_MISTY_SEX_L) { m_sQueueSample.m_bVolume = - ComputeVolume(maxVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + ComputeVolume(maxVolume, m_sQueueSample.m_fSoundIntensity, + m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { - m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; @@ -6901,9 +7608,10 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bEmittingVolume = maxVolume; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -6912,14 +7620,15 @@ cAudioManager::ProcessPornCinema(uint8 sound) time = CTimer::GetTimeInMilliseconds(); if(time > gPornNextTime) { - m_sQueueSample.m_bVolume = - ComputeVolume(90, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + 90, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { rand = m_anRandomTable[1] & 1; m_sQueueSample.m_nSampleIndex = rand + sample; - m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); + m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); m_sQueueSample.m_nCounter = rand + 1; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; @@ -6967,21 +7676,25 @@ cAudioManager::ProcessProjectiles() } m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_vecPos = CProjectileInfo::ms_apProjectile[i]->GetPosition(); + m_sQueueSample.m_vecPos = + CProjectileInfo::ms_apProjectile[i]->GetPosition(); float distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); if(distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, - m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, + m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = i; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; @@ -7006,13 +7719,14 @@ cAudioManager::ProcessRainOnVehicle(cVehicleParams *params) veh->m_bRainAudioCounter = 0; CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); emittingVol = 30.f * CWeather::Rain; - m_sQueueSample.m_bVolume = - ComputeVolume(emittingVol, rainOnVehicleIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + emittingVol, rainOnVehicleIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = veh->m_bRainSamplesCounter++; veh = params->m_pVehicle; if(veh->m_bRainSamplesCounter > 4) veh->m_bRainSamplesCounter = 68; - m_sQueueSample.m_nSampleIndex = (m_anRandomTable[1] & 3) + SFX_CAR_RAIN_1; + m_sQueueSample.m_nSampleIndex = + (m_anRandomTable[1] & 3) + SFX_CAR_RAIN_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 9; @@ -7064,7 +7778,8 @@ cAudioManager::ProcessReverseGear(cVehicleParams *params) CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); automobile = (CAutomobile *)params->m_pVehicle; if(automobile->m_nWheelsOnGround) { - modificator = params->m_fVelocityChange / params->m_pTransmission->fMaxReverseVelocity; + modificator = params->m_fVelocityChange / + params->m_pTransmission->fMaxReverseVelocity; } else { if(automobile->m_nDriveWheelsOnGround) automobile->m_fGasPedalAudio = automobile->m_fGasPedalAudio * 0.4f; @@ -7072,7 +7787,8 @@ cAudioManager::ProcessReverseGear(cVehicleParams *params) } modificator = Abs(modificator); emittingVol = (24.f * modificator); - m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, reverseGearIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, reverseGearIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { if(params->m_pVehicle->m_fGasPedal >= 0.0f) { m_sQueueSample.m_nCounter = 62; @@ -7089,7 +7805,8 @@ cAudioManager::ProcessReverseGear(cVehicleParams *params) m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = reverseGearIntensity; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -7123,7 +7840,8 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nSampleIndex = SFX_SAWMILL_LOOP; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SAWMILL_LOOP); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_SAWMILL_LOOP); m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; @@ -7133,20 +7851,21 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_bEmittingVolume = 30; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); } time = CTimer::GetTimeInMilliseconds(); if(time > gSawMillNextTime) { - m_sQueueSample.m_bVolume = - ComputeVolume(70, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + 70, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nSampleIndex = SFX_SAWMILL_CUT_WOOD; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; @@ -7186,9 +7905,7 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) switch(sound) { case SCRIPT_SOUND_SHOP_LOOP_S: - case SCRIPT_SOUND_SHOP_LOOP_L: - m_sQueueSample.m_fSoundIntensity = 30.0f; - break; + case SCRIPT_SOUND_SHOP_LOOP_L: m_sQueueSample.m_fSoundIntensity = 30.0f; break; default: return; } distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); @@ -7199,7 +7916,8 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nSampleIndex = SFX_SHOP_LOOP; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SHOP_LOOP); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_SHOP_LOOP); m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; @@ -7209,21 +7927,22 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) m_sQueueSample.m_bEmittingVolume = 30; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); } time = CTimer::GetTimeInMilliseconds(); if(time > gShopNextTime) { - m_sQueueSample.m_bVolume = - ComputeVolume(70, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + 70, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { rand = m_anRandomTable[1] & 1; m_sQueueSample.m_nSampleIndex = rand + SFX_SHOP_TILL_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nCounter = rand + 1; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 1; @@ -7259,7 +7978,8 @@ cAudioManager::ProcessSpecial() CPlayerPed *playerPed = FindPlayerPed(); if(playerPed) { const PedState &state = playerPed->m_nPedState; - if(state != PED_ENTER_CAR && state != PED_STEAL_CAR && !playerPed->bInVehicle) + if(state != PED_ENTER_CAR && state != PED_STEAL_CAR && + !playerPed->bInVehicle) SampleManager.StopChannel(m_bActiveSamples); } } @@ -7280,7 +8000,8 @@ cAudioManager::ProcessTrainNoise(cVehicleParams *params) speedMultipler = min(1.0f, train->m_fSpeed * 250.f / 51.f); emittingVol = (75.f * speedMultipler); if(train->m_fWagonPosition == 0.0f) { - m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 300.f, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, 300.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 32; m_sQueueSample.m_nSampleIndex = SFX_TRAIN_FAR; @@ -7292,9 +8013,10 @@ cAudioManager::ProcessTrainNoise(cVehicleParams *params) m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = 300.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -7305,7 +8027,8 @@ cAudioManager::ProcessTrainNoise(cVehicleParams *params) } } if(params->m_fDistance < 4900.f) { - m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 70.f, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, 70.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 33; m_sQueueSample.m_nSampleIndex = SFX_TRAIN_NEAR; @@ -7317,8 +8040,11 @@ cAudioManager::ProcessTrainNoise(cVehicleParams *params) 100 * m_sQueueSample.m_nEntityIndex % 987; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 70.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -7353,7 +8079,8 @@ cAudioManager::ProcessVehicle(CVehicle *veh) if(params.m_pVehicle->m_status == STATUS_SIMPLE) velChange = params.m_pVehicle->AutoPilot.m_fMaxTrafficSpeed * 0.02f; else - velChange = DotProduct(params.m_pVehicle->m_vecMoveSpeed, params.m_pVehicle->GetForward()); + velChange = + DotProduct(params.m_pVehicle->m_vecMoveSpeed, params.m_pVehicle->GetForward()); params.m_fVelocityChange = velChange; switch(params.m_pVehicle->m_vehType) { case VEHICLE_TYPE_CAR: @@ -7368,7 +8095,8 @@ cAudioManager::ProcessVehicle(CVehicle *veh) if(params.m_nIndex == DODO) { if(!ProcessVehicleRoadNoise(¶ms)) { ProcessVehicleOneShots(¶ms); - ((CAutomobile *)veh)->m_fVelocityChangeForAudio = params.m_fVelocityChange; + ((CAutomobile *)veh)->m_fVelocityChangeForAudio = + params.m_fVelocityChange; ProcessRainOnVehicle(¶ms); break; } @@ -7377,7 +8105,8 @@ cAudioManager::ProcessVehicle(CVehicle *veh) } else { if(!ProcessVehicleRoadNoise(¶ms)) { ProcessVehicleOneShots(¶ms); - ((CAutomobile *)veh)->m_fVelocityChangeForAudio = params.m_fVelocityChange; + ((CAutomobile *)veh)->m_fVelocityChangeForAudio = + params.m_fVelocityChange; ProcessRainOnVehicle(¶ms); break; } @@ -7386,7 +8115,8 @@ cAudioManager::ProcessVehicle(CVehicle *veh) ProcessVehicleSkidding(¶ms); ProcessVehicleHorn(¶ms); ProcessVehicleSirenOrAlarm(¶ms); - if(UsesReverseWarning(params.m_nIndex)) ProcessVehicleReverseWarning(¶ms); + if(UsesReverseWarning(params.m_nIndex)) + ProcessVehicleReverseWarning(¶ms); if(HasAirBrakes(params.m_nIndex)) ProcessAirBrakes(¶ms); } ProcessCarBombTick(¶ms); @@ -7441,15 +8171,16 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams *params) velocity = min(0.3f, Abs(automobile->Doors[i].m_fAngVel)); if(velocity > 0.0035f) { emittingVol = (100.f * velocity * 10.f / 3.f); - m_sQueueSample.m_bVolume = - ComputeVolume(emittingVol, 40.f, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = ComputeVolume( + emittingVol, 40.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = i + 6; m_sQueueSample.m_nSampleIndex = m_anRandomTable[1] % 6 + SFX_COL_CAR_PANEL_1; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency( - m_sQueueSample.m_nSampleIndex) + - RandomDisplacement(1000); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency( + m_sQueueSample.m_nSampleIndex) + + RandomDisplacement(1000); m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 10; @@ -7472,154 +8203,170 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams *params) } void -cAudioManager::ProcessVehicleEngine(cVehicleParams* params) +cAudioManager::ProcessVehicleEngine(cVehicleParams *params) { - CVehicle* playerVeh; - CVehicle* veh; - CAutomobile* automobile; + CVehicle *playerVeh; + CVehicle *veh; + CAutomobile *automobile; float relativeGearChange; float relativeChange; float reverseRelativechange; uint8 volume; eSfxSample accelerationSample; - int32 freq; + int32 freq = 0; // uinitialized variable uint8 emittingVol; - cTransmission* transmission; + cTransmission *transmission; uint8 currentGear; float modificator; float traction = 0.f; - if (params->m_fDistance < SQR(50.f)) { + if(params->m_fDistance < SQR(50.f)) { playerVeh = FindPlayerVehicle(); veh = params->m_pVehicle; - if (playerVeh == veh && veh->m_status == STATUS_WRECKED) { + if(playerVeh == veh && veh->m_status == STATUS_WRECKED) { SampleManager.StopChannel(m_bActiveSamples); return; } - if (veh->bEngineOn) { + if(veh->bEngineOn) { CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); - automobile = (CAutomobile*)params->m_pVehicle; - if (params->m_nIndex == DODO) { + automobile = (CAutomobile *)params->m_pVehicle; + if(params->m_nIndex == DODO) { ProcessCesna(params); return; } - if (FindPlayerVehicle() == veh) { + if(FindPlayerVehicle() == veh) { ProcessPlayersVehicleEngine(params, automobile); return; } transmission = params->m_pTransmission; - if (transmission) { + if(transmission) { currentGear = params->m_pVehicle->m_nCurrentGear; - if (automobile->m_nWheelsOnGround) { - if (automobile->bIsHandbrakeOn) { - if (0.f == params->m_fVelocityChange) traction = 0.9f; - } - else if (params->m_pVehicle->m_status == STATUS_SIMPLE) { + if(automobile->m_nWheelsOnGround) { + if(automobile->bIsHandbrakeOn) { + if(0.f == params->m_fVelocityChange) + traction = 0.9f; + } else if(params->m_pVehicle->m_status == STATUS_SIMPLE) { traction = 0.f; - } - else { - switch (transmission->nDriveType) { + } else { + switch(transmission->nDriveType) { case '4': - for (int32 i = 0; i < ARRAY_SIZE(automobile->m_aWheelState); i++) { - if (automobile->m_aWheelState[i] == WHEEL_STATE_SPINNING) + for(int32 i = 0; + i < + ARRAY_SIZE(automobile->m_aWheelState); + i++) { + if(automobile->m_aWheelState[i] == + WHEEL_STATE_SPINNING) traction += 0.05f; } break; case 'F': - if (automobile->m_aWheelState[0] == WHEEL_STATE_SPINNING) + if(automobile->m_aWheelState[0] == + WHEEL_STATE_SPINNING) traction += 0.1f; - if (automobile->m_aWheelState[2] == WHEEL_STATE_SPINNING) + if(automobile->m_aWheelState[2] == + WHEEL_STATE_SPINNING) traction += 0.1f; break; case 'R': - if (automobile->m_aWheelState[1] == WHEEL_STATE_SPINNING) + if(automobile->m_aWheelState[1] == + WHEEL_STATE_SPINNING) traction += 0.1f; - if (automobile->m_aWheelState[3] == WHEEL_STATE_SPINNING) + if(automobile->m_aWheelState[3] == + WHEEL_STATE_SPINNING) traction += 0.1f; break; } } - if (transmission->fMaxVelocity <= 0.f) { + if(transmission->fMaxVelocity <= 0.f) { relativeChange = 0.f; - } - else if (currentGear) { - if ((params->m_fVelocityChange - - transmission->Gears[currentGear].fShiftDownVelocity) / - transmission->fMaxVelocity * 2.5f <= - 1.f) + } else if(currentGear) { + if((params->m_fVelocityChange - + transmission->Gears[currentGear] + .fShiftDownVelocity) / + transmission->fMaxVelocity * 2.5f <= + 1.f) relativeGearChange = - (params->m_fVelocityChange - - transmission->Gears[currentGear].fShiftDownVelocity) / - transmission->fMaxVelocity * 2.5f; + (params->m_fVelocityChange - + transmission->Gears[currentGear] + .fShiftDownVelocity) / + transmission->fMaxVelocity * 2.5f; else relativeGearChange = 1.f; - if (0.f == traction && automobile->m_status != STATUS_SIMPLE && - params->m_fVelocityChange >= - transmission->Gears[1].fShiftUpVelocity) { + if(0.f == traction && + automobile->m_status != STATUS_SIMPLE && + params->m_fVelocityChange >= + transmission->Gears[1].fShiftUpVelocity) { traction = 0.7f; } - relativeChange = traction * automobile->m_fGasPedalAudio * 0.95f + - (1.f - traction) * relativeGearChange; - } - else { - reverseRelativechange = - Abs((params->m_fVelocityChange - - transmission->Gears[0].fShiftDownVelocity) / - transmission->fMaxReverseVelocity); - if (1.f - reverseRelativechange <= 1.f) { - relativeChange = 1.f - reverseRelativechange; - } - else { + relativeChange = + traction * automobile->m_fGasPedalAudio * + 0.95f + + (1.f - traction) * relativeGearChange; + } else { + reverseRelativechange = Abs( + (params->m_fVelocityChange - + transmission->Gears[0].fShiftDownVelocity) / + transmission->fMaxReverseVelocity); + if(1.f - reverseRelativechange <= 1.f) { + relativeChange = + 1.f - reverseRelativechange; + } else { relativeChange = 1.f; } } - } - else { - if (automobile->m_nDriveWheelsOnGround) - automobile->m_fGasPedalAudio = automobile->m_fGasPedalAudio * 0.4f; + } else { + if(automobile->m_nDriveWheelsOnGround) + automobile->m_fGasPedalAudio = + automobile->m_fGasPedalAudio * 0.4f; relativeChange = automobile->m_fGasPedalAudio; } modificator = relativeChange; - if (currentGear || !automobile->m_nWheelsOnGround) + if(currentGear || !automobile->m_nWheelsOnGround) freq = 1200 * currentGear + 18000.f * modificator + 14000; else freq = 13000.f * modificator + 14000; - if (modificator >= 0.75f) { + if(modificator >= 0.75f) { emittingVol = 120; - volume = ComputeVolume(120, 50.f, m_sQueueSample.m_fDistance); - } - else { + volume = + ComputeVolume(120, 50.f, m_sQueueSample.m_fDistance); + } else { emittingVol = modificator * 4 / 3 * 40.f + 80.f; - volume = ComputeVolume(emittingVol, 50.f, m_sQueueSample.m_fDistance); + volume = ComputeVolume(emittingVol, 50.f, + m_sQueueSample.m_fDistance); } - } - else { + } else { modificator = 0.f; emittingVol = 80; volume = ComputeVolume(80, 50.f, m_sQueueSample.m_fDistance); } m_sQueueSample.m_bVolume = volume; - if (m_sQueueSample.m_bVolume) { - if (automobile->m_status == STATUS_SIMPLE) { - if (modificator < 0.02f) { + if(m_sQueueSample.m_bVolume) { + if(automobile->m_status == STATUS_SIMPLE) { + if(modificator < 0.02f) { m_sQueueSample.m_nSampleIndex = - CarSounds[params->m_nIndex].m_bEngineSoundType + SFX_CAR_REV_10; + CarSounds[params->m_nIndex].m_bEngineSoundType + + SFX_CAR_REV_10; freq = 10000.f * modificator + 22050; m_sQueueSample.m_nCounter = 52; m_sQueueSample.m_bBankIndex = 0; m_sQueueSample.m_bIs2D = 0; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nFrequency = - freq + 100 * m_sQueueSample.m_nEntityIndex % 1000; - if (m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_6 || - m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_6) - m_sQueueSample.m_nFrequency = m_sQueueSample.m_nFrequency >> 1; + freq + + 100 * m_sQueueSample.m_nEntityIndex % 1000; + if(m_sQueueSample.m_nSampleIndex == + SFX_CAR_IDLE_6 || + m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_6) + m_sQueueSample.m_nFrequency = + m_sQueueSample.m_nFrequency >> 1; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset( - m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -7629,29 +8376,35 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) AddSampleToRequestedQueue(); return; } - accelerationSample = CarSounds[params->m_nIndex].m_nAccelerationSampleIndex; - } - else { - if (automobile->m_fGasPedal < 0.05f) { + accelerationSample = + CarSounds[params->m_nIndex].m_nAccelerationSampleIndex; + } else { + if(automobile->m_fGasPedal < 0.05f) { m_sQueueSample.m_nSampleIndex = - CarSounds[params->m_nIndex].m_bEngineSoundType + - SFX_CAR_REV_10; // to recheck idle sounds start 1 postion later + CarSounds[params->m_nIndex].m_bEngineSoundType + + SFX_CAR_REV_10; // to recheck idle sounds start + // 1 postion later freq = 10000.f * modificator + 22050; m_sQueueSample.m_nCounter = 52; m_sQueueSample.m_bBankIndex = 0; m_sQueueSample.m_bIs2D = 0; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nFrequency = - freq + 100 * m_sQueueSample.m_nEntityIndex % 1000; - if (m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_6 || - m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_6) - m_sQueueSample.m_nFrequency = m_sQueueSample.m_nFrequency >> 1; + freq + + 100 * m_sQueueSample.m_nEntityIndex % 1000; + if(m_sQueueSample.m_nSampleIndex == + SFX_CAR_IDLE_6 || + m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_6) + m_sQueueSample.m_nFrequency = + m_sQueueSample.m_nFrequency >> 1; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset( - m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -7661,23 +8414,27 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams* params) AddSampleToRequestedQueue(); return; } - accelerationSample = CarSounds[params->m_nIndex].m_nAccelerationSampleIndex; + accelerationSample = + CarSounds[params->m_nIndex].m_nAccelerationSampleIndex; } m_sQueueSample.m_nSampleIndex = accelerationSample; m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_bBankIndex = 0; m_sQueueSample.m_bIs2D = 0; m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nFrequency = freq + 100 * m_sQueueSample.m_nEntityIndex % 1000; - if (m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_6 || - m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_6) - m_sQueueSample.m_nFrequency = m_sQueueSample.m_nFrequency >> 1; + m_sQueueSample.m_nFrequency = + freq + 100 * m_sQueueSample.m_nEntityIndex % 1000; + if(m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_6 || + m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_6) + m_sQueueSample.m_nFrequency = + m_sQueueSample.m_nFrequency >> 1; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -7702,28 +8459,39 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams *params) automobile->m_modelIndex != MI_MRWHOOP) { if(automobile->m_nCarHornTimer) { if(params->m_pVehicle->m_status) { - if(automobile->m_nCarHornTimer > 44) automobile->m_nCarHornTimer = 44; + if(automobile->m_nCarHornTimer > 44) + automobile->m_nCarHornTimer = 44; if(automobile->m_nCarHornTimer == 44) automobile->field_22D = - (uint8(m_FrameCounter) + uint8(m_sQueueSample.m_nEntityIndex)) & 7; - if (!hornPatternsArray[automobile->field_22D][44 - automobile->m_nCarHornTimer]) return; + (uint8(m_FrameCounter) + + uint8(m_sQueueSample.m_nEntityIndex)) & + 7; + if(!hornPatternsArray[automobile->field_22D] + [44 - automobile->m_nCarHornTimer]) + return; } - CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); - m_sQueueSample.m_bVolume = ComputeVolume(80, 40.f, m_sQueueSample.m_fDistance); + CalculateDistance(params->m_bDistanceCalculated, + params->m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(80, 40.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 4; - m_sQueueSample.m_nSampleIndex = CarSounds[params->m_nIndex].m_nHornSample; + m_sQueueSample.m_nSampleIndex = + CarSounds[params->m_nIndex].m_nHornSample; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 2; - m_sQueueSample.m_nFrequency = CarSounds[params->m_nIndex].m_nHornFrequency; + m_sQueueSample.m_nFrequency = + CarSounds[params->m_nIndex].m_nHornFrequency; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = 80; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 5.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -7737,11 +8505,517 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams *params) } } -WRAPPER void -cAudioManager::ProcessVehicleOneShots(void *) +cAudioManager::ProcessVehicleOneShots(cVehicleParams *params) { - EAXJMP(0x56CD40); + int16 event; + uint8 emittingVol; + float relVol; + float vol; + bool noReflections; + float maxDist; + cPedParams pedParams; + + static uint8 WaveIndex = 41; + static uint8 GunIndex = 53; + static uint8 iWheelIndex = 82; + static uint8 CrunchOffset = 0; + + for(int i = 0; i < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; i++) { + noReflections = 0; + m_sQueueSample.m_bRequireReflection = false; + event = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i]; + switch(event) { + case SOUND_CAR_DOOR_CLOSE_BONNET: + case SOUND_CAR_DOOR_CLOSE_BUMPER: + case SOUND_CAR_DOOR_CLOSE_FRONT_LEFT: + case SOUND_CAR_DOOR_CLOSE_FRONT_RIGHT: + case SOUND_CAR_DOOR_CLOSE_BACK_LEFT: + case SOUND_CAR_DOOR_CLOSE_BACK_RIGHT: + maxDist = 2500.f; + emittingVol = m_anRandomTable[2] % 5 + 122; + switch(CarSounds[params->m_nIndex].m_bDoorType) { + case 0: m_sQueueSample.m_nSampleIndex = SFX_OLD_CAR_DOOR_CLOSE; break; + case 2: m_sQueueSample.m_nSampleIndex = SFX_TRUCK_DOOR_CLOSE; break; + case 3: m_sQueueSample.m_nSampleIndex = SFX_AIR_BRAKES; break; + default: m_sQueueSample.m_nSampleIndex = SFX_NEW_CAR_DOOR_CLOSE; break; + } + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = + m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i] + 22; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 50.0f; + m_sQueueSample.m_bRequireReflection = true; + break; + case SOUND_CAR_DOOR_OPEN_BONNET: + case SOUND_CAR_DOOR_OPEN_BUMPER: + case SOUND_CAR_DOOR_OPEN_FRONT_LEFT: + case SOUND_CAR_DOOR_OPEN_FRONT_RIGHT: + case SOUND_CAR_DOOR_OPEN_BACK_LEFT: + case SOUND_CAR_DOOR_OPEN_BACK_RIGHT: + maxDist = 2500.f; + emittingVol = m_anRandomTable[1] % 10 + 117; + switch(CarSounds[params->m_nIndex].m_bDoorType) { + case 0: m_sQueueSample.m_nSampleIndex = SFX_OLD_CAR_DOOR_OPEN; break; + case 2: m_sQueueSample.m_nSampleIndex = SFX_TRUCK_DOOR_OPEN; break; + case 3: m_sQueueSample.m_nSampleIndex = SFX_AIR_BRAKES; break; + default: m_sQueueSample.m_nSampleIndex = SFX_NEW_CAR_DOOR_OPEN; break; + } + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = + m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i] + 10; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 50.0f; + m_sQueueSample.m_bRequireReflection = true; + break; + case SOUND_CAR_WINDSHIELD_CRACK: + maxDist = 900.f; + m_sQueueSample.m_nSampleIndex = SFX_GLASS_CRACK; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 68; + emittingVol = m_anRandomTable[1] % 30 + 60; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_GLASS_CRACK); + m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 30.0f; + break; + case SOUND_CAR_JUMP: + emittingVol = max( + 80.f, + 2 * (100.f * + m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_afVolume[i])); + maxDist = 1225.f; + m_sQueueSample.m_nSampleIndex = SFX_TYRE_BUMP; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = iWheelIndex++; + if(iWheelIndex > 85) iWheelIndex = 82; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_TYRE_BUMP); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); + if(params->m_nIndex == 41) { + m_sQueueSample.m_nFrequency *= 2; + emittingVol = emittingVol >> 1; + } + m_sQueueSample.m_nReleasingVolumeModificator = 6; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; + m_sQueueSample.m_fSoundIntensity = 35.0f; + break; + case SOUND_E: + case SOUND_F: + case SOUND_STEP_START: + case SOUND_STEP_END: + case SOUND_FALL_LAND: + case SOUND_FALL_COLLAPSE: + case SOUND_FIGHT_PUNCH_33: + case SOUND_FIGHT_KICK_34: + case SOUND_FIGHT_HEADBUTT_35: + case SOUND_FIGHT_PUNCH_36: + case SOUND_FIGHT_PUNCH_37: + case SOUND_FIGHT_CLOSE_PUNCH_38: + case SOUND_FIGHT_PUNCH_39: + case SOUND_FIGHT_PUNCH_OR_KICK_BELOW_40: + case SOUND_FIGHT_PUNCH_41: + case SOUND_FIGHT_PUNCH_FROM_BEHIND_42: + case SOUND_FIGHT_KNEE_OR_KICK_43: + case SOUND_FIGHT_KICK_44: + case SOUND_WEAPON_BAT_ATTACK: + case SOUND_WEAPON_RELOAD: + case SOUND_WEAPON_AK47_BULLET_ECHO: + case SOUND_WEAPON_UZI_BULLET_ECHO: + case SOUND_WEAPON_M16_BULLET_ECHO: + case SOUND_WEAPON_FLAMETHROWER_FIRE: + case SOUND_WEAPON_SNIPER_SHOT_NO_ZOOM: + case SOUND_WEAPON_ROCKET_SHOT_NO_ZOOM: + case SOUND_WEAPON_HIT_PED: + case SOUND_GARAGE_NO_MONEY: + case SOUND_GARAGE_BAD_VEHICLE: + case SOUND_GARAGE_OPENING: + case SOUND_GARAGE_BOMB_ALREADY_SET: + case SOUND_GARAGE_BOMB1_SET: + case SOUND_GARAGE_BOMB2_SET: + case SOUND_GARAGE_BOMB3_SET: + case SOUND_40: + case SOUND_41: + case SOUND_GARAGE_VEHICLE_DECLINED: + case SOUND_GARAGE_VEHICLE_ACCEPTED: + case SOUND_GARAGE_DOOR_CLOSED: + case SOUND_GARAGE_DOOR_OPENED: + case SOUND_CRANE_PICKUP: + case SOUND_PICKUP_WEAPON_BOUGHT: + case SOUND_PICKUP_WEAPON: + case SOUND_PICKUP_HEALTH: + case SOUND_4A: + case SOUND_4B: + case SOUND_PICKUP_ADRENALINE: + case SOUND_PICKUP_ARMOUR: + case SOUND_PICKUP_BONUS: + case SOUND_PICKUP_MONEY: + case SOUND_PICKUP_HIDDEN_PACKAGE: + case SOUND_PICKUP_PACMAN_PILL: + case SOUND_PICKUP_PACMAN_PACKAGE: + case SOUND_PICKUP_FLOAT_PACKAGE: + case SOUND_RAMPAGE_START: + case SOUND_RAMPAGE_ONGOING: + case SOUND_RAMPAGE_PASSED: + case SOUND_RAMPAGE_FAILED: + case SOUND_RAMPAGE_KILL: + case SOUND_RAMPAGE_CAR_BLOWN: + case SOUND_EVIDENCE_PICKUP: + case SOUND_UNLOAD_GOLD: + case SOUND_PAGER: + case SOUND_PED_DEATH: + case SOUND_PED_DAMAGE: + case SOUND_PED_HIT: + case SOUND_PED_LAND: + case SOUND_PED_BULLET_HIT: + case SOUND_PED_BOMBER: + case SOUND_PED_BURNING: + case SOUND_PED_ARREST_FBI: + case SOUND_PED_ARREST_SWAT: + case SOUND_PED_ARREST_COP: + case SOUND_PED_HANDS_UP: + case SOUND_PED_HANDS_COWER: + case SOUND_PED_FLEE_SPRINT: + case SOUND_PED_CAR_JACKING: + case SOUND_PED_MUGGING: + case SOUND_PED_CAR_JACKED: + case SOUND_PED_ROBBED: + case SOUND_PED_TAXI_WAIT: + case SOUND_PED_ATTACK: + case SOUND_PED_DEFEND: + case SOUND_PED_PURSUIT_ARMY: + case SOUND_PED_PURSUIT_FBI: + case SOUND_PED_PURSUIT_SWAT: + case SOUND_PED_PURSUIT_COP: + case SOUND_PED_HEALING: + case SOUND_PED_7B: + case SOUND_PED_LEAVE_VEHICLE: + case SOUND_PED_EVADE: + case SOUND_PED_FLEE_RUN: + case SOUND_PED_CAR_COLLISION: + case SOUND_PED_SOLICIT: + case SOUND_PED_EXTINGUISHING_FIRE: + case SOUND_PED_WAIT_DOUBLEBACK: + case SOUND_PED_CHAT_SEXY: + case SOUND_PED_CHAT_EVENT: + case SOUND_PED_CHAT: + case SOUND_PED_TAXI_CALL: + case SOUND_INJURED_PED_MALE_OUCH: + case SOUND_INJURED_PED_FEMALE: + case SOUND_8A: + case SOUND_RACE_START_3: + case SOUND_RACE_START_2: + case SOUND_RACE_START_1: + case SOUND_RACE_START_GO: + case SOUND_SPLASH: continue; + case SOUND_CAR_ENGINE_START: + emittingVol = 60; + maxDist = 1600.f; + m_sQueueSample.m_nSampleIndex = SFX_CAR_STARTER; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 33; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_CAR_STARTER); + m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; + m_sQueueSample.m_fSoundIntensity = 40.0f; + m_sQueueSample.m_bRequireReflection = true; + break; + case SOUND_CAR_LIGHT_BREAK: + m_sQueueSample.m_nSampleIndex = SFX_GLASS_SHARD_1; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 37; + m_sQueueSample.m_nFrequency = + 9 * SampleManager.GetSampleBaseFrequency(SFX_GLASS_SHARD_1) / 10; + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 3); + m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 30.0f; + maxDist = 900.f; + emittingVol = m_anRandomTable[4] % 10 + 30; + break; + case SOUND_CAR_HYDRAULIC_1: + case SOUND_CAR_HYDRAULIC_2: + if(event == MOONBEAM) // todo check + m_sQueueSample.m_nFrequency = 15600; + else + m_sQueueSample.m_nFrequency = 13118; + m_sQueueSample.m_nSampleIndex = SFX_SUSPENSION_FAST_MOVE; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 51; + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 3); + m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 35.0f; + maxDist = 1225.f; + emittingVol = m_anRandomTable[0] % 15 + 55; + break; + case SOUND_CAR_HYDRAULIC_3: + m_sQueueSample.m_nSampleIndex = SFX_SUSPENSION_SLOW_MOVE_LOOP; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 86; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_SUSPENSION_SLOW_MOVE_LOOP); + m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 35.0f; + m_sQueueSample.m_nReleasingVolumeDivider = 7; + noReflections = true; + maxDist = 1225.f; + emittingVol = m_anRandomTable[0] % 15 + 55; + break; + case SOUND_CAR_JERK: + m_sQueueSample.m_nSampleIndex = SFX_SHAG_SUSPENSION; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 87; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_SHAG_SUSPENSION); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 3); + m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 35.0f; + maxDist = 1225.f; + emittingVol = m_anRandomTable[1] % 15 + 55; + break; + case SOUND_CAR_SPLASH: + vol = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_afVolume[i]; + if(vol <= 300.f) continue; + if(vol > 1200.f) + m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_afVolume[i] = + 1200.0f; + relVol = (m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_afVolume[i] - + 300.f) / + 900.f; + m_sQueueSample.m_nSampleIndex = + (m_anRandomTable[0] & 1) + SFX_BOAT_SPLASH_1; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = WaveIndex++; + if(WaveIndex > 46) WaveIndex = 41; + m_sQueueSample.m_nFrequency = (7000.f * relVol) + 6000; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; + m_sQueueSample.m_fSoundIntensity = 40.0f; + emittingVol = (55.f * relVol); + maxDist = 1600.f; + break; + case SOUND_17: + m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_THUMB_OFF; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 47; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_POLICE_BOAT_THUMB_OFF) + + RandomDisplacement(600); + m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 50.0f; + emittingVol = + m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_afVolume[i]; + maxDist = 2500.f; + break; + case SOUND_18: + case SOUND_19: + m_sQueueSample.m_nSampleIndex = SFX_AIR_BRAKES; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 59; + m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 11025; + m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_fSpeedMultiplier = 5.0f; + m_sQueueSample.m_fSoundIntensity = 35.0f; + maxDist = 1225.f; + emittingVol = m_anRandomTable[1] % 20 + 70; + break; + case SOUND_CAR_TANK_TURRET_ROTATE: + vol = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_afVolume[i]; + if(vol > 0.038400002f) vol = 0.038400002f; + m_sQueueSample.m_nSampleIndex = SFX_TANK_TURRET; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 79; + m_sQueueSample.m_nFrequency = (3000.f * vol * 26.041666f) + 9000; + m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_fSpeedMultiplier = 2.0f; + m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_fSoundIntensity = 40.0f; + emittingVol = (37.f * vol * 26.041666f) + 90; + maxDist = 1600.f; + noReflections = true; + break; + case SOUND_CAR_BOMB_TICK: + m_sQueueSample.m_nSampleIndex = SFX_BOMB_BEEP; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 80; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_BOMB_BEEP); + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 30.0f; + maxDist = 900.f; + m_sQueueSample.m_bRequireReflection = true; + emittingVol = 60; + break; + case SOUND_PLANE_ON_GROUND: + m_sQueueSample.m_nSampleIndex = SFX_JUMBO_LAND_WHEELS; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 81; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_JUMBO_LAND_WHEELS); + m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 180.0f; + maxDist = 32400.f; + emittingVol = m_anRandomTable[4] % 25 + 75; + break; + case SOUND_WEAPON_SHOT_FIRED: + emittingVol = m_anRandomTable[2]; + maxDist = 14400.f; + m_sQueueSample.m_nSampleIndex = SFX_UZI_LEFT; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = GunIndex++; + emittingVol = emittingVol % 15 + 65; + if(GunIndex > 58) GunIndex = 53; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_UZI_LEFT); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 4); + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 120.0f; + break; + case SOUND_WEAPON_HIT_VEHICLE: + m_sQueueSample.m_nSampleIndex = + m_anRandomTable[m_sQueueSample.m_nEntityIndex % + ARRAY_SIZE(m_anRandomTable)] % + 6 + + SFX_BULLET_CAR_1; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 34; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency += + RandomDisplacement(m_sQueueSample.m_nFrequency >> 5); + m_sQueueSample.m_nReleasingVolumeModificator = 7; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 40.0f; + maxDist = 1600.f; + emittingVol = m_anRandomTable[3] % 20 + 90; + break; + case SOUND_BOMB_TIMED_ACTIVATED: + case SOUND_55: + case SOUND_BOMB_ONIGNITION_ACTIVATED: + case SOUND_BOMB_TICK: + m_sQueueSample.m_nSampleIndex = SFX_ARM_BOMB; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 36; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_ARM_BOMB); + m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 50.0f; + m_sQueueSample.m_bRequireReflection = true; + emittingVol = 50; + maxDist = 2500.f; + break; + case SOUND_PED_HELI_PLAYER_FOUND: + pedParams.m_pPed = 0; + pedParams.m_bDistanceCalculated = 0; + pedParams.m_fDistance = 0.0f; + pedParams.m_bDistanceCalculated = params->m_bDistanceCalculated; + pedParams.m_fDistance = params->m_fDistance; + SetupPedComments(&pedParams, SOUND_PED_HELI_PLAYER_FOUND); + continue; + case SOUND_PED_BODYCAST_HIT: + pedParams.m_pPed = 0; + pedParams.m_bDistanceCalculated = 0; + pedParams.m_fDistance = 0.0f; + pedParams.m_bDistanceCalculated = params->m_bDistanceCalculated; + pedParams.m_fDistance = params->m_fDistance; + SetupPedComments(&pedParams, SOUND_PED_BODYCAST_HIT); + continue; + case SOUND_WATER_FALL: + m_sQueueSample.m_nSampleIndex = SFX_SPLASH_1; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 15; + m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 16000; + m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 40.0f; + maxDist = 1600.f; + m_sQueueSample.m_bRequireReflection = true; + emittingVol = m_anRandomTable[4] % 20 + 90; + break; + case SOUND_SPLATTER: + m_sQueueSample.m_nSampleIndex = CrunchOffset + SFX_PED_CRUNCH_1; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 48; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_PED_CRUNCH_1) + + RandomDisplacement(600); + m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 40.0f; + ++CrunchOffset; + maxDist = 1600.f; + emittingVol = m_anRandomTable[4] % 20 + 55; + CrunchOffset &= 1u; + m_sQueueSample.m_bRequireReflection = true; + break; + case SOUND_CAR_PED_COLLISION: + vol = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_afVolume[i]; + if(20.f < vol) vol = 20.f; + emittingVol = (vol * 0.05f * 127.f); + if(!emittingVol) continue; + + m_sQueueSample.m_nSampleIndex = (m_anRandomTable[2] & 3) + SFX_FIGHT_1; + m_sQueueSample.m_bBankIndex = 0; + m_sQueueSample.m_nCounter = 50; + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex) >> + 1; + m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_fSpeedMultiplier = 0.0f; + m_sQueueSample.m_fSoundIntensity = 40.0f; + maxDist = 1600.f; + break; + } + if(params->m_fDistance < maxDist) { + CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, + m_sQueueSample.m_fDistance); + if(m_sQueueSample.m_bVolume) { + if(noReflections) { + m_sQueueSample.m_nLoopCount = 0; + m_sQueueSample.m_bReleasingSoundFlag = 0; + } else { + m_sQueueSample.m_nLoopCount = 1; + m_sQueueSample.m_bReleasingSoundFlag = 1; + } + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_bEmittingVolume = emittingVol; + m_sQueueSample.m_bReverbFlag = 1; + m_sQueueSample.m_bIs2D = false; + AddSampleToRequestedQueue(); + } + } + } } bool @@ -7767,7 +9041,8 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams *params) m_sQueueSample.m_bEmittingVolume = 60; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -7794,16 +9069,21 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams *params) if(params->m_pVehicle->m_vecMoveSpeed.z) { velocity = Abs(params->m_fVelocityChange); if(velocity > 0.0f) { - CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); + CalculateDistance(params->m_bDistanceCalculated, + params->m_fDistance); emittingVol = - 30.f * min(1.f, velocity / (0.5f * params->m_pTransmission->fMaxVelocity)); - m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 95.f, m_sQueueSample.m_fDistance); + 30.f * + min(1.f, + velocity / (0.5f * params->m_pTransmission->fMaxVelocity)); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, 95.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nReleasingVolumeModificator = 3; - if(params->m_pVehicle->m_nSurfaceTouched == SURFACE_PUDDLE) { + if(params->m_pVehicle->m_nSurfaceTouched == + SURFACE_PUDDLE) { m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP; freq = 6050 * emittingVol / 30 + 16000; } else { @@ -7811,15 +9091,18 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams *params) modificator = m_sQueueSample.m_fDistance / 190.f; sampleFreq = SampleManager.GetSampleBaseFrequency( SFX_ROAD_NOISE); - freq = (sampleFreq * modificator) + ((3 * sampleFreq) >> 2); + freq = (sampleFreq * modificator) + + ((3 * sampleFreq) >> 2); } m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 95.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -7853,7 +9136,8 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams *params) m_sQueueSample.m_nFrequency = 16113; else m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(SFX_SIREN_FAST); + SampleManager.GetSampleBaseFrequency( + SFX_SIREN_FAST); m_sQueueSample.m_nCounter = 60; } else { m_sQueueSample.m_nSampleIndex = @@ -7862,8 +9146,10 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams *params) CarSounds[params->m_nIndex].m_nSirenOrAlarmFrequency; } } else { - m_sQueueSample.m_nSampleIndex = CarSounds[params->m_nIndex].m_nSirenOrAlarmSample; - m_sQueueSample.m_nFrequency = CarSounds[params->m_nIndex].m_nSirenOrAlarmFrequency; + m_sQueueSample.m_nSampleIndex = + CarSounds[params->m_nIndex].m_nSirenOrAlarmSample; + m_sQueueSample.m_nFrequency = + CarSounds[params->m_nIndex].m_nSirenOrAlarmFrequency; } m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = false; @@ -7872,7 +9158,8 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams *params) m_sQueueSample.m_bEmittingVolume = 80; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 7.0f; m_sQueueSample.m_fSoundIntensity = 110.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -7899,12 +9186,13 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams *params) if(!automobile->m_nWheelsOnGround) return; CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); for(int32 i = 0; i < ARRAY_SIZE(automobile->m_aWheelState); i++) { - if(!automobile->m_aWheelState[i] || automobile->Damage.GetWheelStatus(i) == WHEEL_STATUS_MISSING) + if(!automobile->m_aWheelState[i] || + automobile->Damage.GetWheelStatus(i) == WHEEL_STATUS_MISSING) continue; transmission = params->m_pTransmission; if(transmission->nDriveType == '4') { - newSkidVal = - GetVehicleDriveWheelSkidValue(i, automobile, transmission, params->m_fVelocityChange); + newSkidVal = GetVehicleDriveWheelSkidValue(i, automobile, transmission, + params->m_fVelocityChange); if(newSkidVal > skidVal) skidVal = newSkidVal; continue; } @@ -7914,29 +9202,31 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams *params) continue; } if(i != 1 && i != 3) { - newSkidVal = GetVehicleNonDriveWheelSkidValue(i, automobile, transmission, - params->m_fVelocityChange); + newSkidVal = GetVehicleNonDriveWheelSkidValue( + i, automobile, transmission, params->m_fVelocityChange); if(newSkidVal > skidVal) skidVal = newSkidVal; continue; } - newSkidVal = - GetVehicleDriveWheelSkidValue(i, automobile, transmission, params->m_fVelocityChange); + newSkidVal = GetVehicleDriveWheelSkidValue(i, automobile, transmission, + params->m_fVelocityChange); if(newSkidVal > skidVal) skidVal = newSkidVal; continue; } if(i == 0 || i == 2) { - newSkidVal = - GetVehicleDriveWheelSkidValue(i, automobile, transmission, params->m_fVelocityChange); + newSkidVal = GetVehicleDriveWheelSkidValue(i, automobile, transmission, + params->m_fVelocityChange); if(newSkidVal > skidVal) skidVal = newSkidVal; continue; } - newSkidVal = GetVehicleNonDriveWheelSkidValue(i, automobile, transmission, params->m_fVelocityChange); + newSkidVal = GetVehicleNonDriveWheelSkidValue(i, automobile, transmission, + params->m_fVelocityChange); if(newSkidVal > skidVal) skidVal = newSkidVal; } if(skidVal > 0.0f) { emittingVol = 50.f * skidVal; - m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 40.f, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, 40.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 3; switch(params->m_pVehicle->m_nSurfaceTouched) { @@ -7968,7 +9258,8 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams *params) m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -7984,12 +9275,14 @@ void cAudioManager::ProcessWaterCannon(int32) { for(int32 i = 0; i < NUM_WATERCANNONS; i++) { if(CWaterCannons::aCannons[i].m_nId) { - m_sQueueSample.m_vecPos = CWaterCannons::aCannons[0].m_avecPos[CWaterCannons::aCannons[i].m_nCur]; + m_sQueueSample.m_vecPos = + CWaterCannons::aCannons[0].m_avecPos[CWaterCannons::aCannons[i].m_nCur]; float distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); if(distSquared < 900.f) { m_sQueueSample.m_fDistance = Sqrt(distSquared); m_sQueueSample.m_bVolume = - ComputeVolume(50, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + ComputeVolume(50, m_sQueueSample.m_fSoundIntensity, + m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_fSoundIntensity = 900.0f; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; @@ -8004,9 +9297,11 @@ void cAudioManager::ProcessWaterCannon(int32) m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_bEmittingVolume = 50; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -8022,7 +9317,8 @@ cAudioManager::ProcessWeather(int32 id) uint8 vol; static uint8 counter = 0; - if(m_asAudioEntities[id].m_AudioEvents && m_asAudioEntities[id].m_awAudioEvent[0] == SOUND_LIGHTNING) { + if(m_asAudioEntities[id].m_AudioEvents && + m_asAudioEntities[id].m_awAudioEvent[0] == SOUND_LIGHTNING) { if(m_asAudioEntities[id].m_afVolume[0] >= 10.f) { m_sQueueSample.m_nSampleIndex = SFX_EXPLOSION_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; @@ -8052,8 +9348,7 @@ cAudioManager::ProcessWeather(int32 id) } if(CWeather::Rain > 0.0f && (!CCullZones::CamNoRain() || !CCullZones::PlayerNoRain())) { m_sQueueSample.m_nSampleIndex = SFX_RAIN; - m_sQueueSample.m_nFrequency = - SampleManager.GetSampleBaseFrequency(SFX_RAIN); + m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAIN); m_sQueueSample.m_bVolume = (int32)(25.f * CWeather::Rain); m_sQueueSample.m_nCounter = 4; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; @@ -8065,8 +9360,10 @@ cAudioManager::ProcessWeather(int32 id) m_sQueueSample.m_nReleasingVolumeDivider = 30; m_sQueueSample.m_bReverbFlag = false; m_sQueueSample.m_bEmittingVolume = m_sQueueSample.m_bVolume; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); } @@ -8086,11 +9383,14 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams *params) if(params->m_pVehicle->m_vecMoveSpeed.z) { velChange = Abs(params->m_fVelocityChange); if(velChange > 0.f) { - CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); + CalculateDistance(params->m_bDistanceCalculated, + params->m_fDistance); relativeVelocity = - min(1.0f, velChange / (0.5f * params->m_pTransmission->fMaxVelocity)); + min(1.0f, + velChange / (0.5f * params->m_pTransmission->fMaxVelocity)); emittingVol = 23.0f * relativeVelocity * CWeather::WetRoads; - m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 30.f, m_sQueueSample.m_fDistance); + m_sQueueSample.m_bVolume = + ComputeVolume(emittingVol, 30.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nSampleIndex = SFX_ROAD_NOISE; @@ -8103,9 +9403,11 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams *params) m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopStartOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SampleManager.GetSampleLoopEndOffset( + m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -8127,9 +9429,7 @@ cAudioManager::ProcessWorkShopScriptObject(uint8 sound) switch(sound) { case SCRIPT_SOUND_WORK_SHOP_LOOP_S: - case SCRIPT_SOUND_WORK_SHOP_LOOP_L: - m_sQueueSample.m_fSoundIntensity = 20.0f; - break; + case SCRIPT_SOUND_WORK_SHOP_LOOP_L: m_sQueueSample.m_fSoundIntensity = 20.0f; break; default: return; } distSquared = GetDistanceSquared(&m_sQueueSample.m_vecPos); @@ -8140,7 +9440,8 @@ cAudioManager::ProcessWorkShopScriptObject(uint8 sound) if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nSampleIndex = SFX_WORKSHOP_1; m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_WORKSHOP_1); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_WORKSHOP_1); m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = false; m_sQueueSample.m_nLoopCount = 0; @@ -8150,7 +9451,8 @@ cAudioManager::ProcessWorkShopScriptObject(uint8 sound) m_sQueueSample.m_bEmittingVolume = 30; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_bRequireReflection = false; AddSampleToRequestedQueue(); @@ -8292,7 +9594,8 @@ cAudioManager::ServiceSoundEffects() ProcessActiveQueues(); for(int32 i = 0; i < m_nScriptObjectEntityTotal; ++i) { cAudioScriptObject *object = - (cAudioScriptObject *)m_asAudioEntities[m_anScriptObjectEntityIndices[i]].m_pEntity; + (cAudioScriptObject *)m_asAudioEntities[m_anScriptObjectEntityIndices[i]] + .m_pEntity; delete object; m_asAudioEntities[m_anScriptObjectEntityIndices[i]].m_pEntity = nil; DestroyEntity(m_anScriptObjectEntityIndices[i]); @@ -8341,7 +9644,8 @@ cAudioManager::SetEffectsMasterVolume(uint8 volume) const void cAudioManager::SetEntityStatus(int32 id, uint8 status) { - if(m_bIsInitialised && id >= 0 && id < totalAudioEntitiesSlots && m_asAudioEntities[id].m_bIsUsed) { + if(m_bIsInitialised && id >= 0 && id < totalAudioEntitiesSlots && + m_asAudioEntities[id].m_bIsUsed) { m_asAudioEntities[id].m_bStatus = status; } } @@ -8389,8 +9693,10 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, int32 freq) m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 180.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -8417,14 +9723,17 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol) m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_bEmittingVolume = emittingVol; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_DIST_FLY); - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_JUMBO_DIST_FLY); + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSoundIntensity = 440.0f; m_sQueueSample.m_bReleasingSoundFlag = false; m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_bReverbFlag = true; m_sQueueSample.m_nReleasingVolumeDivider = 5; - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); AddSampleToRequestedQueue(); } return true; @@ -8443,11 +9752,14 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) m_sQueueSample.m_bBankIndex = SAMPLEBANK_MAIN; m_sQueueSample.m_bIs2D = true; m_sQueueSample.m_nReleasingVolumeModificator = 1; - m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_RUMBLE); + m_sQueueSample.m_nFrequency = + SampleManager.GetSampleBaseFrequency(SFX_JUMBO_RUMBLE); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 240.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -8472,7 +9784,8 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol) uint8 emittingVol = (vol >> 1) + ((vol >> 1) * m_sQueueSample.m_fDistance / 180); - if(m_sQueueSample.m_fDistance / 180 < 0.7f) emittingVol -= emittingVol * gJumboVolOffsetPercentage / 100; + if(m_sQueueSample.m_fDistance / 180 < 0.7f) + emittingVol -= emittingVol * gJumboVolOffsetPercentage / 100; m_sQueueSample.m_bVolume = ComputeVolume(emittingVol, 180.f, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { @@ -8484,8 +9797,10 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol) m_sQueueSample.m_nFrequency = GetJumboTaxiFreq(); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 180.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -8513,8 +9828,10 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, int32 freq) m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopStart = + SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = + SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 170.0f; m_sQueueSample.m_bReleasingSoundFlag = false; @@ -8556,17 +9873,17 @@ cAudioManager::SetupPedComments(cPedParams *params, uint32 sound) case SOUND_AMMUNATION_WELCOME_3: emittingVol = maxVolume; break; default: if(CWorld::GetIsLineOfSightClear(TheCamera.GetPosition(), - m_sQueueSample.m_vecPos, 1, 0, 0, 0, 0, 0, - 0)) { + m_sQueueSample.m_vecPos, 1, + 0, 0, 0, 0, 0, 0)) { emittingVol = maxVolume; } else { emittingVol = 31; } break; } - m_sQueueSample.m_bVolume = - ComputeVolume(emittingVol, soundIntensity, m_sQueueSample.m_fDistance); - pedComment.field_25 = 10; + m_sQueueSample.m_bVolume = ComputeVolume( + emittingVol, soundIntensity, m_sQueueSample.m_fDistance); + pedComment.m_nProcess = 10; if(m_sQueueSample.m_bVolume) { pedComment.m_nEntityIndex = m_sQueueSample.m_nEntityIndex; pedComment.m_vecPos = m_sQueueSample.m_vecPos; @@ -8580,26 +9897,30 @@ cAudioManager::SetupPedComments(cPedParams *params, uint32 sound) switch(sound) { case SOUND_PED_HELI_PLAYER_FOUND: soundIntensity = 400.f; - pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] % 29 + - SFX_POLICE_HELI_1; + pedComment.m_nSampleIndex = + m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] % 29 + + SFX_POLICE_HELI_1; break; case SOUND_PED_BODYCAST_HIT: if(CTimer::GetTimeInMilliseconds() <= gNextCryTime) return; soundIntensity = 50.f; gNextCryTime = CTimer::GetTimeInMilliseconds() + 500; pedComment.m_nSampleIndex = - (m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] & 3) + SFX_PLASTER_BLOKE_1; + (m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] & 3) + + SFX_PLASTER_BLOKE_1; break; case SOUND_INJURED_PED_MALE_OUCH: case SOUND_8A: soundIntensity = 50.f; - pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] % 15 + - SFX_GENERIC_MALE_GRUNT_1; + pedComment.m_nSampleIndex = + m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] % 15 + + SFX_GENERIC_MALE_GRUNT_1; break; case SOUND_INJURED_PED_FEMALE: soundIntensity = 50.f; - pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] % 11 + - SFX_GENERIC_FEMALE_GRUNT_1; + pedComment.m_nSampleIndex = + m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] % 11 + + SFX_GENERIC_FEMALE_GRUNT_1; break; default: return; } @@ -8613,17 +9934,17 @@ cAudioManager::SetupPedComments(cPedParams *params, uint32 sound) case SOUND_AMMUNATION_WELCOME_3: emittingVol = maxVolume; break; default: if(CWorld::GetIsLineOfSightClear(TheCamera.GetPosition(), - m_sQueueSample.m_vecPos, 1, 0, 0, 0, 0, 0, - 0)) { + m_sQueueSample.m_vecPos, 1, + 0, 0, 0, 0, 0, 0)) { emittingVol = maxVolume; } else { emittingVol = 31; } break; } - m_sQueueSample.m_bVolume = - ComputeVolume(emittingVol, soundIntensity, m_sQueueSample.m_fDistance); - pedComment.field_25 = 10; + m_sQueueSample.m_bVolume = ComputeVolume( + emittingVol, soundIntensity, m_sQueueSample.m_fDistance); + pedComment.m_nProcess = 10; if(m_sQueueSample.m_bVolume) { pedComment.m_nEntityIndex = m_sQueueSample.m_nEntityIndex; pedComment.m_vecPos = m_sQueueSample.m_vecPos; @@ -8760,7 +10081,8 @@ cAudioManager::UpdateReflections() bool cAudioManager::UsesReverseWarning(int32 model) const { - return model == LINERUN || model == FIRETRUK || model == TRASH || model == BUS || model == COACH; + return model == LINERUN || model == FIRETRUK || model == TRASH || model == BUS || + model == COACH; } bool @@ -8793,11 +10115,14 @@ void cAudioManager::AdjustSamplesVolume() { for(int i = 0; i < m_bSampleRequestQueuesStatus[m_bActiveSampleQueue]; i++) { - tSound* pSample = &m_asSamples[m_bActiveSampleQueue][m_abSampleQueueIndexTable[m_bActiveSampleQueue][i] + 1]; + tSound *pSample = + &m_asSamples[m_bActiveSampleQueue] + [m_abSampleQueueIndexTable[m_bActiveSampleQueue][i] + 1]; if(!pSample->m_bIs2D) - pSample->m_bEmittingVolume = ComputeEmittingVolume( - pSample->m_bEmittingVolume, pSample->m_fSoundIntensity, pSample->m_fDistance); + pSample->m_bEmittingVolume = + ComputeEmittingVolume(pSample->m_bEmittingVolume, + pSample->m_fSoundIntensity, pSample->m_fDistance); } } @@ -8807,220 +10132,221 @@ cAudioManager::ComputeEmittingVolume(uint8 emittingVolume, float intensity, floa float quatIntensity = intensity / 4.0f; float diffIntensity = intensity - quatIntensity; if(dist > diffIntensity) - return (quatIntensity - (dist - diffIntensity)) * (float)emittingVolume / quatIntensity; + return (quatIntensity - (dist - diffIntensity)) * (float)emittingVolume / + quatIntensity; return emittingVolume; } -STARTPATCHES -InjectHook(0x57B210, &cAudioManager::AddDetailsToRequestedOrderList, PATCH_JUMP); -InjectHook(0x56AD30, &cAudioManager::AddPlayerCarSample, PATCH_JUMP); -InjectHook(0x57B300, &cAudioManager::AddReflectionsToRequestedQueue, PATCH_JUMP); -InjectHook(0x57B8D0, &cAudioManager::AddReleasingSounds, PATCH_JUMP); -InjectHook(0x57B070, &cAudioManager::AddSampleToRequestedQueue, PATCH_JUMP); -InjectHook(0x5697A0, &cAudioManager::CalculateDistance, PATCH_JUMP); -InjectHook(0x57AA10, &cAudioManager::CheckForAnAudioFileOnCD, PATCH_JUMP); -InjectHook(0x57C160, &cAudioManager::ClearActiveSamples, PATCH_JUMP); -InjectHook(0x5796A0, &cAudioManager::ClearMissionAudio, PATCH_JUMP); -InjectHook(0x57C120, &cAudioManager::ClearRequestedQueue, PATCH_JUMP); -InjectHook(0x57AE00, &cAudioManager::ComputeDopplerEffectedFrequency, PATCH_JUMP); -InjectHook(0x57AD20, &cAudioManager::ComputePan, PATCH_JUMP); -InjectHook(0x57ABB0, &cAudioManager::ComputeVolume, PATCH_JUMP); -InjectHook(0x57A310, &cAudioManager::CreateEntity, PATCH_JUMP); -InjectHook(0x57A830, &cAudioManager::DestroyAllGameCreatedEntities, PATCH_JUMP); -InjectHook(0x57A400, &cAudioManager::DestroyEntity, PATCH_JUMP); -InjectHook(0x57C290, &cAudioManager::GenerateIntegerRandomNumberTable, PATCH_JUMP); -InjectHook(0x57A8C0, &cAudioManager::Get3DProviderName, PATCH_JUMP); -InjectHook(0x571110, &cAudioManager::GetArmyTalkSfx, PATCH_JUMP); -InjectHook(0x573AB0, &cAudioManager::GetBlackBusinessFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x572050, &cAudioManager::GetBlackCasualFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x574380, &cAudioManager::GetBlackConstructionWorkerTalkSfx, PATCH_JUMP); -InjectHook(0x571D80, &cAudioManager::GetBlackCriminalTalkSfx, PATCH_JUMP); -InjectHook(0x5735E0, &cAudioManager::GetBlackDockerMaleTalkSfx, PATCH_JUMP); -InjectHook(0x5724D0, &cAudioManager::GetBlackFatFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x5726C0, &cAudioManager::GetBlackFatMaleTalkSfx, PATCH_JUMP); -InjectHook(0x5728B0, &cAudioManager::GetBlackFemaleProstituteTalkSfx, PATCH_JUMP); -InjectHook(0x572C20, &cAudioManager::GetBlackProjectFemaleOldTalkSfx, PATCH_JUMP); -InjectHook(0x572D20, &cAudioManager::GetBlackProjectFemaleYoungTalkSfx, PATCH_JUMP); -InjectHook(0x572AF0, &cAudioManager::GetBlackProjectMaleTalkSfx, PATCH_JUMP); -InjectHook(0x5739C0, &cAudioManager::GetBlackWorkerMaleTalkSfx, PATCH_JUMP); -InjectHook(0x574FF0, &cAudioManager::GetBomberTalkSfx, PATCH_JUMP); -InjectHook(0x5712C0, &cAudioManager::GetBusinessMaleOldTalkSfx, PATCH_JUMP); -InjectHook(0x5713E0, &cAudioManager::GetBusinessMaleYoungTalkSfx, PATCH_JUMP); -InjectHook(0x572040, &cAudioManager::GetCasualMaleOldTalkSfx, PATCH_JUMP); -InjectHook(0x574FE0, &cAudioManager::GetCatatalinaTalkSfx, PATCH_JUMP); -InjectHook(0x57AA30, &cAudioManager::GetCDAudioDriveLetter, PATCH_JUMP); -InjectHook(0x573010, &cAudioManager::GetChinatownFemaleOldTalkSfx, PATCH_JUMP); -InjectHook(0x5730F0, &cAudioManager::GetChinatownFemaleYoungTalkSfx, PATCH_JUMP); -InjectHook(0x572E10, &cAudioManager::GetChinatownMaleOldTalkSfx, PATCH_JUMP); -InjectHook(0x572F10, &cAudioManager::GetChinatownMaleYoungTalkSfx, PATCH_JUMP); -InjectHook(0x575120, &cAudioManager::GetChunkyTalkSfx, PATCH_JUMP); -InjectHook(0x571B00, &cAudioManager::GetColumbianTalkSfx, PATCH_JUMP); -InjectHook(0x570EA0, &cAudioManager::GetCopTalkSfx, PATCH_JUMP); -InjectHook(0x57A8F0, &cAudioManager::GetCurrent3DProviderIndex, PATCH_JUMP); -InjectHook(0x571770, &cAudioManager::GetDiabloTalkSfx, PATCH_JUMP); -InjectHook(0x569750, &cAudioManager::GetDistanceSquared, PATCH_JUMP); -InjectHook(0x574DA0, &cAudioManager::GetEightTalkSfx, PATCH_JUMP); -InjectHook(0x574040, &cAudioManager::GetFanFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x573F60, &cAudioManager::GetFanMaleTalkSfx, PATCH_JUMP); -InjectHook(0x571040, &cAudioManager::GetFBITalkSfx, PATCH_JUMP); -InjectHook(0x572280, &cAudioManager::GetFemaleNo3TalkSfx, PATCH_JUMP); -InjectHook(0x5712B0, &cAudioManager::GetFiremanTalkSfx, PATCH_JUMP); -InjectHook(0x574E50, &cAudioManager::GetFrankieTalkSfx, PATCH_JUMP); -InjectHook(0x575510, &cAudioManager::GetGenericFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x575460, &cAudioManager::GetGenericMaleTalkSfx, PATCH_JUMP); -InjectHook(0x571C30, &cAudioManager::GetHoodTalkSfx, PATCH_JUMP); -InjectHook(0x5741F0, &cAudioManager::GetHospitalFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x574120, &cAudioManager::GetHospitalMaleTalkSfx, PATCH_JUMP); -InjectHook(0x56F410, &cAudioManager::GetJumboTaxiFreq, PATCH_JUMP); -InjectHook(0x573310, &cAudioManager::GetLittleItalyFemaleOldTalkSfx, PATCH_JUMP); -InjectHook(0x573400, &cAudioManager::GetLittleItalyFemaleYoungTalkSfx, PATCH_JUMP); -InjectHook(0x5731E0, &cAudioManager::GetLittleItalyMaleTalkSfx, PATCH_JUMP); -InjectHook(0x571510, &cAudioManager::GetMafiaTalkSfx, PATCH_JUMP); -InjectHook(0x571F40, &cAudioManager::GetMaleNo2TalkSfx, PATCH_JUMP); -InjectHook(0x5711C0, &cAudioManager::GetMedicTalkSfx, PATCH_JUMP); -InjectHook(0x5795D0, &cAudioManager::GetMissionAudioLoadingStatus, PATCH_JUMP); -InjectHook(0x574F00, &cAudioManager::GetMistyTalkSfx, PATCH_JUMP); -InjectHook(0x575340, &cAudioManager::GetNormalMaleTalkSfx, PATCH_JUMP); -InjectHook(0x57A8A0, &cAudioManager::GetNum3DProvidersAvailable, PATCH_JUMP); -InjectHook(0x574FD0, &cAudioManager::GetOJGTalkSfx, PATCH_JUMP); -InjectHook(0x570960, &cAudioManager::GetPedCommentSfx, PATCH_JUMP); -InjectHook(0x570DB0, &cAudioManager::GetPhrase, PATCH_JUMP); -InjectHook(0x56BF80, &cAudioManager::GetVehicleDriveWheelSkidValue, PATCH_JUMP); -InjectHook(0x56C120, &cAudioManager::GetVehicleNonDriveWheelSkidValue, PATCH_JUMP); -InjectHook(0x575240, &cAudioManager::GetPimpTalkSfx, PATCH_JUMP); -InjectHook(0x570E00, &cAudioManager::GetPlayerTalkSfx, PATCH_JUMP); -InjectHook(0x5737E0, &cAudioManager::GetScumFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x5736D0, &cAudioManager::GetScumMaleTalkSfx, PATCH_JUMP); -InjectHook(0x575060, &cAudioManager::GetSecurityGuardTalkSfx, PATCH_JUMP); -InjectHook(0x574480, &cAudioManager::GetShopperFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x574790, &cAudioManager::GetSpecialCharacterTalkSfx, PATCH_JUMP); -InjectHook(0x573E90, &cAudioManager::GetStewardFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x573DC0, &cAudioManager::GetStewardMaleTalkSfx, PATCH_JUMP); -InjectHook(0x574690, &cAudioManager::GetStudentFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x574590, &cAudioManager::GetStudentMaleTalkSfx, PATCH_JUMP); -InjectHook(0x573CD0, &cAudioManager::GetSupermodelFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x573BD0, &cAudioManager::GetSupermodelMaleTalkSfx, PATCH_JUMP); -InjectHook(0x570F80, &cAudioManager::GetSwatTalkSfx, PATCH_JUMP); -InjectHook(0x575190, &cAudioManager::GetTaxiDriverTalkSfx, PATCH_JUMP); -InjectHook(0x571650, &cAudioManager::GetTriadTalkSfx, PATCH_JUMP); -InjectHook(0x5723A0, &cAudioManager::GetWhiteBusinessFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x572170, &cAudioManager::GetWhiteCasualFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x574290, &cAudioManager::GetWhiteConstructionWorkerTalkSfx, PATCH_JUMP); -InjectHook(0x571E60, &cAudioManager::GetWhiteCriminalTalkSfx, PATCH_JUMP); -InjectHook(0x5734F0, &cAudioManager::GetWhiteDockerMaleTalkSfx, PATCH_JUMP); -InjectHook(0x5727B0, &cAudioManager::GetWhiteFatFemaleTalkSfx, PATCH_JUMP); -InjectHook(0x5725D0, &cAudioManager::GetWhiteFatMaleTalkSfx, PATCH_JUMP); -InjectHook(0x5729D0, &cAudioManager::GetWhiteFemaleProstituteTalkSfx, PATCH_JUMP); -InjectHook(0x5738D0, &cAudioManager::GetWhiteWorkerMaleTalkSfx, PATCH_JUMP); -InjectHook(0x5718D0, &cAudioManager::GetYakuzaTalkSfx, PATCH_JUMP); -InjectHook(0x5719E0, &cAudioManager::GetYardieTalkSfx, PATCH_JUMP); -InjectHook(0x56CAB0, &cAudioManager::HasAirBrakes, PATCH_JUMP); -InjectHook(0x57A0E0, &cAudioManager::Initialise, PATCH_JUMP); -InjectHook(0x57B030, &cAudioManager::InterrogateAudioEntities, PATCH_JUMP); -InjectHook(0x57AA50, &cAudioManager::IsAudioInitialised, PATCH_JUMP); -InjectHook(0x579650, &cAudioManager::IsMissionAudioSampleFinished, PATCH_JUMP); -InjectHook(0x57A9C0, &cAudioManager::IsMP3RadioChannelAvailable, PATCH_JUMP); -InjectHook(0x579520, &cAudioManager::MissionScriptAudioUsesPoliceChannel, PATCH_JUMP); -InjectHook(0x56AD10, &cAudioManager::PlayerJustGotInCar, PATCH_JUMP); -InjectHook(0x56AD20, &cAudioManager::PlayerJustLeftCar, PATCH_JUMP); -InjectHook(0x579620, &cAudioManager::PlayLoadedMissionAudio, PATCH_JUMP); -InjectHook(0x57A500, &cAudioManager::PlayOneShot, PATCH_JUMP); -InjectHook(0x569420, &cAudioManager::PostInitialiseGameSpecificSetup, PATCH_JUMP); -InjectHook(0x569640, &cAudioManager::PostTerminateGameSpecificShutdown, PATCH_JUMP); -InjectHook(0x569400, &cAudioManager::PreInitialiseGameSpecificSetup, PATCH_JUMP); -InjectHook(0x579550, &cAudioManager::PreloadMissionAudio, PATCH_JUMP); -InjectHook(0x569570, &cAudioManager::PreTerminateGameSpecificShutdown, PATCH_JUMP); +// STARTPATCHES +// InjectHook(0x57B210, &cAudioManager::AddDetailsToRequestedOrderList, PATCH_JUMP); +// InjectHook(0x56AD30, &cAudioManager::AddPlayerCarSample, PATCH_JUMP); +// InjectHook(0x57B300, &cAudioManager::AddReflectionsToRequestedQueue, PATCH_JUMP); +// InjectHook(0x57B8D0, &cAudioManager::AddReleasingSounds, PATCH_JUMP); +// InjectHook(0x57B070, &cAudioManager::AddSampleToRequestedQueue, PATCH_JUMP); +// InjectHook(0x5697A0, &cAudioManager::CalculateDistance, PATCH_JUMP); +// InjectHook(0x57AA10, &cAudioManager::CheckForAnAudioFileOnCD, PATCH_JUMP); +// InjectHook(0x57C160, &cAudioManager::ClearActiveSamples, PATCH_JUMP); +// InjectHook(0x5796A0, &cAudioManager::ClearMissionAudio, PATCH_JUMP); +// InjectHook(0x57C120, &cAudioManager::ClearRequestedQueue, PATCH_JUMP); +// InjectHook(0x57AE00, &cAudioManager::ComputeDopplerEffectedFrequency, PATCH_JUMP); +// InjectHook(0x57AD20, &cAudioManager::ComputePan, PATCH_JUMP); +// InjectHook(0x57ABB0, &cAudioManager::ComputeVolume, PATCH_JUMP); +// InjectHook(0x57A310, &cAudioManager::CreateEntity, PATCH_JUMP); +// InjectHook(0x57A830, &cAudioManager::DestroyAllGameCreatedEntities, PATCH_JUMP); +// InjectHook(0x57A400, &cAudioManager::DestroyEntity, PATCH_JUMP); +// InjectHook(0x57C290, &cAudioManager::GenerateIntegerRandomNumberTable, PATCH_JUMP); +// InjectHook(0x57A8C0, &cAudioManager::Get3DProviderName, PATCH_JUMP); +// InjectHook(0x571110, &cAudioManager::GetArmyTalkSfx, PATCH_JUMP); +// InjectHook(0x573AB0, &cAudioManager::GetBlackBusinessFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x572050, &cAudioManager::GetBlackCasualFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x574380, &cAudioManager::GetBlackConstructionWorkerTalkSfx, PATCH_JUMP); +// InjectHook(0x571D80, &cAudioManager::GetBlackCriminalTalkSfx, PATCH_JUMP); +// InjectHook(0x5735E0, &cAudioManager::GetBlackDockerMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x5724D0, &cAudioManager::GetBlackFatFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x5726C0, &cAudioManager::GetBlackFatMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x5728B0, &cAudioManager::GetBlackFemaleProstituteTalkSfx, PATCH_JUMP); +// InjectHook(0x572C20, &cAudioManager::GetBlackProjectFemaleOldTalkSfx, PATCH_JUMP); +// InjectHook(0x572D20, &cAudioManager::GetBlackProjectFemaleYoungTalkSfx, PATCH_JUMP); +// InjectHook(0x572AF0, &cAudioManager::GetBlackProjectMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x5739C0, &cAudioManager::GetBlackWorkerMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x574FF0, &cAudioManager::GetBomberTalkSfx, PATCH_JUMP); +// InjectHook(0x5712C0, &cAudioManager::GetBusinessMaleOldTalkSfx, PATCH_JUMP); +// InjectHook(0x5713E0, &cAudioManager::GetBusinessMaleYoungTalkSfx, PATCH_JUMP); +// InjectHook(0x572040, &cAudioManager::GetCasualMaleOldTalkSfx, PATCH_JUMP); +// InjectHook(0x574FE0, &cAudioManager::GetCatatalinaTalkSfx, PATCH_JUMP); +// InjectHook(0x57AA30, &cAudioManager::GetCDAudioDriveLetter, PATCH_JUMP); +// InjectHook(0x573010, &cAudioManager::GetChinatownFemaleOldTalkSfx, PATCH_JUMP); +// InjectHook(0x5730F0, &cAudioManager::GetChinatownFemaleYoungTalkSfx, PATCH_JUMP); +// InjectHook(0x572E10, &cAudioManager::GetChinatownMaleOldTalkSfx, PATCH_JUMP); +// InjectHook(0x572F10, &cAudioManager::GetChinatownMaleYoungTalkSfx, PATCH_JUMP); +// InjectHook(0x575120, &cAudioManager::GetChunkyTalkSfx, PATCH_JUMP); +// InjectHook(0x571B00, &cAudioManager::GetColumbianTalkSfx, PATCH_JUMP); +// InjectHook(0x570EA0, &cAudioManager::GetCopTalkSfx, PATCH_JUMP); +// InjectHook(0x57A8F0, &cAudioManager::GetCurrent3DProviderIndex, PATCH_JUMP); +// InjectHook(0x571770, &cAudioManager::GetDiabloTalkSfx, PATCH_JUMP); +// InjectHook(0x569750, &cAudioManager::GetDistanceSquared, PATCH_JUMP); +// InjectHook(0x574DA0, &cAudioManager::GetEightTalkSfx, PATCH_JUMP); +// InjectHook(0x574040, &cAudioManager::GetFanFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x573F60, &cAudioManager::GetFanMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x571040, &cAudioManager::GetFBITalkSfx, PATCH_JUMP); +// InjectHook(0x572280, &cAudioManager::GetFemaleNo3TalkSfx, PATCH_JUMP); +// InjectHook(0x5712B0, &cAudioManager::GetFiremanTalkSfx, PATCH_JUMP); +// InjectHook(0x574E50, &cAudioManager::GetFrankieTalkSfx, PATCH_JUMP); +// InjectHook(0x575510, &cAudioManager::GetGenericFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x575460, &cAudioManager::GetGenericMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x571C30, &cAudioManager::GetHoodTalkSfx, PATCH_JUMP); +// InjectHook(0x5741F0, &cAudioManager::GetHospitalFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x574120, &cAudioManager::GetHospitalMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x56F410, &cAudioManager::GetJumboTaxiFreq, PATCH_JUMP); +// InjectHook(0x573310, &cAudioManager::GetLittleItalyFemaleOldTalkSfx, PATCH_JUMP); +// InjectHook(0x573400, &cAudioManager::GetLittleItalyFemaleYoungTalkSfx, PATCH_JUMP); +// InjectHook(0x5731E0, &cAudioManager::GetLittleItalyMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x571510, &cAudioManager::GetMafiaTalkSfx, PATCH_JUMP); +// InjectHook(0x571F40, &cAudioManager::GetMaleNo2TalkSfx, PATCH_JUMP); +// InjectHook(0x5711C0, &cAudioManager::GetMedicTalkSfx, PATCH_JUMP); +// InjectHook(0x5795D0, &cAudioManager::GetMissionAudioLoadingStatus, PATCH_JUMP); +// InjectHook(0x574F00, &cAudioManager::GetMistyTalkSfx, PATCH_JUMP); +// InjectHook(0x575340, &cAudioManager::GetNormalMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x57A8A0, &cAudioManager::GetNum3DProvidersAvailable, PATCH_JUMP); +// InjectHook(0x574FD0, &cAudioManager::GetOJGTalkSfx, PATCH_JUMP); +// InjectHook(0x570960, &cAudioManager::GetPedCommentSfx, PATCH_JUMP); +// InjectHook(0x570DB0, &cAudioManager::GetPhrase, PATCH_JUMP); +// InjectHook(0x56BF80, &cAudioManager::GetVehicleDriveWheelSkidValue, PATCH_JUMP); +// InjectHook(0x56C120, &cAudioManager::GetVehicleNonDriveWheelSkidValue, PATCH_JUMP); +// InjectHook(0x575240, &cAudioManager::GetPimpTalkSfx, PATCH_JUMP); +// InjectHook(0x570E00, &cAudioManager::GetPlayerTalkSfx, PATCH_JUMP); +// InjectHook(0x5737E0, &cAudioManager::GetScumFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x5736D0, &cAudioManager::GetScumMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x575060, &cAudioManager::GetSecurityGuardTalkSfx, PATCH_JUMP); +// InjectHook(0x574480, &cAudioManager::GetShopperFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x574790, &cAudioManager::GetSpecialCharacterTalkSfx, PATCH_JUMP); +// InjectHook(0x573E90, &cAudioManager::GetStewardFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x573DC0, &cAudioManager::GetStewardMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x574690, &cAudioManager::GetStudentFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x574590, &cAudioManager::GetStudentMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x573CD0, &cAudioManager::GetSupermodelFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x573BD0, &cAudioManager::GetSupermodelMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x570F80, &cAudioManager::GetSwatTalkSfx, PATCH_JUMP); +// InjectHook(0x575190, &cAudioManager::GetTaxiDriverTalkSfx, PATCH_JUMP); +// InjectHook(0x571650, &cAudioManager::GetTriadTalkSfx, PATCH_JUMP); +// InjectHook(0x5723A0, &cAudioManager::GetWhiteBusinessFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x572170, &cAudioManager::GetWhiteCasualFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x574290, &cAudioManager::GetWhiteConstructionWorkerTalkSfx, PATCH_JUMP); +// InjectHook(0x571E60, &cAudioManager::GetWhiteCriminalTalkSfx, PATCH_JUMP); +// InjectHook(0x5734F0, &cAudioManager::GetWhiteDockerMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x5727B0, &cAudioManager::GetWhiteFatFemaleTalkSfx, PATCH_JUMP); +// InjectHook(0x5725D0, &cAudioManager::GetWhiteFatMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x5729D0, &cAudioManager::GetWhiteFemaleProstituteTalkSfx, PATCH_JUMP); +// InjectHook(0x5738D0, &cAudioManager::GetWhiteWorkerMaleTalkSfx, PATCH_JUMP); +// InjectHook(0x5718D0, &cAudioManager::GetYakuzaTalkSfx, PATCH_JUMP); +// InjectHook(0x5719E0, &cAudioManager::GetYardieTalkSfx, PATCH_JUMP); +// InjectHook(0x56CAB0, &cAudioManager::HasAirBrakes, PATCH_JUMP); +// InjectHook(0x57A0E0, &cAudioManager::Initialise, PATCH_JUMP); +// InjectHook(0x57B030, &cAudioManager::InterrogateAudioEntities, PATCH_JUMP); +// InjectHook(0x57AA50, &cAudioManager::IsAudioInitialised, PATCH_JUMP); +// InjectHook(0x579650, &cAudioManager::IsMissionAudioSampleFinished, PATCH_JUMP); +// InjectHook(0x57A9C0, &cAudioManager::IsMP3RadioChannelAvailable, PATCH_JUMP); +// InjectHook(0x579520, &cAudioManager::MissionScriptAudioUsesPoliceChannel, PATCH_JUMP); +// InjectHook(0x56AD10, &cAudioManager::PlayerJustGotInCar, PATCH_JUMP); +// InjectHook(0x56AD20, &cAudioManager::PlayerJustLeftCar, PATCH_JUMP); +// InjectHook(0x579620, &cAudioManager::PlayLoadedMissionAudio, PATCH_JUMP); +// InjectHook(0x57A500, &cAudioManager::PlayOneShot, PATCH_JUMP); +// InjectHook(0x569420, &cAudioManager::PostInitialiseGameSpecificSetup, PATCH_JUMP); +// InjectHook(0x569640, &cAudioManager::PostTerminateGameSpecificShutdown, PATCH_JUMP); +// InjectHook(0x569400, &cAudioManager::PreInitialiseGameSpecificSetup, PATCH_JUMP); +// InjectHook(0x579550, &cAudioManager::PreloadMissionAudio, PATCH_JUMP); +// InjectHook(0x569570, &cAudioManager::PreTerminateGameSpecificShutdown, PATCH_JUMP); // InjectHook(0x57BA60, &cAudioManager::ProcessActiveQueues, PATCH_JUMP); -InjectHook(0x56C940, &cAudioManager::ProcessAirBrakes, PATCH_JUMP); -InjectHook(0x577B30, &cAudioManager::ProcessAirportScriptObject, PATCH_JUMP); -InjectHook(0x56DE80, &cAudioManager::ProcessBoatEngine, PATCH_JUMP); -InjectHook(0x56E500, &cAudioManager::ProcessBoatMovingOverWater, PATCH_JUMP); -InjectHook(0x5790D0, &cAudioManager::ProcessBridge, PATCH_JUMP); -InjectHook(0x579250, &cAudioManager::ProcessBridgeMotor, PATCH_JUMP); -InjectHook(0x579310, &cAudioManager::ProcessBridgeOneShots, PATCH_JUMP); -InjectHook(0x579170, &cAudioManager::ProcessBridgeWarning, PATCH_JUMP); -InjectHook(0x56CC20, &cAudioManager::ProcessCarBombTick, PATCH_JUMP); -InjectHook(0x577CA0, &cAudioManager::ProcessCinemaScriptObject, PATCH_JUMP); -InjectHook(0x577E50, &cAudioManager::ProcessDocksScriptObject, PATCH_JUMP); -InjectHook(0x56CAF0, &cAudioManager::ProcessEngineDamage, PATCH_JUMP); -InjectHook(0x569870, &cAudioManager::ProcessEntity, PATCH_JUMP); -InjectHook(0x575AC0, &cAudioManager::ProcessExplosions, PATCH_JUMP); -InjectHook(0x578FD0, &cAudioManager::ProcessFireHydrant, PATCH_JUMP); -InjectHook(0x5785E0, &cAudioManager::ProcessFrontEnd, PATCH_JUMP); -InjectHook(0x56E6A0, &cAudioManager::ProcessHelicopter, PATCH_JUMP); -InjectHook(0x577FE0, &cAudioManager::ProcessHomeScriptObject, PATCH_JUMP); -InjectHook(0x56E8F0, &cAudioManager::ProcessJumbo, PATCH_JUMP); -InjectHook(0x56EA40, &cAudioManager::ProcessJumboAccel, PATCH_JUMP); -InjectHook(0x56EE40, &cAudioManager::ProcessJumboDecel, PATCH_JUMP); -InjectHook(0x56ECF0, &cAudioManager::ProcessJumboFlying, PATCH_JUMP); -InjectHook(0x56ED10, &cAudioManager::ProcessJumboLanding, PATCH_JUMP); -InjectHook(0x56EC00, &cAudioManager::ProcessJumboTakeOff, PATCH_JUMP); -InjectHook(0x56EA10, &cAudioManager::ProcessJumboTaxi, PATCH_JUMP); -InjectHook(0x5777E0, &cAudioManager::ProcessLaunderetteScriptObject, PATCH_JUMP); -InjectHook(0x576770, &cAudioManager::ProcessLoopingScriptObject, PATCH_JUMP); -InjectHook(0x5796E0, &cAudioManager::ProcessMissionAudio, PATCH_JUMP); -InjectHook(0x56A050, &cAudioManager::ProcessModelCarEngine, PATCH_JUMP); -InjectHook(0x5760C0, &cAudioManager::ProcessOneShotScriptObject, PATCH_JUMP); -InjectHook(0x56F450, &cAudioManager::ProcessPed, PATCH_JUMP); -InjectHook(0x56F4D0, &cAudioManager::ProcessPedHeadphones, PATCH_JUMP); +// InjectHook(0x56C940, &cAudioManager::ProcessAirBrakes, PATCH_JUMP); +// InjectHook(0x577B30, &cAudioManager::ProcessAirportScriptObject, PATCH_JUMP); +// InjectHook(0x56DE80, &cAudioManager::ProcessBoatEngine, PATCH_JUMP); +// InjectHook(0x56E500, &cAudioManager::ProcessBoatMovingOverWater, PATCH_JUMP); +// InjectHook(0x5790D0, &cAudioManager::ProcessBridge, PATCH_JUMP); +// InjectHook(0x579250, &cAudioManager::ProcessBridgeMotor, PATCH_JUMP); +// InjectHook(0x579310, &cAudioManager::ProcessBridgeOneShots, PATCH_JUMP); +// InjectHook(0x579170, &cAudioManager::ProcessBridgeWarning, PATCH_JUMP); +// InjectHook(0x56CC20, &cAudioManager::ProcessCarBombTick, PATCH_JUMP); +// InjectHook(0x577CA0, &cAudioManager::ProcessCinemaScriptObject, PATCH_JUMP); +// InjectHook(0x577E50, &cAudioManager::ProcessDocksScriptObject, PATCH_JUMP); +// InjectHook(0x56CAF0, &cAudioManager::ProcessEngineDamage, PATCH_JUMP); +// InjectHook(0x569870, &cAudioManager::ProcessEntity, PATCH_JUMP); +// InjectHook(0x575AC0, &cAudioManager::ProcessExplosions, PATCH_JUMP); +// InjectHook(0x578FD0, &cAudioManager::ProcessFireHydrant, PATCH_JUMP); +// InjectHook(0x5785E0, &cAudioManager::ProcessFrontEnd, PATCH_JUMP); +// InjectHook(0x56E6A0, &cAudioManager::ProcessHelicopter, PATCH_JUMP); +// InjectHook(0x577FE0, &cAudioManager::ProcessHomeScriptObject, PATCH_JUMP); +// InjectHook(0x56E8F0, &cAudioManager::ProcessJumbo, PATCH_JUMP); +// InjectHook(0x56EA40, &cAudioManager::ProcessJumboAccel, PATCH_JUMP); +// InjectHook(0x56EE40, &cAudioManager::ProcessJumboDecel, PATCH_JUMP); +// InjectHook(0x56ECF0, &cAudioManager::ProcessJumboFlying, PATCH_JUMP); +// InjectHook(0x56ED10, &cAudioManager::ProcessJumboLanding, PATCH_JUMP); +// InjectHook(0x56EC00, &cAudioManager::ProcessJumboTakeOff, PATCH_JUMP); +// InjectHook(0x56EA10, &cAudioManager::ProcessJumboTaxi, PATCH_JUMP); +// InjectHook(0x5777E0, &cAudioManager::ProcessLaunderetteScriptObject, PATCH_JUMP); +// InjectHook(0x576770, &cAudioManager::ProcessLoopingScriptObject, PATCH_JUMP); +// InjectHook(0x5796E0, &cAudioManager::ProcessMissionAudio, PATCH_JUMP); +// InjectHook(0x56A050, &cAudioManager::ProcessModelCarEngine, PATCH_JUMP); +// InjectHook(0x5760C0, &cAudioManager::ProcessOneShotScriptObject, PATCH_JUMP); +// InjectHook(0x56F450, &cAudioManager::ProcessPed, PATCH_JUMP); +// InjectHook(0x56F4D0, &cAudioManager::ProcessPedHeadphones, PATCH_JUMP); // InjectHook(0x56F650, &cAudioManager::ProcessPedOneShots, PATCH_JUMP); -InjectHook(0x5699C0, &cAudioManager::ProcessPhysical, PATCH_JUMP); -InjectHook(0x56E860, &cAudioManager::ProcessPlane, PATCH_JUMP); -InjectHook(0x56B0D0, &cAudioManager::ProcessPlayersVehicleEngine, PATCH_JUMP); -InjectHook(0x578190, &cAudioManager::ProcessPoliceCellBeatingScriptObject, PATCH_JUMP); -InjectHook(0x577280, &cAudioManager::ProcessPornCinema, PATCH_JUMP); -InjectHook(0x578A80, &cAudioManager::ProcessProjectiles, PATCH_JUMP); -InjectHook(0x569CC0, &cAudioManager::ProcessRainOnVehicle, PATCH_JUMP); -InjectHook(0x569700, &cAudioManager::ProcessReverb, PATCH_JUMP); -InjectHook(0x569E50, &cAudioManager::ProcessReverseGear, PATCH_JUMP); -InjectHook(0x577630, &cAudioManager::ProcessSawMillScriptObject, PATCH_JUMP); -InjectHook(0x576070, &cAudioManager::ProcessScriptObject, PATCH_JUMP); -InjectHook(0x577970, &cAudioManager::ProcessShopScriptObject, PATCH_JUMP); -InjectHook(0x5697D0, &cAudioManager::ProcessSpecial, PATCH_JUMP); -InjectHook(0x56DBF0, &cAudioManager::ProcessTrainNoise, PATCH_JUMP); -InjectHook(0x569A00, &cAudioManager::ProcessVehicle, PATCH_JUMP); -InjectHook(0x56C770, &cAudioManager::ProcessVehicleDoors, PATCH_JUMP); -InjectHook(0x56C200, &cAudioManager::ProcessVehicleHorn, PATCH_JUMP); -InjectHook(0x56C640, &cAudioManager::ProcessVehicleReverseWarning, PATCH_JUMP); -InjectHook(0x56A230, &cAudioManager::ProcessVehicleRoadNoise, PATCH_JUMP); -InjectHook(0x56C420, &cAudioManager::ProcessVehicleSirenOrAlarm, PATCH_JUMP); -InjectHook(0x56BCB0, &cAudioManager::ProcessVehicleSkidding, PATCH_JUMP); -InjectHook(0x575F30, &cAudioManager::ProcessWaterCannon, PATCH_JUMP); -InjectHook(0x578370, &cAudioManager::ProcessWeather, PATCH_JUMP); -InjectHook(0x56A440, &cAudioManager::ProcessWetRoadNoise, PATCH_JUMP); -InjectHook(0x577530, &cAudioManager::ProcessWorkShopScriptObject, PATCH_JUMP); -InjectHook(0x57AF90, &cAudioManager::RandomDisplacement, PATCH_JUMP); -InjectHook(0x57A9F0, &cAudioManager::ReacquireDigitalHandle, PATCH_JUMP); -InjectHook(0x57A9E0, &cAudioManager::ReleaseDigitalHandle, PATCH_JUMP); -InjectHook(0x569650, &cAudioManager::ResetAudioLogicTimers, PATCH_JUMP); -InjectHook(0x57A7B0, &cAudioManager::ResetTimers, PATCH_JUMP); -InjectHook(0x57A2A0, &cAudioManager::Service, PATCH_JUMP); -InjectHook(0x57AA60, &cAudioManager::ServiceSoundEffects, PATCH_JUMP); -InjectHook(0x57A910, &cAudioManager::SetCurrent3DProvider, PATCH_JUMP); -InjectHook(0x57AA00, &cAudioManager::SetDynamicAcousticModelingStatus, PATCH_JUMP); -InjectHook(0x57A770, &cAudioManager::SetEffectsFadeVolume, PATCH_JUMP); -InjectHook(0x57A730, &cAudioManager::SetEffectsMasterVolume, PATCH_JUMP); -InjectHook(0x57A4C0, &cAudioManager::SetEntityStatus, PATCH_JUMP); -InjectHook(0x5795F0, &cAudioManager::SetMissionAudioLocation, PATCH_JUMP); -InjectHook(0x57A790, &cAudioManager::SetMusicFadeVolume, PATCH_JUMP); -InjectHook(0x57A750, &cAudioManager::SetMusicMasterVolume, PATCH_JUMP); -InjectHook(0x57A9A0, &cAudioManager::SetSpeakerConfig, PATCH_JUMP); -InjectHook(0x56F230, &cAudioManager::SetupJumboFlySound, PATCH_JUMP); -InjectHook(0x56F310, &cAudioManager::SetupJumboRumbleSound, PATCH_JUMP); -InjectHook(0x56EF20, &cAudioManager::SetupJumboTaxiSound, PATCH_JUMP); -InjectHook(0x56F070, &cAudioManager::SetupJumboWhineSound, PATCH_JUMP); -InjectHook(0x570690, &cAudioManager::SetupPedComments, PATCH_JUMP); -InjectHook(0x57A150, &cAudioManager::Terminate, PATCH_JUMP); -InjectHook(0x57AC60, &cAudioManager::TranslateEntity, PATCH_JUMP); -InjectHook(0x56AC80, &cAudioManager::UpdateGasPedalAudio, PATCH_JUMP); -InjectHook(0x57B470, &cAudioManager::UpdateReflections, PATCH_JUMP); -InjectHook(0x56C600, &cAudioManager::UsesReverseWarning, PATCH_JUMP); -InjectHook(0x56C3C0, &cAudioManager::UsesSiren, PATCH_JUMP); -InjectHook(0x56C3F0, &cAudioManager::UsesSirenSwitching, PATCH_JUMP); +// InjectHook(0x5699C0, &cAudioManager::ProcessPhysical, PATCH_JUMP); +// InjectHook(0x56E860, &cAudioManager::ProcessPlane, PATCH_JUMP); +// InjectHook(0x56B0D0, &cAudioManager::ProcessPlayersVehicleEngine, PATCH_JUMP); +// InjectHook(0x578190, &cAudioManager::ProcessPoliceCellBeatingScriptObject, PATCH_JUMP); +// InjectHook(0x577280, &cAudioManager::ProcessPornCinema, PATCH_JUMP); +// InjectHook(0x578A80, &cAudioManager::ProcessProjectiles, PATCH_JUMP); +// InjectHook(0x569CC0, &cAudioManager::ProcessRainOnVehicle, PATCH_JUMP); +// InjectHook(0x569700, &cAudioManager::ProcessReverb, PATCH_JUMP); +// InjectHook(0x569E50, &cAudioManager::ProcessReverseGear, PATCH_JUMP); +// InjectHook(0x577630, &cAudioManager::ProcessSawMillScriptObject, PATCH_JUMP); +// InjectHook(0x576070, &cAudioManager::ProcessScriptObject, PATCH_JUMP); +// InjectHook(0x577970, &cAudioManager::ProcessShopScriptObject, PATCH_JUMP); +// InjectHook(0x5697D0, &cAudioManager::ProcessSpecial, PATCH_JUMP); +// InjectHook(0x56DBF0, &cAudioManager::ProcessTrainNoise, PATCH_JUMP); +// InjectHook(0x569A00, &cAudioManager::ProcessVehicle, PATCH_JUMP); +// InjectHook(0x56C770, &cAudioManager::ProcessVehicleDoors, PATCH_JUMP); +// InjectHook(0x56C200, &cAudioManager::ProcessVehicleHorn, PATCH_JUMP); +// InjectHook(0x56C640, &cAudioManager::ProcessVehicleReverseWarning, PATCH_JUMP); +// InjectHook(0x56A230, &cAudioManager::ProcessVehicleRoadNoise, PATCH_JUMP); +// InjectHook(0x56C420, &cAudioManager::ProcessVehicleSirenOrAlarm, PATCH_JUMP); +// InjectHook(0x56BCB0, &cAudioManager::ProcessVehicleSkidding, PATCH_JUMP); +// InjectHook(0x575F30, &cAudioManager::ProcessWaterCannon, PATCH_JUMP); +// InjectHook(0x578370, &cAudioManager::ProcessWeather, PATCH_JUMP); +// InjectHook(0x56A440, &cAudioManager::ProcessWetRoadNoise, PATCH_JUMP); +// InjectHook(0x577530, &cAudioManager::ProcessWorkShopScriptObject, PATCH_JUMP); +// InjectHook(0x57AF90, &cAudioManager::RandomDisplacement, PATCH_JUMP); +// InjectHook(0x57A9F0, &cAudioManager::ReacquireDigitalHandle, PATCH_JUMP); +// InjectHook(0x57A9E0, &cAudioManager::ReleaseDigitalHandle, PATCH_JUMP); +// InjectHook(0x569650, &cAudioManager::ResetAudioLogicTimers, PATCH_JUMP); +// InjectHook(0x57A7B0, &cAudioManager::ResetTimers, PATCH_JUMP); +// InjectHook(0x57A2A0, &cAudioManager::Service, PATCH_JUMP); +// InjectHook(0x57AA60, &cAudioManager::ServiceSoundEffects, PATCH_JUMP); +// InjectHook(0x57A910, &cAudioManager::SetCurrent3DProvider, PATCH_JUMP); +// InjectHook(0x57AA00, &cAudioManager::SetDynamicAcousticModelingStatus, PATCH_JUMP); +// InjectHook(0x57A770, &cAudioManager::SetEffectsFadeVolume, PATCH_JUMP); +// InjectHook(0x57A730, &cAudioManager::SetEffectsMasterVolume, PATCH_JUMP); +// InjectHook(0x57A4C0, &cAudioManager::SetEntityStatus, PATCH_JUMP); +// InjectHook(0x5795F0, &cAudioManager::SetMissionAudioLocation, PATCH_JUMP); +// InjectHook(0x57A790, &cAudioManager::SetMusicFadeVolume, PATCH_JUMP); +// InjectHook(0x57A750, &cAudioManager::SetMusicMasterVolume, PATCH_JUMP); +// InjectHook(0x57A9A0, &cAudioManager::SetSpeakerConfig, PATCH_JUMP); +// InjectHook(0x56F230, &cAudioManager::SetupJumboFlySound, PATCH_JUMP); +// InjectHook(0x56F310, &cAudioManager::SetupJumboRumbleSound, PATCH_JUMP); +// InjectHook(0x56EF20, &cAudioManager::SetupJumboTaxiSound, PATCH_JUMP); +// InjectHook(0x56F070, &cAudioManager::SetupJumboWhineSound, PATCH_JUMP); +// InjectHook(0x570690, &cAudioManager::SetupPedComments, PATCH_JUMP); +// InjectHook(0x57A150, &cAudioManager::Terminate, PATCH_JUMP); +// InjectHook(0x57AC60, &cAudioManager::TranslateEntity, PATCH_JUMP); +// InjectHook(0x56AC80, &cAudioManager::UpdateGasPedalAudio, PATCH_JUMP); +// InjectHook(0x57B470, &cAudioManager::UpdateReflections, PATCH_JUMP); +// InjectHook(0x56C600, &cAudioManager::UsesReverseWarning, PATCH_JUMP); +// InjectHook(0x56C3C0, &cAudioManager::UsesSiren, PATCH_JUMP); +// InjectHook(0x56C3F0, &cAudioManager::UsesSirenSwitching, PATCH_JUMP); -InjectHook(0x57C2B0, &cAudioManager::AdjustSamplesVolume, PATCH_JUMP); -InjectHook(0x57C320, &cAudioManager::ComputeEmittingVolume, PATCH_JUMP); +// InjectHook(0x57C2B0, &cAudioManager::AdjustSamplesVolume, PATCH_JUMP); +// InjectHook(0x57C320, &cAudioManager::ComputeEmittingVolume, PATCH_JUMP); -InjectHook(0x5755C0, &cPedComments::Add, PATCH_JUMP); -InjectHook(0x575730, &cPedComments::Process, PATCH_JUMP); -ENDPATCHES +// InjectHook(0x5755C0, &cPedComments::Add, PATCH_JUMP); +// InjectHook(0x575730, &cPedComments::Process, PATCH_JUMP); +// ENDPATCHES diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index c5350e10..07c669ed 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -1,13 +1,14 @@ #pragma once -#include "DMAudio.h" #include "common.h" #include "config.h" + +#include "DMAudio.h" + #include "AudioCollision.h" #include "PoliceRadio.h" -enum eScriptSounds : int16 -{ +enum eScriptSounds : int16 { SCRIPT_SOUND_0 = 0, SCRIPT_SOUND_1 = 1, SCRIPT_SOUND_2 = 2, @@ -142,28 +143,28 @@ public: int32 m_nSampleIndex; uint8 m_bBankIndex; bool m_bIs2D; - uint8 field_14; - uint8 field_15; + uint8 field_14; // unused + uint8 field_15; // unused int32 m_nReleasingVolumeModificator; int32 m_nFrequency; uint8 m_bVolume; - uint8 field_25; - uint8 field_26; - uint8 field_27; + uint8 field_25; // unused + uint8 field_26; // unused + uint8 field_27; // unused float m_fDistance; int32 m_nLoopCount; int32 m_nLoopStart; int32 m_nLoopEnd; uint8 m_bEmittingVolume; - uint8 field_45; - uint8 field_46; - uint8 field_47; + uint8 field_45; // unused + uint8 field_46; // unused + uint8 field_47; // unused float m_fSpeedMultiplier; float m_fSoundIntensity; bool m_bReleasingSoundFlag; - uint8 field_57; - uint8 field_58; - uint8 field_59; + uint8 field_57; // unused + uint8 field_58; // unused + uint8 field_59; // unused CVector m_vecPos; bool m_bReverbFlag; uint8 m_bLoopsRemaining; @@ -172,13 +173,13 @@ public: int32 m_nReleasingVolumeDivider; bool m_bIsProcessed; bool m_bLoopEnded; - uint8 field_82; - uint8 field_83; - int32 calculatedVolume; + uint8 field_82; // unused + uint8 field_83; // unused + int32 m_nCalculatedVolume; int8 m_nVolumeChange; - uint8 field_89; - uint8 field_90; - uint8 field_91; + uint8 field_89; // unused + uint8 field_90; // unused + uint8 field_91; // unused // no methods }; @@ -214,8 +215,8 @@ public: CVector m_vecPos; float m_fDistance; uint8 m_bVolume; - int8 field_25; // allocated time? - uint8 gap_26[2]; + int8 m_nProcess; + uint8 gap_26[2]; // unused // no methods }; @@ -229,11 +230,11 @@ public: uint8 m_nIndexMap[NUM_PED_COMMENTS_BANKS][NUM_PED_COMMENTS_SLOTS]; uint8 m_nCommentsInBank[NUM_PED_COMMENTS_BANKS]; uint8 m_nActiveBank; - uint8 gap_1163[1]; + uint8 gap_1163[1]; // unused // reversed all methods - void Add(tPedComment *com); /// ok - void Process(); /// ok + void Add(tPedComment *com); + void Process(); }; static_assert(sizeof(cPedComments) == 1164, "cPedComments: error"); @@ -245,18 +246,18 @@ class cMissionAudio public: CVector m_vecPos; bool m_bPredefinedProperties; - uint8 gap_13[3]; + uint8 gap_13[3]; // unused int m_nSampleIndex; uint8 m_bLoadingStatus; uint8 m_bPlayStatus; - uint8 field_22; - uint8 field_23; + uint8 field_22; // todo find a name + uint8 field_23; // unused int32 m_nMissionAudioCounter; bool m_bIsPlayed; - uint8 field_29; - uint8 field_30; - uint8 field_31; - // no methods + uint8 field_29; // unused + uint8 field_30; // unused + uint8 field_31; // unused + // no methods }; static_assert(sizeof(cMissionAudio) == 32, "cMissionAudio: error"); @@ -334,6 +335,9 @@ public: uint8 field_19195; // unused uint32 m_FrameCounter; + cAudioManager(); + ~cAudioManager(); + // getters uint32 GetFrameCounter() const { return m_FrameCounter; } float GetReflectionsDistance(int32 idx) const { return m_afReflectionsDistances[idx]; } @@ -341,29 +345,29 @@ public: bool IsMissionAudioPlaying() const { return m_sMissionAudio.m_bPlayStatus == 1; } // "Should" be in alphabetic order, except "getXTalkSfx" - void AddDetailsToRequestedOrderList(uint8 sample); /// ok (check once more) + void AddDetailsToRequestedOrderList(uint8 sample); void AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 unk1, - uint8 counter, bool notLooping); /// ok - void AddReflectionsToRequestedQueue(); /// ok (check value) - void AddReleasingSounds(); /// ok (check) - void AddSampleToRequestedQueue(); /// ok - void AgeCrimes(); /// ok + uint8 counter, bool notLooping); + void AddReflectionsToRequestedQueue(); + void AddReleasingSounds(); + void AddSampleToRequestedQueue(); + void AgeCrimes(); - void CalculateDistance(bool &condition, float dist); /// ok - bool CheckForAnAudioFileOnCD() const; /// ok - void ClearActiveSamples(); /// ok - void ClearMissionAudio(); /// ok - void ClearRequestedQueue(); /// ok + void CalculateDistance(bool &condition, float dist); + bool CheckForAnAudioFileOnCD() const; + void ClearActiveSamples(); + void ClearMissionAudio(); + void ClearRequestedQueue(); int32 ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, float position2, - float speedMultiplier) const; /// ok - int32 ComputePan(float, CVector *); /// ok - uint8 ComputeVolume(uint8 emittingVolume, float soundIntensity, float distance) const; /// ok - int32 CreateEntity(int32 type, void *entity); /// ok + float speedMultiplier) const; + int32 ComputePan(float, CVector *); + uint8 ComputeVolume(uint8 emittingVolume, float soundIntensity, float distance) const; + int32 CreateEntity(int32 type, void *entity); - void DestroyAllGameCreatedEntities(); /// ok - void DestroyEntity(int32 id); /// ok - void DoJumboVolOffset() const; /// ok - void DoPoliceRadioCrackle(); /// ok + void DestroyAllGameCreatedEntities(); + void DestroyEntity(int32 id); + void DoJumboVolOffset() const; + void DoPoliceRadioCrackle(); // functions returning talk sfx, // order from GetPedCommentSfx @@ -445,154 +449,151 @@ public: uint32 GetGenericFemaleTalkSfx(int16 sound); // end of functions returning talk sfx - void GenerateIntegerRandomNumberTable(); /// ok + void GenerateIntegerRandomNumberTable(); char *Get3DProviderName(uint8 id) const; uint8 GetCDAudioDriveLetter() const; - int8 GetCurrent3DProviderIndex() const; /// ok + int8 GetCurrent3DProviderIndex() const; float GetCollisionLoopingRatio(uint32 a, uint32 b, float c) const; // not used - float GetCollisionOneShotRatio(int32 a, float b) const; /// ok - float GetCollisionRatio(float a, float b, float c, float d) const; /// ok - float GetDistanceSquared(CVector *v) const; /// ok - int32 GetJumboTaxiFreq() const; /// ok - bool GetMissionAudioLoadingStatus() const; /// ok - int8 GetMissionScriptPoliceAudioPlayingStatus() const; /// ok + float GetCollisionOneShotRatio(int32 a, float b) const; + float GetCollisionRatio(float a, float b, float c, float d) const; + float GetDistanceSquared(CVector *v) const; + int32 GetJumboTaxiFreq() const; + bool GetMissionAudioLoadingStatus() const; + int8 GetMissionScriptPoliceAudioPlayingStatus() const; uint8 GetNum3DProvidersAvailable() const; int32 GetPedCommentSfx(CPed *ped, int32 sound); void GetPhrase(uint32 *phrase, uint32 *prevPhrase, uint32 sample, uint32 maxOffset) const; float GetVehicleDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, - cTransmission *transmission, - float velocityChange); /// ok + cTransmission *transmission, float velocityChange); float GetVehicleNonDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, - cTransmission *transmission, - float velocityChange); /// ok + cTransmission *transmission, float velocityChange); - bool HasAirBrakes(int32 model) const; /// ok + bool HasAirBrakes(int32 model) const; - void Initialise(); /// ok - void InitialisePoliceRadio(); /// ok - void InitialisePoliceRadioZones(); /// ok - void InterrogateAudioEntities(); /// ok - bool IsAudioInitialised() const; /// ok - bool IsMissionAudioSampleFinished(); /// ok + void Initialise(); + void InitialisePoliceRadio(); + void InitialisePoliceRadioZones(); + void InterrogateAudioEntities(); + bool IsAudioInitialised() const; + bool IsMissionAudioSampleFinished(); bool IsMP3RadioChannelAvailable() const; - bool MissionScriptAudioUsesPoliceChannel(int32 soundMission) const; /// ok + bool MissionScriptAudioUsesPoliceChannel(int32 soundMission) const; - void PlayLoadedMissionAudio(); /// ok - void PlayOneShot(int32 index, int16 sound, float vol); /// ok - void PlaySuspectLastSeen(float x, float y, float z); /// ok - void PlayerJustGotInCar() const; /// ok - void PlayerJustLeftCar() const; /// ok - void PostInitialiseGameSpecificSetup(); /// ok - void PostTerminateGameSpecificShutdown(); /// ok - void PreInitialiseGameSpecificSetup() const; /// ok - void PreloadMissionAudio(const char *name); /// ok - void PreTerminateGameSpecificShutdown(); /// ok + void PlayLoadedMissionAudio(); + void PlayOneShot(int32 index, int16 sound, float vol); + void PlaySuspectLastSeen(float x, float y, float z); + void PlayerJustGotInCar() const; + void PlayerJustLeftCar() const; + void PostInitialiseGameSpecificSetup(); + void PostTerminateGameSpecificShutdown(); + void PreInitialiseGameSpecificSetup() const; + void PreloadMissionAudio(const char *name); + void PreTerminateGameSpecificShutdown(); /// processX - main logic of adding new sounds - void ProcessActiveQueues(); /// ok - bool ProcessAirBrakes(cVehicleParams *params); /// ok - void ProcessAirportScriptObject(uint8 sound); /// ok - bool ProcessBoatEngine(cVehicleParams *params); /// ok - bool ProcessBoatMovingOverWater(cVehicleParams *params); /// ok - void ProcessBridge(); /// ok - void ProcessBridgeMotor(); /// ok - void ProcessBridgeOneShots(); /// ok - void ProcessBridgeWarning(); /// ok - bool ProcessCarBombTick(cVehicleParams *params); /// ok - void ProcessCesna(cVehicleParams *params); /// ok - void ProcessCinemaScriptObject(uint8 sound); /// ok - void ProcessCrane(); /// ok - void ProcessDocksScriptObject(uint8 sound); /// ok - bool ProcessEngineDamage(cVehicleParams *params); /// ok - void ProcessEntity(int32 sound); /// ok - void ProcessExplosions(int32 explosion); /// ok - void ProcessFireHydrant(); /// ok - void ProcessFires(int32 entity); /// ok - void ProcessFrontEnd(); /// ok - void ProcessGarages(); /// ok - bool ProcessHelicopter(cVehicleParams *params); /// ok - void ProcessHomeScriptObject(uint8 sound); /// ok - void ProcessJumbo(cVehicleParams *); /// ok - void ProcessJumboAccel(CPlane *plane); /// ok - void ProcessJumboDecel(CPlane *plane); /// ok - void ProcessJumboFlying(); /// ok - void ProcessJumboLanding(CPlane *plane); /// ok - void ProcessJumboTakeOff(CPlane *plane); /// ok - void ProcessJumboTaxi(); /// ok - void ProcessLaunderetteScriptObject(uint8 sound); /// ok - void ProcessLoopingScriptObject(uint8 sound); /// ok - void ProcessMissionAudio(); /// ok - void ProcessModelCarEngine(cVehicleParams *params); /// ok - void ProcessOneShotScriptObject(uint8 sound); /// ok - void ProcessPed(CPhysical *ped); /// ok - void ProcessPedHeadphones(cPedParams *params); /// ok - void ProcessPedOneShots(cPedParams *params); // todo later (weird) - void ProcessPhysical(int32 id); /// ok - void ProcessPlane(cVehicleParams *params); /// ok - void ProcessPlayersVehicleEngine(cVehicleParams *params, - CAutomobile *automobile); /// ok - void ProcessPoliceCellBeatingScriptObject(uint8 sound); /// ok - void ProcessPornCinema(uint8 sound); /// ok - void ProcessProjectiles(); /// ok - void ProcessRainOnVehicle(cVehicleParams *params); /// ok - void ProcessReverb() const; /// ok - bool ProcessReverseGear(cVehicleParams *params); /// ok - void ProcessSawMillScriptObject(uint8 sound); /// ok - void ProcessScriptObject(int32 id); /// ok - void ProcessShopScriptObject(uint8 sound); /// ok - void ProcessSpecial(); /// ok - bool ProcessTrainNoise(cVehicleParams *params); /// ok - void ProcessVehicle(CVehicle *vehicle); /// ok - bool ProcessVehicleDoors(cVehicleParams *params); /// ok - void ProcessVehicleEngine(cVehicleParams *params); /// ok - void ProcessVehicleHorn(cVehicleParams *params); /// ok - void ProcessVehicleOneShots(void *); // todo - bool ProcessVehicleReverseWarning(cVehicleParams *params); /// ok - bool ProcessVehicleRoadNoise(cVehicleParams *params); /// ok - void ProcessVehicleSirenOrAlarm(cVehicleParams *params); /// ok - void ProcessVehicleSkidding(cVehicleParams *params); /// ok - void ProcessWaterCannon(int32); /// ok - void ProcessWeather(int32 id); /// ok - bool ProcessWetRoadNoise(cVehicleParams *params); /// ok - void ProcessWorkShopScriptObject(uint8 sound); /// ok + void ProcessActiveQueues(); + bool ProcessAirBrakes(cVehicleParams *params); + void ProcessAirportScriptObject(uint8 sound); + bool ProcessBoatEngine(cVehicleParams *params); + bool ProcessBoatMovingOverWater(cVehicleParams *params); + void ProcessBridge(); + void ProcessBridgeMotor(); + void ProcessBridgeOneShots(); + void ProcessBridgeWarning(); + bool ProcessCarBombTick(cVehicleParams *params); + void ProcessCesna(cVehicleParams *params); + void ProcessCinemaScriptObject(uint8 sound); + void ProcessCrane(); + void ProcessDocksScriptObject(uint8 sound); + bool ProcessEngineDamage(cVehicleParams *params); + void ProcessEntity(int32 sound); + void ProcessExplosions(int32 explosion); + void ProcessFireHydrant(); + void ProcessFires(int32 entity); + void ProcessFrontEnd(); + void ProcessGarages(); + bool ProcessHelicopter(cVehicleParams *params); + void ProcessHomeScriptObject(uint8 sound); + void ProcessJumbo(cVehicleParams *); + void ProcessJumboAccel(CPlane *plane); + void ProcessJumboDecel(CPlane *plane); + void ProcessJumboFlying(); + void ProcessJumboLanding(CPlane *plane); + void ProcessJumboTakeOff(CPlane *plane); + void ProcessJumboTaxi(); + void ProcessLaunderetteScriptObject(uint8 sound); + void ProcessLoopingScriptObject(uint8 sound); + void ProcessMissionAudio(); + void ProcessModelCarEngine(cVehicleParams *params); + void ProcessOneShotScriptObject(uint8 sound); + void ProcessPed(CPhysical *ped); + void ProcessPedHeadphones(cPedParams *params); + void ProcessPedOneShots(cPedParams *params); + void ProcessPhysical(int32 id); + void ProcessPlane(cVehicleParams *params); + void ProcessPlayersVehicleEngine(cVehicleParams *params, CAutomobile *automobile); + void ProcessPoliceCellBeatingScriptObject(uint8 sound); + void ProcessPornCinema(uint8 sound); + void ProcessProjectiles(); + void ProcessRainOnVehicle(cVehicleParams *params); + void ProcessReverb() const; + bool ProcessReverseGear(cVehicleParams *params); + void ProcessSawMillScriptObject(uint8 sound); + void ProcessScriptObject(int32 id); + void ProcessShopScriptObject(uint8 sound); + void ProcessSpecial(); + bool ProcessTrainNoise(cVehicleParams *params); + void ProcessVehicle(CVehicle *vehicle); + bool ProcessVehicleDoors(cVehicleParams *params); + void ProcessVehicleEngine(cVehicleParams *params); + void ProcessVehicleHorn(cVehicleParams *params); + void ProcessVehicleOneShots(cVehicleParams *params); + bool ProcessVehicleReverseWarning(cVehicleParams *params); + bool ProcessVehicleRoadNoise(cVehicleParams *params); + void ProcessVehicleSirenOrAlarm(cVehicleParams *params); + void ProcessVehicleSkidding(cVehicleParams *params); + void ProcessWaterCannon(int32); + void ProcessWeather(int32 id); + bool ProcessWetRoadNoise(cVehicleParams *params); + void ProcessWorkShopScriptObject(uint8 sound); int32 RandomDisplacement(uint32 seed) const; void ReacquireDigitalHandle() const; void ReleaseDigitalHandle() const; - void ReportCollision(CEntity *entity1, CEntity *entity2, uint8 surface1, uint8 surface2, float collisionPower, - float intensity2); /// ok - void ReportCrime(int32 crime, const CVector *pos); /// ok - void ResetAudioLogicTimers(uint32 timer); /// ok - void ResetPoliceRadio(); /// ok - void ResetTimers(uint32 time); /// ok + void ReportCollision(CEntity *entity1, CEntity *entity2, uint8 surface1, uint8 surface2, + float collisionPower, float intensity2); + void ReportCrime(int32 crime, const CVector *pos); + void ResetAudioLogicTimers(uint32 timer); + void ResetPoliceRadio(); + void ResetTimers(uint32 time); - void Service(); /// ok - void ServiceCollisions(); /// ok - void ServicePoliceRadio(); /// ok - void ServicePoliceRadioChannel(int32 wantedLevel); /// ok - void ServiceSoundEffects(); /// ok - int8 SetCurrent3DProvider(uint8 which); /// ok + void Service(); + void ServiceCollisions(); + void ServicePoliceRadio(); + void ServicePoliceRadioChannel(int32 wantedLevel); + void ServiceSoundEffects(); + int8 SetCurrent3DProvider(uint8 which); void SetDynamicAcousticModelingStatus(bool status); void SetEffectsFadeVolume(uint8 volume) const; void SetEffectsMasterVolume(uint8 volume) const; void SetEntityStatus(int32 id, uint8 status); - uint32 SetLoopingCollisionRequestedSfxFreqAndGetVol(cAudioCollision *audioCollision); /// ok + uint32 SetLoopingCollisionRequestedSfxFreqAndGetVol(cAudioCollision *audioCollision); void SetMissionAudioLocation(float x, float y, float z); void SetMissionScriptPoliceAudio(int32 sfx) const; void SetMonoMode(uint8); // todo (mobile) void SetMusicFadeVolume(uint8 volume) const; void SetMusicMasterVolume(uint8 volume) const; void SetSpeakerConfig(int32 conf) const; - void SetUpLoopingCollisionSound(cAudioCollision *col, uint8 counter); /// ok - void SetUpOneShotCollisionSound(cAudioCollision *col); /// ok - bool SetupCrimeReport(); /// ok - bool SetupJumboEngineSound(uint8 vol, int32 freq); /// ok - bool SetupJumboFlySound(uint8 emittingVol); /// ok - bool SetupJumboRumbleSound(uint8 emittingVol); /// ok - bool SetupJumboTaxiSound(uint8 vol); /// ok - bool SetupJumboWhineSound(uint8 emittingVol, int32 freq); /// ok - void SetupPedComments(cPedParams *params, uint32 sound); /// ok - void SetupSuspectLastSeenReport(); /// ok + void SetUpLoopingCollisionSound(cAudioCollision *col, uint8 counter); + void SetUpOneShotCollisionSound(cAudioCollision *col); + bool SetupCrimeReport(); + bool SetupJumboEngineSound(uint8 vol, int32 freq); + bool SetupJumboFlySound(uint8 emittingVol); + bool SetupJumboRumbleSound(uint8 emittingVol); + bool SetupJumboTaxiSound(uint8 vol); + bool SetupJumboWhineSound(uint8 emittingVol, int32 freq); + void SetupPedComments(cPedParams *params, uint32 sound); + void SetupSuspectLastSeenReport(); void Terminate(); void TranslateEntity(CVector *v1, CVector *v2) const; @@ -604,9 +605,8 @@ public: bool UsesSirenSwitching(int32 model) const; // only used in pc - void AdjustSamplesVolume(); /// ok - uint8 ComputeEmittingVolume(uint8 emittingVolume, float intensity, - float dist); /// ok + void AdjustSamplesVolume(); + uint8 ComputeEmittingVolume(uint8 emittingVolume, float intensity, float dist); }; static_assert(sizeof(cAudioManager) == 19220, "cAudioManager: error"); From 353310f0cf2414d6f0fcfe8fb1221c0e5190e0cf Mon Sep 17 00:00:00 2001 From: Filip Gawin Date: Mon, 13 Apr 2020 20:29:26 +0200 Subject: [PATCH 098/112] Update readme --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 1c13aa46..ad1fec3a 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,6 @@ to reverse at the time, calling the original functions is acceptable. ### Unreversed / incomplete classes (at least the ones we know) ``` -cAudioManager - WIP CBulletInfo CPedPath CRoadBlocks From 1c592c26f93ce80f6c113937341d447fa7765fcd Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Mon, 13 Apr 2020 21:57:13 +0300 Subject: [PATCH 099/112] review fix --- src/core/Pools.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/Pools.cpp b/src/core/Pools.cpp index 9fd3d60e..6add9e0c 100644 --- a/src/core/Pools.cpp +++ b/src/core/Pools.cpp @@ -183,7 +183,7 @@ INITSAVEBUF if (!pVehicle) continue; bool bHasPassenger = false; - for (int j = 0; j < 8; j++) { + for (int j = 0; j < ARRAY_SIZE(pVehicle->pPassengers); j++) { if (pVehicle->pPassengers[i]) bHasPassenger = true; } @@ -203,7 +203,7 @@ INITSAVEBUF if (!pVehicle) continue; bool bHasPassenger = false; - for (int j = 0; j < 8; j++) { + for (int j = 0; j < ARRAY_SIZE(pVehicle->pPassengers); j++) { if (pVehicle->pPassengers[j]) bHasPassenger = true; } From 12d36d871016643aae518117efd78a4ffbd3a88c Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Mon, 13 Apr 2020 22:12:41 +0300 Subject: [PATCH 100/112] fixed record --- src/control/Record.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/control/Record.cpp b/src/control/Record.cpp index aead1720..f41bead4 100644 --- a/src/control/Record.cpp +++ b/src/control/Record.cpp @@ -42,7 +42,7 @@ void CRecordDataForGame::Init(void) if (RecordingState == STATE_PLAYBACK) { pDataBufferPointer = new uint8[MEMORY_FOR_GAME_RECORD]; pDataBuffer = pDataBufferPointer; - pDataBuffer[CFileMgr::Read(FId, (char*)pDataBufferPointer, MEMORY_FOR_GAME_RECORD) + 8] = -1; + pDataBuffer[CFileMgr::Read(FId, (char*)pDataBufferPointer, MEMORY_FOR_GAME_RECORD) + 8] = (uint8)-1; CFileMgr::CloseFile(FId); } #else @@ -71,7 +71,7 @@ void CRecordDataForGame::SaveOrRetrieveDataForThisFrame(void) break; } case STATE_PLAYBACK: - if (pDataBufferPointer[8] == -1) + if (pDataBufferPointer[8] == (uint8)-1) CPad::GetPad(0)->NewState.Clear(); else { tGameBuffer* pData = (tGameBuffer*)pDataBufferPointer; @@ -92,7 +92,7 @@ void CRecordDataForGame::SaveOrRetrieveDataForThisFrame(void) #define PROCESS_BUTTON_STATE_STORE(buf, os, ns, field, id) \ do { \ - if (os->field != os->field){ \ + if (os->field != ns->field){ \ *buf++ = id; \ *buf++ = ns->field; \ } \ From 67055c1fbb99922d289a61a3e4a58c2636c45a08 Mon Sep 17 00:00:00 2001 From: Filip Gawin Date: Mon, 13 Apr 2020 21:13:07 +0200 Subject: [PATCH 101/112] Cleanup cAudioManager::ProcessRainOnVehicle a bit --- src/audio/AudioManager.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index f015000a..3ac194fe 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -7708,22 +7708,18 @@ cAudioManager::ProcessProjectiles() void cAudioManager::ProcessRainOnVehicle(cVehicleParams *params) { - float emittingVol; - CVehicle *veh; - if(params->m_fDistance < SQR(rainOnVehicleIntensity) && CWeather::Rain > 0.01f && (!CCullZones::CamNoRain() || !CCullZones::PlayerNoRain())) { - ++params->m_pVehicle->m_bRainAudioCounter; - veh = params->m_pVehicle; + CVehicle *veh = params->m_pVehicle; + ++veh->m_bRainAudioCounter; if(veh->m_bRainAudioCounter >= 2) { veh->m_bRainAudioCounter = 0; CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance); - emittingVol = 30.f * CWeather::Rain; + float emittingVol = 30.f * CWeather::Rain; m_sQueueSample.m_bVolume = ComputeVolume( emittingVol, rainOnVehicleIntensity, m_sQueueSample.m_fDistance); if(m_sQueueSample.m_bVolume) { m_sQueueSample.m_nCounter = veh->m_bRainSamplesCounter++; - veh = params->m_pVehicle; if(veh->m_bRainSamplesCounter > 4) veh->m_bRainSamplesCounter = 68; m_sQueueSample.m_nSampleIndex = (m_anRandomTable[1] & 3) + SFX_CAR_RAIN_1; From c21529467adcdf98d369bb461e100b44333b0b81 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Mon, 13 Apr 2020 22:16:51 +0300 Subject: [PATCH 102/112] fixed record --- src/control/Record.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/control/Record.cpp b/src/control/Record.cpp index f41bead4..ca4128e3 100644 --- a/src/control/Record.cpp +++ b/src/control/Record.cpp @@ -21,8 +21,7 @@ tGameBuffer& CRecordDataForGame::pDataBufferForFrame = *(tGameBuffer*)0x72CED0; void CRecordDataForGame::Init(void) { RecordingState = STATE_NONE; - if (pDataBuffer) - delete[] pDataBuffer; + delete[] pDataBuffer; pDataBufferPointer = nil; pDataBuffer = nil; #ifndef GTA_PS2 // this stuff is not present on PS2 @@ -102,7 +101,7 @@ uint8* CRecordDataForGame::PackCurrentPadValues(uint8* buf, CControllerState* os { PROCESS_BUTTON_STATE_STORE(buf, os, ns, LeftStickX, 0); PROCESS_BUTTON_STATE_STORE(buf, os, ns, LeftStickY, 1); - PROCESS_BUTTON_STATE_STORE(buf, os, ns, LeftShoulder1, 2); + PROCESS_BUTTON_STATE_STORE(buf, os, ns, RightStickX, 2); PROCESS_BUTTON_STATE_STORE(buf, os, ns, RightStickY, 3); PROCESS_BUTTON_STATE_STORE(buf, os, ns, LeftShoulder1, 4); PROCESS_BUTTON_STATE_STORE(buf, os, ns, LeftShoulder2, 5); @@ -132,7 +131,7 @@ uint8* CRecordDataForGame::UnPackCurrentPadValues(uint8* buf, uint8 total, CCont switch (*buf++) { PROCESS_BUTTON_STATE_RESTORE(buf, state, LeftStickX, 0); PROCESS_BUTTON_STATE_RESTORE(buf, state, LeftStickY, 1); - PROCESS_BUTTON_STATE_RESTORE(buf, state, LeftShoulder1, 2); + PROCESS_BUTTON_STATE_RESTORE(buf, state, RightStickX, 2); PROCESS_BUTTON_STATE_RESTORE(buf, state, RightStickY, 3); PROCESS_BUTTON_STATE_RESTORE(buf, state, LeftShoulder1, 4); PROCESS_BUTTON_STATE_RESTORE(buf, state, LeftShoulder2, 5); From 304b574eba47a4bce472ceabf5f0af27fc461d20 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 13 Apr 2020 22:25:24 +0300 Subject: [PATCH 103/112] added missing break --- src/control/Pickups.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index 80e89ee8..eb561670 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -1016,6 +1016,7 @@ CPacManPickup::Update() FindPlayerPed()->m_pWanted->m_nChaos += 10; FindPlayerPed()->m_pWanted->UpdateWantedLevel(); DMAudio.PlayFrontEndSound(SOUND_PICKUP_PACMAN_PACKAGE, 0); + break; } case PACMAN_RACE: CPacManPickups::PillsEatenInRace++; From 906133d3be4f3bb5c6c0b234f1cd642b5d1daaee Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Mon, 13 Apr 2020 22:43:41 +0300 Subject: [PATCH 104/112] fix garages --- src/control/Garages.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 84d49bee..d971d453 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -2108,7 +2108,7 @@ void CGarages::CloseHideOutGaragesBeforeSave() aGarages[i].m_eGarageType != GARAGE_HIDEOUT_THREE) continue; if (aGarages[i].m_eGarageState != GS_FULLYCLOSED && - aGarages[i].m_eGarageType != GARAGE_HIDEOUT_ONE || !aGarages[i].IsAnyCarBlockingDoor()) { + (aGarages[i].m_eGarageType != GARAGE_HIDEOUT_ONE || !aGarages[i].IsAnyCarBlockingDoor())) { aGarages[i].m_eGarageState = GS_FULLYCLOSED; switch (aGarages[i].m_eGarageType) { case GARAGE_HIDEOUT_ONE: From 60eb60de4e0d3a9b2b52d40617205efe134199b7 Mon Sep 17 00:00:00 2001 From: saml1er Date: Tue, 14 Apr 2020 02:13:00 +0500 Subject: [PATCH 105/112] Use NUMROADBLOCKS enum member in CRoadBlocks --- src/control/RoadBlocks.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/control/RoadBlocks.cpp b/src/control/RoadBlocks.cpp index 65f039ae..9548bc0a 100644 --- a/src/control/RoadBlocks.cpp +++ b/src/control/RoadBlocks.cpp @@ -25,7 +25,7 @@ CRoadBlocks::Init(void) NumRoadBlocks = 0; for (int objId = 0; objId < ThePaths.m_numMapObjects; objId++) { if (ThePaths.m_objectFlags[objId] & UseInRoadBlock) { - if (NumRoadBlocks < 600) { + if (NumRoadBlocks < NUMROADBLOCKS) { InOrOut[NumRoadBlocks] = true; RoadBlockObjects[NumRoadBlocks] = objId; NumRoadBlocks++; @@ -105,8 +105,8 @@ CRoadBlocks::GenerateRoadBlocks(void) { CMatrix offsetMatrix; uint32 frame = CTimer::GetFrameCounter() & 0xF; - int16 nRoadblockNode = (int16)(600 * frame) / 16; - const int16 maxRoadBlocks = (int16)(600 * (frame + 1)) / 16; + int16 nRoadblockNode = (int16)(NUMROADBLOCKS * frame) / 16; + const int16 maxRoadBlocks = (int16)(NUMROADBLOCKS * (frame + 1)) / 16; int16 numRoadBlocks = CRoadBlocks::NumRoadBlocks; if (CRoadBlocks::NumRoadBlocks >= maxRoadBlocks) numRoadBlocks = maxRoadBlocks; From fb5846b7bde01e86dfe11ad2ddf4823a2aeb4cbf Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Tue, 14 Apr 2020 01:12:44 +0300 Subject: [PATCH 106/112] update readme --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 1e70f3ba..59a395eb 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,6 @@ to reverse at the time, calling the original functions is acceptable. cAudioManager - WIP CBulletInfo CPedPath -CRoadBlocks CWeapon CWorld ``` From 313f547860b3c0f347507593476250561fb9ff1d Mon Sep 17 00:00:00 2001 From: erorcun Date: Tue, 14 Apr 2020 03:21:16 +0300 Subject: [PATCH 107/112] Some cleanup --- src/core/Frontend.cpp | 51 +++++++++++++------------- src/core/Frontend.h | 46 ++++++++++++------------ src/peds/Population.cpp | 79 ++++++++++++++++++++++++----------------- src/peds/Population.h | 54 ++++++++++++++-------------- 4 files changed, 122 insertions(+), 108 deletions(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 643c450f..48683abc 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -82,34 +82,34 @@ int curBottomBarOption = -1; int hoveredBottomBarOption = -1; #endif -int32 &CMenuManager::OS_Language = *(int32*)0x5F2F78; // 9 -int8 &CMenuManager::m_PrefsUseVibration = *(int8*)0x95CD92; -int8 &CMenuManager::m_DisplayControllerOnFoot = *(int8*)0x95CD8D; -int8 &CMenuManager::m_PrefsVsync = *(int8*)0x5F2E58; // 1 -int8 &CMenuManager::m_PrefsVsyncDisp = *(int8*)0x5F2E5C; // 1 -int8 &CMenuManager::m_PrefsFrameLimiter = *(int8*)0x5F2E60; // 1 -int8 &CMenuManager::m_PrefsShowSubtitles = *(int8*)0x5F2E54; // 1 -int8 &CMenuManager::m_PrefsSpeakers = *(int8*)0x95CD7E; -int32 &CMenuManager::m_ControlMethod = *(int32*)0x8F5F7C; -int8 &CMenuManager::m_PrefsDMA = *(int8*)0x5F2F74; // 1 -int32 &CMenuManager::m_PrefsLanguage = *(int32*)0x941238; +int32 CMenuManager::OS_Language = LANG_ENGLISH; // *(int32*)0x5F2F78; +int8 CMenuManager::m_PrefsUseVibration; // = *(int8*)0x95CD92; +int8 CMenuManager::m_DisplayControllerOnFoot; // = *(int8*)0x95CD8D; +int8 CMenuManager::m_PrefsVsync = 1; // *(int8*)0x5F2E58; +int8 CMenuManager::m_PrefsVsyncDisp = 1; // *(int8*)0x5F2E5C; +int8 CMenuManager::m_PrefsFrameLimiter = 1; // *(int8*)0x5F2E60; +int8 CMenuManager::m_PrefsShowSubtitles = 1; // *(int8*)0x5F2E54; +int8 CMenuManager::m_PrefsSpeakers; // = *(int8*)0x95CD7E; +int32 CMenuManager::m_ControlMethod; // = *(int32*)0x8F5F7C; +int8 CMenuManager::m_PrefsDMA = 1; // *(int8*)0x5F2F74; +int32 CMenuManager::m_PrefsLanguage; // = *(int32*)0x941238; uint8 CMenuManager::m_PrefsStereoMono; // *(bool*)0x95CDB5; // unused except restore settings -bool &CMenuManager::m_PrefsAllowNastyGame = *(bool*)0x5F2E64; // true -bool &CMenuManager::m_bStartUpFrontEndRequested = *(bool*)0x95CCF4; -bool &CMenuManager::m_bShutDownFrontEndRequested = *(bool*)0x95CD6A; +bool CMenuManager::m_PrefsAllowNastyGame = true; // *(bool*)0x5F2E64; +bool CMenuManager::m_bStartUpFrontEndRequested; // = *(bool*)0x95CCF4; +bool CMenuManager::m_bShutDownFrontEndRequested; // = *(bool*)0x95CD6A; -int8 &CMenuManager::m_PrefsUseWideScreen = *(int8*)0x95CD23; -int8 &CMenuManager::m_PrefsRadioStation = *(int8*)0x95CDA4; -int32 &CMenuManager::m_PrefsBrightness = *(int32*)0x5F2E50; // 256 -float &CMenuManager::m_PrefsLOD = *(float*)0x8F42C4; -int8 &CMenuManager::m_bFrontEnd_ReloadObrTxtGxt = *(int8*)0x628CFC; -int32 &CMenuManager::m_PrefsMusicVolume = *(int32*)0x5F2E4C; // 102 -int32 &CMenuManager::m_PrefsSfxVolume = *(int32*)0x5F2E48; // 102 +int8 CMenuManager::m_PrefsUseWideScreen; // = *(int8*)0x95CD23; +int8 CMenuManager::m_PrefsRadioStation; // = *(int8*)0x95CDA4; +int32 CMenuManager::m_PrefsBrightness = 256; // = *(int32*)0x5F2E50; +float CMenuManager::m_PrefsLOD; // = *(float*)0x8F42C4; +int8 CMenuManager::m_bFrontEnd_ReloadObrTxtGxt; // = *(int8*)0x628CFC; +int32 CMenuManager::m_PrefsMusicVolume = 102; // = *(int32*)0x5F2E4C; +int32 CMenuManager::m_PrefsSfxVolume = 102; // = *(int32*)0x5F2E48; -char *CMenuManager::m_PrefsSkinFile = (char*)0x5F2E74; //[256] "$$\"\"" +char CMenuManager::m_PrefsSkinFile[256] = "$$\"\""; // = (char*)0x5F2E74; -int32 &CMenuManager::m_KeyPressedCode = *(int32*)0x5F2E70; // -1 +int32 CMenuManager::m_KeyPressedCode = -1; // = *(int32*)0x5F2E70; // Originally that was PS2 option color, they forget it here and used in PrintBriefs once(but didn't use the output anyway) #ifdef PS2_LIKE_MENU @@ -1655,7 +1655,6 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 } } -// TODO: Complete aScreens and test that void CMenuManager::DrawControllerScreenExtraText(int yStart, int xStart, int lineHeight) { @@ -2463,7 +2462,7 @@ CMenuManager::DrawPlayerSetupScreen() m_pSelectedSkin->skinNameDisplayed[oldLength - 4] = '\0'; m_pSelectedSkin->skinNameOriginal[oldLength - 4] = '\0'; - // Truncate to 40 bytes-39 chars, idk why. This is done in sepearate function in game. + // Fill to 40 bytes-39 chars, idk why. This is done in sepearate function in game. strncpy(nameTemp, m_pSelectedSkin->skinNameDisplayed, 39); // game doesn't do that, but in our day strncpy to same string is forbidden strncpy(m_pSelectedSkin->skinNameDisplayed, nameTemp, 39); if (oldLength - 4 > 39) @@ -4875,7 +4874,7 @@ float CMenuManager::StretchY(float y) void CMenuManager::SwitchMenuOnAndOff() { - bool menuWasActive = !!m_bMenuActive; + bool menuWasActive = GetIsMenuActive(); // Reminder: You need REGISTER_START_BUTTON defined to make it work. if (CPad::GetPad(0)->GetStartJustDown() diff --git a/src/core/Frontend.h b/src/core/Frontend.h index 81765af9..9064cf4e 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -530,30 +530,30 @@ public: bool GetIsMenuActive() {return !!m_bMenuActive;} public: - static int32 &OS_Language; - static int8 &m_PrefsUseVibration; - static int8 &m_DisplayControllerOnFoot; - static int8 &m_PrefsUseWideScreen; - static int8 &m_PrefsRadioStation; - static int8 &m_PrefsVsync; - static int8 &m_PrefsVsyncDisp; - static int8 &m_PrefsFrameLimiter; - static int8 &m_PrefsShowSubtitles; - static int8 &m_PrefsSpeakers; - static int32 &m_ControlMethod; - static int8 &m_PrefsDMA; - static int32 &m_PrefsLanguage; - static int32 &m_PrefsBrightness; - static float &m_PrefsLOD; - static int8 &m_bFrontEnd_ReloadObrTxtGxt; - static int32 &m_PrefsMusicVolume; - static int32 &m_PrefsSfxVolume; - static char *m_PrefsSkinFile; - static int32 &m_KeyPressedCode; + static int32 OS_Language; + static int8 m_PrefsUseVibration; + static int8 m_DisplayControllerOnFoot; + static int8 m_PrefsUseWideScreen; + static int8 m_PrefsRadioStation; + static int8 m_PrefsVsync; + static int8 m_PrefsVsyncDisp; + static int8 m_PrefsFrameLimiter; + static int8 m_PrefsShowSubtitles; + static int8 m_PrefsSpeakers; + static int32 m_ControlMethod; + static int8 m_PrefsDMA; + static int32 m_PrefsLanguage; + static int32 m_PrefsBrightness; + static float m_PrefsLOD; + static int8 m_bFrontEnd_ReloadObrTxtGxt; + static int32 m_PrefsMusicVolume; + static int32 m_PrefsSfxVolume; + static char m_PrefsSkinFile[256]; + static int32 m_KeyPressedCode; - static bool &m_bStartUpFrontEndRequested; - static bool &m_bShutDownFrontEndRequested; - static bool &m_PrefsAllowNastyGame; + static bool m_bStartUpFrontEndRequested; + static bool m_bShutDownFrontEndRequested; + static bool m_PrefsAllowNastyGame; static uint8 m_PrefsStereoMono; static int32 m_SelectedMap; diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp index dfa61584..6959487f 100644 --- a/src/peds/Population.cpp +++ b/src/peds/Population.cpp @@ -29,39 +29,54 @@ #define PED_REMOVE_DIST (MIN_CREATION_DIST + CREATION_RANGE + 1.0f) #define PED_REMOVE_DIST_SPECIAL (MIN_CREATION_DIST + CREATION_RANGE + 15.0f) // for peds with bCullExtraFarAway flag -// TO-DO: These are hard-coded, reverse them. -// More clearly they're transition areas between zones. -RegenerationPoint (&aSafeZones)[8] = *(RegenerationPoint(*)[8]) * (uintptr*)0x5FA578; +// Transition areas between zones +const RegenerationPoint aSafeZones[] = { + { LEVEL_INDUSTRIAL, LEVEL_COMMERCIAL, 400.0f, 814.0f, -954.0f, -903.0f, 30.0f, 100.0f, + CVector(790.0f, -917.0f, 39.0f), CVector(775.0f, -921.0f, 39.0f), CVector(424.0f, -942.0f, 38.0f), CVector(439.0f, -938.0f, 38.0f) }, + { LEVEL_INDUSTRIAL, LEVEL_COMMERCIAL, 555.0f, 711.0f, 118.0f, 186.0f, -30.0f, -10.0f, + CVector(698.0f, 182.0f, -20.0f), CVector(681.0f, 178.0f, -20.0f), CVector(586.0f, 144.0f, -20.0f), CVector(577.0f, 135.0f, -20.0f) }, + { LEVEL_INDUSTRIAL, LEVEL_COMMERCIAL, 26.0f, 44.0f, 124.0f, 87.0f, 20.0f, 6.0f, + CVector(736.0f, -117.0f, -13.0f), CVector(730.0f, -115.0f, -13.0f), CVector(635.0f, -93.0f, -12.5f), CVector(650.0f, -89.0f, -12.5f) }, + { LEVEL_INDUSTRIAL, LEVEL_COMMERCIAL, 45.0f, 34.0f, 780.0f, 750.0f, 25.0f, 6.0f, + CVector(729.0f, -764.0f, -18.0f), CVector(720.0f, -769.0f, -17.0f), CVector(652.0f, -774.0f, -10.5f), CVector(659.0f, -770.0f, -10.5f) }, + { LEVEL_COMMERCIAL, LEVEL_SUBURBAN, 532.0f, 136.0f, 668.0f, 599.0f, 4.0f, 0.0f, + CVector(-172.0f, -619.0f, 44.0f), CVector(-183.0f, -623.0f, 44.0f), CVector(-511.0f, -645.0f, 41.0f), CVector(-493.0f, -639.0f, 41.5f) }, + { LEVEL_COMMERCIAL, LEVEL_SUBURBAN, 325.0f, 175.0f, 7.0f, 5.0f, 30.0f, 10.0f, + CVector(-185.0f, 40.8f, -20.5f), CVector(-202.0f, 37.0f, -20.5f), CVector(-315.0f, 65.5f, -20.5f), CVector(-306.0f, 62.4f, -20.5f) }, + { LEVEL_COMMERCIAL, LEVEL_SUBURBAN, 410.0f, 310.0f, 1055.0f, 1030.0f, 20.0f, 6.0f, + CVector(-321.0f, -1043.0f, -13.2f), CVector(-328.0f, -1045.0f, -13.2f), CVector(-398.0f, -1044.0f, -13.5f), CVector(-390.0f, -1040.5f, -13.5f) }, + { LEVEL_COMMERCIAL, LEVEL_SUBURBAN, 425.0f, 280.0f, 471.0f, 447.0f, 20.0f, 5.0f, + CVector(-292.0f, -457.0f, -11.6f), CVector(-310.0f, -461.0f, -11.6f), CVector(-413.0f, -461.0f, -11.5f), CVector(-399.0f, -457.0f, -11.3f) } +}; // *(RegenerationPoint(*)[8]) * (uintptr*)0x5FA578; -//PedGroup (&CPopulation::ms_pPedGroups)[NUMPEDGROUPS] = *(PedGroup(*)[NUMPEDGROUPS]) * (uintptr*)0x6E9248; -PedGroup CPopulation::ms_pPedGroups[NUMPEDGROUPS]; -bool &CPopulation::ms_bGivePedsWeapons = *(bool*)0x95CCF6; -int32 &CPopulation::m_AllRandomPedsThisType = *(int32*)0x5FA570; -float &CPopulation::PedDensityMultiplier = *(float*)0x5FA56C; -uint32 &CPopulation::ms_nTotalMissionPeds = *(uint32*)0x8F5F70; -int32 &CPopulation::MaxNumberOfPedsInUse = *(int32*)0x5FA574; -uint32& CPopulation::ms_nNumCivMale = *(uint32*)0x8F2548; -uint32& CPopulation::ms_nNumCivFemale = *(uint32*)0x8F5F44; -uint32& CPopulation::ms_nNumCop = *(uint32*)0x885AFC; -bool& CPopulation::bZoneChangeHasHappened = *(bool*)0x95CD79; -uint32& CPopulation::ms_nNumEmergency = *(uint32*)0x94071C; -int8& CPopulation::m_CountDownToPedsAtStart = *(int8*)0x95CD4F; -uint32& CPopulation::ms_nNumGang1 = *(uint32*)0x8F1B1C; -uint32& CPopulation::ms_nNumGang2 = *(uint32*)0x8F1B14; -uint32& CPopulation::ms_nTotalPeds = *(uint32*)0x95CB50; -uint32& CPopulation::ms_nNumGang3 = *(uint32*)0x8F2548; -uint32& CPopulation::ms_nTotalGangPeds = *(uint32*)0x885AF0; -uint32& CPopulation::ms_nNumGang4 = *(uint32*)0x8F1B2C; -uint32& CPopulation::ms_nTotalCivPeds = *(uint32*)0x8F2C3C; -uint32& CPopulation::ms_nNumGang5 = *(uint32*)0x8F1B30; -uint32& CPopulation::ms_nNumDummy = *(uint32*)0x8F1A98; -uint32& CPopulation::ms_nNumGang6 = *(uint32*)0x8F1B20; -uint32& CPopulation::ms_nNumGang9 = *(uint32*)0x8F1B10; -uint32& CPopulation::ms_nNumGang7 = *(uint32*)0x8F1B28; -uint32& CPopulation::ms_nNumGang8 = *(uint32*)0x8F1B0C; -CVector &CPopulation::RegenerationPoint_a = *(CVector*)0x8E2AA4; -CVector &CPopulation::RegenerationPoint_b = *(CVector*)0x8E2A98; -CVector &CPopulation::RegenerationForward = *(CVector*)0x8F1AD4; +PedGroup CPopulation::ms_pPedGroups[NUMPEDGROUPS]; // = *(PedGroup(*)[NUMPEDGROUPS]) * (uintptr*)0x6E9248; +bool CPopulation::ms_bGivePedsWeapons; // = *(bool*)0x95CCF6; +int32 CPopulation::m_AllRandomPedsThisType = -1; // = *(int32*)0x5FA570; +float CPopulation::PedDensityMultiplier = 1.0f; // = *(float*)0x5FA56C; +uint32 CPopulation::ms_nTotalMissionPeds; // = *(uint32*)0x8F5F70; +int32 CPopulation::MaxNumberOfPedsInUse = 25; // *(int32*)0x5FA574; +uint32 CPopulation::ms_nNumCivMale; // = *(uint32*)0x8F2548; +uint32 CPopulation::ms_nNumCivFemale; // = *(uint32*)0x8F5F44; +uint32 CPopulation::ms_nNumCop; // = *(uint32*)0x885AFC; +bool CPopulation::bZoneChangeHasHappened; // = *(bool*)0x95CD79; +uint32 CPopulation::ms_nNumEmergency; // = *(uint32*)0x94071C; +int8 CPopulation::m_CountDownToPedsAtStart; // = *(int8*)0x95CD4F; +uint32 CPopulation::ms_nNumGang1; // = *(uint32*)0x8F1B1C; +uint32 CPopulation::ms_nNumGang2; // = *(uint32*)0x8F1B14; +uint32 CPopulation::ms_nTotalPeds; // = *(uint32*)0x95CB50; +uint32 CPopulation::ms_nNumGang3; // = *(uint32*)0x8F2548; +uint32 CPopulation::ms_nTotalGangPeds; // = *(uint32*)0x885AF0; +uint32 CPopulation::ms_nNumGang4; // = *(uint32*)0x8F1B2C; +uint32 CPopulation::ms_nTotalCivPeds; // = *(uint32*)0x8F2C3C; +uint32 CPopulation::ms_nNumGang5; // = *(uint32*)0x8F1B30; +uint32 CPopulation::ms_nNumDummy; // = *(uint32*)0x8F1A98; +uint32 CPopulation::ms_nNumGang6; // = *(uint32*)0x8F1B20; +uint32 CPopulation::ms_nNumGang9; // = *(uint32*)0x8F1B10; +uint32 CPopulation::ms_nNumGang7; // = *(uint32*)0x8F1B28; +uint32 CPopulation::ms_nNumGang8; // = *(uint32*)0x8F1B0C; +CVector CPopulation::RegenerationPoint_a; // = *(CVector*)0x8E2AA4; +CVector CPopulation::RegenerationPoint_b; // = *(CVector*)0x8E2A98; +CVector CPopulation::RegenerationForward; // = *(CVector*)0x8F1AD4; void CPopulation::Initialise() diff --git a/src/peds/Population.h b/src/peds/Population.h index f9e6c3b7..aa8129c0 100644 --- a/src/peds/Population.h +++ b/src/peds/Population.h @@ -34,33 +34,33 @@ class CPopulation { public: static PedGroup ms_pPedGroups[NUMPEDGROUPS]; - static bool &ms_bGivePedsWeapons; - static int32 &m_AllRandomPedsThisType; - static float &PedDensityMultiplier; - static uint32 &ms_nTotalMissionPeds; - static int32 &MaxNumberOfPedsInUse; - static uint32& ms_nNumCivMale; - static uint32 &ms_nNumCivFemale; - static uint32 &ms_nNumCop; - static bool &bZoneChangeHasHappened; - static uint32 &ms_nNumEmergency; - static int8& m_CountDownToPedsAtStart; - static uint32& ms_nNumGang1; - static uint32& ms_nNumGang2; - static uint32& ms_nTotalPeds; - static uint32& ms_nNumGang3; - static uint32& ms_nTotalGangPeds; - static uint32& ms_nNumGang4; - static uint32& ms_nTotalCivPeds; - static uint32& ms_nNumGang5; - static uint32& ms_nNumDummy; - static uint32& ms_nNumGang6; - static uint32& ms_nNumGang9; - static uint32& ms_nNumGang7; - static uint32& ms_nNumGang8; - static CVector& RegenerationPoint_a; - static CVector& RegenerationPoint_b; - static CVector& RegenerationForward; + static bool ms_bGivePedsWeapons; + static int32 m_AllRandomPedsThisType; + static float PedDensityMultiplier; + static uint32 ms_nTotalMissionPeds; + static int32 MaxNumberOfPedsInUse; + static uint32 ms_nNumCivMale; + static uint32 ms_nNumCivFemale; + static uint32 ms_nNumCop; + static bool bZoneChangeHasHappened; + static uint32 ms_nNumEmergency; + static int8 m_CountDownToPedsAtStart; + static uint32 ms_nNumGang1; + static uint32 ms_nNumGang2; + static uint32 ms_nTotalPeds; + static uint32 ms_nNumGang3; + static uint32 ms_nTotalGangPeds; + static uint32 ms_nNumGang4; + static uint32 ms_nTotalCivPeds; + static uint32 ms_nNumGang5; + static uint32 ms_nNumDummy; + static uint32 ms_nNumGang6; + static uint32 ms_nNumGang9; + static uint32 ms_nNumGang7; + static uint32 ms_nNumGang8; + static CVector RegenerationPoint_a; + static CVector RegenerationPoint_b; + static CVector RegenerationForward; static void Initialise(); static void Update(void); From 7f8a4b4867cff2a2aaf32eddaca65ba9f4e92806 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Tue, 14 Apr 2020 10:31:00 +0300 Subject: [PATCH 108/112] Debug font and CProfiles --- src/core/Profile.cpp | 71 ++++++++++++++++++++++++++++++++++++++++++++ src/core/Profile.h | 28 +++++++++++++++++ src/rw/RwHelper.cpp | 53 +++++++++++++++++++++++---------- src/rw/RwHelper.h | 1 + 4 files changed, 138 insertions(+), 15 deletions(-) create mode 100644 src/core/Profile.cpp create mode 100644 src/core/Profile.h diff --git a/src/core/Profile.cpp b/src/core/Profile.cpp new file mode 100644 index 00000000..56584d12 --- /dev/null +++ b/src/core/Profile.cpp @@ -0,0 +1,71 @@ +#include "common.h" +#include "Profile.h" + +#ifndef MASTER +float CProfile::ms_afStartTime[NUM_PROFILES]; +float CProfile::ms_afCumulativeTime[NUM_PROFILES]; +float CProfile::ms_afEndTime[NUM_PROFILES]; +float CProfile::ms_afMaxEndTime[NUM_PROFILES]; +float CProfile::ms_afMaxCumulativeTime[NUM_PROFILES]; +char *CProfile::ms_pProfileString[NUM_PROFILES]; +RwRGBA CProfile::ms_aBarColours[NUM_PROFILES]; + +void CProfile::Initialise() +{ + ms_afMaxEndTime[PROFILE_FRAME_RATE] = 0.0f; + ms_afMaxEndTime[PROFILE_PHYSICS] = 0.0f; + ms_afMaxEndTime[PROFILE_COLLISION] = 0.0f; + ms_afMaxEndTime[PROFILE_PED_AI] = 0.0f; + ms_afMaxEndTime[PROFILE_PROCESSING_TIME] = 0.0f; + ms_afMaxEndTime[PROFILE_RENDERING_TIME] = 0.0f; + ms_afMaxEndTime[PROFILE_TOTAL] = 0.0f; + + ms_pProfileString[PROFILE_FRAME_RATE] = "Frame rate"; + ms_pProfileString[PROFILE_PHYSICS] = "Physics"; + ms_pProfileString[PROFILE_COLLISION] = "Collision"; + ms_pProfileString[PROFILE_PED_AI] = "Ped AI"; + ms_pProfileString[PROFILE_PROCESSING_TIME] = "Processing time"; + ms_pProfileString[PROFILE_RENDERING_TIME] = "Rendering time"; + ms_pProfileString[PROFILE_TOTAL] = "Total"; + + ms_afMaxCumulativeTime[PROFILE_FRAME_RATE] = 0.0f; + ms_afMaxCumulativeTime[PROFILE_PHYSICS] = 0.0f; + ms_afMaxCumulativeTime[PROFILE_COLLISION] = 0.0f; + ms_afMaxCumulativeTime[PROFILE_PED_AI] = 0.0f; + ms_afMaxCumulativeTime[PROFILE_PROCESSING_TIME] = 0.0f; + ms_afMaxCumulativeTime[PROFILE_RENDERING_TIME] = 0.0f; + ms_afMaxCumulativeTime[PROFILE_TOTAL] = 0.0f; + + ms_aBarColours[PROFILE_PHYSICS] = { 0, 127, 255, 255 }; + ms_aBarColours[PROFILE_COLLISION] = { 0, 255, 255, 255 }; + ms_aBarColours[PROFILE_PED_AI] = { 255, 0, 0, 255 }; + ms_aBarColours[PROFILE_PROCESSING_TIME] = { 0, 255, 0, 255 }; + ms_aBarColours[PROFILE_RENDERING_TIME] = { 0, 0, 255, 255 }; + ms_aBarColours[PROFILE_TOTAL] = { 255, 255, 255, 255 }; +} + +void CProfile::SuspendProfile(eProfile profile) +{ + ms_afEndTime[profile] = -ms_afStartTime[profile]; + ms_afCumulativeTime[profile] -= ms_afStartTime[profile]; +} + +void CProfile::ShowResults() +{ + ms_afMaxEndTime[PROFILE_FRAME_RATE] = max(ms_afMaxEndTime[PROFILE_FRAME_RATE], ms_afEndTime[PROFILE_FRAME_RATE]); + ms_afMaxEndTime[PROFILE_PHYSICS] = max(ms_afMaxEndTime[PROFILE_PHYSICS], ms_afEndTime[PROFILE_PHYSICS]); + ms_afMaxEndTime[PROFILE_COLLISION] = max(ms_afMaxEndTime[PROFILE_COLLISION], ms_afEndTime[PROFILE_COLLISION]); + ms_afMaxEndTime[PROFILE_PED_AI] = max(ms_afMaxEndTime[PROFILE_PED_AI], ms_afEndTime[PROFILE_PED_AI]); + ms_afMaxEndTime[PROFILE_PROCESSING_TIME] = max(ms_afMaxEndTime[PROFILE_PROCESSING_TIME], ms_afEndTime[PROFILE_PROCESSING_TIME]); + ms_afMaxEndTime[PROFILE_RENDERING_TIME] = max(ms_afMaxEndTime[PROFILE_RENDERING_TIME], ms_afEndTime[PROFILE_RENDERING_TIME]); + ms_afMaxEndTime[PROFILE_TOTAL] = max(ms_afMaxEndTime[PROFILE_TOTAL], ms_afEndTime[PROFILE_TOTAL]); + + ms_afMaxCumulativeTime[PROFILE_FRAME_RATE] = max(ms_afMaxCumulativeTime[PROFILE_FRAME_RATE], ms_afCumulativeTime[PROFILE_FRAME_RATE]); + ms_afMaxCumulativeTime[PROFILE_PHYSICS] = max(ms_afMaxCumulativeTime[PROFILE_PHYSICS], ms_afCumulativeTime[PROFILE_PHYSICS]); + ms_afMaxCumulativeTime[PROFILE_COLLISION] = max(ms_afMaxCumulativeTime[PROFILE_COLLISION], ms_afCumulativeTime[PROFILE_COLLISION]); + ms_afMaxCumulativeTime[PROFILE_PED_AI] = max(ms_afMaxCumulativeTime[PROFILE_PED_AI], ms_afCumulativeTime[PROFILE_PED_AI]); + ms_afMaxCumulativeTime[PROFILE_PROCESSING_TIME] = max(ms_afMaxCumulativeTime[PROFILE_PROCESSING_TIME], ms_afCumulativeTime[PROFILE_PROCESSING_TIME]); + ms_afMaxCumulativeTime[PROFILE_RENDERING_TIME] = max(ms_afMaxCumulativeTime[PROFILE_RENDERING_TIME], ms_afCumulativeTime[PROFILE_RENDERING_TIME]); + ms_afMaxCumulativeTime[PROFILE_TOTAL] = max(ms_afMaxCumulativeTime[PROFILE_TOTAL], ms_afCumulativeTime[PROFILE_TOTAL]); +} +#endif \ No newline at end of file diff --git a/src/core/Profile.h b/src/core/Profile.h new file mode 100644 index 00000000..d2e8054b --- /dev/null +++ b/src/core/Profile.h @@ -0,0 +1,28 @@ +#pragma once + +enum eProfile +{ + PROFILE_FRAME_RATE, + PROFILE_PHYSICS, + PROFILE_COLLISION, + PROFILE_PED_AI, + PROFILE_PROCESSING_TIME, + PROFILE_RENDERING_TIME, + PROFILE_TOTAL, + NUM_PROFILES, +}; + +class CProfile +{ + static float ms_afStartTime[NUM_PROFILES]; + static float ms_afCumulativeTime[NUM_PROFILES]; + static float ms_afEndTime[NUM_PROFILES]; + static float ms_afMaxEndTime[NUM_PROFILES]; + static float ms_afMaxCumulativeTime[NUM_PROFILES]; + static char *ms_pProfileString[NUM_PROFILES]; + static RwRGBA ms_aBarColours[NUM_PROFILES]; +public: + static void Initialise(); + static void SuspendProfile(eProfile profile); + static void ShowResults(); +}; \ No newline at end of file diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp index 44866f4f..44ca3a0a 100644 --- a/src/rw/RwHelper.cpp +++ b/src/rw/RwHelper.cpp @@ -3,6 +3,44 @@ #include "patcher.h" #include "Timecycle.h" #include "skeleton.h" +#if defined(RWLIBS) && !defined(FINAL) +#include "rtcharse.h" +#pragma comment( lib, "rtcharse.lib" ) + +RtCharset *debugCharset; +#endif + +void CreateDebugFont() +{ +#if defined(RWLIBS) && !defined(FINAL) + RwRGBA color = { 255, 255, 128, 255 }; + RwRGBA colorbg = { 0, 0, 0, 0 }; + RtCharsetOpen(); + debugCharset = RtCharsetCreate(&color, &colorbg); +#endif +} + +void DestroyDebugFont() +{ +#if defined(RWLIBS) && !defined(FINAL) + RtCharsetDestroy(debugCharset); + RtCharsetClose(); +#endif +} + +void ObrsPrintfString(const char *str, short x, short y) +{ +#if defined(RWLIBS) && !defined(FINAL) + RtCharsetPrintBuffered(debugCharset, str, x, y, true); +#endif +} + +void FlushObrsPrintfs() +{ +#if defined(RWLIBS) && !defined(FINAL) + RtCharsetBufferFlush(); +#endif +} void * RwMallocAlign(RwUInt32 size, RwUInt32 align) @@ -347,21 +385,6 @@ CameraCreate(RwInt32 width, RwInt32 height, RwBool zBuffer) return (nil); } -void CreateDebugFont() -{ - ; -} - -void DestroyDebugFont() -{ - ; -} - -void FlushObrsPrintfs() -{ - ; -} - WRAPPER void _TexturePoolsInitialise() { EAXJMP(0x598B10); } WRAPPER void _TexturePoolsShutdown() { EAXJMP(0x598B30); } diff --git a/src/rw/RwHelper.h b/src/rw/RwHelper.h index a9f0bdf4..5b47cb6f 100644 --- a/src/rw/RwHelper.h +++ b/src/rw/RwHelper.h @@ -5,6 +5,7 @@ void RwFreeAlign(void *mem); void CreateDebugFont(); void DestroyDebugFont(); +void ObrsPrintfString(const char *str, short x, short y); void FlushObrsPrintfs(); void DefinedState(void); RwFrame *GetFirstChild(RwFrame *frame); From a19fa8764f63b4521873bbee8d2549c23d4be70a Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Tue, 14 Apr 2020 13:08:03 +0300 Subject: [PATCH 109/112] CarGen, Cranes, Gangs: cleanup, fixes, r* visioned placement --- src/{control => peds}/Gangs.cpp | 2 - src/{control => peds}/Gangs.h | 0 src/save/GenericGameStorage.cpp | 2 +- src/{control => vehicles}/CarGen.cpp | 86 +++++-------------------- src/{control => vehicles}/CarGen.h | 12 ++-- src/{control => vehicles}/Cranes.cpp | 94 +++++++++++++--------------- src/{control => vehicles}/Cranes.h | 9 ++- 7 files changed, 69 insertions(+), 136 deletions(-) rename src/{control => peds}/Gangs.cpp (94%) rename src/{control => peds}/Gangs.h (100%) rename src/{control => vehicles}/CarGen.cpp (75%) rename src/{control => vehicles}/CarGen.h (83%) rename src/{control => vehicles}/Cranes.cpp (90%) rename src/{control => vehicles}/Cranes.h (93%) diff --git a/src/control/Gangs.cpp b/src/peds/Gangs.cpp similarity index 94% rename from src/control/Gangs.cpp rename to src/peds/Gangs.cpp index 57d9c67e..c67fe599 100644 --- a/src/control/Gangs.cpp +++ b/src/peds/Gangs.cpp @@ -4,7 +4,6 @@ #include "Gangs.h" #include "Weapon.h" -//CGangInfo(&CGangs::Gang)[NUM_GANGS] = *(CGangInfo(*)[NUM_GANGS])*(uintptr*)0x6EDF78; CGangInfo CGangs::Gang[NUM_GANGS]; CGangInfo::CGangInfo() : @@ -70,7 +69,6 @@ void CGangs::LoadAllGangData(uint8 *buf, uint32 size) Initialise(); INITSAVEBUF - // original: SkipSaveBuf(buf, SAVE_HEADER_SIZE); CheckSaveHeader(buf, 'G','N','G','\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUM_GANGS; i++) diff --git a/src/control/Gangs.h b/src/peds/Gangs.h similarity index 100% rename from src/control/Gangs.h rename to src/peds/Gangs.h diff --git a/src/save/GenericGameStorage.cpp b/src/save/GenericGameStorage.cpp index 4cfa75b3..0ec0b117 100644 --- a/src/save/GenericGameStorage.cpp +++ b/src/save/GenericGameStorage.cpp @@ -283,7 +283,7 @@ GenericLoad() LoadSaveDataBlock(); ReadDataFromBlock("Loading Paths \n", ThePaths.Load); LoadSaveDataBlock(); - ReadDataFromBlock("Loading Cranes \n", CranesLoad); + ReadDataFromBlock("Loading Cranes \n", CCranes::Load); LoadSaveDataBlock(); ReadDataFromBlock("Loading Pickups \n", CPickups::Load); LoadSaveDataBlock(); diff --git a/src/control/CarGen.cpp b/src/vehicles/CarGen.cpp similarity index 75% rename from src/control/CarGen.cpp rename to src/vehicles/CarGen.cpp index 721ac35a..43f77fb7 100644 --- a/src/control/CarGen.cpp +++ b/src/vehicles/CarGen.cpp @@ -14,11 +14,11 @@ #include "Vehicle.h" #include "World.h" -uint8 &CTheCarGenerators::ProcessCounter = *(uint8*)0x95CDAF; -uint32 &CTheCarGenerators::NumOfCarGenerators = *(uint32*)0x8E2C1C; -CCarGenerator (&CTheCarGenerators::CarGeneratorArray)[NUM_CARGENS] = *(CCarGenerator(*)[NUM_CARGENS])*(uintptr*)0x87CB18; -uint8 &CTheCarGenerators::GenerateEvenIfPlayerIsCloseCounter = *(uint8*)0x95CDC6; -uint32 &CTheCarGenerators::CurrentActiveCount = *(uint32*)0x8F2C5C; +uint8 CTheCarGenerators::ProcessCounter; +uint32 CTheCarGenerators::NumOfCarGenerators; +CCarGenerator CTheCarGenerators::CarGeneratorArray[NUM_CARGENS]; +uint8 CTheCarGenerators::GenerateEvenIfPlayerIsCloseCounter; +uint32 CTheCarGenerators::CurrentActiveCount; void CCarGenerator::SwitchOff() { @@ -187,59 +187,6 @@ bool CCarGenerator::CheckIfWithinRangeOfAnyPlayer() return DotProduct2D(direction, FindPlayerSpeed()) <= 0; } -void CCarGenerator::Save(uint8 *&buffer) -{ - WriteSaveBuf(buffer, m_nModelIndex); - WriteSaveBuf(buffer, m_vecPos); - WriteSaveBuf(buffer, m_fAngle); - WriteSaveBuf(buffer, m_nColor1); - WriteSaveBuf(buffer, m_nColor2); - WriteSaveBuf(buffer, m_bForceSpawn); - WriteSaveBuf(buffer, m_nAlarm); - WriteSaveBuf(buffer, m_nDoorlock); - WriteSaveBuf(buffer, (uint8)0); - WriteSaveBuf(buffer, m_nMinDelay); - WriteSaveBuf(buffer, m_nMaxDelay); - WriteSaveBuf(buffer, m_nTimer); - WriteSaveBuf(buffer, m_nVehicleHandle); - WriteSaveBuf(buffer, m_nUsesRemaining); - WriteSaveBuf(buffer, m_bIsBlocking); - WriteSaveBuf(buffer, (uint8)0); - WriteSaveBuf(buffer, m_vecInf); - WriteSaveBuf(buffer, m_vecSup); - WriteSaveBuf(buffer, m_fSize); - - // or - //WriteSaveBuf(buffer, *this); - -} - -void CCarGenerator::Load(uint8 *&buffer) -{ - m_nModelIndex = ReadSaveBuf(buffer); - m_vecPos = ReadSaveBuf(buffer); - m_fAngle = ReadSaveBuf(buffer); - m_nColor1 = ReadSaveBuf(buffer); - m_nColor2 = ReadSaveBuf(buffer); - m_bForceSpawn = ReadSaveBuf(buffer); - m_nAlarm = ReadSaveBuf(buffer); - m_nDoorlock = ReadSaveBuf(buffer); - ReadSaveBuf(buffer); - m_nMinDelay = ReadSaveBuf(buffer); - m_nMaxDelay = ReadSaveBuf(buffer); - m_nTimer = ReadSaveBuf(buffer); - m_nVehicleHandle = ReadSaveBuf(buffer); - m_nUsesRemaining = ReadSaveBuf(buffer); - m_bIsBlocking = ReadSaveBuf(buffer); - ReadSaveBuf(buffer); - m_vecInf = ReadSaveBuf(buffer); - m_vecSup = ReadSaveBuf(buffer); - m_fSize = ReadSaveBuf(buffer); - - // or - //*this = ReadSaveBuf(buffer); -} - void CTheCarGenerators::Process() { if (FindPlayerTrain() || CCutsceneMgr::IsCutsceneProcessing()) @@ -268,39 +215,38 @@ void CTheCarGenerators::Init() void CTheCarGenerators::SaveAllCarGenerators(uint8 *buffer, uint32 *size) { - *size = 20 + sizeof(CarGeneratorArray) + SAVE_HEADER_SIZE; + const uint32 nGeneralDataSize = sizeof(NumOfCarGenerators) + sizeof(CurrentActiveCount) + sizeof(ProcessCounter) + sizeof(GenerateEvenIfPlayerIsCloseCounter) + sizeof(int16); + *size = sizeof(int) + nGeneralDataSize + sizeof(CarGeneratorArray) + SAVE_HEADER_SIZE; INITSAVEBUF WriteSaveHeader(buffer, 'C','G','N','\0', *size - SAVE_HEADER_SIZE); - WriteSaveBuf(buffer, 12); /* what is this? */ + WriteSaveBuf(buffer, nGeneralDataSize); WriteSaveBuf(buffer, NumOfCarGenerators); WriteSaveBuf(buffer, CurrentActiveCount); WriteSaveBuf(buffer, ProcessCounter); WriteSaveBuf(buffer, GenerateEvenIfPlayerIsCloseCounter); - WriteSaveBuf(buffer, (int16)0); + WriteSaveBuf(buffer, (int16)0); // alignment WriteSaveBuf(buffer, sizeof(CarGeneratorArray)); - for (int i = 0; i < NUM_CARGENS; i++){ - CarGeneratorArray[i].Save(buffer); - } + for (int i = 0; i < NUM_CARGENS; i++) + WriteSaveBuf(buffer, CarGeneratorArray[i]); VALIDATESAVEBUF(*size) } void CTheCarGenerators::LoadAllCarGenerators(uint8* buffer, uint32 size) { + const int32 nGeneralDataSize = sizeof(NumOfCarGenerators) + sizeof(CurrentActiveCount) + sizeof(ProcessCounter) + sizeof(GenerateEvenIfPlayerIsCloseCounter) + sizeof(int16); Init(); INITSAVEBUF - assert(size == 20 + sizeof(CarGeneratorArray) + SAVE_HEADER_SIZE); CheckSaveHeader(buffer, 'C','G','N','\0', size - SAVE_HEADER_SIZE); - ReadSaveBuf(buffer); + assert(ReadSaveBuf(buffer) == nGeneralDataSize); NumOfCarGenerators = ReadSaveBuf(buffer); CurrentActiveCount = ReadSaveBuf(buffer); ProcessCounter = ReadSaveBuf(buffer); GenerateEvenIfPlayerIsCloseCounter = ReadSaveBuf(buffer); - ReadSaveBuf(buffer); + ReadSaveBuf(buffer); // alignment assert(ReadSaveBuf(buffer) == sizeof(CarGeneratorArray)); - for (int i = 0; i < NUM_CARGENS; i++) { - CarGeneratorArray[i].Load(buffer); - } + for (int i = 0; i < NUM_CARGENS; i++) + CarGeneratorArray[i] = ReadSaveBuf(buffer); VALIDATESAVEBUF(size) } diff --git a/src/control/CarGen.h b/src/vehicles/CarGen.h similarity index 83% rename from src/control/CarGen.h rename to src/vehicles/CarGen.h index 75acdd56..9d645318 100644 --- a/src/control/CarGen.h +++ b/src/vehicles/CarGen.h @@ -34,19 +34,17 @@ public: void Setup(float x, float y, float z, float angle, int32 mi, int16 color1, int16 color2, uint8 force, uint8 alarm, uint8 lock, uint16 min_delay, uint16 max_delay); bool CheckForBlockage(); bool CheckIfWithinRangeOfAnyPlayer(); - void Save(uint8*&); - void Load(uint8*&); void SetUsesRemaining(uint16 uses) { m_nUsesRemaining = uses; } }; class CTheCarGenerators { public: - static uint8 &ProcessCounter; - static uint32 &NumOfCarGenerators; - static CCarGenerator (&CarGeneratorArray)[NUM_CARGENS]; - static uint8 &GenerateEvenIfPlayerIsCloseCounter; - static uint32 &CurrentActiveCount; + static uint8 ProcessCounter; + static uint32 NumOfCarGenerators; + static CCarGenerator CarGeneratorArray[NUM_CARGENS]; + static uint8 GenerateEvenIfPlayerIsCloseCounter; + static uint32 CurrentActiveCount; static void Process(); static int32 CreateCarGenerator(float x, float y, float z, float angle, int32 mi, int16 color1, int16 color2, uint8 force, uint8 alarm, uint8 lock, uint16 min_delay, uint16 max_delay); diff --git a/src/control/Cranes.cpp b/src/vehicles/Cranes.cpp similarity index 90% rename from src/control/Cranes.cpp rename to src/vehicles/Cranes.cpp index 33385dae..dbc3c340 100644 --- a/src/control/Cranes.cpp +++ b/src/vehicles/Cranes.cpp @@ -38,9 +38,9 @@ uint32 TimerForCamInterpolation; -uint32& CCranes::CarsCollectedMilitaryCrane = *(uint32*)0x8F6248; -int32& CCranes::NumCranes = *(int32*)0x8E28AC; -CCrane(&CCranes::aCranes)[NUM_CRANES] = *(CCrane(*)[NUM_CRANES])*(uintptr*)0x6FA4E0; +uint32 CCranes::CarsCollectedMilitaryCrane; +int32 CCranes::NumCranes; +CCrane CCranes::aCranes[NUM_CRANES]; void CCranes::InitCranes(void) { @@ -466,13 +466,13 @@ bool CCrane::DoesCranePickUpThisCarType(uint32 mi) bool CCranes::DoesMilitaryCraneHaveThisOneAlready(uint32 mi) { switch (mi) { - case MI_FIRETRUCK: return (CCranes::CarsCollectedMilitaryCrane & 1); - case MI_AMBULAN: return (CCranes::CarsCollectedMilitaryCrane & 2); - case MI_ENFORCER: return (CCranes::CarsCollectedMilitaryCrane & 4); - case MI_FBICAR: return (CCranes::CarsCollectedMilitaryCrane & 8); - case MI_RHINO: return (CCranes::CarsCollectedMilitaryCrane & 0x10); - case MI_BARRACKS: return (CCranes::CarsCollectedMilitaryCrane & 0x20); - case MI_POLICE: return (CCranes::CarsCollectedMilitaryCrane & 0x40); + case MI_FIRETRUCK: return (CarsCollectedMilitaryCrane & 1); + case MI_AMBULAN: return (CarsCollectedMilitaryCrane & 2); + case MI_ENFORCER: return (CarsCollectedMilitaryCrane & 4); + case MI_FBICAR: return (CarsCollectedMilitaryCrane & 8); + case MI_RHINO: return (CarsCollectedMilitaryCrane & 0x10); + case MI_BARRACKS: return (CarsCollectedMilitaryCrane & 0x20); + case MI_POLICE: return (CarsCollectedMilitaryCrane & 0x40); default: break; } return false; @@ -481,20 +481,20 @@ bool CCranes::DoesMilitaryCraneHaveThisOneAlready(uint32 mi) void CCranes::RegisterCarForMilitaryCrane(uint32 mi) { switch (mi) { - case MI_FIRETRUCK: CCranes::CarsCollectedMilitaryCrane |= 1; break; - case MI_AMBULAN: CCranes::CarsCollectedMilitaryCrane |= 2; break; - case MI_ENFORCER: CCranes::CarsCollectedMilitaryCrane |= 4; break; - case MI_FBICAR: CCranes::CarsCollectedMilitaryCrane |= 8; break; - case MI_RHINO: CCranes::CarsCollectedMilitaryCrane |= 0x10; break; - case MI_BARRACKS: CCranes::CarsCollectedMilitaryCrane |= 0x20; break; - case MI_POLICE: CCranes::CarsCollectedMilitaryCrane |= 0x40; break; + case MI_FIRETRUCK: CarsCollectedMilitaryCrane |= 1; break; + case MI_AMBULAN: CarsCollectedMilitaryCrane |= 2; break; + case MI_ENFORCER: CarsCollectedMilitaryCrane |= 4; break; + case MI_FBICAR: CarsCollectedMilitaryCrane |= 8; break; + case MI_RHINO: CarsCollectedMilitaryCrane |= 0x10; break; + case MI_BARRACKS: CarsCollectedMilitaryCrane |= 0x20; break; + case MI_POLICE: CarsCollectedMilitaryCrane |= 0x40; break; default: break; } } bool CCranes::HaveAllCarsBeenCollectedByMilitaryCrane() { - return (CCranes::CarsCollectedMilitaryCrane & 0x7F) == 0x7F; + return (CarsCollectedMilitaryCrane & 0x7F) == 0x7F; } bool CCrane::GoTowardsTarget(float fAngleToTarget, float fDistanceToTarget, float fTargetHeight, float fSpeedMultiplier) @@ -509,8 +509,7 @@ bool CCrane::GoTowardsTarget(float fAngleToTarget, float fDistanceToTarget, floa if (Abs(fHookAngleDelta) < fHookAngleChangeThisFrame) { m_fHookAngle = fAngleToTarget; bAngleMovementFinished = true; - } - else { + } else { if (fHookAngleDelta < 0.0f) { m_fHookAngle -= fHookAngleChangeThisFrame; if (m_fHookAngle < 0.0f) @@ -528,8 +527,7 @@ bool CCrane::GoTowardsTarget(float fAngleToTarget, float fDistanceToTarget, floa if (Abs(fHookOffsetDelta) < fHookOffsetChangeThisFrame) { m_fHookOffset = fDistanceToTarget; bOffsetMovementFinished = true; - } - else { + } else { if (fHookOffsetDelta < 0.0f) m_fHookOffset -= fHookOffsetChangeThisFrame; else @@ -541,8 +539,7 @@ bool CCrane::GoTowardsTarget(float fAngleToTarget, float fDistanceToTarget, floa if (Abs(fHookHeightDelta) < fHookHeightChangeThisFrame) { m_fHookHeight = fTargetHeight; bHeightMovementFinished = true; - } - else { + } else { if (fHookHeightDelta < 0.0f) m_fHookHeight -= fHookHeightChangeThisFrame; else @@ -560,8 +557,7 @@ bool CCrane::GoTowardsHeightTarget(float fTargetHeight, float fSpeedMultiplier) if (Abs(fHookHeightDelta) < fHookHeightChangeThisFrame) { m_fHookHeight = fTargetHeight; bHeightMovementFinished = true; - } - else { + } else { if (fHookHeightDelta < 0.0f) m_fHookHeight -= fHookHeightChangeThisFrame; else @@ -587,7 +583,7 @@ void CCrane::CalcHookCoordinates(float* pX, float* pY, float* pZ) void CCrane::SetHookMatrix() { - if (!m_pHook) + if (m_pHook == nil) return; m_pHook->GetPosition() = m_vecHookCurPos; CVector up(m_vecHookInitPos.x - m_vecHookCurPos.x, m_vecHookInitPos.y - m_vecHookCurPos.y, 20.0f); @@ -632,48 +628,44 @@ void CCranes::Save(uint8* buf, uint32* size) { INITSAVEBUF - *size = 2 * sizeof(uint32) + NUM_CRANES * sizeof(CCrane); + *size = 2 * sizeof(uint32) + sizeof(aCranes); WriteSaveBuf(buf, NumCranes); WriteSaveBuf(buf, CarsCollectedMilitaryCrane); for (int i = 0; i < NUM_CRANES; i++) { - CCrane* pCrane = WriteSaveBuf(buf, aCranes[i]); - if (pCrane->m_pCraneEntity) - pCrane->m_pCraneEntity = (CBuilding*)(CPools::GetBuildingPool()->GetJustIndex((CBuilding*)pCrane->m_pCraneEntity) + 1); - if (pCrane->m_pHook) - pCrane->m_pHook = (CObject*)(CPools::GetObjectPool()->GetJustIndex((CObject*)pCrane->m_pHook) + 1); - if (pCrane->m_pVehiclePickedUp) - pCrane->m_pVehiclePickedUp = (CVehicle*)(CPools::GetVehiclePool()->GetJustIndex((CVehicle*)pCrane->m_pVehiclePickedUp) + 1); + CCrane *pCrane = WriteSaveBuf(buf, aCranes[i]); + if (pCrane->m_pCraneEntity != nil) + pCrane->m_pCraneEntity = (CBuilding*)(CPools::GetBuildingPool()->GetJustIndex(pCrane->m_pCraneEntity) + 1); + if (pCrane->m_pHook != nil) + pCrane->m_pHook = (CObject*)(CPools::GetObjectPool()->GetJustIndex(pCrane->m_pHook) + 1); + if (pCrane->m_pVehiclePickedUp != nil) + pCrane->m_pVehiclePickedUp = (CVehicle*)(CPools::GetVehiclePool()->GetJustIndex(pCrane->m_pVehiclePickedUp) + 1); } VALIDATESAVEBUF(*size); } -void CranesLoad(uint8* buf, uint32 size) +void CCranes::Load(uint8* buf, uint32 size) { INITSAVEBUF - CCranes::NumCranes = ReadSaveBuf(buf); - CCranes::CarsCollectedMilitaryCrane = ReadSaveBuf(buf); + NumCranes = ReadSaveBuf(buf); + CarsCollectedMilitaryCrane = ReadSaveBuf(buf); for (int i = 0; i < NUM_CRANES; i++) - CCranes::aCranes[i] = ReadSaveBuf(buf); + aCranes[i] = ReadSaveBuf(buf); for (int i = 0; i < NUM_CRANES; i++) { - CCrane* pCrane = &CCranes::aCranes[i]; - if (pCrane->m_pCraneEntity) + CCrane *pCrane = &aCranes[i]; + if (pCrane->m_pCraneEntity != nil) pCrane->m_pCraneEntity = CPools::GetBuildingPool()->GetSlot((uint32)pCrane->m_pCraneEntity - 1); - if (pCrane->m_pHook) + if (pCrane->m_pHook != nil) pCrane->m_pHook = CPools::GetObjectPool()->GetSlot((uint32)pCrane->m_pHook - 1); - if (pCrane->m_pVehiclePickedUp) - pCrane->m_pVehiclePickedUp = CPools::GetVehiclePool()->GetSlot((uint32)pCrane->m_pVehiclePickedUp + 1); + if (pCrane->m_pVehiclePickedUp != nil) + pCrane->m_pVehiclePickedUp = CPools::GetVehiclePool()->GetSlot((uint32)pCrane->m_pVehiclePickedUp - 1); } for (int i = 0; i < NUM_CRANES; i++) { - CCranes::aCranes[i].m_nAudioEntity = DMAudio.CreateEntity(AUDIOTYPE_CRANE, &CCranes::aCranes[i]); - if (CCranes::aCranes[i].m_nAudioEntity) - DMAudio.SetEntityStatus(CCranes::aCranes[i].m_nAudioEntity, 1); + aCranes[i].m_nAudioEntity = DMAudio.CreateEntity(AUDIOTYPE_CRANE, &aCranes[i]); + if (aCranes[i].m_nAudioEntity != 0) + DMAudio.SetEntityStatus(aCranes[i].m_nAudioEntity, 1); } VALIDATESAVEBUF(size); } - -STARTPATCHES - InjectHook(0x5454D0, CranesLoad, PATCH_JUMP); // GenericLoad -ENDPATCHES diff --git a/src/control/Cranes.h b/src/vehicles/Cranes.h similarity index 93% rename from src/control/Cranes.h rename to src/vehicles/Cranes.h index d9817282..c0502638 100644 --- a/src/control/Cranes.h +++ b/src/vehicles/Cranes.h @@ -89,10 +89,9 @@ public: static bool IsThisCarBeingCarriedByAnyCrane(CVehicle* pVehicle); static bool IsThisCarBeingTargettedByAnyCrane(CVehicle* pVehicle); static void Save(uint8* buf, uint32* size); + static void Load(uint8* buf, uint32 size); // on mobile it's CranesLoad outside of the class - static uint32& CarsCollectedMilitaryCrane; - static int32& NumCranes; - static CCrane(&aCranes)[NUM_CRANES]; + static uint32 CarsCollectedMilitaryCrane; + static int32 NumCranes; + static CCrane aCranes[NUM_CRANES]; }; - -void CranesLoad(uint8*, uint32); // is this really outside CCranes? From 9a7b833aa5b0ed1157ba17f50ea3e3723418f183 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Tue, 14 Apr 2020 17:13:38 +0300 Subject: [PATCH 110/112] Added missing audio ctors --- src/audio/AudioCollision.cpp | 16 ++++++++++++ src/audio/AudioCollision.h | 4 +-- src/audio/AudioManager.cpp | 48 ++++++++++++++++++++++-------------- src/audio/AudioManager.h | 25 +++++++++++++------ 4 files changed, 65 insertions(+), 28 deletions(-) diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp index 99c87a6a..fecd079e 100644 --- a/src/audio/AudioCollision.cpp +++ b/src/audio/AudioCollision.cpp @@ -10,6 +10,22 @@ const int CollisionSoundIntensity = 60; +cAudioCollisionManager::cAudioCollisionManager() +{ + m_sQueue.m_pEntity1 = nil; + m_sQueue.m_pEntity2 = nil; + m_sQueue.m_bSurface1 = SURFACE_DEFAULT; + m_sQueue.m_bSurface2 = SURFACE_DEFAULT; + m_sQueue.m_fIntensity2 = 0.0f; + m_sQueue.m_fIntensity1 = 0.0f; + m_sQueue.m_vecPosition = CVector(0.0f, 0.0f, 0.0f); + + for (int i = 0; i < NUMAUDIOCOLLISIONS; i++) + m_bIndicesTable[i] = NUMAUDIOCOLLISIONS; + + m_bCollisionsInQueue = 0; +} + void cAudioCollisionManager::AddCollisionToRequestedQueue() { diff --git a/src/audio/AudioCollision.h b/src/audio/AudioCollision.h index 956da3e3..a21bbfdc 100644 --- a/src/audio/AudioCollision.h +++ b/src/audio/AudioCollision.h @@ -29,8 +29,8 @@ public: uint8 m_bCollisionsInQueue; cAudioCollision m_sQueue; - // reversed all methods - void AddCollisionToRequestedQueue(); /// ok + cAudioCollisionManager(); + void AddCollisionToRequestedQueue(); }; static_assert(sizeof(cAudioCollisionManager) == 852, "cAudioCollisionManager: error"); \ No newline at end of file diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 3ac194fe..1d2835cf 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -39,7 +39,7 @@ #include "ZoneCull.h" #include "sampman.h" -cAudioManager &AudioManager = *(cAudioManager *)0x880FC0; +cAudioManager AudioManager; uint32 gPornNextTime; // = *(uint32*)0x6508A0; uint32 gSawMillNextTime; // = *(uint32*)0x6508A4; uint32 gShopNextTime; // = *(uint32*)0x6508A8; @@ -192,6 +192,19 @@ enum PLAY_STATUS : uint8 { enum LOADING_STATUS : uint8 { LOADING_STATUS_NOT_LOADED = 0, LOADING_STATUS_LOADED = 1 }; +cPedComments::cPedComments() +{ + for (int i = 0; i < NUM_PED_COMMENTS_SLOTS; i++) + for (int j = 0; j < NUM_PED_COMMENTS_BANKS; j++) { + m_asPedComments[j][i].m_nProcess = -1; + m_nIndexMap[j][i] = NUM_PED_COMMENTS_SLOTS; + } + + for (int i = 0; i < NUM_PED_COMMENTS_BANKS; i++) + m_nCommentsInBank[i] = 0; + m_nActiveBank = 0; +} + void cPedComments::Add(tPedComment *com) { @@ -322,9 +335,9 @@ cPedComments::Process() cAudioManager::cAudioManager() { - m_bIsInitialised = 0; + m_bIsInitialised = false; field_1 = 1; - m_fSpeedOfSound = 6.8600001f; + m_fSpeedOfSound = 6.86f; m_bTimeSpent = 50; m_bActiveSamples = NUM_SOUNDS_SAMPLES_SLOTS; m_bActiveSampleQueue = 1; @@ -350,7 +363,6 @@ cAudioManager::cAudioManager() cAudioManager::~cAudioManager() { if(m_bIsInitialised) Terminate(); - m_nScriptObjectEntityTotal = 0; } void @@ -711,7 +723,7 @@ cAudioManager::DestroyAllGameCreatedEntities() } } } - m_nScriptObjectEntityTotal = 0; + m_sAudioScriptObjectManager.m_nScriptObjectEntityTotal = 0; } } @@ -2714,8 +2726,8 @@ cAudioManager::GenerateIntegerRandomNumberTable() char * cAudioManager::Get3DProviderName(uint8 id) const { - if(!m_bIsInitialised) return 0; - if(id >= SampleManager.GetNum3DProvidersAvailable()) return 0; + if(!m_bIsInitialised) return nil; + if(id >= SampleManager.GetNum3DProvidersAvailable()) return nil; return SampleManager.Get3DProviderName(id); } @@ -3028,12 +3040,12 @@ cAudioManager::PlayOneShot(int32 index, int16 sound, float vol) if(entity.m_bIsUsed) { if(sound < SOUND_TOTAL_SOUNDS) { if(entity.m_nType == AUDIOTYPE_SCRIPTOBJECT) { - if(m_nScriptObjectEntityTotal < - ARRAY_SIZE(m_anScriptObjectEntityIndices)) { + if(m_sAudioScriptObjectManager.m_nScriptObjectEntityTotal < + ARRAY_SIZE(m_sAudioScriptObjectManager.m_anScriptObjectEntityIndices)) { entity.m_awAudioEvent[0] = sound; entity.m_AudioEvents = 1; - m_anScriptObjectEntityIndices - [m_nScriptObjectEntityTotal++] = index; + m_sAudioScriptObjectManager.m_anScriptObjectEntityIndices + [m_sAudioScriptObjectManager.m_nScriptObjectEntityTotal++] = index; } } else { int32 i = 0; @@ -9588,15 +9600,15 @@ cAudioManager::ServiceSoundEffects() ProcessMissionAudio(); AdjustSamplesVolume(); ProcessActiveQueues(); - for(int32 i = 0; i < m_nScriptObjectEntityTotal; ++i) { + for(int32 i = 0; i < m_sAudioScriptObjectManager.m_nScriptObjectEntityTotal; ++i) { cAudioScriptObject *object = - (cAudioScriptObject *)m_asAudioEntities[m_anScriptObjectEntityIndices[i]] + (cAudioScriptObject *)m_asAudioEntities[m_sAudioScriptObjectManager.m_anScriptObjectEntityIndices[i]] .m_pEntity; delete object; - m_asAudioEntities[m_anScriptObjectEntityIndices[i]].m_pEntity = nil; - DestroyEntity(m_anScriptObjectEntityIndices[i]); + m_asAudioEntities[m_sAudioScriptObjectManager.m_anScriptObjectEntityIndices[i]].m_pEntity = nil; + DestroyEntity(m_sAudioScriptObjectManager.m_anScriptObjectEntityIndices[i]); } - m_nScriptObjectEntityTotal = 0; + m_sAudioScriptObjectManager.m_nScriptObjectEntityTotal = 0; } int8 @@ -9965,7 +9977,7 @@ cAudioManager::Terminate() } m_nAudioEntitiesTotal = 0; - m_nScriptObjectEntityTotal = 0; + m_sAudioScriptObjectManager.m_nScriptObjectEntityTotal = 0; PreTerminateGameSpecificShutdown(); for(uint32 i = 0; i < DIGITALCHANNELS; i++) { @@ -9974,7 +9986,7 @@ cAudioManager::Terminate() SampleManager.Terminate(); - m_bIsInitialised = 0; + m_bIsInitialised = false; PostTerminateGameSpecificShutdown(); } } diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 07c669ed..31a07f9b 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -197,7 +197,7 @@ public: bool m_bIsUsed; uint8 m_bStatus; int16 m_awAudioEvent[NUM_AUDIOENTITY_EVENTS]; - uint8 gap_18[2]; + //uint8 gap_18[2]; float m_afVolume[NUM_AUDIOENTITY_EVENTS]; uint8 m_AudioEvents; uint8 field_25[3]; @@ -216,7 +216,6 @@ public: float m_fDistance; uint8 m_bVolume; int8 m_nProcess; - uint8 gap_26[2]; // unused // no methods }; @@ -230,9 +229,8 @@ public: uint8 m_nIndexMap[NUM_PED_COMMENTS_BANKS][NUM_PED_COMMENTS_SLOTS]; uint8 m_nCommentsInBank[NUM_PED_COMMENTS_BANKS]; uint8 m_nActiveBank; - uint8 gap_1163[1]; // unused - // reversed all methods + cPedComments(); void Add(tPedComment *com); void Process(); }; @@ -246,7 +244,7 @@ class cMissionAudio public: CVector m_vecPos; bool m_bPredefinedProperties; - uint8 gap_13[3]; // unused + //uint8 gap_13[3]; int m_nSampleIndex; uint8 m_bLoadingStatus; uint8 m_bPlayStatus; @@ -262,6 +260,18 @@ public: static_assert(sizeof(cMissionAudio) == 32, "cMissionAudio: error"); +// name made up +class cAudioScriptObjectManager +{ +public: + int32 m_anScriptObjectEntityIndices[NUM_SCRIPT_MAX_ENTITIES]; + int32 m_nScriptObjectEntityTotal; + + cAudioScriptObjectManager() { m_nScriptObjectEntityTotal = 0; } + ~cAudioScriptObjectManager() { m_nScriptObjectEntityTotal = 0; } +}; + + class cVehicleParams; class CPlane; class CVehicle; @@ -315,8 +325,7 @@ public: int32 m_nAudioEntitiesTotal; CVector m_avecReflectionsPos[NUM_AUDIO_REFLECTIONS]; float m_afReflectionsDistances[NUM_AUDIO_REFLECTIONS]; - int32 m_anScriptObjectEntityIndices[NUM_SCRIPT_MAX_ENTITIES]; - int32 m_nScriptObjectEntityTotal; + cAudioScriptObjectManager m_sAudioScriptObjectManager; cPedComments m_sPedComments; int32 m_nFireAudioEntity; int32 m_nWaterCannonEntity; @@ -611,4 +620,4 @@ public: static_assert(sizeof(cAudioManager) == 19220, "cAudioManager: error"); -extern cAudioManager &AudioManager; +extern cAudioManager AudioManager; From eb0b9f62557cdd840f5864a511a44ab57fc93664 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Tue, 14 Apr 2020 17:24:31 +0300 Subject: [PATCH 111/112] fix CTheCarGenerators::SaveAllCarGenerators --- src/vehicles/CarGen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vehicles/CarGen.cpp b/src/vehicles/CarGen.cpp index 43f77fb7..c35005a1 100644 --- a/src/vehicles/CarGen.cpp +++ b/src/vehicles/CarGen.cpp @@ -216,7 +216,7 @@ void CTheCarGenerators::Init() void CTheCarGenerators::SaveAllCarGenerators(uint8 *buffer, uint32 *size) { const uint32 nGeneralDataSize = sizeof(NumOfCarGenerators) + sizeof(CurrentActiveCount) + sizeof(ProcessCounter) + sizeof(GenerateEvenIfPlayerIsCloseCounter) + sizeof(int16); - *size = sizeof(int) + nGeneralDataSize + sizeof(CarGeneratorArray) + SAVE_HEADER_SIZE; + *size = sizeof(int) + nGeneralDataSize + sizeof(uint32) + sizeof(CarGeneratorArray) + SAVE_HEADER_SIZE; INITSAVEBUF WriteSaveHeader(buffer, 'C','G','N','\0', *size - SAVE_HEADER_SIZE); From 6d934892ecd3c4b6f025fbe2c4e6504fd979d391 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Tue, 14 Apr 2020 18:35:07 +0300 Subject: [PATCH 112/112] RwMatFX support with linked RW libs --- src/rw/RwMatFX.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/rw/RwMatFX.cpp b/src/rw/RwMatFX.cpp index ca9a633b..3af6fabe 100644 --- a/src/rw/RwMatFX.cpp +++ b/src/rw/RwMatFX.cpp @@ -43,8 +43,16 @@ struct MatFX int effects; }; +#ifdef RWLIBS +extern "C" { + extern int MatFXMaterialDataOffset; + extern int MatFXAtomicDataOffset; + void _rpMatFXD3D8AtomicMatFXEnvRender(RxD3D8InstanceData* inst, int flags, int sel, RwTexture* texture, RwTexture* envMap); +} +#else int &MatFXMaterialDataOffset = *(int*)0x66188C; int &MatFXAtomicDataOffset = *(int*)0x66189C; +#endif #ifdef PS2_MATFX @@ -206,8 +214,13 @@ _rpMatFXD3D8AtomicMatFXEnvRender_ps2(RxD3D8InstanceData *inst, int flags, int se RwD3D8SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0); } + STARTPATCHES +#ifdef RWLIBS + InjectHook((uintptr)&_rpMatFXD3D8AtomicMatFXEnvRender, _rpMatFXD3D8AtomicMatFXEnvRender_ps2, PATCH_JUMP); +#else InjectHook(0x5CF6C0, _rpMatFXD3D8AtomicMatFXEnvRender_ps2, PATCH_JUMP); +#endif ENDPATCHES #endif

        as1%(BuZuPXb{trs?pfMCsKN%F}AoqgY4)OyCgZlNL z_6x|*ATvR208sxQWF9CFfa+;b{SRvAfZ`v7LGcRO0|1)q0@arwH-X0TKx_U$=77=* zsGSBXFF@`G#R;fw28$oi7z4Cw7!IHmzmyBJiyf$}px3@UFxWdf)yfR%lqIssH3f-o{0#0S+UATdz=0OAMP+k@|f z1K9h;9(g3K80nKlN$~aJZCkBJ|(}T(xP}vMR{{&P%fH0_RfYBf} z2!qN~kQk_M1lkh~>f?a&7AQ}G`rn{+O&~QOvq0)WYC$vz!`L7ihCyXM$ShFa2F*Q# z%);kpkUVHl0jT^0t>*!?89@0PR33opPEdIYDr-RT32GmJ=2}7R6Hwg*8VdxiVStsb zpt66UFsRM}^?5<{6sYY4@)u}~0_0v$odc?yL29tM4-|H=dLK?h*NlVYKzeZLg~@^9 z12i@aI)ed}RzT$1|UCz`oEyCf?-ho1;a2gP(K&s2T;2R zWGAS;1epPv&j+OiQ22t<0%*P))Xo6Ofz*NA0_t0X!X4Be289KP4{|5S9iX->sGi4# zLG?fAoIhm5CjUWWVxW2-hQalJZZ5e052~AxF{qvb)!`tupl}1FeNdQy)(3#{ z1t>4U`t+c?F+pnwL25wtKPZjE>ON4L0n|1Cja9(v|E~P}|DbUg&^iE6od=3%P}>XS zXHeLI+J+#rLE}%LcmuUtK<0z$eNcV^#UadmkegxkD~N{ivC$wgm_AUvg6svgbzt>B zOg~5+HVl#nVUQe*2C+f+5rW3_LGvV_umY7ipm_z5-$C-o7^Dy67f@V-$_h{$1Qc!{ z3>upRh21C~t@npr8VCpgpOFp98=$mK2!rwwNDZiu3@STdt6o#O33{*yg>H|<251MBLtAqCc(Al81;-Iz6pgtI=-w7&nLFFC@!`uXN7di&X zf%-9^{0*xALFGDVKQO4g0`*-$XZnEFS%KUHk^{8~KxTmIe^9vw+7|_KBd9JKNDQiT zKy?dftsSU*1i2B^jscaEptcjJ{sF1Ma3gg5A2eq0+{2$bg0@XL5Gnhc`A_*51K+gV;i~A3%V?p&f$UmU42h}y8F$Iuapfmt- zAEY-Y`2>(zpgIuLb^_h=4GR-c8UpzXGzI`_ zUxV@pD1U(JeUO=;@GOgo0k3rcnF$)h0iE*!@&iaMD4&7aCZIMw$PN$&*$=`XHVA{* zFbv~^Xi)tR3P(_W2Kfav768J?YC-DIF|s^}4Uz}bK|$cPJ|KU9+9jZ{0>vr%90go` zU?4bbKlaX(O51}dLHWgn<~1eMt!3@TrdF{oSy$%Dr3LH#U{dXPTQI%<$Qm>w7n5`$ro z7^tiUl~17j3@RT$ZE{dq11i@*`5KqoLGA>p1(kguzk)EVKL8p>1+7m6mHD9f1koV# zKzcwJRE~k>b3tYPV8Ebyz9cFNd_D`vzo2pr)Q$p)gTe+>hhcLkNF3CD0%1^?g2EGo zLE_ldBa4C5gZjCkb{?pn1=V+;`U<2M)Q<<%$>d;=d7%C>=)4(Fdj{490IdrF)m@;w z1VDa*yE7-}KRE5==Y!`eKx^_rYC-M+#TBSe3RM|Gx)m0!2suw}|02Kcqw}R3F zhz5lLs7?p9ML_Wes;@zF{xCUEdIr_AAoD==KdAo?3Ik9$fyO~V`4beUp!y%w7IHK- z{ST`1Kw$-{|3Ur+=>ypZiZhToptbX0cYyZH+1rEHEQ0I-xf3K0!su*dK1?2DE+`Lz z))Ij7Ajpp(IS>Y^$A@8RKr{%0)WT>`IDy78KyC)56VR9w= z4+6~@!|HNeZU^OgP zkK|&Ie?V(1K;thu?gG^-pf(Gr{s7gPAa{Z=C=U><|6^kQgXaH1^IxF3 zDNsEF@;?m2>wnN)mC$)~P#y!-X&?+@gX{;5!GQbh3*xe4TUP*{S* zL1RUr`VE9ZW`OEBkUCH}gT_Tb7?eLj?HJHm4IqDl(io^+1Zo$6{hpQeAGBWwWFBY@ z1}H2+>j*)1fbtBe{RA3w2Zag9jW7(d55xx1APi!oV~{zZxq6U4Kx<23?gXjBr3WMj z!^moo*&uU3R}Bg)P@N4LX9n2|s`Dtp zpfLcDd7!a-P~ROiw*ab(LG>7@Z3B`6VUXWI{cM;&L3JBwTmlq7pmYZc7f|~Yq!)BX zFUTBFI}sG0pmYN&|6v%!2c;uedjr&t0_g{(Cy@D|d2^7TKy4ooAA~_^6x0s}txo`@ zN6?x&P`?+{mYrBw2tMZ+qz9B{2-g46(cm#0P#p?dX9uhIVKjRE4@&DGj9k}&_@Me1 zwEiE|CIk5sgh74=orM9a+d<CP9#rpw`~q@6Xgm_c2g!jjNFE;ssR3b-8W;^@gZQBO9JIz5TvmYY1a@}^kM)D@ z00#BxL25u4)E)r&2V^&>oejEQ0aOma^nuDrQ27TcLqPdp6pyw6hH@H64GaX&{e$LU zL1hO%465@%d+k8|DRgz9ybmf9K;;>zOaPUSpt=gwR|Bz;F{m6x#vnNmA4J12Xp9w9 z{(#DN&{!~N{0_9w2xJe~ZVQY5p!^A%OLaCj##--#)j`_?pzZ|ufZ8#jauQVLg4S?@`q0?i26i`rd3|j9 zU}B(sU!XoDs4WMYGX>TCpne{x9su?IsZsZX`~$+EHUK!Rv$DW*wxGVMoskiEe>;bs})ZPNEfdH)w1hqRrdlo=`fMH_m zf6$m4sBVST`N%Z9{)e7d0SW^UMy}I9Y*<|dY72tuC{VfuVNiV!YCnO}HKk)_aGa9^p1TJ1yFg>{ zpgIoJ{sGm|INb<6uMg&SP}suQ_-Ii33sm2M>Uq$Z38+2+&C7z;f`jIU!S!T8!GBO3 zQ453GF`za8sQv+sNrU1YR2P6SXssJ)%|6KP2?YiJLH+=_5$7GML7@3# zP&xt4S%BOF(u*7hpfnGvFF|(W!k{(>D2*Z4`N(W={SV#$52}|y?nkCUY!C*CgX$^J z{uR&|94K#q(lrQ!(lIE{g4#MDKBx@`ss};i93Z`*wg9OA532t`VFd~gQ2h_edoX{2 z>PS$&1Fb6rt#<&`^Pq7R(EcA#y$CV~RR4qS(*W54%9o(@f?ofF)PdXzqCps)4dR3R z0UCz^#W$#Z3*v*sVd_C_Y#1aD!XP+{+f$9QWYC&}cs2l>7Hz2j3eiW#D1eLWQHn?1cuJH%4LFFq9gVcb^ACNdG z-+{&xK=~D99>_kBJ3;1y%5l)%Yf%0KwK+g?gfPg>u(m#^tOfZ8)CK~bIRwhfpz#5a z8K80#6rZ5F2;^Q+U4pN!q?;VHjsw+WpfVd22B5uopt=bZUg+)s)m@;q6UgGAa7N~1 zutDtw(71ngHhA10RL6nB3Dm{{wfjK*LXdr+I0DtPpm?P=295QD`qUuzgUVu1T!HQc z290Th)@6a}S5Vx5Xiz^LkY~s`Ef*!0LaHUqJOgs67qZ z4++YHAish94qE#Uihoc$02D@`b~DIKP(A|H{~&Wfa-g;|$PQ2&1hke0WHv|+-MuhA zOb*5ewMjsFKw}gj^Fi%BP~HZ~gD^-vE)0?fVURqC24N5zgkfxu`5Gp!y$lej`X8qz60(5FGp; z1ZzX7r1*kj+iNWLv(V)5yR5yagV?cdWP~8g}O9qL9`oN(24ZY5zW*Y!x zHmF_&)j^;-95g2nN~@ss0E!#XdX@U*WbmDjpt>1UPl3`8$d91-0%4F_LG3nB-404$ zAT=Ni@)u}~069!R`ao*odUA5W=T?K-Iv}@z(i*6)0HrI?cs*z>1jub5vq19beg}mQ zq52=xF7~yv`;WK&2d)3dvi=WLM}g`!7>3nXpn4rNHUUb*Ah)7p*qAqH-VCG{G|mmG z`$267i;s(?= z28}6#@+HV!AbUV+Ko}PrBnPgagM-0&8&)@i%mv92!XR^zF-$#748{k|m4U{TU}uJa z*r56y)YbsyC6J$BYC$ye7yu~DKN{fVPFNcO zwC4&`)`I#$#OMW$<$=l!&|EBN4K}E(X@H(L4(e}!>L<|LE2#egDvLmQ7Bs&Gs`o+p z47m&g)%~D#d!VutbWa(m`~~$-K<)rxWVP7XAT^+R3{=;H>VJ?LP`L&26R3O#wP`?O z3m~_G`ih`(9aJZP%EQ5cL3KK)o&uGNpzs2fXP|y5s80(Lhq)0{pMly5pgOWPF%jG^ zg~<`3L49seod&8SL1jLu-w!J5Kx?5v_rieMT%h>|P}tBKgVx}I>LE~@12pywZu9u~ z{0G%Pps@f@JyV^K0KNkfkQ|5x zxdp@q#Vu$*186)Rl+HnN#9)wKkU9{JjzQue49YJscY?|SP#OZc6V#6f`3>X-kUEfl zko_P&$e*A#0!STb{0F2KlpjE02^#AFr3p}ZG8D`IQ8$m=whL&yi`Y6GRDOWU6HvMb z?fU|i3#7IkK=mp(&)M7m2aQvL>K0Jm0hL#v@i)*KTTq=0D!V{s49HGo4AKiK7eM(C z)Gq_AJqPtqK;sc0Js^2x_1M@THK1|~)Mf|uYe8y2Yl1*y+#vUW_@I0Z%KsocKy@Xk zZUE7P0fXu^P@M&ug9i1@L1i_luETH}be;gzZwC1Vqz2TU0ksP-)FO>-faP;?{)6gL zP#X&rUZD0HsDA|NhlBdOp!yhu@zsCm^&usE(D)E2o<6ViP}>L8ZUf!T0veA7 zr6Z7gL3J~z-2p*~ zy$f0k1IpLLU{G2IeGYj6i^+Hj6v-KkQ_EMLHa=D z0%*JvRPTVwVNe+k>Z5}CrJyngn?9JmFdC!=R9}GN3^eu!;)BMOLFFIl3>MJ%0%!~X zGzJPP`#^OqzWQ7ceK z$i1MoBA~VasNV=Gr$J-dpfiSHVFs$}LG?Vi?$65upCbVBJ7|0Wq!zTc095XS`hKAC zUXU2bUXb5G7?dVJ;Yi4@cw)4L6t19j0P-)W{s)CI zDF1=#JW&1s)r%l8kbNLGfG{Y`Kysiq2FQMpJCNl;YLNLLHVDJSLFR$-B}hN0Uk(~m z0J#~Y1|J6LhhdO9bT&u~ghApU^FV0>-afLh_z&942dei$`y4^)K=y)Ykb2OV3aFg~ z3MWuI0OTjo7yyV38ixdhEojUGv@T$D3}Cbk07}0@0fXA=pn4B9eg!Hch{2$=4odT& zzUTCcivOUpk{Er|Py=eGfaVTBbq#1t7*w8v%5l&b0BHR(sH_9IkC0s;HK65YSjMsDB3P+kxsNP@IGMf1r8*)RqMCLF-IFc@|WEfy#AIoezq8P~8W@ zpl}1VIYIs>){l7Wf9PF6MAiRD{eMuM1j3+t35JpRFgD0vpn3{4&JW5Durv?yA1IxJ z!Uoib2eq|9YCvNtpn4y41|w+v1cX6h3Gyqb%>!yPf%^L(vq1GfXdVPqC!)InWIt#; z5u^?@rUvRSgX&L^I*=SXjVuOYgX(2aT?}$BsLcwp0~AjnIb0ZKCP*H{24NT*M#IEl ze2}|9^Y$QnKo}Grpzs2X3xdi85F4fzT7nEO#!Ju>w+LH|`8$k6xsGKB5A0=u)c7oa{pmG3I9)bE^ zpt1^7|AG2tp!x^o4p6@XR5lS~7s$_`Iv!LWg8DRIc3>d*EEbS`p!^M*;|A4(lweSO z3c{3_L5W^aSb^59f!a=>^^KsuJFfme$eo}t1=Vw)@)8sdpzs9MrJ#BiR0n|Sd02f5 zqd|2eDfJ>K4rzfw?gqI9R9}NI$PQ3F2AUfJmEWMU8FZFAc$~oA{y%682!ugpKd7Do z&GUo83uFcegV-Q5z?h6Zj_CD2Xzv`TZ34p}KB!#<8neKK!R!C=tp9`6Q7{@5Zy+`Z zgVHd_-=MZ1EKh*ia-cReXuS-`-ym_&xEiP&0G+!8N-H1?>idJ*1fVzvjq`!#NI-Qy zsBH|=1L`+`+DV`>0GOR18iYahAjnM6TslY%sQv`G2P6lgkugjRMuX~IkUmhm6Euzk ziWit1vOW+SBo4yZ*dQ?w#wHIE2e}K>J^_^jpf(UF{6TFG(7GVd7yziQ2dM+=4+;X0 zy@1>X(g(sIwV=2I^?zVzE`ZDe?FSs}<^HJqM%yN!GytmqL1)K+@-wj*R40JO%|Pq* zKMsICIn{{;pALGA#x-9dSoSUW)FAE;~s z^$$U8&=>&7f1tJos67E1TgFvaQc@?=LocW<2iXIv6G34GE8jr%KS&%K2Kg0K&x7WG zL2V*X-4D_S(hm{`&3%L709NlK)1dkiTu&nHe;X)1sEq=0C&!; zA5<5CFsNQa#>iqYHi!mc(EJ6cKMPtL1IibmdKom|0IF9(^%yAKgT>9vzI`~<2qk=4N1AayVd5(BY8 zG)O&2A85`A)FubOkcc=xjpJSS-jc(3&JrJp>-ZhOTb|m*=^;;PMMp zZV+QW$RD8o3@Cqt@;hkFAqa!o4i>hg2DrYLE{df z^}nEY7${so7^DWK4@AT2eh>|6n}GZWid&FhL1uu$5mY{c+7hF6=*Xx;hip6t1pEi} z|3Uq0P`N-12BmS(nVg{V5>%do%2H6C1)T*(jDAwofXWb182~DSKxH$i9}23cKp4~p z0M%ijatee&ZUN2h!pb;8_JI5Ws`o+tf6&@)(Ap@_STIOGsQ&?~=RkGgP_O?%{s7f^ zpl}4O^#av{pmlGcu!GhApzs8>=RkELs9y&PJ5YRr`i-DE4Ak}lsR8K$g)^+)M5jUa zfZ_?1HU=XGxeXb^+z1kbv8hRe!Vb3oA5=%+s{cXt4K57s|D(254*&v=<3fK7;CeP#pxrptahd{wSz#3#$J? zYtuk`kzi#QA@f1%K;;~$z60%H0Ig{Njci;yf{y(Tr!i7Qg6bOUl!E|u&f6#n3 zxQ}XX4sQd1@-e8s1=WS1It{cw0yGW|s>48e4|HZE=&T=5eFn-GpgaYV2d$R`)q^0j zK^SHahz&9iw5|@6e?j#rsQyQm2dM$^VHm^*VHh9O1^~@3g7PA0-3drPOddodV~`#Y zA4G#Nj18kfVjv9SgD{K@rh|gO=lX%h`$7H!`43bEfcEu+{0nL?gTe&1z5%Q!Fc3Tz z0df;a4u(N|Q2P#a-XW-50htAASAgn|(Q$y$b_6IL3`Pt}o3Qi`$^*n;P}&Cd6+mOc zpuPd9ZwTu5f#$(LX&;pDi7^MC8ju;FzBz0?7O3tAVNgAVj=^ICd3oS<;GlD1Ky@6* zjrhz5$%D!_KOZz^1R4_niGk7&$gLnfAbUU< zq!&hm*dRGjnF6u{q!&~-!sM~hFfou`kQ+dJP(2J9Z%Fj>1K-UDk^_l@Xc&g^K{N=1 z#6dI+!}uT?ghApk8pZ~tanOAQps)b>5o9N*F92G<2pWR`$-~rwXb=XO0h&7ig%vUe z#UrQ;1hsiUVFxk`G_D9LV+Ui|KkBB@b_wWCFi>6v1iL4IP_XPDlKz&hAy#%UvaMk^wx(hT$52|lK;}M{`4YZaI zPS$%H&igl?I5>;#za7V0AbL%d7w4t zpg2Kp+kpHBia*f&E@*rJRAz(1A2cTfYS)3{7Zk=I^FV4rG@<$*BoDH4wEjn{|6^kQ zgU(?9&jEnyekcaj8=yKBly9(MaQzRx{|A&-VRaBXjaM!x=s&0p0J00z#|QPTLF4$K zIek$54AKk2pm6|Dod@d2g6d#UdI04eP+kGm|Dd^T&>T6ozCX-8p!y#)e+Eixpgu6D zt_0QVAoD?LKo}Prq!;8)kX@j5Jb0WTBm}(n9;62ugUkV8m>4=6#s|?L3{nT9L2Qsc zAismd!_pFR9)h_!_zu)?XXpQ*J&fpX2k8T0kbl5+e|R`}A0UVgG7FT)Kz{JHvic8d z1Ay)r7_DbV>)FAa20&#!D3241LG5Hvz5vz#pmH8m|ANMeL2Up~odc?0KyzQ9JPgVM z#MH$wyFuzfWAdPL*Fg0LsJ_8h_k-j>{albc!2Qm=y#Ju~H!*gC)PTkrL2Vi2aZym8 z2vmoG>P1*x3UbF#z%ciM>+bw~@Ew7mI03EG1jP%e%m>9CXiOiZ7BqhX@+)Y)7bw0! z?KaT(2WajWG?ovm^Fe-xu|eu#eSK^+Xbl0V-3E#iP#lhAj6VJko&$)Af{*=!+5(_D z8Pq4oR`-L%VD&$!E(FzIFbt}PKx||h#D-yz92`T>&I9p5_JP{hpu865>I$yEKzcxX z0>L!&z8lcpn4oqEtPKE4JD_#|s4N4eA&^=a2AKPwJ3NF4~n z*f1I-2Erh{AoD@?fYKvK9^EdG7z~5-fY=}!hCzH728n^#AR2^WY!D5?IUyncLH%=3 zng^9Zpt22A?}OStATf{{nEmMbLG2_^Sb}I!{SU$*HfSCIG=>5)57egs^{+s7fc!Oz zN818}DGh+qC1|ZGD6Nu$LFpb;|AXooQ2h()cZ2F;P+bF>9|p}Eg2uu?Z3|Fd2K6aH z^(`(tKysk+2sCd9+ItMDKR|U3$V^cG6Bh=_gX$$vT?4|Px(VbbT=pP~gX{$5Ptcfm zkdqU5y)j50G(L-7_kr9p*fFR+2VwAf2&B3n6i1-`J?K7HP?-uk!v(|##Sv(J0OVKD z{0A(KK;;~$eE^aJg)PkAAhSViP#9yY_mRaW6c_&o#m7jl`$2xkR{w+gh@dnE!=SuG zu>Q}@1=mxc`Un(1AR2~Yd=L%8$Z{Yt5FbQ?+Pa{ADrim{lrKRT)UE*4yP*CsSPgWJ z8{{sK7^sa5$`_#e97KcW{$Txokb0QeFgB>J2dM$61^EkPHVA{%fiOrN2!q%ljLZhr zwV?huNH3@!2Cc&ZiJ_|l@j)1*7lc7<7>4mdGz`P!Kr~1UM1yd4a4>j2A3SDgZVny; z0ND*H8$ja^ptS(t@PdX3NG}M3^n&~e3L{XR55l1O9~3U2b%3C=0YUu`P}>Qd=X`zt zgTi?*mHne`8EuPz>PpZ&J1ET)i$P@u=o}eP{SR744yv0$^)Lv7#sNV0r+~)dK^S!Q z3MlV`#sNWXYj7Qdmd`+W1eD)EcL9LTAO+Pgpt=TR9>{EBa8GV7xUUQ9dxFMTL3R=2 zACNlGxj3LTZyN%Ji5Dmg0bs!9?7n6K^z-mEjNI`s1 z833{uSsjRtjzM)jsOP~Dq_w!aWv56DhrF%TbyLE<1bh{lFNZUfl~$`_!r z09Iyz><9G?KyCru6$H`?G6#l1d=LhO8>|fgVuRFz%mdZ`ptFQQZ3s}i36$qRZLiTf zceKtOY-s?L_F?Is5Dm%~ptHn4Xa9oAc+i+XsGbI4P<;WSVPgTHekiD}0QEmXcLjjf z@_^d(ATvPa4yeBm%5$K$H)#GHGzJZ-mq7Ios2u?^j~EQv2ha^V2Ou{Wyao_de}nQa z$SLib!!U6WAH+t-AaNK*mO~Z;u|a)z zP`(G*iCj*A_@F)ss0{*A2g4wsLlsrKu?hWU~mdL3V@2szLQOsLTb` z-Jm`Ss9Xc}KS1ur|1e85I@ad1z4hfXXOP8w?Z&pfCi5IlBKraRU+qg%5gNkBbj84`k*@ z#MtV8&^=Wk3_6n-H2)9kV}t5{&>6CR_V)ilbu2Q5*Z%Yj& z)Pd4DsGb7VNuYcJ%G01a3sj$hxyu#8ez1cBc+UjLPaw4*vyf>J8x#(p@f46bAoqeWNDOqx0!SYy z96OmMZJ^)(VUze2hza=yCKWL3P2!qT5sl{a$E^&|^P}>4j&w=WGP+bRV zQ-Ipsp!^0J(*}<_C18)v=&(fR6!y z+5&lb|3P5_>W_ogdxQG=pl|_=6@boZ1Mxxi4QNaNG^Ya!Pi+1M*#QyZ2TXzRvfer1+?Z46dy1QuK$Tx|Bqfbf%q^C zs;6LV5Dnvl>MBsZ1gh&m?LUxPK=nObO<*8+-vFpy2DQ~e=M;d-0FWM#UYJ_A`khFNe0_`^j zwVOcY?qIABM%^^R+9m-3|3Up^P})RJ_t@B=x)hW?K>YO@Y>;`Nx{g##u0B%jL01p57Ze|$dKO&&BlZ13d{93eG_DU? zTLo$hf%6}|okjn{$dA{YkMLof^z1JNKc5RHz}#X)?~c>tic zAgG=O&Fg{cIZ)pfBnQ$DqCprmE&!^>LG>YM&H&^#kQi7^P!M=r0>p-4kRH$)dQjd1 z?WadJ6Ql+t55pin41>%BjYWX;f!3*l>Qj(9kUWTnVGtjNL1MVrFgX~FtPUgw!XUSS z&JFcIT9*VWA3$XSD1U&;J&+oZT9AHZ8pH-+P`H8G0LWti*cyIx+D-=ZUpsxL1G|z7zUXK!k}>h&^QJt zZ-MG@kR32JAR4R&x~3k+2Z@2&q#%8uJPN8KLG>w29z?@1NG&=WBnHADaS#o|$b57* zh!64u$S`am=YgV-Sdg4BS@NsybtY|tISp`rgl>i|Gy zEoclCRNjEv+91D;;?Xw1K&1iD7!+t+3X~qPrFob*sI3p`zktemP~8kVzZ6`C7Zm&l z@yV^bLHa-#WCpb`sICIJ4OIVwXwaGi&>lokeFnO}3{<~??l%SPbp!Qvz;&R71$a&X zls7?jBWR2qv@U)q)&C&3g2qrleg?H&Ky@t&otO6?R0o6N5Y*QL`4v>Yf#y6waS!T~ zfXo236F}o1pm+g=CHfcuNDWAw)cSv7Vd03~3rMj32b~EN9sM6v|Ldx#{MS}e`fseM z`5&~_9yAUBiW^XUSPQEEq3i!(bqWIj!c94+@LxT)TamKd(b@r zu=*OL4~9W?8fd-{G>!(UD?#-bNDO2aG6ty!wHH8b1yC9T%`0Ft52Ox;LHa>@Kzva9 z0+csFV#xYHd>96)1F>N=j1A(0Fg89&41{6wAT|ht_#pp-+zZPap!@;Cp!@-vj{x}- zqzTar-lbsD-&km~l zKy?|Y&I8qjpnfZ;ZUnh|a%t)R?)?1!74h-^!R-KBTku)vpuR9@Pa~*~gw=DPx^Ado zP@4thSCHSq7}Wmk%URD|3Pg45Y|^!{qJaE@*mU&2zGYKx_~Ot?>u7e?jE|=*(VFKNh4GghBEk3`#qoaYInu48pK_ z5!CkusRLnj9v>tQ!^mnuY!C+3pCEZq+Z;3(2QmZHHUWuY!yr8% zaTpC_!}uT?gptKTd}Iug17T2I4Z5ocK9ObJ?QHHtSs=D1gtIuw*jDaAjs{o{Q)5VfX>4M`2p4@ z2d!%c)%&3G8YB*?=Y|Rfxf|v;P~3p(SuhQ)`$23_{DJCf(3)gW`wkShpt23LKMU07 z2i4D@ITFxV2`FB{en%hwht30l!VhE?DHwDf5XcQ94TI7XX#5OR{^P=+@nKm1A5{0l zFi6bN*!VxFo^32F{14hw2disAbq%Qgfng9IhCyQJY?v5`24Rpqj0UkmbsH#cfY$Ya z$^lT_1nRqj#*1L;Ks2Z>1C0rS)PQJMy$CV`BoD$MHb@+_=N(j^g6cX@JqQwq$-~&l zd|3StT4xM08?-JD(9Kr|Df_4R5yU?2v9va*f7jpAUA^Qe^A{AqG9d_ z(I5<}??7i5fbuqIOb&ELCvw{cq<^Sjl=>gq-T}7((Ac1OtcZ*I4~lD0+=JHrgXVof zbrk4qV9=SrAU}iJ03aGy{~t6S1Tu?M3<_UR`WZ%F`U}`{hGAOTr(hsPw02&Vf)txXkFm<515~L0^z62^$KxVH<)j1YywlKPcUU$}Uh}8B}M2%5Bg*GpvpsY;`}fdq8dk)r%l^ zgX_Y)Jn%Vqptb<0uMBDzfW|yQZGBLF2aR)p<_17x2e5H&P#ri_Fvw4!_yPF~j$!pb zbQ}N_kDxjpRBnUHWstv%A|wBU#{5BP4^-cS&Qb#1w+!|-djCHw3%m}H-1>hcjsXx` z|AYFwc7}%F`X9X=V4$Y(Lr<9pfMy+*#Vj#1l4gMIS>Y!0m7iR3P=u=#z18Ys15{)BdY=NK^PS*;}BqFhFvkHUMZ(IA{+SsNMvfu?t$S zk6h0VW;VDDkd^fxR5ya_#Qc2l`T!Uo6xN{eRnV9pDDQ*%v!J>k)NTORf6(#np}+?F z30B{OXb=X~`yd*G^YXy+^`P^WL3=qtV;-RK9?)J6PHKs11#4>>nf!8vh6F`vKbb5(kNa><5*9p#C{}{SO<%0I3CGka`e}4TI!B zVFs%2L16>JAiscU(D|C6u<*CF1-G$4W$x%0z-YY>s*7leVQCC>zYb{38+5-l=xj>R z+#IO<2jw@=cpZoarAbiw2erXL{bx}9528WkKcV^_ROiAlA+^+y2aQ#O&JzM*5F2DS zy1Ae_9kgB%JPrV@3qkD|kUv3V;Gq5n=!^i6KS6qjLVb_!MsWKK;LEE{3o~m2eq$2^DZE}M(h8W z|Dd`bghBN`Xg(NJ|AY4Yf$AS)4Gr*K0MI-DsQ!=g_XnR(30fNu>WhN<${>th|A6Wq zkQj^xu|XKbN5&vAY#5{lR1bpe0HqO7*#PRtg2X`>qz7a#s2l;cRX}A4s80+MgUN%` zfa-tHSyP~L1T>ZplE+s6gVe$>NDZhw0_g#@13>j8%uEms!!Y&ee3&?hMwSDyVPYT} z7Y4Z*bRH_GJOH@?8H4-)Ix7L>2bg}4xiAb81F=Cg2!q(5aD>(S$TVoo4dg#i_=3U@ zboKx(%l=WbM`rs1)Yk{q`=GIHP`(1y=b&^9>i>i4K2V<@Bn}$)2aN%M>VJ?JXb&)G zd*3R?39>i>fL30iLqsuw|i1?dCnA8Hs>zk}ilj6roj41?ML zAPnvQgZlSAR#uQb4;B{xL1Q1Fb7(?ufAPlk-G&caMA3^B{w7(Bjzk%dHYC#xO zm%_&KLHP{C2bl{~1EWD|VQi2ZP+JsaCg_|hQ2h@ozhG)W>X0!=9E4$FFgAz=VVF3G z2JvAS7a!z4kbR)A2h9tD{0G7yHb@LxI|pPY%sdc{j6rgsaDib^{~zQh(3xbQHWg?s zAZQE)R34Ak(Ic~trbWDi#t1>_7H=ixE`cfWi>ue^A>1)LsL%0l@x8 z>;Hqo6cm@Bcm?(4$;F^}1BEpRgWNovF{$-Gs0{!b3jo!2T|xC1Xss|z9;60@L3KH3KOsmz$WI_Wpf&}_Y!C*iL8n1_KzR{V|AYE2pt=&I z1{=nvAEXXh9L9!;gZRi8Bo4yJVxaTQKy5KlI3r_FSpja7goJ?4MuO>q>4(uEaTps! zgZu=l>p|fI!k{()hz8vO2?`U?SOW-y`dT1A)1p2YHFIRNEkN}(sNM&y&jHo%puNMO zas-rrLF09xJ_AS`M8oQP5DntPaIB{%_zY4|+6SdwQ2h<6H$i1TE(~fPfX0nMYsf+C zTR`a=w0{`1)(lkNg4TV3FsPm(WEL(vK;oc&J_v*Eu?L;&18R?h#?e4y7NESD78LX! zbcb1Gd^~ua8tAM7kUluh%mnWb1i1;c_77Bcf$D$IxCh9eAoqdlM{wPTW&V3Gi-Y?A zpn4Qu_k-$vGz@CXf$Ch)7&FM&35q`u4Vp6m#UW^}8C1W5 z@;|8F0o6kw3}d6yFgcJo41>f#7{t#A4EztuBcS;}kUgNj1Sn5~4jk!A4DT#P<@Zm1_%xP z5878%9v26`gBjEg2gM^Oyg(QfpQCtW)Y;UEXHdR_kMp~_g3t8_?Hh*I`|j@lL3KZ< zt^;FGpWn?5oc>^SKZpk9cTk=MrG3yi6{x<2*Pqb+_2_(1eF_>o2AvHEs*gc=7_`O= zw5J|4-T*pZ2DH}>)OQEfAL#mt;e+g`OGyE*fd;uBlt)4R4$v3|Xr2+|e^40$Dx<*l ze@@PSjQStyeo+4wH0K5?yFleAsQmyMQvlWPpgImj4=D_~`xsQ$L;LxldKBCafbMyK zu|f4eXzl~F<`Y!+gW?!;E*Z%0puRsSTwoZ~rb7<{P}qRt57b^Dx9<41?oeR0n}*Y#3P%#zv<>bs?xd4Kg3JM+h_r0IJtP=7Hou^&!X&p#6Fvy`cU& zC?A5@Fm<50H4p}ig@pVE=>@UTX;9t;l@lPlK;sG^e}MYp$m&3BWQ@%mWO)!9qy~i1 z+30+j8j!u9@&)8CWDE*((A)&5E(fVa#<`~hm8f%Jkfs0{%MOVGLxP4R9sj2^AeO8bgKVHt(3abA>Z6DAYZ%~|p z#tuMX0;~H$G-#X#!``f{|J17g;q8Fp;{Txb1PFuXCqVRYsry0xptSx6jRkB zz~}#f=8Qpg1t{IZ>L*ZJ4m76&nr{c?3s5}_t9yu{L25u4R9As8m>m=ZzV{E*2LR;{ z(3m`^ya1UG8XExB|Ddu5v_1fok3em3Q2PUI;L)3YZ*792ujF!}z#pm|mDXh!0|eXb?tbgWL!ji-(0Rj0S}_DC~34 z#{WTj(J{zO5C(~ZXi!-Q3NKJy5Aqi%3_)=OYFm}Z#{LKGlK_PwXx;}jX95cEQ9S(X zZc5@9l%GKQL1`7##|HJeVf}4Ty$`~m{0geu(J@FIhCzD4*wq!h=LS?Sg7P|O3;;Af z1*-o+bpfur6j>ZpUx4Zo5C)Bi7H|x$`@wt|J1_4)sGkptPf+_1X1jYA0jG_V)kl^YZ?K`jDW0HK>gas&_$k z60Cj##V2U49hC1ueM?Xs1FL_q(I7Dp2Gvh68pek60|LNv-JtvdN;9B70cg$*RF{F& zfa*%n`Vo-bpz%16`(X7rhz8gHwzmI4_v(ShwL$7Zbs?kTbuh@Uu&@Qups)s&i6Hlb+zL|< z(gR|HFo=zeVPYT}ghBN`C|+O~6duKqk^e#a0YGMh))|7vR6yYXD%(f#Xd3`q8UUpa z(D*f|UI*3rpmrlD|AE%=gT}I9bvsBN8Ka21x%~%?1%T^*H@E+wG6ht2AlLt({xzt+ z0M!qmdW;whuA6dl!2Lu}8vu0HK4|sJAgp_3{aj1m6@QmfS|e&q!;8)YGIK3Ky@ay%)@04D4ap{B&f~=g*6Hd8V>+r zX#Edb=KvZ*0hMW>atBmD!RmW>{hywWI0FD_4Is!bps)w^(`ixf!^{NDQ-Jmefc!Mn zF(`Z~t^Yym0IRdJ|EKx;gXiQy^#^Ed4K%I}ibqg72GO8#01yqz%bU>cD z7^EM>24PUU2GpMb)v2I%2}llxLFR+lAR1Jsg8B!bwQ!&^31l`%93+p9LE`8bml}{b zNG*&8u|XKdhtV)GkefklQ277~OBe?E5mZ)y{ed)(0a6RXFmqruNDLW+!VwgPpfM6q z{DCmYkD%}Z?L7wd<3M9_pne=E9I%!9qhcewJpiirL1_cjMg)!Bg654v938>^c2M07 z%8MWjs@Gu{#7D+3aS#nECqQ`(hCy@xpuGa1J~1f$gYM4-&C7!7UQpdg4hGeM;C>{u zO#tGPV-83UNH3@k0%*0j44rX!C_y@So2i5Z+ z4C?cPXb^_6k?Ma?yo1U$P=5_nzoOUwuyz1A-jLQog2J92^*?BB0B9cx$WI{m4P{KN z`oA_O=YOi7A9(&8RBwRl5zu%)s2l*rB{Bx}BSC9_!F6<4*nbcWtCv7D2qV``$ZVJ# zG7YM`K=y&k5m4CxDu+OIIjBAZl}Dg<0Z1G)o&<6mOmAjL$bV3M267w7tsp%hIS>Zf z38G;b)E5S=9RjHZm2WV$=;}b~L1G{bVuLV@4WeNfBo4wLK0X><4x}E0LGA{X4*fTgX((_29^D=`W}S_jsJUi zfXCiI=^a!rg8IdvvX_$jA5^CfCJd_oLGx~)@(R>n0G}k?VaJ8(RN^_TGWoilFigR4#$)SoHcI#z(Oaw4O363w(Yet^5C=aR87VAh&_i z-%!R>tN)?*|HA4NP~8ivlRTXay1Bz>qUKkBxgD{8> z!XP#XgV^X8Bo6AIgX(iozW`(|s2&6Ll|dLZ{s^)cH2w%48-Sim2&&sa`3ocm8m|QD z0ht9dA4bF2p!yzE?}OBW))Jtr1*wN&kRD_V5{L0YY!C+VVKj&h!!R)r4Z<*S5Dnvl z!WPu80_72qdteyUt^$>%Ah*KQ5=$eS4~jQXoPaRMpCAlc3kWLTL3V-KblA%OQL&NR zCIGdc!FkET0(>?IsBQ=47f^Zxu|ah^moU{s*lm8m{#}D9?iO8L0jT&6j}2#6f*sQ2!RC&O_?^4rXzz^*>U*52{B&?HkY> z2MB}48bS2~XigR+4(sp3XwY~Fh>hZBI@kZ8HUKDIKyIgX{ZC6fs9pbq>JbnIrD0Ir z3#vOnbu%chgVx!B(lrc&>MvMbk{c26AGE$6)LsDT2VsyIAR2^0Y!C*qK^Vk_VK5)G zw>B*7Kj_>aP}>=lhG6v<$Zk-20`-|ebw0>lAPi!I<|RSyi1YOPkK8r@n+a_vfb0R) zsUUMecM5>^8iM#BahN&~8-_t*gfK`gNDVrTEQZWRRtKv8LF1qxcf-OGM8o_D(ua&e zdO;Xj44Dm*17VODhz5lVs0{!L4_Fw2)>(qqS%B7hg2pC6ZFJB$%V?cHa_f9p+=JTA z;ISbyGw_)kptJ$1`$2U%a-9$2gYpmvgTAq!uI&qCprmE&wtYG;Rn=>%+GG z&&v7_YDtM-$X_Rc+MZx_lMX2NOS+7Z~={vfYx7t>SlUi&=>%%>wa3BPqq3# zCkH(L52`<4^$3U!!l3#D)D8f}E2w`CO531348x$gdC=H8X#E+eZUgB7VURg64C5oy z$ZU{0(0V?QJ)k-YWDm$J&=~=s`Wj>xXgva`&H{;p)Pw49(EejkzZuld2I&ROMS$c$ zW+P*eAHZtO%>IM=!5}`eJTe=kA030_k;Pzq5RHsMYG8a28-zi85Dmj1yFq0ks4W8W z7Yu{^0UBok`4`l_LDmOiBV&+RAU=pj#xOBZSb*XKxeWlS|3U3D&>9HPx(QhMKT40x zHUOx62Gv!tx*v3B1SlVY>wZu_AJn%8(Rlj%pgJCe!F4>SJpj@Jr9t8#43>lT|6%n% zD1TF9{vT9l3?>Y!GeLb9P#Forpt%6hd^1QKRL2b^40AKM-iOxn;C29r4Z^VcAG!|^ zRG)${s5}Ar9n^0G=>_%mVHjNhXJq^b&G~@FM3BP+be;mJy+Dt;A7%%w#{fXPv#g`$7G1Se*rY@Ey{ivIA6Sf!YP$Ha7o3;{u>|2F!erU7)@Q$PJ+W2*`cN^*_u`kbR&! z7c}M$G6U9z0EuJ6AblVVk^|A`7?(Im9ZU{HgD^-88H2uzHVA|GAPi%}Xpk64Kk^s=C~QC&v83?O@Pc8z{|z_5p+HeNg=ms;@!$34}rU3xq*zkT|Fx56YJyHVA{*FpSOziG##I z7^Dx><^|0qg3=ynZDCnl9Qb?|P+c&X>TpWj0vh87g%_yr4=QUa;^O{;>O_z@a$Pr6 z*r0t7pgJ6kVRb%Iy$^2>JktQ!k{_@RJVfb-r!*H+8|K+2K8A%`5A;k ze9*WysP77@n_>EpXG50eAYFbvWI!XQ3~24N5zgh6Z&hOt332!q5x z7{mr)5F3P%+30*w-T;-opmGA_eq;=47l7(xWH+Mg2k~JTWDg93#9(Yt_<-5~pn4yM zLG?dqd;w%HC_F%Qz-Sv_WYztkv;`WMhV{ikWAUK68H7Rk4qVrx_4z^h4pfJOXpkBZ zjf`PpFdA77#s--WO7oz!4jShI?Y9S&kCfE6gGn!_zYIDb2()ezl)pfIBGCCapgtzZ zokOM0M|LM@?;ogsgkw+}0ER*B01(d0``?$J55E5wGzS2>uLV^9gX#-d{ST_|LG?er z{y(^lMB)8^uzH;o8dQgZ{0G{LLW??@mS%$7PL2J4wb1$>R)4@~P+bCIBV$lK3tFoO z+9L>R$AjV;l&3)$RA*7Iq3bY>? zBnL7VIRZ}7MPXiq|H$l(VHLl6d)nV|X`rXEDYFi1a$4WdC9oekrI!U$IH z!|CvF@E%W4xPsy;+SBtts4obr6Grg}X$ScE{Rg$DLFo)M_76$};C?^aSU;#A3rdIJ zdLOjD4{2Npmr6g zuL87DToKf#2DuAl z9tgwC1gQn_LH%mb8fTC?m>ftP8H2<@7+nm;2g$)Ox)?Ga#70&JV#CBhG^h;%nu`a` zYoLc6sC)#is|3xTf!aDCbs+u77-R+vgTz5>WE#W<=>ypV8v_8X1pwi~hzR%?9cXU_ zC_G2;@UQzp?Y!iG0Pq@oP`eY9N5OT!rziNV9#Fp@ROf>*hz+Z^Vf8pR8mtC7=MQ6J zQwM58fc6oB<_VHt%3RM4t{0yoaL1XCXb=^>@|3U5t)rX+E z5mc9hF>)IKIu-yL#{t#Xp#6WKJ)@xdAC%re`ax|7kbgmEGlAMiAPi~;U<(saS^$lg zfXt#N2H6SnBgn5q3B&6D(%9Jlp!2j!eKj{895C+x#AR1TQ4-yC0|Iq$FtR4Z? zAJ{NV9z=ukFQ`5Nu|ad|pgawVcTm3qw6+aYzJSJpK<#``oeP@t2C0Ra3uB|xAbC)o z4XV39Z3_@CjfwdWDpx>b0HE<}kUYpt&|PGp^=z6=)m)#0K3D1X>3GYHNVzP)6(j zkx~DH?(6}jHBeg^RL_I^{h<0AI^GYe!$BBScY*R7m<^K0()S0+gD^}Dh>eaxa$xN0 z3O@fIH2wxE7eHwqly^b>Mo^z`xYYlkIu4YlLG?dqz5`S*g6luDweFz$a42Bpx)5IX zgX(`62G#%h`Ts%n=akY?Fbz6G0u;ZXau=irbRHt84FtjsX=(pK^*^@$KPWsv=>QaF z^sM_qc7fI|fZC!U_kz+SvcCtC4Qi8sFw6}g_kr3}AUDFqD-#p{gX(zDJOJnptE!}= z|Dd}vD-sg^gW3b2c{Wfzj|;==|9}AS`9I*g18MIZG9Q@@s%t>?FsMEO)v1xLuK(RF zE&s#X0H8DgDrZ3R1fY5cR1bmlfH1l_AU-k%sR8MMj{*4kfyX95Wf!R20@({nU!Zym zG|vXA%Rv2QkT^&$$Se>I!k~H11gJ<-2swE#>o0$;vg{)2JvAuj1A+%XqY&N z#)Uy@K^WveP#FQLgF*g6#vr$X#t}htD4=>AWEMydjE1q1`5-YEhKYmfe^8i!;t13Z z1K9~`2NXs{{Rg$9Kz5Ig0Sy1TACyl(jRYv3LGg|rCLnQ8T?eX@>5V6rl>7(z2joYPpFr*aW6=6N5Qg3* z3>Jg2v5159L*$vK>UINh+9DCDis!j;{jCfgZlfR^`x-23MhTmr=@}G zf6(4}(0DOu%pcSy0JQ~bQ&PZf0Z^Ra!tnYZY5X5lkHG2>5F3O+d=Q4Qk!es|gW3R~ zG!M$(p!f&XEg%{+W)CV;K=m_79jHD6nFGQwGhl2GAA~`Cka|$v4R*J!E%=;45F0eF z1~LOA2ddvd^*?C+GDtm09KF5-)%T!%10c76+7lpmg6sfckUi)aB#w+h@-RL!8zu&# zNf8IB1-TK_egUyTZ6r`wfyzV}2Ju1X0fXd0?g#l3#0J@g3nR;e*dPp23(^aks{z&j zpt>J~L3t81Hv?J|0SXt;7yxLD1XNFq;^EaE0FA@OczOK?)%&1y1zIZu8lwf(`ydRe z_rWw$A0JeQ!|HAj8yTaEgZLnftOl74k^^D%`X6L3Xnh&zZXHm$Kh!a({s;B{L35Fy z{(rKs?|)GJhhE1G6+WoG2G>tWbrr0BM5aM?5oiv5T3OkDQ2Pf|-hi+!v{~&#!agZq`CI3P96@c0!pn89Lc{zB`42Tbsn^92#9!~+4 z@iqnq|3MhECJ)pG1O;`j0I1%?g^}xjP@Mt7pn3yDgD{8<86lps@f@{Q_cx(g4Vvpgt|gT_8Om3^EHwgV=B!82BHQhCpQ%$Q)1` z0<^XkG-nPn2UP!q)PnpA5(Bk;vV()c?F5i{Fbt|cLG>G`?*keK0J#&S4}@WAU^Gk& zM8hyh4#Wo0AdJk0@j+rRj7`p!@;~BV-H;H&DL`R8ND{qv(f@ z&w$K;iNk1^7>o}JE0BIrJ_KQqogfUle-+dR1I?*`=4Dg-{Qi&D{lly72gN67oE;Ru zpgaUxe+TOKgX&&T9Sx#E7*zj*@)t;q5C+xdFf|}H48z2*(I7S8`rp>}Kd65Io{MvF z`46fyyP;>lfy(}&j6r?@ooy5B;PBts%$Q1R7fbnE`5Ff#&%^;-I(yjirFrz=6`6o{GwUEhVM@x+*IF z4b;^Bn`mnOw=*;ZpXZ6I?gxpZ*Z;`%2doZ3r$K6vF-RVSLG?PQp9!jSK=m4EZ62r| z1C>1>3>s?&?KuP0L!kaTNDm03n+4*7#6fj6$V^Zl8B}I~*4BXf``~&UdRH!}4-0B@ zg6ssT2kC?92eCnRfyy{g{|8hag4+mzf#A6gkUTPm=>yTo7^Vg$2IIqMba5CTM#I#B zXk;-^Jq#L~K(6;;Y*2WC=1M`~1ZwM`>xJ=QG|XHO4HE;?fq~$=mO*_31Qdp#FdD_fqa6Sm(*d2!0a|kh%0r;}rdSUT@OnSc`46Cc0m7hm zCUX4`s;^=7I5Hb12BJaYAPi%JXj~Yi4pjex>VD810I1Cl>LY;4Hc)>LM1#uyp^QOw zCaC@g-TezH^FVzUP<_#nmGvK6T{oD;Kz;$$(V#jBR3E}HsLp|7X#EeWyFhgusEz`a zDWI|hRR4q6ApM}WC1@`fs67B$16Cd%{~uI;f$YEtgRHFo?E|m}5LEZWFvu^Ux)wx( z)--_X;b|2W|EHCg{|EUIBnHDEJuo&%Jt)56xUdjhw}Z?AwF5vHSv{!#4pIvWKhPKo zC`^#|QP!uV{0D_$Rbt}*#?(~s{5L4ig2E8gcLVjaLHpj#b#?!1D=9&+vhsgz7*0HFApm# z@IE$>c_4itb3hox2G#$db${MgR{ud^2XYrk92W-Z17VOnhz4O~Hi(amL2@7r5(Cj7 z3}S;YjEzhqvq511@*^yaV0Aw-4eFzV#!Nu!Kzfle$PN$&iGgSk2C+dH#s<-#z6eMR z6c(`hAH)W&8wH)~2#Oof*a|3oM(h6JQ}=_~$)LR?p!K+*_BbdXf$Cxq2IWl<2G{#o z_VkT?jViy`wtY>*ld2H6G5`=I&}be1P*OafG2g6{AgF7-cX{2$~$ zP#FbUdkyL{g2uWr>bW6s_Ah7*8dmS4)1bNv)D8gkjX`JrOfD@2kJp3FZUdF^pf&(# z9vW1)f!d&;aVJoD4Jz+IYq>%Cu-5>o6YXL$21^E%yHmy%h{SR8l z2wGQH9vAl?hC$^g2!rZlP#F!H(*@N@pfVR!-hyb57})Qjq5nbsFYw%JL- z_2)t9A7m$}jR4v&3DN^vn+qzNLE#6g=Rtj6P#YRlmV^3?pm}gmooKA7`QK1o9gac$ ze^7e>M1!ynvGqT6{U6NTAh(0qAPi$;qhVqob#NRI@E9wQPs1=+3~em{Ob#23tR9^W z~36%n6j{Kx4t6au!tn4duQ+$nBu|tSK$+Ke+z4u=o$E7eMtNNPJk= z|HZ}sr40J^wqIn*Ilk_k+gzL49J-{4;1y1XM)e0bF4Ms{cW4 zkAbNBLH+>s=RxTaG)@633qknMvKus(4tATP<9|>+2pV4p&2yV+YlFuDK=T2l*8i}&0u)~`3=%`fAUTj2G7VzG zFs$wd?KMje2>1_jC#YQv3Lj87fx-n;E`aJHP}>RJEEpdY4xly@XdV-!2c#bq_OQAP zw5|X&whsz7PGv@7>EX8kX{%KVuLU!j6nVe)wiA&7V!OlAb-Lz$Zw!{2DJe|{d15$5QdqBjfRPV z)WI-F4Ajm7ji-R@1ceo-4FGD(g3f_=HZl1RS|gqk5HPw9V2G~)1eIH$I0eB##ZF%YpbH`#@zLsB8n3qo6Ub zy5wZ=+GbFB3#vnhG6vQ2u>L6gr>XV{lPk-^sNMvr2bIN6CMMuHXHb0w8aoHkp#B=DZvhGuQ27I@=RouPAbZfm095~j)*gcT z!nAG!fa-b>hK=ik#vMRzt4&J!52|lK^_8Qs@qf^IP7nsy@usHWJ#L^rEU0b?@LsLcu z_%11sT2R=6+ETrFdEh&eLHhte;RnK?F$r+H3VQYrs67$wF&n z2Rwd`QddCNn1TF&j*-=Y*dTcjjf_EJAPnkngXVrfcVR@hxPZ_02i4)Au?r9ejm?AV zXwcXQNIysq2!q%l45}kR;R#ANp!N+Y4nXZEkQ&hV38>BjwW~no9Vo0o;vjt>8e}&J zgXW(=X%J)&NDhQS^5_^@9L5IGAWV!}kQ$g;5Dmg0F&IYYgZu_^A1G`jSGY1K^T<2Ky?JD zj|}QJfyO>TeZkTCKYP%u5rEanpgJDC?g#Nf;$Vzi|Cg14@Am_h&!Bz;sC)*k1q97~ zgT_QaaSxii2Hp7pDvv<%4Kf2%*JITGpt%vy8UPyZ0RYwcAPlNgL3Js}U!b}e)DH!X zxr4^rLG4pe*$XO*K{TjrhGCExXefbzwL3uh0MzyXg$qawRJViX0zl@0p`8a2o)$h99~<52PQ2L2@Adpm`5aT@TU=8qWmP zU7)lD5(CMB`n4dnFg>7l1BeaU9{}nDf%>~3KC&7R8-_u0Fboodu|YJ952ImX$b6U> zh=yTgd2}|255ge7fy!f0`U3e48H2(Iv|b7{h61XuLFz$fgJ=+ju|YHp!^A;+5F3PH zY*3hh>;u*Rp!O07gT~}Q;R9;pg3=7AtvXu&58e77G!_QxV}r)oK=(<3>VHr^0i`ie z-4Daa^)*Ny#>d5m$%AN^8W0V_=wcu~48!C>^*_ixptd+Dt%LT3gUVk}eK3^!{vfx5 z>doQM{|EU4RQG`DL~IyTKY`}{K^Rmof%@p6{y(TK2Wr!S`)8Jx;Q4J(c?Ih8gUWqS zKMyq42pWT|PE7m{TJwgj{s*-OK;mGtq3a4jc2E<8>S0iy8Z?#;Dhok<9#ESURF8n# zFCagF(kBRm%3_eeKy?Gp9w-bz?gYgNC|uAns4W1h??GeiAPfp;P#p>y0|13JXbuC! z##Q%&#KHAH(*3{4bp4u|ebgAPmw6D%U{$8c=%;bmjoa3{ZOjWHu;$f$Rcdkb2N~ z3MlSC?G8|Ufy80vg4oCyBo5<)*dUC|2eCn7$QUFB!XPmi4P&G8Vd5YfhCzM;9oz z_k-dN)HeZ*U4qIg5F3O+bug^{2h&J>e~=ugu7=SdHa-kfhmA%SLuZ59;h_FMXgmwl z)&!Nkp#BZ0{v7HUR7QjPkf8hn8~+Ed{{!`BhZx4T_8(SPf$Awx-4DY3MMdE8e^8$m zRL+9xPEdaZjsUFgX&6984T(-gW?^%J_GZi`$0kV9;gnbCIUvPQ2}-XZw}bjipn4b7j)9$J3^Etg z@5kp}u>H{Sevo=tn4;65x*wFDz~KQ(J2=jd1gQhL161#Wab)CwFdY#Ara^T-DC|LX zCN2!F|B=rBMXxVld=L%7pm0FPAaM`|iNk0R8-zi85Qecqbuy^#0oBu>yn-C&pz;dT z{{;2pL2Uq-KA2umT?JYf35zSxTnnhY1DOG;A3^#+YC#yJ7u5a))vKU*1epusgTz7d zAPiz7V~`jKgTz2I48!;^8YYg52B`yKba{{%2!q6tX^>w*a{!=qiZH){`~<@wG0sE79vD7#~z`f$Dw`292MC`nI64Yfya;n)`>9S)jXC zL38AwJ`Je72O3ic)&HRJa!|PhG7nUL!Rt6sJqN|0dy_!oAoKCnr^LvC>SPcGwI@L1 zPJy`CfUE{&4k!#k zVFn5VbPSUR`5zP)@GwGe1LWj@*8+g+e^9*-!k~H|M1wGBk3mEPc+UZ@x*sGCuK%&j z|0CBQAT|tx;trh+6GNtv*&y{GJ`98Spu7*N_dw+aD7;~D07^5Uv;?Y;Ky5{s9uN&$ zzYo$28h-(oZ+3S7L2WaTUQqf1)oCDkkXlf`8e|5jUkgfupfLxKogjG_2B|~FAaM{M zMkBL9V#pXIhm2uzATbadM1wFg8^lM(FgcK0L2d_?)yQE1@)rn$(kiGw2Wm@${Df`> z$Q%#`iGyflj4TFXgD^-QRPTe#0@({1GXk}1!(3hegW4LPI03brKy9m0Jha*Yptc*R zd;_H;(ApT}v42oK48oxJ#Z~`<<LdUeN0%P`w4J_dysW2kQ5O z>VHrj30emSic?T|g%w*^{0EiAZ5bK=L46odT!Y#fSi>bJ=YMNf7WkY1Naz8@R~kQKM~YM29<>%_ksHB#M()$I#3$|9FDLv|FF>D zHb7q9f6zPtC_cbp1gif*7}Q3B(x7z!;QAj_@1tX+HUOxe$A!W5KdAo?-Tw!w8$cLV zPk?9;28qEiEg3=;#3@Wcd@ee9vKz%V#-32lWJbsQ;r-AGTVbB@?P`V(d4hFdav<3l0gYn0biG$9?0*&i~>;=UesBHuCA2J4+59;%S>Stte5E~>1+V225 z!w1yv1Bv0npm`HmSc1bAOIU;K0EG{z4FeAkv~U8opHS+5Xq^ul&&>z1BO}4)t2aP2h!4XsK8%KmgJ@(i5F3O+;vfuSgD|Kr%MJ_s52~L*`zS!^ z1eBIQ@det`2vP%@=LhxuL2S?+e<1xJw}aviqzOk`gpuR0A4S@PX zAbUUV7*9kFfkAf!yq-tY;-SLGz=a^oWi@egu{2 zp#6Cubue>aG|UVb4H5@o5FeQau|XIl4hkO-2G#$dwg89?F25`-|AW?3g4!jZdSw(3 zowfj|J_e-~P?`swdksqep!ybs!E8|99&PR)SG^4~3mp@q7N!Q72C+eI0?qk>=J4Ds zE&qeu2P(rrW!zA&|3PK+u&DoYa=`s=to?u3+%@!!TF@GIP#p(4n*_9;1HH_`#s`h> zg3agv3GeAdE{Ns9z6~1C8T@+Rvak0`==bWBs80@1QmSs7(hl14M(y%0coVb)fPN z)UN>5iy$*V7*_v-%mdYFAUz;)bPO^NBnF~E7{mr)bT*8SOoP}U3{sB`gXBOMBu5Ml z3IkA|2sGA@E8T+9H>jRQHxp()x;QRANIj_D2bl$;K^U|S5L8Ei>;{b;gW6=Hb^p+* z`$72x)P@GdA80%lG!_8bcLl2Z;TT%~gVGTUqu24|@IhuF>qF*)>;}!dg7PwGoi)f^ zpz;}%#z18msQd=i0ig1JsA7;mVD&$!-T~DGp!x*8%m%3&tQh20P@Mv0CX-6h!5+F zgZ9jU>ig*x72vxDL1znq)=h!Z6KKp5GdeW3XbklMnC2=Ey^AivM7tOTD23_8OCRCa>;N}&B{pmYq9hnazo z28}a-+CLzFgD@yukuj(Z29_@<0N)7&3JcIaLs0mDFeu-^>wj3?k4%H=|A>hHp!N`` zzl;qd_y0k40;s+~#vm~e28qFF5F3WEiGk#>iNnOuX^?u*`cY8*2Wm@#`Ujx$0W==~ zs@p;1M&P;curS27)4CWb5rY9E9A1WKpq7$gT8#{jiwVCPA|^ulPE`S|#t z^a=_uSic`M1_N3z3fgA~%0r;C8g$0=Xd7VY)c>HdRZw0Br5VsZJ5U)1s)s=s)UE^3 zgvR~BYLMmxKy^Ay48#UubUsK78KcXC>VMEY1Ssu-=Ep&OE)W}3W`pi90hME*auZbM z4^<2*k3sbjsILLaKcM;_G|meW2h}k{0fXEMiVIM^1FDbEF{rKw)&C%QP@N2_k3nl5 zK=m#t&5?>hVFhZlg7)Eo>NVtg7*vOX>ORm~yBU?0|7Vn!gV(!(&btAXeW0`rTAL3# z*Bunzpz;!gvAF>x4m!sNRF{C#9_YLrP&xzI0jl#s7`dJX@j>-FC@esAI%s_qC~iS} z?m_nefZPO%U(om!C|`m4P@sN4Xzl@ICbC(C*dVh&a~z=Y08qGs!@Qv2KWJYpC_F&s zfoPC8sBHiWe~`OCaRq7*!0UfdpC5+N+5n(30bAV<5(C%&1lIq7>JbQ5&qrvwJfa+9``#~7Feg^SDa}ppi(7rj)*eA$6ptb_2{Q;_ni=(3cgT~ZAWh7{h z6f_?Is)s>!I7lCCP6Wgz1%ujCAa{Yx0b``|k3jY!#|3EK0Mr%%*;^VH2j1%kpYw;+ z{YY&Ag7rUv^?#sx0)}Dr2aFG*VPeQMhz-N&YGC3p8YBC5UrCs#&4B~_G8mQa^&2@p)g7kqf z%q(;oBnQGEaS#TvK^W8)0`Wol3e*Mw(V($3P`eh?R|D|1eJH7c!bscAU>!r2G#9g8d~?m*{-hOdjUcD3zX+Tbv8&Xm_}ENgO98h z#0FuI`5+o(KWP0wsD1>M^`P<-v@Q!&XM*Y!P#HUvF{nQVYRiD;T|i|LsQv(r?}EfZ z_3BW-Ah+VH|3Pvf4DuIfY#dZif#MQZSp_Pu2w{+3Q27li*FfP08W#ffNZfl1geujYcoM*1!#>4D4l@D^g;SSZ7*0~8I7(PiGlba4C5oyAT|ht0A3<&I(Yk+d*ZrXQ0i|_N zSqzFZP#Fa(H$i=FSp5&8LG?MP?81sc^}oCOe^C7onoEPJ2bFnP)g!e5U~2HuDD}UW z*MCr%4qE2}8aD-%Wkb2{2e}K0HP4k|Aw!5}k07*uzI>Uap*OCs7a{{vR|Z z2Fg>Q@n(>jpml&CJ)rpykQpF0Eip#@550RCT>r<${s-6jpf&)g&PSv3A|naU|AXp( zfB*lWavz34bp?nGqCuD#Ho7_xAB1t~1<8RhNFIhkd=LilK{RYk8q^j9^+!SJ02I%l z`W{sOf!Yb6GyzJ7pt=l%L3%-Qpnf!H%m7qAg6e-zpBH2%41?5xFft#+hKYe_5Qd3? z*dPq!BhxT8vOJ6plLOHp3=#)n5F3O+Y!C*qK^WvtP(KOeSCHS(F(@B^+CZSR2=XsT z4+z7|0MQ@}6N9lqd=Q55LG?d~4Vou`wE;jhsBH^7%NvyDLHo);VK|BhZ#w`~|AXpZ zP~8I>9|Ef-Vr)HesKcXtQRxe-(UgX{)jkXjfGVuLV< z4>B9nw*#eX(D*-S?iQ4;LHp!Dbqc5s9m*I~cOuvSMUj#JiLL)ZdI!3V0CNMVz6Zqz z=&l*~d^D)O0pYy7{~$3?T?eZFL384uv3O8<1d2;)W01M9{tiB~L25vC0w{ff+Q6W( zVbHt*sBey~js}gp-^a+~t zz-A^WOlXBc?JZEeAY)J)4YUpbv@Q{)zYl8zfZ73|^?%{vgzJCM_&>D%2h|TC45}Ak z7{-Uugv3Ge=xWi$K=L4rEDqv>FiZ^8Uk71O{RF!25LCv2)(nB-1T;Pk8Ycp^3qWZQ z6!#!~pgaCRG^qXum3N?iG>8vsCm@@R%m&G$W0*Wl9K?rVm>7tLiGgTjK8Ov%AaM`| zv5_%I42D7CFgAz=jbnh)Bfk0{qxJvbt@n}JWT0{iRAz$OZlH1yROf;)s4fR#P<{Z_$G9*^EoeLq zR7Zo z7O2ewqS4Ky2Om`5gW>=b7a$DcgU%WNt^b3a{SR*kfa-o|I{;L!gZjpxzB4wAzWxun zz5vw^APf>irm?YMYCv)zjE#>h24aISNG%M5_#h18!)Q>Pfa-nFd^cz;095CJ#$!P7 z18VbuXiypi)$^dT5Y*2H=?B$|pt=jx7XsC9pm>Ct38Fz5qz*=d*!VC=9SEbV0f~Vy zOdP}pVQhS4ahN=e2FZaih!1ivs4NAwYjNc%P@V&o&!GAmrVpeS86%6s*yuDUd_j6Z zZ7eVj4gC+wN1*c-K;yHZ@CA*Bfx>na5AJpV=)4S2x&V!>gZkK@^Z~=L`X5vmgVGi< z4Q7MJ|3PE=uCCyHHK6(#q!*+XhQaDUYS1vcI5s}4{)er{0jUAyTTtExm203f7Sv}0 z(L)iV)c@w@;5-Bxw*`q0bl;vB`$6sm^(R4b0jm2!G^m~dVGtWEmY4S*G#?JD13~=) zTzwQ=t&EQs7(M`HwU^i4|Gl@sB8oEBSHJfL1`Rx zmkg+m1g#kdt$PBcLy$h$909U<^k#$75-1)(@d3l2b(o;N6QFt@)CK@y5F3VJe1i2q zsQ(`j@E=qUpkr8lfi8~DM^^{pgD^-PIt>y7VURcogV-PpV}ocA28n?%hz-IZHmHsQ z)sLWgX;7ODl>R_z0Mv#9t$zm9`=EIo(0)SDm;k6B4H5(C1!0gmAPiy?!Z39(8kc%x zd2}{1AEY0d4`ZX#F#mzdM_l;@lAag+Z2BZ%p4wi@N0m*|fx)_L$E)Eg{V^`Pzp!Hm!_Bd!B6~qShyF4u{{)5~J zDw9F=&uINWaQ6U%!XMPX2h}mKx*o&^)iod*CI=c*2i32j{b``I0a}-htBj(hI4GTi z%m<})&^!dlO(2Y3FN4P_N=w0a<$~4%fXXm%yPOJJKv0?I zZ)^J>6n~()60{}`RF8qi3P5!lXzd>;je_blm>J0CgV-Q(5XQy^iGeUo9+{0S1`-Eh zLSis^7>!L2NDkyb(7Xm{&m%0IgZzk$!D9m!7U262K=n3AAILlqMrMQfFpN(eWG85y zEU0}2G7pq)K;<;Ze$dz&DBq0YL0bO@1c1+02bF7}Gy+<`52{x|buXw62eseO>t+}q zMuYMRhz(K?G6z&wgW?|~4l)NM2cnTNNDPEwV%XSVF;M;Q?*1P%o(fx=1)5(1?cD~s z6|{~F)JLUt{ST_+Kz%w|V366MdIQuK1)bjo8bbs1*+AkTzYPTptK&iSJq&~D8ZbLA z548YYfTgZu<)zkteNSQ-WS4;_Q#Kx-gC{)3r;Y&M7u z!Z0~x8k;yMJVA9o$UIQ_1#$yuTm{sQ0_KtRBj?;kUB6QT2F)8)P6QL;66K84v${2KIqs0J~pT=0je88X$j;e zP+kSCw*rk}fy!A>84aRoQ8$Ck1l7Z!xnU5S78qncto{d$Cxgb%h+Y3TDB1>~bALhS z`+_iRtsjU6;k-QX`E#K545;n{jfsQq&;|9mKxGgp&Cv^k>;skSpz&W&ngPw_gWQCS zVf8eq&Iax01D!nyaw}-87}=emv% zCXX%-<0H$1*dTEbjgDdBFd8I}%m%G*0F`y1b||Qv1Jzw13@UFxaSdt*fYt4H+d=6aGZ#dI_~;lW4x>Txpl|}$|6yU^GbKP_3tF=UvKy2aK<$Ci`hRfN|Dd@q zQ2h@|51{oipgaMpyFqyZgkk-7SRD zm=A4NfYLLl%ms;o+U20SALM4x8FHY$Cuq+VE$U{FnV_*>(7JBWSObVpZ49daL48rs zya_1347K_nRF{Is{Xz9T2!q!8gJ=+jwh2IeY0!8&sD1^lQ67k~f6zKFQ27X&e*ld` zV5^Hk?gZ80DSm$cLE}x}u~Kt$@HjCjZa^3`#|0|yKyyzZKY`BQ0i_X8y8_hj0@0v! z2@(gb`Nw9@K#76;2U>>-Y72nQC;+uzK|Iqn=P(1*` zpn3rr!^B`TNDjmXVHg{kMrMQ5fG|i5hCzG~2Jt~O2!q%l3}eG+kQfMq_~;l^*MrIu zQ2h_;_kj2y3~JYb${Nr*08n~?>4TYrj|RzsFh~zFjm(D0A&bG-FgXwn!XR-FMrXtL zAR2~2>OdG&pM%O{P+BE~L3>s~^)^T!2!qT*r;)`#Y!F6Q0}3aQIWP<=!$4sQYJ-5* zmV^44qxJtFtpEM}!S^+R#xX(THK2MMG`|k2XF>Hh2!qlRdR-0UgVe#;Aibct2IU=) z9uOZygXEFbf%w=kNDTV@h zizKT4hxY$Lbpi;3>IWDG@j)2GN2ig+U~F_XAU+Jk)PQIhhRGq*AUO~pnTD}J;xG)V zCqZpB(0Vvf+Z$B(gZj>(eg$Y=05q=+Qj4q?#)i=_c^Dr=!!S$^nFg^z7+npBk1P)2 zgD^-8hLQO&HjGAA1M&xG%pKI9Lr=rVd{EmKREC1at3Y7^GXq4!%tfa`a_AVO282QO zg6eW8*8B}M3#=k&yFNh7I zVf8VLhKa#wusEomc6SG#cLFjC)D8fd1FEmV@&v~DQOrUcTL8HOWDcl525JX@>VJ^= zpgks_{nwy6h1zv8$UIQ}531KdXUc-w9+mO&|3Q6SkQ_BJs15=3IYH|gK=~7tcfj?3 zR@VPPF}@GFI~EUyulO znT2dVHP|3KL1`Qmjvx%0X8@f`M2Xq3`X5%`P=7>g5r&satRa`|aav*tRj4TIZ!)TB?7#o=erB{&OKygPXpMm@eYTJRvIza6m zP~_>e?Y*0P<;yO z_khYk(AYny-Uh`NsB8n(>7Y6oRR7||&@%u)dO-C*C{2OP0-1xZ51Sae8WcWsYyp%< zL1+Jg&2@JN=UdQOg`mC>s9z51uT!&L2AK!y(}DW^p!y#)?n|>Z09je!I}||q5j3U& znxh4^X$DI@kIx;T`U!OAA1JKAY|!2GNc9w~jslIbgUVRYd@HC-palknA821bsO$sH zUxVC)UJrxzVHtX7Zi@5yo?QF z>;Hr517r-U8$cK&2BKjY#s|?L3=)UY$ZU`p45N!9^U>KLJ~9TG0po+%APlOnKyeJ) zzX__hK=V7GbO~w)fa))hI*>ke8d(e<8(9uy2FN~89SEaAY*1evRPTb+g2v847^D^? z2BJaYAPi!IFpQ0j28n?%sO2WDck;0Wue?54r~c%qDUk09`G}T+p09Xg?{)To4AG0RS2^2aP{><>mdS zcK;t#|AW?e)u*QZ2d!lVt&0M+GpO0dfSCpAUxM0Np!#d5)c+tigW3h4dI(-WLHC!z z_@FurRxg3ZX+UF5=xgbTDW3?b0fif=-Uf}ugUT0BT@C7!BiGBIy$7Ir9JKBYl%7EC zRFFOp2AL0X7pUz3x}y&i*Pyx;q#i_r_Kbtl07xCEZUBuN(4yW4g%!wLQ2!oY_rvOY zQ2!rf6#gPpgt-nEr9r-aYYatWDckw4Wf}T%p8~) zj1Qt=VjvpC2VoE!gh6bOTR>?ORQDre(D)N*Y#dZ~g6eHhI|SB$2DJ@9`au|E1~Ls} zV-p9N0V+>G>6H)$rGHQx7?dYK`al@uRuBf+0mA5ZAoG#gu(}^K2LReX0_v-Q@)RiV zfcy#a|0o_@^*^Y84@x7Tv&%r^UZA=cly>0tKeYbFS@(nLbZGq#TB`@D|3PDFAag-x zfM}4J*z{u)M;3#zLFRzkkf3w~VuRW#AbUXTbU4H5&@`Jnm; zv`!v$_bhDO9F*RufkENrWNZu`3j&?N2dcM0Z9&+a1ITVrT?eYiL2Wls`3g!iAiF{J zJ%|RG;b>$8ZsUQ6>ZACxzc>j4-a zBnHCBd>9*W^&s zkonj!%v_iph!1MFfcD^n>;R>2VlXHVfZEQW`BjjeApIaWfy@KB1!O*m4Z|=#h(^Ys z`XA(O5Dl8g1cg1weo%i9)NTg3X%r8>`X3bkps_yC_$H{%1=X=23}S=oZ5WNthV!9q z1W>;mR8E4*OVHjD5Fb>2g4BU9%p4dE5<|xra-i{lH@E+wwSS;GA7mb=odU84l&(Pg zv_X9|TGaobIs;TsgUUQmS_X~DgZR|Opt=+kR-kwQ*Z)ODL!))s;GuYtl4)ZT#E4XXb@WBs7H6wsauP`Uz@ z^Pu?$*myt84A7arp!0A*b@0rJivOVT15kMk>KlUkMxZhdR9}MXS5VskWHz-hsJ{<# zHz*Cm!wy=fgZ)AR8>Am(7RVp?+()(gA4~rq6jrc$0z{+pL1HkBEC*v_qhVqoeIPan z!`L7i8H40N^(=Bd1FFN&)qu{a2laJ9+TRs$L%0AXl50YwZX4qfvPDx*PiFdD=LVUT-3bMT;i0cr<;>VHr^1?3me`6Zw- zj~4Yms4ocWPlEgbI?sh(^*^W|2(k-g|6s+S`WAG)4XB=n*HfUj00`&hfzO8 zA5;f}(iySk5iWJ0HWH|u0?qw^`s1KB8fcyYRQG}018SRr!VlEv2kpZLt?>e#NdYe3 z%*?=h`9WrY>V8n!4{C3L{4k@k@;`_M&4Yr(L25v0547G7l)gabf&2mU6E$d1djjNc zSoneZ{V)s@1JNKc7!6{BFpLkPVHhM1!XWp8+5jMo&7Jh9|3P&G2!rYj5Qec~G&V7i z90;S!!Nfq~APnNeFo+MsATe0I3ZlXFZ9u?(5F1$yhz+i%LPP(9`uw2!Db&g7Kd3wb z)w`fN6l4|%gVe$>h!4UbJ~9nsgT!GNBnHATK8Oa@tH^a9X#4@R9uU;-0F7;e_FRJM zP*{2e^>ILD59n-ZP~8uzk3sGRsR7l`ATbaPaxbW^1=Ov*7=}%8g%b3$PCc@5h$&K`u!mDKz(KqKN6}R zq!y$OOhfB@P?`Yov0<1Tn1;4VK=nUpT??rG2bKSzbPGzGpfg=S^%1D-rzQrO30m_9 zO3$FNWl)_=P4i)9f$RZ=6{yYutxE&dUm&{%bKMVe8>p@U)tTV>2R8Q)t^YxF5V-Cs zEd`H9gZk4T|AEp5B^X?mxVnPR+6VWY3ktydGC^Sony&%b3vyFQbo75vUj|g~gD}WW zPp!5kEM+cb+Y6F1$0a}{^s#igBpm+kU#>Q2QB#L3sg`CqQ*QX#4{-4gs2n1eLL%JK;cfg8E&cc@&VHFbt~aVRI@l zF;Mt}#KCR~3;PdhtAO?ag4R@k`~b28Ao97YDIHV@{y-4BDFys;fa_$n`&%k5u==%m9gl*dUCJ z4H5&n2UISD+bN!&|3T)0+zraFpmGvaAHnKVYSEzj1hi)jw2ur_SJ1)^kXu3Z%uuZV zLE#Rn!(cSHFAJ^zL3`Igbs?y(0jU9%DWI|ky*wg?4=S@jX#f-_p!0h{@dFz70mTbw z{2YWq=QV)JF;M>pRPMmc2bGB+3@V2}V>uu<&8n&b&$EEaVNm}Il%7EI381+EP+1I` zKLD*=0QrMj7*r2~>Sd5yK^VlQCkC|#Kz?aVO9P+%gKh2~BnF!QC#U`g)d#Tp4#r02 zgT!DMBo4wLK8!|ZgZLl}l80dsABI6oREeE&sy{(#02Fqhbm(AY^dD4K!t4Q+i=a7P zP~8q{$IYy){6D$4_&=zh1xkaUb^_>JB2XNI>SWMd0LTuI`>BmVaSO5oyfy+fHUh$g z#uZ>{Kr{>!(gT$Tjgi3Y1g#MS#StjHK;s={@$vsbXZ?Zddvr`x{hyQbKMk$_53dWL z>+QkyLQoL6t^mn_FuE9s55mZD*w`R7APkZN)kmQIG{}DB`UF(B!uX&%48#V}pn46I zc0m0FP(K+|CxO$2r6qX%D5xI{Y6F7I2K8e>G|Vm#8-|g^Kx`OBmj{W1#9%ax4RQ|% zgZQ9w4P-B9tvqN?Nm)z`I8B1e98i7&wV^@n0#LdHtw#iv&!G8LP+Eq$ALIwn8dy+z z2jvftd9ZYkjRy6bVEzNS0o2w3VGtXHL3KN*-2nuE@+XK5(g&{pLqq?A`v0Ku7f^iwYLA1)7(nKX;=xt_gVG7S{)djWgX(Qq{SQi~ zpmGu$28|bi>UmK7g5*JI1C%~N=@8WCi}v*V52~ZVW`O1bpmPTxwJ;2pgN_S;*f0!| z2eCo=LGufsbA>?l2uKVxRsm`YfabbdGcx{z>H$!j8CIuKg9gwi$*0hQN-z5WN)zp#Ekhz8XwpfU^0E-3g9>gR&$PSDsnXe}_Pp93nNKxvH} z3@Yb9X%cKlem=P04ys2%VFg;72O1Xzr8!Vt4l^HQ9|(ie2q;`ZZUoi+ZQ0r2yP(6tY;~W16)disX0Y<~v$b66(2qTN3vq5|i2B|~F>7X-oK-k|OJhu<3 z^HDH#&L33IfW$%d8K{l}l~tg!30zm2n}gRBgZj9jJ~b#Efcn+h!NLDQbuG+3ko_Qx z%m=ZN#nAcqeV}p|w1)|Fha@P>LFbKt)|`OO9S5}uKyd|1FQB#ns4N1d zbx>Lcm9wC75u_i~F9Pjb0Qn6x{trt3Apd~c2p}4SL1G{bYCnL=Qczfc)(e2z%%HG= z)!`s_f!q(`gV>-tA0!WAgD~j+4v@W|G9OgeXN87>_gRAUfa-rxScAtB!ovQ8*4BXd zpnL|(|M6a4;P?W?%P1ZkZ2)lp-`xB^XiNw+uMVnPLG?bUtOe1axCV)V>SAmd)Sd+G z^90Qofzlwz3{X27l;%KX2e|%+uI~$Xc1E-XpkgpHk?jDnK^P_nqCxHfxfN9ZgVG+T z{s;B-Kz4%qbf9{N+VwxEo(A>#OJiffWd+C{P+biYrzQrO32I}2!VHvmKzV(z*Z-jQ z7OXBtp^@(Uh4rC9bN`_F8&v*~gF)c}ifhoAHK;5Eg$<|=3n~vmWhQ7Xh@-JFcx@ld ze2^Z{+G9|<0gdO+sHpf4s(V3o8z^mo+ygQbRF;D3#px9l;B^YP>d#>#4jMlwDfwTQ znhHMSA5`~)?g0Yf@`Qx{pzr}IP690HR?S#0Oy*A4Y@3 zU>GEZiw%brtdI6OyAoU>oKp12fHX0-b!yq*v4B~@m5XQy^iGeVv{|s^;NFAu&2Bk$%zXFs- zLE#R0rEd6?SuRa5(Aa-pz#3E_z1{NAUA?&WDF7mVUQRod_Zjgkoll6 z1+@V{;R}-ou|atXG&TTQ{|9PcfYgHQ1^E>;W&?_&Q9SVVKPVl7(mW_#faaM%bvG!E zKxHNfRrtw3!lkQ+hc`Jl7`Dx*MsJy0JB zG+qE|Pk`3`(YntM3X8#nLGc3WM}q1a5C+vXpt%50TL8odVNe}Ju>Oah{|~AcKw%5R zAU+5q^FeHo7z~5>APnMzXb=XmK^VjaVHg`k!|F{?nFXplKr{$rumb|Xa}A)nAGB^B z)b<38|A6Z}bMyb8G72KITwg5qox4}AR(iUUxe8dP3_;s#d#gW?q220$8<2c;iu7+goYy8Z`^ z0f6!us7(pVV<0m@Y>>I2aUak)6{t)GnG0$&U^5Gw7}$L1SOMs4Hqe+qXsiL`)(96D z@Z25fyb91b87Pl{>QicAP`wN?3snDuXc!;FrX~iN3u+^Q@*`->40M(oNDP#h2O|c# z4b=Ar)vYKPx*h=3M+en+pn4TFt_kXggUVk}njjT}#`HmD2FN^6SqCcfKxHIo-w9}} z-^bP#e4aXJZV^!AH?pnL@?i$LQTpz&x>n;tag4obtIb3;Mp5-5Fw$|g`<2C^4~ zVeUd^!^A)|41?rB7?}@ZBa6ZLK|$d33X%ia2U^2a9vk}~Vl)%(ch4yY{v%8Q_W3P=vrHU_oDL3eI~#tJ|flwUydAoD?a5!99d&C7$@1faG6 zs2u>Rn?damP#q4M{{Xoagh6fu(I5+5@E( zP`eK_<^x*$2&z*-bth;X3)DXawGBc2VDR{Ma4>j%2*^B`x!Bk+IdmGN7KCBqAT|iY z_@MSIsLTTS1(cRSYZ5`_3@B}b{0i#3!`umSE2u3C5(DKsP?`p%VUXM5I4kQvSS%~+ zKd9UQiG$RF%mkf@0csb3@(w5;fiQTSASdU4ZAuEbEdrWD1(n&LZ~)cYp!yr+RuBfc z8-!tO5Dmg0F;E)-R6c{k7dCbRk^_Yy$Q%#`o%;bAg8{X_K=Toxy*c1G8$AaA9QFel z7NGP8TCWevE1-Tls80>5hv5BxT>Jl#+618Z2bH-X8dSc5`sSdt1TqtpE52RpFeGQ6lkbR)K9MpdSm6M<}1sZpZ_w)q!l|bVqpz$V9-yhT; z0hQ;Vx)M}wg8TfYrr^2I!ib3fpz#Bc+Xe!I+ytuMLG?Nu7Zv>njZc8W44DS8VHhR{ z<`)-(_lAM=gUo_qQvE}<`X4m@k97YZs7?Tt|1b>WgJ>8A$)U4hVjvoXVe+6l5>!5d z$|(>=XM^~l@c~et0qFykAE5daIh}#h3uxUisBaCbQ$ckpsBHsUUk6$T3hFn2+6J75?l4&sB@AR2^0Y-Efq24jQV401cD&kP!;0Ns%b8q)%eMS#j< zP(2KqivhV8G*1DdL3?OGbw4N#gUUKkIRwfZ#9)wGIL^-g56UCR<949D0xC~I;RY(3 zLG?Ch{vPBHkegu`#D`&!7-+lz6jq@21L$5XP<(;f4j?r!GeGTskbgn>6O>Ouc^K6G z0r`Iv5BxX)D84~$GtihRsH_I%Ay8TX^}9ecNFH7XL+gEz8kiWI4H^UR@Br`22jxLf zz5}Hvkl7#%se2~@qu(k-uy`Vk?y!-&w{V<%L z53Zj;^%1E42l)%sK7*wNP{R&W+ zf$RY7p#s?p8t(*+@q*F>NIj?x0V?M~=78ksjY0K3sJ;f*-)QwcSPWFBgT&EkWHAsM zgkfrmiok0b!TMq1AUPxqYa4)R=w3jW-)UL@gUWso2GtMf7+D;|24RpI5Dmg0HVA{* zpgIGT7ho7v|HCj$45SV;z60We`URkJ29&-)@eaeF@y+Ulg#Vzu^`N{A!l1ez)CK^p z{{zJh=qzARp9NHpfy@Ne%ODzrVeSF3K^VqIrjgkoH82bkhhdl)j0U+Gv|k=n7lO)5 z(B4!~+69eEfa*!m7$@l55m229>Su#6s9y~#i$L+%h14ejjNBYm5(6* zf@si~CMXYq@)+ohY*79N_02$Sb?gImrDmH>1-aIZ*h6=H5WUd$zjEyeS_}q|3PUKR0qJ^ z3tH<6YI}mx7^uGqO4C#s1IWz$56Tmub!VWqH;4@~8ySQ09B3UC=sX$_8(EH6HppC1 z+XYnifG{XefXV?-TOTAh*f7YS@csj+-Usdf2Vu~ezlDV;Yv@5^^Pq86SUMnv2F*o+ z>V8oB0#r|d!UiL6Sgw*DWq{~lBifH0_jfYBf}Aq-Osqmk8v>UvOK z0MRfE;)5~t&Kywv1S)Sp?LSZ%07_q=Gy&p+${h;x0o0cP*$=Aw zLGcBuQ$cklXx<9sCeV645C*9MrF+m=0VobZc?4FEgYqQ|gYp3kgU0(oegvg`5F1oh zf%@#AetAc3E_fd;NG+@l0Lo*aHUKF6K;ZzwFu%ZPWIut-0@d@N@k@}KL36#ZwhBlb zRR4o$(AYmHen9<6P`rTrKZ*yo{s*N$PA-4AMif$|vWOjuBR z9c1R9!?3Y`P~DG)L1h=HoB?6bdSp;~0+q+0d`}Dp)!U%711iTrbM&CP9~3SianKr4 zP(KFLmjli9gVGeJtO12HsBaHiCk+z^_4z<;f{BHN|3T#>$UU^gusR=9&LY?O;CdIS zJ_hqabuhXZhz}A6VGtXJL3|KK=3`@n#6apm7{mr)WHyM8ghB2EwP`{7{XqNvVHi~B zgW3aNoRIJzSKSX12iO15@qbX71=R`2G>i=shw(u)48!C=Gzf#lK{RsTA5=!c>Iu-? zIH*4isxv`qLGcVKyFh6Rl+Hlu1XLz~_UnS`dr-X(S_==V>p^}3ojgCQbU>p$eALIv+pFsWr?E?Ub zgZu$%2Y}lC?KwIBL1`J}ACSLLu(>%{4%9CJxgC_xKzRTigUS$4x&);;P#XwTkAuty zt-%B38&Ez1_5DG44OG^FXpniJb%vnw6=XN4%mvluAisdz2%9%SKBx^2+S3FouR(bhG>$h~{|{`v4@!F=49Z)e`~n(p0<|ka^$)1t1=X`~ z464_m7$gTu6EGUY#=xL{I_SPWXJ_zUKTtaWls`f74yvm`m4D$Dymk#|N1U%F7`Cfc7ha${tX=16=>-mx1D*7!2y)gXTU#`atvjpt=auegu`tpfUv1j|asssGJ0) zSJ2*KP}v6(2bCuvyFh9|Wf91Yp!5Ae?f|)mmKfw`P`d|)LFFw92GzqL46A=(Y#0p_ zN2XzNAR2^Wav(McgZMBSoeko{Fh~sugZM}^C~QFWKd9Xas{286&0se4JV1~bh);0+ zAGH35)d?UPgh6!y48!;!8X1G+vGGCTpmGTrgX&38c?GIhKz(D-cyoZA9eD2#sBQ#} z8G+ImsQd!;Z$W7Y)VHrsPW}&C?+!{!pn4yML3tJ=4r(8O(gtWA8)ObB{lxqDfa`yd zJ3tuSjW96~4Z_Is80^46@LohveGl>v%pah0e?k5MrCU&2CqFFgKd7w?>MMcf-9dFT zs2&B?mmq&3V~`lgzo2$8D6NC)ZBTjx)%Tz>0=5PRR1SjLKA`pmXsi@ezJS)lfb@Xo zLO^49AoU>qAPg$+K;;=IJV50g$St5Y5ok>fs2&IT6@)>4gwY^27zYOa2d(u7KTyVNAbY70YK>w)D{Glv!HkZ=xl8q_`j^)*0jba`Uq|yiG$(-)E)rM z1%So`K>BEjL3KZAA~{W4D1}$Nkv8fLG%Bhc>qw@fcyk%H-OqIAU}irfKG$L z4CFtMn?U6~C=5XJf1vsw)D{4Z|APDhY6pPg6eJIdvr#;7?Ep}Gf!1S!>K;(}i(LPM z>S|D40L|%x>RFt1GPG>~QUk}(emaN`N)Mp)2Q~}Z&j*R4W0?6c8eJa72g!rlm!NzC zO5dP128a)`2Q&r%N^hWi07~1$)W5jYfbt5c9RaG3LFpZoN07|~u|fF`bpIBpd;zg> znT1arl<#2mKgcXl*#)u-WFAOvFkz6pVC^eV*nlvo?gwE|{})sSf$C*Y{SR832g>iD z@(UjZm1Cgs9MCx|png9nEJ5WvC~iSv3^F%0Fz`R9&jX5k&{{xH8v)c-0IgF3)%~D4 z0W`)5s*6E&Kgb=l!l1ey^Q!|Goc8%Be~L2M8P zu|XJ_4dR0^OpFi>Qj3n!^q|!Lpgunq3~Ij-tp7p%f9RfjP<;Txpu7UZAU+6#_%IsA z#>NMUf$9TL-2lQMHmI%u*De13|3Pz2I0pn4G`4=P7t?ghCS zv>y>92CFYY^*juN>V1$nXdfJC%^#>-1oc}$dze6VHOMWXvn)Y=1D)#+qCsgNRK9`A zJWv>b%2SXy?4ApdIiR*LXwD0?-ww7$3Z%x)&=7o|J1DJ!{0qvfpfUxNw?O$BhGAl$ zau1ZYLFz#6ax^gk-=hf{mjL+}v}O^6LH-7Z0d$N5#0JF!D35~N3mS6()%&3G7}O2` zmC>N^1+~*bWdkUDz+r{fP8t=XUwZ%)2cWp{wYCP&DS_IOp!fsT{V)vT!|GlTjm`&& zfiQ|Vw4V-&b5NQFrCZQ>)1Ywy5C*9QVURu;M(4xCVKlNlD9?cMJ!m`&RQ7`~Xr2L7 z7l7&n(3%)fdIzOte048AIgnmZTN!jG2dIq!Y8!*jidH*^v+sPKMGX;fyx)qy?mfORiJnP z<#$lIiVMT!LFbf#&gucx;h=gS)FuVBe?Z|6YLkNWgZhOaF_1b?`3{PI(3&XFdRniU4C8}n5Qd4P)5vnjY<%jF zzI+9@h59wj2%0ICN-Y!C*qVHm^* zVPrmx4WmJE3@ZO&bt$aw2g!r_C!llyOEaLl4OGW~=FUKEK~Vh<%7^InKCBG@qd{{4 zAisgqENHv{l|W6dJB}UKy@{8JrA-UhCy{8sN96P5k!OdFu#H7cToEQWCmzW zGDtnBi~!Zqps`BO96ZPlkiDR`49HGUeGkH*@eEMi4yq$T^*pG|1C4Ki+6$n%71S32 zt%(8cbpe&tpgaaL1LSs)9#Go_G%gA%2OXg2VS~nZL4F6-=b$nLRIY)_7f@ctilKW3 zKxr8imZ0(*6y~sb08ku(!UE=BWEzwgLE#4S1E{?M3JXx(55ge7gUkW-H9`3s6lS2f z9>w&l@6p2=ly*UR3{*dZ(hVq0fzlkP{YXmv57Gm|pt>4HgX&~ZT@Ok>ptOmt{)edr z>BEI#YCtpygVcfC1}YCg<76NCjYU9zCG04l3s7*vLX$^}q=8C2eY!WvYDfa+6F zIDpa*C|p2&8ju=LzaJDvpfUthK7z_ZkT}RrP}>7!28gCM2AKU_{RKtclePC!sN6IK61_y2?P90-Hz1`vj^k!fsfkXjH1)p4-$2~;kD*r56Ybk;m5 zpM&a2P`Ux7DG(dfP6X9YpnM9-f1r9D#0RwjU>H>Iq2Pps{~&ds_5!G#4Kf2%SAxt1 zVUW3?v;}e}XuKQbE>Qgq;)CivFb)ia+;;=L-w@N(7nYVb3uLq(V(^j$ZU|iKA>SyB{{|Bi9#WjpZX2a@#P`(1q`GCxW$-~scXplGz zBa4C9Fbt9hu|YJ*EKt4yxf{d=xf#?K0NDk~TcG>^nj;3~8BqBEO7o;*kUmgf544sT zR0o0j3ZOgzGY7QS0MsS`*$XOvs8Roe%3@Ic0m_?$t?mc82jnhz{STV^&&vbfy8tSa zV0A92js}$zpu7&o=H~xFbAO<61iAhP$${qg!Q-%{rQq|GK;<&1pAD*OL3IG=ObSq0 z4yxZl;-K&WnFT68K=Ztyu>jC~14s^pVQ!!n4Kfo{27=N7xZcmr{SPXOLG40Noe#qx zIS?CEE`#b;Pl7AUlc0p!5X_A5a?&6rL~)S_25e zuyFuT{STV^#f6dA|AWeX5C+u&APi%}XqXr>A0`H)LFEuK2GzSD^`JBWN-Ho7s-r>W z5-2}{(j%x12&&Uz^*kuOfG~&;qCptM24RpoP@M|Gp!G>krluHoMuFC_gZf0Ex)bC! z5C*vehCy{a2!rZCP#p$Zn*gfYK;;mq{|zdWKy@6Q80A;AJl&X&B=rM>LBw#YCvX#Xj~Xs9>#{zFg+l%Ky7zWyBZ`1 z%FCc}HBg%xl*T}9V36BEfGLKx@uH{UA_z3Cc$>{h<0DR0e_C zO`!2;&{{#594RztOaV0R4{Bq8%3n~v2IWgo9vo~KPQ#Kd8I` z-$I$i*Xnh4}odc*{1PUL}+y{sc#-*j;J&z!DFbq-; ziW?9Hshv??{=Ydh^FL_K1*rZ6^)*4bDk%wkrXr{x4QdyF>MT;~e^A_jFsNQYr(t3s zaTtb)f$CCF+=4Ku-3RJJgVccL_h4xTMuW-}&>9&~dI8lY(}z)E@_>MHmLz0ji%s^*M6=4|boQ-+$0tDX8rUDt|!jeo$QxO2;5QATvN^ z9jF`yiG$=p^(AOLyeK;QKPWsw{RB`w3`*yqd;^aE;$rYwP9QcYU4z;Hpgac36QKML z%5$K0F=)*`2!q-Rpm{RT`aaP7DyZ%U-)m@U`X5vtg60}PYh*y_7-SFVOhHgsfy^NV zgY&vMuXxD+$IPL`VX4_0IeMWmB*lZ9yFc-ic^q& zP#A;a5ERd#_#VXrSMS5Z9+Xx=aRaJfk?Vg@I)~N&AURwZR0qT4z-(y!4@#dPb3x|A z$N!;g072?N7^V-M#wG_71J&&yHYmM=+Pa{82I7O}gF*QahC%aW{l&%Lz9lRlfYLQF z7*zj*<_JM)8I;FBbrPtqhUo?6Pf$4t%KMW`fQ^1&!%|%1uzc2CEOLL4(RlFb37bPz>tJ zgWLx4C&&$83|;d8W+T`CP;ro2P&tmZ4FED1G;R;0LF}R;NdLX0??@!TKM|`TwB$0E9vH0SLp`FdA75#s;mI1C>Rf zIssH)fW$#_kf8Jf!l3j5y2l4p9)a2`p!yKxP7nsU6I928Xb=Xm;TWks1IoW3y`VGo zz;(Zw8A{(DWDf{~>;lzKAUA>PdQiCnD!)ME-{|EFsB8m`v%~r~AU}Zm#~^os;saEF zg7OL|&OqrFgh6=*6n`KLiU*JyP?`s&anQIsI4(0X{)6gpP~3sy66AK!UPcfN>Pv&# z*C4lo>SPcGl|djkg7(D1(jdrekXfMg0X9E7`#;DoPv!|!`Ps<6R52Oau=u$0HrU`S_n|N0198wI0-1MM)APc{h&Ai z#Rn*^Kz(XhT?(pWLHP~6{s-j;5Qf#)$ZVJxDF1-cC@Ahh=?2sm1lRxA_6k7T10cOv z&4S9K%YoV{pz$Tp7&53X0r5d>SeqV{&Ol?upz;n>kHhi;C`}WKLFGTFO$#y$bVnCB z??Bhbfbth8zk%{0=feLvG*Gz*3Ii~Pj!lB>0F{}b zvJ%vH0JXC~;R^~IaCur#0AFtavX@*8u5&^CFHoHf!qC1q$R1GKgZv4`(E1%@HynfN zf0#Ik4IKjjxf>KNpmrRXhMEg96NEwHV0)o;J*b{XuH!-FEy!-rcoHZ~Ky?7f|DgIA zR9}P2UQizlG^PSd^Ps#2!l1kh%EurK8VdvGTj<_hP~HONMQ}cJcmEI43(6~?Iu$hT z1ggKl`rO?9gW?D@rVWZ8g7rUW{Xca6A5`|kFsLp7VPrlwHb@NAF9elAAPlPiLHo`U zy}jZ0h=I}&s2>Tci$V1_s0{-O4-f{`OIUG2!hcX+0@arwJs=vS4rB%>{ejE`(bzCZ z4py&&>;^)3j5 z;uDmoL1`Y8$3bNis4WAk>p^WakU5~Sjq2p&{~-T?+z$3fa`Jyr83PI{P@f01ZU*E| zko!S(D(K7tkUEf^pnL+Z-;u}qv$Fn!_WObI703;sd`t`mxe?@UkeQ$~1`Z1|v;Q$( zUjISk51{yi#WRQoVUQRoje_uI zWd|rNf##<`^R%G47F7R(F|_^#l_4N;5DmlVe3&>Wtzgvupu2>S%z~>$6GJx>nGa_} z_ZNch$pE!4K;ocw3y2TOry#$8FsQu>>Q8{mT~OKw_Ep*qjz<{2!F}VREFhI2@()xmfoM>@ z2F6Nm=!L4E?+0g7*My_T5xAJi5EwK+lkR8YDG)y<%K z2NZ6gv<<40K=l)d4@xtjxhar5s2>Vy4};W$_L70>dQjMb&c*tQD0o9$L_ym<_p!fs14^)?e`uw1J80?OM0&xEx)V2WI2W?A(_@F!s!l3;FpfCcp zt3iBFxKDMukHJEN$_bFaKxF}_{|c(ZkTIxU1J(1Oum_b9uoB))#o7pf#M5AU%}S{~)tKW`OEtIEK!*gX(LL|3GCs z97F4MP@4cO2I7M-sP0Fmp=^+TnE4>PU||GegUv4}_z!Bwfa)z!yo37NpmYqnqYhM` zgVGu({6Ognly*V&Iw=2u&OZj#kD$2}P=5-vb^=tMgX$!ZIpDH4DCj?^9tD-HptdOp zgY<#g#-MvLKx<|}Z2?fdW}>P2Uq?mdzpjc3nATBN{tv?1%F6$>m6X63qz+UjV8ihB zf6)DZAp4OqtR4V~A+tez7zVY?L3KNb29-siF$d5%A*hZ6g#jo$K>h`#1yEfGt{W2* z|AWE~8H4g4h!2|c0QILqG^qXo*N@@h;4}C@=@A`++Cv}=3Tu#EpnfSRtU&Go)w!U$ z88qJxig!@@1*I2IeGjVZLHQk=CZY3IAT|ht&h7=JX;3)>ngamU^`N>OxvmGTu>|=A zjG=oHK=nVeA3*v*d+tHyCTN@n6ds`T0P+(k%s}%tAUi;54dgzMouIlNluzL}D+}Bv z0J#gaE*}*Cp!H0k@C2o2kT_T$Qhg8C3l#&&gUULPUqEFPC=5Yv0hO~LGePYDQ2fF$ zC~iS)Q22w~2?}3O+=9|9C_RDFHz=$@=^i9LiU+<80P3%U)~tipy-FGD2;&9ET|m_G7nuJiXLcN044^aK^R>Rj1Q6nxf9eD1@%)v zY><0FZFSJNKgd6zv~rrS)G=RTYdu z{eFElwf|rY6$8nE@)fqaA0!5^|DogmAU7jpSUms|1F=CEnGH%8=w&}>tsE%MLFoqM z2hiFZP+WlOPtf=`sD4DopnL~v+k?bF^(Cl%32G04$_CJyIFK2jd<82DK>i1bfyNX- z_JHbAP`Lp*cN^3{1+_6i_JPv|Xx^r{7@XcgVxasEiU&{{1z}Kn1*KcCSXLJJ-f_@+ zRgf8=x*p^vklR3YJgDpd(J%~lcVZ%Btz}~3f6%%XkRL&16i7d4Jus*p0*W^f2Dukh zeuCy3L3V)BF=$OFD6N6q0LnukH(|q|Gzqd7)Q$$Vxk2qlP&)t=PM|yq(t}SwNFLO# z0JUpD?IKX03KWi@Gz)59g4&+Q@roSJpf&&~4T0(ukiDR`Cn#<~bpmJ(3O)Wu`SfoK zfcguddJ~*4tgQZn(ix~94H5&fL3s&O|0CDCU@>TY4HE~^$l@R~K=}()9)ZL`W+9sc zQjd;7>d?h-@}X@EP(B9j_XG7CKx#qufbtG#o(_~wK^T-~LG1!iUI67~P~8Jc^SCgm zt^wtDP@5Ojz5tcYpmGLE#3<-=MJqT;|~u2bDFTavanr2AL1a(;)RA zI|dsDl?9;s6I8#UV^CcOia${P28B7O{sEN{pm7tB9H{&Nl|i7r#Gv*Ws7?geX`p+K zp?xTj`Ji?LsD1<0QJ^&!AbUXd9;gh$Wj9C-J`A!S6wV+FG6Ph8g4iG$ELU6%-p2@X z4+w+O2so{P`uHFWt>?jFNNkW=Q2Px;gW4$|H-PGWSR8`Nc~Bn?RQ`e5JfO4!@)s!G zfX3B8{iA~LaPZu2b6OgB9XQDUAag(%WFM$b1NHSlWg{qjL3KQ+J_FSYAPfp?WDK^$ z((*qjJ%Q3K$SzRZ0MxbsqGae~>y*JRpZHs6GeP@gNL} zTM!1tJqUx?ps^cJngz8tK=nV!Z=mu4f)PURs zs`EkfVxTe=l(#``c~D;nM1%YUDz`xS2!ugp04SY;@;NAPgVH`I?_k5Ad<9DHpnMG~ zk3jhlRL+3vXOMbOUIeYD2DM{Bc7yT-s6GS95sN`~fcDma$`jBS1IR2;zJt{r;QR}! z8wUvnxebItH{2P#q77b7TxELqX!8x*rtYptcFf zd{CT&%1Jmzulu2E{9tN9{(`v!WEaS0W2B-`Il|7(3AH)XrBSHBZw00Df-$3C6>I;M11F9=wbtkA! z1+6BO2<@BoDisD1;bMNqv1>Su!1>4EA#P#p`3J5awD)LsL{0VvIZ z;vbYgLFED{kAuPogh6Q%M1$fLq!;8K(3lL|J@N67`-Nb1LISu?4{|Fy2E{AP?I3eN zZ4Z!{p!fmBHz=+_aSOsAzku3FptcVvEyCOh$_pSjf!qV4L2d)bDXffu*7qPkfX*iY z#Wl!JAa$U21gNZnr6$p0YqgxUZgyFuoG_FI9*R6*_pg)u12fyQaj;~c~X z?E?UVJFt|KR%H-5orx08@iZW9UU{2f)-JtAUAu(h_Kl0#w(7>P}Ey1L|ji#6cM3 zb`S=&0bu1NDD8vhp+My>C_RJn5G*f&*f0z#he2fms0|M)Q$THIP+kPpS0MEu8kBEA za-cjwYW)v019WE&C=Y`26DXWO`E*c^|7T}|`>3!w3r2(1u!Hh3sO$x$ArJN}8s!R1$07FZtCwgA-$pl}71?I1Ovx*wzt#D>{Nhz7+k z2!rZ;kUmgd4`RbHbj%-Au7cbL!k}^%UjM`DeGrXY=jZ2x$Adv*udseP$o-(Q9W59sdW_^Pn;xM8hzM54yVn6sIU+{{G-~3ZOIts{cXtA1EJy{0Q0jjQkI3ql4-;P`rZX{y=pd zhz9XN`5(L{9<=5pI~%e`7-@YTsJ##B+k@-_)#V`jLGA(d@j)0A=U|LwJpxEQ41@H+ z)Pv$06i*-;VU##^pNF5Re^?yKV12p~*s)s=sq!)xi`e7Kx2hlK$ zO%5amlZVr;uKz)GKB$fdwE;kF0hl^a`w}DvatG*s15jE8VNl-!lpjH7)_}?bP+tsG zAA{0A41@TfJ_4v;0ZOZ&^{Sw9092NMC6pz;+| z4}#JvsGJ1VXP~)XQ2)FsH5I&<3zT+2^#jZfko!Ow6mGEfkuVw*w#XQyu0Aadd?pRZ zOi&*ihCy{K2!qGNzBwq|KSIve1GRaAot?q=|AOj%P&xzE zH6U@28cU zCWGWbWicp@L3%-B9H6!z$nT?g;MxG7ya?*=gX(`!A2h(x5!_b?)z_eW1&TX(eM`dr zeNbG3+M1wr4l)abLH%-MvtVqP9q2Sn9!A6DL3}V9I?e!U$AZdFP&o{@2h?T(wGTW! z!Q)P#_BANIg3=zyU7#^iP#F&@KSB5Ufbu3NpTXJ#pmGD$J_nV@f%f+QLHP%iPe5uw zXu*#Hs)`3+Qdfy!r4 zT?QHh1*I2IIRpy_P<(*OLy&!hFvxA7F$7TfVqoZcE>JxPvI`XVU<|7BK^R)^gUUk? zhPeskM-T?ZJ*Z3tjbp;{40vogBm_Kv5AqAhogjNb>OtWGI%f~mW&n*XgVGOZtQ}O= zf%-$B_9`eWKTVDQjfH^fd5~YRVUQeXjs(7^DszgX&mh zF=Rf-9MBp7P#y=_3vxH8Jp=MHs7(d(E9jhI5Fexlx5C)Yqp!N+&z9lOQe5MnqZvt`)*zKUX2qgD|+yWX)0l5cM=Yz@_P+19@a|E@! zLG2=tSs;7x;;bz28W~Xdf!c$h@dHpCfa-Hlc?_!GLHQaK{~#KSgM$8p`u(7G2dM1_ z+KU28^B@dz3uyfyw)8P7M!)s|sH_2vJ%akNpf~~LMNk<8>r2DxSx_89?|d>E__x(^UE9tv_lZ0rJN4`@6Vqz=>;0jUAa zLxK7Wpnbp~cY*pJpmsB;oCM_qP+kR<5up4A%Cn%b0F76J##}+;xS)Iqs*gbR188m) zmi|F)Y)~Es}i2fK%}uKx>*oVxaN@R7QZq0ou+1nFA^(K=Pol1l8jp zzk}=qg$XErknP3B2B`tn?I3eOG#G=<^MReQ2d)1>eL_(Df&2o-pgukb=jMXTH&Fcn zvL95xg3JKbJD@rW)D{GlW1zAL)OQE<|3UEyG6UpCP#+(JLG}I2%1ZDZdmz0a|A5*- zpfCcpZ9smsH#7vV%LkRCptK39FG2l#xS4r*;CU91pFr*awIx6_2xId*x){j)AidzQ z0EGd_?;skALF#eV|Iju7sNV`|CxhIG4a58Y(D{E*oPscDydM-sAPlPK(P@wvsNV-t z3u=Rd{0~Yyp!5%_t3Y7}qCxd3hz7X>ynZ1&`#)&?D5&lN%`1W0N1(I^@+T<#L2V>Z zyn^aTPjVwN96h*T-U?uNl;x0#UMLD^(Z>VCJqyW(J(!r_7tcd2HD+_ zn+vX=LE}WA{w}D_1o;(|9zgXmC~bqu3PVsk02J1sau1ZxKw(A*gWLcr zyFhDNK>h&bb&#JxbH<>y94Jmf^*)RSjpKpx4k*q+@}O}7Q2Gby1GRraYXd;(V-(Y` zzDEyhQ2h_;|AXpJP?`YMN1*x>R%e6ODWliJU^Pf%{UCXCF;Kn+^=Ck13LvvU7^Dsz zqw537V-o|3LpmYpM|DduPRQ7=KCMYkVV~{uq zgUkoj7oheQ$Xrl=7sLjI5vYs>nE`SKD4&DMg8{{$HTfV6Dumzo($!Kd9de zDjz|0Fvtv$I$Ri52Y~7Uka{qN)^#8@sJ{y`7Zk6cFb2gR2!qTAVUWK-W`OE%kR71% z7}Q?}t$_pO4^TM;D#JnLDyWPE^)12Xg3ji2-^K2Z4#G7pp{z-}lh`40+H5C+xtAPjO3sTkxoa9F^?0F4HP2e|$R z_4z>;^N44MlAwZ%bU0t!D62GwhzJ}M~Bf$|Bci~{wUL3s(}M^Ko7+5jLvs7?gM z8K`d$s_#K@1u_GKLFRz#d{{jX9m5CN1yV-|2AKiJ2?_r};R?#PAoqa$2%3j6v{{YqFAisg!3i1;;o}g_Q zko_QWbPN**g$HPE1T+>8nok0?!9i{Tl{2951Gxv34hdmU+6Ikffy#1F`2~tQP<{sW z^FZ}GC|;54f6%-R$iJYx1Bzcz`xz7tAbp@Q98kUjrH4^Gfb~Cg{vVXLe5|bggZllT z_yv_yFdCFr@L`Zz6nSX>A2gl-s@p*IF1Sv{(Plu_kIV*{iOvU!!7x}3WS6Jse^4JC zl&(PQfk5p6P#XrM4yFb~gZu+>3#dK^mCK+s49W|jaRE^O6O_I|c@k6?fXXw_8d;DU zkeRUhACy->>Okool=ea61E72b5(AY(AbE5QYEyvP*`Rs_R4#(*OHh9h)E)+nOMu)0 z%0nP|P(20G56X+6a%7+|xa@(JL!dGkBKQCWr>L6+q(_APjORs4oR-FM!H8P(2SC;|2K@G`0h(=Rkf2mE)i^0smnWL&2c%0F42FFzBx4;$m<;1&SXqhP45p?Evsv06gRW;QHUe z;eSnb_J7b?4p5qgmEj;ZI!2ZQuN4al`VY#Rp!pzBUI2wPD9wY$!a;R4s2&5=aiBUB zRCj^e?x1o6q!*MALGcJu52_DQ`t{KI9b^V59zkt*5F2C`$V_|~R#&2{!6gn-2a*Gw zM+l-p=@c|Z2y!#%Y)epi1B!o89|JU=3RfeLT7It+7-{%1n+TRiKs2cQ0rzLk&B15ggX%U=y#mT3 zAbA)DmGz*0EJ!`5j|bZ03`+l?u};uAFQ9M%g%zm&2hGQU$^}q8266+)EKr?0P#CmE z3T8K`{s;L1x&8swRiOF|Tip*T8$j_6DhomNB`9n_d;UP>4k%1PkATvSzeUKO^d_Z9U>d%A5cR~IJmG_{2 zKd5g5>f?jTW{^6toh2pz!S#Jv8TgJqP}>AtPlM(tpm!*N%q10r+ypZR_taL0#1b|A~6^I>u@aTpC3hmIkD>V43-1BeFA3xUc~P<{rLr=a`| zN&}#F0Vw`K`5TlDLG>yqPl3`GN5f#MKk9>~9- z_y(=b0L3q;?g!zVkdXhN`~>R%gTe;X&IjoO=>dfgC~iUeK<*pG^soCtVGe2+g4Sh# z;sZ1W0IK&v{bvvjsw*+-QKUXRNDhQS`5A=aY*3%v-5q@PJE$H2LE~F zfZR3!wOc`HACx~peN#}K0cz8N%6d@U1a3A`3bK3OG~ld z`2()kVEtPV4Z^TB{)L6$v;0A3!RmdGdq8dniGj*bP}u}(_kr4GpuQC-&Om#vK=A;o zpF#cxxeG*t+ySCNZUn_YD2;)}u0icb(0UTkSPsZVHji=NS+)FG7}sQP=6!yLEgF(2bJM43@cMW^#BNi#6j%Sn}OmUG>;8xBZJ%m zs+zpCn(3l0N zy$DJ}pmqwVZ3M~}p!Er$G!4r8pmYvOf1rE>N?)Mz0kq~ARR4l8bes()4{A?<%m?`u z)J_A1Ate%j z2e}WFXF+8TDBO|dKxGuD%?s))g7P`YJWw70wF5!zdQhB$Fetu3c?-Gz2Za%6?iHj5 zY#(?q*NE}%&oDCW?aB~CqJwRfh zF$0j_L1U4iwg9M(2AKoGpt2n_#tF&`pnL(V|3P#9pfn8915yvlo1nZ5R+E_tKF1zZ z2Y~VmsC)pK531)t?t<6-pzv^a{}0j+ayzJ=0o4nz{06cU9fRaRVjvoZVSE@369>`Q z#6aT2Vo*N?R2G2h3|QR+s>?ur1-Tm(M(7w+E`Y`wL3V)FH-Tu-S`b+M4;m+*URL%W zR5pR;#X)r`=zc&@IRq*vLH2;k3Q(UKGVJX8jX`s>pfU&4)&rH5Aa!6hrKSHtaR6$AfXZ%=x!`)gun@dg3{=K} z%2H4n2AUrN#T&>R&^Rz?d=%tH&^iFHo1twMka=Kt78QZl^}*O6agg~SKG<#?V*sGG z5-7|;?f{t!YEQs0$S!0I69pf)Wi zFM-N9PSY<2G7TU;s%tC zLHQQcF9p?Ap!yNH9tHD3^%hdS4H5%kkX|qb_5VFQz-Rw}(h0~M5C+M?)PZOa28qEi zIv*yEjfSZO)1ZBR9vR{~KgKsI3616F_+pl>b09HVn$2$l~aHbUBbbsTgcV zP7e576p&wF^#-Wi0M#j=ybkg^D2&iCNF20A8&v**>NZf@2s9o53Rh5Af%-L|@C4NX zpgtg|odl|DL2V6?`Jj3M)K37_0U*0TbtFg}8H4J6kT}SE5DhvT734-x_<`IDDuY4c z50VF|1@S?38)%&esC)vIO&~tVjiCAwqz2?B(Aq7(j1C_a;x#vJfM{wEz zwR=Eu3EEc;>H~t}4OG{H>Rzx}&^8Fj43K+3Zh&DB9|J?xgY<$h$j>0NU>H>YgUkZ? z3*;wQy#Y!ip!sl+8$e|}sDBJ9n?W?F-T* z;SK6ng8T_;*MizNpnCv8`)NS^Sr7)b6P{SPX;LFG88%m-mmeFMr{p!0Y@`5)BY z1?5Rl`wxUc=XHb5xdEj~ko~aw4CEddhSgu7I0A`*_{bO}2Exc<$ZU`t2qTNZ*f4Qi zG`czzep1qZP{sHwBKxGEVpP)DcGL1PJ^{T8770BQrk!V4r1!!W;q_#ieYEn4ss(l49XKAb3pk7WERNXAU}Zo0@4S{&!BT%K=~Y$_d#R&puMo5 zG6AFqghA;5)NTP`P+kLt7f2jd#)9;L+J>OCGl~bM?gxcCDBptCVZg`#k^04;G7eN% zq1U0<#6W7m;-I?K%?-Sc5LD)a;u}=Yf#!cfWdaz(>S3gI1XwSUILJH@#w8AtgJV#C z-rfB_s4fT19%L2iXT=!_^|$36cYegY?CEc>D*|S)j5VlutnQ6ex{?@(XCK zA1K{}@&%|o1?30OSSd&yNDZh=1ND1AYC!Ymp#CN(Z-df1$UUHZ0&)Xro&`jMvAg?! zP`H5X2bGbadJt4@fa);NnjBDm1NBKk^q|pt1zyM^OC_ zDvLn%6{t)DwXHyXJdoL-aZ!-{ps@9`u>s#hKe@CNJbn)Pv&hbV2zR)OH1>Cr~;9?bQLLWsn;|wi!> z2iXInL3s|;UI2v`C>?;}9aIK@*r0R*5(kf`<>Y|xxCezXD1Ct31EN6~#s<+K3=)H3 z5FdtNV%TVq8jv`MhG7sN8H2=;`7kyvanKkKDD8sc0~8jZHA0{`no&{lACwkA?SD}J z9b^tDeSqqDa6X3aqXDh!0i8JnYM+7Bfa+(E|3NeeBijpNgVGsDEl3X3egf5@p!5I| z2g!rXK&D}AkQ+eyK=BC*dr%n$3VTqw2udfQ`~d31fa-H>^*^W#1GO_iZ4^-114=KT zwj(ItgVHCc%?XNQSe%0Df6zDxXiN>120$28|AXp%c>Nz01>PqDN)Ir7p!y$_MnU;< z6c0=r02Kb9@&Z=>gX%VHsq4-x~FOCYns7^)wn z9vcR!hl%52gXEFrKzz`=I%quB)zlQc9{_GA9{a#%K*uXU;Q(?UD6fIs4NBLb@(RQU zm7$>g3@V#J^#v#&g2D`xuRv-*X&Kaq1<8T(G^lO|=Q|4v@cD4?em^W+k?Ma?9tDl> z!RiH2-UPJ)KxGIh-+?eF4<3}cyf}yklIsE-L+^8l)=L1u!&7F73w#*#th6sX(;=>^dsaZud|qCxd0xPArIr_j0;ROf=! zg6edT97qkQ+ydDHTBiweFR0!JtsMi|2WnS<)PdB4!WtB3AoD@t57Gx3%ZY&AT@CUd zXq*C6rh&?RkRDJQ2vlE#>TZxe5C-W5VUV9eW`k*HzaAtHY9oL!Ob zgS8C+s{d<1_y0iG^?}+Xp!fvEJqUxs4TM2$WLR4oBo1;vsQm@1UqEBiAV0$}sQv9}@mj_{xxyW|I_#hgDL1`G2?m%%4O2eQ$333Or9vB;> z9)v-9Ky^H5ogOGoKzR?8en9C36y~5j0LoXOG6EY0rA1J_0HsY(83bzAfXW1rI4G}x zXwcXYC_X`P48kC@L2YbMJ^^8H{T~_%UjGMb1Ay8tpmYs#3rru#O`!Y^3eQnIu=PKv zz5`)U{Rb)wK=l`>Ef4BbfXW(hJ&C6t1*w5!P<`s|{vWiq4wU~vWhv2hG1Lx1_94rI z*&sVTJpO~qOwb%YsC^1*$AJ6;cNf%b7$2+;IvxOGgZfgSaR3kvDyKkZfa)Sp{SFEn z&{`x=UIf(F2m9?s9g&xXF+XVPc8lxghgEaSHP{ zDDQ*XL7=b#u|XIl2kLu(`u?DB0`)sVVF3z9P?&+_Kz(XZnEVFVMo>MO_2A`V_T0aIVe?VabDtka}HBj3Oq#rc? z4J+3`G)N3&HmIBf)tR7l0P-IwPC#WYDEvWXA4mI`4!YR1J${p@)9&Y3reG)b}J~qfWi?pwgO5Ipg08i12nD*D$7CX z3xq-K6EKGM-$C^VsICX~@j)1*7UXV_-?PKQ{)6lR@j-PzC@w&4gtVZb|DZMiXpJ4H zO=h5~`d?Q?<-e7_{(sOs2dK>h>f>U?wzmI4eklA1is)NwX#A+5)4N-E?F$d6^Qc!&a>bryN0{H<%qqq@jE?5kv4^%Hh`{p43 zgD@yhgUVr0-45~xsQ(Ho!$5so(D*-S{124&L2@7rn%4w{AxI2FgXBSFILHkkKY;3c zFb4S_WS_e`c+CPRPk_{d>NU{5G*JEpR3129P?K7-+v1sNMtB|DbXJCJssypgILqhJwl#P#+1@P5{*j zp!K4ldJt3>gZe0-dKV-Qs%JrA12PXr!`QI40jMqqm3^S_0qv~>l{cVzA7npBKdAl( z)xRLKK{Tjd28o000o9ox_khw2sO<;}Q&8CpD(66IKz%$AjgDbl zdqMg^{XS6L3@Yb9Z9&jFNRU547&JEo3Xcfr{eYmd5>!`!#wkF3I1mQ))j@FqDmy`O z3aVQ`=^2z>KyC)jL4(pH$UIP+3S=fI?SU{TAAm4O3?v5{kAt->Kxbfr)Hs@${MS)d z{tp`O2c>h6TR?GYtf~3m3%T!aZ4F+h3R?dUYA=BL|GDw;|3P5}QV)t>d>CXuD4ap# zPar>nFer>^fkEj2W-c-tSqxnqoexqA5(Bvtj1v?8gX(@zA0CuOL3J`HzCmLupl}4m z4=AodeSJ`w3MyMc>jXgkZBSbtWERLwWDFAn(I5U zI4IwM#6cL8mf`VkVF7LjV$}a(Vc`BhNH3_Z4{8^H(j!bCsN4gUWw7u9h1n>kZ(9Hq z_MoyGl!ig&H>hj@)hnR-3RL!k`huW(62u45AdJig@j)0_45SYv1~L=0-WN0m1v3+5 zKC)UE8%BflA!C?0jE2d9_{bO}4&sB-IjBqpr7^I*9vH)K2RA8O0S?i4631(i9VvIkT~fcgiZasu4f0IefVOa%8IK;;5x zj1q)FYC(EHV~L=3V4yM?R91o3EP(6=jrW1dH&A{Bjq`!(1(5%d{Rv}(`s*M$&{{Z< zzd_*+k^}W`LGA~YA)qt{QU?+TVbItJXe<-tACNq#Tmg+cfb@dKu|ef3$X_4~ato+V z1z}J)fG}vhAEX9U=Ysg4vJh17gTfG`ALI{^dXO4WSoMJBNOE(*YxzLxLE<19G@lEK z15liS+yyE#LF>#xZ32+lAa%rGkX;}QYFmKn2T*wjN;{ys78G`%_yySkYWINb1D(YR zYTJS00u%=zeW0)c^(R4X4N$uQROf@*A)s^w3RhS?3+hLM+)4@t=>^#jatEm21{!BD z*3bag``XIN|1EWO;cHQB4GsV6sj2K#yf4is0gIt*NA;W%R-BnMIp!pLk8AB16IFd8I=j*;b%*~scZ;vftY1F=D4 z6Cey?gYpe1zku43pu7QU%Yw=QkUVI84yb$p^#?$C4`c>NEhuh5c?YByBnC1EM8hyT zA102E2IWVPJo5Mf$Q%#`xdkK#vKy3_L3KVT4T9Q}pnL@?gF$5#XsicRw}a9bhz4O$ z9z({U`3+DXACxyieF0Fu1)UiTN}r%M1E|aawI4ubA}GIt;vST~Ky6b{ng#hAgh71= zko_PGato+E4k`ygX%MClG$sg2;~??TdY``aJ}kUJVGl~fptt~)5uo}RRBwUmQczh1 ztN%gq4ZV6)NceUKPvtOBGSlqW!Tfa)4hJp!7W1NDbN z7*rpD`hcLZThO>JsQdxtFHo5SYPW&h2x>!s`huXb3J?Z`J!lRB9fRBm5(D+$Kx#l` zIVh|^VFOzG2x`-V%mdXqV70ck;5Ct;adeR1Kw$~;8z^jH7*sxh%mmf0Wy`ZuLl%7C!K1dH(y{#>HUjb+i9aOG>`oQ+#>4H5_ID=YgCDkDMd1yDH- zs+&OJ2kN7N+94owL2Uz2y98t(Xgmg_4;h2hfH25RP`e4VrvQ|`LE#GWJ19OueQi)2 zC;IvQ2enB+bpfcY1!~WL%*Se8Q4#naWY9P-$bF!`Jt$s5^))E$aAA-iK=}-YLH2{v zJ}7QMaR%CV4;l{!wKYKfQBeFELF<1|e1Q6ips=^l(E+y!K=S|~4C?=b%mK9lL2(P} z`-9pChH7g6^;A{=!|H#Ky|~;4+CK|QGobb+sBH?Wzd&^rG6vOQ$b1kRT@0NMQUk)+ z#6e;pj4Ti1gT!DMBnGNiL2(1BLqTo>r329X5h(A0(g~=|0%C*GHzi)LG4aZ{DRB?)tMl3K^UYKW+#XS@kzxXw}IOAAUi*S z2{H?056FBlMjnGlV#Ccs5`)=?PY$LAWDn@xACO-_egf5LaC>29VypYz-NE%WC|!fx z2ckh{fy!_Y2Ju1WfbtTE4N?QDyFnOaH^^{YazDr~Ft>x|3qX26_Jhm@#TBR?29UmIE z1hNZM9)ap_P<;-R3@B}Z+Mb|#7PO8M6fdCg1&t+w{0NE*P`HD} z13+Wrps)drVT0;mkQtzUE+|ewVFJn%pm+e))u6D4VNhEG#s<;Id=MKQgY<*K5ac${ zI0MLBP+I_$$3S@nR9=AUXHcF6wbMay0CFd&e*nr;pf(98ZG+a*fYgK1HYiPk>Uz)` z1<<|(ke@;M1(aVwX$e&Bfcy?x=KyN|gVGzw4p2G_+bYgYp5W z`~YE4I{*|`pl|}Ihhb3q2AKn@gGTFq`q%y7Fb@a-uM+{qAqa!&4^V#%R)=8g|AXW} zbsjPXi-G#zpmTm)T>gXVCs;g#XiyyhG8a_-fa)I%z0kTDWDX32)PUH?G>8quFgXw( z#D-x|ngaDnLH#07{sh(6AUTja7zXh{Zh>JCA2j|8npXvtzaTb94pd(vV~`lgJdhpW zy57SByw?#V29g6|kXc}iRM#V$0b_&Ig31a|{R@fd{DgsDyu>LR!}_$avMkwsB8e$bD+Aw#l!@BhaD)4LG2MxnFOj^L2{t- z5mbJH>K%|fKxHSWE&!zi5Dh9PK=nAtPoQ!J)Sdvv3&>3%J3#&i)mtDMWG^U8Ky@#u z9tPE|puRC^EE80=g5^s}z~}0K>TXbd530XG;-E4QWDiIjWEZGx1l6CQIe5@~B*=VF zIS6Vufa+;b-w31^qz_cif!YkyD=NVE0)p%Xm4l$ZI4GZh+7O_;0rE4bTm+T>?KwH% zb`99QrKSHtc7rg;Y*1MZ8pi?6lYqh$6z-s~1htbvVE{4{6qcay0l5)GgX$Yl-y38P zDDQy!@t|@QRF;C`2UI73;tJGG0=XUJ_X!0B;PZ<>{sQ>{WIw2U2gM;MFE|<*{Rf$s z8xipzw1*I67pOlEs?$Mh|3Pa3Ky3|By8yHf5VVKiQb*^%ftnh)Z2(dS!=U;fl$VqI z{lVj5Aoqjf7=%G=5C)A`f#MQ0js;4uxaww5-H9#-5(8n7I5LgS2Jt}{mpW|XAoZa7 z9+a0rZUohfptK5dBPgwa+G3#a0@ZtkQ zbgnU|T?ne9L2XV@Jb~JSV4Ri)Zf}6{2PiLsXpkCYHi!?(n;;sDGcv&AWuWmtP>+%gOl<%7dVM1@a#ZgW>|TE(l}?sJ#qIKOi|! zy$)(?fbtiJ2BmpWc?hcKLG3uuxCkg+fzlbM`~!)DFer>bYxqEE6Oh)x&rv)uZ2(YN1S)?(aRW*_pt1%e2C5H0G^lJQgu&`S z^*?AIy^|BTJ^{rs2!qlHsH_8xD}eF~SS_@^hnWi!17R2+8;wsMSq@|ms166&3+mf| z>;(A*Y$no}KS&H*7lZod?(X3806}#FC=5XTFpwNv4XiE)(NOiE{ysymFGvr_Y*61C6h@#t1FGLZbq}cD2*RK`3{=K|@;WGQf-tBq1GU>hbqc7@3&&`C z{lW4D1^;0*xLzwP{14iz46*~%w*j^FKz4)5a8MlvswY7C8-zh+1E@|1m4~3aaX@k) zw}Q$z(0Dg!EDtn30SaSKeF0JnGQ+{x7<_L$sB8k+16s=l(gRWhvJ0dhl;=Tfg+S#7 zsO|X$jM#ibqna+AdntVx&oy|a9v_%2EI1} z)K&t87w9f{Q2qeL2dLfwjfaBz@t`;Ywe3K411S7Keg?$_s7wd>9prvc+XZAl$lV|e zT0a1yLFX%i+LNHL0>v-L{h+!F6n>yE0+qEk`uhKMRaL=z{;$z7L2d-4EpU6(&JMgD7Zi7(^a*kw zsLcQ>GeCBN+J~U{2IU`6`T>c9+zW~ykXu3N7j(WKD8GWr8&KK>u|eq%H0J}(H&#~v zL1_YH4k(|2%m9T2$P7>zf%;mYumfRGegR=n{sy@jRQH2uQ2mddPC#J{s%t>u1xk;j znEv%YsNDu?LE~^fZFMxF#^z>AE+Jy z)rTMqYgd5kHBfl~8oLAaJwSOJR8NA;2I&Qr0iganXq*w$#|4#_pt=lXFUTBF`30(X zLFz#90mGp7705hLodl|%L1u#d2C7p*{s&=@9ia9PsN4kA{h&4isJ{ei|A4{?P`d>bMxgWv@;9hl2H6AB59(Kg>U)qIK=lBq{R65?K;sgibOX{03S&^%fXZx8 zA0K2ED84~y4pjDn%1O{T4=C(F=fHu=YmomzcSVBAWsti-aRSDrrQkb*Kye7Flb^9LOCYKB(OWy8mw~$RC-R|3PjB*$Eoo0l5b>ZUCwWK;t?#1_uAt6%_u%>V44q z4^Wv6YIA`4t)O}m)aQrQ`=GiXq!zSK0HhbRma!o}|9^g1*nd#`p~o*MO@q=0DD8mi zI#Ae=i$QJy=|!etY>+rMj87gW2Z}S$`VCOp292|T;s}%;LG3b7A0FfABo0a|AoIX=cwF3nkY7P(HG$$4l>R_%xs-qa@I6VO`Wn<%2jzQE+6UF+ zAQ~Bi%11bMaRHwl0!mMycm%lzgh6c)P}>=l*X)gqz+*2UvqA0y#V;togWA2IbOmak zfZC6syaXy6K;EZfz}#~*8TLa`(a@Ys{cW0 z9~2j$auSrTL1h#OgV;pXyP*C&wEhQ`aiIJGi(?QCssljj8Z-tAO8=nx6vT&_52LZ! zg-;GcJ*a*M&88bbq>Wgz#1@)(E)wHrWg z#fj1Dd6>C`Xpp_`?*Bn{fWik9&6s7(PXQ$cot%m?k?2i3W-dLLBhgXT3sc7fU|pz;k=K7-nzpz;y4E&|k70+|c0 zAB&6sgZj{*@er_{vNG`80Vpg$Wf#cpAPnl4fXXybnF?|XC_H9WRe{G-LG2Mx*$Ub} z32IA$>;knHLG27sdIQZ3fXZ~xcqgbV1jQ{V96Uxkk$lsuH9aL9?{09nuP+bEmOF`v3D7}N?22?+Q@*Ak# z1ZrP^<{m)epn4qCzX#Fscz9S2iPe64SsQ%9m z4*n1FD=2P3=@^X7%)omEL1709E6_d*kl%^HAiI&(f%qT{5`)noHaZ5$fiO%Q#)i=_ zabz0gM^G4o*4BdD4T?ihpBL0$0Ob!*zZ8_-LFz#M0L}4$XwVvYP*{Wf49dTtdAcMY zAMhSHQ27Ze*Fb3qREL7w}bKw zsO|^(3*>K5eGhUs$ekbz%D?Fq^cAoGwhNG~YO!s?z1=X=gYS87tc0<*G<)C8#pfn3Q z3lNl+LE@nN0;1u5gX#g5^`I~aa&r0)VuSJ*C~brC7)o0KR;PpX!PqbwNepBUTpvgr zgkkECXi&KfDnCGdCD7a+s9Xot2cWtNghBZghCzH%FsLj5)t{iV?m+n+lqW&feRKA1qKvrnze^5OE zs`Ej01gNfrVNksR>+^%g0YK~iL2Wxw9s$jV1UNeW2c7=|G9R=~02IF<`#=~J{-81d zGzS7|SApswkh#cpFNh5i17R2&Mk9;C*dRG%3=#)nWHDqmHaT=LkRL&A1of3cbw6m$ z1IVqQwjC%uKysjP1J(N=HK02ZKyeEa1J!|`@Bp0+eS!=?&y& z&^QFh56EEwiepf_1ymk@)PvF^C@q294NCW*G6s|r0#wG}tN%fH2jnM^nIH_ZA5?aO+ESzSKK<)`SeS#_yr8%M zm0`&BKd5{Gm5HD@LdKwS1ep(KL+gK#IiNNpD2|aaC=G$sg3=C14XCaK@sZmAxXeZt zhp}Na$P5r0hC$|m@(PFsm4~3b2^!x7*#}kwtAjz~{?L7Tp!5zJ^9AKIP@4f%ri0Xi z!vLlpMq{hbp<*CALHa;>0)#Hy^WAC%w7!Jsi$P~8JE z50tk-eLhef4Jxld^)aYE1l2j9dIeN}g6l%iTti+Sc)b8fAE+(|^$kGz8B~XX>Lif4 zpfVI>Ca8V~^Aa{Y>2PzXmZA;KxEhx;(Vq)NH z@j&t*Kf?5bXpk7_4qQ;34JwyF^PQmb6jc9${137NR7Qf_4~j=n{Qxo>G%f^c!+`7n zg)69U1FA1TVF5B1RJMZjgUkV85F6Ca0{Ib)p=Sbv;sB%;G+qx<18Tp(`~vbbXq*6K zE@NnkXfMf|LXJe!TY^H=?bIw)3~RF{J0)j?$j$lq{`Hnt554-gFsdyqO%9stD`D2!kj zBo4|8pl}5BSwMLSwoAOz@Tyml#f7qKxTq4C>?{!#?ktJ;Oc%*8vryu4vGsT&3uL7;LK)L#MV2ZaMD zje^?6p!ABO9$LqP!UhAw3aSSvt^Yyu z-k|jWpt`3qJsrHa1JvgO_1QpW1E~ED%ERFLFh3u>wjIpQ%li*H-yc+8fH0`u1C`;R zasgB?fy6-d7^r*ziGeVvz5|63s2l@@Ge`_H-w3KJL1hi7{s)y|pgIXu{(;*5puRS! z&j?BvpuRe2-2q4+sB8n3Kj;`#7lP~ol|3K~D)&Gb)Ybrv_k-Fbpng8cJW!bhVuQ{t z1&3u(5qLfWqz`OHUfzGudIFGrpf&|)OdM3Mg3JP~mjkH*m6f1!3>0UeGzu#FKJrfUK#<=-c>&bU1F=DNf-tE52aW%O$`6qF zpfn6}0|Xk?5m z2J$Cp&kU&k0);oIJpgJO!R9QG)q>a{49a7mcml-@$iK)K6b>K^iZ5gg5(B9Rg%!vi zPxF0Vp0pX#|vxLHPreWKxr1l z2k8Z27#l`|#6apmX$;h60GSOk6BI|Fyb6jZP`&`!2a*SshamUD`~~s{$bFzZ19Ar_ z9f8V8kT_^w7jza0C_F&<29)1HY*4!xG+qWOM?f@a{SGJ(f%L%41+}F?<>YAnKQQ$_ zXzd^9{Bckk0L3SI{SU6Qp!F-bUd6%&m6LEeXuS)n^FV0`WF|bWL1Sa)=Kn(+9l>i_ zK;oc1G9Wua>OplO+$@kep!NV3``~t=$$|8OFkBuw2LN&h$SzR12$Bc4Z=m%*$WG9F zKgbOrzk=p%LHQHZt_R71@+L?ej-mB7oDVeznGf;{sH_E*k)S>kh!4UbyW#4f=78*g z*Z*;G;PqXg{0_?Fp!yR;lY&9z5~zF!)hnPp4Jx-meL+y40@P;#)%~D64k|}Lbv_J( z>OBw!l?k9a6;!{0+V`MwPf*wi$a55l0e`5+7$?*z5mK<0zO5!8kP z`4QxQP&oxsi;O{j1okxKj6Y3KZE-EpgIbaA3$gSfYLM!!|H#~7zijXLH2;$2g0E6 z1GxiaC&+wI{R5+s+2~@(e2_YP7^D`2k=20sAdD^sP@NCLpmqSLy#T@>yFg}v%miUjyB1VNf!ge#uo=blZ3lqj8PxU! z)&HP!4^#$$$_h{&3Mvc1^%aTrFsN(-=>?^EP@M~kXBY;>J*bQW)vKWWP@wb!Dmy@B z45)qtiGwhR4ZSa)Q1IExbe;|87^U@%@ zL3KIE51_ILR8N7*1yEfLDuX~{qM$k+R1SjbUr^lus{cXZ1u7pv{Z3FjA9UUe$R1E% z6jVPWrvXr11xj}yH-YSH&&&j$dx!2fP#A#x1ac?H4Imn%2Q;n#nlAyxE66NRID*PZ zP~RI=$AZ*?>OT+-uJiNr!Q-8vumQDiK>h;R3vxfGyaM?Flny~<8K^x2Dz`v#AiF{K zfx-Y(Z-Uq$GeG)5bu73phxX?|eh1kNtMkEZP+I_WM-g<)AEX~-KgcYQ+dykRKy5Qn zISBFx2!rwnEZ>0mptJ$1M?mob%CDfcUZAiCjYEUN8PqNS)igWGtZ{0VAzgYpC@uYuAF2!q(5HYrFBl-@vT9yA^S zau3KpP#q5%ZwFyeoeyfSfZPIhQ$hmx{67#I8N=j3VlXyHABYb!AA~{f0L>49@(!ra z02(s`(V%n-N?V|LCQw|0FsLj8=>@qLl=eXFOpyOUa-i}H)P4ok`5+ALQ~LRV@2Upn zBT)JS&8>lGP}%|M0fid~gV>-sB~Tt5t^4U)_k+S4RGxs=ynx!WurdTx{(;IGQ27DE z$n*aoapXD|oeh!)&9j5bA`k}kO+fLCj6rb@D)T_~JSbg(_#nGMZUChvSbYz&8-_vV z!tElWJpxk?ayuw}gZi8xdq8O#WG_ezTyI0y{e$XgP#y-21%Tv0_JZYM^);xjhpyKL z%YpbXIiz+3NDoLJ6o#O_6R2DVwE;l>0+kD3v!UjI+z2X1Kw$xDOM~(^sC)+HOHlqq zuM6?Ji27$);L1zU($NoX(4yX)**$wVf zT3Uk7$OX9tROf^8G-xaX6n>!nbf9(;sC@w{^FZMWieFH@1hOCGPLMxA?f~frjq!up z2Ou>d464sSWhO`-)ZYP>ryxDpFen^A?grJBAhSUA7O36^jTeH#7BqeYO2?o&9#p4- z)PU>#++6UuKd8L`D$hXrKs2a)1Jy~Ou}F{`LH+^tb3kboR7Qd7M39?6>OtWFG80r^ z!s~iaT@I?#kuglHxEQ>T0AvrST>#PtG6Piag3JSngTfl*Cy?JkeI8J~2?`HT{DZ;~ z6knh=2q-Ur!V1(51Eon&9D>{qibs%JKxqY(UO{*GfZ_wx2M5J1$Uaax4eC>Y(jmwm zkRL$ygWLndAU?>ipt=DU2GtkneST2+4a2bdAC#^^`4{AVkefj?D1Jfd0c1bOe2|-P zVVFFK24P(4(8WP&K^R?}6h2Hphz9kILE#Jc|Dd!As^>xJ8kFWi@dnBRAhSVrE2!-O z>eGYl1C2L;>U@wJKp5m65C*Y9ZUng%)Q1PPUqIr>7^DV-VPYUQ2!q<^pfm__8%QrK z|A5>B+FJuM7Zk^!Gzp4NP#Oc3Q6M*h`~hkkfZ`XFZb9;(^a)z?3JM2M9SWuj`O~dLW5Dh9nKr{%$ z>t1MI8^p&DhxWHYWe+I5fYgA}2`sK*G$_tNdjmlFLHP$H4iW=l5F1n;gX$HKIiPYG z%F;4Jrpf;RkAefXo8*BS2{i zw5|_S4ubrQT>pd22ek=6S|q#W9!M`JOu!hq zz6Y_Pbw0=spn4so1{D6F@dr@d3epcMD?#o6xd&uFsD1$DH&D6;wVy!k7f|?tXi)wG z`3JPd3Y0Ej^**Sq1>Ic)au=u`2ekn}ZFW#P2Bj-d{~Tm4D9wPz6+m$YG6U3y1@-ws zdO&Uhxd$18+(@nZACxyi?tx*DyFgGvbM37L)TMo@l*)w3WwKxq@?N0|RW?ghz% z>t#@19@;+#i-GnAfH3GxV>dVOx&=_%7GyriK2Tc$;?G;RDXin1t7aY=7Z`okT}TCp!^Oh=RtW9R9=AUJrIo#!_mra@r=O3$En6)5~cc^y=@gTfdT=AbkR!k{z-O1Gf=21=ixJ~JrZ zKzS2176QsQ;Cddqp8#YJDBpwn_%I9-1KEuagVccPe^C1nG|vDs1C*z*=>e$)iG%V2 zhz8|(PB z7zl&wVoy)-UAmyO01`vTpmYY(2kLWz@*QYQA8a4eSOmx&=wdKFs67hu6UaRvJ3wVF z$Zw!@3{nH~BM8I9KLGA<9-=Ojvl&(Q;0M&&ccYxG@^nlo)`X5$Cg4#47 zH-g$LpnDKO=7H=6g#}1ID11O+4zeF)F35i%cY*RIs5}AH%bXD4aq2@<44f zP&|QXP#+mo&w%0O<$Gf&7UJgUU}(T?!hT0QDh3<3gZ19MtXr=?B%jps)hj2`bY-bv~%R1o;tE z=78FaptuIv3u-rj`Y0ebgY<&T1o;~jMxeS9qz|Reht~1f#6fKau%4nK@cu%O8$snd zsJsKMw*!R*C|p2c39=iMw?JtK6yKoo4HW+%F|eCLLjHsL@1TAdXj}y}ZwwmG0htLZ z(?R|Mxf4`pfaF1AEueG+@*k+32nqv`A4tVS)&Gf!|B0&q-Q50z(l98VL2YeNS_b(W zG$stHTVVAMD19Sim^h3^mV>cjav&OnLE^Y*kQ@x7tAUAwXpkJJJ_petJ~9T0fiOr6 zM1yfc!hcZP6VzS;l?R}>1J#wFu@zAJ78LiOx){U;)%T#h0+I*mfz`<%`#|+Os162U z5F3m^=ly~(v^@Z_7luK0!`R3)vN$M>fXso}15<~hCNU9w#sg^mKgfNcv;s=2p!5ma z8v;t>pu7kgj{unkDl0+p2g0!Q2193&4)!=Sn!)CK{K?}PFtD35~D z0;miE)&C$2s{cXdB1jK12Dt%L27}rVpu91P>0AGU!W&eFf#LyFR)W}|atahDAU3F8 z1l4mOJ_v*AS!4_o1Jls@A5;c_%mS5xpf&|)juq5b0NDXbFQE1%avA{5D}&M;sEkAw zM`nZSNst{N3~~>;8^Gdd?E$zN=o|n@4Jhw|+yP3TAUi=~Ab*0`APg#-LG?VS4h5+L zVURySWjf4WP?&)9AY)LNf!eVk^&r23`lld0ptb@i-Glfr^&mSz>Oppa!UyC}kUmh} z0+sckIt^Ey2ond@*Pwb2w091a*FohHC{Kdi4cfaqsk9W_4+YhQAhj?I>YIb=evlm? z45~jsbqvUTuyPwTuL)Yi0U9p{m2IGU9F)I7Z5mLS2GS3*8&sBn>;={Bpm+t9As}%O z28}&{$_!AM2nq*~8j$&*_5`S`0@bx3H^KaaPJ`+|kUgL}4pcUP>K9P^3RK>K^n&Vo zP&)?H<^ZV!)#sr00;oL;iZ4)@g6c_-UeH}9Aa{VuIZ)jVD*r%iFoyN-k?VUjHcSsl zAE@33xd~L>gZf0Ev;RQ;1KA0RLy)~73}S=!xq!+>P&k0<1W4C?4w@SWm9?<; z0;ulVJ24@R@+1 zbPa01fYJ}ht)OvYSp5%5qaX~cpI|gd42EH1*l3U%WN{cDM#JPld}NF)4z7ct>*YY{ z7!-#f8Z>SW(gRZqqCtER2D1|q{)5swsQn1aW1zSKjm?1ite|`h8oP<}^aP*p3sMiV z2UN#{Fer{;G$`$Y%miVOI&=&Y$A+<~1Brpm1GybEX94CXCjJNM2eCmI#D=*Al#fAq z43tOG0|LNj5@m#hfcp-hya8Ho2+CKWbPCF&p!fr&V^F>Y^$S31K*rb zgUV1)JqfDkVPYT}lwLq}HpqUEJjkseHpmP!#@wZ%boAgFB(s^>uFfbuLTzk$w^ z0o9A3x*wG1K^UY5gh6#PsO$pO`Jj3YRKI}AF<6-mG6z&{gY<&RMi3j6w?X{{ke@+q zBT#=8G+qem=Y#wU%I~214^(!5$_UUp0MJ+;sC)vs12!%Jav!KH0f~Xy9w0kFZbQc) zcY^!}G7B_z4;pI(r616|CCI&?`X1yDkU5|*0EHQ79269uAUi-~EIHxf;PDQSIiPY4 zR8NBHOgM(s`)D-CJdhfYdJqP+k3ek;kbSj@iT^?20ghK|Yw(%tpzs1=kiDRI0Hrrj zJpt+~g4_u*3sld5(l=# z0htdf8$o^s#V^Qhlwd;jKggY+a0K=BK<>nbLG4`F_&>;fpu7Sq$3gA|r3p~F0;LI9 zT?C@BVNg8CFMV8J_wYaK>Le8c@b2`f!eO1JPb zR8SfRwFy9F2WUJH6n>!c9AqvGgVGA9TmhvUP?(Nl`q%%UGz^L}Q27OlKM)3$OQ3iG z)o-9W7sLmZZRi*-4%)8|njd#{{SWFpg31Qa_%R5B%5G4)1I0OLYyecIgX&gL+=J>$ zkT{49s((TCEU2smrBRTZKyn}q8XExBH8A&p+ySy1gh6b47^DW&=K}c)Ol|9Du=)tp)&}K4 zkb6P%>!7>?s&hbf1V}AN9}I)_XJ`Kh<#&)8P~8tY?*_Ej859(*Xpmk|{DI0HP<;oo6O?8^W`Oz)AU}f23{ZT6 z^n%<6YJY&-1X7EPL1G|tLFEmojRevI>QjRBfXoJ!y&w!~dw}?$`Wdul5ggv;=Kn!u z6=;nhsLltKXP|L(kbgmH!5FE&2iXHs2g0E6fYqm0#>nCzHmLpu zVUWK-<5!?M5LEAj^nmIm&>nn{TS0AEkUEe!E)3F_=I;;gGlTlFpmr^&tOB*oKzc## zH;_G`F*Hz`2d$w4sezdXau19RqCtEZ2Jy+kF!MqEdQjQ}`2%Do$UPtoN>`x1J_v)< zg2t&pWe_OcfySOdbvY;xg5*IMlovqbWT1QmO5Y$1%6lL^ptJ`n6F_ZLP&*JL2TGTq zJPryEP&x+X5m37ql-EIJ0qC48(6|-IZJ@FObcO~fAAs~CV~~BIa089ofy%E@O#k{H zRQG_&XHePzmARlg7*yAR${$d@2a0E0^(#mnSPnY&4^j(C1E78)C>?+>sB8m`dxF@Y zx(`%uf!Z3N{t&3_1l=zVN^2l_kT|IR1og4}?Cs(8Cn(K;+y}A`jIpc*1iJ%T4};Z! z*5Y}1fbTj7nFsO@2!qNekbR(X6=WvJUXb}93}S=kjX~~&g##!IK>A=9nGa%vFh~wW zgX{(A#oE?2HwXI%G&TbAC#Wq9Y8Qjb50Jf}x&~CAf$BFP(Q`pzsEjqhPf~Mc{J`LFz!}f%Jmh1;QYI!)VZ00>}(dn1lD|m6d_dLIjna zpmGfqpP=#%)INfRHK@-ADziXw3@Yogn?7zA{KZsJsJ>$AZ!T$nBsxWspBWeMwNffWi?}|A6LsK<)*#EkJIj6ocx2 zP&|U#BOpJ3`syIRTIlNj2c7k=tD^EBboMW(EdUb7hGF$T$bX=?0<9YXmHD8w4T^8j zxeuVa7vvvM-2|dR7?};?mH zzXhE~1xi<-dJUupq#lGpW`JlI2Jt~@0i*^LZ=kXYw3i>0E!A1qe&2%s?lP#q3R@1SxO)V2ck`$05l?jIEHAid}q)V=_fGa$X7yfBLC zU;l&B52&mG<#AAY0rk<5>oZurij4-9(;y70_d)3k#0KRRP?`h9H7wnM+RGp|s2vKb zt3YW4R8D~M3}{RkR2PCUNDnAYfXo2pH&A^68V>;RL1uv50CpR4J&()=t>5?X0I$0T zxdoJ_LFG5d43Iuh`vx>N0ZQAjbPlo;gh70eI#AvQjTL~@!!U>s!{BiPs2wmd5Dilc zk_Uw$s2u^y4mJ3(wv83bzgfcnfJwV?I|s1FY^57Z_AxgVqt)D8lL z2dE4O&0B!fg2S$~6ukc)q!u(@016LKoe6R;$Xy@|D#u`TD5%Z{-LV5Q4^)PO#zaAJ z2Wq>5(k3{b%*_6S{02I|2$YUMsjT1d4x< z7$_Zs&bX@Z&Mc+@!iJIMU~CwTO+B(0NF4}+;sn%|0o941dLP6FIuN7> z0Kyom%VKgXDf${<sL2(JfpmYI>YmgYI9D`wWK1>a$`~;PM;Ih-){6A>z zAE>VcD*r+KZg5-&1pEi3D^QsMvI8U!%2OacpmYH$H$ieB^&oYib^yp7AhmD|-IE9B zgX(?In7o_Ye^7e@WFAOA$Q)343QE@?H-qYFP#pv+mqF2x*OylkRCAY z;sT!20J#Iy4+de-90zDD848e8x(e+JPnE~keQ%8{-ClKRL_CxFi<`PVOX6Cqd{$a zP<;h53#1lgFUUSnegt7qo&(J(fa)($`3>reg8Hf;J)rs@WDcmT0F{HFG6XaZ0IHin zYC!!EkY7OMBZv=bTY&0oP=5fF??L0Cpt=)eC#akNg$c+Fpn472tspi?3{+-<+ynA2 zsICUN0c1ZYoIn^<=7IXiAag9 zy7w03M^OC%iWiXkLG?eV{R^wZK=l&1P6gF<(0UM5*MTrd97Mw~h!4WZd>9)>gXBRN zlpaBLfZ`J5Cy*FuJsv2Xf#L%+Mgi(`fa)qx{DIVh>Q@*BsfU>fqCtFQ3~D2R$|ulS zTA(@#ln+2<63A>&egNH-2Wk_5>N!w*2b3>BeOZuyLHP(|AE<2!%15BK5D0_PD+q(! zj17b8XwbSzWI2#}FiuVV4_dnbY72ncil8zs+}Rm?)*h(L0hLFfz7@!gp!NvJJs`h= z^nm6i>XVb<`-wn)0p%6Y_#UVp2g!rVQ&`#s(I7KG>rFuRf$Rd67ohSK)aM8J8I-3% z;Q$&-1eN=syS+i>ILIxau>nvS0BWa$@(@TbC{G|`kXu1@5Gc=&V*1wopzsFODSkFK z;JGbO{~A{R!|Gd5oe8V+VKhh#hGAkb8dSf6=F>s_GEh8&(gdiD3W|SlThG_`KPZ2I z>RFIHD4&AlLHa=B#2_&k2Bkkxc?e2(ApM{^9h9y?X&j^W9I0BXBpm|b|8$e>9IuMlCL4E_VLHm6`kQycblT zf$DcqI|7uJK=mT1?gNbzfZ7D0ItMhz0IJtPZU)uuFbr}ZsEh--8PuKu@j+}54XP_a zbuXx01mc6j7F5@Q+y<`uLHq9W^1$mGK;s0UdLLGAg6ioRm6iWN;RGsEOJZaHgUT;Z zT*1--sJ;TZ6I9=W&N>3cHQ0~A!T&+?q98j#_JHbrkpDpO0}3CI8c_NK#SJJtLGgo( zLE@mg1C)+HQqph6jWD%(gmoT0Hsk-y#h*yAUA>3 zfYgKPIG8yw^FcJS7>EtZ6Cm{<49eg3Mn?ZZc@UJBK1%`IuewQKs2bH2gNt2 zOu&Xg@*oUT14^5qvJMv4AU3F;0;N&VTr+6g8C3Ry^nlU}D9wV#r$G8Z`3IE#KyHEQ z2hkut7@M1e&!PdPOHjQ9qCxdG41?-5P?`d%1*KDv8c0_tZDwZRv#&tz z1KA0x13~2$s4fS&1=M~3=>dfW$UUI=0JSebat_AE|3PA)wi2kV08$64H$Zh7C_jVp zF^G?hL1jIt-U8JnpmGwV2NpgcGePbE*##<>Kx5IMauDPu(0XD}-42>31&uF&@+GKk z04n!Dn&^S71`~XzWg8T$h0~UkcO$-_v0fiZ;z6Ql3sBaHyD}dY$8b1KF5kTgH>N`+h zAKdQA&HWEr`wa32C=5aF0>wM1z6W7Y84ALn@p(`ff%+|=J{!o5p!N*N3{X7{G8;Sb{Kz4${4U|SfbGINjgXZ}`M(2aX(ZyhV5Dluo zKy@;xeg(x5D6N9}Fd(;s$`Vj|293vn>N}9VptcmK9t81WW`oQDv0)g4pOEk$RPTZ6 zMNmA0;s%t)L2(VL^FVbsC|*Hn29yp#eg&~X^NOHy1C+i%`aty`Xl@(SrUR7=ps)v( zFQ9Y-YNx>53@U#?;RgzP5C+wqu(Sj&H=y^Xf$Rs#f!qU92hsy-e}Kw2P#p?tOMt=$ z6gHrE0EH9C-yr{iFvw3Jc~G7Lo*}J=g>pNIH zgVGQvPlDnaRF{F;k)Zk?)Xo5{`vbKJKywBl^FZoA=(AogdnLr>vfz*Qh2de);aSf`6LG?eV+=cZ| zKz4!L4k{Bt;SQhFO1 z${@2r_JQ00>cfHh`=Is@s9y=Hvq5nNG806@Fo+LoQ-I6`wF5!n2r6Ge^)SfaAa{b| z9b^ZnYy{O6pfMs)`wOH7WGATX2Gu4O>a!cd)&M9f{?}Gg!r%Y5xBp+4m-io32Y~zls>eWM@SwB`O4Fb)0EIuO%>=4{ zK=mz*2C;ErbTuG8sNMp#Q$cAJqz_~+Xj~suW`QuMEehI)2Wk_5!VXjig3>)mFQ~r_ zqCxtQF-Q!Ck;OsvBq;5GFerXNc?XpKL2W~jpFm|5C@eww7&MOtDn~%&8<=ly{vRX< z5<^ZCpn4UALFoe~4pIZcp!OK3UIpbR(6|%GKcKP;R91oVI;gw?l{KJt4k(?1@)4+w z3d(z+Iv?a`P?`Z@P+biQCy>8D{s7T1zk&FmFafPO0@eGVc|lN`1cepI9iX%Ua~o)U z1Jq^*rBhIT1IdB>2r4H*c^T9O0F5(%@&hPsfx-pFZ&p_SL4632T9E&c!hXFzH|=7ZY1p!y%w-UF36p!O>$O@Y!mc+TC;4ZLm-v>pkRS3r75#h^S0vKv&U zgYpc>evtVfH-Ov=!yq|OnFX4s0J#fPPlNpnYV+X3ptXj`^5}e+97r6BL17B28$s>@ z`3F?yg7OroZUN;zPL zT?xaWIt)~2g35kS{s*lpqg3sFn#VM%%2bDXZIv*4kpfPn28)Pr2OazTdgVHm| z&!D;p6uuxgg4!aWumFwGg6a=YJp!uRL3%-TKB(;giWg8Ag33)$Sqk=dbo75vegVxp zf&2*yLr_`+nFYciKFDkk4Qd;J%mw)aR1bs91GiD~^Z$e51T>cc>g$8jKPc=#ZgI?3gmxK8x7<}PLF)lP81MQ&X#EfBJA&*0#WQF;2-GeE*#im-P?$AkWT4zp2TGHmu!Uh{ zJ~A6752HctFHo8V)fu2V85F-DHmE%c3PVsj1=W8bGeC76u6iG49!MPsgZMBS#0FuI zd7yF%6t|$d78HLV8kC+veg&mtP~63Md4bafsBQ-39njbZXpA0|=RsniGz!9?Z~$RY zegWklP}qaw22_87_OF8Ka!_9Yw4MOuPmudTeRoj$t4mG&4{G;-{07RWptdzA--2;^ zI(UsGDBXbk3%)N1w0{7)&I05Y7zVXPL1uvJeo)!~&>5Fo+F`Com0a3*f_`J%An_|3P&usEz~O zu>#5yAibbC2eoTK`4!YZ0F8}-)^35t9UZ~-KB%4s*$K+mpmH0zdpQJaucYm1g(Px)%l?DaZs3o+9cpMPkj7;P=6dWX8Jm^q!DtX08^$IN8k+&d11QWu;RlLqkUgMu2CDZ#VGfE@P`wGl*vus)2C^4~L3Jd^ z3{XA=rCm^c3rg#tv;#T^08}S~(mAMY3{nrOlR@)4AblXeg7~2J14thnXJq^b)z_f5 z5XikCHi(8{(D{2XHb@UhKL~^7??GmQ%m%enK^Qa^0csn-!W3NR$H#-u{sXxOgkgR~ zW`q0$DnCGZsxvPSyjKR47eM7d2!rAeM1%4SDE)xi#GpMLptd8Z907$nsND*x`#~5~ zK7ir_Ge2htD1ApM{+57eFkjh`UPf#g9LG}i_yXFzq(C?2@_A5^b^;s;b_g6lv} z&;KAAR0o2}QV<(d|AW*K#Gv{gTK9p{1PFubSx~zI6z8z|9~9r9HUO;50HrNZzZPZ> zsN4e8g`hGOq>mH~8iNF-JrD+!Juowo-3}55`46N9H1`3j8$fjxD1U>*sfj^h2(kxM zcYwkf)_(xi<)C^HJVskm@*k9!L1i2$Pl49Tfyx)qSTSg96;y76#6fKZkRDL}1z}J< zfs8@rKB%7pQU@vzLE#E&3xV3;pm`RM{h+!FRBwXT9fH(@%2W^rm7Sn+9Mty&wMRgC z6Xb4CeGjVpL46cZ83-!-KxHndj}NN5KxGrC-2kc=LE#80i$L{1$bF!-10a8Z;vEzY zAhSSm3u^a(>O_$J$nM9+2B`tfDS+$(=>yeop#CK&O~CvDax2KMpfy^cJ}#*I0r?fA z22_TF#$G`EuCkaI@Y-ikeLt(J>OZKy1epo415{pu>P1l4gX(-xKNi%d0?loL#*#o~ zAjn*hnJ^5p1B5~C9#9y7_J)JTB0ysZpm|e}yFnOK*MjPDPU$2AK_FgJ>8A z@sTmIIH>;4kBkJbH3FquP+A403s5=&f=Mzf&2l|3!|~ILHa;( z03Q3#&IYe90p(}V7%g%+3(ChJe}d|MP#XZ0?m^`RDDQ&G08qUT!daoA|3T#hXw3sC zAA-^u41>%Bl^LLN9$gNk29!=fjer0~E)gv<@osL1h$(4Xy`4 z{e84PG;&=EQVZup>wi!g4=NKu7*sBT#!NwWfa(EIIs(Nvs5}Dc1EmL0{}gN=)GiPk zgh6FDNS+uBs(V0nKgi9XdK`4;56FC67*t+?+9sg%3vwH*ZwRs%WCjXG>dO-)4r&8| zFlaslM7z3z#~48V0F9M_+C89f2GtRuavOv}{ZJ4F^$|hix1jt7>Vt#&AE2^gMtS*v zP#+jn_k!vxP#J`bL1N&#zo-a2)(R?jL3KZ!b1oewSbr`6w1nC3S?VvGsP#Xqh2Po`8^C+Nt4OC8o>VJ?P zP#X_aMuO^3Q2PorHVX1L$Q+P7$j!)pKxc#Hp=TC>`u(7`52!2#jh%wR5)^MBj9%x1 z+MS^C1ym1$+yg3~L3Jr;j2%?Bg6cm|*n|2)pt2HFrh_mjoI&P;+y*KeL2XCa7y`&X zWDK$w?fcj9NeN-T`L2d-q`5+9ck3r!EvKv%afz*QB25Mu?tf&B=H3SMr&{`PK z7!RmD0*ZT(dSWmr-GDGCPC)G}P_ zBo4wLHV7lLLH6UqAoqbVNFGKbvysJM;vg{)289#IUmdx*;C?@-EedL*!O8_t+6KiR zs6Pa1uYvLas9XlM4M62NsQ&?4^8-p_ptdS#9tJdj1{&i5>4jmC8K8Y+AbC)F2k~KY z$TTROfzrw-9=N(6R2PHlB2XFt#XG1E4yp@4bvlR!VGtXX2SD)!!eBnAo<_nTF%X8y zgUWbN+5wpfuK%5!!21h9bpXgtP@IG6e^8kLDyKkW4`98Z@p_QCuCCzwT|sp;s0{$h zhafe`=?9q&G6PiKf!qr!OF{ZT^*_i>APh1a8H2w4S-Dyq!tN->;Q!^$h{!Hfa*X{e;(BC0`+M@1gOjdjnjkrrl5KP)W-sq10Xv<wi3V{(|a#5C*vq)J6fh733CB9SItT2ZbZD zogg+i4cOWJ2iXDY>zBvJgWF4>zCNg428A;yj6wA=$Sp^WfkQivZ1(aq%^%$t_2XZ4QEf9-AeR)t^g5nF*-U00q0fhr7y@B!L^gWfzk%3eE{+Y=!{?38o*d@@Bg6quS!b#4+=X_y#{L6;GO?>aQI&f9sdWl1wr8g z@(;*9P`U%v|DZM@$e$p0g6cX@Izz^wdJ2Y-#nIUyzktL*;RnMYJ|PS;8>9wIL(kX& z^}|7J2@nl37gRTb<)P;ifco&DHX5jn1S&T`>)1f)3S=*6Eec2vXuKX2UZ6Ay3R`6T zAp2k#CJy5hqCx6G7+oDMF_<`v2DuG{VfsPhpl}DJF;E+(=7Z8ds2l;UdjR$4L3tY_51NGR*=lYMZa0GTf-tB(0LtT_HUel3 zHYlBe#9V*2GwKG`WTd6 z@L`Z15C)|i5C)kCDyKp53`#?w_y^Ui$Z-uSBS7;&p!5f-BS7sBkY2DoptXdcwFIuN z|3PjHa&r0)TB8K2r$Opr7}Ul9^>aY=HYnYJ^n>y$*bI={kucbOFh2CY0??TqpmG_M zE55zA4Y@12!vsL7!BG3;O-9IM*wP@fbs>XPXrpP2Gt#)um0NDxB3o7?OV*#M@8B}k9Xiy#pm3N@D0a6PZ^8<;4+HIh?1hwZtZ7fi@ zgTf4CA1IzdG>8wXpF!n6sQv@3{{fYmAU}iVb3khxK>9&$1=$C312zou6G%TOd_e6X zP@N2lJ5YH9s#8Gr!2APB53sQtP+1Hz57duFuTMc`8mP_%&FO>cHcK>3?p!5z}gAHmAfa+;tF=(wLD2zaE0L3+E`~wvJpnL#o%YnwPL1_x)F3|Wh zDEvY028ACe>_B-AmZv~vFsK~_>SKe_4`|#QRNjNmZUkYx^}oISe^CD)R5yUq2gnT| zb3tJMavNw&2$b$Y{X|e33sxtg)8IM^%X&4KI+#2%jVuRa!)UlV=v{xH`Vcg}1aT;+HfU@TWDdxmptJ%?v!L_@DhEL20;o<0%}0X90zmZx zM%@nD`(SMiULOoH3lwG`bCEGf4AfQyttA4bJ>>deluh4u0H~}6#Xl%cKy@IfKMpEq zL3JM}enB*d4=Srb^(mMQt3RPMvKWXB!k{sAP}%~O`Jl7}if>R_0o8fPaSU3E1WIEd zIZ(L)vJ++(j0V^1o}T|)-+yinuGKPtP)PwYa z>Sa(G1-S)eAE;ag`yIJn2eFYcQauk>i!2YldjMoFC@etrCCDz2-Jp39P`(1y?VxfR zRPKZN%%Hjs)b9n=VW6=AP&o>!AHZVJ{xX=Ioee*`161dL>LE~n1=QC9_5DERfXaPv z`y1)Z0Z?55>c4=>08qadl$SweAgJ8|8e0IJj|z$}aDER8`VZ>UfyxR{yn*TvFyG(* zKj^%AkUv1-1+ouR{)5_kpmro^d;?@YsE+|Eqd?_8Y)k?a1|ai6?!{OCgY<&>>7aTa z6n>z%0hL!E8iqk;fzlZ$4T0)%keT3qcxfs4oIg<5g2EL32aq0+T_E$j^Yj0M+Fzjh9)v;d77zy2y&!SWzEM#7 z4-{`8J)kxhhz|-skQ$H}$Q)uY$h{ytK>h`V3#e`d&9#E^7bsuB+84crh2Z&OPX3V#Cye>OxRi59;fK_H^V$MuO*aLFoY$P9U5c5rKdFAJqTP$pP>G1C`|<^FjF% z)aC)X1(YU0?I}>+28}0y>QqoXfYJpajIIuy57Lh;1_~1pAA~`2Aisg^1o;!Rh7QCB zwGTmQ9@HKIr9)7?4r-@>>PV0t7_Lc71m6(|Dsw>PBBkGY}sXcc8okY8!y+ zT#(r?dtqk4XplI$7-j~DhS>uOLs0t>Sr2i^mTO&+8kRAz(H3&{LYOy4>mIlMt-C#Wm}#SgL3Il#UxCUo(E2Sx+zAQ`(Am4-{yymLgTg{^UlcU=1xj-uyFltd7!>}X^arZj zKxqaPR-k$TbWbuUtU>iX2!rAnlukfwV(WjrkZe2auT{GeG@&P}qUO9F#XebtZ@p!k{t>RQ7=KA}BwB;sB%v zhC%jUDU2DuX*gX(lpn;nc(Q^9v_g7m@6Yl5Ep3vw%HoCX|6;o<*5`4;3C&=>|N z&w|>Qpl}2E0YroHAgEjcwedma5y;)3GzprQ1J&!GFah}oR5pX=fI#U66knkH1!^yW z+OHsgg4BZg1)#A&SeXXWhmJwz8))1FWDdF-!n4Tuk;L2Q^BP#Oc(`=E3NN(-Pe2V@7Regd_- zVRpl4kQ$KvpgIv`9teZYL#xZd=0n>8Ah&@qSgoroc+MBZhGCd~WEvy~;)7@q2C+dH z#0Iq`K=lA9eS*eNL41(k$-*FaL&yF>ZUp5eP`Lp%)6ES$mjMbNP@N4b|3UQ;s4NE6 z8=!m&sw+VCH>g~JVHh9Op9IydpgJB@zJl1GHFltS9$cps7J};}(0&V$7|1^$3}S=q z2k8gxEdrGxpz;#L2e&(Na=`QUpfVqn&q3{cklmm*KPbsF8 z)pa1fpmG~zC#YNlja7ic3|41?>SR!T3KIjF4+>9E8wFH`gYzAUA;G3l!dXgvZbpCS7PxIdFXv5%C{1{tv28KRP7e4iWl;MH6!##zLHa>y8 zfWjVl7^sd0*#)9OZ6DA$3&>nh+6Lu4kl8Q{vI|u2gYpT;4AjC2A#79 zr6o|`1GI+-R0e|V0HrI?*b>NIWDGJJWIrg)faZ+Ac0%iUxVfM@6=o-NOaL@?57LXQ z2E;~j4@?hKKe`;44|OxBj0Cv@bXFDUOaxF~2ZaOC7-k1_ya3b=0@Ya{GeKbs3I|ZV z3>q^8Kst5vZI2^%p>F(0+7~S)e!pl}(^J9pp|>e*-js z4-x~J52{B&^(iP0LG1w0{vS}E0aR{+`UIf>9#po2#*IMk0I3JL0W>B6y8{;#ZlEv&nFGeqyL~`npfV2> zMlkn+>N-%J4Vvc%wGlx629@cs@WDx&nf(WiiGs`lt!D?>2^voTnFqq4xPoC2A5_nS z>;c&iN}Hhi0%RYk90r96C_jMW9OPb*S@htB(40U1M263 z*4lvl4dN53|3UNrpgr-RH3Ojh1hN~{ZUng>R5yXzAE0&*sN4tDxuEa>)lZ;wgAIe^ zKp0sL#s|?b3`)_zC@+D^Dp2@>(mcpM(AW?NgV-<(iZd7+l-@vm z5C)Y6pz;xfLFE7lgZeRpfCiL5uknuNFS)}0ZNA;vq0)VegxI=ptJ+B4}?K&2#^?POaasm0)-7|Oc3M`5C-`P6mFn$0Mvd0t%U;dL2@7r zs@Fm74p4sv#3u)X#`8eo3F@>0%a+YSKb4Ol#a(jj{N532h>bt<-c7Ay{}UqNXW z%!k#bp!NRd=HPxgXl@>qjzH-L)ZRdkbC8{|d1_Fa1Jz$J`{3q6?E%?=E{4trslkOo zYC#x99@^FbwL4&W8?-hbRDXlig2DifL3KQ+euvQ@HV7m0-Q50z%mVoflz&0xAIKb# z7${$Z>;~mWQ27cf=Rx&0sQv}jhoCh8p#B-Cz5&%IAPicw1FC00YCz?xueCL}F9|9? zKJR3?DRHBdbODi=ZZJ*Zv)^~*tHhoHR& zpmYJM7eM7DNG+&-0hRBdd0o)DUywY=9FSfR4eA?!%3F|KpfVDq2UJ&r{Zvr!A5>VC@}nyqeK>bgUITH&D!TLaR?4UXibjB?x9m2u}8x3m1fXaJNT!G3~uw6w(;JpN(ctFM= zJ3$!aSCBhE^&3bZsH_FK8x%I6I0A(WXdDI9{(|`dM5AMn86dZU(g7$gKHk4%4PkW^sJ?}e6L1PP` zb}ML10F;+NV+5eQ2?__0f52{rtqV*_0-pl}$_JqI1Bw^WJRc}8g2wzoZEBF+p!5Q= z8ySPr5vYC!l~16y0lFGc7$d7Eg$?o-C@p~UKYAT7%BO!j0F*yKZAn<1g6n?|50tZi zK=lcz?t<0Fpt=i&!Qx2uGFTi||2sQ__tb&(fzH$e*#XK2pgs|LT!Z$Tfzll)kAccE zP}u>}2R0Agd{8}$MGU4E<|Y`8E{=;2vJVs%pmYyPr=YersQw50A5_1Sg5BJ}^)tu~ zpt>K_<_DP#%6Fjg0Fap=^TG9hX({*~T2Ox%R2PHFYj7Ezl?6W26I4Ef#6k5ps9ph; z7ohc2pmGjWMu5r!P@Msq2M759lwU#ahviEU8&vLq%05sX4;q&Ql_j9DVo+Zd)E5Jd zO@iuUP@M^i8&Ew7>cfJ{6i^=n)OQ5c9UvNHA4m_VYys76ptA!&?gRM|RPKZ91C5`6 z%2`l522{6$+A^Rr7&I0Oayw{_5hMp%hX|^NKx!~>P7X?a3vw$6gWL(Kk74yb$nPM3 z!Pa7f`YoVx5mfhrJ{9|{UTP&x#;5mwg1!U;x$!WGn~1BEvz3_yKYP@Roj z=fl{bdLLvrsIHz;RtDZP2eJdyJ_5C&K;<0BTu|BuwWUCA2i5l=e}HIY400=|P6ycq zs?$L2WKi7!3R94qK=b*aG9T2=0r?*kH=uGFlpa9-0jUFFQ2heZ3#unT?F3LbgW6f3 zaE9ZoEbtu*Ah(0mf%^EMvRL1M`DKd7DptpfnH zLE~?r z@&JTE`3FRUFerV4@)xq(L2d?}GXN?_K;j@fKv*V-a%y-sLu*23qbu{kQ|5&t}{Vn?$Ejy zE(WcKQTWjMA7mD&Yy!!FFeuG|(jI7iIl4PQYsx`+7*s}p${J8U2GwOCePFwx_JY{R zVjw;YV-v?F22+ntgVH6)?;vqdSb)lGQ27dS3&Q{im2s8!JDpz;GWb`PqDK;;mK53097^*N{<1=R(hG85!BP`L%_$AZiU zm1Cgt3sf(GFsR-K*$om0m0O^BLQuN~l!ibUWFM#;1l6~o`VLgDgX#cKT?#6rLH#38 z7=!wT-Dv9@L28jP$bL{;2s9P|sx!fLA9S1_R9AxPcu=_xas$X+pz<2z4^Z0xwD%8G zPlDt@Z7)z82o!c8w}HYGM1$N5!=SneBo7KlP@4zTW&zm;qCxdMtj>qgATiK*3&;+T zI#3vb+Rvb{1(nU9_y*P6pm+wk0TdRXwgk){u(}^KZUfp62;zg{1XMqQ^nmgU=-eSt zI}y|e1ohoOegf6ypfm!iUqNmM*#T-(fy!)9`URao2nsLISU)IyK;Z#u&w;}dx@QCw z#-O$r=$t-Kegw@+gT|FWduu^vSm@~d2i5x^Y^|^VACxCS_F==|`ad`KKWO|PG$swI zyFl>_N(Z2@0L29;en5N>29*n-GzSV3P@M%zyC4i>!)RnN5F3VJ@}RL1Q2qhMJ18xJ z>Nk*?pfLeZ9SN$pLH2<3f$Bg|{R^T&d~^&m6C@5}gVclK12ldB3R_TE)E)x0M?h`^xe<)h)BmIJ)6&4}{y<_N_k-Gkpfj35egn08 zK<)$i12ldDawC`z?e~M!gW6Ugb3t;T{0wSefa-lv+=0R$l*aM-10)Ah2coHoL1u!= zR8U!jUjC2r2d*sus`o%~1FEY*Y;b)C?dyWdFi^b)s<*%xTHk}pZ=4u<{vW8H3(7Yj zGeGqN$PQ4s3##kU;~TUt2-NogmBFBN3ep3%7tKD97zkst8zc_G=yKS^(AB{BAhn?K z4>UdpO8cO(GfS9pc4=VdX zG^m~g<#$lO5mcsw&ej37A3$XsXp9pSHlX?e)Yk{;0bx)d0%R5_>_A}*ayJZv_@FQc z^#wq6S^;#eFsQBql~bTP3DlPdl@Fl48>kKdmDM0VXgnX(7Xg)DpuRAu?EorsKw_Zs z79p|r?XzUVX7bx67aSn1bsLTVI53097Z5z-YM$ninsQw4dt$^xJP+bbDmq7Iq zE)1%>K=m1@js=AgsGkk0LqTOJ$Q_`t0{I7|4pbL|+6AC+0ktL_!V#24K4g`f0$PADg5C*Yf7-T1m zjg1D$gY=ZJ;_FghB3s_3c4?kQ@ku^nmUK0{I)1pFw^HwO2sxbI?2t zsQ&`$bAieR5C)}nTz;UnI4F!jc@b3BqnH1q{DG_gL1hOhZb11GR6l|8E~tJ2VNe|g z5(Cv)#9**mX#EeW??B}V$P7?h0AvR!AArW^u*Ek_4Jf^W^hAK_Tj-br%xxIHNUg4_$LyFuXrat|mxFfgdE4{|4rhO$9=K;a51^FVq)`a$Ej zVEaL94cy(qbE=@RYEXRzssljv0;qlfVNm`B)uW*H2dFOr>c@fF2B3Tn>Vt#o0#I23 zs+U1y)u8$dTmA+40TkAtassq(4b&e4VNhKGDlb8OM9{n-sN4p%b3hohCKyzPf%Jje z0H8TYP@I9*m4n7ML1hu>{2Wj|2Du+ppMvUEko}-`9%u~{$X-yL0&**;?g7CVq>Uq%E0;pUCwLd`pDv&wT%gVs_>Vd)% z#0R+#RNjI1F@xrvK=A?cAIJ@$um!mnf3`b$ZnAPVHhL^ zQU~tK7Zv>n_3=RMFHl_vaudibP<(*+pgtU^&kkxMfY$1P>UVHt$1%*AxeW1JyN?)M%8)#h*C|p3{4QdaA+zgtx2Gz5mx{MqQO4p#iF^C4414^49 z3~Hx>XqcHGIc#j07&;BAV?pBxpt>5=t^>Il6h^o(NFFq=4Qi)@(if=R25L`%%mA4M zYFmQSLwY*+TyButh{2%n0ksoA?f~@*K<0tU08rS0=JP;&kl#W5d{FuTDqBYJz}5M%um{y2pfUv%H=uF{R0o3U zE)Wf?w?J%A84t$Lx)&^l#D?*~G*bN!Di=Xz8z@bJ(jvJ1=jR8$D--4h5DjW8gVce_ z4A7h>sJ?{Pl~8-Yd?*`i52((C^3mmB^628od>9)=t&0m}?Sq@!f6#b4C`>^92DuFs z9w4=F46W<2@nK^Kp#CPPtOJ#+aCOl7A5`{&+yE-4L3ISEJ^_u1gUV`9od)VNf!g$- zx&m~5EvQ}t)gz$2^q?{pbe1eAZ-dHIZ21l(2eJcHHh}6FP+b6OOMvQsP=6KF2LYAK zpnf8#o&u=@sR8w;LFR+lp!yXwE&!rIZ2*uyP+18w57cG=)tL!iUf{DoLH2>_El`^Q zV1&CpfVja zh7GD8LH%n`y9pFVpn4TlR)WSNK<)swM?h^CP&|UtAE;aerFW2fLFF1~tOHceg7ky* zg4zxsyFeJ^W@HR<3y2S@!$ImmbuXx&4vJ?`ng#U%LFR+nPar>m#`QsN2bm4h19Km! zeE|wb&^$e;O$Kahl4?5QfWCy7J z2e}R8ZV($}AE-V6?e7J-8)PO7gVq9q+Gn74E-0OY>U_{x04R(=?IqCuKhSs+sGSBH z#{k6_XzU3a29N)P_WyzQ4+IAO2k8T0P`wFitANrBXwM`lpM&B9253^$ei; z5fm1rVo?0!!^q}=)RDwbNC4l{2TEt4I0d;GTONanf#gB)2r4H)=?OG$0IHiodow}x zHz@8v;-E1wkT@uPg7P@1zm64y_W7rzfad`~VFar4LFzz$0FC2;@-S%Z3si1`(l)HG z1#%B4%)x0Jdgd2M3>ky`gUrXr2B`&=#~>P?I%4ENWhtmE1i2ZM7Dn;lsQ*Ff7LUq@eT$(hqVA z$Se>I!eFzZ^*uTtn;g0tbUsWEvN)LS>I!xIM)Ex~B$oHyo%A0IjI@*XHYLE@k>M^O0#s>?y`2~fQaDmy@BGN>$p)&HP+17t6V4{D!- z#ymmw1E_uj^(#Q-AZT3|NFB%=5FaE5>RW>9FpyoKvK>^{fXaRl8{}7zdRYArYUhB& zK=nVUuLLRwL3Se7|FHTARCj{fL7;E}VNlrz3MWuH0nPJ*CG7=;Y>aTN1(6(g%>DpLF>T4?A%=N-OV6(gX(`90|RhBALJKMy9rb$gW7|jwg{-rL`wY+ zY8Qg)CeYY3$jzX<1Bw?=x&gI~z;R$|`XA&r(EXF3b||PX3`&orU{IY7!ua%n_Vm0Hrlhyu#uL zM1$IJAPmZF<=1`20VssGSJf3xHQG+8qGMYC+)xN^7970r>;H{2%2HOj`gHAD}V|6hENy5mfJj z@++v`f@5f%3o1uQ!JxbVs{24`78LiO^a&bk0NIHi-=H)Bsyjew8q`(>*#j!GL35oj zHi(8{kQ|JSizY@5NH0tshz4Phn?Yd!az7{ygZe5UJ}7M9VFIe_v0*p2{~-T@#@|4F zG>}=K_5)ZiQaFO_0qs);mHQw+gTe$SoYbF~~kpKN3WPU>aqfzAd4jeUd0IzjFLl|!I8Y>+;X{h;x7kl7$RKy^9DU!ZXj zko!S(45+*V)e9gyK^Rmvf-tBa1J}cOdEj+Xp!N!=EdnwdJRVY3_8(N2g6ckydqC|b zP@N2_J3(y}PK;ufFFax;@EK2e}ngCxF5WlqNu71&T{h zIsxScQ27sPBY^G$1lbQ7n+Js-$Xw7GKu|jaR1bsF0;o;_nFn$YC~QG)2CWAH#Tlqg z0!n|Na0a;%l)gdf0Myn3`3Y42gYc{Q2WBh(C|NK%|FO4(D)DNTp-Y# zGw2)ug7rUi{2vtFp!y$_RzNhU?E=~h0&+9Ry&%7X;s6wGAbUaW1d!W7Z39r92TH5R z7?f^7d=L%7AT~0_CWb5zVuRFxFo=x}qsxK#p#C<92BjsCdqHl+he2rzRBnOtJSe(2i4`Eb~z}nKyeQmZv&-O&{z#9?m!q6H=r~3KxTo`2*_-Z z{h;&!YA=G)4=4;l_JYJ|g+XZnl)ph`Gbj&{YY)hsAisdh4UnHl@xavg=;013+d*|R zD1Ja`9hB}s?NpR{4q9)4>MT%sf{d|=!R4Xz0H87kWCti8fyzj9H-Pw{bOFi(AUA;e z2p}`SW)qnI2dTq{L1ut3J~bdYkQxvMu|Z`N$p4@-3qW;0D9wY!V0Ac14h4heAwX>b z&^^DPyNW>P2wPbE2h}^EJ|5_9L9p4Naeru7g6si_f!Y9|wmc|bgTe@u_d($S3Nuhx zfx-in&p~wsDEvTfAqIo`iJ<;DxF49F{vXtr0oDJYzB8yi0<{4^{bW#G1{y;L)t#XF z38V&8K7s0EP~8P8FG1xKsE-fo$AJ2jpfVm5U!Z<9s0;&*Nr1{IP#OZ2nV>Qc%267X~UXWivZ7Wb88`O3H_31%h`# zCm05`VL@zAdjb@$AU&YC0L3dPEjj@2z9xVNW>M@YpK;t2xF>X*>7vwGw z2Bjky2JvASBnD%{Xl!CIIdW)FI|Q_D5_E4RD84`#=4L`PsJ;YYQ2P_qPY0Eyptci8 zAE;adwTD1y6qIH_Vj#7k{0)j{P&k3g0b~pk1IdHj0KyP@M(Bp!y4j z(fKfOSe*%qcTj!+rDITk7hCv)$_`Ll1e8}mX$7ViL}N1_n;6_)kbBWENIeLH)WB#E z8-%g(L2LCu2A%T@JMYKK3%srmJ(gUUou-4E*Df!b@JJ|?KV z2h}s6{sE{Q2ldfGaR}<;gX%NTTr;SR0h*HrwHZKV9cXR@RQG}U-JrS*)V~JRlb|*L zsQd-h`Jg@$sEq&;2aWB6=lF|?!1tDe>Pk@E3K}l~*$*n4K-x)Md0-9?Dg%>Cc zK{P1sf#$hD{bx}94yublbt%YfP`wBeL&qRF5C*v$)Ybsiv!JyEptu2<3Cc5|vK$m% zpfCoF+k@IAAagj%{Vp!pk6*n{fs8I_g)L4E_d0TdpfbOtgX z6he}KzSENgVG=nGeb*pmYpwyO@}O*S3J%N(u(~59Bvc8wVDbApIb56pUxg9Hf4* zU{E}Q)`EcY5jk!GomU1bFF<7nC_jv1L>)YkVF4<;KzSaNCPDo*P`v@G^Fd_@jE!D@ zf$J``Iu=ykfG}JRbPfRM{yTT~|Df_2WCy5E3o37L`59D(f$9!WeFADXfXqY3aPvX^ zZX`Fr#9=hLJ`f*W4w;Y42H6kdgWLdeJE+|bs>ea+(Sq6qVC>-m9_t6O!E)Z-;66X7 ztOu3Dpl}7*2?|4$@PoFcki|fG3lu)&#KHo6&pc?{9#p4+N!xKA0!XzBZKNcQ2h$3vp{tTsD1*4EvOC#?O_M?zd`;6r7=*s3u*^}!W85VP`wIj z$AH=mpz(f?c_9CS%m(AUy#Js&2!=s&p!yP2mxJsA`5#m#g4$-F@CKO+@-Jv!0_4AG z(0g}4ZUnVcKw}D^um|mPgw^MubOiDnXbb@~jsa>TfXoMl8ED=DWFB~|-^>iWzYkRZ zfZ_?{XOJ5};R*^95C*vo#0SL(D6BzhL1_*|gD~hEKhWG6D11O|7LYoSKG56>sI3RW zAU??LMKLk|?Tn26gX($E-FBe*8Ps+Ijs1i63o$_-K$?Z1VWT zamj(knLur2P~3si6|y@)ZXKx@w3ZiC7J~CG8EqC&8XT?r2S=R`DuX~6lwU#RH>g|! zrE5^R398>feOpl7532t_XBIYN6`@L2d!L2{aY}4jX6~fXY{p zIuHhh4=AiaWihC)1nNV9%1ThV3z7rd1FH8y7}{n5>4Ra=8UfJQD<~c)!Jse(g&SzB z9yEpyD$hW52&f+p>R*D!UqN*~2!rMTK=mxBTn5z(pgIq5(AX`g zt_QUXK=nK*&4A8p1dDll{|E6w;-K^c>c4~P7EoIfRPTZMn4o?tsD204b)b1=kQ+gD zGe{0pAAss@(3%2J9SCY;fcT(x0Z2V)-D68u)_+hR98`CMFo+FO59-f@>SR!z53(23 zo&lBFp!MspFa*ULDC|N02le?ubu*~$2iNoY`6zWhSPa?@0QFNr^)AQ_pgIX;52!x} zGZz%kAisd>Wso00>Of|L_@F*Ns9gXW;|GNS$W5U77!=+hb)dQ*3uAa{YrnL%k2tl(AYodt{4k#ZNlgOKNkMOB2ak&uKz*f+R%AzP?-V}2hl`hr1~FJ27>Yvs9z1T z7hAl8(if=w0`*@({U%V^1+P1ybuPNyxZH#;PKXaO7p4YAgX{*?@u0CwP+uNgHd|SN z@3aQBXJ8oAeuA+D1$Y@)G;tqsC z;R{-?0IKIfbtq^I6Vyir^?O0*3WDl<7zWivptWeAvKCawg6ad%xG<=G0oCiEIu+FS z2CZQOjopLhi9!7$P~Q+V)&WujN-Lmt0;rq^wTnPwNud5D$Q+P=Kz(IUKM>Rx2AK=0 z8$s<4P&k6z3epFvmqG0Z(0D(n`~}$us`EhgIjp_|(I7KGbqA>41FcU0l_{V)62u3o z1(i=A`#|9U!k{t=l#W1VgX%j_{~V+rG%pX*gAaq;54u+XRR4q8M<8=x{T`6JL49IS z{}9~Q2c6vvJ&zF7&H;rrsErG1D}dC3_IH5NHK=X_uQwOqiN zkefjmG!6u67lFnkK;Z@Q8_544KY+pz#0I$!)HVR68&I1IghAsmAUA>Pcu?Gd`q-c} z2WoeK(izBH(4Ia}oewexgh6J3;vG~Mg5<4qb^qHL8iM!!gX&|DKS1pgkQiuw0o0zw zhQa-RwDEsX+=AM2pf(C9U4X&@)D8go2NZ6gbc5_~kl#UiKz;+I1CX0QGzf#(APi%J zXlxj!h7>tuJ)rh3Xx%@kJq*hGus8>~ZKPw+xG<t;`=4 z8yxjNXbcWio`A}BP`!nMq5V}*d4i5XWeZFUnGF_$*8doq@_* zP=5uqb_SFWL3+?J%q|#>E{~6oOAm%PZ2h8#2W0-j+#GzL0jT~0VUT~2F(|Er>R(WL z2bHIw`VmyugZ4RrXb=YZ2UItL+FCFSvKNFwZ48hZ$Yzql2F){q)(nH{8c@9oY6pPE ztwC)8&=@|b?giEVAR2^0V*{Wu0#F?Qst-W@c2NBQnl}Ko3qWH6AaPLr59+sq=Bq*e z0=X4bZi2=GK3gX%HV&AA{;&P@4c`4yZl_)lHzZ0P-iOegU-) zK<)&o0oD5;8svUZ-2`$ENFT^ept>6*4l)na=LL;Pfa+6FeFq9Rkl&HR3e=VY)iI#4 z0?>Q`NI%GaaJ`SG-w*O5sI39=FQ~i&nFDew$ZSx30BZk$!W3pE$Xrl;2C6eabucLH zg4BchNuV?g@*Aif1yTpYpgIs#KZDvZAhjT~LFoyUK0t8=QU_`ufWiROHUotL9A{+pg951x&UJ9e^4C`ic=T{wd+6_G+qMoBWOJdC~QG(Q&2vE#TzJW zL2V0Ae1h($0=Ws4#?b3>Tw=Jy(e=alAoU;&u^4;bLa?AJjJ(t>*`>p2rpTpnf>0JO#DsK;;~$`~mg9LFGHR{s;BBp?y|R zy#*>qKo}$sqH$rcysInt-ak-#0#x6D@;)fdfaE~+JT^Ch#6jakpfVJc&OmNKwin$# zkXaxx7!6{BFghP32Ey3Hv5A4y!Z64Up!x>ncF;HpsLlrU*+G5+^^rh*K~UKUIv*7j zjv#fQ`UsR?Kzc#u!__)C{0Ei8ATvN>pzsET4`}Qhq!v^j!s-K%Iiz5aK2R8g*5`rh zWKbOrD$hW5GiXc|w2lrm4*;t7Vf}tkUkg+p!0G}}9}`rMfa(`ey#T6zKyn}&Bo0y! zax17G2dX1M>k2@1GKdZ8dxFk70ks)Gbq{FmJ*fT%`4LoqgUkb!`=Bxx6u+RpA1M4l zRixT0gzcBzr(@`#0G^U zs1FUQ??Geop!yWlmj?L@IJt!T6+5{jqV6`PB|3NfJKPawYW`o8lKi##^*8UHoL3J}O4DSDGzI|bTY$zA zK=}e>e@AZae~=nb{SUGa6n3CA0g?x$2~Zjar4>-UjEr%KVG{@GgNegvkQfNV_%Irj zS3rG#P?&()wV-qaa?>a_2d_T{jrW1tMWFmlY?y$;5R?}{;R#Bwqj+$&0pRsNbW9sm zE`j>0;JP1F@53;t|Bp0p4JuF2F{qwH7X#&aP?-%XH$nX&P`UxB1C@2y(gH{vRGxwA zQBc1Ij=y)fb>L4;h2n1fVh+)Ejba@bxpkUVJJ7O3A0s((Q1(n0kRs2u{T|3P&;NDat5P@fi5|AFEcv_20MwxGHU z)II>&1*(fcW`Jmr9*{VQ4e|%5zYMC=LFz%~gZ2@?(iAMbKw$uydjXa2pt>Ja--0lx zE(G}%WFA;QbdDdH4RRky9<(M8WGBeopz;f3HppC1-3e;nfa+&Zn*y|EA5=Gk(kv+6 zKx#o4WIrgJL2d-u3$h=i2h>IawY^|%NwB%5rvE`>_aOBkdC>YuP&k9@{;Vu;eGjV3 zLGA*D2MB}MAoqdN9jKiH@++wB2g!ll1Hz!N1kLM%;tCW_ptK2^2LRaxY6pVM0I31# z0oezNOVB=iP(2J91AxUFXe}Tp-GjzyKxqqa{f}k*A5_1CFlZbGl;1&p3=jsn85H)Q zzCLK33@Cg-;Q_KAl-EGx7N9mONF6o|O4}feO%7cQpE{Tvhz5lVsBHuqp91+AoEvD&4HS={I3mUjP`rZr3ZQxhq;C`tuKFJoAD}To zPrQNJuo!e-8>pND)o-Bm0!lZa_9Ljw1lf&_LFoiE z9s!yY1=X9NIucZ;g3JS95E~i8#9%bC9Ec4QhtVK05Qgz#G)N2^2G#GNG7og_6{yb- znwtQPWr6Af5C+xppnHu$;RZS@0Hhw&)&cnyRL6nJdQiO%suMu@094`3qKy@vs3h@s z?*fts)rlZ^(AqLk{SWdxsLusb4>AL!A5^!2Fi1V9jsn%0pnYVZJ|Vbn&dCAa&j1Q9 zke^}U1S+RMX$@o-xXy+4w?Sj?ps@u|od?1oHzQ+^7|1S=+d%91K<)#jJGi-KX5h0R zL1PXeb3ye!s9p!vGobb@$Q>ZNL2(D_BZ0>2L1PUdwV-+*W+tc)1RARVnF}iCL16<* zbD;JRsNM&iy#xva&=?3PtU-LxdIHcnf}r>W)uEtp0r>?~Pl3`Ss9p!D1=aPSumb4^ zVUQRoEJ0&1pf(dIpMlaJC?A5#agcvO>OdHz7G!=wRMdY^dIhcZ2hI0`)-8b2Cukib zD9sRC|AW#741?-^7#oxxKzRc+1^~L329$0<{sFa7K;Z$4OArl8GoX4HH0A?JyP&WJ zVGtXHL2M94W`p>oV31xA2I&Fi2hciK5C+95sNMp_6Db&!4oFcCQw#DhC?9~zU{D$Y ziG$J;NF0Pg{DHtAyFuXqDkDL01R84tjT?g4pmYI>Gkop>=?ATW0s2NAQ~ixFK?mC zf%RKi{Rh?gpt=oISAzOhpgJ04A80>3sEo^thydR+1}b+!7*zffi$V1SsBQ$610Z`q z{sqn9g6dCXGeBxUbt!0m8dQ#f)NQY(2{HpzXMx-W z!XR~^HEtkxgT@v>^(bgvHYnUd;REtBC>+4yXKwx1Ju?6wK+iJ z;GlXF6y6|rfaV)O;R$L>g7OhaEhyYT;RnMYb)c{S#Xo30J1EXT;~5}xKw=>EAT=QM zAR1KvgVu+F@;s>i2hIC~+A5%N4N&D&5327$^*%ZV)f=F`1}Hs( z@)XEjpmqz$kDxLElvY6D3Bn*XpmrZi7bqQp(imv%2xtuks4M}MmmqOangO{1lny}{q#lGpVzkB} z`#^aC)ZPcRAwgq?APmaapz#1gVFYp~XuJuOen#=Y)$#bk9#npS`X!)x2~<~s>Ml?@ z11bklFsSZF>i>hvGlCe_|M&0!_bWi@0aUkv>;Tz|%UvKj&|YoO+$N|#1?2~jT`(HN z#)q+~!zPB!47fVz*gvSQ0o75Uau37?m4_fVfx-yHN5&w%APj2nfYgBMdyrmG9tM@A zpfL?l7=!!;%G;ni12ldMs`EkhA*g=_%5R{ukx<@3&-nhhk1v7Wi&CP@fUxE|A|r zeO!>8APnmFf&2>^_XUkjfa(cQ9SAZ5WIm|gf?-g73^E_IZx7TL1oe4AW`Zy%3_yKJ zP?&=1W02XPdKZL2bub8n%ms;qFs{0PLP5cQ&^kg;-wzajAhSXH2SM=wn!^CO2~_Wc z+6SPz7&Jc(id&G~pgIdwcY*35P&)&p22|&R)Pw8<)w`hh1(^xLpf&|4J%G|asICX; z0fj55%>=6NL3KH(eh1C7g4#2n`Vy3$Kxqb)PeE!yZ48iFP*{N0)q%zdK;Z=nKNtpu zF({rvc@0#@f#!ce<4&M911Qac+Et)50#XAq6IB0$?id2u2fFLeMqeL%_Z28?L3%** zFQ7FppnQN0!|VTmfd8QSABI733u1%m;NbtDIR;Rj017uy`f1O}`44IXfWj4I7f2iw zPN4h)if?eeosjS!OeZFS>ugY1!}vI9kRA|DO#BZ@^B_H-aVAh$fabkG^*tyIKxh1c z(k94$P+WoXD5%~8r7c=xP`(8D8I%@4c?#4H2JJZn(V%^>pmGr09&mRDuR8&SJ1E_O z(ho>4D4gJ!f;~gH{0S=KK=nQdgWLy-J6Qb>k^{K`mtK&#hn3ZT(0D1xA0R)D;=$Jj z0L2X`AA-^pDD8v#B%ruOuKPiJa9s(l&%tc8F#%j+Aag+FBPi{H(kiG-C6p#WZUU86 zAoqam29?Pm^I2@pt29-7f?8X#sENd z0BD^(sGI`15rjeh1eLciF;KY)QV%M-L3KOKK9Kn!vtSsc7lc9jL25u_4WRr(EC#s` zRAzz7FHrpfE7L*s52#K9g(Jwlpt=xL)`RK_5Qfzi#L_UmpgIRsW`f3%L1hBi&YT?Z zTs7D%Q2n2m_aD^11D$68>dS%3UeKNZP@Mx(59)`4`VgQ#9;mJZ)$t&`pt=@>L2Qse zK$h1Gx)c?*|2e+XNsn(D*T^T?1+t zgXSASaR&+mP}>Y-KS&&O{t?KpAa{Y!)@+2sqfZ_=hzqH1nx)YQyKyA9burTm_iJ}7AP;k>LwTsN^hXL z2_y%iVHlYYVuLVD4n%{>98i4-sslmk3e`!G)NBAmj&qo=?9q!!XWcN z7?};?nvvs<%NH z#0H7M!V1I(jeUdqX|Q$yNF69VKp3PJ8H3&B>I$}#P~HN`gX$AdSq)-?%mI~apz<74 z#)0ZjQ27q3S3z+Is;fZj@<8*Hv@&hz6MhawDkj2i47>x(ZYt zf$AfWUqR-9`iY>h1oh=$^)9U52hpJUc~G4V3IkBxf{a1+K1dv-22@{z>JU)<3JOaQ z2E{Sx>|@Zn0Z`o!nvVy~ql4N6pfCrmjRUCxm4l$V7-R;>4WN1-)b|IO2dc9{U~gK2Q)SUP7`i!;5CAvdK07$gh74- zaQP@4i2Z=f&%=>df~sQw4l@t`^w zlt)2l0fX)W0Qnizh69}g1j+-T`UV>Y*Z-jLe=PlfSiJ_KL3JCb4FHQz&|Cz_y`b?7 zkpDsT94M?n;R|XPg2qTd{s4^yfH0_D2Vsz(Ky6A88zc@on*yW`RM&(1^%)ueL1x1G z_aOD4GzbcR(3lRWp95+Kf!qN~qo8;KVNhJr1B2>+kRL&HDroN}C~QD=KZpilQ2c=S zAPj0}gD^-fsI35^LG>{xtU&1!GkKx#o|f!6xL z>;lms466S@V~HSlfYLKQGeK!LZ4lRep!_q^F>?J6N{^tn04Ux-^$DonfMHNMf{a0G zKztaD%!Z3W_s)arI#5{;N>`w=1yqlM>JVIE4{{TzTm$I=nFV$OX#N3;!D3K0vb``i zNFKxnVQg%W7z~5dV8zh-A5?#X+zoOIXssWpeFQ2KL37t28dN5N$`CNNxBm|+w?Xwi zIQ-n){)6;`%m?`a)TRNq4WRoXVQdf$(gUJF?gGUFEMI}_2Gx6@ybKcq(I9b9JppQC zfXWI`e+E>Jg6d^Z{ST^3L3IMCo&e2hg7kpOK2ZM>q>da6s{cXdF(}?ZX9R-kZczCR z5(C)w@Y|kT|Fw0@0v42~QYdd z4GLRO7=Zi$qd{dJ$X-zU0HhyO=fg0lt^@fSR4;-ssGfsiP~8uz8$opqNFQk59=z^1 zHU^Kgg6fLtWo7?CYCvpIS_IXBpn4zFmj}fYsE!APC9KW|(I7iPeI}53pmqYtf1r2+ zxfvt|YA=Dz1g+@3aHNt>f?gU1(^v7JCKKA=1b3L|6;77q;k59;@W!VM$` zs`Ekf10a2%`WRFXgTe^J2g!lzTadXR|AN|jp!flevw+$-Ape2<3QEHu8iYY&=olmp z3MZJ^pfejm^*%BNts@4NRUor4^qZT5`!Jw111ifw<;5r-oMQl>_yN@+p!5NXb5Pm= z#Vfe)0b2VHJ^v3>j)2k>n1+u1gVe$J$TVCWTm4VOoDj%Opgaqzb3uI-Q2PPdd=MLM z2h=SfF%Slc!!U@CjzMxDF%S*HAT}}viGeW4ub?s#)W!wn2T*$&RMvvR3M_7C2Oj?g zrG1b*2!rYfP~8ox`$6FdD)T{lKuZ6^YET~>G>4099>^Y0Sq%ygP&o@K^Fj4LXbb{W#)HZ(P}vLWlY;6l z(EdS?eo&nb>QjU2a!~&d6n-H8!u$;?yFuk5s2&8(v4hm1W6-z($UUIC9^_YW-JhTT zAH)Xv0c1a@jQ}$rRIh`=8Wb;}{e7Ud0HAsiRL+9j4{|4HOd3=Vg67AY)6)Kf+72)b z>i>h>4ssVL&BELZG80rjg6eWmI|9`10oB`}dKZL2aRbr^au=x23Q8j&{h&4^DD8mG z;028%fYK6Zya{9uD2_ql19BfoFQ^R&Y72qw1}Hs)XplQWZUluRXxs|aRs_{?ps{*T8w%uZ(7XYt z?FQP@3K9pI0ZL1tG!81eKy@D|-@w|RpfLqdIs};siW5+~43ws5g+bwZwYfZ_;LMu6fE)Yky@Z$W%8My~%sYyUtPN531n4u!L! zeQ1zbp!5bx8=x{2WCzGzko~wYsO<7K_It-FsMBMaz6-z)PTYaR7ZfyMvz-U`ayD_au(!%ka|%04I1wT zV-Ju2pz;+Y4^j*A7swnC2JO!VmCK;=9~2)T`#|bIeHoA*Q2PQ@j)B^0ATdzA3992k z^#G{;0G0EgdKuJT0*Qg@6;OQ&DhohsyFm7V`s|>7DoCDG4608-^&=>5K=y&m2KfzC z9)s)xnFp#%Ks31i&CB}_3Lj9p3o7$LWjmMD@` zK;;z3zo4)HmD`{)2~@s;%mMYc(d&H>A2hcBawo`4aJ>(j_lMT~AaPJV2{Ip4Z-C+l zw00jfcM2NE0M(hGx*t?mgW?L*1_QMXKz4)T7gYX%%mlSNKy^Q;-k(xd_8+vy0u&A~ zcYi1f9e`+1pB|JxL3JSL>_3qIL2Uz2y$;d~vLD0;g$<~!2;zg%G^jlRsvkgc z0Xl~VH2x2&|3PaWQUe43Tj}fncQ7&epA#PbA9N2UC@etrDYm*FBnGbkLF51a{_uJU zWIm|gLZO3#!2MZJ-x8EhKw%4N*hP0L4FOYy#Ae z2i0Yuwhy>Iv#|l6$qC9YAhn?M2ErgVC>}uZK@SY7H$iRyVNiI1$~=(YK;Z_e6Or8j z;)DDL%A2q-0)-O{gT!DMBnD!GXb=Xmkuj`I01^Yq!`cJjdOJM)KPbES9=>^sMFbv8Ep!5bR!@=s2+BP7+gVHKU z4y1n+58k>T6gQxF0@XR7vnpmGmX?}0J&K3h<|0ZJ>Nx)RLBQUAi^U^GY%D4l`I z4^W*2N*l!1{~))4$~#d00hL)GyU{V+9;7hMD>L zP@f3Yw*vKDLFR$Ve2_dz7<%R`Xp9rGogZlFz zJ3-?Pptc9d?=TFicR}Kyx*t?ugVqv)>Jm`h4q9&pTB8JNcYxYcpfLeZc?jy4g6a@Z znGT9SP+ba=2el7Cbt$OspIBH3-b)F}H=uS3$UmTb1gdvHaSF;ypz&#tpFrUQ8lMOG z6%=l;umaKG`aeD%yhjEUo}lp*P&|Uvg6eco`3|c0K<)yS@31-^Y)IJ8q1E@_2iXTwB5|q|Kb0i@D zgT?|uc>|OdK<)t1$QTsXAaPLGgW?Jl{`AHmyFqq>>U5A>L3tmvei>Buf#MV7e^A_k z)F5L}+Za?QgTe%)21X;ZL1HkBE{@Cxv9V#0UQjrL>;cu=;5s}s^gpOh2VsyrC~tzw z7El=pstZ763~0^(lwLq{C?ItpeIWfX3>wb^wdq0m6y|?W_=CzXQ279=S3u^D;=y14 zgVG@=U4rHtL1h9c9e^>c{|~JXLG>m`97Gd?LFG)erzdz$71T}yr4vvc2dXcLNgtqc z6;ywK>RM1;jLlAD_rTaN8d*I|4CE$ooeym@fX2nZ7J6AbK=}mZMvxki9uNlgtw3r({sqyXJ#HZVpt1oJ#vpM}-U5}OV7<^b7Dz9s ztOnc7#yfP2i0Goem!VR7qq4cRIh{T2~fEXs`p_S#0T}!LF4S8`VUkW zgUkl?t3YKts80#1Z_w)?P(6eXgZk~DIucYKfXXyb*$irffXZ@ESpceIK>9)Ug8K3x zyFuqTf&30CpFw^D)ny=gkQ}J}07?s>HV~*S0BRe6>MT(I78Gu~2c=a|ID^_8pn4o+28af!2eqX@^(n}$ptuELkb6OX0)-1GJV0X&pl||( zABc|)gW?x-p8#mg8q`h$wJktl4Qg+I^nu0$KzS3?4gsY#P&xqF50V45c|dIpkhq_X z&3{n(0ku^??FUeq4{|@KJ_pHz{0+)WAPmX}p!5e?qX`Oo&{_h}{6B0BAn2?g&^dr0 z4B86-Iu8hxW^rNU`X3aIAPlNoU^Ix0j6vd{zAvb}0o5Czd;uDF0l5X#o&~ud)FuRB zkXle&fWj6O#)Ace+zoOIsLltqV?bjnptu6Hvok_M!0Yxw;~bzhm7w?osfA&XUQn3= z@*5}(f@oOyAhSVY)%L{Q!ZsRQvrbw4r& zsRxZIfH3IJQczw2`3scSL1_!rUInGYQ9QWoeo*{?(kduVgZe?BG69r+L3JglzJ<}C z`Vm~0qK*H9#h`5ikXjHQMuXU(G6!THXgmm%K0x^wl#fAW5;65Z$ShEK45C5q0htFj z7iuR~Hpq=23{?Zt3swge1Mxv=6yz=#2Gx(CF$S1FL3KDNzk_$W3aFd|^?5)T zRHuXbW1#v1)NTUxZ9r?jKy@uh9jNXA)n%Y^AGH1sBnGSZVQg^ypO*F?qy|*~fy@N? z57ci5^{YT(0jhgJ^&-eTqA|4p589UuDhohv1Yyv+a8Nl8au=*k0jf_yWdo>e2iXm( zA3^m$sICIp2T}{dpgt0)>;TnQp!yY5_k+S0q#l-DKy@By&H_~Dg6dLG{fmN&i^2Qo zK=nQdgZvD`AU}e{KEBKz%b<-4Ajj$SiQUxVruag*OO;>;~19pz;x92CUBy z8hZe_1LOx#83&3}m|H=5KxH~iAE>!2KCuNWAmW2334N--Up=v zP`dy$#|;Wc&{%PViwk&79H>44$$`=Z2!p~E6yKn}GAPY~+MJ-Y3rgppv<&hys6NjO z3i=Q7D=7bg#6j&U(3k-zY(VGxfaZumZ5q%T0FZtQ9UbspfS@}8Kzji|W`NQ%HVm)- zq4Uz9x(8H$z-Vl2P`w8d2lb6XeR@z_gVGcz%t7u1rDafffy6-SV0jA^)&q?}?G;e` zgX(=yxd2KJApd~+%Ah(Gly*RT&|U*jegWlYWH*D-3dld8G8m*5UpRsM4wDDbAdD^s zDKjb67x`JlQ5gkfqx zH=cY2q<5H^n&emcmEGE8-zjT!!U>sk_Ta!7~IXEv-P28 z7J$S+=7GvmkUCKP4yv0$We=!41BC%7Ke}65g69%Jbv_7#=D|Sa5~$1s`3EEq_6zcy z7ii6lnHl(w3{XA*`4d!Dg34IXm?>!f17ruN4-Oi;1(offIto2Gxn6{tl?l z0+lDAddLL9rfb@al0CY|Ys2l~2?}6$V&>A^VodGIe ziNzrOptu9|RY7Kh#%Muh1gH!F$${!PP`wATA2edS)03PANOD6fO+VNiVqQVZ(e zg2EJ3e}d{AQ2pm)X9uo>LE#I+ptWzH`3+FL3knm^y@H_n8X1H90SiA+m?C3Pc!I|0 zLFz&4+d%CzP(1@Gw?XwBXxspFE+Qz6f!qO#H;}y`w}ZwxKfE9*Zfd_ZxJ9^Rnv0QKiVWiu#Ug7ks?o0s<= z)OQEvQBXe;l%7E24WMuXnG5nChz6MpvJ<4IG&=f!qMsjljR~j@2c>n;S-YU|eUN%k zT@OlIpmYW5uY%$Sq!%=<1gfj@A|t_T06}d7&>BE{L&N`|F#r$-rD;$)#)jebzrR0t zuRkbFfcyi(AT}~a76Y{%LH+@iKcMsu8aDyC2h>Idr6Ujqg$F2KfXo2pQBZgf6b88y zR4#z#tw7_0pmqD8dJ*IgQ2hzQAa{cN2*aQ{6tvGDq!-!Upmdnv>-!(17p4b9!!S%g zhz5zlXc!yDN2k%{L3|JfsRLmc8$`n}NF0PgZUOlR)HVju$QaZP0AY|Ahz7MoL1`0I zMuPGVs0;=9lbEs{R341tfvx{R@dWCVg6d>YKNeJ%g6c?6nE|T%;TTlEL;KGlHP|pn z4~jT+?LVmA1(my?bPq}+p#B}mPLSP%;vba1KxHb(T##Epbv&32at{bY_tAmu2Duwv zx4XLj2bH6s@()y2gUkWdfuQ;xG`9}QcOdtG@*{{1%FiG-g2wkjWh}@%P+A7L7i2%k z4!m?;E@-?5gh6cddI%REXodZp#Pvc3}hdu9s`9rs4M~1%b+?2G>;7GsYD4s!n0QLDnW`o_3pZ_0J2ZQQ!5C)AEgX{pg4IP8R7}Wm;g*Rwy z8#LAms$W2H2P(fnZUwmslm47LN>wg8z6G6!TfsGR~Ti$Q&UP&*T3H%J~7XP|WfAb)_;ItYW# za0ZS2gU}s%5ojI&U?mTZu{Aa{bs!N5-H!6;#%N^dq|ul-@w)3TV6lqz{H+dO>^;8=1z%Mpg%7!_=bl zVd5YfhGA+zZUyBJkl#QwHVmr!K^WBk2elx1{~$J~&Ik36 zKxqV&zd`MNkllpb2dcM0^)JYLkUKzb0GS7(K^WvlkQxvMiG$kYuzDQU9ssR#0@dZ9 zavwCu0ir?e0FWL~ng{J;1+8BLjemmr=b*V&(40A_tObP&sGJ0u4GI@fSqDn%pgszy z-wSHTfcPN4f$}xTe<1gQ#uPw&kX}$f3sh!++z*lim0zHJV4(gDsQkx5FLr|Frs_T(4ObkSW`qQ8?AEXE5evtn_buMWB8#L|?G6z&2fa(uW zeF3r)8wSnSgWL$}H-g$Epzs9cc~BgJ`aYoXK2TVI>RM3w3@T4R@dc{8Kw}OdKY+@0 zP`LuH|Fg5fWA>mn2`J29;RjO-8e;&t1w0N8x_=0I4-u%%0;~T)c7f^$Y#6lu0OTI9 zn8s^>xB1u_Q|t{^r@4Ah1JjcJ40G@x(?`32Oc1<8Zdfz*T4f#L%s24aK!0ZON! zyaLh#+8YXLPl3`oDBMB%LFR(=z%a-xkXlgOgVt|>)^CHt0i+fbmmoP%ngFG5P#yxM z(L`_W|DZVnP(B5XlO*{0{kPE7{cmSv^dFSRK>Gne^H!j?EGQ3P!?5}vRQ7}N6*2~e zD+q(cKr{%0*dPpIgX$WPA3d$D|AX3tp!5oMZ&ucSP+Wm9D7}K>1;hr0Hz+<~aX@R@ z)xrY2HWL({p!y!up!HCowkn}= zeN=w%v6R3O!)ytqd3RKU5@*gPQgD^-8#0Qn>FpR=S8(#;h2bC)z3}(Bz{Rh{P zpz(2YbMV+Y=o}qTekYU;Ky?hL&V-uU)9OFCev`@(koYP#FpG z6Uc5*x&)Q?*ps!UfhI z0QG%AIHBZT3dt9Q32%%P(BB>13>yfZULDCax19r1(o%nej2DQ0GRH4Iux3>K9P{1J$P>F;F>(Ugv|#M05;N2eJd?SCAV(?Fo=SLFRzs5tNTXbtEVp zK<>eYLG=YFj6i*8P`e1!?*#b^)Q$qtAPn+1$b695ps{LDScCeip!yl)Zm=3Nv;QDA zsQ!of6C@9^6BI`vKf=_-czOK?)mUyFqOyP&xwj9YOU0D84}LF;F@J=>ho8^M1$Iipf;YVmKHdiK>4L4HWoZ5015+abw5Z9T>nG&|AFcg zP+dZZhN%Im1C2j`(h(>idAkZb0=tD6NCa91t5+Hh^j9SUafv0@WR$asz}xY>;|T z9|fcb)Rq8^vxDS7WfVvbqz7a^tn38Up&)ZX{RCX@f{BC71@%inW`N8G(V%`kNIxjw zfa-RTxuCilWFN?0P#Of4$sm7$#-a+s!@+lkfa)($c?v53Kp50-0`WoRB&d#oVNf{( zvLBQ;L1hid{~!#q6XbSK-yc+_gY<*?XQ1*LG#?Hc+XvM*pfU@zt`Ai2fG{WwK;Z%! zX9cYR0@dlDa0k_4AUko51AyvpkUr3SHK_at*#lZ9530{Wbq8`A0LF%igJ=*2mHQy| zAh(0+e^6Zy5(DLLPV8ldgTf!w?g6#E zK;;=Ien4>#>Jxy>1YuBp1zR5s+Is*BTaX(-c7f_x&^jZKUJwSAA0RV8aRX|Dfz*I7 zJdU!n|AYF>pt>DY=V8?Sd3oTvA5^D;_UD7&^SBDzc6z^`al?z?m!q+HiGJYkb6Mk1g?9bbw9|xlZ%VNch`W@ z5~%$I3NsJ}r3;YRAbUIW^1y8cWWAtp0EHFEy`XUx(3lZu9b~Yh<9|?E0+|I0YfyZG z!U>MEvi^h8C8%u)vI8{60!lj|d5~IA_<=B}oCoC*P@IAC8R#4YP)KK?&w{R3#; zA5V6On!i4Jo>XgL)Nv=-+Q{7$uXL!2)PxpY(AT|tx#6TFv2hkvYwvWgE9AD4> z{-%ci9ko>ddl~BfuZjryKQS})e{Wji|FU5J{{iO4|6O!7{=4YV9(x$*{13M_|DWpS z^gkEmHXnDepE5jLQ2YgQI|yfby8Z`Y5F6wt7zXh{;yFGZ|3j?I{yS@{!`%;J`xxv0 z&-8KwV~`$@S`ZD=2ckh3#74&GVlY082B`(HVHm~-(IE3dG&%;U1&M*=^L#!3qvKpO zF%UoB-}`@IfY1LRbL0O`+Uoy(jrIR0xjOz&adR5QLm&(iobAE+%-6&KobMuREdEE? zTK)&o5y&)@9cFF*KitORf25t&|7d&b|1tK~|08WJ{s)>HgUxZ%)%@>mr1wA2)bM|Z zr72iVn3dUokhn86&${Yr{*Sb^1m`P4=_K0L^1r8{&i_y=Gq4_zouSs||2++K{)5c% z(ANg%DUf?XMYn}zJI_N3VVi7xj4 z?KM>X$J$$i%fY_%uknHYe>$Vp4>f0Ui&|BjS||5I`@z;V_IjyFi0^`s_(#X#W>st-W^>d#2|560=q z|3Q3^nu%Fy|EJ|;{x1y)0H;S#`3iCuD19WkIDpG3P~8C%ch}eYpXToTALLe07);O0 z`j3o3W`W8$P?-i&57LK>LFVT9dHwItO#R;nO%LF3OGyBS0m!eQ_$mtU0q3V+3lnhO z0o5sCmZso51Ii{t^c%X3|(AhwsejYCD@8I~qZ`alT6StrLU%%=6|AMs_ z{%5Q_|37o(1u)Kl)91nBFg{2=eI-cj!vCz*7yqX$JNrL=;feooi%$FpsVUlc5PK9COdG|7L1120g^|>AbF5mLGqcaFZ?G4gW@Y|^`-yGV1J$X5AsXe@^k;wSDYWk zLm&)5c`9M?ssBk!PJ=NheS-2I3cdU+I8UOApZ%W-5?_AifAZ2Z|3Uc$lAe$MPgr#F zf8vr;VDZ#tXaA=xJp)efptKHB1HvG)h)E+LJ3#IO*#TmwEami`0c_2HJmYn(z zaw|w4WG9H9zWn_E+_hK!7jC%zzi1-@7jC%rA0N)&aP@!jrW^nB)?EerCvovfsK3wr zPXYNA>JLypMmGoD9uOZCwjjSIFFg%52joVOzd<;D@yY+7d{PW5+csYRUx34Hpu8Bn z@HjXO3pd{Q4=xKgTnGCtfBm)p1?#W=&tHcdgWLg<2icju<}%nGkX;~iQkS0tyP;$g z$lPmSIZ&8^Fh~u^kD%}X=?BFr$ju-?Ta5IHi=##hY$oNmn2@LDCW^ zOhEYyIsQR;B5CPqa9RfCgF;X`1;;BQje`6KN|PXc87nS;-3f9VDE)!-g2X{|{<Z4l#W69uVDSP|KK>@aQ%Po+RNa&CS~~X^no&6uV=*)k=nTP+|_3iqf z9Uk!?G!FtA?*R4nLG?eV-Us#lK{QAlSN$L0==i_;{FncpJHGz+*zxth^Y*X*9k(K| z0}>k~j?4$KA^6LGr)^*VJ8b>(-+s%d|F)Yx{{u6~k?uLdD%wM3eg86lnhNPdt8V;bi0>v9L z4Pv8XkQxvMiGygnEua2_@n#4O5(8n7JT?rHL&hLA#Dob*9Y`ODcG&V6Y$u!#E+atY z#Ak3Gb>9B{zw6E)|J`=}{O_{k`+w){-~KzHVUQS3yyH7qAE*ofl{26`3AT6Z7jT*2 zuoY77fZUC42FMEX8XOR6nzJtptkXfkaK+FS)gZu(=D_9TItsrw?7$go-0}5+f zP*`sUxdEadq{d~(xBno!K&c2ARG6+kZQ# zoiM$i@)=|n7{ki+ZC}CVHps1@as%Wphb@q@+;RIia5#YUf$Rmzf%JmPc941y2H6XW zJFuPGzWxW(+rNS15TplgH&_f5x2V_!6!$y6gVO=XTo4AC3&S8kK*I0Se}`>f!2SiL z6W1L-z-*W8-~PifDBiYyfz&xz>KjnJf&2n;F9?I{3b4B%=?xrqP(Oq01i1lQ{KLdR z=7H3J_3eO~0XFaZf2SSa!D-Ka^Jj4Qg2D}^4@M*F1;sT4e}}6Fg)JyfK=moiE>OIK z^tn z(>D-eAa@drP1e5uZ@l&$Jgz`tI1p|gwUhKb2Z}3DdIZrZc-5Q#hO6HEH-O=lum2l> zFesnEXb>BuZuOi0D0)}F#o(joV~~1c;tQk>q!;EE!_{y8gYpW9hUHh&b?^V1t^Wwd z=3x56f75lOV~`mjeGostM)3pK&Q))~X&jU<%+}*K-)!9nuzTR{#}XzWIgni-J3;OS z(I9;w8iq~QeE`P+C=5VqL4F3&VE3$k``>8I+y5XvF#Rxn$TY}bps+Sx`yL)HAoU<| zlQr+a@eGm!gZLo3L4F3Q0b^+S3>Jg3!RCX^g1X6k-Ft96f!qdC z2QmX>7RXKzhKYg1L2Qs1C`=I;6rYeV1j(WM2PB4!L2d=P8x*D>GqGV%`UQvA+V}rK z{zu0kGeBm7{0LHu%?ywj*o^fb!DfK`2gd6^fa3wAAA~`E1;rD{J)pP(v5_%I90jj> z^B-g{NG}M3{0pK%7^EMR-a%mu!YKMc>1x#*aJ+)lg2NA*_CRg`xfMi%^rPro^#+`F zz+tfA<9~~dU;Z0UKmR{BBJw|I-2`Y~3+N0)P`@9v9}w0CAk_aaJoN6r!RmMaP1jO} z&DOsAZ?fj?f1_2e>4R6l`ELr!OKac#2iZ-j`?2W3t1;E8nAly7^C+T?(6jvY&N`Kg}F(?m0;}xD4SHA}5O>F9MiJ_-?kUC=G z3*+VJr|sEq_N z2P6lw%N*2xK`Ud8S3~kH$b67pAhlpSR=@dg25Ms=V`w=E3JVYhsfS^ZJz%jlZ~uer z2C+fz2fGm(S0FVYF_YDA{zKdi3V#p=#U+RaVF(-K4rB~+KQac{0rHRWnm0J>3Xq>b z?f~fnsmF#v?f|I)xeFHtx!VHj2atMDoPjYk>_O&&%z(uUNIl4I5DmuAFbAbCWN{c9 zckFenbdde^*#r%7ZnkY13TAhjS2(+i3-m_Cpi7zT-f{0EW;sR#MPYV()> zhLcYG2leqm^*v}!Bj`*Q&|U@58~|vIH%Ja|{qNxTKW!hR?+;50l+Ymef!&Iwz680S zS{Rh>LGA>FAqa!mw89|s!G1z(*MP)8aSk)qxPw4WXIvkWXU>GD%jQc_M8bRCUAU!ZXa$N%I zw}Hw$N-($_-0%@xzJlBcvI`x9?S{5HKOX+fl-1_1|Mk1~ z{?84M_z&yzgU+P`?d1mTX#t55Q~$^9fs8@I?4X1Or5{k*0p%TR@k%W*kQ+gH3uG6F zO-l^20~817ZU>2hK<0umYzza`cG>XZKdAoKZP@~^|3P;EfzD(G)%!3^sQw47|Bt0+{SQrB zAV0(6f!Z|4Y*4s?(jz@EC>}s|V)F+`jvj6x#tx8MNWq{q3NjbuFHo8Tu}AU1)$7EB zJvbdg$9zF-T4GR|0HqBW2H8c>jcXwF5KJ$q9J5&W;lDMw?82-Yz~vf_I+>6hsGJ3< z0l5q0Mi7mT;qCyHzc}iDkU5}o7L<2D{sWl_VuR{Gbn{?*kiS4?gVcibgJ@(7*AMEy zuX_(}1AxpnTJz>Vs80#1hd}B<>R@Jp>Jg9_xUO9P0bEyt+y(L*$Sx2DnE}!R$H?RR z>)wOsa6xVam5+Eaw44T+2g0B_4P+*$ZUyoL3I`? z2D=|AK0*EjVURf3?DZf1o2&(`Ux18Pfc%DxL2d!np&+%mFi0NcM^OAA>qTaR!U|+3 z$gLn6ghB2AW2pOJ=78F#AoDbgAaq;h}?$<>4TUL8T)|g1*rkafy@SlFUUTS z{UC9W7)TCe7EC>e2E_qLEvRe;@i8$Xysfr;{jb}+2~qz?MEnQM1Ay8A16BWn`~&g> zC>%k4M2-_`ut8>m%_n2t6y!E?Fvvd8*bjPt2;?7-90-$RF17W5+(8Nkr7@5jK>h$> zP}qX_qj>PP0YGsCN{1kt))-VifzkyGgX|-eHb81XeSVM|LHa@EBCH$-v8jncWh2Nu zkewjAKr}iAiNoE3qy7h(0rD59%mS$gnE}chAb-R7ATe|dk^}XVVeSB#1H;JrL2R&^ z4Ijbd$Dn#1R1d(^f@o0r0%`|<%6?G&2yzcdA1FVA+ySy1#Kwxz+5jMb5QUM-P?)_S zJHc*U|KUF<9zpiO_#hgB5p@vA9}o8_tgQlb3y2202h?r>VbJ=DweP_30WuGaL2D+~z60A2YlDIG zK=gvfHXs-jHy}H}dZ6uHklR6F16B()9~71#H88bcGdFw$uYm!HfiTD{ke@($K^Vk` zg*k|iic!NIQvYv;*Z;6OADO0i{~zRj5C(+@h(?YVO4*>W1ceOWfITx|hxTtUayLGeXP47Llp<^{wiCM|&61FmmZ zy#~))gUWAM83rmFsfl6cg6ssj4@9G5kT|Fw1JNM6L1it7hGCEypnL$rX5c25Ar9d-UgY0ZZ4?)f#^r;Lxa}bfW`o@v_(LAKw%83i$Qup7*^hZ#6fu# zM1wGh4aVfw{UCkNF#wP`AiF^R0@3DcA!`;ueh0~c{09mT5Dlsi@nMiU7zU|FW`o=f zTe|@B7l;PixeikAg3=2v3<_gV-x=gCkUne})RzZ^BeLCaH-PJ9=(q|f9+2`8$ZeoB z0BVDQ)PwZHFsLpAg#$<&RELAqg5n4iULXu|Kcr0uX&->pfx`&A-{8Z4P#OWL1L*~s z36cl#!TLa94ILW;$$`uPxdX(8n1Nd7gT-Lu|KR@r;H&>ZVFd~^kRP$d5jkQYv%uye zwOK*&Kralk8RFH-Aa{c5UXULU7!;?Vx(P&sFq92)KNN%1g8T;34;m*i#IhzF6ow!>L1_ga2AKm3 zPf(a*!(g+(bv))+1V}%~9Uu&{52O}^L17ERAismufXa9fAEXY1L1G{|u-dh6;qxmX zGeBVkQVYhbLGwC@FaY@-q#uMqeg~;kC+r3sKe zkQhEZ*!usVv;t0p(Df>y_A$12B2^5Ohe3N`K<0zuVjwWcZcyByxPA3&@OTzTZXn!* zZYRhcBw8E8iZkW8pux|H-j*!tOl70 z!l1ka5(DW)HygxPlMbE z!XR-lrljr%>4lmLG7IDv5Dl^y<~~sU4=Q&d@d&EhNWq{uhxWDCe*llOgTewCgX{!_ z0mx2}9k?(^9u}6!`jOe7y`>h=br#sd6C?&Q2ej87WERM7aJ>S}%OF0;-yjU~H_Tli zeV}?CBo9&#qCprW4pIwZ!^{KmL3V)B7y?7q^nvDdKxTq4NG~WJLFQS2`|{BC3TRGZ z&0FyLR7`U)!+tQ<{~&*X!UR@sAjc7@Y>+viumz<{5C)k&P#9!C$Svr80EvO*2FhLN z_JZ6(3I?TFkQpFq>`^?p>U>yyfYKT$Ux8?PU{L-8*#}7*Z@_&Ym|L*Y(78}h z`3WlHK;=2490Sz_&@v9%Hw4L31B1;+s$Z~$3&ygD^-vG6tCk3OkT~_+ zlLyIx*dTo%`#^O#Obir9AU$9V9*2O01t=^*YCz_|XpkA$)Pu|gVMJJi%)pKZOZ^WD zdk_Zs4V2b##Stmuu~ z12boo9(-*8P+9}!FHk& ze~?>H!Vsyg3Gy#;{DJ%i3LB6fg!miqSpgt%kUY#RkUWSFqCpsxFF^fxklR7=fGh`U zKY-i~G8aOF&KGzOo(lr$g<+5$kUbDJpm2j>NcchY!^E)D16}`v{0_q)f1$?-xqMLA zm_g6=1Es&gg3Z>x1Z{SPX$L1iPPYy*{N5DY6%sZB%5%8&m+bGIP3qK6Gg41_`Ug4BX& z7zXiS?u3cKXplIl-T>tbkbZ3Dg2X`TKp3VEnFiIXApJ0P$a0{33NjZ~4R*sv zP~R6h+(CNa7@BuMZbZi*Gm$Y!56BH546+j)gTztn2aTzK&Qn|q>;Hq|5PLlY@;f3N zL25v1A?F2w{EmX5Z5~kiz=uKYN06IP^rDR)pv!^60NoETJ}3;4`|66d*ZJc!6jb2AK=i4{E1D&(H#?0htF9M}!BY{)g#<)5z-uz;ghga3c*9 zUH{wL|HpOz54rpQLFow+Mv(o!=y5?7AG#hBWG>u%==c;!Y@jj7O`teN_8W)~au-Mr zL=Q9uxq~DOT>}8}2gqNb^f}Oe7_}d>4FHN4Q2c=63B;xs2H6M0gyIF{CXgFJ=?_%4 zL&`x&T>xT(%1l~ekolnc4rD*by&$*1Fo+MrkiHqB4^GG}ATvQ~Kw~Z-b7AJeXpos8 zHb@-^gVds9P+JJ37t}UEmjm&^@wZx9gTfY$vDE*dFo0o@I*|Lo?uVWk z0dq4*92tYeVfMmkNPP)8zX;?%NS%hejsocesRPA5s4fQi8y$nz6TsAf)M3LQdq8%h z>m|eo`2ke_g4}@(!@>nbgXBT(0MU?efYkjUGeF@6QUekP`2!S3AaPK?A4G%NWgvYZ z{h)RVC|*F~APlk}EDo;IA!#4f)&ThjWF82E)PeLM)Zq?OP*~u?15y8j!Ul#xej*en zq{xH924*%WdyUG}L2)n`{4weV)HVPtuYuAZ zD30ifL3V;Lp*R7l0gcsy(i5m$hm>!SG7!WDm6^1}AUi57H09 zAbC)G17s%1Y!C+3VIVoM`5O>zAW(e;!XUdq`oQwgxoc3G1J!w;aD!m{^%SUm1&Vi& z8K5u+*^i7tc7WvZVOV_%N=L|giDiTQ05SvQ25cDO4_KN6`R5~eT?;6TK=BO1AT}th zKxTpXAPi!I>TyuGg2EEn98enpqz8mSVF{6gmZYO}$l8%Y3 z|8e#GLE@zJ{~=+3IAe;~I3cJG6egf?A?W#4pmZ`AG06X*w1Dm(kQhjAu(%oI7Eqc5 z(@1N4aq^*KSRj9a{4!YlG3pLP8vs;(z~ToKNA$!XyFr*xe1Oz|FsR%GmGPjm4;h2R zX^BC0fy!Sa(7kM+G6gy=3#vA)}?t}KOfy#d5a0i;S0;nFaDQhz-G@Ito;Gf@m0q@ImH);~aFpA84N{+E_iz zOo%ykIwu!{<}pEbf!u=&gWLd;1GN)CY;))x63F2XGXvCa1i1+m zh9I|s&Ta&SDY$J2ZYP266ol+=0I3C=3tsO63Lj9|AkOR95UMg zgzA6L9RP*V(f>hr0)y&$Y?zq(9~2f~3`%dXy?to$OKyCD@&+h;L3sl`tq(RnC=5Vu z1?4Yf|ANvDNN%vW7vvUDc!FsX>wieOfv9%|i=RfiJ7DPzl>X?ALFpTW@x=kiO&~Xd zXi%97Dl0)W0%NZqLFFYiG00v}y$8ypAh&=p$X#Y@LG>Qy8a+aGgWL}}3m0;y639Fl z289WzZ2(e(&m2%43UUJ|{BWrS)kUEE3NagWuPOFC2vP&bpz;_xe+Lo+xd&tq$PAEs zKz4yJsJ;R5K{Ut>=4;=B>w8cc0T+kflLKmpfcmK*IgqTgWml0zi!j!|2g5|;5z_8 z_x*v-{tFNPpC1wNzc?o5e?e3f&bfb3dw@{=4{|#UgVGKtT*!?V41J)zt)O*&pmaQl z=J`SX#D+oP01`(J0}vl32a+FX3~~!74}fVR>wi!>2gMJ_F9YrVQTs8=eo)+iFsK}% zHwL8%P~Qe$ynx&Uavvxify#DB83-%qAblNB`A2IEvKvxgL+`xOxebDG)lram z2DiJ=`h}oy0);zRKe)dPG6S{$4+>vwdO=}E4hH!b>=)=93_2SWrw|P3yMz1=3JX;H z2E6YAq!$#fAR6Qc2o3TB3`6`5(+lzoNFBs{keZMGLFXxgAT^*m7*W=N$~)5g-Jmj#Tnw@sRDXfo1PV8hn?Pceng=oqWF`oM z$^Z~ejJcqE2+|AE1F9czxdT#XKB)#o4#asxPi))zu(2$Zik@`4NJ#)mf1E1-S|24v;@#7^D|u z4k$f8x)@8!~-rpAoD=&J{up%!s2v75pAnSi zKxvPj7?f8b_ToAJ2Wh?+)OUoGagZ_!#s-yv^ui!JL1it>?I1Qtj9mLcdO`b-4CtzL1G~PgTz5~B*?umJ=CN@egydgWFIyRasx;W$eo}$ zPmnt>F=Pw?qz)tp3OkTKka-}tgK6+wKV+{XqW=E?p4*4WL&6CbZy^03cae`l@c`LV zXtwe5f33!i|3h3{{(IZl{P(uD{_kpT{y)gk@qd`B>wk9(i~q4+UjO~=>~PKjAdmlp z(gX~H+zT4>qh_3d%mRfq$ZTYLK>VSAVQvPc1#n#n8|xaa|A%eAdvK)7K~VqW8{b;< z_CM@ydPw;ODWj0tpt6u&7;G=7{z4nSCf9zDd7yjSL3JEB?}O__9OwSy7;^^IGobMi zeDy!5d;zHgr8!7l16ijBDmOv)g5*K{C6F1Qauha(Y5}@u2D%Oaq!(15gVcibfYz&l z`dOel4DNrZT96$ewIDlT@{oE7c}+b2`X6K_$Soi@!Z6G{$equSu^))Jkp4L3bw6Y+ z2FyNeG$@QfZo`Ekarz#7E-@&auw%#?OpqC%a000T=>z)(+MWUNLGqw^4p5kb_+WYD zHGS(LVE~E?tn$ceaj~KHf$Rds8^|rD8$SKlXxQ-I!Po>`?}NtrLG1ug{qJXM`#;ph z1w0-=O#N@X2C4rFYCA&D{lXTuNJp9p!y%A4iqjR3^K=R1LPiG zR6UTsFv!gy`#|9VQcnnj#)?506b4|m&~_b|4eNuU(I7W~+>Hx^{fKl2ASkS`hY@sM z1*#UL2Ba6{FObjD!}2i5FChLX293QBJO;%FD7}ID zdmuJFF*r@&nG*uJ1*`_NzkLJbz86UO2&(rX7*tNu8>6~`vi1k4+y>Q$Ab)}|C|`ig zC&f?TyM^K72AJ*v$1P|tA$0rzWFH8F?bra>p9e|;j3Ma(G)_)z-4AMS!R!U;1K9y;`+)oc@)MYkrCtKL2^@CN z@I+^W+z1i_nFDgO)y7ZYdmKUG2GR>!?*a-R5C(+@XeXirsRr)+zU=ygRnmj3P(~f%pd4s z0rMj%X3mcm{P#pxr5H%nEBkzp^!Vpt=TuLHa@ZK--FF{nKPGY4b_*e)W*ra^55ka~O=6o(-9fWii(4#WpxP`e7f{s*}o=2u9)4;ecF z=>@q7WDY3YLHZ#yD4dAFh_DCg1=)>^L1G{b3I~u~D0uzH|LXPYz~ld*`rp>T;J>|* z5xCw5)%_rBkJkSO?F9hgKu5>_fesG;y=-m&N9}y`Uw`Fm@Lkiy#tTvEp#26=Is#!( z7!7p{@&^cm;v6{)K=A?+A1wX@xrHPQ8sCDh;{w$)gT)`C?trxUL1_&XFQ9ZrPYkMG zKxrLYJb=nbu)9#kK2ggvP}vPCTZcLZmBFAo8Wi@Rx&Xu{)lZ;s1YuA;0@4o)8<3eG zF_3wn`WJ@5eCXU9sQm}Rpm+d@gY<*+fy@Jmf$}=Y43Id828n~!gZ5X0_5i`={6YB~ zS}udsLNH{#8iWmLuffa&nFBHp;%88O_VGWcegfGIIsen z*#q(?NDib9WF|-qgh6Q^BnQGEJ}CSldLe!W#VsaA&l`}i2AL1SATvOAAY;%R4@ex; zo&ni~j6w7N>hB*$S;G%AEWL-uKyw9 zt)P5GFAS>xL3Uxr1L)olNS^^zc7e)wNco3a#(~Ps;ebJ9IVcQ3{V$r-!%$QfGn81YwXlAR6RfP(2IM2l6vSEodD2!+(%|kT^&l zWHv+|6!#FbAZiiq3Xq>bX$j_IZe0dgZKUxI0< zyYR9{>woYX&cT>gL46HSS_7pydSXzT29?<$JJG`hBnER6sN6%8|B$i{BnB!6L1pW3 z!yvzr<0nx5Lk=^LIiPY9ghA$k>I4vmu|eSv!l3bFkQj&!iU$xIR9}H;aQy&XHvlsq zqz)tx!r(Fhv|n)TJMi7Mptc5RP90=7$Xrkyp<|G_AbAiCG7DrbBz}?WcF24P=xiI1 z90+4K50V~W=>_C}VlXI7U~T}p1B5~A$3g84V)TRBC+PY?W}st`8U#l5A1JIr?gqI9 z6b>LZItGb@*@JF!PobHoR1H99{^}C0BCKXrLOLOT~*cp zx+*GQtglYp`XA&UkQ+g121E}>4E7tSU5>Wy1QbVLxxvx~faZIUn+Rg0`X5y0gZwfa z<8CPW30D7u%5CH_f!1tLUIt-E9fP`N0X+T%>X)v2{~uiT52AU0P!18l(mk-yl0d;R{j+5(CkodL5(=hC%f=C|!f?H+* z%!Zi@vKNFw{)b__?Es|tD3CsU7~y}ATcPd-*WsXX4*dHAVQvA1EzGST^Fa22_#h0D z1Nk51ACP)bUWVYe;4uZ{au%cprWVA8se`cJ{s-kbkQp!x8~?X9F!&Fe`v=Vdfad%` z*vZ7?zpI7Ce=i#w@cKVnBcuNY>gxY>p!Gg2>VHsr1*I(*2Ki+;Vvzqp{sP4Va+(Ik z6HE>yKhPMQ_lfEIgVez089{9t==|V7yMNSvNSzBxSD~I*{MV>o4?gG5N>2}b#t&#sA875rg|6;@4=XG1dO%}M&Hs8x zeSTQo52C5k|A*ay3+-=$+%^(0dK!eq&tUO8IIV!{c49C}{r~zu=)SbU;*XK;4p6!R zm31JRo*1-V9b_Ly_=Cs3AooR^u6s9P`v0K%fKm(!OHf>b>M)R5AU=qO)#sr422}1t z>J!M>dZ2O!l$Sy3Kp3*gA{Rtfl0_g+01JtJ=2BYmc2k8g<2fA+(#0FuI-JtyxIL#)Z z{|_4Wo|KG3yJkRfAWAi`O+xvf#pWpvz4-fFzKS&HT zCIG7EabZg9e^7jY+y!crAiEXh-r} zREL7x1M)XW4x|R&gTfnTFDT7}*dTv_#6f05Fl>z@R4;fe z1r%`$O9UAhSSj1^ESJ2MmMa5ae!9y$Yg1YG7g@J_v*Af9z}5E$wFxMx|3UQ~$Uh)Ag4_mTj}#2@FDR~% z(;X;%fW$#~FoXlh9VFp(@BhQf6p-HrgC9oSfT;gL^#CYd=!HS)8B{Kz#{ozjUhYEs zTA=Y^NO=e;|3T%`D8}9f0)-z4gYqV*{0D^-s0;;_ryv?u7lF!rP<{ld1BrpuA@F<1 zeDIpL;IrnD!ye3D4{2+F#uGqxfyyaRJi_Ea<`Kq_dJLo=+-`uLL5Eu(BBEI#@}T$!`3uHJRu2*f@j>>2`~!18h!19O`~p7z zKi=0De9mv2xA%Y0`ajrOf6)Fu(EdM~)c>G3fsQMK+&0oMC=NhzgP!g{;vhU2!UN0M-4VIsjC!fiOrMH2(q<1M!hDsQv-P4QP%Tq#lHk z;{eWI|KUF()>vB-NMG$`k>jlL(NUs&H`hPv-+((f8pz;NlEkp?eD?+7eMI}6egfC08n2Xqz}Z0w?~oY89?p;g)4Y301@dCWIs53z~KT} z{|9mp$b3*+0wxc#6Rr+c_e1AAKx#npAUz;=gW?E+A>$|@aS$IS2Wn4%_#knR7%~RA zAH)aKtKWeA4^j)`o38)#U%hS}_{=}hnm-T*&HaP={MLGU;Bx@%4GnS5{ZrEa2e}s< zHiKlXJ1AV}iD7<6Pv0Onz~n&efy5wpkc3g{e?0fSjnFtBsJH}`0if~?RQ7?`^uVBU z6I9Ni`x!JJ3UUjm%m$SKAT=Nis#8GaKdk%%m4Txev+f6l38+2>oqr1oH_+L(AinXc zH{gBY;PBf3xlax(53XMz>&ZZRVHi{&f#L?#c7W)CoDC0RgW>@s2Qt?Zdaf-k=@X{G*}Mm zcQ6~$-$#}Q=>fS3WG~3gAT}tkfcRkcT1cB7qz?zeaFfV7BHRcy0=j-avIG z*yM{}EI#gZ2f0%mn3k5FZpD2tKI3B6iLnq!xxD?GCV8 zVEa75bsj<<+&>6ngW?~g24oM+?N(d9{?}{S{69T71U&8! zy8j1+{cLUj2RJzV2d)3}w6>;N{~zQwkbgiJCXuNF9iV zse|y*!wcenP*{W3E`rpx;eXIwexNh` z-7PKuJDHh*?*MW#HT@6b6RQ71x8XnkAJkR_xe1g8K_G{C=zJHfTm#9Y zV#pjNs15?<3y@w=*##-LKy?NLgUYgzieX^^3L8)ugX(C|*gZ%b6qca63`8U5Ss?4a zKyv_~u!MyhD11Tr8l(?|L3Ig842D7aL2Qs&Aa$T~dO_+y^$A8@2JXv4>opWMB)&jq zfZU5(|3m6akR2d5lY>EZH^@yeKOxhgdK6?Q$b1k6nQyrA75M&Jkbl7Xpz8oYa>Qb| zUT9kiV&{AC9tsE>GDZV3A5>Q(t49epX#Ec>S3%(q(hs^538V*K9vp6~A^QSAY*4-hsRz}&AUz-q z;)7_AJctb%ZwA#Hp!x^YJ_Ly)V~{-{3~FnD)PUUquDh_+_t?ZBXZV540M*GLJ3)02 z$Q+RSV16Kn2I&Wx12PjGgX{wN6KpPY3?Iw}^-Z968iLw5Ffn{I@|r}DKj3yj&pZc( z8z`;A#lhi&SpNreBiP?yIaoMB)quukp!X|+%mKA)K=y#xFbwi5NDPF*^8w(z3~AfJ z)PUqb@d;B4a}P)!6n7v#xP1X#KL|emuX;InuHRN)|Gy=4%|ECe;0ziAFfszK1q7}0 z$A$IO)c<>Ic>dpD)!Y9@t3hWBzx!{r=G}keweSC%t_Phz_3^*i`caH649wSm{BOGM z!+&GYom-$V1K~jyZXh=jjW>LP`v;T;OhD^jM&o|K(?2YYnSjn{TK54QM<6j;VUxA* z|AR1kng^8$AaP>t1*r$+4WqU1!Q}}oJ(+L#^xtyR=l_VhI29f6I--2ygm~ zWfIDz8AV#6n}d8VK~ z;rfsNtu}xCZ?@qhxV(mleE`QBhz&9eWEV&uD84{(0OEtpvI4scak23;m~FKg;!luT)NuI%mbcjW2^^>9 z8$W^hps)s+53&=4VfKR9pt=<19uOObL3%)JxZJuA|3Pd}S^?z^kXym*&5*QU4%!<6 zEdwmK|N5_5H2Xj3E7j{Wnc9Td zr~ma9J^Zh?@cw^;C6E3aL9yYINB>7LjxbpK@W0-o2mke<7!-bniyscn@LKx#zro^% z|MeF``~zZ-#ygI9r(>P~#e@DLP`o?@#}9~4OANMa(F2S$3=t>A4UfR(2uL3&Ux3OL zP+kFHgT;^j8!dbC-(>mI|E6&K?7zvfC;yE>c#!DZgVUQRMqst8hADdes?nn6P zDcC2ikN$(g1%yHVG+72w2lBhg@+bene0Uf<0hh%Pbx*+Mjp5SA;BYfs z3^NBgz8?QKS_;9S@CBz8Q2JT)5EAB~a9{TLzX=S3>|6d69M+)l2k8N0u>2FSS)lR_ z?6zf3AoebO{9kV&q?`cBk%GbDu=v4$W00T0euRbNlm8|l{<0^K@)TUQK7_CrJplU~ zq!-05s2Z>zLF|PO!0rO61Jz$JH-p$9H6R)kjv#TEIUq4mJb-8uaGHa-2OJjQw1^Z| z;IMlF&W9lNAag+G87+AX&MzP_c$v8vl2<_W0myDhcp>})iX(kcc?*gg5Djua)Sn>W z|JzSJ`rn{s^M9SHrT=w{X8hOBpYq=ze+rleu}3lXurMf?@?S4+@_)^&{{I@8eQ>Ok zJMlkAZcv0SL1ydZ zO#H76!r2r5Yi0NU*8t_4tp5MnIUs*c{BMvy^}liP^#7)%Gyj{H&i-#+Itz+t{x>Tb z+}IrKW{`Vl|2He0`QNZ;8aS>rv-|&RX7&Bo%9;T7J17jmVUY_8iwWR(1@X;FW`X@^ zS~BB544ah90E-zHO$V37Aaix|CjZyXoAe)MpHa~?aQJCvPXLE0hz~Lk99KCL|AX}E zivmt(j_}L8VUr^cunGXs#bhFXLw6Z7s*UOvoA4G%v z3i3Nh4XEq|nQvM=<3HSv(wX3}1^LmaaO!`M9s2o`!D68F2oeMN8>Ai<2OzcJa6nFf zrL(|k)Ua?GIDEnKr86PnS~d%89>@%kdrXRF{5LNLrRACbjfKT-kpE4JrvC@g zpmN!;VCsK3hMH?sIPE_uK0(-^VCsKR+5yD_C_m|CcKufiDfq7(TKM0_$mqYLvGIS< zdjCi_H^_YewzmIW&CUN4+W!w)8xZT|{@=|&_kW1B<^ObFum1(X0snIXe8D)|-v>;? z_#hf2hKxaCFbon$X2bX(8ibMMKx||&5FdnLVlWz648(?EkUR*3_#hgDL2MXC<|DIV z@-P}%4w;Qj9$73m(C>eizt4YP3)BA|#)fbl?d*55)Aa=Bq16VBD*%5;Vi4nw34*z3a zo&QHT+Wq%7GXa~C>E{jhbB3Sy|0rjN|L(?y|HJI8!EV519@s6;j{m{(P7eP;?gFu6 zT^#?%yE=pQg4`Y9VE5nO%KX2liP3*AQ=|XB=BEF{>}~#o(rj&9^#AURwEq)xv;I%a z%l0mcb%FFrRo1O8$E-w0iqKE5$ zKMT|Uo+gI>z08dNhuPcy2gM^O3_xK43X=#&dvIO@g$2l8-I?kCTT_$%x1}ciZ%<1G zvq9ld8ygKSPdd_4{)gGw{Lc#x_&*^h6YT%iCzCoAKBe@@o_`uN!YpfI0YkoUhWHTi$8 zzwiIXgt-3`bF=^VWoQ2H&&v28nV#~$DJlMcb8^D}wv@#G-5II>LE+VzkqWNU+>H(XmxhJ>Z%&E_ zn_UwV2~KBVH$me8q!yI+db2XX;RT8#5FeB-OTt6`S44$_!?Qm-^M7AX)_+jAHYUdZ zua1fOUl|n+#vn5$%VKlNlObnUE#s=vDVSI8h`K*wT|LH+N|3T+1fZAGa z=H~xFIMmtse|Bi-f0#OCvtVK%8it9L2dT%U7F`@!ZEjfDe`E~0F9O7e(J*#lWaR%8 zKR@uE5mz&_{~=CJ|5N<^NAUoML5zn7I9&xfI)d-^0=4lY-QE9#a1@AkbNe6R>iQof z9syz#z#w%n3{nqbgY<*$4FlN$I!7$l%jy}kc?TU&$U%frIre~^O% zIJ`h%3ko-o|3P65@*fC$Sy}xD;j-A+{~$9O)6)JoL2*NB>i_oa?EfV(G5;BW)k2QnX2UV-+Hfx@pcKK{S6i3vC@f#kY!a=_sZDqleEtxQPx4~ipD zT#kkkcghApU3}T~WY~nC67!A^c%tq#e#6cKc3>zONhOQna4x+JPn0k;Lj18he7$gS5 zAT|i2vq5|q2FZgk=&mIY2IVtQ8U>|A5C-u<;R%uhsRQXlreSP!ab!M>jjk5N2Vs~z zh(^cA@*p-Sy@2utG6tnlbUrBEfy#PNxdrkEDBXg}meDrAz_x)v^*^Z01?6WD8&rRS zFt|QJs{cXdGpM`((dZbLII_BEPfzeUqM$k>!N&()|0ntSg3l5ImAxQyKz1Y7VaR6S zVuSR79CZ50q3BnI*WdRqWwKPdfqT3P+~v9vN3KRg^UdBc z;csX6KiJU`yeAA)uLnCh{m+kx0GkI2H&~c~?5j;qhPxZoz5vxVAhSSrmBz+`>nTwE zR2&@*RtNGI$dBY=P(KOOMgi5K$o>TR2jthHs3>qzS5C+)?YOjIv5Xg>j7Z-574Jt=LZfs6V`wvP> zu(lOQEF(DhKPaDp(h+DsALtw(Q2GG1T!RE(!dj1E8gPYrbkeMJ1N>iYFe^LVj z|AWeJP+Wu5fG{ZUfXo1m@q^a-A!8jC74W(M&_032!ovTVfq~%r17URusNMi!5FbW^ z*ytE02ckh3T^^Z_ERW1aR)fq2sR3bRF=RHf95yzx7)T#7AH)V>kT^DsPY$FWCJ!0| z0QHlR>wjMx8*rNplvhD&VHl=|SQ=R$x*lXX5E~{BV#6><4Ahxo&c3QpmaNm2d)hOs`Ei*9;hz~>PLdgK@<$CPtfWWP`(G14KNy= z4da95p?z~ueFaLppuPj>9&uQlgUT^bn((r=2KQxQdO&92!(er8Zs4*HrVbM~Gxf!qnIQ$THhPyU=_@M9xwMjsI)k($0 z;C?Qst%6+6fzl+Y7}OsHl{29D0{Ic-evp4b^(?4<1=X9N_7k$XptJ|_4=C+}$|_Kq z1Zo?C+yYVy>H~xP2xgxK`)c>HmA2gN#8lMG=r=@}0XrS^CWQLQ8$$!uo7pT1i zGAF^?8(gn9rl-TlUqJ2xxew$vP#q6)GsumgbWod=1n#4Q+5n)jo1*CG|Dbvt6c?cJ zl}RNf;BgaBy8~3ugW?esw;*|tdJqi~2gM1fuMY})FH1}C*efUvfznliukU}5`#|!b zI0M!Hpm7~g-hibkP+1QOA5fkF<L_1lOma`X7|%K^R=0LhFAp8?BzfCI+f|kTJ*{P`%}C zWd$DVM~-Vyp9Ew-s9y+D2i6C*56p(vZN#!s+=FZmv>gI+2gn{!djwR@fyS*teHl=j z6jaB8=G#DZRI0x}c&ryxwu0(pP^`Jf_SdW9l|CE4$|Dd`GBps`o+h02+${)%~D&0f~d`2DN`c{d!Q|2d6a; z5AZxc$d9153@Gn{%6m|I5#$!oI0C56j@T z1Vn={hz-KH*dRF&2Fc^XFnMGenGMs2ECymDV~`qTK8TGjhRg@CVHl(qgkgLTjm(F! zK{PT(R);PQl7nGT-3rRfp!PW^J%TVOY(eQ2H0};k2htCsK^Vpc(I5;G17R2&L?dIE z983%sA101WgV-Pp$}6yX9z=ucdJqP&K^VjaxfL`<2x5c!GoZF1hz6|(K&}f$+4OG% zfXXg6=v*?W3;@*|pfUi2LG>hv4=N8p=@86Ds*hoO7!6W`jKSiruHdJnI7gVck{OHf$^vL7T55`$ro88D1224aK6K{Ux2)E01e2ah*^{0PFJ{x7I+3o6G! z?g7;cpfVifZqRz0ii8C47&oYX1C`I9^#Y(a0jzBRs>i_?I#&xS??L@J5C)a$AQ~hF zQUlWiG6z)ufyTu_ZDUZ~4w{1pg%hZq3~~=BJV5RPVX%Lp^*+eYU_MfOV2HW8{`Y~d z7Xa5mxw+tZYf!xbD)T}8Sy0^u%AX)Nf#%FX{td9R`wyC{2i51G`U+H+fYgA>oEnOsr= zUh4!Z7eHkkIT%!@gUko@r9tZ#K=m}p?XWr)#BR^Y0k3la_0K_efb@X;QU_fN0a6R9 z+d*v~&^Q3dzo2y&pfPI0D%TDhELAGjN)6bp?+NfZ8sg zya4LQgW6W0b|h%;A4m)|F91rPu=-z1N$J0drY3lO3MdVMDCkL25u4CJti5FtQkk4H8GD(b*tA2*cDNvteQ&8iqmjKPaDo z(h(>Mt1Ea70Lbq!`$2UgsO$oj{~))4`f;Fi3laypAJh*5rESpKIZ)XSsy9Jp zG^or5)q&u)K|uj{ejC)c1&xJ+Xi$3rRPWX#CjKvsi1-hhR|UBPWEZHc1?6v0z5vyg zpn4zVCU6|MyTjKtfYihMg-&CW1GyVi-+{^ukQ+hu0<7)<%>jVwG|+f9s2>Tc`#|=B z+yJ6MbseY<0b!6@P`M6jmw@Ut5C)B#fck)-G63XvP(9L}pAVjY2Hg<{ic?Vi4yp@4 zZ7EQh5$EX%?pK1uL2VsS`vepopn3^Zwt>PM6b__fP}>32rv-qAwcc|jlqE20x}C3gTz2>08ki%!V#2CK>hy&7nlFuZeIVrJbeE< zIk^5eF|+z_3dYu8Hi&OxYV{wC!Qxi`&CIR;n_Jlax3seRZ*A@H-`3XgzoWg&e`hDR z|L!gx|2l0;MMq2Bj}h+Y3~u!qlPDAak){ zkUEe!j0Uk`7$gS5$b1kRCI+HG7$gS6Abw_05O{nFR33urdaQJ4=>NR1Fz}ofsJsW| zRZuws@*Auk7^MfO{`c~N&kKU;8&JN6)&F1`RM#T)Ig#rabT$SbRKL2pf&1B@vI8T| z{rte|qd@5!)TaU24>ALULGHjtgT&A=x>}GtOpGWt$ekbzaw`Z!#|A)kASk_p#wI{@ zBB(t8%738t0EiFj6M^b#kX@kq3^X`nP&k0(L3%)ZkXu3J9H|&o zpM%^EYJ-64R#2S^!yrBkgWL(Kk3sblXkR<1-wPUp0m*~fJD~Z4`sC#Qp!OQ5`~{6& zfZ8XZumjcKptb>M%_JzjqPr2aP6JsCt^--*K6MPU$ndQe^}iQ3SV&j4;uf6_Wwck z2B^*e(I53f%;4! zdq8y&D6GKlA))R^_7gfAWHzWCb~7^r*DIjDE~u^t(V%)b*4rDrcMVi`gX%U=8wFIp zgYqq?jsw*Jpt=fF2ZH7SK=l}?uMS!h2&&IOZ3fUh0Z1>14H`QK^^ZYoDM9`RVUQW1 zxqeU@1GNW0Z6eTkI>`T^`UKRL0M*N&J}0Pb0Hp^~F(^zy-Q52{l^7~}_#dqH(Q zsEq>J^8spyf!qgb4}kjKpl|`V0g{rydk8`E2%xY?_Voq#kwNPkKy@={%)-go_&+|k zg4_e@=YZN@ps)qm3v&m^EieocgJDqEru+N{Wqc( zhMEa7-(c32|N72>;CUQSx&vWQ8Un480mTg{jzD!isLu%+_Xqh4ly*VmNuclpodF1H z7l7gwl-5D&L16~M;QBu|7d-zDsy9IK1EOI#KR)Tds+92mLJNlf6MY%}cYx|?cZUD% zAdJig@d;sk>OC0#_job<@AhQ)Zzjq3-`C9>T>pdI0do_G24R>OG8-laqVZv5J?Lz7 zK0b3mav=4f`X5wQg31%*v<8YFQ2h_;XMofqV~{>{K1d9NVd5}0hz4PhI5LgQMwf%} zL25vlQ2h^X2ZV-##|R3eqQHAgKz;$WX+U)k$bX}FVEX=`a0jjJ0o7gb@qcLD2dala z7+fBJ>P1j}goMH3NPJM5gkfYkuo>>|;C<+zx)Wq441>xLP}&BSC!l%?q!wldj7ByK znGKRh=flL%#X)=!2FZgkjEzns%YphrUTpmqVMt^}2b zpl}40eW3aaH0}U_|c0LUz`eW0+0jzxgngN$MB zMHYjxamj(&bD(k=)b0SS-v-sQpn4FrJ{(lUoe` zi=(2z`{_Y?Kx5OOb^r{6)||oWeo*}n!V`*${)6WGKy?AA?f|(FRF;AHc6Q+P1E9VD zC=5a20%{k4>;|<*KxG3c>`28Re}Kv(%pl|}URX||?s=q;FA>gnyF#+F+3u^CSb0^3TptuJ44OB0J z^nvPjkl7#%s{27S2!q%l3}S=YATD+;|MjPz{cp7I|9_($|Nk3q{YNtlG9P4*-qh3o z&5SL;b4;Lg1j3;72ntisIsaZZHvd6&4Jhq`=6pbHUeI_KXf6O09-#06#WN_~BV$tijgXCctCWnuYt_GwQpBPLIM1%4SXv_@M zmjIyK1d&^KMN`cLFFWa|Fey~~(4{&<|rXC~?wgbs* zkU3y+q&6117>p01K^R>hF46hW|Ad4F7A9u_Z*T z#+>1Qtu@2{7FUMmAz*uv_6Q2GMpSy0;mBo9-IOe3?A%>#+UFi0GP zL3|Jm!XP#-j7=US2Acl^rFBq#0AZARAKE4WiGlI~sQw3)f8hGx%Ig1U{XcN^KCB)F z)xn^A4l0{LWi%+CgD|KJ0MX!j1zInG>Jw}jqy~oJ@*q8+I^DwqeAXkVtOVHwvlmpq zfa*L@`3b5IK>9&;g2X^amH##9%ZoGeP25)j<6PawiOf+Bcvv08qOe z)UOBC{~$4tJjhR=a0Qj8AR5&E1)Gaz4oD1yaoUR|9Eed5Rs&i`W^D}~uLk8s(0o6r zE(eW+gZ9gV<_AFPKO+I-d}Is~ z2ek`8W`p{Op!p3@`2Y$NP#Oc3T_EgdWAh(W?}Nq|Kzcyq3Lt%;`D0KS2TB*DU{HMo z3S*ENpgJ40)*jTJ0oCiExeIU`AT<@dhocE}b|3T%B(Pf0xIk(ucx^wZ9tODw6b~T# zLE~c}_k!9;pmr*V4QfAu!U5Fxg_X-7wIB>?hk(j8kpDsEfWio5H^?0zvte~Th=yU1 zI0*YXy8hRjeHq;MC$8@Q``>UAF8qhM_QS?M|BVm)|F1jc)PGxjga4qm4k+z{(gUcR zwlg&R4;ljio%IhI>$f#9_z$Z0Ep>Il_y2C`$L2VAu_$(-_L2VRJ-36-OL3IwO&kM?vpz;MY=3f*U30|)WY9D~o z1}Kg|c@;E11L`w_`qv=+$aOwC8&vOs>)y1q|Dd@8P(K({SAy2vgXT#Ot)hFbzF_8N`OU14M(cl~?$GgVi7Y8*TqjxbEKk@4wOB|No8m z@=Z>FvN-%3vpT=#?81qADV(EdN9_5a9qhnghc|5_)=ygYK94`a8uF#PXuXZgRV zKJ5Rr_KN@gH5vaW)@Q--r23ryQyX*t&udEhKR3(lf2#}ge^7e?rXQUK)&HRWzn?A- zc>W*e77z`?pgIm08=oAy9++AX4Z|QcAU22wVHg`mBa6Y|~yKw=;o)V>GR^B@fBUw~*3MrVWSe^40% zZr_`kf%jd3^3W(An7SVn?w~RrR{w+QD^NWGtN%ge7>JKtSAqFxbrm)-m>y6$3Yzx? zmG>a~U>H=+gTz4PCaAv&QU@~!M1wG>?gC+CHi%COM%IgsjVy-ET$ntJ#-#=%kBs5! z(CdAqumh=wtAmPT6GK-6`2o;bf1tJos67H=gX{&_iH|n%Px^1L;pczDEueZE&$$0)P@n(z zf4x~(|LaXY`Co798B{#w^nbmX=l>h5d;i~P*Z=>9VD-4oGurz9zrnh1{|&ri!RIi5 z#%(}tHqhJ*$lsu`574|nDE)x^4{8^H+617s0m1qoY5X5lSAfzIjMk76{9ogUyZ&!> zV)#ETT=f6Mro#Uwc7FeLjjaD0n%Vz1FtPh@U~2c@(A4g~nU%}`fRLE~6Iv?%&rZ|( z-{gR_ZUAjA09OC|>Oks$WVe9WAPjRGG8-fY!pLICY>*rXgT%05kQ@kuq+9I&}9#-eWXplGzgX(`!9}raLgYpche1g>nqx8VE0Wj)+XrCX{1^|_vpg026 z1+Y2=od(N8>n;>ISYH@=XDF!tL5X9~-alJg@cHzhavD_sR zv0*e!97H3F!PqbwBoD(NF%Sm39aPt2aR*o)O&psT%uHM~E}=l)UO1!0YKyYp!y#q1}Z;5X#->*Xgm>A&w$DYQZcAs z0V;PU78k?MuK~4LKyCoJ3ABF^G{*s|he7iMpf&=i90RRU0qsWwhet*R_#6OGy989$ zg4_oxgF$H&6m}pC>f^)edypGJV&HLxgoOW~_6MjP0kQ*xLG?Wd!`LtyT?`~{?w9c2 zVEy<1hFb~L|2zKwH(2rFzlv+*e?>j>|4OEg|CLOg{wtY5v5EbEMN`NBYN18{^%vd) z_wOO|1UT9Np!$FP_y1;oiT^=kAt1Mb(gi3?KxqMlbHc;_rw0dv&w&P&3m`v(+6ACC zA}$Ob{|EK|q5J9vw2B`&MWHlf@2!q7XX^=op(gNDPEwYLVG6F?=*gJqRPKLFOZ~VQN5PAPnQfXqXs`hKYk{m>7%(iDAQp z{L2k8aX1)x4W z=qv-!c}Af69aN{{!=S!DXbk}fcnXxxCg~MsBHnNZ$Rz@*##Pd0;vPl zFQBwRDh9P5K zz~>@>+y|=TL1QGKb^^%Vure6rCXoAJ7$goV>p){8APgGE0O2 zR}0GdZ@3v`=0DtP2|@M$x^Mq2{S(3SFrYB&FDUq5m6-UyI3@;yqoctzC>%lSxUxb+ z|7V7Vg3s^3TmNI({|`!Ip!$QD`hQV@&Ht>l5TmSd=@c!@Z;q~9f z+Wxl&Oh?e>f8aDv%2S8g72&?~nbWrF2VeTP@hN%I$ABJIK z$TTt=rVd8KU_|cDad?K-3%I+0QFfwWhy9) zKz&`%J^|1iJ!tM9ROf@nCP3*Dq!!dh0<{G|>e1Z;>H~w^3fdb7@)KyR05rb>I!_T4 zM)3K6=z2p?T@S1CVKhvP==y)(|Nq+UTmQ>TO8l3Tk@+t#ulQeHR_?#Nto(mDIr;x` zGP3{W6_x(WNr-^e=uW=~nFqkN1^`3BKzQRE~q< z2^43b_$0Re2h|s#x&np?)&H%|4F4CEx&03fi~27hDE41kTIqjhZOQ*N-C6&aG^hNZ z-(C9O)5H6}u#m)mDLJ+Ol{tz3XU41iZ*qdJ1H@7P!^Z!S-Gk1C@zH6J+hJlLHVoqu zgNb9Kk;QPaLH%Y>-w2lOKxq(^7D44Gdi@VF1B7920@3*RFgbJ@qz{B);vhB*gT!DM zCI+HG^*aa?s{cWG5abuoSRE*@g6aa0Uq^kRA{l8H3CQVRSKU zd~|ilYCvpU@-T52jjk4193)392I&J~n0jP3J~3oDkRA|57K5>2G*)@oTm*=Q&c%S# zgW>`-ehrFia6dRN??0%F0j>G2PD%pT*PwDAl#fATpz(81eF$3n4=V3LW`M?sL3Jz6 z`ad)CKS&xSNU3u-HX+yWXa0Oe+3Qw{~BqX|1}Gz|JTf$_Fu&%;=i1< z^nZC!TR>FszfR|VqUwKhX#EdzD=1D%jb=qj+HIeo(lB$|+EM zfa-tb{y(Vh2VrpC0;)rh>UWSB2!rYZ7{=g3$NxcPA*hT1jr)Mc{Xuqu>VHt17L<-b zWhkhf09vC4tN%e}!7$8xQfZKWY}xK3#!jS?J-a}0y@_gR0n~^sX_f*P&|O*A2crm;)Ci=5F1plf$DG2xHzcZ z0*woRXwWz}sGdN_pm_mMT@I@AKxF~QOpyJcele(?1&tkm>)DC&K?Lz@)neiLH$usxeHPcG6P0~*w`?#Jctd#aCIPe zf-q8B1uO>>gVE^nNPHCYpkV#l;4NIT(Zd0&RPN>TM7P z)%&2l2CCOV7&NvGT4SFX5&}N^7gUCW))Rs5=mxddKyw73aeq)942mDncn~P=K=l^L zKcMjd(E348y^V}PbvdZt2&%t9;{~9-^Puzv!l1MOYEyvfe^A>2qzwxy)W!jc!!W3Q08#^*rvR06pm0TY2WTt-)Sd;+ zpMcsdpf&)g-7>ML=s$=C`2iG`pzs5web9OaP#A#L27=}VKzcwJwD$s3_rum6nEA$o z*Wu$^|7W!A|9_+HKmIFw#Q&ESfV$|2J6j2HKm6um4X}{SWH@qpkk~)fXU)ul@&(;ZN`v z`rliX`d?MU@V@}B5coc$89mMaXLVNmpV3kIzqBCdzp9GHe>M(*|6wty|CcvK{qJyP z0-ps0>hFWs03eM6!0LbW@qdt8K=BNsK^VqHreSP!d6+neM#jkMU~G^)G8@E4#vnNm zMiv9rtDt@pC`}@#LD0AwsQyP*3(|{@LGmy$WHv|)7at^!4I}G8mIsN0#v(xVJgCk` zra^2F28n~_5Ho^l?Is z6C?)0pt=AZgT-Ov&91KS`#?c`epnoX*q}NIRK|k(4#@RCx_QWau-PE@f$BIU3=)T7 zWc66tAisbxNI!^%VPrmt4Z|RL5F18=*k~AJH^?p+4Pt{Zj1QwhV#H#Q9vH@}2j(tl zn1kwBP@fwXrl9%_v|b2Q|AXVx-5q?^JE(6B8e<3bOF`%3fa+>c9~6{VLG>GGJP&mK z9jM#^_4z^V0MI@0HrTbUj^hQP?-hl zBe!K|{|C)4gX{*G0UDDB)%~EmcR*tfpguWhoj!Q1!psc3M+B5s2w_lr0o1kurDsrC ziHr&9#U>9j2V@?|Tx5Ar*#%m=1Zo3-)cv(B46i8qgU5;PnW3dEoO2i0S`>&IT}8{rbO>xhtgqFDdq4Exzu*!MczC z^_RZ-ufOc^fAxfh|8kPz|7H2u|0@_;|2J6m5^|;hf%$*r`X3Z8gvS4gs{fJp|AFcZ zP*}lel=>fSuD;2U;s4Y~ss9Znng1oFmH*4i$o*GTRQ|86ZS>#J#OA+|sm*^`IhFr% za!UV`Qqun~>M8y|C0q(}1`tx64{irQ`RMgO%pJ%yhz-Lqw}SY{Y#1L|48(?EkUR{7 z#6WC9G)N5$gVcgBh!09vpguDw4};P(EFFUK7Dx`J4n%`6NDm0Z*!XCe985io528UB zn>a`egwf@Z>wi#P55u7H1k4T%{SV3?pmjH(G6j@}KxNZt{Xa1EKCCVVmCvB^4PO6) z*8CHw|3P&CsBQw$xG<<50`)aP^#-Wi2i5s7J3(~=NDh>iLHnvebrq{~jLTJ2pUL-JrS)G;RnQ(*}+IgUkS7 z(0L-Dx(yWmp!x|^?}OT5pm}o8c|D+dA5>3)&g}*Dfk9&h@!sC>d2!G<9;nX?8nXvs zP#XY7gVqp$$^uZFgY<*$nFnKUZ}9#?kT@tUfcm|laRN|(c~VKqe~=qM_krhzhyTwA z3dJ_ET26z(7z6n~&G7f^cv zv_=pVo|XZLg!}(H|NqyUbL+o?x(=j&FDL(BQP=dplC{@=C2Plr7%ge}u z*8*x)ul#Sc`|p3l%{co0pf&-Ce34#F@#j0V+5p!x(fPYN0b1(o@*_)YWo2j2k$ zDpx^u5pw+x(@zWyvKKUt0BTEs+z4WW%3cr~B!_{a?HZ8VKy@W(4gy4@W0*W>T>^?6 zl75gHa2SEY1lsoo+Y4fYFtmQha065v-G3l;ATbyXVuLV<55pin7=!A4kR3?l{GhrL z4C2KCuNVG3%~fx-qfrU23d!k{()$esun7x11? z(B3joyP+mI89a9mD$7813TUl9XuJ~??w~$4sH_9|g%}JfS3qe2gh6^iZ2=GljbDJr z;qC3g^VRS+fu$vQKLn^w2Kf;*CIZ5saDmwe7B@5d52j5`!DlFg+yvr-Xlxjy7i1Op%3Kzz`+3@DsHV=5*-u|(DXy8S2q%SlQ8mzS0OFE1zeUrvzc zzbt6apD^!#c}a2boPdIw)_?8lW&aI#e1+T}1ght8VOag|m+&7nKLNs^xG9c}{SVsr z4=%&Q!~cWg2UNy`<^(`xd46OhI6T2^Ejzpa=rnl$KU)7ER(F7CT=hR_?O(Ga!~cba zw*O;d6aMq^3jUXuSN;KLwwAbCPGObtjK2!r^@7$gS5FfkY#M1wFk zanK%rP~8eDpFwE{l(s-LsGI}k8IT^BUJwn!=wcu~I!0CpV#6>@9X38p4xI+61-TJa z&x0^Hy+F_Y2k}7|l)gc8Vjwqz+A^U011f_+3i2DMege50nFg^z7$hD88iRn|^8*qC)r%m#APh1GY(CUn7#m$2#0O!p zJjg9b7$god7lc7!2dbAr^$Dna0AY~7LHa;-F33($eGbwC5(C9AXwDm?4pc9K)PU+B z(E58&J_VKWpmYIR3lAEX2jyRo9LNlieW0;z(D*fS{SO+?2d!rVl>;F2K=yzzhz%M` z0O@x*C*DKyD?3LG>*tK0$3B zP<(>g0N5}{4wN=QVFpSEps)g!ufYxu;Ik1xbvMXPka?iA0>YrQ15ytPV^H}8!XR~^ zatzdF0AY|GoY>qPWgY|6#(=2>nFC6i@ssd3>$v)!=n~;C{Zm{C@>yt^e|B zTHrB%IdKt4yFftV*t?l-vVv_KWHomw9l_3HWobgQyw4x zAGDvMA|c^F2!r^rumOb+ItJJOp#DFW`+q=n2Cn+Q*_Gixc<*0z;D1*SzyDmEy#FhmmBl{CKrbP4K9q}b^xf( zN5-)FAJqQ`*$=A6Kr}MOCkB#(VUQjW8$=^xkQfNV#L(FwJ_v*4K{PssiGyem2IVJE zoe4^>p!5RD1E919O4lH9n0}C2bT&*3MuX&Wu|aYm43kHuL2MWXsR3aSA4Y@NAa{cD zG^p+eVGtXJL3~iT0=jb>RJMT1Vvrv|YmPzVW1u`gis@hXgTfqC&SR_pL3IYGo&eVw zpn3;OT?LkdiX*c@vxCfoVNgE7hC$=MU~FLl?)!oK4l3ti7}SmcmGPjo38F#eG6;kCpfVp+ zUx4aNnBPF>8-V-(YLA2JM-UC-BiBK&`Uce20f~duVfY0ajws@wa7V(RumHsisC@wo zGmtw#?gRN1R6c;%Ap1b${h)dmM1#UM9L;=?yFv91sDBE|pP)7xD35~bbxReD=4>Au_w}AWwN|T`eC1_n7s4W1BTaf>V!JzsGR5pUz0id)8rlIEz zgTe)bLGmCB3ImWlC=5Y%g4_j4r=U0h_0K_J2`Zmp7h0A~4{zL!u zCLH^(U9z7|NH6?UjGksBgmcTY#1M%2B`&Mm^g@y4a4MNG)xVM55gcmh=yTM zz69k(So#5_D^NNF)wv)HQU}t53xniA7$gs(K^Vk_VGtjNafzYJBdY_kLGA$6_n@)_ zgh6Z=2Ju0D0M-AXG67VEg8Tp~Q$hI%l&?nd(5U}GWj3hX1JNK1VuLV<4ZtN+7D2_pFQ27DsbAjq%P~8OTPlIS={V+C+2APS0q2u2mHJ~ghA~AP#p1XSOE+ykmRK=y+2706sr z9Sv$DfY>0lAQ}`#$TUbCG)4l_3##iueb7 zcToM`486w&G)@ev|G{)l4tU=`XimQ~Hy3<<9H_nrt@i+x51=vx6!$QuRF z?T3K56C7{W*8f572kq~Ntw{j28$j^@>U)9YKxrD(#sRq#)P?}H&p>TFkeQ%<4k#^v z+L$1Bg33HFhNeZ37&6v&4JT0l|NC#W^VfeBuf+dyB7ERBfLdt5f8%5S!FTw9`ueIN z1>kdkg^9QMiVQ~Eq9sdW#J*b`l(J+j&{&!~h-{-^e ze{yZ=e>ny9|Ga#{{{w@<|1Yle`QKp0@W0cA;s5OF(Ek?JPXBrNMgRNy1^-`O?f1Xe zjq$%KAH#n)RmT6l-k5g^BiH{RH^AHjqCprY24lncAR2^W;>a{I8=o4GIv57217R2+ zMuWsa7{mwBFbt|YLFo#XRzP_cG=2w4m!NopsRQW)VGtjkMixV6gVcdANDPEQY!C*q zVHlYYVuLV94xI+o^PoB(MuXTe4Dti4{s;B_K=}ZaH$ZtEl!r#~;H&>ZX%19IgX#(} zjbrW_RIh+AvKmmo6IA|z%mCH-u=oYBL1iVVP6XBepfllM^*_uEm^mOmJ`7gp>iQql zM+DgeZUaEaS;2Kalnu)_pmG>gpM&ZMP~8S9r$A{DRF{J53MVJ<8dUbd`thJW z+@LxIOi!k|0}qCsr}kUKziF{pk4*F8>7;CTg*d7!!<=57?ff$Du2 zhSvWeb)a?>sJ;RD4^;Pn%mvMxfy!f$ogn*Q?JSTwP<;(j3pN{M9+Fug^FSCR2cki4 z1GyR0b^!IYL3tHq9!MNCUk|DiL48}0eIOcS4=4|V>U+@oJ?sJ#Hv56a)5dJ$CTgJ@7&0MvH`nGY%xK<5jA%mLNCpmPU7>kL5U3g{jp&=>%S z4~h@a8bnao6T+bQ1&y5=wgK4-N}r&42~gaD z(g}zU5(l{(bZ!vHY*6@t%3YWoXdNG@JOp778>BYH&+k9T@1Xbqg*CiQU}pzj%LNK& zP&xvYgP?c>#RI|qKj>bdji3K3S-AZN)$ej*!v8h$ra|uc1Dy+S@c(~}tO?+80XZ>& z|0>?e|Ba9S|F6+^_`ix*5_o?g)-eER{jcL14zA}xVGK%NpgaF`RaE}#C@X`pwvy6+ zEhVM@njoyG_#eav+5~~XB#s7S69{e@2)EVuKz*n z0NULd{S?GyKyn~;VD%mz;JbK1 zbs4CP1=$I!GeCBN{0OS!KyC;5AEXa%9;~efG8?H40Jak<2WpFe;=$3_7<4%E|DZSr z)rlYs8si7m>!A7_RQH3-1NEapZUMO+)HVd2GYB#RR9=AA6@c0Xpn4MIXF?cMuY%$U z6lS1y3@Ch1u%qLDSlth+|3T>j)K&qNV<5MJ%2bdX$j_iO3vxGTO(Ljn2i4;s3@YzH zav=2}3|i9)QU}5yb3kfAYCsso2Kf=B9^^mJ*a|2fK<SF%c>HgxtN1@BS?hm;9mD@VU$+0V z>l6Q5*}44}6O;Mx>lgBWXqCps0Er<`oATeAtvK)+!O)W?ahC%9J7$yd)PeJ(`RK|ePKd7w;%A=rk z1xl+hb;$Y%u|e`6eIOc!VSEq`!XR-%G)xW19iTi5!XWpe)1dkvwEhp&wg#njkRL|t z|3Ogydwc%}m6@PC3@Wcd^$)22f@4tK0j)zoa-ebxhSB+8anOD|clZAwHYlD!=@wLW zg33M+29=ed@()y(fyx<>8KAlbRQ7}Ppkt6cx)=r@T6ec>J*UqAUO~Q)s=AU z>G>bT28n~zfH2r>ko!S?M#7-*0N346IZzz~sz*Ti5LEAj%5jh%z~+J43!r_J(0Uf+ z2V@Mk0~)TN@ehz3$Zn83U>IZ;Xv_g*E-0Kp`2~bQW8ok^NF3xpkbR&w7RU^c9yo@X z4|M}r93+N@LH%FQ{5r@VpgJ8?mxJd2L1u&E3p5u1niBx^k3n{V@-RpZNG%M5_Wpy` z1a{@*fX@#G=>@Ix0iE>=s_#JNf%f--#`Hn;KWLmEbSExoKQPGsps)n30|b>DAblV^ zKr~2CPk#P?(D(poEQ#1Q0LY!7Gytk!(J`p52gMr*gX(yY|3U2pPOpLfS~&Li{|{0F#{mK0b`MA%WG)E9%2JSC5C-u<=7anW zYKQB4MByI)-}nc7hM#WVk^iznJpbi{c)|6&-i*ut4R`$iZwTuD@B05=Eimi9tfgoNr(9!u18uy1`kQfMq!WvX|V8ihGAA0@|$j`_arT&NZ(Lw9=Kz00# zWS#%ZC)NG$tI7U9t*!F^@~*7^-G03PLHh#R-5CDQDf9oIm0S2fFgW~wYHG&+l9b5* z3E^S?pT2zi-_=Cxe}X#0|8g6a|HZb9|I6(ez-I!1#sWa=|3UqKP}qaq0;54}7zT-f zFghPu3?>JnLEd{CYN)%hR{axXFsW<&S?gWL0!XUMv zIt)~If#Mldt|7-Qs5}I%_XgErpuQ)_4iERg01U^*6|>DkRDK726h`# zy8)yh8wS<;F!Nx01weX1#oc2%0wl>8(#mfs89;Xa5J?QwZ`esGR}|2YeV5R-kYL_5VSB1J!59Z2(yP z4+>)t2G#$d^ASMf_36+$8???5T>snJg6nXQn?dzDXucH`XCN~{VFgOdAaN87H3K9D zOZOl)7zYIW2b~23(g!LtK^SBXs7wTf2WbA?0N45dp!$F3|NlCz+y5(S8i4QpRdx*e zZ?N>mf5UCi`hWNT|7wwC;B^5~qJsa0jNSihr?mgSbM5l~b(^;Q7cX7$Uw75B{{{>0 z{x?|p=09l60Ne(E)&Fi0;IR=<*n#5E$<*|}wZ1+W+ZY)9hhbYJHo^KII{y#yD+q)9 z3!*_7rT$0i|AW^5wR>^?pPi`re`&VK|7AI5|EEUE{BLrG&gr`_{O=Ew{GS}|{XaG# z^?y}m)&J1&sQ=4XuKo`Ki80ateJphTyPK;0R}*FVAEpc07YM8WVf+7JZUNEQFvyL_ z;xImphRMPB$TW-%Q-e&ywi$*1f?lZ+JUJ>r$J`H#E{t_F%U); z1F=CEBo4zMJ_sZ8k=e*{p!5sM*B}gXF9^ffU>dalKOzFWz69iUP(B6Gpz;KkPey6_ zw*f%)GidxD)c*t5C!jhFia})^sC-7RTR>$zSR7iXAhSVopt2fNwu0&~P}zP%1>2g0E84z32dT>xT3+YIRDgUo?pWOG60fHBm)aD5=RLCpf`1Nj?-LGA+emqF{` zL2&>I6HxsI${!#MVuQj8w8s%tSAqNm8dCx3g_#Yu4`jZZ+kem)1;~7m9LSF_4B~?@ zNI!^%VURp%Tpv`og2DoHHXm#*AC%WYc@$(G=$>9s9~m@G4(k7d_6dOMdk_Y-1z`Pj zkbgjJKhRu1XnY@Zryi&c0pf$&njm+B$_-F`3ko+-Umw&?0L>|Y&I|^vs{@?_2x?=1 z#tlGg&p~E@)*XP-DJVRM!5}|@`~!+xP<;(*1Ay91u=*cVzk|{!Xzm{ruAp)Vp|*34YKgbS4 zuNd6@fAHS@zyA%_eEx5+;>~}96|esruK5J1!#9KW_Wk`28voa9-u7QhOXq)VWW;~} z;L!h_T|NK*{QC9(-1+nWBXTPKr#DUfZ{Zp8U!!^rcy9oD{SP{m6%MtN(w)rY-*u9y;{@^OrB6>i_?(yLbPu-?9I{jcd?<1p&tY z1)w#9?vOSBsQ(YD|3PlRhC%KEi6he>HVnh$KztY*L?dHlIT#xz58@+ZWN}<<(AYVs z?F}jiKxrRTE`ZwXpmnFn^*_3Pm_0CYQfQD~boDSX5DmgGc^Dg`&WD}>01^jb(0Ctc z&H_}%f&2g}TR`~^l($AP{p)^Em?PK!pz;`0e#0=R+y}8i^$V=tK&N5#2r>;a2UISA z%3#p^F~}Ym29=K>GeGGW)II>I1@V#XKsF1+MwbWm>p=Au*nOaO0|>+FTM!!=L&ZUL zET~Ka)dirjWKbFeVNhQYbS@mIeg%nx>H?4&&^$h9o)=^{vKv9}M8UA}3S>J$Y>>U6 z{Rz-I8C36q+E<`;1Ryg(W`pV=kewiRfWiZmCqVsu5F3O+^L?Ov4hl<<`$2UN2*ct8 z<_-`aZoZovc&#C*t^?J7APiOqb0-!WRG)#$7Et{P+Jg_O|3Q2EKy&X!k&)ni3*d0F zu=o$U`xR6-gX(=42G!r7`+-2?1fX$yP+tY)M^HZ=RG)*!dq8^(KxqKvR#2S}n%f8M zB?H+5+FuA78vwOyK=mqUJ^^&z0H|CEcXs{{>RW)?0HFFB6h@%1AqIo$Z%{ac!U7bh zFd7u@APh1OM1#T?)II^(4N9NL^*^Xy24RrfLFFCDZy-G&bs%wgoe!$VVf8wU4WdC9 zBo3mnVUQdY8+t_(sQ>?f`}#(^{)6WNK>PaOeRy#D;NO4!UH|{<=1uv(XU7(BU5HK` z+q~+(c}VJijpd{6H8KuON)G{)dhQfYmE1VbIz>&=~<9>H_~~&6$tl z&7Z%1|8MK){qL$H`oG43;eVeuWG^7{{6EYcFdF0@5QgzVGzi1Q(Amg*m>Lj`jFHu# zvq5|ihN%a!K^U12V}t5{&^S3Lf5Or|sB8e0t)M&xQwO3!X5hjwc^C~-2jYV;h!3M- zY;-=lI7l9ZLE@k~9^BW5*83nf2!q5y7_^oblwUw)4JaRj#xh6i|ADFZLFE|;gW8p# zvK>@cgX$1a`HX@=^%xX`%5+eD48!PrkT^&$sJ;Z%?V!31J$^y)52}wq^&F^t2Gxlm zeIPLqjnzyf`$6)cx*t@YgX=^OkN+^eApPhVq#o2x0F_gqbO*{mptJ{~(J{zPFgZ|O zgM|yoF1Q__x*Z9F+ycVL@*q1wVF?NckpDn+K1d!^7lZ0rP`H5Vb&y>kJJH<%;)CQt z;R9;3fZPu@2ekG8dgc+xJdizLIZsdU*}9;*4&+Zz*$ZKsts2IZ|$JTUD5P#Y3f*MQ1u zQ27k1!{HcO_oCMs*!ZCG8&r;h%mDRiL49d#@d_%BLGceNGeCBN%mV2J(@6bO7$2Pm znGY(@L3JId?gjOU!D^sm;2<_g4VZRy1+NDHxdoPYNTEUQ1ceXCeV{rD>5Xc-@8w8gdK=Pn`0n!ID17s$M2KfbK9teZjpf&}_ z9*{g}yd6}}fy@WBEkI>A$p6R~qz8mSV%TUAdMx!gxZcNB=i?I#2%xgwQi0I>QWRQH3}1nYm$ z_&+i0|3UqHXuls+S7Tr-@}PcwyavPnoQ(AUfB*mg|K|NCuzwdVUiRNzp5gxlP~GnV z>HCAsgVq1A^M62f7AQ_(G>8qtAU+Hu^U>MZ_#iPDhM57QLE?R33w9 zP~8WrGe8(5k50qHKip4yXoS3B#baDrhVK)VBut4P*|82GzST4Dthr4e|r1-UihxAhSSiAW(e{Gm8)n@(ZXg z2bm8t6GVgT1J#Y7H4mWp0p)oR2C+eP8b}W)EJ1ZYsGR}wE66P%eIUPs+ytUwd=L%7 zC}QsJ|3UVG+zJ|31dZW?#^jOfcu>6$>Vt#oVPtVoTLH!g$${qaL4A5qI{?(r2iXNG zzd&dFfcykvm&L__+hm~n6SNNylm0w8-pch7>#2GF=X$XrmH0i+((1|xPK z04%&g{sP54$d9132de+U*wGQ(&j-nY)2g2zc$^yK1`r>VPC#PpvB-$+9PUjKvY ze$aXVP@4c0Mxb^)HVp3nW2yf^;RdQhDCz&h)&PX)3;y4<7>tiB2V=u%m>Lj` zECynOFi0GRVSEq`$}^xgG$@b5(lluQJS=a4^nlbM)5vU)90-HNkTEtfba|K>5Dmk~ zYG7=T9LSxZx*paJ0I`uVsQw47SpfL~RAzzF4yauN%3Gs&VA=tovKN%DK>brtodQZz zpgIIZ!|ESUU4adQ)S!ri=DXe9!S~OB%3M%gh#s$?_y*NepfVg(?t;pFP#uMA7KjbQ zDCWc32B3aEbZs8U3{ag7G6PgMfb@atOArm$3snzV8wU~xVPrO#4_fo+<_12)50pNU zF{n-i)#act0`;>&WgW;~kUu~eTvyoJgY|;iJs`h>^dOsoiw(*LAhSVZ${_cG!UGiU zApd~;0TKi8L3KU|gW?8MHiPOQkUb!CLGA*LlY{C{kXq2*0+2qC86dxbFqjW*MhFX4^`QD4R?ov|m>4o2BnI054_XTVY6F1kZP0i*s5}6j2Mlr> z=p0#4`vT-vP+9=VfyMdkm_+TA6CEPqd|H=7^;S-`F~iQjg5wm|En&1`oCxT{Qu9dp86k}QSv`5HUIzH zyO;mhOGELe=B``aNTdBsR^$CVRb*KO#nI@$QR4KKcM^p!tnYZ zy8aJVSAb|x*pXZRx41F<@AhQ)Uv0zi-`-gJe`Zn5e}60O|AER3|2<7q{uflV{P!}D z_}}Kj@V^~L{~zWC7!7g{2*daw8X1G+Ko}+lVq?QFc^C~+17gEybT)_&!^moo#Xw{H zpmYXK_s}!VKl58{K^pu7yq zzvwhrEHo562MEf;pgtAI{hJXIrAG%f@R4;(aWmug7 z=0odY7#k)BqCw-*p!Ip6x(PI9x*b^z%CnFDe=s9pi}`$1s?V#6>< z4i|>0!AFDAJq&~F0=XSjFTvaf4r^#T3RFje!Usfy+y-iMfX?CrxeH_m$Q___Ktc5? zNDasgn0}DoNyVUc49IPuF$K_mJWw4DtN%fDJFKpU(I7Dx28n^xg8J^DxdYHR0B8&V z)aD1(r=U6%6waXgg+cvmkefk$XwaHq(3lX24^ji#_XpYo2uhbA^FVC@aJ}pA51u~& ziG$q+V>UL1w25Q%U z$~{oIjDlhHIgEzZ?O-(^F%U);gRw#5|HQ2SgVovCXwZEA?*IR_ie~*Uj1Kr8Qr`bx zY4Yj+iakgErxjNI&(6*NuR8z1f5V;7b$>83(CdHDIhfAQ|3TybpfP?!b#?H0zo0%p z2!qxGfX)LVs{Tis{|AK^sGfk)8d8Gb^?9JW95g(RCj{X zJ1C!m%2|*cNDWLaj1A+%Xk>Ai7&aOt2Es7)AR2^0VlWKjgJ=+jiG%VDxUNT9|A#CF zDhoj4v>>;G`~WJuK>2DE)33fq4{K0)3QAYt`rpF?Tz7)%PY?!`$)GYDRHuMxEd57N z9fK?f(gPZ21=VdJadi7YWj?5%3F`lY#>qkT8^{b02B`wtc>{C|@()xD_5DC@1JwZ_x5DxqD9uuWLGA<9t)Th? zWHu;VL4EodFE8-f3m`XuFh~rPPe64#$W5SjGH8qdq#tBIDF1-`3kqjYn+>E6?njWH z&@f02hC$&0!XQ3~24NT*)P4fl0~!MW)qCJ|fN5#}L2K_p^*gAphtVK5GKPtR=KVo+ zKL~f_<$>>w1J(C&o}T|fZGDg)&^~*RKS6#3oiPY1!$9ZffyN6!=Lv$=2!O^jKw|)) zbpxPz1dtgZe}d90sEr9qU!ZURg$E%F3U5$a0F6h1!VJ{j0UJ27RJViL4RCcJahMtyO^x+`p!$60|Nk0M zrT-1%YyK-uzxH2m*MBfpZQ1o7G`^ra^%Ug1U{G5Dq#lGp_5b=G|8+g0z~}#f=14%{ z1gif*bv@{uKXYB(|2ELG06^yggU$p7%?S|f|0C7^pn3unW-zQS$@jn35z?0j?fFBg z=ke74ps|0@{XRiDjQ^dK82(q;K+gFC)$O1&|6+9+{yV8K{BLk({NIVC|L?EI13rTo zKPXVuLU?Igl7k4n~8-kTFag8;vdo(}yk&;)5_KJ%Z8?C~v~bB2d}~l_8+E zHAp{59f$^Dd~A>$41?67V~`w748#UuLVTDSSX~cm1HfpII0%F4e^A*Bayux`j@JJJ zSMS5>Wl(tvN>`xz1XP!R>U|gnmC+zJsE$C!p!x!Yk;PzakRDLF1nsEpdWU}&8MG8cql=3%2@@?aX;R|csAtqlY9jX~u*XuKHY7Erkl9}h>e z1Ed}WgWLceQvjI@(hH(NbuXx{L9Tm2ZU?1bQZOjrg2EW&HjufXIv!Mqfbs)q>;V)G zp!y9&gTfqC{(|ZmP~3p*2I&WlnSk1Apn3|_b^y5%gh6aDhWZcWFOVG|8ibMAAU-|} zvJ+JQgW?8s#}8;PAZ)Eatd0lO;UG2)BlAIhcFzH3y)1e~|w{;Q*>@L3aXx%mas#L>1g^V5`}6|?!Rtjp z@dw(=3=;>H&u}(!{SIQoFs!Zz(I5;H2hjlm{|&t3{u^xg0p5=X-j@%mn@Po+|NhsV zczvcgb15o|%83SHZ0}2yR z7=h}4(7Au0bALf+{ekO$Jw5Olz`DxH;4=Yh=B)&E`${|VOr zNbLd8zCh3%K#>h2SRZH|AV@z*4AeI0@n!&<+X%V`7+Iei!~Y&H#{XVgkoq6w7HsYU ziGeUo9+?djL#C10Fts2t5C-u<7@ZB{!)TZqbUsKNRR4q0A?Un3P&oi9cR*<$RDXin z#UMQ(3{nfi_}Cyh7)DkL5(Du;7{&(CAdF88BoD$MHK4f&Se=hfgVqKh*Z&~*gUT9E zp8!@jjMDUP4}j`_P@Mv*n?Ut7sEh?;Xuld(zktM$>kV{1NDd?hQV%LaL3JkR{#o=m z1=$Cx(?Dq$RQ`g>c~IR2(hD*J851i8(hsUTLFz$fgXZ2r^;e+a57)Gx1L1HjIj0U$A($oKg_5p(00HFQ}$gQAw2h9zD&IAI*2`Jt{^(ttr zA5<=Y&I1PRF#ydwfYt|q&I|&z9YEy@NDS1j0M*MNy`Xjjh=zp^D2(u7POc;j#IIY21;`#|dgw*LQbyyrjU zydX3)jCTD0Z?NLke?wb$Nc|68{|{;hg6{bP_5VTh{-AUJK<5B}`u<=sJ-z<~>wnPt zKj`_tps)jl84PPHEB?b>AaM{I8H28uG6B>#0oDH?3{r<~4!Rgf9)w}yAT|tx#6TFv2hlJ-hz4Ph z7%~QlfiOr6M1$&hP`wYrp!Pb524NT*l+R;5JmB}Rg2q-sc^Q<4Mlt>Ceo&Z$%4JYp z1Fru;*AUlvTs7?lz#h`Qys>?w2 z0LWYzMmGx;akXfKL2VnCpEWl%#pne*tt^n2l$o>H7N5&xiV0l=53LOgo z`3E%K46k!tUBTz;fa?e7+9y!G3|fN-sy9LY0_9B*2C>ft)MmlD9)fXSR9EB@)roBi=*?A)qwIP=)OHr+=J?5P`wSS z>tQskzK8KaGzf#lL3K4~3;;BL04f(iW`oX|s7^}y5318aVF^kbptJ|t?+2RW2cPv9 z74;uv7w8N^ki8&rP}u@f1LA|y5hyM}`ao>~Q27UHe}Te_5C(-MD9qg~EdGPqQXn=c zor2qUp!y#PgW5o#b^_?`DA0Mm;QAk0kAwRBpmrcAEH! zMyH`-w&phf^%mUzZ?yOSf5Q#Xz4>T$HBsXNpz{Ec$M<1oZ2tG(5QJfT5WV5gf1?Bc z|Le^-_uo?A5S(Y={eM%_|EAj7{|(jDz-#|N^*?AGptiCycugRPPgMPnwEqtjW-#pT z;QHT1j^Y2*0K^@Apn94p3~CR!BhCaw*8>_0K(7Bm?S+Xx4F5}P82-zO2*T@sQ2GS9 z2S$U~AdJk%#)gT3Xb?u%gUkoXgD^-8gz>S_d%7W0#vqw;s=bOZ2(Xm04nQ1^#xcQscu0L zgVseLH6XJ*t*ycLpMvZ_#vnUDWiKclqu2i+y)X#vDNN z*x-8B+#GzKImk{>y$MnWo)19s14s`@9881!fP_I}U<_R^2Mbr+~T0AhpmfiP&S z7}R$JwFy9DTA*<{Q2PhuM^Ie@%B!ICj)Kk2;q71)aWk|3AblV`AQ}{wpz;{Bo&n?! z1BDwXOfw>5|Eq}c{jacvi~)ew>VfKPYGcrx0BCJMpBKY_8ySZG zUd|rieV!mUfH2%WK|x?~WIi$*n_8F{NF6$c$$@APhRLI|VSEq`!Z39p8pH?H{~$J~ zO$sX)Ks1OC5{K3QAhjSqItGb@FtRv^55q8VbUsKNT@1uW7l(wj=P2ki@k>Jd=P}FfA5;U!mK;yNbdK)AT)(5KNp?zkUUJwn! zV0ow<$XzHH)NTOTfz%!V`3Gb+hz4Ph8KCwDsLlqp1wdoSpmYvuW5LD3`6CJE-pss>@;ZJBWs1P<;<#!)Op2q!u*K59;fK>S_>%)%Tz{0I@+B)Gh#(ZJ;xN zU}Xb{57Gx3O9WvMA9NlNsQv}H7vvtWdEVatL2Ur!F#yn<1*lvkwk-gP2TPH!K>O^VemgZW$lPuJ{~PW5|6hOJ_5Vi3*8hX-?IGj; zp!NUI`X5yHgUg;Ury@;SX0)#e8>x0?>)WV?ke;^DpFGQ2!zov@n|HAl0aGZkN0CNk7 z24R>OIvbe}Qv;$w7$gV7=zN$sj7FA+v9Zy}VxT+#(ho|L$mtuj7YH;qg{%GtnE}Ee zz1T2F4unB+AR2^0Y-|`N2ckh3Sq+SjT-Sr@dl(-^gU0_sc^Fi_fiS3C#8yXu^4Tb+ zPrCqAhJwmDP+WleQ=s?()d3(3s?R_eRNsKaQR)d;9SN<2U}`|>K>bEgy$9OshaQh0 zb)Ym1stZAOfb0Z`f%GApkIaV2!Dw_jxHzbO1l7-=eSy&Pfk0(E$UabA3i1o6{sGws zs^j4LpngE+gV`YSKyn}&gkfxC8pH;L1yY*;+#Z0=rGVTD8Xo}l7eQ?TP~Q>c7Et{P z3U^Rgf!qkHvq0_y(I9cqeLx`hg3JQD1!ND*4InlWhRLJTAiL2qHZ?FYm|9T0fX28% zc@z|npgDU`9Sy46v0+f%55gch&>DV_T2OrsDw{xi`#|+I2!rZ-5DlvPK{N=1)&zpq z3V`POL1_iF&Iv?=$`p`ZP&oo>OMuD=Pq=6{0GsXeE^_v!dL%SWMqKvPz2Q%pg0B5APi!IaCSuG ze;qB||5~CP|Kkmr{^#2;{?E5&{GW%8ZLo-;tHHuAuwne4Vb1v9QHk}xFfZT#w8$9n z*gvuxKx_~Oxd()?u|Z-Wj4Y4L2eDxoqy~gxd>9Q9L&hL+5FeR_u|eW6j9mXCr)f|* z0ZNmgF*1-^kX{%D@nIMw24Z8QL1M@lqz;6U#n9Oxc@PGPgJ>9rt^Wh%Sy-Kq%m(fC z1?4SJxdOtVdhC^V?vg`Q6j zDpNsg+_0_f1l5C}dJa^!g6sj+Z=m`Z#Vn+{4Otx7ZV(%Uk>%lRkXt})08h{VpnZIx zJOk<*g4)j@J)kuxAR3ew;d-EUg2d6qu=0_@1SAjB2ckh3R7Zg7D-Z_x5fru{HmENT zk_Y)26c(Ve7StvHxee4N0MW2{5s-SAT96&o#9(uA_!(p`$ZeoH6%=-$@&{B$!|Qm^ zoO7u+6PdbnD`&W2bCwFGk-zr z072ykXx#v4o(dF($a+Cyp!oz)n1Rw9$R5xf3@Ckp+)WGysRflqpfM>>c?xPnfcy?> zqk+r>CBq9*}+z2JvAS zosTRIk^^Co7>tIoVSHp7#0FuI8e|L-L$3cp`4)yj<9MJsyn^s>a2pep-$4EVtuq4U zFZ4QTluy650J#5eZ4F*q0xDlYbut)(&e(;m0f5%0cI%N60#uG*i$_rZ z3KajKvKC|ysBQ$+g&?z$>m+18vN$puqy`%Xs{!o`^zZ=hGXs^?pnf69UQjy+BoFF~ zg7t#j4eGx`>q4*?4mL<1NFGLm*f=q?eE?F6j6roP41>ZO)E)rw!RA2qfW$#z0}B_h z9Fm(r=AnzB^O4mcvys)Ii=*>FK08}4<#`Hn`dQcsYj6roj2!q5x>-9kE_dxLu zsv|+;_@Fu&hLP)TkQj&$_N$v4xLgK}9e~UNjW>X3(Aon~xdJl}v|kdW2c#Eoc5Fdm=VjvnB!^Dtj7@LqfkUU5&2*cPQ8iqmQAdHO<5(i{dAPmwE!Z0?B28p3# zm>h@(VURqC24N5zgpt`GJ~D>MfoKp0)$^b_AJ+E=(J%~Z%Y(`TaQhszU&`G4Kd5{G z^$$RKb`;aE&PNVwP#+3Z7lZ0WSXm6Jdq5aeu7YULekkO611lR;-@3bl=SD&0Ca4dE zY!8eLum7#B|AWj2VNg8>t9xKHRy&aDK!Wnnx)fwS$X}pw08oDxRK|nGJ3wRdptT1e z`#|*uhz6Mnqd{zBj7uC@4F((J24oC!KZp-)Z-C5%VURmv7$gP?6Abe}`k@%4283a1 zkl8RXVrZB?7!A?`V}t4gPS!1nM1#%>0QLPr;R(9i7gX+p z+F78w8oAy^W`pEF@c_~T>c@cW0IeSco%;hSQ$Xz_P#Y1X4yF%AgT=hP!RHEr>KahG z1J$u0J3;XbayvN~q!-jb0qF&;IRy9fLG?2999z)51SmZruMI@0`=M$ovq5yBv~Fbq=*;=|bJG)NAFNfAd@i>?>M2Vs~RbT*6+qQN*Q z2z(zEXbcWCM+HigFbqoXp#B@E{)d?dqQUwC1Ho--7#~C%P_yoy=;vd}JfZ9P!T?exRMkCt~V#6>@9!x{) zTF_WLsEz@ZouD=|DF1-Q&OqbrpzkOnXVJxAd}JC~FGw832VoE! z1w-8g@-wnLj18t?YLMIkG6O6Jbr*;a!XPmahOt3348z1>d}JD34#tPkAhn<{0kxGt z^S~f+(4IcfH~^@w2i5%`3}b`N3IdG}fX2teot^)K*6V}X{Gk3b2!rctFR%X~8iYZ0 zI2e0-gZtB6n*$yw^?fXi@DJ&z58=4C+VE@ekV{0E)+2nt7Z4608+VjvnDMwWxI z(P@}IWN{E1gkf^XG_p8|4Z<*a5F3VJV#qW|4i_ILhl>X31Id9fHa18M9fQ<@+R>nV z0ZP-LctOUXyaB3TLF%ySMHWY9gVdt)L1G|`ERM_u$-yv49EL$+AU3T2ht>VaG^i{9 z_5VTROrU%T!k~0LTL06(&IgrKFbpa?LF1*MJ?xKp4hHr$KT!G01Gt7(eK~ zAP3{nH5VQd&5Mq?8P$$>CP4u)ZT7!49fX2baC zVjyuC2FZaixc(0fg|B5oPRF4156WjCJs`C(8pH-+5Fds~4niCIS?C!VQhT$ zKd9~pjRAnh=|E*K2!qlzD4mbufolVR%1uxo4_yDl=KG;EsP6%83xN8Zpn4QUS1y)8k>G}F?6-)e3*Ke zIE)5~BeOw#Y#3P$G8xNKgL{+V2k<-viCjgZd+& zxqDE#1gZ}~@eHcNLG?QbgV>;Q3skp*(gdvj2Z@0&NF0p4yuf$FCyYU$S&lvk{mWDEI@TUxXy;w)u8!UP~8s-7f=}n8tVeN3zXhr}8&;Qt*f0zeL#9D&5C*A%(V#Pu zot*xI@+hdT2i^Sx>gR*%d(d8gP<;;)1D^$GXb5f-5UT${W`(%8{0D_0s2&6P2RV#D zd=N$!1F=CEBo4wLHVDJm_-K$E2&1b9i6LW{JU%gy8W4u50kL5iCI+K%i6hISvq5?Y ziGkFB!VQ#{Ky&BlX&7|QIY-+I8-zh@7>4nYY4rLZ zJoXR03kX#IgU<2>mHVK&AA~{U8KAU1iU+>_2aN%M>TghejDex`9;htDR(F8Kpm*`W z>VHt%0aRup$1SK|1}d9D^*^ZG0F~EZGtuf>uo%=%u-Qm#d~z_gIMsmGC_wv{Ap2o? z3DjokUWe=XM^}K zjI0JGhK&ZDn+PhyLHQMwcR_VOXbb>U|AW{d3|jLCTDu3T>+>Tc|7QdT{|Dv$^0>JF zpgD5T*gmL!1l7?X3}VCTZ4euTVSI4C51JD|>g%J(V-bhx1+`^CWhChALQq_S)+~VP zXOP=raSftD?Nbm2wf#UCB!&xv>UmHZ2TIEz3`)T(bU z)$7oG{GdDu(u0DXoxy8$Kx6&L7}OSbwXlGn?+2>?LE`|R^Z!BZ0MMEMkQk_aV4|f3 zz6$}AF7RPc`T@1YK@DV#6@VTo6X*;}Qdj!!S$_hz8ZIp!h>hb09V-Z-C@LdO+$x7{&(C z=olss6G!I5*f1KV21LWeU^KEAhz-IZcYyLeItKLzK=nU*{~wetLFpTm&PVaUv;jb6 zCaC`puKz)M)}eiWP#XYLhJrA1U4hI-uP;DlA}CHlWh+QOdYr=Qe^7Z0DwlE9|LEr8 zvlCq{Iv=JNMuW;Xn4ds>Do`E*VNe?Yv>p|t4m2Nt;x_2m0kYX3b;$goz=pXQMkBi! zBnHCBVjwn13^a!eswYA52Fk~vI{`rTKCJ%_n)k0uN%;>-OQ3!~s15^_1)z2TsP6(w z7ohM2l>?x%0mKH?2e5h@REB{tj1O)DK>PkMakw0kIIR=dD&w|P}ke@&pWG1K{1J%c% zFafKxu=o$s3uc>}{|BWdSbG3eUxVxcg#pN3(0M|jG7r=r29>2?92oc?cE_!{k8bgW?F(?g6!DKw%2@dr%O3of?P_ z5=X``F&GV!1F=CE#0Fsy8-$VBAU+7Ai-Gtcj7ttA4#FTcAPi%JXc&fxCm|$V_Z}kT^1isX-P4u|eW68pMWSkQfNV z_#hg@2VqdV7?i(3ZUxaG3}S;YsN4Ye|7~p{=boCI{|BW-P+kD#sZl&|^*^ZW17T3V z1yp{5>TVbY^Fe)EXnz=1CxGe&5F3s`{eKUS|Df^&R4#(_p~oqxegLie1C7yw${tWX z0M?JCeg%tz>_x*cdto#-bwtU5)*iaK{Rfqwpm}0YxeqG0L2V(>xD?1-a67=m13ae< zYBzwyuwi`mVN*YlV(4x~=fm8FEDkDnKn+MNE}-m03?nJgT@&^Wf7>o0g5Y7 z8Uv*@P+bFRcY@LzsBH?mhX6Ew530jKbt+61{1R8N7@FQ|M4nE^@*pgIeL zVf8;qA86hJw1yNECZIM2NG~YtKjRTyS)e=#N=L{Tlpa89>tO0&`e8Io z97dyy!}wqt=8xcDc$mZVA=6;BNZ}2V1Brpo`vA=Wf-uOvAR2^0Y|wdNp!NW$tqr;x z7KB0h6r>NH&Ozrdk7Dp#8NI>;RHlLA1XNan>pM@+|IttkN?RZd;)C{KfiS3?1JTGB zEavVGo?8d?H9+MHNFTZ%K;4c2%mcGMJpO~&$QUM$i-xHM$%8O5 zAI1jJ$a0|e38?G^xf3J~>idApLJN!kp!I>E@Bq~pAURN94-_^aGeG)4G)Npo4`qz( z2V^$PPcSi19|Kf>g6c6){QCk1|T-54nW4BwFMvy5(CjN4C7;^eSN`c4x|>;*67N~`QMqH{U0

      as1%(BuZuPXb{trs?pfMCsKN%F}AoqgY4)OyCgZlNL z_6x|*ATvR208sxQWF9CFfa+;b{SRvAfZ`v7LGcRO0|1)q0@arwH-X0TKx_U$=77=* zsGSBXFF@`G#R;fw28$oi7z4Cw7!IHmzmyBJiyf$}px3@UFxWdf)yfR%lqIssH3f-o{0#0S+UATdz=0OAMP+k@|f z1K9h;9(g3K80nKlN$~aJZCkBJ|(}T(xP}vMR{{&P%fH0_RfYBf} z2!qN~kQk_M1lkh~>f?a&7AQ}G`rn{+O&~QOvq0)WYC$vz!`L7ihCyXM$ShFa2F*Q# z%);kpkUVHl0jT^0t>*!?89@0PR33opPEdIYDr-RT32GmJ=2}7R6Hwg*8VdxiVStsb zpt66UFsRM}^?5<{6sYY4@)u}~0_0v$odc?yL29tM4-|H=dLK?h*NlVYKzeZLg~@^9 z12i@aI)ed}RzT$1|UCz`oEyCf?-ho1;a2gP(K&s2T;2R zWGAS;1epPv&j+OiQ22t<0%*P))Xo6Ofz*NA0_t0X!X4Be289KP4{|5S9iX->sGi4# zLG?fAoIhm5CjUWWVxW2-hQalJZZ5e052~AxF{qvb)!`tupl}1FeNdQy)(3#{ z1t>4U`t+c?F+pnwL25wtKPZjE>ON4L0n|1Cja9(v|E~P}|DbUg&^iE6od=3%P}>XS zXHeLI+J+#rLE}%LcmuUtK<0z$eNcV^#UadmkegxkD~N{ivC$wgm_AUvg6svgbzt>B zOg~5+HVl#nVUQe*2C+f+5rW3_LGvV_umY7ipm_z5-$C-o7^Dy67f@V-$_h{$1Qc!{ z3>upRh21C~t@npr8VCpgpOFp98=$mK2!rwwNDZiu3@STdt6o#O33{*yg>H|<251MBLtAqCc(Al81;-Iz6pgtI=-w7&nLFFC@!`uXN7di&X zf%-9^{0*xALFGDVKQO4g0`*-$XZnEFS%KUHk^{8~KxTmIe^9vw+7|_KBd9JKNDQiT zKy?dftsSU*1i2B^jscaEptcjJ{sF1Ma3gg5A2eq0+{2$bg0@XL5Gnhc`A_*51K+gV;i~A3%V?p&f$UmU42h}y8F$Iuapfmt- zAEY-Y`2>(zpgIuLb^_h=4GR-c8UpzXGzI`_ zUxV@pD1U(JeUO=;@GOgo0k3rcnF$)h0iE*!@&iaMD4&7aCZIMw$PN$&*$=`XHVA{* zFbv~^Xi)tR3P(_W2Kfav768J?YC-DIF|s^}4Uz}bK|$cPJ|KU9+9jZ{0>vr%90go` zU?4bbKlaX(O51}dLHWgn<~1eMt!3@TrdF{oSy$%Dr3LH#U{dXPTQI%<$Qm>w7n5`$ro z7^tiUl~17j3@RT$ZE{dq11i@*`5KqoLGA>p1(kguzk)EVKL8p>1+7m6mHD9f1koV# zKzcwJRE~k>b3tYPV8Ebyz9cFNd_D`vzo2pr)Q$p)gTe+>hhcLkNF3CD0%1^?g2EGo zLE_ldBa4C5gZjCkb{?pn1=V+;`U<2M)Q<<%$>d;=d7%C>=)4(Fdj{490IdrF)m@;w z1VDa*yE7-}KRE5==Y!`eKx^_rYC-M+#TBSe3RM|Gx)m0!2suw}|02Kcqw}R3F zhz5lLs7?p9ML_Wes;@zF{xCUEdIr_AAoD==KdAo?3Ik9$fyO~V`4beUp!y%w7IHK- z{ST`1Kw$-{|3Ur+=>ypZiZhToptbX0cYyZH+1rEHEQ0I-xf3K0!su*dK1?2DE+`Lz z))Ij7Ajpp(IS>Y^$A@8RKr{%0)WT>`IDy78KyC)56VR9w= z4+6~@!|HNeZU^OgP zkK|&Ie?V(1K;thu?gG^-pf(Gr{s7gPAa{Z=C=U><|6^kQgXaH1^IxF3 zDNsEF@;?m2>wnN)mC$)~P#y!-X&?+@gX{;5!GQbh3*xe4TUP*{S* zL1RUr`VE9ZW`OEBkUCH}gT_Tb7?eLj?HJHm4IqDl(io^+1Zo$6{hpQeAGBWwWFBY@ z1}H2+>j*)1fbtBe{RA3w2Zag9jW7(d55xx1APi!oV~{zZxq6U4Kx<23?gXjBr3WMj z!^moo*&uU3R}Bg)P@N4LX9n2|s`Dtp zpfLcDd7!a-P~ROiw*ab(LG>7@Z3B`6VUXWI{cM;&L3JBwTmlq7pmYZc7f|~Yq!)BX zFUTBFI}sG0pmYN&|6v%!2c;uedjr&t0_g{(Cy@D|d2^7TKy4ooAA~_^6x0s}txo`@ zN6?x&P`?+{mYrBw2tMZ+qz9B{2-g46(cm#0P#p?dX9uhIVKjRE4@&DGj9k}&_@Me1 zwEiE|CIk5sgh74=orM9a+d<CP9#rpw`~q@6Xgm_c2g!jjNFE;ssR3b-8W;^@gZQBO9JIz5TvmYY1a@}^kM)D@ z00#BxL25u4)E)r&2V^&>oejEQ0aOma^nuDrQ27TcLqPdp6pyw6hH@H64GaX&{e$LU zL1hO%465@%d+k8|DRgz9ybmf9K;;>zOaPUSpt=gwR|Bz;F{m6x#vnNmA4J12Xp9w9 z{(#DN&{!~N{0_9w2xJe~ZVQY5p!^A%OLaCj##--#)j`_?pzZ|ufZ8#jauQVLg4S?@`q0?i26i`rd3|j9 zU}B(sU!XoDs4WMYGX>TCpne{x9su?IsZsZX`~$+EHUK!Rv$DW*wxGVMoskiEe>;bs})ZPNEfdH)w1hqRrdlo=`fMH_m zf6$m4sBVST`N%Z9{)e7d0SW^UMy}I9Y*<|dY72tuC{VfuVNiV!YCnO}HKk)_aGa9^p1TJ1yFg>{ zpgIoJ{sGm|INb<6uMg&SP}suQ_-Ii33sm2M>Uq$Z38+2+&C7z;f`jIU!S!T8!GBO3 zQ453GF`za8sQv+sNrU1YR2P6SXssJ)%|6KP2?YiJLH+=_5$7GML7@3# zP&xt4S%BOF(u*7hpfnGvFF|(W!k{(>D2*Z4`N(W={SV#$52}|y?nkCUY!C*CgX$^J z{uR&|94K#q(lrQ!(lIE{g4#MDKBx@`ss};i93Z`*wg9OA532t`VFd~gQ2h_edoX{2 z>PS$&1Fb6rt#<&`^Pq7R(EcA#y$CV~RR4qS(*W54%9o(@f?ofF)PdXzqCps)4dR3R z0UCz^#W$#Z3*v*sVd_C_Y#1aD!XP+{+f$9QWYC&}cs2l>7Hz2j3eiW#D1eLWQHn?1cuJH%4LFFq9gVcb^ACNdG z-+{&xK=~D99>_kBJ3;1y%5l)%Yf%0KwK+g?gfPg>u(m#^tOfZ8)CK~bIRwhfpz#5a z8K80#6rZ5F2;^Q+U4pN!q?;VHjsw+WpfVd22B5uopt=bZUg+)s)m@;q6UgGAa7N~1 zutDtw(71ngHhA10RL6nB3Dm{{wfjK*LXdr+I0DtPpm?P=295QD`qUuzgUVu1T!HQc z290Th)@6a}S5Vx5Xiz^LkY~s`Ef*!0LaHUqJOgs67qZ z4++YHAish94qE#Uihoc$02D@`b~DIKP(A|H{~&Wfa-g;|$PQ2&1hke0WHv|+-MuhA zOb*5ewMjsFKw}gj^Fi%BP~HZ~gD^-vE)0?fVURqC24N5zgkfxu`5Gp!y$lej`X8qz60(5FGp; z1ZzX7r1*kj+iNWLv(V)5yR5yagV?cdWP~8g}O9qL9`oN(24ZY5zW*Y!x zHmF_&)j^;-95g2nN~@ss0E!#XdX@U*WbmDjpt>1UPl3`8$d91-0%4F_LG3nB-404$ zAT=Ni@)u}~069!R`ao*odUA5W=T?K-Iv}@z(i*6)0HrI?cs*z>1jub5vq19beg}mQ zq52=xF7~yv`;WK&2d)3dvi=WLM}g`!7>3nXpn4rNHUUb*Ah)7p*qAqH-VCG{G|mmG z`$267i;s(?= z28}6#@+HV!AbUV+Ko}PrBnPgagM-0&8&)@i%mv92!XR^zF-$#748{k|m4U{TU}uJa z*r56y)YbsyC6J$BYC$ye7yu~DKN{fVPFNcO zwC4&`)`I#$#OMW$<$=l!&|EBN4K}E(X@H(L4(e}!>L<|LE2#egDvLmQ7Bs&Gs`o+p z47m&g)%~D#d!VutbWa(m`~~$-K<)rxWVP7XAT^+R3{=;H>VJ?LP`L&26R3O#wP`?O z3m~_G`ih`(9aJZP%EQ5cL3KK)o&uGNpzs2fXP|y5s80(Lhq)0{pMly5pgOWPF%jG^ zg~<`3L49seod&8SL1jLu-w!J5Kx?5v_rieMT%h>|P}tBKgVx}I>LE~@12pywZu9u~ z{0G%Pps@f@JyV^K0KNkfkQ|5x zxdp@q#Vu$*186)Rl+HnN#9)wKkU9{JjzQue49YJscY?|SP#OZc6V#6f`3>X-kUEfl zko_P&$e*A#0!STb{0F2KlpjE02^#AFr3p}ZG8D`IQ8$m=whL&yi`Y6GRDOWU6HvMb z?fU|i3#7IkK=mp(&)M7m2aQvL>K0Jm0hL#v@i)*KTTq=0D!V{s49HGo4AKiK7eM(C z)Gq_AJqPtqK;sc0Js^2x_1M@THK1|~)Mf|uYe8y2Yl1*y+#vUW_@I0Z%KsocKy@Xk zZUE7P0fXu^P@M&ug9i1@L1i_luETH}be;gzZwC1Vqz2TU0ksP-)FO>-faP;?{)6gL zP#X&rUZD0HsDA|NhlBdOp!yhu@zsCm^&usE(D)E2o<6ViP}>L8ZUf!T0veA7 zr6Z7gL3J~z-2p*~ zy$f0k1IpLLU{G2IeGYj6i^+Hj6v-KkQ_EMLHa=D z0%*JvRPTVwVNe+k>Z5}CrJyngn?9JmFdC!=R9}GN3^eu!;)BMOLFFIl3>MJ%0%!~X zGzJPP`#^OqzWQ7ceK z$i1MoBA~VasNV=Gr$J-dpfiSHVFs$}LG?Vi?$65upCbVBJ7|0Wq!zTc095XS`hKAC zUXU2bUXb5G7?dVJ;Yi4@cw)4L6t19j0P-)W{s)CI zDF1=#JW&1s)r%l8kbNLGfG{Y`Kysiq2FQMpJCNl;YLNLLHVDJSLFR$-B}hN0Uk(~m z0J#~Y1|J6LhhdO9bT&u~ghApU^FV0>-afLh_z&942dei$`y4^)K=y)Ykb2OV3aFg~ z3MWuI0OTjo7yyV38ixdhEojUGv@T$D3}Cbk07}0@0fXA=pn4B9eg!Hch{2$=4odT& zzUTCcivOUpk{Er|Py=eGfaVTBbq#1t7*w8v%5l&b0BHR(sH_9IkC0s;HK65YSjMsDB3P+kxsNP@IGMf1r8*)RqMCLF-IFc@|WEfy#AIoezq8P~8W@ zpl}1VIYIs>){l7Wf9PF6MAiRD{eMuM1j3+t35JpRFgD0vpn3{4&JW5Durv?yA1IxJ z!Uoib2eq|9YCvNtpn4y41|w+v1cX6h3Gyqb%>!yPf%^L(vq1GfXdVPqC!)InWIt#; z5u^?@rUvRSgX&L^I*=SXjVuOYgX(2aT?}$BsLcwp0~AjnIb0ZKCP*H{24NT*M#IEl ze2}|9^Y$QnKo}Grpzs2X3xdi85F4fzT7nEO#!Ju>w+LH|`8$k6xsGKB5A0=u)c7oa{pmG3I9)bE^ zpt1^7|AG2tp!x^o4p6@XR5lS~7s$_`Iv!LWg8DRIc3>d*EEbS`p!^M*;|A4(lweSO z3c{3_L5W^aSb^59f!a=>^^KsuJFfme$eo}t1=Vw)@)8sdpzs9MrJ#BiR0n|Sd02f5 zqd|2eDfJ>K4rzfw?gqI9R9}NI$PQ3F2AUfJmEWMU8FZFAc$~oA{y%682!ugpKd7Do z&GUo83uFcegV-Q5z?h6Zj_CD2Xzv`TZ34p}KB!#<8neKK!R!C=tp9`6Q7{@5Zy+`Z zgVHd_-=MZ1EKh*ia-cReXuS-`-ym_&xEiP&0G+!8N-H1?>idJ*1fVzvjq`!#NI-Qy zsBH|=1L`+`+DV`>0GOR18iYahAjnM6TslY%sQv`G2P6lgkugjRMuX~IkUmhm6Euzk ziWit1vOW+SBo4yZ*dQ?w#wHIE2e}K>J^_^jpf(UF{6TFG(7GVd7yziQ2dM+=4+;X0 zy@1>X(g(sIwV=2I^?zVzE`ZDe?FSs}<^HJqM%yN!GytmqL1)K+@-wj*R40JO%|Pq* zKMsICIn{{;pALGA#x-9dSoSUW)FAE;~s z^$$U8&=>&7f1tJos67E1TgFvaQc@?=LocW<2iXIv6G34GE8jr%KS&%K2Kg0K&x7WG zL2V*X-4D_S(hm{`&3%L709NlK)1dkiTu&nHe;X)1sEq=0C&!; zA5<5CFsNQa#>iqYHi!mc(EJ6cKMPtL1IibmdKom|0IF9(^%yAKgT>9vzI`~<2qk=4N1AayVd5(BY8 zG)O&2A85`A)FubOkcc=xjpJSS-jc(3&JrJp>-ZhOTb|m*=^;;PMMp zZV+QW$RD8o3@Cqt@;hkFAqa!o4i>hg2DrYLE{df z^}nEY7${so7^DWK4@AT2eh>|6n}GZWid&FhL1uu$5mY{c+7hF6=*Xx;hip6t1pEi} z|3Uq0P`N-12BmS(nVg{V5>%do%2H6C1)T*(jDAwofXWb182~DSKxH$i9}23cKp4~p z0M%ijatee&ZUN2h!pb;8_JI5Ws`o+tf6&@)(Ap@_STIOGsQ&?~=RkGgP_O?%{s7f^ zpl}4O^#av{pmlGcu!GhApzs8>=RkELs9y&PJ5YRr`i-DE4Ak}lsR8K$g)^+)M5jUa zfZ_?1HU=XGxeXb^+z1kbv8hRe!Vb3oA5=%+s{cXt4K57s|D(254*&v=<3fK7;CeP#pxrptahd{wSz#3#$J? zYtuk`kzi#QA@f1%K;;~$z60%H0Ig{Njci;yf{y(Tr!i7Qg6bOUl!E|u&f6#n3 zxQ}XX4sQd1@-e8s1=WS1It{cw0yGW|s>48e4|HZE=&T=5eFn-GpgaYV2d$R`)q^0j zK^SHahz&9iw5|@6e?j#rsQyQm2dM$^VHm^*VHh9O1^~@3g7PA0-3drPOddodV~`#Y zA4G#Nj18kfVjv9SgD{K@rh|gO=lX%h`$7H!`43bEfcEu+{0nL?gTe&1z5%Q!Fc3Tz z0df;a4u(N|Q2P#a-XW-50htAASAgn|(Q$y$b_6IL3`Pt}o3Qi`$^*n;P}&Cd6+mOc zpuPd9ZwTu5f#$(LX&;pDi7^MC8ju;FzBz0?7O3tAVNgAVj=^ICd3oS<;GlD1Ky@6* zjrhz5$%D!_KOZz^1R4_niGk7&$gLnfAbUU< zq!&hm*dRGjnF6u{q!&~-!sM~hFfou`kQ+dJP(2J9Z%Fj>1K-UDk^_l@Xc&g^K{N=1 z#6dI+!}uT?ghApk8pZ~tanOAQps)b>5o9N*F92G<2pWR`$-~rwXb=XO0h&7ig%vUe z#UrQ;1hsiUVFxk`G_D9LV+Ui|KkBB@b_wWCFi>6v1iL4IP_XPDlKz&hAy#%UvaMk^wx(hT$52|lK;}M{`4YZaI zPS$%H&igl?I5>;#za7V0AbL%d7w4t zpg2Kp+kpHBia*f&E@*rJRAz(1A2cTfYS)3{7Zk=I^FV4rG@<$*BoDH4wEjn{|6^kQ zgU(?9&jEnyekcaj8=yKBly9(MaQzRx{|A&-VRaBXjaM!x=s&0p0J00z#|QPTLF4$K zIek$54AKk2pm6|Dod@d2g6d#UdI04eP+kGm|Dd^T&>T6ozCX-8p!y#)e+Eixpgu6D zt_0QVAoD?LKo}Prq!;8)kX@j5Jb0WTBm}(n9;62ugUkV8m>4=6#s|?L3{nT9L2Qsc zAismd!_pFR9)h_!_zu)?XXpQ*J&fpX2k8T0kbl5+e|R`}A0UVgG7FT)Kz{JHvic8d z1Ay)r7_DbV>)FAa20&#!D3241LG5Hvz5vz#pmH8m|ANMeL2Up~odc?0KyzQ9JPgVM z#MH$wyFuzfWAdPL*Fg0LsJ_8h_k-j>{albc!2Qm=y#Ju~H!*gC)PTkrL2Vi2aZym8 z2vmoG>P1*x3UbF#z%ciM>+bw~@Ew7mI03EG1jP%e%m>9CXiOiZ7BqhX@+)Y)7bw0! z?KaT(2WajWG?ovm^Fe-xu|eu#eSK^+Xbl0V-3E#iP#lhAj6VJko&$)Af{*=!+5(_D z8Pq4oR`-L%VD&$!E(FzIFbt}PKx||h#D-yz92`T>&I9p5_JP{hpu865>I$yEKzcxX z0>L!&z8lcpn4oqEtPKE4JD_#|s4N4eA&^=a2AKPwJ3NF4~n z*f1I-2Erh{AoD@?fYKvK9^EdG7z~5-fY=}!hCzH728n^#AR2^WY!D5?IUyncLH%=3 zng^9Zpt22A?}OStATf{{nEmMbLG2_^Sb}I!{SU$*HfSCIG=>5)57egs^{+s7fc!Oz zN818}DGh+qC1|ZGD6Nu$LFpb;|AXooQ2h()cZ2F;P+bF>9|p}Eg2uu?Z3|Fd2K6aH z^(`(tKysk+2sCd9+ItMDKR|U3$V^cG6Bh=_gX$$vT?4|Px(VbbT=pP~gX{$5Ptcfm zkdqU5y)j50G(L-7_kr9p*fFR+2VwAf2&B3n6i1-`J?K7HP?-uk!v(|##Sv(J0OVKD z{0A(KK;;~$eE^aJg)PkAAhSViP#9yY_mRaW6c_&o#m7jl`$2xkR{w+gh@dnE!=SuG zu>Q}@1=mxc`Un(1AR2~Yd=L%8$Z{Yt5FbQ?+Pa{ADrim{lrKRT)UE*4yP*CsSPgWJ z8{{sK7^sa5$`_#e97KcW{$Txokb0QeFgB>J2dM$61^EkPHVA{%fiOrN2!q%ljLZhr zwV?huNH3@!2Cc&ZiJ_|l@j)1*7lc7<7>4mdGz`P!Kr~1UM1yd4a4>j2A3SDgZVny; z0ND*H8$ja^ptS(t@PdX3NG}M3^n&~e3L{XR55l1O9~3U2b%3C=0YUu`P}>Qd=X`zt zgTi?*mHne`8EuPz>PpZ&J1ET)i$P@u=o}eP{SR744yv0$^)Lv7#sNV0r+~)dK^S!Q z3MlV`#sNWXYj7Qdmd`+W1eD)EcL9LTAO+Pgpt=TR9>{EBa8GV7xUUQ9dxFMTL3R=2 zACNlGxj3LTZyN%Ji5Dmg0bs!9?7n6K^z-mEjNI`s1 z833{uSsjRtjzM)jsOP~Dq_w!aWv56DhrF%TbyLE<1bh{lFNZUfl~$`_!r z09Iyz><9G?KyCru6$H`?G6#l1d=LhO8>|fgVuRFz%mdZ`ptFQQZ3s}i36$qRZLiTf zceKtOY-s?L_F?Is5Dm%~ptHn4Xa9oAc+i+XsGbI4P<;WSVPgTHekiD}0QEmXcLjjf z@_^d(ATvPa4yeBm%5$K$H)#GHGzJZ-mq7Ios2u?^j~EQv2ha^V2Ou{Wyao_de}nQa z$SLib!!U6WAH+t-AaNK*mO~Z;u|a)z zP`(G*iCj*A_@F)ss0{*A2g4wsLlsrKu?hWU~mdL3V@2szLQOsLTb` z-Jm`Ss9Xc}KS1ur|1e85I@ad1z4hfXXOP8w?Z&pfCi5IlBKraRU+qg%5gNkBbj84`k*@ z#MtV8&^=Wk3_6n-H2)9kV}t5{&>6CR_V)ilbu2Q5*Z%Yj& z)Pd4DsGb7VNuYcJ%G01a3sj$hxyu#8ez1cBc+UjLPaw4*vyf>J8x#(p@f46bAoqeWNDOqx0!SYy z96OmMZJ^)(VUze2hza=yCKWL3P2!qT5sl{a$E^&|^P}>4j&w=WGP+bRV zQ-Ipsp!^0J(*}<_C18)v=&(fR6!y z+5&lb|3P5_>W_ogdxQG=pl|_=6@boZ1Mxxi4QNaNG^Ya!Pi+1M*#QyZ2TXzRvfer1+?Z46dy1QuK$Tx|Bqfbf%q^C zs;6LV5Dnvl>MBsZ1gh&m?LUxPK=nObO<*8+-vFpy2DQ~e=M;d-0FWM#UYJ_A`khFNe0_`^j zwVOcY?qIABM%^^R+9m-3|3Up^P})RJ_t@B=x)hW?K>YO@Y>;`Nx{g##u0B%jL01p57Ze|$dKO&&BlZ13d{93eG_DU? zTLo$hf%6}|okjn{$dA{YkMLof^z1JNKc5RHz}#X)?~c>tic zAgG=O&Fg{cIZ)pfBnQ$DqCprmE&!^>LG>YM&H&^#kQi7^P!M=r0>p-4kRH$)dQjd1 z?WadJ6Ql+t55pin41>%BjYWX;f!3*l>Qj(9kUWTnVGtjNL1MVrFgX~FtPUgw!XUSS z&JFcIT9*VWA3$XSD1U&;J&+oZT9AHZ8pH-+P`H8G0LWti*cyIx+D-=ZUpsxL1G|z7zUXK!k}>h&^QJt zZ-MG@kR32JAR4R&x~3k+2Z@2&q#%8uJPN8KLG>w29z?@1NG&=WBnHADaS#o|$b57* zh!64u$S`am=YgV-Sdg4BS@NsybtY|tISp`rgl>i|Gy zEoclCRNjEv+91D;;?Xw1K&1iD7!+t+3X~qPrFob*sI3p`zktemP~8kVzZ6`C7Zm&l z@yV^bLHa-#WCpb`sICIJ4OIVwXwaGi&>lokeFnO}3{<~??l%SPbp!Qvz;&R71$a&X zls7?jBWR2qv@U)q)&C&3g2qrleg?H&Ky@t&otO6?R0o6N5Y*QL`4v>Yf#y6waS!T~ zfXo236F}o1pm+g=CHfcuNDWAw)cSv7Vd03~3rMj32b~EN9sM6v|Ldx#{MS}e`fseM z`5&~_9yAUBiW^XUSPQEEq3i!(bqWIj!c94+@LxT)TamKd(b@r zu=*OL4~9W?8fd-{G>!(UD?#-bNDO2aG6ty!wHH8b1yC9T%`0Ft52Ox;LHa>@Kzva9 z0+csFV#xYHd>96)1F>N=j1A(0Fg89&41{6wAT|ht_#pp-+zZPap!@;Cp!@-vj{x}- zqzTar-lbsD-&km~l zKy?|Y&I8qjpnfZ;ZUnh|a%t)R?)?1!74h-^!R-KBTku)vpuR9@Pa~*~gw=DPx^Ado zP@4thSCHSq7}Wmk%URD|3Pg45Y|^!{qJaE@*mU&2zGYKx_~Ot?>u7e?jE|=*(VFKNh4GghBEk3`#qoaYInu48pK_ z5!CkusRLnj9v>tQ!^mnuY!C+3pCEZq+Z;3(2QmZHHUWuY!yr8% zaTpC_!}uT?gptKTd}Iug17T2I4Z5ocK9ObJ?QHHtSs=D1gtIuw*jDaAjs{o{Q)5VfX>4M`2p4@ z2d!%c)%&3G8YB*?=Y|Rfxf|v;P~3p(SuhQ)`$23_{DJCf(3)gW`wkShpt23LKMU07 z2i4D@ITFxV2`FB{en%hwht30l!VhE?DHwDf5XcQ94TI7XX#5OR{^P=+@nKm1A5{0l zFi6bN*!VxFo^32F{14hw2disAbq%Qgfng9IhCyQJY?v5`24Rpqj0UkmbsH#cfY$Ya z$^lT_1nRqj#*1L;Ks2Z>1C0rS)PQJMy$CV`BoD$MHb@+_=N(j^g6cX@JqQwq$-~&l zd|3StT4xM08?-JD(9Kr|Df_4R5yU?2v9va*f7jpAUA^Qe^A{AqG9d_ z(I5<}??7i5fbuqIOb&ELCvw{cq<^Sjl=>gq-T}7((Ac1OtcZ*I4~lD0+=JHrgXVof zbrk4qV9=SrAU}iJ03aGy{~t6S1Tu?M3<_UR`WZ%F`U}`{hGAOTr(hsPw02&Vf)txXkFm<515~L0^z62^$KxVH<)j1YywlKPcUU$}Uh}8B}M2%5Bg*GpvpsY;`}fdq8dk)r%l^ zgX_Y)Jn%Vqptb<0uMBDzfW|yQZGBLF2aR)p<_17x2e5H&P#ri_Fvw4!_yPF~j$!pb zbQ}N_kDxjpRBnUHWstv%A|wBU#{5BP4^-cS&Qb#1w+!|-djCHw3%m}H-1>hcjsXx` z|AYFwc7}%F`X9X=V4$Y(Lr<9pfMy+*#Vj#1l4gMIS>Y!0m7iR3P=u=#z18Ys15{)BdY=NK^PS*;}BqFhFvkHUMZ(IA{+SsNMvfu?t$S zk6h0VW;VDDkd^fxR5ya_#Qc2l`T!Uo6xN{eRnV9pDDQ*%v!J>k)NTORf6(#np}+?F z30B{OXb=X~`yd*G^YXy+^`P^WL3=qtV;-RK9?)J6PHKs11#4>>nf!8vh6F`vKbb5(kNa><5*9p#C{}{SO<%0I3CGka`e}4TI!B zVFs%2L16>JAiscU(D|C6u<*CF1-G$4W$x%0z-YY>s*7leVQCC>zYb{38+5-l=xj>R z+#IO<2jw@=cpZoarAbiw2erXL{bx}9528WkKcV^_ROiAlA+^+y2aQ#O&JzM*5F2DS zy1Ae_9kgB%JPrV@3qkD|kUv3V;Gq5n=!^i6KS6qjLVb_!MsWKK;LEE{3o~m2eq$2^DZE}M(h8W z|Dd`bghBN`Xg(NJ|AY4Yf$AS)4Gr*K0MI-DsQ!=g_XnR(30fNu>WhN<${>th|A6Wq zkQj^xu|XKbN5&vAY#5{lR1bpe0HqO7*#PRtg2X`>qz7a#s2l;cRX}A4s80+MgUN%` zfa-tHSyP~L1T>ZplE+s6gVe$>NDZhw0_g#@13>j8%uEms!!Y&ee3&?hMwSDyVPYT} z7Y4Z*bRH_GJOH@?8H4-)Ix7L>2bg}4xiAb81F=Cg2!q(5aD>(S$TVoo4dg#i_=3U@ zboKx(%l=WbM`rs1)Yk{q`=GIHP`(1y=b&^9>i>i4K2V<@Bn}$)2aN%M>VJ?JXb&)G zd*3R?39>i>fL30iLqsuw|i1?dCnA8Hs>zk}ilj6roj41?ML zAPnvQgZlSAR#uQb4;B{xL1Q1Fb7(?ufAPlk-G&caMA3^B{w7(Bjzk%dHYC#xO zm%_&KLHP{C2bl{~1EWD|VQi2ZP+JsaCg_|hQ2h@ozhG)W>X0!=9E4$FFgAz=VVF3G z2JvAS7a!z4kbR)A2h9tD{0G7yHb@LxI|pPY%sdc{j6rgsaDib^{~zQh(3xbQHWg?s zAZQE)R34Ak(Ic~trbWDi#t1>_7H=ixE`cfWi>ue^A>1)LsL%0l@x8 z>;Hqo6cm@Bcm?(4$;F^}1BEpRgWNovF{$-Gs0{!b3jo!2T|xC1Xss|z9;60@L3KH3KOsmz$WI_Wpf&}_Y!C*iL8n1_KzR{V|AYE2pt=&I z1{=nvAEXXh9L9!;gZRi8Bo4yJVxaTQKy5KlI3r_FSpja7goJ?4MuO>q>4(uEaTps! zgZu=l>p|fI!k{()hz8vO2?`U?SOW-y`dT1A)1p2YHFIRNEkN}(sNM&y&jHo%puNMO zas-rrLF09xJ_AS`M8oQP5DntPaIB{%_zY4|+6SdwQ2h<6H$i1TE(~fPfX0nMYsf+C zTR`a=w0{`1)(lkNg4TV3FsPm(WEL(vK;oc&J_v*Eu?L;&18R?h#?e4y7NESD78LX! zbcb1Gd^~ua8tAM7kUluh%mnWb1i1;c_77Bcf$D$IxCh9eAoqdlM{wPTW&V3Gi-Y?A zpn4Qu_k-$vGz@CXf$Ch)7&FM&35q`u4Vp6m#UW^}8C1W5 z@;|8F0o6kw3}d6yFgcJo41>f#7{t#A4EztuBcS;}kUgNj1Sn5~4jk!A4DT#P<@Zm1_%xP z5878%9v26`gBjEg2gM^Oyg(QfpQCtW)Y;UEXHdR_kMp~_g3t8_?Hh*I`|j@lL3KZ< zt^;FGpWn?5oc>^SKZpk9cTk=MrG3yi6{x<2*Pqb+_2_(1eF_>o2AvHEs*gc=7_`O= zw5J|4-T*pZ2DH}>)OQEfAL#mt;e+g`OGyE*fd;uBlt)4R4$v3|Xr2+|e^40$Dx<*l ze@@PSjQStyeo+4wH0K5?yFleAsQmyMQvlWPpgImj4=D_~`xsQ$L;LxldKBCafbMyK zu|f4eXzl~F<`Y!+gW?!;E*Z%0puRsSTwoZ~rb7<{P}qRt57b^Dx9<41?oeR0n}*Y#3P%#zv<>bs?xd4Kg3JM+h_r0IJtP=7Hou^&!X&p#6Fvy`cU& zC?A5@Fm<50H4p}ig@pVE=>@UTX;9t;l@lPlK;sG^e}MYp$m&3BWQ@%mWO)!9qy~i1 z+30+j8j!u9@&)8CWDE*((A)&5E(fVa#<`~hm8f%Jkfs0{%MOVGLxP4R9sj2^AeO8bgKVHt(3abA>Z6DAYZ%~|p z#tuMX0;~H$G-#X#!``f{|J17g;q8Fp;{Txb1PFuXCqVRYsry0xptSx6jRkB zz~}#f=8Qpg1t{IZ>L*ZJ4m76&nr{c?3s5}_t9yu{L25u4R9As8m>m=ZzV{E*2LR;{ z(3m`^ya1UG8XExB|Ddu5v_1fok3em3Q2PUI;L)3YZ*792ujF!}z#pm|mDXh!0|eXb?tbgWL!ji-(0Rj0S}_DC~34 z#{WTj(J{zO5C(~ZXi!-Q3NKJy5Aqi%3_)=OYFm}Z#{LKGlK_PwXx;}jX95cEQ9S(X zZc5@9l%GKQL1`7##|HJeVf}4Ty$`~m{0geu(J@FIhCzD4*wq!h=LS?Sg7P|O3;;Af z1*-o+bpfur6j>ZpUx4Zo5C)Bi7H|x$`@wt|J1_4)sGkptPf+_1X1jYA0jG_V)kl^YZ?K`jDW0HK>gas&_$k z60Cj##V2U49hC1ueM?Xs1FL_q(I7Dp2Gvh68pek60|LNv-JtvdN;9B70cg$*RF{F& zfa*%n`Vo-bpz%16`(X7rhz8gHwzmI4_v(ShwL$7Zbs?kTbuh@Uu&@Qups)s&i6Hlb+zL|< z(gR|HFo=zeVPYT}ghBN`C|+O~6duKqk^e#a0YGMh))|7vR6yYXD%(f#Xd3`q8UUpa z(D*f|UI*3rpmrlD|AE%=gT}I9bvsBN8Ka21x%~%?1%T^*H@E+wG6ht2AlLt({xzt+ z0M!qmdW;whuA6dl!2Lu}8vu0HK4|sJAgp_3{aj1m6@QmfS|e&q!;8)YGIK3Ky@ay%)@04D4ap{B&f~=g*6Hd8V>+r zX#Edb=KvZ*0hMW>atBmD!RmW>{hywWI0FD_4Is!bps)w^(`ixf!^{NDQ-Jmefc!Mn zF(`Z~t^Yym0IRdJ|EKx;gXiQy^#^Ed4K%I}ibqg72GO8#01yqz%bU>cD z7^EM>24PUU2GpMb)v2I%2}llxLFR+lAR1Jsg8B!bwQ!&^31l`%93+p9LE`8bml}{b zNG*&8u|XKdhtV)GkefklQ277~OBe?E5mZ)y{ed)(0a6RXFmqruNDLW+!VwgPpfM6q z{DCmYkD%}Z?L7wd<3M9_pne=E9I%!9qhcewJpiirL1_cjMg)!Bg654v938>^c2M07 z%8MWjs@Gu{#7D+3aS#nECqQ`(hCy@xpuGa1J~1f$gYM4-&C7!7UQpdg4hGeM;C>{u zO#tGPV-83UNH3@k0%*0j44rX!C_y@So2i5Z+ z4C?cPXb^_6k?Ma?yo1U$P=5_nzoOUwuyz1A-jLQog2J92^*?BB0B9cx$WI{m4P{KN z`oA_O=YOi7A9(&8RBwRl5zu%)s2l*rB{Bx}BSC9_!F6<4*nbcWtCv7D2qV``$ZVJ# zG7YM`K=y&k5m4CxDu+OIIjBAZl}Dg<0Z1G)o&<6mOmAjL$bV3M267w7tsp%hIS>Zf z38G;b)E5S=9RjHZm2WV$=;}b~L1G{bVuLV@4WeNfBo4wLK0X><4x}E0LGA{X4*fTgX((_29^D=`W}S_jsJUi zfXCiI=^a!rg8IdvvX_$jA5^CfCJd_oLGx~)@(R>n0G}k?VaJ8(RN^_TGWoilFigR4#$)SoHcI#z(Oaw4O363w(Yet^5C=aR87VAh&_i z-%!R>tN)?*|HA4NP~8ivlRTXay1Bz>qUKkBxgD{8> z!XP#XgV^X8Bo6AIgX(iozW`(|s2&6Ll|dLZ{s^)cH2w%48-Sim2&&sa`3ocm8m|QD z0ht9dA4bF2p!yzE?}OBW))Jtr1*wN&kRD_V5{L0YY!C+VVKj&h!!R)r4Z<*S5Dnvl z!WPu80_72qdteyUt^$>%Ah*KQ5=$eS4~jQXoPaRMpCAlc3kWLTL3V-KblA%OQL&NR zCIGdc!FkET0(>?IsBQ=47f^Zxu|ah^moU{s*lm8m{#}D9?iO8L0jT&6j}2#6f*sQ2!RC&O_?^4rXzz^*>U*52{B&?HkY> z2MB}48bS2~XigR+4(sp3XwY~Fh>hZBI@kZ8HUKDIKyIgX{ZC6fs9pbq>JbnIrD0Ir z3#vOnbu%chgVx!B(lrc&>MvMbk{c26AGE$6)LsDT2VsyIAR2^0Y!C*qK^Vk_VK5)G zw>B*7Kj_>aP}>=lhG6v<$Zk-20`-|ebw0>lAPi!I<|RSyi1YOPkK8r@n+a_vfb0R) zsUUMecM5>^8iM#BahN&~8-_t*gfK`gNDVrTEQZWRRtKv8LF1qxcf-OGM8o_D(ua&e zdO;Xj44Dm*17VODhz5lVs0{!L4_Fw2)>(qqS%B7hg2pC6ZFJB$%V?cHa_f9p+=JTA z;ISbyGw_)kptJ$1`$2U%a-9$2gYpmvgTAq!uI&qCprmE&wtYG;Rn=>%+GG z&&v7_YDtM-$X_Rc+MZx_lMX2NOS+7Z~={vfYx7t>SlUi&=>%%>wa3BPqq3# zCkH(L52`<4^$3U!!l3#D)D8f}E2w`CO531348x$gdC=H8X#E+eZUgB7VURg64C5oy z$ZU{0(0V?QJ)k-YWDm$J&=~=s`Wj>xXgva`&H{;p)Pw49(EejkzZuld2I&ROMS$c$ zW+P*eAHZtO%>IM=!5}`eJTe=kA030_k;Pzq5RHsMYG8a28-zi85Dmj1yFq0ks4W8W z7Yu{^0UBok`4`l_LDmOiBV&+RAU=pj#xOBZSb*XKxeWlS|3U3D&>9HPx(QhMKT40x zHUOx62Gv!tx*v3B1SlVY>wZu_AJn%8(Rlj%pgJCe!F4>SJpj@Jr9t8#43>lT|6%n% zD1TF9{vT9l3?>Y!GeLb9P#Forpt%6hd^1QKRL2b^40AKM-iOxn;C29r4Z^VcAG!|^ zRG)${s5}Ar9n^0G=>_%mVHjNhXJq^b&G~@FM3BP+be;mJy+Dt;A7%%w#{fXPv#g`$7G1Se*rY@Ey{ivIA6Sf!YP$Ha7o3;{u>|2F!erU7)@Q$PJ+W2*`cN^*_u`kbR&! z7c}M$G6U9z0EuJ6AblVVk^|A`7?(Im9ZU{HgD^-88H2uzHVA|GAPi%}Xpk64Kk^s=C~QC&v83?O@Pc8z{|z_5p+HeNg=ms;@!$34}rU3xq*zkT|Fx56YJyHVA{*FpSOziG##I z7^Dx><^|0qg3=ynZDCnl9Qb?|P+c&X>TpWj0vh87g%_yr4=QUa;^O{;>O_z@a$Pr6 z*r0t7pgJ6kVRb%Iy$^2>JktQ!k{_@RJVfb-r!*H+8|K+2K8A%`5A;k ze9*WysP77@n_>EpXG50eAYFbvWI!XQ3~24N5zgh6Z&hOt332!q5x z7{mr)5F3P%+30*w-T;-opmGA_eq;=47l7(xWH+Mg2k~JTWDg93#9(Yt_<-5~pn4yM zLG?dqd;w%HC_F%Qz-Sv_WYztkv;`WMhV{ikWAUK68H7Rk4qVrx_4z^h4pfJOXpkBZ zjf`PpFdA77#s--WO7oz!4jShI?Y9S&kCfE6gGn!_zYIDb2()ezl)pfIBGCCapgtzZ zokOM0M|LM@?;ogsgkw+}0ER*B01(d0``?$J55E5wGzS2>uLV^9gX#-d{ST_|LG?er z{y(^lMB)8^uzH;o8dQgZ{0G{LLW??@mS%$7PL2J4wb1$>R)4@~P+bCIBV$lK3tFoO z+9L>R$AjV;l&3)$RA*7Iq3bY>? zBnL7VIRZ}7MPXiq|H$l(VHLl6d)nV|X`rXEDYFi1a$4WdC9oekrI!U$IH z!|CvF@E%W4xPsy;+SBtts4obr6Grg}X$ScE{Rg$DLFo)M_76$};C?^aSU;#A3rdIJ zdLOjD4{2Npmr6g zuL87DToKf#2DuAl z9tgwC1gQn_LH%mb8fTC?m>ftP8H2<@7+nm;2g$)Ox)?Ga#70&JV#CBhG^h;%nu`a` zYoLc6sC)#is|3xTf!aDCbs+u77-R+vgTz5>WE#W<=>ypV8v_8X1pwi~hzR%?9cXU_ zC_G2;@UQzp?Y!iG0Pq@oP`eY9N5OT!rziNV9#Fp@ROf>*hz+Z^Vf8pR8mtC7=MQ6J zQwM58fc6oB<_VHt%3RM4t{0yoaL1XCXb=^>@|3U5t)rX+E z5mc9hF>)IKIu-yL#{t#Xp#6WKJ)@xdAC%re`ax|7kbgmEGlAMiAPi~;U<(saS^$lg zfXt#N2H6SnBgn5q3B&6D(%9Jlp!2j!eKj{895C+x#AR1TQ4-yC0|Iq$FtR4Z? zAJ{NV9z=ukFQ`5Nu|ad|pgawVcTm3qw6+aYzJSJpK<#``oeP@t2C0Ra3uB|xAbC)o z4XV39Z3_@CjfwdWDpx>b0HE<}kUYpt&|PGp^=z6=)m)#0K3D1X>3GYHNVzP)6(j zkx~DH?(6}jHBeg^RL_I^{h<0AI^GYe!$BBScY*R7m<^K0()S0+gD^}Dh>eaxa$xN0 z3O@fIH2wxE7eHwqly^b>Mo^z`xYYlkIu4YlLG?dqz5`S*g6luDweFz$a42Bpx)5IX zgX(`62G#%h`Ts%n=akY?Fbz6G0u;ZXau=irbRHt84FtjsX=(pK^*^@$KPWsv=>QaF z^sM_qc7fI|fZC!U_kz+SvcCtC4Qi8sFw6}g_kr3}AUDFqD-#p{gX(zDJOJnptE!}= z|Dd}vD-sg^gW3b2c{Wfzj|;==|9}AS`9I*g18MIZG9Q@@s%t>?FsMEO)v1xLuK(RF zE&s#X0H8DgDrZ3R1fY5cR1bmlfH1l_AU-k%sR8MMj{*4kfyX95Wf!R20@({nU!Zym zG|vXA%Rv2QkT^&$$Se>I!k~H11gJ<-2swE#>o0$;vg{)2JvAuj1A+%XqY&N z#)Uy@K^WveP#FQLgF*g6#vr$X#t}htD4=>AWEMydjE1q1`5-YEhKYmfe^8i!;t13Z z1K9~`2NXs{{Rg$9Kz5Ig0Sy1TACyl(jRYv3LGg|rCLnQ8T?eX@>5V6rl>7(z2joYPpFr*aW6=6N5Qg3* z3>Jg2v5159L*$vK>UINh+9DCDis!j;{jCfgZlfR^`x-23MhTmr=@}G zf6(4}(0DOu%pcSy0JQ~bQ&PZf0Z^Ra!tnYZY5X5lkHG2>5F3O+d=Q4Qk!es|gW3R~ zG!M$(p!f&XEg%{+W)CV;K=m_79jHD6nFGQwGhl2GAA~`Cka|$v4R*J!E%=;45F0eF z1~LOA2ddvd^*?C+GDtm09KF5-)%T!%10c76+7lpmg6sfckUi)aB#w+h@-RL!8zu&# zNf8IB1-TK_egUyTZ6r`wfyzV}2Ju1X0fXd0?g#l3#0J@g3nR;e*dPp23(^aks{z&j zpt>J~L3t81Hv?J|0SXt;7yxLD1XNFq;^EaE0FA@OczOK?)%&1y1zIZu8lwf(`ydRe z_rWw$A0JeQ!|HAj8yTaEgZLnftOl74k^^D%`X6L3Xnh&zZXHm$Kh!a({s;B{L35Fy z{(rKs?|)GJhhE1G6+WoG2G>tWbrr0BM5aM?5oiv5T3OkDQ2Pf|-hi+!v{~&#!agZq`CI3P96@c0!pn89Lc{zB`42Tbsn^92#9!~+4 z@iqnq|3MhECJ)pG1O;`j0I1%?g^}xjP@Mt7pn3yDgD{8<86lps@f@{Q_cx(g4Vvpgt|gT_8Om3^EHwgV=B!82BHQhCpQ%$Q)1` z0<^XkG-nPn2UP!q)PnpA5(Bk;vV()c?F5i{Fbt|cLG>G`?*keK0J#&S4}@WAU^Gk& zM8hyh4#Wo0AdJk0@j+rRj7`p!@;~BV-H;H&DL`R8ND{qv(f@ z&w$K;iNk1^7>o}JE0BIrJ_KQqogfUle-+dR1I?*`=4Dg-{Qi&D{lly72gN67oE;Ru zpgaUxe+TOKgX&&T9Sx#E7*zj*@)t;q5C+xdFf|}H48z2*(I7S8`rp>}Kd65Io{MvF z`46fyyP;>lfy(}&j6r?@ooy5B;PBts%$Q1R7fbnE`5Ff#&%^;-I(yjirFrz=6`6o{GwUEhVM@x+*IF z4b;^Bn`mnOw=*;ZpXZ6I?gxpZ*Z;`%2doZ3r$K6vF-RVSLG?PQp9!jSK=m4EZ62r| z1C>1>3>s?&?KuP0L!kaTNDm03n+4*7#6fj6$V^Zl8B}I~*4BXf``~&UdRH!}4-0B@ zg6ssT2kC?92eCnRfyy{g{|8hag4+mzf#A6gkUTPm=>yTo7^Vg$2IIqMba5CTM#I#B zXk;-^Jq#L~K(6;;Y*2WC=1M`~1ZwM`>xJ=QG|XHO4HE;?fq~$=mO*_31Qdp#FdD_fqa6Sm(*d2!0a|kh%0r;}rdSUT@OnSc`46Cc0m7hm zCUX4`s;^=7I5Hb12BJaYAPi%JXj~Yi4pjex>VD810I1Cl>LY;4Hc)>LM1#uyp^QOw zCaC@g-TezH^FVzUP<_#nmGvK6T{oD;Kz;$$(V#jBR3E}HsLp|7X#EeWyFhgusEz`a zDWI|hRR4q6ApM}WC1@`fs67B$16Cd%{~uI;f$YEtgRHFo?E|m}5LEZWFvu^Ux)wx( z)--_X;b|2W|EHCg{|EUIBnHDEJuo&%Jt)56xUdjhw}Z?AwF5vHSv{!#4pIvWKhPKo zC`^#|QP!uV{0D_$Rbt}*#?(~s{5L4ig2E8gcLVjaLHpj#b#?!1D=9&+vhsgz7*0HFApm# z@IE$>c_4itb3hox2G#$db${MgR{ud^2XYrk92W-Z17VOnhz4O~Hi(amL2@7r5(Cj7 z3}S;YjEzhqvq511@*^yaV0Aw-4eFzV#!Nu!Kzfle$PN$&iGgSk2C+dH#s<-#z6eMR z6c(`hAH)W&8wH)~2#Oof*a|3oM(h6JQ}=_~$)LR?p!K+*_BbdXf$Cxq2IWl<2G{#o z_VkT?jViy`wtY>*ld2H6G5`=I&}be1P*OafG2g6{AgF7-cX{2$~$ zP#FbUdkyL{g2uWr>bW6s_Ah7*8dmS4)1bNv)D8gkjX`JrOfD@2kJp3FZUdF^pf&(# z9vW1)f!d&;aVJoD4Jz+IYq>%Cu-5>o6YXL$21^E%yHmy%h{SR8l z2wGQH9vAl?hC$^g2!rZlP#F!H(*@N@pfVR!-hyb57})Qjq5nbsFYw%JL- z_2)t9A7m$}jR4v&3DN^vn+qzNLE#6g=Rtj6P#YRlmV^3?pm}gmooKA7`QK1o9gac$ ze^7e>M1!ynvGqT6{U6NTAh(0qAPi$;qhVqob#NRI@E9wQPs1=+3~em{Ob#23tR9^W z~36%n6j{Kx4t6au!tn4duQ+$nBu|tSK$+Ke+z4u=o$E7eMtNNPJk= z|HZ}sr40J^wqIn*Ilk_k+gzL49J-{4;1y1XM)e0bF4Ms{cW4 zkAbNBLH+>s=RxTaG)@633qknMvKus(4tATP<9|>+2pV4p&2yV+YlFuDK=T2l*8i}&0u)~`3=%`fAUTj2G7VzG zFs$wd?KMje2>1_jC#YQv3Lj87fx-n;E`aJHP}>RJEEpdY4xly@XdV-!2c#bq_OQAP zw5|X&whsz7PGv@7>EX8kX{%KVuLU!j6nVe)wiA&7V!OlAb-Lz$Zw!{2DJe|{d15$5QdqBjfRPV z)WI-F4Ajm7ji-R@1ceo-4FGD(g3f_=HZl1RS|gqk5HPw9V2G~)1eIH$I0eB##ZF%YpbH`#@zLsB8n3qo6Ub zy5wZ=+GbFB3#vnhG6vQ2u>L6gr>XV{lPk-^sNMvr2bIN6CMMuHXHb0w8aoHkp#B=DZvhGuQ27I@=RouPAbZfm095~j)*gcT z!nAG!fa-b>hK=ik#vMRzt4&J!52|lK^_8Qs@qf^IP7nsy@usHWJ#L^rEU0b?@LsLcu z_%11sT2R=6+ETrFdEh&eLHhte;RnK?F$r+H3VQYrs67$wF&n z2Rwd`QddCNn1TF&j*-=Y*dTcjjf_EJAPnkngXVrfcVR@hxPZ_02i4)Au?r9ejm?AV zXwcXQNIysq2!q%l45}kR;R#ANp!N+Y4nXZEkQ&hV38>BjwW~no9Vo0o;vjt>8e}&J zgXW(=X%J)&NDhQS^5_^@9L5IGAWV!}kQ$g;5Dmg0F&IYYgZu_^A1G`jSGY1K^T<2Ky?JD zj|}QJfyO>TeZkTCKYP%u5rEanpgJDC?g#Nf;$Vzi|Cg14@Am_h&!Bz;sC)*k1q97~ zgT_QaaSxii2Hp7pDvv<%4Kf2%*JITGpt%vy8UPyZ0RYwcAPlNgL3Js}U!b}e)DH!X zxr4^rLG4pe*$XO*K{TjrhGCExXefbzwL3uh0MzyXg$qawRJViX0zl@0p`8a2o)$h99~<52PQ2L2@Adpm`5aT@TU=8qWmP zU7)lD5(CMB`n4dnFg>7l1BeaU9{}nDf%>~3KC&7R8-_u0Fboodu|YJ952ImX$b6U> zh=yTgd2}|255ge7fy!f0`U3e48H2(Iv|b7{h61XuLFz$fgJ=+ju|YHp!^A;+5F3PH zY*3hh>;u*Rp!O07gT~}Q;R9;pg3=7AtvXu&58e77G!_QxV}r)oK=(<3>VHr^0i`ie z-4Daa^)*Ny#>d5m$%AN^8W0V_=wcu~48!C>^*_ixptd+Dt%LT3gUVk}eK3^!{vfx5 z>doQM{|EU4RQG`DL~IyTKY`}{K^Rmof%@p6{y(TK2Wr!S`)8Jx;Q4J(c?Ih8gUWqS zKMyq42pWT|PE7m{TJwgj{s*-OK;mGtq3a4jc2E<8>S0iy8Z?#;Dhok<9#ESURF8n# zFCagF(kBRm%3_eeKy?Gp9w-bz?gYgNC|uAns4W1h??GeiAPfp;P#p>y0|13JXbuC! z##Q%&#KHAH(*3{4bp4u|ebgAPmw6D%U{$8c=%;bmjoa3{ZOjWHu;$f$Rcdkb2N~ z3MlSC?G8|Ufy80vg4oCyBo5<)*dUC|2eCn7$QUFB!XPmi4P&G8Vd5YfhCzM;9oz z_k-dN)HeZ*U4qIg5F3O+bug^{2h&J>e~=ugu7=SdHa-kfhmA%SLuZ59;h_FMXgmwl z)&!Nkp#BZ0{v7HUR7QjPkf8hn8~+Ed{{!`BhZx4T_8(SPf$Awx-4DY3MMdE8e^8$m zRL+9xPEdaZjsUFgX&6984T(-gW?^%J_GZi`$0kV9;gnbCIUvPQ2}-XZw}bjipn4b7j)9$J3^Etg z@5kp}u>H{Sevo=tn4;65x*wFDz~KQ(J2=jd1gQhL161#Wab)CwFdY#Ara^T-DC|LX zCN2!F|B=rBMXxVld=L%7pm0FPAaM`|iNk0R8-zi85Qecqbuy^#0oBu>yn-C&pz;dT z{{;2pL2Uq-KA2umT?JYf35zSxTnnhY1DOG;A3^#+YC#yJ7u5a))vKU*1epusgTz7d zAPiz7V~`jKgTz2I48!;^8YYg52B`yKba{{%2!q6tX^>w*a{!=qiZH){`~<@wG0sE79vD7#~z`f$Dw`292MC`nI64Yfya;n)`>9S)jXC zL38AwJ`Je72O3ic)&HRJa!|PhG7nUL!Rt6sJqN|0dy_!oAoKCnr^LvC>SPcGwI@L1 zPJy`CfUE{&4k!#k zVFn5VbPSUR`5zP)@GwGe1LWj@*8+g+e^9*-!k~H|M1wGBk3mEPc+UZ@x*sGCuK%&j z|0CBQAT|tx;trh+6GNtv*&y{GJ`98Spu7*N_dw+aD7;~D07^5Uv;?Y;Ky5{s9uN&$ zzYo$28h-(oZ+3S7L2WaTUQqf1)oCDkkXlf`8e|5jUkgfupfLxKogjG_2B|~FAaM{M zMkBL9V#pXIhm2uzATbadM1wFg8^lM(FgcK0L2d_?)yQE1@)rn$(kiGw2Wm@${Df`> z$Q%#`iGyflj4TFXgD^-QRPTe#0@({1GXk}1!(3hegW4LPI03brKy9m0Jha*Yptc*R zd;_H;(ApT}v42oK48oxJ#Z~`<<LdUeN0%P`w4J_dysW2kQ5O z>VHrj30emSic?T|g%w*^{0EiAZ5bK=L46odT!Y#fSi>bJ=YMNf7WkY1Naz8@R~kQKM~YM29<>%_ksHB#M()$I#3$|9FDLv|FF>D zHb7q9f6zPtC_cbp1gif*7}Q3B(x7z!;QAj_@1tX+HUOxe$A!W5KdAo?-Tw!w8$cLV zPk?9;28qEiEg3=;#3@Wcd@ee9vKz%V#-32lWJbsQ;r-AGTVbB@?P`V(d4hFdav<3l0gYn0biG$9?0*&i~>;=UesBHuCA2J4+59;%S>Stte5E~>1+V225 z!w1yv1Bv0npm`HmSc1bAOIU;K0EG{z4FeAkv~U8opHS+5Xq^ul&&>z1BO}4)t2aP2h!4XsK8%KmgJ@(i5F3O+;vfuSgD|Kr%MJ_s52~L*`zS!^ z1eBIQ@det`2vP%@=LhxuL2S?+e<1xJw}aviqzOk`gpuR0A4S@PX zAbUUV7*9kFfkAf!yq-tY;-SLGz=a^oWi@egu{2 zp#6Cubue>aG|UVb4H5@o5FeQau|XIl4hkO-2G#$dwg89?F25`-|AW?3g4!jZdSw(3 zowfj|J_e-~P?`swdksqep!ybs!E8|99&PR)SG^4~3mp@q7N!Q72C+eI0?qk>=J4Ds zE&qeu2P(rrW!zA&|3PK+u&DoYa=`s=to?u3+%@!!TF@GIP#p(4n*_9;1HH_`#s`h> zg3agv3GeAdE{Ns9z6~1C8T@+Rvak0`==bWBs80@1QmSs7(hl14M(y%0coVb)fPN z)UN>5iy$*V7*_v-%mdYFAUz;)bPO^NBnF~E7{mr)bT*8SOoP}U3{sB`gXBOMBu5Ml z3IkA|2sGA@E8T+9H>jRQHxp()x;QRANIj_D2bl$;K^U|S5L8Ei>;{b;gW6=Hb^p+* z`$72x)P@GdA80%lG!_8bcLl2Z;TT%~gVGTUqu24|@IhuF>qF*)>;}!dg7PwGoi)f^ zpz;}%#z18msQd=i0ig1JsA7;mVD&$!-T~DGp!x*8%m%3&tQh20P@Mv0CX-6h!5+F zgZ9jU>ig*x72vxDL1znq)=h!Z6KKp5GdeW3XbklMnC2=Ey^AivM7tOTD23_8OCRCa>;N}&B{pmYq9hnazo z28}a-+CLzFgD@yukuj(Z29_@<0N)7&3JcIaLs0mDFeu-^>wj3?k4%H=|A>hHp!N`` zzl;qd_y0k40;s+~#vm~e28qFF5F3WEiGk#>iNnOuX^?u*`cY8*2Wm@#`Ujx$0W==~ zs@p;1M&P;curS27)4CWb5rY9E9A1WKpq7$gT8#{jiwVCPA|^ulPE`S|#t z^a=_uSic`M1_N3z3fgA~%0r;C8g$0=Xd7VY)c>HdRZw0Br5VsZJ5U)1s)s=s)UE^3 zgvR~BYLMmxKy^Ay48#UubUsK78KcXC>VMEY1Ssu-=Ep&OE)W}3W`pi90hME*auZbM z4^<2*k3sbjsILLaKcM;_G|meW2h}k{0fXEMiVIM^1FDbEF{rKw)&C%QP@N2_k3nl5 zK=m#t&5?>hVFhZlg7)Eo>NVtg7*vOX>ORm~yBU?0|7Vn!gV(!(&btAXeW0`rTAL3# z*Bunzpz;!gvAF>x4m!sNRF{C#9_YLrP&xzI0jl#s7`dJX@j>-FC@esAI%s_qC~iS} z?m_nefZPO%U(om!C|`m4P@sN4Xzl@ICbC(C*dVh&a~z=Y08qGs!@Qv2KWJYpC_F&s zfoPC8sBHiWe~`OCaRq7*!0UfdpC5+N+5n(30bAV<5(C%&1lIq7>JbQ5&qrvwJfa+9``#~7Feg^SDa}ppi(7rj)*eA$6ptb_2{Q;_ni=(3cgT~ZAWh7{h z6f_?Is)s>!I7lCCP6Wgz1%ujCAa{Yx0b``|k3jY!#|3EK0Mr%%*;^VH2j1%kpYw;+ z{YY&Ag7rUv^?#sx0)}Dr2aFG*VPeQMhz-N&YGC3p8YBC5UrCs#&4B~_G8mQa^&2@p)g7kqf z%q(;oBnQGEaS#TvK^W8)0`Wol3e*Mw(V($3P`eh?R|D|1eJH7c!bscAU>!r2G#9g8d~?m*{-hOdjUcD3zX+Tbv8&Xm_}ENgO98h z#0FuI`5+o(KWP0wsD1>M^`P<-v@Q!&XM*Y!P#HUvF{nQVYRiD;T|i|LsQv(r?}EfZ z_3BW-Ah+VH|3Pvf4DuIfY#dZif#MQZSp_Pu2w{+3Q27li*FfP08W#ffNZfl1geujYcoM*1!#>4D4l@D^g;SSZ7*0~8I7(PiGlba4C5oyAT|ht0A3<&I(Yk+d*ZrXQ0i|_N zSqzFZP#Fa(H$i=FSp5&8LG?MP?81sc^}oCOe^C7onoEPJ2bFnP)g!e5U~2HuDD}UW z*MCr%4qE2}8aD-%Wkb2{2e}K0HP4k|Aw!5}k07*uzI>Uap*OCs7a{{vR|Z z2Fg>Q@n(>jpml&CJ)rpykQpF0Eip#@550RCT>r<${s-6jpf&)g&PSv3A|naU|AXp( zfB*lWavz34bp?nGqCuD#Ho7_xAB1t~1<8RhNFIhkd=LilK{RYk8q^j9^+!SJ02I%l z`W{sOf!Yb6GyzJ7pt=l%L3%-Qpnf!H%m7qAg6e-zpBH2%41?5xFft#+hKYe_5Qd3? z*dPq!BhxT8vOJ6plLOHp3=#)n5F3O+Y!C*qK^WvtP(KOeSCHS(F(@B^+CZSR2=XsT z4+z7|0MQ@}6N9lqd=Q55LG?d~4Vou`wE;jhsBH^7%NvyDLHo);VK|BhZ#w`~|AXpZ zP~8I>9|Ef-Vr)HesKcXtQRxe-(UgX{)jkXjfGVuLV< z4>B9nw*#eX(D*-S?iQ4;LHp!Dbqc5s9m*I~cOuvSMUj#JiLL)ZdI!3V0CNMVz6Zqz z=&l*~d^D)O0pYy7{~$3?T?eZFL384uv3O8<1d2;)W01M9{tiB~L25vC0w{ff+Q6W( zVbHt*sBey~js}gp-^a+~t zz-A^WOlXBc?JZEeAY)J)4YUpbv@Q{)zYl8zfZ73|^?%{vgzJCM_&>D%2h|TC45}Ak z7{-Uugv3Ge=xWi$K=L4rEDqv>FiZ^8Uk71O{RF!25LCv2)(nB-1T;Pk8Ycp^3qWZQ z6!#!~pgaCRG^qXum3N?iG>8vsCm@@R%m&G$W0*Wl9K?rVm>7tLiGgTjK8Ov%AaM`| zv5_%I42D7CFgAz=jbnh)Bfk0{qxJvbt@n}JWT0{iRAz$OZlH1yROf;)s4fR#P<{Z_$G9*^EoeLq zR7Zo z7O2ewqS4Ky2Om`5gW>=b7a$DcgU%WNt^b3a{SR*kfa-o|I{;L!gZjpxzB4wAzWxun zz5vw^APf>irm?YMYCv)zjE#>h24aISNG%M5_#h18!)Q>Pfa-nFd^cz;095CJ#$!P7 z18VbuXiypi)$^dT5Y*2H=?B$|pt=jx7XsC9pm>Ct38Fz5qz*=d*!VC=9SEbV0f~Vy zOdP}pVQhS4ahN=e2FZaih!1ivs4NAwYjNc%P@V&o&!GAmrVpeS86%6s*yuDUd_j6Z zZ7eVj4gC+wN1*c-K;yHZ@CA*Bfx>na5AJpV=)4S2x&V!>gZkK@^Z~=L`X5vmgVGi< z4Q7MJ|3PE=uCCyHHK6(#q!*+XhQaDUYS1vcI5s}4{)er{0jUAyTTtExm203f7Sv}0 z(L)iV)c@w@;5-Bxw*`q0bl;vB`$6sm^(R4b0jm2!G^m~dVGtWEmY4S*G#?JD13~=) zTzwQ=t&EQs7(M`HwU^i4|Gl@sB8oEBSHJfL1`Rx zmkg+m1g#kdt$PBcLy$h$909U<^k#$75-1)(@d3l2b(o;N6QFt@)CK@y5F3VJe1i2q zsQ(`j@E=qUpkr8lfi8~DM^^{pgD^-PIt>y7VURcogV-PpV}ocA28n?%hz-IZHmHsQ z)sLWgX;7ODl>R_z0Mv#9t$zm9`=EIo(0)SDm;k6B4H5(C1!0gmAPiy?!Z39(8kc%x zd2}{1AEY0d4`ZX#F#mzdM_l;@lAag+Z2BZ%p4wi@N0m*|fx)_L$E)Eg{V^`Pzp!Hm!_Bd!B6~qShyF4u{{)5~J zDw9F=&uINWaQ6U%!XMPX2h}mKx*o&^)iod*CI=c*2i32j{b``I0a}-htBj(hI4GTi z%m<})&^!dlO(2Y3FN4P_N=w0a<$~4%fXXm%yPOJJKv0?I zZ)^J>6n~()60{}`RF8qi3P5!lXzd>;je_blm>J0CgV-Q(5XQy^iGeUo9+{0S1`-Eh zLSis^7>!L2NDkyb(7Xm{&m%0IgZzk$!D9m!7U262K=n3AAILlqMrMQfFpN(eWG85y zEU0}2G7pq)K;<;Ze$dz&DBq0YL0bO@1c1+02bF7}Gy+<`52{x|buXw62eseO>t+}q zMuYMRhz(K?G6z&wgW?|~4l)NM2cnTNNDPEwV%XSVF;M;Q?*1P%o(fx=1)5(1?cD~s z6|{~F)JLUt{ST_+Kz%w|V366MdIQuK1)bjo8bbs1*+AkTzYPTptK&iSJq&~D8ZbLA z548YYfTgZu<)zkteNSQ-WS4;_Q#Kx-gC{)3r;Y&M7u z!Z0~x8k;yMJVA9o$UIQ_1#$yuTm{sQ0_KtRBj?;kUB6QT2F)8)P6QL;66K84v${2KIqs0J~pT=0je88X$j;e zP+kSCw*rk}fy!A>84aRoQ8$Ck1l7Z!xnU5S78qncto{d$Cxgb%h+Y3TDB1>~bALhS z`+_iRtsjU6;k-QX`E#K545;n{jfsQq&;|9mKxGgp&Cv^k>;skSpz&W&ngPw_gWQCS zVf8eq&Iax01D!nyaw}-87}=emv% zCXX%-<0H$1*dTEbjgDdBFd8I}%m%G*0F`y1b||Qv1Jzw13@UFxaSdt*fYt4H+d=6aGZ#dI_~;lW4x>Txpl|}$|6yU^GbKP_3tF=UvKy2aK<$Ci`hRfN|Dd@q zQ2h@|51{oipgaMpyFqyZgkk-7SRD zm=A4NfYLLl%ms;o+U20SALM4x8FHY$Cuq+VE$U{FnV_*>(7JBWSObVpZ49daL48rs zya_1347K_nRF{Is{Xz9T2!q!8gJ=+jwh2IeY0!8&sD1^lQ67k~f6zKFQ27X&e*ld` zV5^Hk?gZ80DSm$cLE}x}u~Kt$@HjCjZa^3`#|0|yKyyzZKY`BQ0i_X8y8_hj0@0v! z2@(gb`Nw9@K#76;2U>>-Y72nQC;+uzK|Iqn=P(1*` zpn3rr!^B`TNDjmXVHg{kMrMQ5fG|i5hCzG~2Jt~O2!q%l3}eG+kQfMq_~;l^*MrIu zQ2h_;_kj2y3~JYb${Nr*08n~?>4TYrj|RzsFh~zFjm(D0A&bG-FgXwn!XR-FMrXtL zAR2~2>OdG&pM%O{P+BE~L3>s~^)^T!2!qT*r;)`#Y!F6Q0}3aQIWP<=!$4sQYJ-5* zmV^44qxJtFtpEM}!S^+R#xX(THK2MMG`|k2XF>Hh2!qlRdR-0UgVe#;Aibct2IU=) z9uOZygXEFbf%w=kNDTV@h zizKT4hxY$Lbpi;3>IWDG@j)2GN2ig+U~F_XAU+Jk)PQIhhRGq*AUO~pnTD}J;xG)V zCqZpB(0Vvf+Z$B(gZj>(eg$Y=05q=+Qj4q?#)i=_c^Dr=!!S$^nFg^z7+npBk1P)2 zgD^-8hLQO&HjGAA1M&xG%pKI9Lr=rVd{EmKREC1at3Y7^GXq4!%tfa`a_AVO282QO zg6eW8*8B}M3#=k&yFNh7I zVf8VLhKa#wusEomc6SG#cLFjC)D8fd1FEmV@&v~DQOrUcTL8HOWDcl525JX@>VJ^= zpgks_{nwy6h1zv8$UIQ}531KdXUc-w9+mO&|3Q6SkQ_BJs15=3IYH|gK=~7tcfj?3 zR@VPPF}@GFI~EUyulO znT2dVHP|3KL1`Qmjvx%0X8@f`M2Xq3`X5%`P=7>g5r&satRa`|aav*tRj4TIZ!)TB?7#o=erB{&OKygPXpMm@eYTJRvIza6m zP~_>e?Y*0P<;yO z_khYk(AYny-Uh`NsB8n(>7Y6oRR7||&@%u)dO-C*C{2OP0-1xZ51Sae8WcWsYyp%< zL1+Jg&2@JN=UdQOg`mC>s9z51uT!&L2AK!y(}DW^p!y#)?n|>Z09je!I}||q5j3U& znxh4^X$DI@kIx;T`U!OAA1JKAY|!2GNc9w~jslIbgUVRYd@HC-palknA821bsO$sH zUxVC)UJrxzVHtX7Zi@5yo?QF z>;Hr517r-U8$cK&2BKjY#s|?L3=)UY$ZU`p45N!9^U>KLJ~9TG0po+%APlOnKyeJ) zzX__hK=V7GbO~w)fa))hI*>ke8d(e<8(9uy2FN~89SEaAY*1evRPTb+g2v847^D^? z2BJaYAPi!IFpQ0j28n?%sO2WDck;0Wue?54r~c%qDUk09`G}T+p09Xg?{)To4AG0RS2^2aP{><>mdS zcK;t#|AW?e)u*QZ2d!lVt&0M+GpO0dfSCpAUxM0Np!#d5)c+tigW3h4dI(-WLHC!z z_@FurRxg3ZX+UF5=xgbTDW3?b0fif=-Uf}ugUT0BT@C7!BiGBIy$7Ir9JKBYl%7EC zRFFOp2AL0X7pUz3x}y&i*Pyx;q#i_r_Kbtl07xCEZUBuN(4yW4g%!wLQ2!oY_rvOY zQ2!rf6#gPpgt-nEr9r-aYYatWDckw4Wf}T%p8~) zj1Qt=VjvpC2VoE!gh6bOTR>?ORQDre(D)N*Y#dZ~g6eHhI|SB$2DJ@9`au|E1~Ls} zV-p9N0V+>G>6H)$rGHQx7?dYK`al@uRuBf+0mA5ZAoG#gu(}^K2LReX0_v-Q@)RiV zfcy#a|0o_@^*^Y84@x7Tv&%r^UZA=cly>0tKeYbFS@(nLbZGq#TB`@D|3PDFAag-x zfM}4J*z{u)M;3#zLFRzkkf3w~VuRW#AbUXTbU4H5&@`Jnm; zv`!v$_bhDO9F*RufkENrWNZu`3j&?N2dcM0Z9&+a1ITVrT?eYiL2Wls`3g!iAiF{J zJ%|RG;b>$8ZsUQ6>ZACxzc>j4-a zBnHCBd>9*W^&s zkonj!%v_iph!1MFfcD^n>;R>2VlXHVfZEQW`BjjeApIaWfy@KB1!O*m4Z|=#h(^Ys z`XA(O5Dl8g1cg1weo%i9)NTg3X%r8>`X3bkps_yC_$H{%1=X=23}S=oZ5WNthV!9q z1W>;mR8E4*OVHjD5Fb>2g4BU9%p4dE5<|xra-i{lH@E+wwSS;GA7mb=odU84l&(Pg zv_X9|TGaobIs;TsgUUQmS_X~DgZR|Opt=+kR-kwQ*Z)ODL!))s;GuYtl4)ZT#E4XXb@WBs7H6wsauP`Uz@ z^Pu?$*myt84A7arp!0A*b@0rJivOVT15kMk>KlUkMxZhdR9}MXS5VskWHz-hsJ{<# zHz*Cm!wy=fgZ)AR8>Am(7RVp?+()(gA4~rq6jrc$0z{+pL1HkBEC*v_qhVqoeIPan z!`L7i8H40N^(=Bd1FFN&)qu{a2laJ9+TRs$L%0AXl50YwZX4qfvPDx*PiFdD=LVUT-3bMT;i0cr<;>VHr^1?3me`6Zw- zj~4Yms4ocWPlEgbI?sh(^*^W|2(k-g|6s+S`WAG)4XB=n*HfUj00`&hfzO8 zA5;f}(iySk5iWJ0HWH|u0?qw^`s1KB8fcyYRQG}018SRr!VlEv2kpZLt?>e#NdYe3 z%*?=h`9WrY>V8n!4{C3L{4k@k@;`_M&4Yr(L25v0547G7l)gabf&2mU6E$d1djjNc zSoneZ{V)s@1JNKc7!6{BFpLkPVHhM1!XWp8+5jMo&7Jh9|3P&G2!rYj5Qec~G&V7i z90;S!!Nfq~APnNeFo+MsATe0I3ZlXFZ9u?(5F1$yhz+i%LPP(9`uw2!Db&g7Kd3wb z)w`fN6l4|%gVe$>h!4UbJ~9nsgT!GNBnHATK8Oa@tH^a9X#4@R9uU;-0F7;e_FRJM zP*{2e^>ILD59n-ZP~8uzk3sGRsR7l`ATbaPaxbW^1=Ov*7=}%8g%b3$PCc@5h$&K`u!mDKz(KqKN6}R zq!y$OOhfB@P?`Yov0<1Tn1;4VK=nUpT??rG2bKSzbPGzGpfg=S^%1D-rzQrO30m_9 zO3$FNWl)_=P4i)9f$RZ=6{yYutxE&dUm&{%bKMVe8>p@U)tTV>2R8Q)t^YxF5V-Cs zEd`H9gZk4T|AEp5B^X?mxVnPR+6VWY3ktydGC^Sony&%b3vyFQbo75vUj|g~gD}WW zPp!5kEM+cb+Y6F1$0a}{^s#igBpm+kU#>Q2QB#L3sg`CqQ*QX#4{-4gs2n1eLL%JK;cfg8E&cc@&VHFbt~aVRI@l zF;Mt}#KCR~3;PdhtAO?ag4R@k`~b28Ao97YDIHV@{y-4BDFys;fa_$n`&%k5u==%m9gl*dUCJ z4H5&n2UISD+bN!&|3T)0+zraFpmGvaAHnKVYSEzj1hi)jw2ur_SJ1)^kXu3Z%uuZV zLE#Rn!(cSHFAJ^zL3`Igbs?y(0jU9%DWI|ky*wg?4=S@jX#f-_p!0h{@dFz70mTbw z{2YWq=QV)JF;M>pRPMmc2bGB+3@V2}V>uu<&8n&b&$EEaVNm}Il%7EI381+EP+1I` zKLD*=0QrMj7*r2~>Sd5yK^VlQCkC|#Kz?aVO9P+%gKh2~BnF!QC#U`g)d#Tp4#r02 zgT!DMBo4wLK8!|ZgZLl}l80dsABI6oREeE&sy{(#02Fqhbm(AY^dD4K!t4Q+i=a7P zP~8q{$IYy){6D$4_&=zh1xkaUb^_>JB2XNI>SWMd0LTuI`>BmVaSO5oyfy+fHUh$g z#uZ>{Kr{>!(gT$Tjgi3Y1g#MS#StjHK;s={@$vsbXZ?Zddvr`x{hyQbKMk$_53dWL z>+QkyLQoL6t^mn_FuE9s55mZD*w`R7APkZN)kmQIG{}DB`UF(B!uX&%48#V}pn46I zc0m0FP(K+|CxO$2r6qX%D5xI{Y6F7I2K8e>G|Vm#8-|g^Kx`OBmj{W1#9%ax4RQ|% zgZQ9w4P-B9tvqN?Nm)z`I8B1e98i7&wV^@n0#LdHtw#iv&!G8LP+Eq$ALIwn8dy+z z2jvftd9ZYkjRy6bVEzNS0o2w3VGtXHL3KN*-2nuE@+XK5(g&{pLqq?A`v0Ku7f^iwYLA1)7(nKX;=xt_gVG7S{)djWgX(Qq{SQi~ zpmGu$28|bi>UmK7g5*JI1C%~N=@8WCi}v*V52~ZVW`O1bpmPTxwJ;2pgN_S;*f0!| z2eCo=LGufsbA>?l2uKVxRsm`YfabbdGcx{z>H$!j8CIuKg9gwi$*0hQN-z5WN)zp#Ekhz8XwpfU^0E-3g9>gR&$PSDsnXe}_Pp93nNKxvH} z3@Yb9X%cKlem=P04ys2%VFg;72O1Xzr8!Vt4l^HQ9|(ie2q;`ZZUoi+ZQ0r2yP(6tY;~W16)disX0Y<~v$b66(2qTN3vq5|i2B|~F>7X-oK-k|OJhu<3 z^HDH#&L33IfW$%d8K{l}l~tg!30zm2n}gRBgZj9jJ~b#Efcn+h!NLDQbuG+3ko_Qx z%m=ZN#nAcqeV}p|w1)|Fha@P>LFbKt)|`OO9S5}uKyd|1FQB#ns4N1d zbx>Lcm9wC75u_i~F9Pjb0Qn6x{trt3Apd~c2p}4SL1G{bYCnL=Qczfc)(e2z%%HG= z)!`s_f!q(`gV>-tA0!WAgD~j+4v@W|G9OgeXN87>_gRAUfa-rxScAtB!ovQ8*4BXd zpnL|(|M6a4;P?W?%P1ZkZ2)lp-`xB^XiNw+uMVnPLG?bUtOe1axCV)V>SAmd)Sd+G z^90Qofzlwz3{X27l;%KX2e|%+uI~$Xc1E-XpkgpHk?jDnK^P_nqCxHfxfN9ZgVG+T z{s;B-Kz4%qbf9{N+VwxEo(A>#OJiffWd+C{P+biYrzQrO32I}2!VHvmKzV(z*Z-jQ z7OXBtp^@(Uh4rC9bN`_F8&v*~gF)c}ifhoAHK;5Eg$<|=3n~vmWhQ7Xh@-JFcx@ld ze2^Z{+G9|<0gdO+sHpf4s(V3o8z^mo+ygQbRF;D3#px9l;B^YP>d#>#4jMlwDfwTQ znhHMSA5`~)?g0Yf@`Qx{pzr}IP690HR?S#0Oy*A4Y@3 zU>GEZiw%brtdI6OyAoU>oKp12fHX0-b!yq*v4B~@m5XQy^iGeVv{|s^;NFAu&2Bk$%zXFs- zLE#R0rEd6?SuRa5(Aa-pz#3E_z1{NAUA?&WDF7mVUQRod_Zjgkoll6 z1+@V{;R}-ou|atXG&TTQ{|9PcfYgHQ1^E>;W&?_&Q9SVVKPVl7(mW_#faaM%bvG!E zKxHNfRrtw3!lkQ+hc`Jl7`Dx*MsJy0JB zG+qE|Pk`3`(YntM3X8#nLGc3WM}q1a5C+vXpt%50TL8odVNe}Ju>Oah{|~AcKw%5R zAU+5q^FeHo7z~5>APnMzXb=XmK^VjaVHg`k!|F{?nFXplKr{$rumb|Xa}A)nAGB^B z)b<38|A6Z}bMyb8G72KITwg5qox4}AR(iUUxe8dP3_;s#d#gW?q220$8<2c;iu7+goYy8Z`^ z0f6!us7(pVV<0m@Y>>I2aUak)6{t)GnG0$&U^5Gw7}$L1SOMs4Hqe+qXsiL`)(96D z@Z25fyb91b87Pl{>QicAP`wN?3snDuXc!;FrX~iN3u+^Q@*`->40M(oNDP#h2O|c# z4b=Ar)vYKPx*h=3M+en+pn4TFt_kXggUVk}njjT}#`HmD2FN^6SqCcfKxHIo-w9}} z-^bP#e4aXJZV^!AH?pnL@?i$LQTpz&x>n;tag4obtIb3;Mp5-5Fw$|g`<2C^4~ zVeUd^!^A)|41?rB7?}@ZBa6ZLK|$d33X%ia2U^2a9vk}~Vl)%(ch4yY{v%8Q_W3P=vrHU_oDL3eI~#tJ|flwUydAoD?a5!99d&C7$@1faG6 zs2u>Rn?damP#q4M{{Xoagh6fu(I5+5@E( zP`eK_<^x*$2&z*-bth;X3)DXawGBc2VDR{Ma4>j%2*^B`x!Bk+IdmGN7KCBqAT|iY z_@MSIsLTTS1(cRSYZ5`_3@B}b{0i#3!`umSE2u3C5(DKsP?`p%VUXM5I4kQvSS%~+ zKd9UQiG$RF%mkf@0csb3@(w5;fiQTSASdU4ZAuEbEdrWD1(n&LZ~)cYp!yr+RuBfc z8-!tO5Dmg0F;E)-R6c{k7dCbRk^_Yy$Q%#`o%;bAg8{X_K=Toxy*c1G8$AaA9QFel z7NGP8TCWevE1-Tls80>5hv5BxT>Jl#+618Z2bH-X8dSc5`sSdt1TqtpE52RpFeGQ6lkbR)K9MpdSm6M<}1sZpZ_w)q!l|bVqpz$V9-yhT; z0hQ;Vx)M}wg8TfYrr^2I!ib3fpz#Bc+Xe!I+ytuMLG?Nu7Zv>njZc8W44DS8VHhR{ z<`)-(_lAM=gUo_qQvE}<`X4m@k97YZs7?Tt|1b>WgJ>8A$)U4hVjvoXVe+6l5>!5d z$|(>=XM^~l@c~et0qFykAE5daIh}#h3uxUisBaCbQ$ckpsBHsUUk6$T3hFn2+6J75?l4&sB@AR2^0Y-Efq24jQV401cD&kP!;0Ns%b8q)%eMS#j< zP(2KqivhV8G*1DdL3?OGbw4N#gUUKkIRwfZ#9)wGIL^-g56UCR<949D0xC~I;RY(3 zLG?Ch{vPBHkegu`#D`&!7-+lz6jq@21L$5XP<(;f4j?r!GeGTskbgn>6O>Ouc^K6G z0r`Iv5BxX)D84~$GtihRsH_I%Ay8TX^}9ecNFH7XL+gEz8kiWI4H^UR@Br`22jxLf zz5}Hvkl7#%se2~@qu(k-uy`Vk?y!-&w{V<%L z53Zj;^%1E42l)%sK7*wNP{R&W+ zf$RY7p#s?p8t(*+@q*F>NIj?x0V?M~=78ksjY0K3sJ;f*-)QwcSPWFBgT&EkWHAsM zgkfrmiok0b!TMq1AUPxqYa4)R=w3jW-)UL@gUWso2GtMf7+D;|24RpI5Dmg0HVA{* zpgIGT7ho7v|HCj$45SV;z60We`URkJ29&-)@eaeF@y+Ulg#Vzu^`N{A!l1ez)CK^p z{{zJh=qzARp9NHpfy@Ne%ODzrVeSF3K^VqIrjgkoH82bkhhdl)j0U+Gv|k=n7lO)5 z(B4!~+69eEfa*!m7$@l55m229>Su#6s9y~#i$L+%h14ejjNBYm5(6* zf@si~CMXYq@)+ohY*79N_02$Sb?gImrDmH>1-aIZ*h6=H5WUd$zjEyeS_}q|3PUKR0qJ^ z3tH<6YI}mx7^uGqO4C#s1IWz$56Tmub!VWqH;4@~8ySQ09B3UC=sX$_8(EH6HppC1 z+XYnifG{XefXV?-TOTAh*f7YS@csj+-Usdf2Vu~ezlDV;Yv@5^^Pq86SUMnv2F*o+ z>V8oB0#r|d!UiL6Sgw*DWq{~lBifH0_jfYBf}Aq-Osqmk8v>UvOK z0MRfE;)5~t&Kywv1S)Sp?LSZ%07_q=Gy&p+${h;x0o0cP*$=Aw zLGcBuQ$cklXx<9sCeV645C*9MrF+m=0VobZc?4FEgYqQ|gYp3kgU0(oegvg`5F1oh zf%@#AetAc3E_fd;NG+@l0Lo*aHUKF6K;ZzwFu%ZPWIut-0@d@N@k@}KL36#ZwhBlb zRR4o$(AYmHen9<6P`rTrKZ*yo{s*N$PA-4AMif$|vWOjuBR z9c1R9!?3Y`P~DG)L1h=HoB?6bdSp;~0+q+0d`}Dp)!U%711iTrbM&CP9~3SianKr4 zP(KFLmjli9gVGeJtO12HsBaHiCk+z^_4z<;f{BHN|3T#>$UU^gusR=9&LY?O;CdIS zJ_hqabuhXZhz}A6VGtXJL3|KK=3`@n#6apm7{mr)WHyM8ghB2EwP`{7{XqNvVHi~B zgW3aNoRIJzSKSX12iO15@qbX71=R`2G>i=shw(u)48!C=Gzf#lK{RsTA5=!c>Iu-? zIH*4isxv`qLGcVKyFh6Rl+Hlu1XLz~_UnS`dr-X(S_==V>p^}3ojgCQbU>p$eALIv+pFsWr?E?Ub zgZu$%2Y}lC?KwIBL1`J}ACSLLu(>%{4%9CJxgC_xKzRTigUS$4x&);;P#XwTkAuty zt-%B38&Ez1_5DG44OG^FXpniJb%vnw6=XN4%mvluAisdz2%9%SKBx^2+S3FouR(bhG>$h~{|{`v4@!F=49Z)e`~n(p0<|ka^$)1t1=X`~ z464_m7$gTu6EGUY#=xL{I_SPWXJ_zUKTtaWls`f74yvm`m4D$Dymk#|N1U%F7`Cfc7ha${tX=16=>-mx1D*7!2y)gXTU#`atvjpt=auegu`tpfUv1j|asssGJ0) zSJ2*KP}v6(2bCuvyFh9|Wf91Yp!5Ae?f|)mmKfw`P`d|)LFFw92GzqL46A=(Y#0p_ zN2XzNAR2^Wav(McgZMBSoeko{Fh~sugZM}^C~QFWKd9Xas{286&0se4JV1~bh);0+ zAGH35)d?UPgh6!y48!;!8X1G+vGGCTpmGTrgX&38c?GIhKz(D-cyoZA9eD2#sBQ#} z8G+ImsQd!;Z$W7Y)VHrsPW}&C?+!{!pn4yML3tJ=4r(8O(gtWA8)ObB{lxqDfa`yd zJ3tuSjW96~4Z_Is80^46@LohveGl>v%pah0e?k5MrCU&2CqFFgKd7w?>MMcf-9dFT zs2&B?mmq&3V~`lgzo2$8D6NC)ZBTjx)%Tz>0=5PRR1SjLKA`pmXsi@ezJS)lfb@Xo zLO^49AoU>qAPg$+K;;=IJV50g$St5Y5ok>fs2&IT6@)>4gwY^27zYOa2d(u7KTyVNAbY70YK>w)D{Glv!HkZ=xl8q_`j^)*0jba`Uq|yiG$(-)E)rM z1%So`K>BEjL3KZAA~{W4D1}$Nkv8fLG%Bhc>qw@fcyk%H-OqIAU}irfKG$L z4CFtMn?U6~C=5XJf1vsw)D{4Z|APDhY6pPg6eJIdvr#;7?Ep}Gf!1S!>K;(}i(LPM z>S|D40L|%x>RFt1GPG>~QUk}(emaN`N)Mp)2Q~}Z&j*R4W0?6c8eJa72g!rlm!NzC zO5dP128a)`2Q&r%N^hWi07~1$)W5jYfbt5c9RaG3LFpZoN07|~u|fF`bpIBpd;zg> znT1arl<#2mKgcXl*#)u-WFAOvFkz6pVC^eV*nlvo?gwE|{})sSf$C*Y{SR832g>iD z@(UjZm1Cgs9MCx|png9nEJ5WvC~iSv3^F%0Fz`R9&jX5k&{{xH8v)c-0IgF3)%~D4 z0W`)5s*6E&Kgb=l!l1ey^Q!|Goc8%Be~L2M8P zu|XJ_4dR0^OpFi>Qj3n!^q|!Lpgunq3~Ij-tp7p%f9RfjP<;Txpu7UZAU+6#_%IsA z#>NMUf$9TL-2lQMHmI%u*De13|3Pz2I0pn4G`4=P7t?ghCS zv>y>92CFYY^*juN>V1$nXdfJC%^#>-1oc}$dze6VHOMWXvn)Y=1D)#+qCsgNRK9`A zJWv>b%2SXy?4ApdIiR*LXwD0?-ww7$3Z%x)&=7o|J1DJ!{0qvfpfUxNw?O$BhGAl$ zau1ZYLFz#6ax^gk-=hf{mjL+}v}O^6LH-7Z0d$N5#0JF!D35~N3mS6()%&3G7}O2` zmC>N^1+~*bWdkUDz+r{fP8t=XUwZ%)2cWp{wYCP&DS_IOp!fsT{V)vT!|GlTjm`&& zfiQ|Vw4V-&b5NQFrCZQ>)1Ywy5C*9QVURu;M(4xCVKlNlD9?cMJ!m`&RQ7`~Xr2L7 z7l7&n(3%)fdIzOte048AIgnmZTN!jG2dIq!Y8!*jidH*^v+sPKMGX;fyx)qy?mfORiJnP z<#$lIiVMT!LFbf#&gucx;h=gS)FuVBe?Z|6YLkNWgZhOaF_1b?`3{PI(3&XFdRniU4C8}n5Qd4P)5vnjY<%jF zzI+9@h59wj2%0ICN-Y!C*qVHm^* zVPrmx4WmJE3@ZO&bt$aw2g!r_C!llyOEaLl4OGW~=FUKEK~Vh<%7^InKCBG@qd{{4 zAisgqENHv{l|W6dJB}UKy@{8JrA-UhCy{8sN96P5k!OdFu#H7cToEQWCmzW zGDtnBi~!Zqps`BO96ZPlkiDR`49HGUeGkH*@eEMi4yq$T^*pG|1C4Ki+6$n%71S32 zt%(8cbpe&tpgaaL1LSs)9#Go_G%gA%2OXg2VS~nZL4F6-=b$nLRIY)_7f@ctilKW3 zKxr8imZ0(*6y~sb08ku(!UE=BWEzwgLE#4S1E{?M3JXx(55ge7gUkW-H9`3s6lS2f z9>w&l@6p2=ly*UR3{*dZ(hVq0fzlkP{YXmv57Gm|pt>4HgX&~ZT@Ok>ptOmt{)edr z>BEI#YCtpygVcfC1}YCg<76NCjYU9zCG04l3s7*vLX$^}q=8C2eY!WvYDfa+6F zIDpa*C|p2&8ju=LzaJDvpfUthK7z_ZkT}RrP}>7!28gCM2AKU_{RKtclePC!sN6IK61_y2?P90-Hz1`vj^k!fsfkXjH1)p4-$2~;kD*r56Ybk;m5 zpM&a2P`Ux7DG(dfP6X9YpnM9-f1r9D#0RwjU>H>Iq2Pps{~&ds_5!G#4Kf2%SAxt1 zVUW3?v;}e}XuKQbE>Qgq;)CivFb)ia+;;=L-w@N(7nYVb3uLq(V(^j$ZU|iKA>SyB{{|Bi9#WjpZX2a@#P`(1q`GCxW$-~scXplGz zBa4C9Fbt9hu|YJ*EKt4yxf{d=xf#?K0NDk~TcG>^nj;3~8BqBEO7o;*kUmgf544sT zR0o0j3ZOgzGY7QS0MsS`*$XOvs8Roe%3@Ic0m_?$t?mc82jnhz{STV^&&vbfy8tSa zV0A92js}$zpu7&o=H~xFbAO<61iAhP$${qg!Q-%{rQq|GK;<&1pAD*OL3IG=ObSq0 z4yxZl;-K&WnFT68K=Ztyu>jC~14s^pVQ!!n4Kfo{27=N7xZcmr{SPXOLG40Noe#qx zIS?CEE`#b;Pl7AUlc0p!5X_A5a?&6rL~)S_25e zuyFuT{STV^#f6dA|AWeX5C+u&APi%}XqXr>A0`H)LFEuK2GzSD^`JBWN-Ho7s-r>W z5-2}{(j%x12&&Uz^*kuOfG~&;qCptM24RpoP@M|Gp!G>krluHoMuFC_gZf0Ex)bC! z5C*vehCy{a2!rZCP#p$Zn*gfYK;;mq{|zdWKy@6Q80A;AJl&X&B=rM>LBw#YCvX#Xj~Xs9>#{zFg+l%Ky7zWyBZ`1 z%FCc}HBg%xl*T}9V36BEfGLKx@uH{UA_z3Cc$>{h<0DR0e_C zO`!2;&{{#594RztOaV0R4{Bq8%3n~v2IWgo9vo~KPQ#Kd8I` z-$I$i*Xnh4}odc*{1PUL}+y{sc#-*j;J&z!DFbq-; ziW?9Hshv??{=Ydh^FL_K1*rZ6^)*4bDk%wkrXr{x4QdyF>MT;~e^A_jFsNQYr(t3s zaTtb)f$CCF+=4Ku-3RJJgVccL_h4xTMuW-}&>9&~dI8lY(}z)E@_>MHmLz0ji%s^*M6=4|boQ-+$0tDX8rUDt|!jeo$QxO2;5QATvN^ z9jF`yiG$=p^(AOLyeK;QKPWsw{RB`w3`*yqd;^aE;$rYwP9QcYU4z;Hpgac36QKML z%5$K0F=)*`2!q-Rpm{RT`aaP7DyZ%U-)m@U`X5vtg60}PYh*y_7-SFVOhHgsfy^NV zgY&vMuXxD+$IPL`VX4_0IeMWmB*lZ9yFc-ic^q& zP#A;a5ERd#_#VXrSMS5Z9+Xx=aRaJfk?Vg@I)~N&AURwZR0qT4z-(y!4@#dPb3x|A z$N!;g072?N7^V-M#wG_71J&&yHYmM=+Pa{82I7O}gF*QahC%aW{l&%Lz9lRlfYLQF z7*zj*<_JM)8I;FBbrPtqhUo?6Pf$4t%KMW`fQ^1&!%|%1uzc2CEOLL4(RlFb37bPz>tJ zgWLx4C&&$83|;d8W+T`CP;ro2P&tmZ4FED1G;R;0LF}R;NdLX0??@!TKM|`TwB$0E9vH0SLp`FdA75#s;mI1C>Rf zIssH)fW$#_kf8Jf!l3j5y2l4p9)a2`p!yKxP7nsU6I928Xb=Xm;TWks1IoW3y`VGo zz;(Zw8A{(DWDf{~>;lzKAUA>PdQiCnD!)ME-{|EFsB8m`v%~r~AU}Zm#~^os;saEF zg7OL|&OqrFgh6=*6n`KLiU*JyP?`s&anQIsI4(0X{)6gpP~3sy66AK!UPcfN>Pv&# z*C4lo>SPcGl|djkg7(D1(jdrekXfMg0X9E7`#;DoPv!|!`Ps<6R52Oau=u$0HrU`S_n|N0198wI0-1MM)APc{h&Ai z#Rn*^Kz(XhT?(pWLHP~6{s-j;5Qf#)$ZVJxDF1-cC@Ahh=?2sm1lRxA_6k7T10cOv z&4S9K%YoV{pz$Tp7&53X0r5d>SeqV{&Ol?upz;n>kHhi;C`}WKLFGTFO$#y$bVnCB z??Bhbfbth8zk%{0=feLvG*Gz*3Ii~Pj!lB>0F{}b zvJ%vH0JXC~;R^~IaCur#0AFtavX@*8u5&^CFHoHf!qC1q$R1GKgZv4`(E1%@HynfN zf0#Ik4IKjjxf>KNpmrRXhMEg96NEwHV0)o;J*b{XuH!-FEy!-rcoHZ~Ky?7f|DgIA zR9}P2UQizlG^PSd^Ps#2!l1kh%EurK8VdvGTj<_hP~HONMQ}cJcmEI43(6~?Iu$hT z1ggKl`rO?9gW?D@rVWZ8g7rUW{Xca6A5`|kFsLp7VPrlwHb@NAF9elAAPlPiLHo`U zy}jZ0h=I}&s2>Tci$V1_s0{-O4-f{`OIUG2!hcX+0@arwJs=vS4rB%>{ejE`(bzCZ z4py&&>;^)3j5 z;uDmoL1`Y8$3bNis4WAk>p^WakU5~Sjq2p&{~-T?+z$3fa`Jyr83PI{P@f01ZU*E| zko!S(D(K7tkUEf^pnL+Z-;u}qv$Fn!_WObI703;sd`t`mxe?@UkeQ$~1`Z1|v;Q$( zUjISk51{yi#WRQoVUQRoje_uI zWd|rNf##<`^R%G47F7R(F|_^#l_4N;5DmlVe3&>Wtzgvupu2>S%z~>$6GJx>nGa_} z_ZNch$pE!4K;ocw3y2TOry#$8FsQu>>Q8{mT~OKw_Ep*qjz<{2!F}VREFhI2@()xmfoM>@ z2F6Nm=!L4E?+0g7*My_T5xAJi5EwK+lkR8YDG)y<%K z2NZ6gv<<40K=l)d4@xtjxhar5s2>Vy4};W$_L70>dQjMb&c*tQD0o9$L_ym<_p!fs14^)?e`uw1J80?OM0&xEx)V2WI2W?A(_@F!s!l3;FpfCcp zt3iBFxKDMukHJEN$_bFaKxF}_{|c(ZkTIxU1J(1Oum_b9uoB))#o7pf#M5AU%}S{~)tKW`OEtIEK!*gX(LL|3GCs z97F4MP@4cO2I7M-sP0Fmp=^+TnE4>PU||GegUv4}_z!Bwfa)z!yo37NpmYqnqYhM` zgVGu({6Ognly*V&Iw=2u&OZj#kD$2}P=5-vb^=tMgX$!ZIpDH4DCj?^9tD-HptdOp zgY<#g#-MvLKx<|}Z2?fdW}>P2Uq?mdzpjc3nATBN{tv?1%F6$>m6X63qz+UjV8ihB zf6)DZAp4OqtR4V~A+tez7zVY?L3KNb29-siF$d5%A*hZ6g#jo$K>h`#1yEfGt{W2* z|AWE~8H4g4h!2|c0QILqG^qXo*N@@h;4}C@=@A`++Cv}=3Tu#EpnfSRtU&Go)w!U$ z88qJxig!@@1*I2IeGjVZLHQk=CZY3IAT|ht&h7=JX;3)>ngamU^`N>OxvmGTu>|=A zjG=oHK=nVeA3*v*d+tHyCTN@n6ds`T0P+(k%s}%tAUi;54dgzMouIlNluzL}D+}Bv z0J#gaE*}*Cp!H0k@C2o2kT_T$Qhg8C3l#&&gUULPUqEFPC=5Yv0hO~LGePYDQ2fF$ zC~iS)Q22w~2?}3O+=9|9C_RDFHz=$@=^i9LiU+<80P3%U)~tipy-FGD2;&9ET|m_G7nuJiXLcN044^aK^R>Rj1Q6nxf9eD1@%)v zY><0FZFSJNKgd6zv~rrS)G=RTYdu z{eFElwf|rY6$8nE@)fqaA0!5^|DogmAU7jpSUms|1F=CEnGH%8=w&}>tsE%MLFoqM z2hiFZP+WlOPtf=`sD4DopnL~v+k?bF^(Cl%32G04$_CJyIFK2jd<82DK>i1bfyNX- z_JHbAP`Lp*cN^3{1+_6i_JPv|Xx^r{7@XcgVxasEiU&{{1z}Kn1*KcCSXLJJ-f_@+ zRgf8=x*p^vklR3YJgDpd(J%~lcVZ%Btz}~3f6%%XkRL&16i7d4Jus*p0*W^f2Dukh zeuCy3L3V)BF=$OFD6N6q0LnukH(|q|Gzqd7)Q$$Vxk2qlP&)t=PM|yq(t}SwNFLO# z0JUpD?IKX03KWi@Gz)59g4&+Q@roSJpf&&~4T0(ukiDR`Cn#<~bpmJ(3O)Wu`SfoK zfcguddJ~*4tgQZn(ix~94H5&fL3s&O|0CDCU@>TY4HE~^$l@R~K=}()9)ZL`W+9sc zQjd;7>d?h-@}X@EP(B9j_XG7CKx#qufbtG#o(_~wK^T-~LG1!iUI67~P~8Jc^SCgm zt^wtDP@5Ojz5tcYpmGLE#3<-=MJqT;|~u2bDFTavanr2AL1a(;)RA zI|dsDl?9;s6I8#UV^CcOia${P28B7O{sEN{pm7tB9H{&Nl|i7r#Gv*Ws7?geX`p+K zp?xTj`Ji?LsD1<0QJ^&!AbUXd9;gh$Wj9C-J`A!S6wV+FG6Ph8g4iG$ELU6%-p2@X z4+w+O2so{P`uHFWt>?jFNNkW=Q2Px;gW4$|H-PGWSR8`Nc~Bn?RQ`e5JfO4!@)s!G zfX3B8{iA~LaPZu2b6OgB9XQDUAag(%WFM$b1NHSlWg{qjL3KQ+J_FSYAPfp?WDK^$ z((*qjJ%Q3K$SzRZ0MxbsqGae~>y*JRpZHs6GeP@gNL} zTM!1tJqUx?ps^cJngz8tK=nV!Z=mu4f)PURs zs`EkfVxTe=l(#``c~D;nM1%YUDz`xS2!ugp04SY;@;NAPgVH`I?_k5Ad<9DHpnMG~ zk3jhlRL+3vXOMbOUIeYD2DM{Bc7yT-s6GS95sN`~fcDma$`jBS1IR2;zJt{r;QR}! z8wUvnxebItH{2P#q77b7TxELqX!8x*rtYptcFf zd{CT&%1Jmzulu2E{9tN9{(`v!WEaS0W2B-`Il|7(3AH)XrBSHBZw00Df-$3C6>I;M11F9=wbtkA! z1+6BO2<@BoDisD1;bMNqv1>Su!1>4EA#P#p`3J5awD)LsL{0VvIZ z;vbYgLFED{kAuPogh6Q%M1$fLq!;8K(3lL|J@N67`-Nb1LISu?4{|Fy2E{AP?I3eN zZ4Z!{p!fmBHz=+_aSOsAzku3FptcVvEyCOh$_pSjf!qV4L2d)bDXffu*7qPkfX*iY z#Wl!JAa$U21gNZnr6$p0YqgxUZgyFuoG_FI9*R6*_pg)u12fyQaj;~c~X z?E?UVJFt|KR%H-5orx08@iZW9UU{2f)-JtAUAu(h_Kl0#w(7>P}Ey1L|ji#6cM3 zb`S=&0bu1NDD8vhp+My>C_RJn5G*f&*f0z#he2fms0|M)Q$THIP+kPpS0MEu8kBEA za-cjwYW)v019WE&C=Y`26DXWO`E*c^|7T}|`>3!w3r2(1u!Hh3sO$x$ArJN}8s!R1$07FZtCwgA-$pl}71?I1Ovx*wzt#D>{Nhz7+k z2!rZ;kUmgd4`RbHbj%-Au7cbL!k}^%UjM`DeGrXY=jZ2x$Adv*udseP$o-(Q9W59sdW_^Pn;xM8hzM54yVn6sIU+{{G-~3ZOIts{cXtA1EJy{0Q0jjQkI3ql4-;P`rZX{y=pd zhz9XN`5(L{9<=5pI~%e`7-@YTsJ##B+k@-_)#V`jLGA(d@j)0A=U|LwJpxEQ41@H+ z)Pv$06i*-;VU##^pNF5Re^?yKV12p~*s)s=sq!)xi`e7Kx2hlK$ zO%5amlZVr;uKz)GKB$fdwE;kF0hl^a`w}DvatG*s15jE8VNl-!lpjH7)_}?bP+tsG zAA{0A41@TfJ_4v;0ZOZ&^{Sw9092NMC6pz;+| z4}#JvsGJ1VXP~)XQ2)FsH5I&<3zT+2^#jZfko!Ow6mGEfkuVw*w#XQyu0Aadd?pRZ zOi&*ihCy{K2!qGNzBwq|KSIve1GRaAot?q=|AOj%P&xzE zH6U@28cU zCWGWbWicp@L3%-B9H6!z$nT?g;MxG7ya?*=gX(`!A2h(x5!_b?)z_eW1&TX(eM`dr zeNbG3+M1wr4l)abLH%-MvtVqP9q2Sn9!A6DL3}V9I?e!U$AZdFP&o{@2h?T(wGTW! z!Q)P#_BANIg3=zyU7#^iP#F&@KSB5Ufbu3NpTXJ#pmGD$J_nV@f%f+QLHP%iPe5uw zXu*#Hs)`3+Qdfy!r4 zT?QHh1*I2IIRpy_P<(*OLy&!hFvxA7F$7TfVqoZcE>JxPvI`XVU<|7BK^R)^gUUk? zhPeskM-T?ZJ*Z3tjbp;{40vogBm_Kv5AqAhogjNb>OtWGI%f~mW&n*XgVGOZtQ}O= zf%-$B_9`eWKTVDQjfH^fd5~YRVUQeXjs(7^DszgX&mh zF=Rf-9MBp7P#y=_3vxH8Jp=MHs7(d(E9jhI5Fexlx5C)Yqp!N+&z9lOQe5MnqZvt`)*zKUX2qgD|+yWX)0l5cM=Yz@_P+19@a|E@! zLG2=tSs;7x;;bz28W~Xdf!c$h@dHpCfa-Hlc?_!GLHQaK{~#KSgM$8p`u(7G2dM1_ z+KU28^B@dz3uyfyw)8P7M!)s|sH_2vJ%akNpf~~LMNk<8>r2DxSx_89?|d>E__x(^UE9tv_lZ0rJN4`@6Vqz=>;0jUAa zLxK7Wpnbp~cY*pJpmsB;oCM_qP+kR<5up4A%Cn%b0F76J##}+;xS)Iqs*gbR188m) zmi|F)Y)~Es}i2fK%}uKx>*oVxaN@R7QZq0ou+1nFA^(K=Pol1l8jp zzk}=qg$XErknP3B2B`tn?I3eOG#G=<^MReQ2d)1>eL_(Df&2o-pgukb=jMXTH&Fcn zvL95xg3JKbJD@rW)D{GlW1zAL)OQE<|3UEyG6UpCP#+(JLG}I2%1ZDZdmz0a|A5*- zpfCcpZ9smsH#7vV%LkRCptK39FG2l#xS4r*;CU91pFr*awIx6_2xId*x){j)AidzQ z0EGd_?;skALF#eV|Iju7sNV`|CxhIG4a58Y(D{E*oPscDydM-sAPlPK(P@wvsNV-t z3u=Rd{0~Yyp!5%_t3Y7}qCxd3hz7X>ynZ1&`#)&?D5&lN%`1W0N1(I^@+T<#L2V>Z zyn^aTPjVwN96h*T-U?uNl;x0#UMLD^(Z>VCJqyW(J(!r_7tcd2HD+_ zn+vX=LE}WA{w}D_1o;(|9zgXmC~bqu3PVsk02J1sau1ZxKw(A*gWLcr zyFhDNK>h&bb&#JxbH<>y94Jmf^*)RSjpKpx4k*q+@}O}7Q2Gby1GRraYXd;(V-(Y` zzDEyhQ2h_;|AXpJP?`YMN1*x>R%e6ODWliJU^Pf%{UCXCF;Kn+^=Ck13LvvU7^Dsz zqw537V-o|3LpmYpM|DduPRQ7=KCMYkVV~{uq zgUkoj7oheQ$Xrl=7sLjI5vYs>nE`SKD4&DMg8{{$HTfV6Dumzo($!Kd9de zDjz|0Fvtv$I$Ri52Y~7Uka{qN)^#8@sJ{y`7Zk6cFb2gR2!qTAVUWK-W`OE%kR71% z7}Q?}t$_pO4^TM;D#JnLDyWPE^)12Xg3ji2-^K2Z4#G7pp{z-}lh`40+H5C+xtAPjO3sTkxoa9F^?0F4HP2e|$R z_4z>;^N44MlAwZ%bU0t!D62GwhzJ}M~Bf$|Bci~{wUL3s(}M^Ko7+5jLvs7?gM z8K`d$s_#K@1u_GKLFRz#d{{jX9m5CN1yV-|2AKiJ2?_r};R?#PAoqa$2%3j6v{{YqFAisg!3i1;;o}g_Q zko_QWbPN**g$HPE1T+>8nok0?!9i{Tl{2951Gxv34hdmU+6Ikffy#1F`2~tQP<{sW z^FZ}GC|;54f6%-R$iJYx1Bzcz`xz7tAbp@Q98kUjrH4^Gfb~Cg{vVXLe5|bggZllT z_yv_yFdCFr@L`Zz6nSX>A2gl-s@p*IF1Sv{(Plu_kIV*{iOvU!!7x}3WS6Jse^4JC zl&(PQfk5p6P#XrM4yFb~gZu+>3#dK^mCK+s49W|jaRE^O6O_I|c@k6?fXXw_8d;DU zkeRUhACy->>Okool=ea61E72b5(AY(AbE5QYEyvP*`Rs_R4#(*OHh9h)E)+nOMu)0 z%0nP|P(20G56X+6a%7+|xa@(JL!dGkBKQCWr>L6+q(_APjORs4oR-FM!H8P(2SC;|2K@G`0h(=Rkf2mE)i^0smnWL&2c%0F42FFzBx4;$m<;1&SXqhP45p?Evsv06gRW;QHUe z;eSnb_J7b?4p5qgmEj;ZI!2ZQuN4al`VY#Rp!pzBUI2wPD9wY$!a;R4s2&5=aiBUB zRCj^e?x1o6q!*MALGcJu52_DQ`t{KI9b^V59zkt*5F2C`$V_|~R#&2{!6gn-2a*Gw zM+l-p=@c|Z2y!#%Y)epi1B!o89|JU=3RfeLT7It+7-{%1n+TRiKs2cQ0rzLk&B15ggX%U=y#mT3 zAbA)DmGz*0EJ!`5j|bZ03`+l?u};uAFQ9M%g%zm&2hGQU$^}q8266+)EKr?0P#CmE z3T8K`{s;L1x&8swRiOF|Tip*T8$j_6DhomNB`9n_d;UP>4k%1PkATvSzeUKO^d_Z9U>d%A5cR~IJmG_{2 zKd5g5>f?jTW{^6toh2pz!S#Jv8TgJqP}>AtPlM(tpm!*N%q10r+ypZR_taL0#1b|A~6^I>u@aTpC3hmIkD>V43-1BeFA3xUc~P<{rLr=a`| zN&}#F0Vw`K`5TlDLG>yqPl3`GN5f#MKk9>~9- z_y(=b0L3q;?g!zVkdXhN`~>R%gTe;X&IjoO=>dfgC~iUeK<*pG^soCtVGe2+g4Sh# z;sZ1W0IK&v{bvvjsw*+-QKUXRNDhQS`5A=aY*3%v-5q@PJE$H2LE~F zfZR3!wOc`HACx~peN#}K0cz8N%6d@U1a3A`3bK3OG~ld z`2()kVEtPV4Z^TB{)L6$v;0A3!RmdGdq8dniGj*bP}u}(_kr4GpuQC-&Om#vK=A;o zpF#cxxeG*t+ySCNZUn_YD2;)}u0icb(0UTkSPsZVHji=NS+)FG7}sQP=6!yLEgF(2bJM43@cMW^#BNi#6j%Sn}OmUG>;8xBZJ%m zs+zpCn(3l0N zy$DJ}pmqwVZ3M~}p!Er$G!4r8pmYvOf1rE>N?)Mz0kq~ARR4l8bes()4{A?<%m?`u z)J_A1Ate%j z2e}WFXF+8TDBO|dKxGuD%?s))g7P`YJWw70wF5!zdQhB$Fetu3c?-Gz2Za%6?iHj5 zY#(?q*NE}%&oDCW?aB~CqJwRfh zF$0j_L1U4iwg9M(2AKoGpt2n_#tF&`pnL(V|3P#9pfn8915yvlo1nZ5R+E_tKF1zZ z2Y~VmsC)pK531)t?t<6-pzv^a{}0j+ayzJ=0o4nz{06cU9fRaRVjvoZVSE@369>`Q z#6aT2Vo*N?R2G2h3|QR+s>?ur1-Tm(M(7w+E`Y`wL3V)FH-Tu-S`b+M4;m+*URL%W zR5pR;#X)r`=zc&@IRq*vLH2;k3Q(UKGVJX8jX`s>pfU&4)&rH5Aa!6hrKSHtaR6$AfXZ%=x!`)gun@dg3{=K} z%2H4n2AUrN#T&>R&^Rz?d=%tH&^iFHo1twMka=Kt78QZl^}*O6agg~SKG<#?V*sGG z5-7|;?f{t!YEQs0$S!0I69pf)Wi zFM-N9PSY<2G7TU;s%tC zLHQQcF9p?Ap!yNH9tHD3^%hdS4H5%kkX|qb_5VFQz-Rw}(h0~M5C+M?)PZOa28qEi zIv*yEjfSZO)1ZBR9vR{~KgKsI3616F_+pl>b09HVn$2$l~aHbUBbbsTgcV zP7e576p&wF^#-Wi0M#j=ybkg^D2&iCNF20A8&v**>NZf@2s9o53Rh5Af%-L|@C4NX zpgtg|odl|DL2V6?`Jj3M)K37_0U*0TbtFg}8H4J6kT}SE5DhvT734-x_<`IDDuY4c z50VF|1@S?38)%&esC)vIO&~tVjiCAwqz2?B(Aq7(j1C_a;x#vJfM{wEz zwR=Eu3EEc;>H~t}4OG{H>Rzx}&^8Fj43K+3Zh&DB9|J?xgY<$h$j>0NU>H>YgUkZ? z3*;wQy#Y!ip!sl+8$e|}sDBJ9n?W?F-T* z;SK6ng8T_;*MizNpnCv8`)NS^Sr7)b6P{SPX;LFG88%m-mmeFMr{p!0Y@`5)BY z1?5Rl`wxUc=XHb5xdEj~ko~aw4CEddhSgu7I0A`*_{bO}2Exc<$ZU`t2qTNZ*f4Qi zG`czzep1qZP{sHwBKxGEVpP)DcGL1PJ^{T8770BQrk!V4r1!!W;q_#ieYEn4ss(l49XKAb3pk7WERNXAU}Zo0@4S{&!BT%K=~Y$_d#R&puMo5 zG6AFqghA;5)NTP`P+kLt7f2jd#)9;L+J>OCGl~bM?gxcCDBptCVZg`#k^04;G7eN% zq1U0<#6W7m;-I?K%?-Sc5LD)a;u}=Yf#!cfWdaz(>S3gI1XwSUILJH@#w8AtgJV#C z-rfB_s4fT19%L2iXT=!_^|$36cYegY?CEc>D*|S)j5VlutnQ6ex{?@(XCK zA1K{}@&%|o1?30OSSd&yNDZh=1ND1AYC!Ymp#CN(Z-df1$UUHZ0&)Xro&`jMvAg?! zP`H5X2bGbadJt4@fa);NnjBDm1NBKk^q|pt1zyM^OC_ zDvLn%6{t)DwXHyXJdoL-aZ!-{ps@9`u>s#hKe@CNJbn)Pv&hbV2zR)OH1>Cr~;9?bQLLWsn;|wi!> z2iXInL3s|;UI2v`C>?;}9aIK@*r0R*5(kf`<>Y|xxCezXD1Ct31EN6~#s<+K3=)H3 z5FdtNV%TVq8jv`MhG7sN8H2=;`7kyvanKkKDD8sc0~8jZHA0{`no&{lACwkA?SD}J z9b^tDeSqqDa6X3aqXDh!0i8JnYM+7Bfa+(E|3NeeBijpNgVGsDEl3X3egf5@p!5I| z2g!rXK&D}AkQ+eyK=BC*dr%n$3VTqw2udfQ`~d31fa-H>^*^W#1GO_iZ4^-114=KT zwj(ItgVHCc%?XNQSe%0Df6zDxXiN>120$28|AXp%c>Nz01>PqDN)Ir7p!y$_MnU;< z6c0=r02Kb9@&Z=>gX%VHsq4-x~FOCYns7^)wn z9vcR!hl%52gXEFrKzz`=I%quB)zlQc9{_GA9{a#%K*uXU;Q(?UD6fIs4NBLb@(RQU zm7$>g3@V#J^#v#&g2D`xuRv-*X&Kaq1<8T(G^lO|=Q|4v@cD4?em^W+k?Ma?9tDl> z!RiH2-UPJ)KxGIh-+?eF4<3}cyf}yklIsE-L+^8l)=L1u!&7F73w#*#th6sX(;=>^dsaZud|qCxd0xPArIr_j0;ROf=! zg6edT97qkQ+ydDHTBiweFR0!JtsMi|2WnS<)PdB4!WtB3AoD@t57Gx3%ZY&AT@CUd zXq*C6rh&?RkRDJQ2vlE#>TZxe5C-W5VUV9eW`k*HzaAtHY9oL!Ob zgS8C+s{d<1_y0iG^?}+Xp!fvEJqUxs4TM2$WLR4oBo1;vsQm@1UqEBiAV0$}sQv9}@mj_{xxyW|I_#hgDL1`G2?m%%4O2eQ$333Or9vB;> z9)v-9Ky^H5ogOGoKzR?8en9C36y~5j0LoXOG6EY0rA1J_0HsY(83bzAfXW1rI4G}x zXwcXYC_X`P48kC@L2YbMJ^^8H{T~_%UjGMb1Ay8tpmYs#3rru#O`!Y^3eQnIu=PKv zz5`)U{Rb)wK=l`>Ef4BbfXW(hJ&C6t1*w5!P<`s|{vWiq4wU~vWhv2hG1Lx1_94rI z*&sVTJpO~qOwb%YsC^1*$AJ6;cNf%b7$2+;IvxOGgZfgSaR3kvDyKkZfa)Sp{SFEn z&{`x=UIf(F2m9?s9g&xXF+XVPc8lxghgEaSHP{ zDDQ*XL7=b#u|XIl2kLu(`u?DB0`)sVVF3z9P?&+_Kz(XZnEVFVMo>MO_2A`V_T0aIVe?VabDtka}HBj3Oq#rc? z4J+3`G)N3&HmIBf)tR7l0P-IwPC#WYDEvWXA4mI`4!YR1J${p@)9&Y3reG)b}J~qfWi?pwgO5Ipg08i12nD*D$7CX z3xq-K6EKGM-$C^VsICX~@j)1*7UXV_-?PKQ{)6lR@j-PzC@w&4gtVZb|DZMiXpJ4H zO=h5~`d?Q?<-e7_{(sOs2dK>h>f>U?wzmI4eklA1is)NwX#A+5)4N-E?F$d6^Qc!&a>bryN0{H<%qqq@jE?5kv4^%Hh`{p43 zgD@yhgUVr0-45~xsQ(Ho!$5so(D*-S{124&L2@7rn%4w{AxI2FgXBSFILHkkKY;3c zFb4S_WS_e`c+CPRPk_{d>NU{5G*JEpR3129P?K7-+v1sNMtB|DbXJCJssypgILqhJwl#P#+1@P5{*j zp!K4ldJt3>gZe0-dKV-Qs%JrA12PXr!`QI40jMqqm3^S_0qv~>l{cVzA7npBKdAl( z)xRLKK{Tjd28o000o9ox_khw2sO<;}Q&8CpD(66IKz%$AjgDbl zdqMg^{XS6L3@Yb9Z9&jFNRU547&JEo3Xcfr{eYmd5>!`!#wkF3I1mQ))j@FqDmy`O z3aVQ`=^2z>KyC)jL4(pH$UIP+3S=fI?SU{TAAm4O3?v5{kAt->Kxbfr)Hs@${MS)d z{tp`O2c>h6TR?GYtf~3m3%T!aZ4F+h3R?dUYA=BL|GDw;|3P5}QV)t>d>CXuD4ap# zPar>nFer>^fkEj2W-c-tSqxnqoexqA5(Bvtj1v?8gX(@zA0CuOL3J`HzCmLupl}4m z4=AodeSJ`w3MyMc>jXgkZBSbtWERLwWDFAn(I5U zI4IwM#6cL8mf`VkVF7LjV$}a(Vc`BhNH3_Z4{8^H(j!bCsN4gUWw7u9h1n>kZ(9Hq z_MoyGl!ig&H>hj@)hnR-3RL!k`huW(62u45AdJig@j)0_45SYv1~L=0-WN0m1v3+5 zKC)UE8%BflA!C?0jE2d9_{bO}4&sB-IjBqpr7^I*9vH)K2RA8O0S?i4631(i9VvIkT~fcgiZasu4f0IefVOa%8IK;;5x zj1q)FYC(EHV~L=3V4yM?R91o3EP(6=jrW1dH&A{Bjq`!(1(5%d{Rv}(`s*M$&{{Z< zzd_*+k^}W`LGA~YA)qt{QU?+TVbItJXe<-tACNq#Tmg+cfb@dKu|ef3$X_4~ato+V z1z}J)fG}vhAEX9U=Ysg4vJh17gTfG`ALI{^dXO4WSoMJBNOE(*YxzLxLE<19G@lEK z15liS+yyE#LF>#xZ32+lAa%rGkX;}QYFmKn2T*wjN;{ys78G`%_yySkYWINb1D(YR zYTJS00u%=zeW0)c^(R4X4N$uQROf@*A)s^w3RhS?3+hLM+)4@t=>^#jatEm21{!BD z*3bag``XIN|1EWO;cHQB4GsV6sj2K#yf4is0gIt*NA;W%R-BnMIp!pLk8AB16IFd8I=j*;b%*~scZ;vftY1F=D4 z6Cey?gYpe1zku43pu7QU%Yw=QkUVI84yb$p^#?$C4`c>NEhuh5c?YByBnC1EM8hyT zA102E2IWVPJo5Mf$Q%#`xdkK#vKy3_L3KVT4T9Q}pnL@?gF$5#XsicRw}a9bhz4O$ z9z({U`3+DXACxyieF0Fu1)UiTN}r%M1E|aawI4ubA}GIt;vST~Ky6b{ng#hAgh71= zko_PGato+E4k`ygX%MClG$sg2;~??TdY``aJ}kUJVGl~fptt~)5uo}RRBwUmQczh1 ztN%gq4ZV6)NceUKPvtOBGSlqW!Tfa)4hJp!7W1NDbN z7*rpD`hcLZThO>JsQdxtFHo5SYPW&h2x>!s`huXb3J?Z`J!lRB9fRBm5(D+$Kx#l` zIVh|^VFOzG2x`-V%mdXqV70ck;5Ct;adeR1Kw$~;8z^jH7*sxh%mmf0Wy`ZuLl%7C!K1dH(y{#>HUjb+i9aOG>`oQ+#>4H5_ID=YgCDkDMd1yDH- zs+&OJ2kN7N+94owL2Uz2y98t(Xgmg_4;h2hfH25RP`e4VrvQ|`LE#GWJ19OueQi)2 zC;IvQ2enB+bpfcY1!~WL%*Se8Q4#naWY9P-$bF!`Jt$s5^))E$aAA-iK=}-YLH2{v zJ}7QMaR%CV4;l{!wKYKfQBeFELF<1|e1Q6ips=^l(E+y!K=S|~4C?=b%mK9lL2(P} z`-9pChH7g6^;A{=!|H#Ky|~;4+CK|QGobb+sBH?Wzd&^rG6vOQ$b1kRT@0NMQUk)+ z#6e;pj4Ti1gT!DMBnGNiL2(1BLqTo>r329X5h(A0(g~=|0%C*GHzi)LG4aZ{DRB?)tMl3K^UYKW+#XS@kzxXw}IOAAUi*S z2{H?056FBlMjnGlV#Ccs5`)=?PY$LAWDn@xACO-_egf5LaC>29VypYz-NE%WC|!fx z2ckh{fy!_Y2Ju1WfbtTE4N?QDyFnOaH^^{YazDr~Ft>x|3qX26_Jhm@#TBR?29UmIE z1hNZM9)ap_P<;-R3@B}Z+Mb|#7PO8M6fdCg1&t+w{0NE*P`HD} z13+Wrps)drVT0;mkQtzUE+|ewVFJn%pm+e))u6D4VNhEG#s<;Id=MKQgY<*K5ac${ zI0MLBP+I_$$3S@nR9=AUXHcF6wbMay0CFd&e*nr;pf(98ZG+a*fYgK1HYiPk>Uz)` z1<<|(ke@;M1(aVwX$e&Bfcy?x=KyN|gVGzw4p2G_+bYgYp5W z`~YE4I{*|`pl|}Ihhb3q2AKn@gGTFq`q%y7Fb@a-uM+{qAqa!&4^V#%R)=8g|AXW} zbsjPXi-G#zpmTm)T>gXVCs;g#XiyyhG8a_-fa)I%z0kTDWDX32)PUH?G>8quFgXw( z#D-x|ngaDnLH#07{sh(6AUTja7zXh{Zh>JCA2j|8npXvtzaTb94pd(vV~`lgJdhpW zy57SByw?#V29g6|kXc}iRM#V$0b_&Ig31a|{R@fd{DgsDyu>LR!}_$avMkwsB8e$bD+Aw#l!@BhaD)4LG2MxnFOj^L2{t- z5mbJH>K%|fKxHSWE&!zi5Dh9PK=nAtPoQ!J)Sdvv3&>3%J3#&i)mtDMWG^U8Ky@#u z9tPE|puRC^EE80=g5^s}z~}0K>TXbd530XG;-E4QWDiIjWEZGx1l6CQIe5@~B*=VF zIS6Vufa+;b-w31^qz_cif!YkyD=NVE0)p%Xm4l$ZI4GZh+7O_;0rE4bTm+T>?KwH% zb`99QrKSHtc7rg;Y*1MZ8pi?6lYqh$6z-s~1htbvVE{4{6qcay0l5)GgX$Yl-y38P zDDQy!@t|@QRF;C`2UI73;tJGG0=XUJ_X!0B;PZ<>{sQ>{WIw2U2gM;MFE|<*{Rf$s z8xipzw1*I67pOlEs?$Mh|3Pa3Ky3|By8yHf5VVKiQb*^%ftnh)Z2(dS!=U;fl$VqI z{lVj5Aoqjf7=%G=5C)A`f#MQ0js;4uxaww5-H9#-5(8n7I5LgS2Jt}{mpW|XAoZa7 z9+a0rZUohfptK5dBPgwa+G3#a0@ZtkQ zbgnU|T?ne9L2XV@Jb~JSV4Ri)Zf}6{2PiLsXpkCYHi!?(n;;sDGcv&AWuWmtP>+%gOl<%7dVM1@a#ZgW>|TE(l}?sJ#qIKOi|! zy$)(?fbtiJ2BmpWc?hcKLG3uuxCkg+fzlbM`~!)DFer>bYxqEE6Oh)x&rv)uZ2(YN1S)?(aRW*_pt1%e2C5H0G^lJQgu&`S z^*?AIy^|BTJ^{rs2!qlHsH_8xD}eF~SS_@^hnWi!17R2+8;wsMSq@|ms166&3+mf| z>;(A*Y$no}KS&H*7lZod?(X3806}#FC=5XTFpwNv4XiE)(NOiE{ysymFGvr_Y*61C6h@#t1FGLZbq}cD2*RK`3{=K|@;WGQf-tBq1GU>hbqc7@3&&`C z{lW4D1^;0*xLzwP{14iz46*~%w*j^FKz4)5a8MlvswY7C8-zh+1E@|1m4~3aaX@k) zw}Q$z(0Dg!EDtn30SaSKeF0JnGQ+{x7<_L$sB8k+16s=l(gRWhvJ0dhl;=Tfg+S#7 zsO|X$jM#ibqna+AdntVx&oy|a9v_%2EI1} z)K&t87w9f{Q2qeL2dLfwjfaBz@t`;Ywe3K411S7Keg?$_s7wd>9prvc+XZAl$lV|e zT0a1yLFX%i+LNHL0>v-L{h+!F6n>yE0+qEk`uhKMRaL=z{;$z7L2d-4EpU6(&JMgD7Zi7(^a*kw zsLcQ>GeCBN+J~U{2IU`6`T>c9+zW~ykXu3N7j(WKD8GWr8&KK>u|eq%H0J}(H&#~v zL1_YH4k(|2%m9T2$P7>zf%;mYumfRGegR=n{sy@jRQH2uQ2mddPC#J{s%t>u1xk;j znEv%YsNDu?LE~^fZFMxF#^z>AE+Jy z)rTMqYgd5kHBfl~8oLAaJwSOJR8NA;2I&Qr0iganXq*w$#|4#_pt=lXFUTBF`30(X zLFz#90mGp7705hLodl|%L1u#d2C7p*{s&=@9ia9PsN4kA{h&4isJ{ei|A4{?P`d>bMxgWv@;9hl2H6AB59(Kg>U)qIK=lBq{R65?K;sgibOX{03S&^%fXZx8 zA0K2ED84~y4pjDn%1O{T4=C(F=fHu=YmomzcSVBAWsti-aRSDrrQkb*Kye7Flb^9LOCYKB(OWy8mw~$RC-R|3PjB*$Eoo0l5b>ZUCwWK;t?#1_uAt6%_u%>V44q z4^Wv6YIA`4t)O}m)aQrQ`=GiXq!zSK0HhbRma!o}|9^g1*nd#`p~o*MO@q=0DD8mi zI#Ae=i$QJy=|!etY>+rMj87gW2Z}S$`VCOp292|T;s}%;LG3b7A0FfABo0a|AoIX=cwF3nkY7P(HG$$4l>R_%xs-qa@I6VO`Wn<%2jzQE+6UF+ zAQ~Bi%11bMaRHwl0!mMycm%lzgh6c)P}>=l*X)gqz+*2UvqA0y#V;togWA2IbOmak zfZC6syaXy6K;EZfz}#~*8TLa`(a@Ys{cW0 z9~2j$auSrTL1h#OgV;pXyP*C&wEhQ`aiIJGi(?QCssljj8Z-tAO8=nx6vT&_52LZ! zg-;GcJ*a*M&88bbq>Wgz#1@)(E)wHrWg z#fj1Dd6>C`Xpp_`?*Bn{fWik9&6s7(PXQ$cot%m?k?2i3W-dLLBhgXT3sc7fU|pz;k=K7-nzpz;y4E&|k70+|c0 zAB&6sgZj{*@er_{vNG`80Vpg$Wf#cpAPnl4fXXybnF?|XC_H9WRe{G-LG2Mx*$Ub} z32IA$>;knHLG27sdIQZ3fXZ~xcqgbV1jQ{V96Uxkk$lsuH9aL9?{09nuP+bEmOF`v3D7}N?22?+Q@*Ak# z1ZrP^<{m)epn4qCzX#Fscz9S2iPe64SsQ%9m z4*n1FD=2P3=@^X7%)omEL1709E6_d*kl%^HAiI&(f%qT{5`)noHaZ5$fiO%Q#)i=_ zabz0gM^G4o*4BdD4T?ihpBL0$0Ob!*zZ8_-LFz#M0L}4$XwVvYP*{Wf49dTtdAcMY zAMhSHQ27Ze*Fb3qREL7w}bKw zsO|^(3*>K5eGhUs$ekbz%D?Fq^cAoGwhNG~YO!s?z1=X=gYS87tc0<*G<)C8#pfn3Q z3lNl+LE@nN0;1u5gX#g5^`I~aa&r0)VuSJ*C~brC7)o0KR;PpX!PqbwNepBUTpvgr zgkkECXi&KfDnCGdCD7a+s9Xot2cWtNghBZghCzH%FsLj5)t{iV?m+n+lqW&feRKA1qKvrnze^5OE zs`Ej01gNfrVNksR>+^%g0YK~iL2Wxw9s$jV1UNeW2c7=|G9R=~02IF<`#=~J{-81d zGzS7|SApswkh#cpFNh5i17R2&Mk9;C*dRG%3=#)nWHDqmHaT=LkRL&A1of3cbw6m$ z1IVqQwjC%uKysjP1J(N=HK02ZKyeEa1J!|`@Bp0+eS!=?&y& z&^QFh56EEwiepf_1ymk@)PvF^C@q294NCW*G6s|r0#wG}tN%fH2jnM^nIH_ZA5?aO+ESzSKK<)`SeS#_yr8%M zm0`&BKd5{Gm5HD@LdKwS1ep(KL+gK#IiNNpD2|aaC=G$sg3=C14XCaK@sZmAxXeZt zhp}Na$P5r0hC$|m@(PFsm4~3b2^!x7*#}kwtAjz~{?L7Tp!5zJ^9AKIP@4f%ri0Xi z!vLlpMq{hbp<*CALHa;>0)#Hy^WAC%w7!Jsi$P~8JE z50tk-eLhef4Jxld^)aYE1l2j9dIeN}g6l%iTti+Sc)b8fAE+(|^$kGz8B~XX>Lif4 zpfVI>Ca8V~^Aa{Y>2PzXmZA;KxEhx;(Vq)NH z@j&t*Kf?5bXpk7_4qQ;34JwyF^PQmb6jc9${137NR7Qf_4~j=n{Qxo>G%f^c!+`7n zg)69U1FA1TVF5B1RJMZjgUkV85F6Ca0{Ib)p=Sbv;sB%;G+qx<18Tp(`~vbbXq*6K zE@NnkXfMf|LXJe!TY^H=?bIw)3~RF{J0)j?$j$lq{`Hnt554-gFsdyqO%9stD`D2!kj zBo4|8pl}5BSwMLSwoAOz@Tyml#f7qKxTq4C>?{!#?ktJ;Oc%*8vryu4vGsT&3uL7;LK)L#MV2ZaMD zje^?6p!ABO9$LqP!UhAw3aSSvt^Yyu z-k|jWpt`3qJsrHa1JvgO_1QpW1E~ED%ERFLFh3u>wjIpQ%li*H-yc+8fH0`u1C`;R zasgB?fy6-d7^r*ziGeVvz5|63s2l@@Ge`_H-w3KJL1hi7{s)y|pgIXu{(;*5puRS! z&j?BvpuRe2-2q4+sB8n3Kj;`#7lP~ol|3K~D)&Gb)Ybrv_k-Fbpng8cJW!bhVuQ{t z1&3u(5qLfWqz`OHUfzGudIFGrpf&|)OdM3Mg3JP~mjkH*m6f1!3>0UeGzu#FKJrfUK#<=-c>&bU1F=DNf-tE52aW%O$`6qF zpfn6}0|Xk?5m z2J$Cp&kU&k0);oIJpgJO!R9QG)q>a{49a7mcml-@$iK)K6b>K^iZ5gg5(B9Rg%!vi zPxF0Vp0pX#|vxLHPreWKxr1l z2k8Z27#l`|#6apmX$;h60GSOk6BI|Fyb6jZP`&`!2a*SshamUD`~~s{$bFzZ19Ar_ z9f8V8kT_^w7jza0C_F&<29)1HY*4!xG+qWOM?f@a{SGJ(f%L%41+}F?<>YAnKQQ$_ zXzd^9{Bckk0L3SI{SU6Qp!F-bUd6%&m6LEeXuS)n^FV0`WF|bWL1Sa)=Kn(+9l>i_ zK;oc1G9Wua>OplO+$@kep!NV3``~t=$$|8OFkBuw2LN&h$SzR12$Bc4Z=m%*$WG9F zKgbOrzk=p%LHQHZt_R71@+L?ej-mB7oDVeznGf;{sH_E*k)S>kh!4UbyW#4f=78*g z*Z*;G;PqXg{0_?Fp!yR;lY&9z5~zF!)hnPp4Jx-meL+y40@P;#)%~D64k|}Lbv_J( z>OBw!l?k9a6;!{0+V`MwPf*wi$a55l0e`5+7$?*z5mK<0zO5!8kP z`4QxQP&oxsi;O{j1okxKj6Y3KZE-EpgIbaA3$gSfYLM!!|H#~7zijXLH2;$2g0E6 z1GxiaC&+wI{R5+s+2~@(e2_YP7^D`2k=20sAdD^sP@NCLpmqSLy#T@>yFg}v%miUjyB1VNf!ge#uo=blZ3lqj8PxU! z)&HP!4^#$$$_h{&3Mvc1^%aTrFsN(-=>?^EP@M~kXBY;>J*bQW)vKWWP@wb!Dmy@B z45)qtiGwhR4ZSa)Q1IExbe;|87^U@%@ zL3KIE51_ILR8N7*1yEfLDuX~{qM$k+R1SjbUr^lus{cXZ1u7pv{Z3FjA9UUe$R1E% z6jVPWrvXr11xj}yH-YSH&&&j$dx!2fP#A#x1ac?H4Imn%2Q;n#nlAyxE66NRID*PZ zP~RI=$AZ*?>OT+-uJiNr!Q-8vumQDiK>h;R3vxfGyaM?Flny~<8K^x2Dz`v#AiF{K zfx-Y(Z-Uq$GeG)5bu73phxX?|eh1kNtMkEZP+I_WM-g<)AEX~-KgcYQ+dykRKy5Qn zISBFx2!rwnEZ>0mptJ$1M?mob%CDfcUZAiCjYEUN8PqNS)igWGtZ{0VAzgYpC@uYuAF2!q(5HYrFBl-@vT9yA^S zau3KpP#q5%ZwFyeoeyfSfZPIhQ$hmx{67#I8N=j3VlXyHABYb!AA~{f0L>49@(!ra z02(s`(V%n-N?V|LCQw|0FsLj8=>@qLl=eXFOpyOUa-i}H)P4ok`5+ALQ~LRV@2Upn zBT)JS&8>lGP}%|M0fid~gV>-sB~Tt5t^4U)_k+S4RGxs=ynx!WurdTx{(;IGQ27DE z$n*aoapXD|oeh!)&9j5bA`k}kO+fLCj6rb@D)T_~JSbg(_#nGMZUChvSbYz&8-_vV z!tElWJpxk?ayuw}gZi8xdq8O#WG_ezTyI0y{e$XgP#y-21%Tv0_JZYM^);xjhpyKL z%YpbXIiz+3NDoLJ6o#O_6R2DVwE;l>0+kD3v!UjI+z2X1Kw$xDOM~(^sC)+HOHlqq zuM6?Ji27$);L1zU($NoX(4yX)**$wVf zT3Uk7$OX9tROf^8G-xaX6n>!nbf9(;sC@w{^FZMWieFH@1hOCGPLMxA?f~frjq!up z2Ou>d464sSWhO`-)ZYP>ryxDpFen^A?grJBAhSUA7O36^jTeH#7BqeYO2?o&9#p4- z)PU>#++6UuKd8L`D$hXrKs2a)1Jy~Ou}F{`LH+^tb3kboR7Qd7M39?6>OtWFG80r^ z!s~iaT@I?#kuglHxEQ>T0AvrST>#PtG6Piag3JSngTfl*Cy?JkeI8J~2?`HT{DZ;~ z6knh=2q-Ur!V1(51Eon&9D>{qibs%JKxqY(UO{*GfZ_wx2M5J1$Uaax4eC>Y(jmwm zkRL$ygWLndAU?>ipt=DU2GtkneST2+4a2bdAC#^^`4{AVkefj?D1Jfd0c1bOe2|-P zVVFFK24P(4(8WP&K^R?}6h2Hphz9kILE#Jc|Dd!As^>xJ8kFWi@dnBRAhSVrE2!-O z>eGYl1C2L;>U@wJKp5m65C*Y9ZUng%)Q1PPUqIr>7^DV-VPYUQ2!q<^pfm__8%QrK z|A5>B+FJuM7Zk^!Gzp4NP#Oc3Q6M*h`~hkkfZ`XFZb9;(^a)z?3JM2M9SWuj`O~dLW5Dh9nKr{%$ z>t1MI8^p&DhxWHYWe+I5fYgA}2`sK*G$_tNdjmlFLHP$H4iW=l5F1n;gX$HKIiPYG z%F;4Jrpf;RkAefXo8*BS2{i zw5|_S4ubrQT>pd22ek=6S|q#W9!M`JOu!hq zz6Y_Pbw0=spn4so1{D6F@dr@d3epcMD?#o6xd&uFsD1$DH&D6;wVy!k7f|?tXi)wG z`3JPd3Y0Ej^**Sq1>Ic)au=u`2ekn}ZFW#P2Bj-d{~Tm4D9wPz6+m$YG6U3y1@-ws zdO&Uhxd$18+(@nZACxyi?tx*DyFgGvbM37L)TMo@l*)w3WwKxq@?N0|RW?ghz% z>t#@19@;+#i-GnAfH3GxV>dVOx&=_%7GyriK2Tc$;?G;RDXin1t7aY=7Z`okT}TCp!^Oh=RtW9R9=AUJrIo#!_mra@r=O3$En6)5~cc^y=@gTfdT=AbkR!k{z-O1Gf=21=ixJ~JrZ zKzS2176QsQ;Cddqp8#YJDBpwn_%I9-1KEuagVccPe^C1nG|vDs1C*z*=>e$)iG%V2 zhz8|(PB z7zl&wVoy)-UAmyO01`vTpmYY(2kLWz@*QYQA8a4eSOmx&=wdKFs67hu6UaRvJ3wVF z$Zw!@3{nH~BM8I9KLGA<9-=Ojvl&(Q;0M&&ccYxG@^nlo)`X5$Cg4#47 zH-g$LpnDKO=7H=6g#}1ID11O+4zeF)F35i%cY*RIs5}AH%bXD4aq2@<44f zP&|QXP#+mo&w%0O<$Gf&7UJgUU}(T?!hT0QDh3<3gZ19MtXr=?B%jps)hj2`bY-bv~%R1o;tE z=78FaptuIv3u-rj`Y0ebgY<&T1o;~jMxeS9qz|Reht~1f#6fKau%4nK@cu%O8$snd zsJsKMw*!R*C|p2c39=iMw?JtK6yKoo4HW+%F|eCLLjHsL@1TAdXj}y}ZwwmG0htLZ z(?R|Mxf4`pfaF1AEueG+@*k+32nqv`A4tVS)&Gf!|B0&q-Q50z(l98VL2YeNS_b(W zG$stHTVVAMD19Sim^h3^mV>cjav&OnLE^Y*kQ@x7tAUAwXpkJJJ_petJ~9T0fiOr6 zM1yfc!hcZP6VzS;l?R}>1J#wFu@zAJ78LiOx){U;)%T#h0+I*mfz`<%`#|+Os162U z5F3m^=ly~(v^@Z_7luK0!`R3)vN$M>fXso}15<~hCNU9w#sg^mKgfNcv;s=2p!5ma z8v;t>pu7kgj{unkDl0+p2g0!Q2193&4)!=Sn!)CK{K?}PFtD35~D z0;miE)&C$2s{cXdB1jK12Dt%L27}rVpu91P>0AGU!W&eFf#LyFR)W}|atahDAU3F8 z1l4mOJ_v*AS!4_o1Jls@A5;c_%mS5xpf&|)juq5b0NDXbFQE1%avA{5D}&M;sEkAw zM`nZSNst{N3~~>;8^Gdd?E$zN=o|n@4Jhw|+yP3TAUi=~Ab*0`APg#-LG?VS4h5+L zVURySWjf4WP?&)9AY)LNf!eVk^&r23`lld0ptb@i-Glfr^&mSz>Oppa!UyC}kUmh} z0+sckIt^Ey2ond@*Pwb2w091a*FohHC{Kdi4cfaqsk9W_4+YhQAhj?I>YIb=evlm? z45~jsbqvUTuyPwTuL)Yi0U9p{m2IGU9F)I7Z5mLS2GS3*8&sBn>;={Bpm+t9As}%O z28}&{$_!AM2nq*~8j$&*_5`S`0@bx3H^KaaPJ`+|kUgL}4pcUP>K9P^3RK>K^n&Vo zP&)?H<^ZV!)#sr00;oL;iZ4)@g6c_-UeH}9Aa{VuIZ)jVD*r%iFoyN-k?VUjHcSsl zAE@33xd~L>gZf0Ev;RQ;1KA0RLy)~73}S=!xq!+>P&k0<1W4C?4w@SWm9?<; z0;ulVJ24@R@+1 zbPa01fYJ}ht)OvYSp5%5qaX~cpI|gd42EH1*l3U%WN{cDM#JPld}NF)4z7ct>*YY{ z7!-#f8Z>SW(gRZqqCtER2D1|q{)5swsQn1aW1zSKjm?1ite|`h8oP<}^aP*p3sMiV z2UN#{Fer{;G$`$Y%miVOI&=&Y$A+<~1Brpm1GybEX94CXCjJNM2eCmI#D=*Al#fAq z43tOG0|LNj5@m#hfcp-hya8Ho2+CKWbPCF&p!fr&V^F>Y^$S31K*rb zgUV1)JqfDkVPYT}lwLq}HpqUEJjkseHpmP!#@wZ%boAgFB(s^>uFfbuLTzk$w^ z0o9A3x*wG1K^UY5gh6#PsO$pO`Jj3YRKI}AF<6-mG6z&{gY<&RMi3j6w?X{{ke@+q zBT#=8G+qem=Y#wU%I~214^(!5$_UUp0MJ+;sC)vs12!%Jav!KH0f~Xy9w0kFZbQc) zcY^!}G7B_z4;pI(r616|CCI&?`X1yDkU5|*0EHQ79269uAUi-~EIHxf;PDQSIiPY4 zR8NBHOgM(s`)D-CJdhfYdJqP+k3ek;kbSj@iT^?20ghK|Yw(%tpzs1=kiDRI0Hrrj zJpt+~g4_u*3sld5(l=# z0htdf8$o^s#V^Qhlwd;jKggY+a0K=BK<>nbLG4`F_&>;fpu7Sq$3gA|r3p~F0;LI9 zT?C@BVNg8CFMV8J_wYaK>Le8c@b2`f!eO1JPb zR8SfRwFy9F2WUJH6n>!c9AqvGgVGA9TmhvUP?(Nl`q%%UGz^L}Q27OlKM)3$OQ3iG z)o-9W7sLmZZRi*-4%)8|njd#{{SWFpg31Qa_%R5B%5G4)1I0OLYyecIgX&gL+=J>$ zkT{49s((TCEU2smrBRTZKyn}q8XExBH8A&p+ySy1gh6b47^DW&=K}c)Ol|9Du=)tp)&}K4 zkb6P%>!7>?s&hbf1V}AN9}I)_XJ`Kh<#&)8P~8tY?*_Ej859(*Xpmk|{DI0HP<;oo6O?8^W`Oz)AU}f23{ZT6 z^n%<6YJY&-1X7EPL1G|tLFEmojRevI>QjRBfXoJ!y&w!~dw}?$`Wdul5ggv;=Kn!u z6=;nhsLltKXP|L(kbgmH!5FE&2iXHs2g0E6fYqm0#>nCzHmLpu zVUWK-<5!?M5LEAj^nmIm&>nn{TS0AEkUEe!E)3F_=I;;gGlTlFpmr^&tOB*oKzc## zH;_G`F*Hz`2d$w4sezdXau19RqCtEZ2Jy+kF!MqEdQjQ}`2%Do$UPtoN>`x1J_v)< zg2t&pWe_OcfySOdbvY;xg5*IMlovqbWT1QmO5Y$1%6lL^ptJ`n6F_ZLP&*JL2TGTq zJPryEP&x+X5m37ql-EIJ0qC48(6|-IZJ@FObcO~fAAs~CV~~BIa089ofy%E@O#k{H zRQG_&XHePzmARlg7*yAR${$d@2a0E0^(#mnSPnY&4^j(C1E78)C>?+>sB8m`dxF@Y zx(`%uf!Z3N{t&3_1l=zVN^2l_kT|IR1og4}?Cs(8Cn(K;+y}A`jIpc*1iJ%T4};Z! z*5Y}1fbTj7nFsO@2!qNekbR(X6=WvJUXb}93}S=kjX~~&g##!IK>A=9nGa%vFh~wW zgX{(A#oE?2HwXI%G&TbAC#Wq9Y8Qjb50Jf}x&~CAf$BFP(Q`pzsEjqhPf~Mc{J`LFz!}f%Jmh1;QYI!)VZ00>}(dn1lD|m6d_dLIjna zpmGfqpP=#%)INfRHK@-ADziXw3@Yogn?7zA{KZsJsJ>$AZ!T$nBsxWspBWeMwNffWi?}|A6LsK<)*#EkJIj6ocx2 zP&|U#BOpJ3`syIRTIlNj2c7k=tD^EBboMW(EdUb7hGF$T$bX=?0<9YXmHD8w4T^8j zxeuVa7vvvM-2|dR7?};?mH zzXhE~1xi<-dJUupq#lGpW`JlI2Jt~@0i*^LZ=kXYw3i>0E!A1qe&2%s?lP#q3R@1SxO)V2ck`$05l?jIEHAid}q)V=_fGa$X7yfBLC zU;l&B52&mG<#AAY0rk<5>oZurij4-9(;y70_d)3k#0KRRP?`h9H7wnM+RGp|s2vKb zt3YW4R8D~M3}{RkR2PCUNDnAYfXo2pH&A^68V>;RL1uv50CpR4J&()=t>5?X0I$0T zxdoJ_LFG5d43Iuh`vx>N0ZQAjbPlo;gh70eI#AvQjTL~@!!U>s!{BiPs2wmd5Dilc zk_Uw$s2u^y4mJ3(wv83bzgfcnfJwV?I|s1FY^57Z_AxgVqt)D8lL z2dE4O&0B!fg2S$~6ukc)q!u(@016LKoe6R;$Xy@|D#u`TD5%Z{-LV5Q4^)PO#zaAJ z2Wq>5(k3{b%*_6S{02I|2$YUMsjT1d4x< z7$_Zs&bX@Z&Mc+@!iJIMU~CwTO+B(0NF4}+;sn%|0o941dLP6FIuN7> z0Kyom%VKgXDf${<sL2(JfpmYI>YmgYI9D`wWK1>a$`~;PM;Ih-){6A>z zAE>VcD*r+KZg5-&1pEi3D^QsMvI8U!%2OacpmYH$H$ieB^&oYib^yp7AhmD|-IE9B zgX(?In7o_Ye^7e@WFAOA$Q)343QE@?H-qYFP#pv+mqF2x*OylkRCAY z;sT!20J#Iy4+de-90zDD848e8x(e+JPnE~keQ%8{-ClKRL_CxFi<`PVOX6Cqd{$a zP<;h53#1lgFUUSnegt7qo&(J(fa)($`3>reg8Hf;J)rs@WDcmT0F{HFG6XaZ0IHin zYC!!EkY7OMBZv=bTY&0oP=5fF??L0Cpt=)eC#akNg$c+Fpn472tspi?3{+-<+ynA2 zsICUN0c1ZYoIn^<=7IXiAag9 zy7w03M^OC%iWiXkLG?eV{R^wZK=l&1P6gF<(0UM5*MTrd97Mw~h!4WZd>9)>gXBRN zlpaBLfZ`J5Cy*FuJsv2Xf#L%+Mgi(`fa)qx{DIVh>Q@*BsfU>fqCtFQ3~D2R$|ulS zTA(@#ln+2<63A>&egNH-2Wk_5>N!w*2b3>BeOZuyLHP(|AE<2!%15BK5D0_PD+q(! zj17b8XwbSzWI2#}FiuVV4_dnbY72ncil8zs+}Rm?)*h(L0hLFfz7@!gp!NvJJs`h= z^nm6i>XVb<`-wn)0p%6Y_#UVp2g!rVQ&`#s(I7KG>rFuRf$Rd67ohSK)aM8J8I-3% z;Q$&-1eN=syS+i>ILIxau>nvS0BWa$@(@TbC{G|`kXu1@5Gc=&V*1wopzsFODSkFK z;JGbO{~A{R!|Gd5oe8V+VKhh#hGAkb8dSf6=F>s_GEh8&(gdiD3W|SlThG_`KPZ2I z>RFIHD4&AlLHa=B#2_&k2Bkkxc?e2(ApM{^9h9y?X&j^W9I0BXBpm|b|8$e>9IuMlCL4E_VLHm6`kQycblT zf$DcqI|7uJK=mT1?gNbzfZ7D0ItMhz0IJtPZU)uuFbr}ZsEh--8PuKu@j+}54XP_a zbuXx01mc6j7F5@Q+y<`uLHq9W^1$mGK;s0UdLLGAg6ioRm6iWN;RGsEOJZaHgUT;Z zT*1--sJ;TZ6I9=W&N>3cHQ0~A!T&+?q98j#_JHbrkpDpO0}3CI8c_NK#SJJtLGgo( zLE@mg1C)+HQqph6jWD%(gmoT0Hsk-y#h*yAUA>3 zfYgKPIG8yw^FcJS7>EtZ6Cm{<49eg3Mn?ZZc@UJBK1%`IuewQKs2bH2gNt2 zOu&Xg@*oUT14^5qvJMv4AU3F;0;N&VTr+6g8C3Ry^nlU}D9wV#r$G8Z`3IE#KyHEQ z2hkut7@M1e&!PdPOHjQ9qCxdG41?-5P?`d%1*KDv8c0_tZDwZRv#&tz z1KA0x13~2$s4fS&1=M~3=>dfW$UUI=0JSebat_AE|3PA)wi2kV08$64H$Zh7C_jVp zF^G?hL1jIt-U8JnpmGwV2NpgcGePbE*##<>Kx5IMauDPu(0XD}-42>31&uF&@+GKk z04n!Dn&^S71`~XzWg8T$h0~UkcO$-_v0fiZ;z6Ql3sBaHyD}dY$8b1KF5kTgH>N`+h zAKdQA&HWEr`wa32C=5aF0>wM1z6W7Y84ALn@p(`ff%+|=J{!o5p!N*N3{X7{G8;Sb{Kz4${4U|SfbGINjgXZ}`M(2aX(ZyhV5Dluo zKy@;xeg(x5D6N9}Fd(;s$`Vj|293vn>N}9VptcmK9t81WW`oQDv0)g4pOEk$RPTZ6 zMNmA0;s%t)L2(VL^FVbsC|*Hn29yp#eg&~X^NOHy1C+i%`aty`Xl@(SrUR7=ps)v( zFQ9Y-YNx>53@U#?;RgzP5C+wqu(Sj&H=y^Xf$Rs#f!qU92hsy-e}Kw2P#p?tOMt=$ z6gHrE0EH9C-yr{iFvw3Jc~G7Lo*}J=g>pNIH zgVGQvPlDnaRF{F;k)Zk?)Xo5{`vbKJKywBl^FZoA=(AogdnLr>vfz*Qh2de);aSf`6LG?eV+=cZ| zKz4!L4k{Bt;SQhFO1 z${@2r_JQ00>cfHh`=Is@s9y=Hvq5nNG806@Fo+LoQ-I6`wF5!n2r6Ge^)SfaAa{b| z9b^ZnYy{O6pfMs)`wOH7WGATX2Gu4O>a!cd)&M9f{?}Gg!r%Y5xBp+4m-io32Y~zls>eWM@SwB`O4Fb)0EIuO%>=4{ zK=mz*2C;ErbTuG8sNMp#Q$cAJqz_~+Xj~suW`QuMEehI)2Wk_5!VXjig3>)mFQ~r_ zqCxtQF-Q!Ck;OsvBq;5GFerXNc?XpKL2W~jpFm|5C@eww7&MOtDn~%&8<=ly{vRX< z5<^ZCpn4UALFoe~4pIZcp!OK3UIpbR(6|%GKcKP;R91oVI;gw?l{KJt4k(?1@)4+w z3d(z+Iv?a`P?`Z@P+biQCy>8D{s7T1zk&FmFafPO0@eGVc|lN`1cepI9iX%Ua~o)U z1Jq^*rBhIT1IdB>2r4H*c^T9O0F5(%@&hPsfx-pFZ&p_SL4632T9E&c!hXFzH|=7ZY1p!y%w-UF36p!O>$O@Y!mc+TC;4ZLm-v>pkRS3r75#h^S0vKv&U zgYpc>evtVfH-Ov=!yq|OnFX4s0J#fPPlNpnYV+X3ptXj`^5}e+97r6BL17B28$s>@ z`3F?yg7OroZUN;zPL zT?xaWIt)~2g35kS{s*lpqg3sFn#VM%%2bDXZIv*4kpfPn28)Pr2OazTdgVHm| z&!D;p6uuxgg4!aWumFwGg6a=YJp!uRL3%-TKB(;giWg8Ag33)$Sqk=dbo75vegVxp zf&2*yLr_`+nFYciKFDkk4Qd;J%mw)aR1bs91GiD~^Z$e51T>cc>g$8jKPc=#ZgI?3gmxK8x7<}PLF)lP81MQ&X#EfBJA&*0#WQF;2-GeE*#im-P?$AkWT4zp2TGHmu!Uh{ zJ~A6752HctFHo8V)fu2V85F-DHmE%c3PVsj1=W8bGeC76u6iG49!MPsgZMBS#0FuI zd7yF%6t|$d78HLV8kC+veg&mtP~63Md4bafsBQ-39njbZXpA0|=RsniGz!9?Z~$RY zegWklP}qaw22_87_OF8Ka!_9Yw4MOuPmudTeRoj$t4mG&4{G;-{07RWptdzA--2;^ zI(UsGDBXbk3%)N1w0{7)&I05Y7zVXPL1uvJeo)!~&>5Fo+F`Com0a3*f_`J%An_|3P&usEz~O zu>#5yAibbC2eoTK`4!YZ0F8}-)^35t9UZ~-KB%4s*$K+mpmH0zdpQJaucYm1g(Px)%l?DaZs3o+9cpMPkj7;P=6dWX8Jm^q!DtX08^$IN8k+&d11QWu;RlLqkUgMu2CDZ#VGfE@P`wGl*vus)2C^4~L3Jd^ z3{XA=rCm^c3rg#tv;#T^08}S~(mAMY3{nrOlR@)4AblXeg7~2J14thnXJq^b)z_f5 z5XikCHi(8{(D{2XHb@UhKL~^7??GmQ%m%enK^Qa^0csn-!W3NR$H#-u{sXxOgkgR~ zW`q0$DnCGZsxvPSyjKR47eM7d2!rAeM1%4SDE)xi#GpMLptd8Z907$nsND*x`#~5~ zK7ir_Ge2htD1ApM{+57eFkjh`UPf#g9LG}i_yXFzq(C?2@_A5^b^;s;b_g6lv} z&;KAAR0o2}QV<(d|AW*K#Gv{gTK9p{1PFubSx~zI6z8z|9~9r9HUO;50HrNZzZPZ> zsN4e8g`hGOq>mH~8iNF-JrD+!Juowo-3}55`46N9H1`3j8$fjxD1U>*sfj^h2(kxM zcYwkf)_(xi<)C^HJVskm@*k9!L1i2$Pl49Tfyx)qSTSg96;y76#6fKZkRDL}1z}J< zfs8@rKB%7pQU@vzLE#E&3xV3;pm`RM{h+!FRBwXT9fH(@%2W^rm7Sn+9Mty&wMRgC z6Xb4CeGjVpL46cZ83-!-KxHndj}NN5KxGrC-2kc=LE#80i$L{1$bF!-10a8Z;vEzY zAhSSm3u^a(>O_$J$nM9+2B`tfDS+$(=>yeop#CK&O~CvDax2KMpfy^cJ}#*I0r?fA z22_TF#$G`EuCkaI@Y-ikeLt(J>OZKy1epo415{pu>P1l4gX(-xKNi%d0?loL#*#o~ zAjn*hnJ^5p1B5~C9#9y7_J)JTB0ysZpm|e}yFnOK*MjPDPU$2AK_FgJ>8A z@sTmIIH>;4kBkJbH3FquP+A403s5=&f=Mzf&2l|3!|~ILHa;( z03Q3#&IYe90p(}V7%g%+3(ChJe}d|MP#XZ0?m^`RDDQ&G08qUT!daoA|3T#hXw3sC zAA-^u41>%Bl^LLN9$gNk29!=fjer0~E)gv<@osL1h$(4Xy`4 z{e84PG;&=EQVZup>wi!g4=NKu7*sBT#!NwWfa(EIIs(Nvs5}Dc1EmL0{}gN=)GiPk zgh6FDNS+uBs(V0nKgi9XdK`4;56FC67*t+?+9sg%3vwH*ZwRs%WCjXG>dO-)4r&8| zFlaslM7z3z#~48V0F9M_+C89f2GtRuavOv}{ZJ4F^$|hix1jt7>Vt#&AE2^gMtS*v zP#+jn_k!vxP#J`bL1N&#zo-a2)(R?jL3KZ!b1oewSbr`6w1nC3S?VvGsP#Xqh2Po`8^C+Nt4OC8o>VJ?P zP#X_aMuO^3Q2PorHVX1L$Q+P7$j!)pKxc#Hp=TC>`u(7`52!2#jh%wR5)^MBj9%x1 z+MS^C1ym1$+yg3~L3Jr;j2%?Bg6cm|*n|2)pt2HFrh_mjoI&P;+y*KeL2XCa7y`&X zWDK$w?fcj9NeN-T`L2d-q`5+9ck3r!EvKv%afz*QB25Mu?tf&B=H3SMr&{`PK z7!RmD0*ZT(dSWmr-GDGCPC)G}P_ zBo4wLHV7lLLH6UqAoqbVNFGKbvysJM;vg{)289#IUmdx*;C?@-EedL*!O8_t+6KiR zs6Pa1uYvLas9XlM4M62NsQ&?4^8-p_ptdS#9tJdj1{&i5>4jmC8K8Y+AbC)F2k~KY z$TTROfzrw-9=N(6R2PHlB2XFt#XG1E4yp@4bvlR!VGtXX2SD)!!eBnAo<_nTF%X8y zgUWbN+5wpfuK%5!!21h9bpXgtP@IG6e^8kLDyKkW4`98Z@p_QCuCCzwT|sp;s0{$h zhafe`=?9q&G6PiKf!qr!OF{ZT^*_i>APh1a8H2w4S-Dyq!tN->;Q!^$h{!Hfa*X{e;(BC0`+M@1gOjdjnjkrrl5KP)W-sq10Xv<wi3V{(|a#5C*vq)J6fh733CB9SItT2ZbZD zogg+i4cOWJ2iXDY>zBvJgWF4>zCNg428A;yj6wA=$Sp^WfkQivZ1(aq%^%$t_2XZ4QEf9-AeR)t^g5nF*-U00q0fhr7y@B!L^gWfzk%3eE{+Y=!{?38o*d@@Bg6quS!b#4+=X_y#{L6;GO?>aQI&f9sdWl1wr8g z@(;*9P`U%v|DZM@$e$p0g6cX@Izz^wdJ2Y-#nIUyzktL*;RnMYJ|PS;8>9wIL(kX& z^}|7J2@nl37gRTb<)P;ifco&DHX5jn1S&T`>)1f)3S=*6Eec2vXuKX2UZ6Ay3R`6T zAp2k#CJy5hqCx6G7+oDMF_<`v2DuG{VfsPhpl}DJF;E+(=7Z8ds2l;UdjR$4L3tY_51NGR*=lYMZa0GTf-tB(0LtT_HUel3 zHYlBe#9V*2GwKG`WTd6 z@L`Z15C)|i5C)kCDyKp53`#?w_y^Ui$Z-uSBS7;&p!5f-BS7sBkY2DoptXdcwFIuN z|3PjHa&r0)TB8K2r$Opr7}Ul9^>aY=HYnYJ^n>y$*bI={kucbOFh2CY0??TqpmG_M zE55zA4Y@12!vsL7!BG3;O-9IM*wP@fbs>XPXrpP2Gt#)um0NDxB3o7?OV*#M@8B}k9Xiy#pm3N@D0a6PZ^8<;4+HIh?1hwZtZ7fi@ zgTf4CA1IzdG>8wXpF!n6sQv@3{{fYmAU}iVb3khxK>9&$1=$C312zou6G%TOd_e6X zP@N2lJ5YH9s#8Gr!2APB53sQtP+1Hz57duFuTMc`8mP_%&FO>cHcK>3?p!5z}gAHmAfa+;tF=(wLD2zaE0L3+E`~wvJpnL#o%YnwPL1_x)F3|Wh zDEvY028ACe>_B-AmZv~vFsK~_>SKe_4`|#QRNjNmZUkYx^}oISe^CD)R5yUq2gnT| zb3tJMavNw&2$b$Y{X|e33sxtg)8IM^%X&4KI+#2%jVuRa!)UlV=v{xH`Vcg}1aT;+HfU@TWDdxmptJ%?v!L_@DhEL20;o<0%}0X90zmZx zM%@nD`(SMiULOoH3lwG`bCEGf4AfQyttA4bJ>>deluh4u0H~}6#Xl%cKy@IfKMpEq zL3JM}enB*d4=Srb^(mMQt3RPMvKWXB!k{sAP}%~O`Jl7}if>R_0o8fPaSU3E1WIEd zIZ(L)vJ++(j0V^1o}T|)-+yinuGKPtP)PwYa z>Sa(G1-S)eAE;ag`yIJn2eFYcQauk>i!2YldjMoFC@etrCCDz2-Jp39P`(1y?VxfR zRPKZN%%Hjs)b9n=VW6=AP&o>!AHZVJ{xX=Ioee*`161dL>LE~n1=QC9_5DERfXaPv z`y1)Z0Z?55>c4=>08qadl$SweAgJ8|8e0IJj|z$}aDER8`VZ>UfyxR{yn*TvFyG(* zKj^%AkUv1-1+ouR{)5_kpmro^d;?@YsE+|Eqd?_8Y)k?a1|ai6?!{OCgY<&>>7aTa z6n>z%0hL!E8iqk;fzlZ$4T0)%keT3qcxfs4oIg<5g2EL32aq0+T_E$j^Yj0M+Fzjh9)v;d77zy2y&!SWzEM#7 z4-{`8J)kxhhz|-skQ$H}$Q)uY$h{ytK>h`V3#e`d&9#E^7bsuB+84crh2Z&OPX3V#Cye>OxRi59;fK_H^V$MuO*aLFoY$P9U5c5rKdFAJqTP$pP>G1C`|<^FjF% z)aC)X1(YU0?I}>+28}0y>QqoXfYJpajIIuy57Lh;1_~1pAA~`2Aisg^1o;!Rh7QCB zwGTmQ9@HKIr9)7?4r-@>>PV0t7_Lc71m6(|Dsw>PBBkGY}sXcc8okY8!y+ zT#(r?dtqk4XplI$7-j~DhS>uOLs0t>Sr2i^mTO&+8kRAz(H3&{LYOy4>mIlMt-C#Wm}#SgL3Il#UxCUo(E2Sx+zAQ`(Am4-{yymLgTg{^UlcU=1xj-uyFltd7!>}X^arZj zKxqaPR-k$TbWbuUtU>iX2!rAnlukfwV(WjrkZe2auT{GeG@&P}qUO9F#XebtZ@p!k{t>RQ7=KA}BwB;sB%v zhC%jUDU2DuX*gX(lpn;nc(Q^9v_g7m@6Yl5Ep3vw%HoCX|6;o<*5`4;3C&=>|N z&w|>Qpl}2E0YroHAgEjcwedma5y;)3GzprQ1J&!GFah}oR5pX=fI#U66knkH1!^yW z+OHsgg4BZg1)#A&SeXXWhmJwz8))1FWDdF-!n4Tuk;L2Q^BP#Oc(`=E3NN(-Pe2V@7Regd_- zVRpl4kQ$KvpgIv`9teZYL#xZd=0n>8Ah&@qSgoroc+MBZhGCd~WEvy~;)7@q2C+dH z#0Iq`K=lA9eS*eNL41(k$-*FaL&yF>ZUp5eP`Lp%)6ES$mjMbNP@N4b|3UQ;s4NE6 z8=!m&sw+VCH>g~JVHh9Op9IydpgJB@zJl1GHFltS9$cps7J};}(0&V$7|1^$3}S=q z2k8gxEdrGxpz;#L2e&(Na=`QUpfVqn&q3{cklmm*KPbsF8 z)pa1fpmG~zC#YNlja7ic3|41?>SR!T3KIjF4+>9E8wFH`gYzAUA;G3l!dXgvZbpCS7PxIdFXv5%C{1{tv28KRP7e4iWl;MH6!##zLHa>y8 zfWjVl7^sd0*#)9OZ6DA$3&>nh+6Lu4kl8Q{vI|u2gYpT;4AjC2A#79 zr6o|`1GI+-R0e|V0HrI?*b>NIWDGJJWIrg)faZ+Ac0%iUxVfM@6=o-NOaL@?57LXQ z2E;~j4@?hKKe`;44|OxBj0Cv@bXFDUOaxF~2ZaOC7-k1_ya3b=0@Ya{GeKbs3I|ZV z3>q^8Kst5vZI2^%p>F(0+7~S)e!pl}(^J9pp|>e*-js z4-x~J52{B&^(iP0LG1w0{vS}E0aR{+`UIf>9#po2#*IMk0I3JL0W>B6y8{;#ZlEv&nFGeqyL~`npfV2> zMlkn+>N-%J4Vvc%wGlx629@cs@WDx&nf(WiiGs`lt!D?>2^voTnFqq4xPoC2A5_nS z>;c&iN}Hhi0%RYk90r96C_jMW9OPb*S@htB(40U1M263 z*4lvl4dN53|3UNrpgr-RH3Ojh1hN~{ZUng>R5yXzAE0&*sN4tDxuEa>)lZ;wgAIe^ zKp0sL#s|?b3`)_zC@+D^Dp2@>(mcpM(AW?NgV-<(iZd7+l-@vm z5C)Y6pz;xfLFE7lgZeRpfCiL5uknuNFS)}0ZNA;vq0)VegxI=ptJ+B4}?K&2#^?POaasm0)-7|Oc3M`5C-`P6mFn$0Mvd0t%U;dL2@7r zs@Fm74p4sv#3u)X#`8eo3F@>0%a+YSKb4Ol#a(jj{N532h>bt<-c7Ay{}UqNXW z%!k#bp!NRd=HPxgXl@>qjzH-L)ZRdkbC8{|d1_Fa1Jz$J`{3q6?E%?=E{4trslkOo zYC#x99@^FbwL4&W8?-hbRDXlig2DifL3KQ+euvQ@HV7m0-Q50z%mVoflz&0xAIKb# z7${$Z>;~mWQ27cf=Rx&0sQv}jhoCh8p#B-Cz5&%IAPicw1FC00YCz?xueCL}F9|9? zKJR3?DRHBdbODi=ZZJ*Zv)^~*tHhoHR& zpmYJM7eM7DNG+&-0hRBdd0o)DUywY=9FSfR4eA?!%3F|KpfVDq2UJ&r{Zvr!A5>VC@}nyqeK>bgUITH&D!TLaR?4UXibjB?x9m2u}8x3m1fXaJNT!G3~uw6w(;JpN(ctFM= zJ3$!aSCBhE^&3bZsH_FK8x%I6I0A(WXdDI9{(|`dM5AMn86dZU(g7$gKHk4%4PkW^sJ?}e6L1PP` zb}ML10F;+NV+5eQ2?__0f52{rtqV*_0-pl}$_JqI1Bw^WJRc}8g2wzoZEBF+p!5Q= z8ySPr5vYC!l~16y0lFGc7$d7Eg$?o-C@p~UKYAT7%BO!j0F*yKZAn<1g6n?|50tZi zK=lcz?t<0Fpt=i&!Qx2uGFTi||2sQ__tb&(fzH$e*#XK2pgs|LT!Z$Tfzll)kAccE zP}u>}2R0Agd{8}$MGU4E<|Y`8E{=;2vJVs%pmYyPr=YersQw50A5_1Sg5BJ}^)tu~ zpt>K_<_DP#%6Fjg0Fap=^TG9hX({*~T2Ox%R2PHFYj7Ezl?6W26I4Ef#6k5ps9ph; z7ohc2pmGjWMu5r!P@Msq2M759lwU#ahviEU8&vLq%05sX4;q&Ql_j9DVo+Zd)E5Jd zO@iuUP@M^i8&Ew7>cfJ{6i^=n)OQ5c9UvNHA4m_VYys76ptA!&?gRM|RPKZ91C5`6 z%2`l522{6$+A^Rr7&I0Oayw{_5hMp%hX|^NKx!~>P7X?a3vw$6gWL(Kk74yb$nPM3 z!Pa7f`YoVx5mfhrJ{9|{UTP&x#;5mwg1!U;x$!WGn~1BEvz3_yKYP@Roj z=fl{bdLLvrsIHz;RtDZP2eJdyJ_5C&K;<0BTu|BuwWUCA2i5l=e}HIY400=|P6ycq zs?$L2WKi7!3R94qK=b*aG9T2=0r?*kH=uGFlpa9-0jUFFQ2heZ3#unT?F3LbgW6f3 zaE9ZoEbtu*Ah(0mf%^EMvRL1M`DKd7DptpfnH zLE~?r z@&JTE`3FRUFerV4@)xq(L2d?}GXN?_K;j@fKv*V-a%y-sLu*23qbu{kQ|5&t}{Vn?$Ejy zE(WcKQTWjMA7mD&Yy!!FFeuG|(jI7iIl4PQYsx`+7*s}p${J8U2GwOCePFwx_JY{R zVjw;YV-v?F22+ntgVH6)?;vqdSb)lGQ27dS3&Q{im2s8!JDpz;GWb`PqDK;;mK53097^*N{<1=R(hG85!BP`L%_$AZiU zm1Cgt3sf(GFsR-K*$om0m0O^BLQuN~l!ibUWFM#;1l6~o`VLgDgX#cKT?#6rLH#38 z7=!wT-Dv9@L28jP$bL{;2s9P|sx!fLA9S1_R9AxPcu=_xas$X+pz<2z4^Z0xwD%8G zPlDt@Z7)z82o!c8w}HYGM1$N5!=SneBo7KlP@4zTW&zm;qCxdMtj>qgATiK*3&;+T zI#3vb+Rvb{1(nU9_y*P6pm+wk0TdRXwgk){u(}^KZUfp62;zg{1XMqQ^nmgU=-eSt zI}y|e1ohoOegf6ypfm!iUqNmM*#T-(fy!)9`URao2nsLISU)IyK;Z#u&w;}dx@QCw z#-O$r=$t-Kegw@+gT|FWduu^vSm@~d2i5x^Y^|^VACxCS_F==|`ad`KKWO|PG$swI zyFl>_N(Z2@0L29;en5N>29*n-GzSV3P@M%zyC4i>!)RnN5F3VJ@}RL1Q2qhMJ18xJ z>Nk*?pfLeZ9SN$pLH2<3f$Bg|{R^T&d~^&m6C@5}gVclK12ldB3R_TE)E)x0M?h`^xe<)h)BmIJ)6&4}{y<_N_k-Gkpfj35egn08 zK<)$i12ldDawC`z?e~M!gW6Ugb3t;T{0wSefa-lv+=0R$l*aM-10)Ah2coHoL1u!= zR8U!jUjC2r2d*sus`o%~1FEY*Y;b)C?dyWdFi^b)s<*%xTHk}pZ=4u<{vW8H3(7Yj zGeGqN$PQ4s3##kU;~TUt2-NogmBFBN3ep3%7tKD97zkst8zc_G=yKS^(AB{BAhn?K z4>UdpO8cO(GfS9pc4=VdX zG^m~g<#$lO5mcsw&ej37A3$XsXp9pSHlX?e)Yk{;0bx)d0%R5_>_A}*ayJZv_@FQc z^#wq6S^;#eFsQBql~bTP3DlPdl@Fl48>kKdmDM0VXgnX(7Xg)DpuRAu?EorsKw_Zs z79p|r?XzUVX7bx67aSn1bsLTVI53097Z5z-YM$ninsQw4dt$^xJP+bbDmq7Iq zE)1%>K=m1@js=AgsGkk0LqTOJ$Q_`t0{I7|4pbL|+6AC+0ktL_!V#24K4g`f0$PADg5C*Yf7-T1m zjg1D$gY=ZJ;_FghB3s_3c4?kQ@ku^nmUK0{I)1pFw^HwO2sxbI?2t zsQ&`$bAieR5C)}nTz;UnI4F!jc@b3BqnH1q{DG_gL1hOhZb11GR6l|8E~tJ2VNe|g z5(Cv)#9**mX#EeW??B}V$P7?h0AvR!AArW^u*Ek_4Jf^W^hAK_Tj-br%xxIHNUg4_$LyFuXrat|mxFfgdE4{|4rhO$9=K;a51^FVq)`a$Ej zVEaL94cy(qbE=@RYEXRzssljv0;qlfVNm`B)uW*H2dFOr>c@fF2B3Tn>Vt#o0#I23 zs+U1y)u8$dTmA+40TkAtassq(4b&e4VNhKGDlb8OM9{n-sN4p%b3hohCKyzPf%Jje z0H8TYP@I9*m4n7ML1hu>{2Wj|2Du+ppMvUEko}-`9%u~{$X-yL0&**;?g7CVq>Uq%E0;pUCwLd`pDv&wT%gVs_>Vd)% z#0R+#RNjI1F@xrvK=A?cAIJ@$um!mnf3`b$ZnAPVHhL^ zQU~tK7Zv>n_3=RMFHl_vaudibP<(*+pgtU^&kkxMfY$1P>UVHt$1%*AxeW1JyN?)M%8)#h*C|p3{4QdaA+zgtx2Gz5mx{MqQO4p#iF^C4414^49 z3~Hx>XqcHGIc#j07&;BAV?pBxpt>5=t^>Il6h^o(NFFq=4Qi)@(if=R25L`%%mA4M zYFmQSLwY*+TyButh{2%n0ksoA?f~@*K<0tU08rS0=JP;&kl#W5d{FuTDqBYJz}5M%um{y2pfUv%H=uF{R0o3U zE)Wf?w?J%A84t$Lx)&^l#D?*~G*bN!Di=Xz8z@bJ(jvJ1=jR8$D--4h5DjW8gVce_ z4A7h>sJ?{Pl~8-Yd?*`i52((C^3mmB^628od>9)=t&0m}?Sq@!f6#b4C`>^92DuFs z9w4=F46W<2@nK^Kp#CPPtOJ#+aCOl7A5`{&+yE-4L3ISEJ^_u1gUV`9od)VNf!g$- zx&m~5EvQ}t)gz$2^q?{pbe1eAZ-dHIZ21l(2eJcHHh}6FP+b6OOMvQsP=6KF2LYAK zpnf8#o&u=@sR8w;LFR+lp!yXwE&!rIZ2*uyP+18w57cG=)tL!iUf{DoLH2>_El`^Q zV1&CpfVja zh7GD8LH%n`y9pFVpn4TlR)WSNK<)swM?h^CP&|UtAE;aerFW2fLFF1~tOHceg7ky* zg4zxsyFeJ^W@HR<3y2S@!$ImmbuXx&4vJ?`ng#U%LFR+nPar>m#`QsN2bm4h19Km! zeE|wb&^$e;O$Kahl4?5QfWCy7J z2e}R8ZV($}AE-V6?e7J-8)PO7gVq9q+Gn74E-0OY>U_{x04R(=?IqCuKhSs+sGSBH z#{k6_XzU3a29N)P_WyzQ4+IAO2k8T0P`wFitANrBXwM`lpM&B9253^$ei; z5fm1rVo?0!!^q}=)RDwbNC4l{2TEt4I0d;GTONanf#gB)2r4H)=?OG$0IHiodow}x zHz@8v;-E1wkT@uPg7P@1zm64y_W7rzfad`~VFar4LFzz$0FC2;@-S%Z3si1`(l)HG z1#%B4%)x0Jdgd2M3>ky`gUrXr2B`&=#~>P?I%4ENWhtmE1i2ZM7Dn;lsQ*Ff7LUq@eT$(hqVA z$Se>I!eFzZ^*uTtn;g0tbUsWEvN)LS>I!xIM)Ex~B$oHyo%A0IjI@*XHYLE@k>M^O0#s>?y`2~fQaDmy@BGN>$p)&HP+17t6V4{D!- z#ymmw1E_uj^(#Q-AZT3|NFB%=5FaE5>RW>9FpyoKvK>^{fXaRl8{}7zdRYArYUhB& zK=nVUuLLRwL3Se7|FHTARCj{fL7;E}VNlrz3MWuH0nPJ*CG7=;Y>aTN1(6(g%>DpLF>T4?A%=N-OV6(gX(`90|RhBALJKMy9rb$gW7|jwg{-rL`wY+ zY8Qg)CeYY3$jzX<1Bw?=x&gI~z;R$|`XA&r(EXF3b||PX3`&orU{IY7!ua%n_Vm0Hrlhyu#uL zM1$IJAPmZF<=1`20VssGSJf3xHQG+8qGMYC+)xN^7970r>;H{2%2HOj`gHAD}V|6hENy5mfJj z@++v`f@5f%3o1uQ!JxbVs{24`78LiO^a&bk0NIHi-=H)Bsyjew8q`(>*#j!GL35oj zHi(8{kQ|JSizY@5NH0tshz4Phn?Yd!az7{ygZe5UJ}7M9VFIe_v0*p2{~-T@#@|4F zG>}=K_5)ZiQaFO_0qs);mHQw+gTe$SoYbF~~kpKN3WPU>aqfzAd4jeUd0IzjFLl|!I8Y>+;X{h;x7kl7$RKy^9DU!ZXj zko!S(45+*V)e9gyK^Rmvf-tBa1J}cOdEj+Xp!N!=EdnwdJRVY3_8(N2g6ckydqC|b zP@N2_J3(y}PK;ufFFax;@EK2e}ngCxF5WlqNu71&T{h zIsxScQ27sPBY^G$1lbQ7n+Js-$Xw7GKu|jaR1bsF0;o;_nFn$YC~QG)2CWAH#Tlqg z0!n|Na0a;%l)gdf0Myn3`3Y42gYc{Q2WBh(C|NK%|FO4(D)DNTp-Y# zGw2)ug7rUi{2vtFp!y$_RzNhU?E=~h0&+9Ry&%7X;s6wGAbUaW1d!W7Z39r92TH5R z7?f^7d=L%7AT~0_CWb5zVuRFxFo=x}qsxK#p#C<92BjsCdqHl+he2rzRBnOtJSe(2i4`Eb~z}nKyeQmZv&-O&{z#9?m!q6H=r~3KxTo`2*_-Z z{h;&!YA=G)4=4;l_JYJ|g+XZnl)ph`Gbj&{YY)hsAisdh4UnHl@xavg=;013+d*|R zD1Ja`9hB}s?NpR{4q9)4>MT%sf{d|=!R4Xz0H87kWCti8fyzj9H-Pw{bOFi(AUA;e z2p}`SW)qnI2dTq{L1ut3J~bdYkQxvMu|Z`N$p4@-3qW;0D9wY!V0Ac14h4heAwX>b z&^^DPyNW>P2wPbE2h}^EJ|5_9L9p4Naeru7g6si_f!Y9|wmc|bgTe@u_d($S3Nuhx zfx-in&p~wsDEvTfAqIo`iJ<;DxF49F{vXtr0oDJYzB8yi0<{4^{bW#G1{y;L)t#XF z38V&8K7s0EP~8P8FG1xKsE-fo$AJ2jpfVm5U!Z<9s0;&*Nr1{IP#OZ2nV>Qc%267X~UXWivZ7Wb88`O3H_31%h`# zCm05`VL@zAdjb@$AU&YC0L3dPEjj@2z9xVNW>M@YpK;t2xF>X*>7vwGw z2Bjky2JvASBnD%{Xl!CIIdW)FI|Q_D5_E4RD84`#=4L`PsJ;YYQ2P_qPY0Eyptci8 zAE;adwTD1y6qIH_Vj#7k{0)j{P&k3g0b~pk1IdHj0KyP@M(Bp!y4j z(fKfOSe*%qcTj!+rDITk7hCv)$_`Ll1e8}mX$7ViL}N1_n;6_)kbBWENIeLH)WB#E z8-%g(L2LCu2A%T@JMYKK3%srmJ(gUUou-4E*Df!b@JJ|?KV z2h}s6{sE{Q2ldfGaR}<;gX%NTTr;SR0h*HrwHZKV9cXR@RQG}U-JrS*)V~JRlb|*L zsQd-h`Jg@$sEq&;2aWB6=lF|?!1tDe>Pk@E3K}l~*$*n4K-x)Md0-9?Dg%>Cc zK{P1sf#$hD{bx}94yublbt%YfP`wBeL&qRF5C*v$)Ybsiv!JyEptu2<3Cc5|vK$m% zpfCoF+k@IAAagj%{Vp!pk6*n{fs8I_g)L4E_d0TdpfbOtgX z6he}KzSENgVG=nGeb*pmYpwyO@}O*S3J%N(u(~59Bvc8wVDbApIb56pUxg9Hf4* zU{E}Q)`EcY5jk!GomU1bFF<7nC_jv1L>)YkVF4<;KzSaNCPDo*P`v@G^Fd_@jE!D@ zf$J``Iu=ykfG}JRbPfRM{yTT~|Df_2WCy5E3o37L`59D(f$9!WeFADXfXqY3aPvX^ zZX`Fr#9=hLJ`f*W4w;Y42H6kdgWLdeJE+|bs>ea+(Sq6qVC>-m9_t6O!E)Z-;66X7 ztOu3Dpl}7*2?|4$@PoFcki|fG3lu)&#KHo6&pc?{9#p4+N!xKA0!XzBZKNcQ2h$3vp{tTsD1*4EvOC#?O_M?zd`;6r7=*s3u*^}!W85VP`wIj z$AH=mpz(f?c_9CS%m(AUy#Js&2!=s&p!yP2mxJsA`5#m#g4$-F@CKO+@-Jv!0_4AG z(0g}4ZUnVcKw}D^um|mPgw^MubOiDnXbb@~jsa>TfXoMl8ED=DWFB~|-^>iWzYkRZ zfZ_?{XOJ5};R*^95C*vo#0SL(D6BzhL1_*|gD~hEKhWG6D11O|7LYoSKG56>sI3RW zAU??LMKLk|?Tn26gX($E-FBe*8Ps+Ijs1i63o$_-K$?Z1VWT zamj(knLur2P~3si6|y@)ZXKx@w3ZiC7J~CG8EqC&8XT?r2S=R`DuX~6lwU#RH>g|! zrE5^R398>feOpl7532t_XBIYN6`@L2d!L2{aY}4jX6~fXY{p zIuHhh4=AiaWihC)1nNV9%1ThV3z7rd1FH8y7}{n5>4Ra=8UfJQD<~c)!Jse(g&SzB z9yEpyD$hW52&f+p>R*D!UqN*~2!rMTK=mxBTn5z(pgIq5(AX`g zt_QUXK=nK*&4A8p1dDll{|E6w;-K^c>c4~P7EoIfRPTZMn4o?tsD204b)b1=kQ+gD zGe{0pAAss@(3%2J9SCY;fcT(x0Z2V)-D68u)_+hR98`CMFo+FO59-f@>SR!z53(23 zo&lBFp!MspFa*ULDC|N02le?ubu*~$2iNoY`6zWhSPa?@0QFNr^)AQ_pgIX;52!x} zGZz%kAisd>Wso00>Of|L_@F*Ns9gXW;|GNS$W5U77!=+hb)dQ*3uAa{YrnL%k2tl(AYodt{4k#ZNlgOKNkMOB2ak&uKz*f+R%AzP?-V}2hl`hr1~FJ27>Yvs9z1T z7hAl8(if=w0`*@({U%V^1+P1ybuPNyxZH#;PKXaO7p4YAgX{*?@u0CwP+uNgHd|SN z@3aQBXJ8oAeuA+D1$Y@)G;tqsC z;R{-?0IKIfbtq^I6Vyir^?O0*3WDl<7zWivptWeAvKCawg6ad%xG<=G0oCiEIu+FS z2CZQOjopLhi9!7$P~Q+V)&WujN-Lmt0;rq^wTnPwNud5D$Q+P=Kz(IUKM>Rx2AK=0 z8$s<4P&k6z3epFvmqG0Z(0D(n`~}$us`EhgIjp_|(I7KGbqA>41FcU0l_{V)62u3o z1(i=A`#|9U!k{t=l#W1VgX%j_{~V+rG%pX*gAaq;54u+XRR4q8M<8=x{T`6JL49IS z{}9~Q2c6vvJ&zF7&H;rrsErG1D}dC3_IH5NHK=X_uQwOqiN zkefjmG!6u67lFnkK;Z@Q8_544KY+pz#0I$!)HVR68&I1IghAsmAUA>Pcu?Gd`q-c} z2WoeK(izBH(4Ia}oewexgh6J3;vG~Mg5<4qb^qHL8iM!!gX&|DKS1pgkQiuw0o0zw zhQa-RwDEsX+=AM2pf(C9U4X&@)D8go2NZ6gbc5_~kl#UiKz;+I1CX0QGzf#(APi%J zXlxj!h7>tuJ)rh3Xx%@kJq*hGus8>~ZKPw+xG<t;`=4 z8yxjNXbcWio`A}BP`!nMq5V}*d4i5XWeZFUnGF_$*8doq@_* zP=5uqb_SFWL3+?J%q|#>E{~6oOAm%PZ2h8#2W0-j+#GzL0jT~0VUT~2F(|Er>R(WL z2bHIw`VmyugZ4RrXb=YZ2UItL+FCFSvKNFwZ48hZ$Yzql2F){q)(nH{8c@9oY6pPE ztwC)8&=@|b?giEVAR2^0V*{Wu0#F?Qst-W@c2NBQnl}Ko3qWH6AaPLr59+sq=Bq*e z0=X4bZi2=GK3gX%HV&AA{;&P@4c`4yZl_)lHzZ0P-iOegU-) zK<)&o0oD5;8svUZ-2`$ENFT^ept>6*4l)na=LL;Pfa+6FeFq9Rkl&HR3e=VY)iI#4 z0?>Q`NI%GaaJ`SG-w*O5sI39=FQ~i&nFDew$ZSx30BZk$!W3pE$Xrl;2C6eabucLH zg4BchNuV?g@*Aif1yTpYpgIs#KZDvZAhjT~LFoyUK0t8=QU_`ufWiROHUotL9A{+pg951x&UJ9e^4C`ic=T{wd+6_G+qMoBWOJdC~QG(Q&2vE#TzJW zL2V0Ae1h($0=Ws4#?b3>Tw=Jy(e=alAoU;&u^4;bLa?AJjJ(t>*`>p2rpTpnf>0JO#DsK;;~$`~mg9LFGHR{s;BBp?y|R zy#*>qKo}$sqH$rcysInt-ak-#0#x6D@;)fdfaE~+JT^Ch#6jakpfVJc&OmNKwin$# zkXaxx7!6{BFghP32Ey3Hv5A4y!Z64Up!x>ncF;HpsLlrU*+G5+^^rh*K~UKUIv*7j zjv#fQ`UsR?Kzc#u!__)C{0Ei8ATvN>pzsET4`}Qhq!v^j!s-K%Iiz5aK2R8g*5`rh zWKbOrD$hW5GiXc|w2lrm4*;t7Vf}tkUkg+p!0G}}9}`rMfa(`ey#T6zKyn}&Bo0y! zax17G2dX1M>k2@1GKdZ8dxFk70ks)Gbq{FmJ*fT%`4LoqgUkb!`=Bxx6u+RpA1M4l zRixT0gzcBzr(@`#0G^U zs1FUQ??Geop!yWlmj?L@IJt!T6+5{jqV6`PB|3NfJKPawYW`o8lKi##^*8UHoL3J}O4DSDGzI|bTY$zA zK=}e>e@AZae~=nb{SUGa6n3CA0g?x$2~Zjar4>-UjEr%KVG{@GgNegvkQfNV_%Irj zS3rG#P?&()wV-qaa?>a_2d_T{jrW1tMWFmlY?y$;5R?}{;R#Bwqj+$&0pRsNbW9sm zE`j>0;JP1F@53;t|Bp0p4JuF2F{qwH7X#&aP?-%XH$nX&P`UxB1C@2y(gH{vRGxwA zQBc1Ij=y)fb>L4;h2n1fVh+)Ejba@bxpkUVJJ7O3A0s((Q1(n0kRs2u{T|3P&;NDat5P@fi5|AFEcv_20MwxGHU z)II>&1*(fcW`Jmr9*{VQ4e|%5zYMC=LFz%~gZ2@?(iAMbKw$uydjXa2pt>Ja--0lx zE(G}%WFA;QbdDdH4RRky9<(M8WGBeopz;f3HppC1-3e;nfa+&Zn*y|EA5=Gk(kv+6 zKx#o4WIrgJL2d-u3$h=i2h>IawY^|%NwB%5rvE`>_aOBkdC>YuP&k9@{;Vu;eGjV3 zLGA*D2MB}MAoqdN9jKiH@++wB2g!ll1Hz!N1kLM%;tCW_ptK2^2LRaxY6pVM0I31# z0oezNOVB=iP(2J91AxUFXe}Tp-GjzyKxqqa{f}k*A5_1CFlZbGl;1&p3=jsn85H)Q zzCLK33@Cg-;Q_KAl-EGx7N9mONF6o|O4}feO%7cQpE{Tvhz5lVsBHuqp91+AoEvD&4HS={I3mUjP`rZr3ZQxhq;C`tuKFJoAD}To zPrQNJuo!e-8>pND)o-Bm0!lZa_9Ljw1lf&_LFoiE z9s!yY1=X9NIucZ;g3JS95E~i8#9%bC9Ec4QhtVK05Qgz#G)N2^2G#GNG7og_6{yb- znwtQPWr6Af5C+xppnHu$;RZS@0Hhw&)&cnyRL6nJdQiO%suMu@094`3qKy@vs3h@s z?*fts)rlZ^(AqLk{SWdxsLusb4>AL!A5^!2Fi1V9jsn%0pnYVZJ|Vbn&dCAa&j1Q9 zke^}U1S+RMX$@o-xXy+4w?Sj?ps@u|od?1oHzQ+^7|1S=+d%91K<)#jJGi-KX5h0R zL1PXeb3ye!s9p!vGobb@$Q>ZNL2(D_BZ0>2L1PUdwV-+*W+tc)1RARVnF}iCL16<* zbD;JRsNM&iy#xva&=?3PtU-LxdIHcnf}r>W)uEtp0r>?~Pl3`Ss9p!D1=aPSumb4^ zVUQRoEJ0&1pf(dIpMlaJC?A5#agcvO>OdHz7G!=wRMdY^dIhcZ2hI0`)-8b2Cukib zD9sRC|AW#741?-^7#oxxKzRc+1^~L329$0<{sFa7K;Z$4OArl8GoX4HH0A?JyP&WJ zVGtXHL2M94W`p>oV31xA2I&Fi2hciK5C+95sNMp_6Db&!4oFcCQw#DhC?9~zU{D$Y ziG$J;NF0Pg{DHtAyFuXqDkDL01R84tjT?g4pmYI>Gkop>=?ATW0s2NAQ~ixFK?mC zf%RKi{Rh?gpt=oISAzOhpgJ04A80>3sEo^thydR+1}b+!7*zffi$V1SsBQ$610Z`q z{sqn9g6dCXGeBxUbt!0m8dQ#f)NQY(2{HpzXMx-W z!XR~^HEtkxgT@v>^(bgvHYnUd;REtBC>+4yXKwx1Ju?6wK+iJ z;GlXF6y6|rfaV)O;R$L>g7OhaEhyYT;RnMYb)c{S#Xo30J1EXT;~5}xKw=>EAT=QM zAR1KvgVu+F@;s>i2hIC~+A5%N4N&D&5327$^*%ZV)f=F`1}Hs( z@)XEjpmqz$kDxLElvY6D3Bn*XpmrZi7bqQp(imv%2xtuks4M}MmmqOangO{1lny}{q#lGpVzkB} z`#^aC)ZPcRAwgq?APmaapz#1gVFYp~XuJuOen#=Y)$#bk9#npS`X!)x2~<~s>Ml?@ z11bklFsSZF>i>hvGlCe_|M&0!_bWi@0aUkv>;Tz|%UvKj&|YoO+$N|#1?2~jT`(HN z#)q+~!zPB!47fVz*gvSQ0o75Uau37?m4_fVfx-yHN5&w%APj2nfYgBMdyrmG9tM@A zpfL?l7=!!;%G;ni12ldMs`EkhA*g=_%5R{ukx<@3&-nhhk1v7Wi&CP@fUxE|A|r zeO!>8APnmFf&2>^_XUkjfa(cQ9SAZ5WIm|gf?-g73^E_IZx7TL1oe4AW`Zy%3_yKJ zP?&=1W02XPdKZL2bub8n%ms;qFs{0PLP5cQ&^kg;-wzajAhSXH2SM=wn!^CO2~_Wc z+6SPz7&Jc(id&G~pgIdwcY*35P&)&p22|&R)Pw8<)w`hh1(^xLpf&|4J%G|asICX; z0fj55%>=6NL3KH(eh1C7g4#2n`Vy3$Kxqb)PeE!yZ48iFP*{N0)q%zdK;Z=nKNtpu zF({rvc@0#@f#!ce<4&M911Qac+Et)50#XAq6IB0$?id2u2fFLeMqeL%_Z28?L3%** zFQ7FppnQN0!|VTmfd8QSABI733u1%m;NbtDIR;Rj017uy`f1O}`44IXfWj4I7f2iw zPN4h)if?eeosjS!OeZFS>ugY1!}vI9kRA|DO#BZ@^B_H-aVAh$fabkG^*tyIKxh1c z(k94$P+WoXD5%~8r7c=xP`(8D8I%@4c?#4H2JJZn(V%^>pmGr09&mRDuR8&SJ1E_O z(ho>4D4gJ!f;~gH{0S=KK=nQdgWLy-J6Qb>k^{K`mtK&#hn3ZT(0D1xA0R)D;=$Jj z0L2X`AA-^pDD8v#B%ruOuKPiJa9s(l&%tc8F#%j+Aag+FBPi{H(kiG-C6p#WZUU86 zAoqam29?Pm^I2@pt29-7f?8X#sENd z0BD^(sGI`15rjeh1eLciF;KY)QV%M-L3KOKK9Kn!vtSsc7lc9jL25u_4WRr(EC#s` zRAzz7FHrpfE7L*s52#K9g(Jwlpt=xL)`RK_5Qfzi#L_UmpgIRsW`f3%L1hBi&YT?Z zTs7D%Q2n2m_aD^11D$68>dS%3UeKNZP@Mx(59)`4`VgQ#9;mJZ)$t&`pt=@>L2Qse zK$h1Gx)c?*|2e+XNsn(D*T^T?1+t zgXSASaR&+mP}>Y-KS&&O{t?KpAa{Y!)@+2sqfZ_=hzqH1nx)YQyKyA9burTm_iJ}7AP;k>LwTsN^hXL z2_y%iVHlYYVuLVD4n%{>98i4-sslmk3e`!G)NBAmj&qo=?9q!!XWcN z7?};?nvvs<%NH z#0H7M!V1I(jeUdqX|Q$yNF69VKp3PJ8H3&B>I$}#P~HN`gX$AdSq)-?%mI~apz<74 z#)0ZjQ27q3S3z+Is;fZj@<8*Hv@&hz6MhawDkj2i47>x(ZYt zf$AfWUqR-9`iY>h1oh=$^)9U52hpJUc~G4V3IkBxf{a1+K1dv-22@{z>JU)<3JOaQ z2E{Sx>|@Zn0Z`o!nvVy~ql4N6pfCrmjRUCxm4l$V7-R;>4WN1-)b|IO2dc9{U~gK2Q)SUP7`i!;5CAvdK07$gh74- zaQP@4i2Z=f&%=>df~sQw4l@t`^w zlt)2l0fX)W0Qnizh69}g1j+-T`UV>Y*Z-jLe=PlfSiJ_KL3JCb4FHQz&|Cz_y`b?7 zkpDsT94M?n;R|XPg2qTd{s4^yfH0_D2Vsz(Ky6A88zc@on*yW`RM&(1^%)ueL1x1G z_aOD4GzbcR(3lRWp95+Kf!qN~qo8;KVNhJr1B2>+kRL&HDroN}C~QD=KZpilQ2c=S zAPj0}gD^-fsI35^LG>{xtU&1!GkKx#o|f!6xL z>;lms466S@V~HSlfYLKQGeK!LZ4lRep!_q^F>?J6N{^tn04Ux-^$DonfMHNMf{a0G zKztaD%!Z3W_s)arI#5{;N>`w=1yqlM>JVIE4{{TzTm$I=nFV$OX#N3;!D3K0vb``i zNFKxnVQg%W7z~5dV8zh-A5?#X+zoOIXssWpeFQ2KL37t28dN5N$`CNNxBm|+w?Xwi zIQ-n){)6;`%m?`a)TRNq4WRoXVQdf$(gUJF?gGUFEMI}_2Gx6@ybKcq(I9b9JppQC zfXWI`e+E>Jg6d^Z{ST^3L3IMCo&e2hg7kpOK2ZM>q>da6s{cXdF(}?ZX9R-kZczCR z5(C)w@Y|kT|Fw0@0v42~QYdd z4GLRO7=Zi$qd{dJ$X-zU0HhyO=fg0lt^@fSR4;-ssGfsiP~8uz8$opqNFQk59=z^1 zHU^Kgg6fLtWo7?CYCvpIS_IXBpn4zFmj}fYsE!APC9KW|(I7iPeI}53pmqYtf1r2+ zxfvt|YA=Dz1g+@3aHNt>f?gU1(^v7JCKKA=1b3L|6;77q;k59;@W!VM$` zs`Ekf10a2%`WRFXgTe^J2g!lzTadXR|AN|jp!flevw+$-Ape2<3QEHu8iYY&=olmp z3MZJ^pfejm^*%BNts@4NRUor4^qZT5`!Jw111ifw<;5r-oMQl>_yN@+p!5NXb5Pm= z#Vfe)0b2VHJ^v3>j)2k>n1+u1gVe$J$TVCWTm4VOoDj%Opgaqzb3uI-Q2PPdd=MLM z2h=SfF%Slc!!U@CjzMxDF%S*HAT}}viGeW4ub?s#)W!wn2T*$&RMvvR3M_7C2Oj?g zrG1b*2!rYfP~8ox`$6FdD)T{lKuZ6^YET~>G>4099>^Y0Sq%ygP&o@K^Fj4LXbb{W#)HZ(P}vLWlY;6l z(EdS?eo&nb>QjU2a!~&d6n-H8!u$;?yFuk5s2&8(v4hm1W6-z($UUIC9^_YW-JhTT zAH)Xv0c1a@jQ}$rRIh`=8Wb;}{e7Ud0HAsiRL+9j4{|4HOd3=Vg67AY)6)Kf+72)b z>i>h>4ssVL&BELZG80rjg6eWmI|9`10oB`}dKZL2aRbr^au=x23Q8j&{h&4^DD8mG z;028%fYK6Zya{9uD2_ql19BfoFQ^R&Y72qw1}Hs)XplQWZUluRXxs|aRs_{?ps{*T8w%uZ(7XYt z?FQP@3K9pI0ZL1tG!81eKy@D|-@w|RpfLqdIs};siW5+~43ws5g+bwZwYfZ_;LMu6fE)Yky@Z$W%8My~%sYyUtPN531n4u!L! zeQ1zbp!5bx8=x{2WCzGzko~wYsO<7K_It-FsMBMaz6-z)PTYaR7ZfyMvz-U`ayD_au(!%ka|%04I1wT zV-Ju2pz;+Y4^j*A7swnC2JO!VmCK;=9~2)T`#|bIeHoA*Q2PQ@j)B^0ATdzA3992k z^#G{;0G0EgdKuJT0*Qg@6;OQ&DhohsyFm7V`s|>7DoCDG4608-^&=>5K=y&m2KfzC z9)s)xnFp#%Ks31i&CB}_3Lj9p3o7$LWjmMD@` zK;;z3zo4)HmD`{)2~@s;%mMYc(d&H>A2hcBawo`4aJ>(j_lMT~AaPJV2{Ip4Z-C+l zw00jfcM2NE0M(hGx*t?mgW?L*1_QMXKz4)T7gYX%%mlSNKy^Q;-k(xd_8+vy0u&A~ zcYi1f9e`+1pB|JxL3JSL>_3qIL2Uz2y$;d~vLD0;g$<~!2;zg%G^jlRsvkgc z0Xl~VH2x2&|3PaWQUe43Tj}fncQ7&epA#PbA9N2UC@etrDYm*FBnGbkLF51a{_uJU zWIm|gLZO3#!2MZJ-x8EhKw%4N*hP0L4FOYy#Ae z2i0Yuwhy>Iv#|l6$qC9YAhn?M2ErgVC>}uZK@SY7H$iRyVNiI1$~=(YK;Z_e6Or8j z;)DDL%A2q-0)-O{gT!DMBnD!GXb=Xmkuj`I01^Yq!`cJjdOJM)KPbES9=>^sMFbv8Ep!5bR!@=s2+BP7+gVHKU z4y1n+58k>T6gQxF0@XR7vnpmGmX?}0J&K3h<|0ZJ>Nx)RLBQUAi^U^GY%D4l`I z4^W*2N*l!1{~))4$~#d00hL)GyU{V+9;7hMD>L zP@f3Yw*vKDLFR$Ve2_dz7<%R`Xp9rGogZlFz zJ3-?Pptc9d?=TFicR}Kyx*t?ugVqv)>Jm`h4q9&pTB8JNcYxYcpfLeZc?jy4g6a@Z znGT9SP+ba=2el7Cbt$OspIBH3-b)F}H=uS3$UmTb1gdvHaSF;ypz&#tpFrUQ8lMOG z6%=l;umaKG`aeD%yhjEUo}lp*P&|Uvg6eco`3|c0K<)yS@31-^Y)IJ8q1E@_2iXTwB5|q|Kb0i@D zgT?|uc>|OdK<)t1$QTsXAaPLGgW?Jl{`AHmyFqq>>U5A>L3tmvei>Buf#MV7e^A_k z)F5L}+Za?QgTe%)21X;ZL1HkBE{@Cxv9V#0UQjrL>;cu=;5s}s^gpOh2VsyrC~tzw z7El=pstZ763~0^(lwLq{C?ItpeIWfX3>wb^wdq0m6y|?W_=CzXQ279=S3u^D;=y14 zgVG@=U4rHtL1h9c9e^>c{|~JXLG>m`97Gd?LFG)erzdz$71T}yr4vvc2dXcLNgtqc z6;ywK>RM1;jLlAD_rTaN8d*I|4CE$ooeym@fX2nZ7J6AbK=}mZMvxki9uNlgtw3r({sqyXJ#HZVpt1oJ#vpM}-U5}OV7<^b7Dz9s ztOnc7#yfP2i0Goem!VR7qq4cRIh{T2~fEXs`p_S#0T}!LF4S8`VUkW zgUkl?t3YKts80#1Z_w)?P(6eXgZk~DIucYKfXXyb*$irffXZ@ESpceIK>9)Ug8K3x zyFuqTf&30CpFw^D)ny=gkQ}J}07?s>HV~*S0BRe6>MT(I78Gu~2c=a|ID^_8pn4o+28af!2eqX@^(n}$ptuELkb6OX0)-1GJV0X&pl||( zABc|)gW?x-p8#mg8q`h$wJktl4Qg+I^nu0$KzS3?4gsY#P&xqF50V45c|dIpkhq_X z&3{n(0ku^??FUeq4{|@KJ_pHz{0+)WAPmX}p!5e?qX`Oo&{_h}{6B0BAn2?g&^dr0 z4B86-Iu8hxW^rNU`X3aIAPlNoU^Ix0j6vd{zAvb}0o5Czd;uDF0l5X#o&~ud)FuRB zkXle&fWj6O#)Ace+zoOIsLltqV?bjnptu6Hvok_M!0Yxw;~bzhm7w?osfA&XUQn3= z@*5}(f@oOyAhSVY)%L{Q!ZsRQvrbw4r& zsRxZIfH3IJQczw2`3scSL1_!rUInGYQ9QWoeo*{?(kduVgZe?BG69r+L3JglzJ<}C z`Vm~0qK*H9#h`5ikXjHQMuXU(G6!THXgmm%K0x^wl#fAW5;65Z$ShEK45C5q0htFj z7iuR~Hpq=23{?Zt3swge1Mxv=6yz=#2Gx(CF$S1FL3KDNzk_$W3aFd|^?5)T zRHuXbW1#v1)NTUxZ9r?jKy@uh9jNXA)n%Y^AGH1sBnGSZVQg^ypO*F?qy|*~fy@N? z57ci5^{YT(0jhgJ^&-eTqA|4p589UuDhohv1Yyv+a8Nl8au=*k0jf_yWdo>e2iXm( zA3^m$sICIp2T}{dpgt0)>;TnQp!yY5_k+S0q#l-DKy@By&H_~Dg6dLG{fmN&i^2Qo zK=nQdgZvD`AU}e{KEBKz%b<-4Ajj$SiQUxVruag*OO;>;~19pz;x92CUBy z8hZe_1LOx#83&3}m|H=5KxH~iAE>!2KCuNWAmW2334N--Up=v zP`dy$#|;Wc&{%PViwk&79H>44$$`=Z2!p~E6yKn}GAPY~+MJ-Y3rgppv<&hys6NjO z3i=Q7D=7bg#6j&U(3k-zY(VGxfaZumZ5q%T0FZtQ9UbspfS@}8Kzji|W`NQ%HVm)- zq4Uz9x(8H$z-Vl2P`w8d2lb6XeR@z_gVGcz%t7u1rDafffy6-SV0jA^)&q?}?G;e` zgX(=yxd2KJApd~+%Ah(Gly*RT&|U*jegWlYWH*D-3dld8G8m*5UpRsM4wDDbAdD^s zDKjb67x`JlQ5gkfqx zH=cY2q<5H^n&emcmEGE8-zjT!!U>sk_Ta!7~IXEv-P28 z7J$S+=7GvmkUCKP4yv0$We=!41BC%7Ke}65g69%Jbv_7#=D|Sa5~$1s`3EEq_6zcy z7ii6lnHl(w3{XA*`4d!Dg34IXm?>!f17ruN4-Oi;1(offIto2Gxn6{tl?l z0+lDAddLL9rfb@al0CY|Ys2l~2?}6$V&>A^VodGIe ziNzrOptu9|RY7Kh#%Muh1gH!F$${!PP`wATA2edS)03PANOD6fO+VNiVqQVZ(e zg2EJ3e}d{AQ2pm)X9uo>LE#I+ptWzH`3+FL3knm^y@H_n8X1H90SiA+m?C3Pc!I|0 zLFz&4+d%CzP(1@Gw?XwBXxspFE+Qz6f!qO#H;}y`w}ZwxKfE9*Zfd_ZxJ9^Rnv0QKiVWiu#Ug7ks?o0s<= z)OQEvQBXe;l%7E24WMuXnG5nChz6MpvJ<4IG&=f!qMsjljR~j@2c>n;S-YU|eUN%k zT@OlIpmYW5uY%$Sq!%=<1gfj@A|t_T06}d7&>BE{L&N`|F#r$-rD;$)#)jebzrR0t zuRkbFfcyi(AT}~a76Y{%LH+@iKcMsu8aDyC2h>Idr6Ujqg$F2KfXo2pQBZgf6b88y zR4#z#tw7_0pmqD8dJ*IgQ2hzQAa{cN2*aQ{6tvGDq!-!Upmdnv>-!(17p4b9!!S%g zhz5zlXc!yDN2k%{L3|JfsRLmc8$`n}NF0PgZUOlR)HVju$QaZP0AY|Ahz7MoL1`0I zMuPGVs0;=9lbEs{R341tfvx{R@dWCVg6d>YKNeJ%g6c?6nE|T%;TTlEL;KGlHP|pn z4~jT+?LVmA1(my?bPq}+p#B}mPLSP%;vba1KxHb(T##Epbv&32at{bY_tAmu2Duwv zx4XLj2bH6s@()y2gUkWdfuQ;xG`9}QcOdtG@*{{1%FiG-g2wkjWh}@%P+A7L7i2%k z4!m?;E@-?5gh6cddI%REXodZp#Pvc3}hdu9s`9rs4M~1%b+?2G>;7GsYD4s!n0QLDnW`o_3pZ_0J2ZQQ!5C)AEgX{pg4IP8R7}Wm;g*Rwy z8#LAms$W2H2P(fnZUwmslm47LN>wg8z6G6!TfsGR~Ti$Q&UP&*T3H%J~7XP|WfAb)_;ItYW# za0ZS2gU}s%5ojI&U?mTZu{Aa{bs!N5-H!6;#%N^dq|ul-@w)3TV6lqz{H+dO>^;8=1z%Mpg%7!_=bl zVd5YfhGA+zZUyBJkl#QwHVmr!K^WBk2elx1{~$J~&Ik36 zKxqV&zd`MNkllpb2dcM0^)JYLkUKzb0GS7(K^WvlkQxvMiG$kYuzDQU9ssR#0@dZ9 zavwCu0ir?e0FWL~ng{J;1+8BLjemmr=b*V&(40A_tObP&sGJ0u4GI@fSqDn%pgszy z-wSHTfcPN4f$}xTe<1gQ#uPw&kX}$f3sh!++z*lim0zHJV4(gDsQkx5FLr|Frs_T(4ObkSW`qQ8?AEXE5evtn_buMWB8#L|?G6z&2fa(uW zeF3r)8wSnSgWL$}H-g$Epzs9cc~BgJ`aYoXK2TVI>RM3w3@T4R@dc{8Kw}OdKY+@0 zP`LuH|Fg5fWA>mn2`J29;RjO-8e;&t1w0N8x_=0I4-u%%0;~T)c7f^$Y#6lu0OTI9 zn8s^>xB1u_Q|t{^r@4Ah1JjcJ40G@x(?`32Oc1<8Zdfz*T4f#L%s24aK!0ZON! zyaLh#+8YXLPl3`oDBMB%LFR(=z%a-xkXlgOgVt|>)^CHt0i+fbmmoP%ngFG5P#yxM z(L`_W|DZVnP(B5XlO*{0{kPE7{cmSv^dFSRK>Gne^H!j?EGQ3P!?5}vRQ7}N6*2~e zD+q(cKr{%0*dPpIgX$WPA3d$D|AX3tp!5oMZ&ucSP+Wm9D7}K>1;hr0Hz+<~aX@R@ z)xrY2HWL({p!y!up!HCowkn}= zeN=w%v6R3O!)ytqd3RKU5@*gPQgD^-8#0Qn>FpR=S8(#;h2bC)z3}(Bz{Rh{P zpz(2YbMV+Y=o}qTekYU;Ky?hL&V-uU)9OFCev`@(koYP#FpG z6Uc5*x&)Q?*ps!UfhI z0QG%AIHBZT3dt9Q32%%P(BB>13>yfZULDCax19r1(o%nej2DQ0GRH4Iux3>K9P{1J$P>F;F>(Ugv|#M05;N2eJd?SCAV(?Fo=SLFRzs5tNTXbtEVp zK<>eYLG=YFj6i*8P`e1!?*#b^)Q$qtAPn+1$b695ps{LDScCeip!yl)Zm=3Nv;QDA zsQ!of6C@9^6BI`vKf=_-czOK?)mUyFqOyP&xwj9YOU0D84}LF;F@J=>ho8^M1$Iipf;YVmKHdiK>4L4HWoZ5015+abw5Z9T>nG&|AFcg zP+dZZhN%Im1C2j`(h(>idAkZb0=tD6NCa91t5+Hh^j9SUafv0@WR$asz}xY>;|T z9|fcb)Rq8^vxDS7WfVvbqz7a^tn38Up&)ZX{RCX@f{BC71@%inW`N8G(V%`kNIxjw zfa-RTxuCilWFN?0P#Of4$sm7$#-a+s!@+lkfa)($c?v53Kp50-0`WoRB&d#oVNf{( zvLBQ;L1hid{~!#q6XbSK-yc+_gY<*?XQ1*LG#?Hc+XvM*pfU@zt`Ai2fG{WwK;Z%! zX9cYR0@dlDa0k_4AUko51AyvpkUr3SHK_at*#lZ9530{Wbq8`A0LF%igJ=*2mHQy| zAh(0+e^6Zy5(DLLPV8ldgTf!w?g6#E zK;;=Ien4>#>Jxy>1YuBp1zR5s+Is*BTaX(-c7f_x&^jZKUJwSAA0RV8aRX|Dfz*I7 zJdU!n|AYF>pt>DY=V8?Sd3oTvA5^D;_UD7&^SBDzc6z^`al?z?m!q+HiGJYkb6Mk1g?9bbw9|xlZ%VNch`W@ z5~%$I3NsJ}r3;YRAbUIW^1y8cWWAtp0EHFEy`XUx(3lZu9b~Yh<9|?E0+|I0YfyZG z!U>MEvi^h8C8%u)vI8{60!lj|d5~IA_<=B}oCoC*P@IAC8R#4YP)KK?&w{R3#; zA5V6On!i4Jo>XgL)Nv=-+Q{7$uXL!2)PxpY(AT|tx#6TFv2hkvYwvWgE9AD4> z{-%ci9ko>ddl~BfuZjryKQS})e{Wji|FU5J{{iO4|6O!7{=4YV9(x$*{13M_|DWpS z^gkEmHXnDepE5jLQ2YgQI|yfby8Z`Y5F6wt7zXh{;yFGZ|3j?I{yS@{!`%;J`xxv0 z&-8KwV~`$@S`ZD=2ckh3#74&GVlY082B`(HVHm~-(IE3dG&%;U1&M*=^L#!3qvKpO zF%UoB-}`@IfY1LRbL0O`+Uoy(jrIR0xjOz&adR5QLm&(iobAE+%-6&KobMuREdEE? zTK)&o5y&)@9cFF*KitORf25t&|7d&b|1tK~|08WJ{s)>HgUxZ%)%@>mr1wA2)bM|Z zr72iVn3dUokhn86&${Yr{*Sb^1m`P4=_K0L^1r8{&i_y=Gq4_zouSs||2++K{)5c% z(ANg%DUf?XMYn}zJI_N3VVi7xj4 z?KM>X$J$$i%fY_%uknHYe>$Vp4>f0Ui&|BjS||5I`@z;V_IjyFi0^`s_(#X#W>st-W^>d#2|560=q z|3Q3^nu%Fy|EJ|;{x1y)0H;S#`3iCuD19WkIDpG3P~8C%ch}eYpXToTALLe07);O0 z`j3o3W`W8$P?-i&57LK>LFVT9dHwItO#R;nO%LF3OGyBS0m!eQ_$mtU0q3V+3lnhO z0o5sCmZso51Ii{t^c%X3|(AhwsejYCD@8I~qZ`alT6StrLU%%=6|AMs_ z{%5Q_|37o(1u)Kl)91nBFg{2=eI-cj!vCz*7yqX$JNrL=;feooi%$FpsVUlc5PK9COdG|7L1120g^|>AbF5mLGqcaFZ?G4gW@Y|^`-yGV1J$X5AsXe@^k;wSDYWk zLm&)5c`9M?ssBk!PJ=NheS-2I3cdU+I8UOApZ%W-5?_AifAZ2Z|3Uc$lAe$MPgr#F zf8vr;VDZ#tXaA=xJp)efptKHB1HvG)h)E+LJ3#IO*#TmwEami`0c_2HJmYn(z zaw|w4WG9H9zWn_E+_hK!7jC%zzi1-@7jC%rA0N)&aP@!jrW^nB)?EerCvovfsK3wr zPXYNA>JLypMmGoD9uOZCwjjSIFFg%52joVOzd<;D@yY+7d{PW5+csYRUx34Hpu8Bn z@HjXO3pd{Q4=xKgTnGCtfBm)p1?#W=&tHcdgWLg<2icju<}%nGkX;~iQkS0tyP;$g z$lPmSIZ&8^Fh~u^kD%}X=?BFr$ju-?Ta5IHi=##hY$oNmn2@LDCW^ zOhEYyIsQR;B5CPqa9RfCgF;X`1;;BQje`6KN|PXc87nS;-3f9VDE)!-g2X{|{<Z4l#W69uVDSP|KK>@aQ%Po+RNa&CS~~X^no&6uV=*)k=nTP+|_3iqf z9Uk!?G!FtA?*R4nLG?eV-Us#lK{QAlSN$L0==i_;{FncpJHGz+*zxth^Y*X*9k(K| z0}>k~j?4$KA^6LGr)^*VJ8b>(-+s%d|F)Yx{{u6~k?uLdD%wM3eg86lnhNPdt8V;bi0>v9L z4Pv8XkQxvMiGygnEua2_@n#4O5(8n7JT?rHL&hLA#Dob*9Y`ODcG&V6Y$u!#E+atY z#Ak3Gb>9B{zw6E)|J`=}{O_{k`+w){-~KzHVUQS3yyH7qAE*ofl{26`3AT6Z7jT*2 zuoY77fZUC42FMEX8XOR6nzJtptkXfkaK+FS)gZu(=D_9TItsrw?7$go-0}5+f zP*`sUxdEadq{d~(xBno!K&c2ARG6+kZQ# zoiM$i@)=|n7{ki+ZC}CVHps1@as%Wphb@q@+;RIia5#YUf$Rmzf%JmPc941y2H6XW zJFuPGzWxW(+rNS15TplgH&_f5x2V_!6!$y6gVO=XTo4AC3&S8kK*I0Se}`>f!2SiL z6W1L-z-*W8-~PifDBiYyfz&xz>KjnJf&2n;F9?I{3b4B%=?xrqP(Oq01i1lQ{KLdR z=7H3J_3eO~0XFaZf2SSa!D-Ka^Jj4Qg2D}^4@M*F1;sT4e}}6Fg)JyfK=moiE>OIK z^tn z(>D-eAa@drP1e5uZ@l&$Jgz`tI1p|gwUhKb2Z}3DdIZrZc-5Q#hO6HEH-O=lum2l> zFesnEXb>BuZuOi0D0)}F#o(joV~~1c;tQk>q!;EE!_{y8gYpW9hUHh&b?^V1t^Wwd z=3x56f75lOV~`mjeGostM)3pK&Q))~X&jU<%+}*K-)!9nuzTR{#}XzWIgni-J3;OS z(I9;w8iq~QeE`P+C=5VqL4F3&VE3$k``>8I+y5XvF#Rxn$TY}bps+Sx`yL)HAoU<| zlQr+a@eGm!gZLo3L4F3Q0b^+S3>Jg3!RCX^g1X6k-Ft96f!qdC z2QmX>7RXKzhKYg1L2Qs1C`=I;6rYeV1j(WM2PB4!L2d=P8x*D>GqGV%`UQvA+V}rK z{zu0kGeBm7{0LHu%?ywj*o^fb!DfK`2gd6^fa3wAAA~`E1;rD{J)pP(v5_%I90jj> z^B-g{NG}M3{0pK%7^EMR-a%mu!YKMc>1x#*aJ+)lg2NA*_CRg`xfMi%^rPro^#+`F zz+tfA<9~~dU;Z0UKmR{BBJw|I-2`Y~3+N0)P`@9v9}w0CAk_aaJoN6r!RmMaP1jO} z&DOsAZ?fj?f1_2e>4R6l`ELr!OKac#2iZ-j`?2W3t1;E8nAly7^C+T?(6jvY&N`Kg}F(?m0;}xD4SHA}5O>F9MiJ_-?kUC=G z3*+VJr|sEq_N z2P6lw%N*2xK`Ud8S3~kH$b67pAhlpSR=@dg25Ms=V`w=E3JVYhsfS^ZJz%jlZ~uer z2C+fz2fGm(S0FVYF_YDA{zKdi3V#p=#U+RaVF(-K4rB~+KQac{0rHRWnm0J>3Xq>b z?f~fnsmF#v?f|I)xeFHtx!VHj2atMDoPjYk>_O&&%z(uUNIl4I5DmuAFbAbCWN{c9 zckFenbdde^*#r%7ZnkY13TAhjS2(+i3-m_Cpi7zT-f{0EW;sR#MPYV()> zhLcYG2leqm^*v}!Bj`*Q&|U@58~|vIH%Ja|{qNxTKW!hR?+;50l+Ymef!&Iwz680S zS{Rh>LGA>FAqa!mw89|s!G1z(*MP)8aSk)qxPw4WXIvkWXU>GD%jQc_M8bRCUAU!ZXa$N%I zw}Hw$N-($_-0%@xzJlBcvI`x9?S{5HKOX+fl-1_1|Mk1~ z{?84M_z&yzgU+P`?d1mTX#t55Q~$^9fs8@I?4X1Or5{k*0p%TR@k%W*kQ+gH3uG6F zO-l^20~817ZU>2hK<0umYzza`cG>XZKdAoKZP@~^|3P;EfzD(G)%!3^sQw47|Bt0+{SQrB zAV0(6f!Z|4Y*4s?(jz@EC>}s|V)F+`jvj6x#tx8MNWq{q3NjbuFHo8Tu}AU1)$7EB zJvbdg$9zF-T4GR|0HqBW2H8c>jcXwF5KJ$q9J5&W;lDMw?82-Yz~vf_I+>6hsGJ3< z0l5q0Mi7mT;qCyHzc}iDkU5}o7L<2D{sWl_VuR{Gbn{?*kiS4?gVcibgJ@(7*AMEy zuX_(}1AxpnTJz>Vs80#1hd}B<>R@Jp>Jg9_xUO9P0bEyt+y(L*$Sx2DnE}!R$H?RR z>)wOsa6xVam5+Eaw44T+2g0B_4P+*$ZUyoL3I`? z2D=|AK0*EjVURf3?DZf1o2&(`Ux18Pfc%DxL2d!np&+%mFi0NcM^OAA>qTaR!U|+3 z$gLn6ghB2AW2pOJ=78F#AoDbgAaq;h}?$<>4TUL8T)|g1*rkafy@SlFUUTS z{UC9W7)TCe7EC>e2E_qLEvRe;@i8$Xysfr;{jb}+2~qz?MEnQM1Ay8A16BWn`~&g> zC>%k4M2-_`ut8>m%_n2t6y!E?Fvvd8*bjPt2;?7-90-$RF17W5+(8Nkr7@5jK>h$> zP}qX_qj>PP0YGsCN{1kt))-VifzkyGgX|-eHb81XeSVM|LHa@EBCH$-v8jncWh2Nu zkewjAKr}iAiNoE3qy7h(0rD59%mS$gnE}chAb-R7ATe|dk^}XVVeSB#1H;JrL2R&^ z4Ijbd$Dn#1R1d(^f@o0r0%`|<%6?G&2yzcdA1FVA+ySy1#Kwxz+5jMb5QUM-P?)_S zJHc*U|KUF<9zpiO_#hgB5p@vA9}o8_tgQlb3y2202h?r>VbJ=DweP_30WuGaL2D+~z60A2YlDIG zK=gvfHXs-jHy}H}dZ6uHklR6F16B()9~71#H88bcGdFw$uYm!HfiTD{ke@($K^Vk` zg*k|iic!NIQvYv;*Z;6OADO0i{~zRj5C(+@h(?YVO4*>W1ceOWfITx|hxTtUayLGeXP47Llp<^{wiCM|&61FmmZ zy#~))gUWAM83rmFsfl6cg6ssj4@9G5kT|Fw1JNM6L1it7hGCEypnL$rX5c25Ar9d-UgY0ZZ4?)f#^r;Lxa}bfW`o@v_(LAKw%83i$Qup7*^hZ#6fu# zM1wGh4aVfw{UCkNF#wP`AiF^R0@3DcA!`;ueh0~c{09mT5Dlsi@nMiU7zU|FW`o=f zTe|@B7l;PixeikAg3=2v3<_gV-x=gCkUne})RzZ^BeLCaH-PJ9=(q|f9+2`8$ZeoB z0BVDQ)PwZHFsLpAg#$<&RELAqg5n4iULXu|Kcr0uX&->pfx`&A-{8Z4P#OWL1L*~s z36cl#!TLa94ILW;$$`uPxdX(8n1Nd7gT-Lu|KR@r;H&>ZVFd~^kRP$d5jkQYv%uye zwOK*&Kralk8RFH-Aa{c5UXULU7!;?Vx(P&sFq92)KNN%1g8T;34;m*i#IhzF6ow!>L1_ga2AKm3 zPf(a*!(g+(bv))+1V}%~9Uu&{52O}^L17ERAismufXa9fAEXY1L1G{|u-dh6;qxmX zGeBVkQVYhbLGwC@FaY@-q#uMqeg~;kC+r3sKe zkQhEZ*!usVv;t0p(Df>y_A$12B2^5Ohe3N`K<0zuVjwWcZcyByxPA3&@OTzTZXn!* zZYRhcBw8E8iZkW8pux|H-j*!tOl70 z!l1ka5(DW)HygxPlMbE z!XR-lrljr%>4lmLG7IDv5Dl^y<~~sU4=Q&d@d&EhNWq{uhxWDCe*llOgTewCgX{!_ z0mx2}9k?(^9u}6!`jOe7y`>h=br#sd6C?&Q2ej87WERM7aJ>S}%OF0;-yjU~H_Tli zeV}?CBo9&#qCprW4pIwZ!^{KmL3V)B7y?7q^nvDdKxTq4NG~WJLFQS2`|{BC3TRGZ z&0FyLR7`U)!+tQ<{~&*X!UR@sAjc7@Y>+viumz<{5C)k&P#9!C$Svr80EvO*2FhLN z_JZ6(3I?TFkQpFq>`^?p>U>yyfYKT$Ux8?PU{L-8*#}7*Z@_&Ym|L*Y(78}h z`3WlHK;=2490Sz_&@v9%Hw4L31B1;+s$Z~$3&ygD^-vG6tCk3OkT~_+ zlLyIx*dTo%`#^O#Obir9AU$9V9*2O01t=^*YCz_|XpkA$)Pu|gVMJJi%)pKZOZ^WD zdk_Zs4V2b##Stmuu~ z12boo9(-*8P+9}!FHk& ze~?>H!Vsyg3Gy#;{DJ%i3LB6fg!miqSpgt%kUY#RkUWSFqCpsxFF^fxklR7=fGh`U zKY-i~G8aOF&KGzOo(lr$g<+5$kUbDJpm2j>NcchY!^E)D16}`v{0_q)f1$?-xqMLA zm_g6=1Es&gg3Z>x1Z{SPX$L1iPPYy*{N5DY6%sZB%5%8&m+bGIP3qK6Gg41_`Ug4BX& z7zXiS?u3cKXplIl-T>tbkbZ3Dg2X`TKp3VEnFiIXApJ0P$a0{33NjZ~4R*sv zP~R6h+(CNa7@BuMZbZi*Gm$Y!56BH546+j)gTztn2aTzK&Qn|q>;Hq|5PLlY@;f3N zL25v1A?F2w{EmX5Z5~kiz=uKYN06IP^rDR)pv!^60NoETJ}3;4`|66d*ZJc!6jb2AK=i4{E1D&(H#?0htF9M}!BY{)g#<)5z-uz;ghga3c*9 zUH{wL|HpOz54rpQLFow+Mv(o!=y5?7AG#hBWG>u%==c;!Y@jj7O`teN_8W)~au-Mr zL=Q9uxq~DOT>}8}2gqNb^f}Oe7_}d>4FHN4Q2c=63B;xs2H6M0gyIF{CXgFJ=?_%4 zL&`x&T>xT(%1l~ekolnc4rD*by&$*1Fo+MrkiHqB4^GG}ATvQ~Kw~Z-b7AJeXpos8 zHb@-^gVds9P+JJ37t}UEmjm&^@wZx9gTfY$vDE*dFo0o@I*|Lo?uVWk z0dq4*92tYeVfMmkNPP)8zX;?%NS%hejsocesRPA5s4fQi8y$nz6TsAf)M3LQdq8%h z>m|eo`2ke_g4}@(!@>nbgXBT(0MU?efYkjUGeF@6QUekP`2!S3AaPK?A4G%NWgvYZ z{h)RVC|*F~APlk}EDo;IA!#4f)&ThjWF82E)PeLM)Zq?OP*~u?15y8j!Ul#xej*en zq{xH924*%WdyUG}L2)n`{4weV)HVPtuYuAZ zD30ifL3V;Lp*R7l0gcsy(i5m$hm>!SG7!WDm6^1}AUi57H09 zAbC)G17s%1Y!C+3VIVoM`5O>zAW(e;!XUdq`oQwgxoc3G1J!w;aD!m{^%SUm1&Vi& z8K5u+*^i7tc7WvZVOV_%N=L|giDiTQ05SvQ25cDO4_KN6`R5~eT?;6TK=BO1AT}th zKxTpXAPi!I>TyuGg2EEn98enpqz8mSVF{6gmZYO}$l8%Y3 z|8e#GLE@zJ{~=+3IAe;~I3cJG6egf?A?W#4pmZ`AG06X*w1Dm(kQhjAu(%oI7Eqc5 z(@1N4aq^*KSRj9a{4!YlG3pLP8vs;(z~ToKNA$!XyFr*xe1Oz|FsR%GmGPjm4;h2R zX^BC0fy!Sa(7kM+G6gy=3#vA)}?t}KOfy#d5a0i;S0;nFaDQhz-G@Ito;Gf@m0q@ImH);~aFpA84N{+E_iz zOo%ykIwu!{<}pEbf!u=&gWLd;1GN)CY;))x63F2XGXvCa1i1+m zh9I|s&Ta&SDY$J2ZYP266ol+=0I3C=3tsO63Lj9|AkOR95UMg zgzA6L9RP*V(f>hr0)y&$Y?zq(9~2f~3`%dXy?to$OKyCD@&+h;L3sl`tq(RnC=5Vu z1?4Yf|ANvDNN%vW7vvUDc!FsX>wieOfv9%|i=RfiJ7DPzl>X?ALFpTW@x=kiO&~Xd zXi%97Dl0)W0%NZqLFFYiG00v}y$8ypAh&=p$X#Y@LG>Qy8a+aGgWL}}3m0;y639Fl z289WzZ2(e(&m2%43UUJ|{BWrS)kUEE3NagWuPOFC2vP&bpz;_xe+Lo+xd&tq$PAEs zKz4yJsJ;R5K{Ut>=4;=B>w8cc0T+kflLKmpfcmK*IgqTgWml0zi!j!|2g5|;5z_8 z_x*v-{tFNPpC1wNzc?o5e?e3f&bfb3dw@{=4{|#UgVGKtT*!?V41J)zt)O*&pmaQl z=J`SX#D+oP01`(J0}vl32a+FX3~~!74}fVR>wi!>2gMJ_F9YrVQTs8=eo)+iFsK}% zHwL8%P~Qe$ynx&Uavvxify#DB83-%qAblNB`A2IEvKvxgL+`xOxebDG)lram z2DiJ=`h}oy0);zRKe)dPG6S{$4+>vwdO=}E4hH!b>=)=93_2SWrw|P3yMz1=3JX;H z2E6YAq!$#fAR6Qc2o3TB3`6`5(+lzoNFBs{keZMGLFXxgAT^*m7*W=N$~)5g-Jmj#Tnw@sRDXfo1PV8hn?Pceng=oqWF`oM z$^Z~ejJcqE2+|AE1F9czxdT#XKB)#o4#asxPi))zu(2$Zik@`4NJ#)mf1E1-S|24v;@#7^D|u z4k$f8x)@8!~-rpAoD=&J{up%!s2v75pAnSi zKxvPj7?f8b_ToAJ2Wh?+)OUoGagZ_!#s-yv^ui!JL1it>?I1Qtj9mLcdO`b-4CtzL1G~PgTz5~B*?umJ=CN@egydgWFIyRasx;W$eo}$ zPmnt>F=Pw?qz)tp3OkTKka-}tgK6+wKV+{XqW=E?p4*4WL&6CbZy^03cae`l@c`LV zXtwe5f33!i|3h3{{(IZl{P(uD{_kpT{y)gk@qd`B>wk9(i~q4+UjO~=>~PKjAdmlp z(gX~H+zT4>qh_3d%mRfq$ZTYLK>VSAVQvPc1#n#n8|xaa|A%eAdvK)7K~VqW8{b;< z_CM@ydPw;ODWj0tpt6u&7;G=7{z4nSCf9zDd7yjSL3JEB?}O__9OwSy7;^^IGobMi zeDy!5d;zHgr8!7l16ijBDmOv)g5*K{C6F1Qauha(Y5}@u2D%Oaq!(15gVcibfYz&l z`dOel4DNrZT96$ewIDlT@{oE7c}+b2`X6K_$Soi@!Z6G{$equSu^))Jkp4L3bw6Y+ z2FyNeG$@QfZo`Ekarz#7E-@&auw%#?OpqC%a000T=>z)(+MWUNLGqw^4p5kb_+WYD zHGS(LVE~E?tn$ceaj~KHf$Rds8^|rD8$SKlXxQ-I!Po>`?}NtrLG1ug{qJXM`#;ph z1w0-=O#N@X2C4rFYCA&D{lXTuNJp9p!y%A4iqjR3^K=R1LPiG zR6UTsFv!gy`#|9VQcnnj#)?506b4|m&~_b|4eNuU(I7W~+>Hx^{fKl2ASkS`hY@sM z1*#UL2Ba6{FObjD!}2i5FChLX293QBJO;%FD7}ID zdmuJFF*r@&nG*uJ1*`_NzkLJbz86UO2&(rX7*tNu8>6~`vi1k4+y>Q$Ab)}|C|`ig zC&f?TyM^K72AJ*v$1P|tA$0rzWFH8F?bra>p9e|;j3Ma(G)_)z-4AMS!R!U;1K9y;`+)oc@)MYkrCtKL2^@CN z@I+^W+z1i_nFDgO)y7ZYdmKUG2GR>!?*a-R5C(+@XeXirsRr)+zU=ygRnmj3P(~f%pd4s z0rMj%X3mcm{P#pxr5H%nEBkzp^!Vpt=TuLHa@ZK--FF{nKPGY4b_*e)W*ra^55ka~O=6o(-9fWii(4#WpxP`e7f{s*}o=2u9)4;ecF z=>@q7WDY3YLHZ#yD4dAFh_DCg1=)>^L1G{b3I~u~D0uzH|LXPYz~ld*`rp>T;J>|* z5xCw5)%_rBkJkSO?F9hgKu5>_fesG;y=-m&N9}y`Uw`Fm@Lkiy#tTvEp#26=Is#!( z7!7p{@&^cm;v6{)K=A?+A1wX@xrHPQ8sCDh;{w$)gT)`C?trxUL1_&XFQ9ZrPYkMG zKxrLYJb=nbu)9#kK2ggvP}vPCTZcLZmBFAo8Wi@Rx&Xu{)lZ;s1YuA;0@4o)8<3eG zF_3wn`WJ@5eCXU9sQm}Rpm+d@gY<*+fy@Jmf$}=Y43Id828n~!gZ5X0_5i`={6YB~ zS}udsLNH{#8iWmLuffa&nFBHp;%88O_VGWcegfGIIsen z*#q(?NDib9WF|-qgh6Q^BnQGEJ}CSldLe!W#VsaA&l`}i2AL1SATvOAAY;%R4@ex; zo&ni~j6w7N>hB*$S;G%AEWL-uKyw9 zt)P5GFAS>xL3Uxr1L)olNS^^zc7e)wNco3a#(~Ps;ebJ9IVcQ3{V$r-!%$QfGn81YwXlAR6RfP(2IM2l6vSEodD2!+(%|kT^&l zWHv+|6!#FbAZiiq3Xq>bX$j_IZe0dgZKUxI0< zyYR9{>woYX&cT>gL46HSS_7pydSXzT29?<$JJG`hBnER6sN6%8|B$i{BnB!6L1pW3 z!yvzr<0nx5Lk=^LIiPY9ghA$k>I4vmu|eSv!l3bFkQj&!iU$xIR9}H;aQy&XHvlsq zqz)tx!r(Fhv|n)TJMi7Mptc5RP90=7$Xrkyp<|G_AbAiCG7DrbBz}?WcF24P=xiI1 z90+4K50V~W=>_C}VlXI7U~T}p1B5~A$3g84V)TRBC+PY?W}st`8U#l5A1JIr?gqI9 z6b>LZItGb@*@JF!PobHoR1H99{^}C0BCKXrLOLOT~*cp zx+*GQtglYp`XA&UkQ+g121E}>4E7tSU5>Wy1QbVLxxvx~faZIUn+Rg0`X5y0gZwfa z<8CPW30D7u%5CH_f!1tLUIt-E9fP`N0X+T%>X)v2{~uiT52AU0P!18l(mk-yl0d;R{j+5(CkodL5(=hC%f=C|!f?H+* z%!Zi@vKNFw{)b__?Es|tD3CsU7~y}ATcPd-*WsXX4*dHAVQvA1EzGST^Fa22_#h0D z1Nk51ACP)bUWVYe;4uZ{au%cprWVA8se`cJ{s-kbkQp!x8~?X9F!&Fe`v=Vdfad%` z*vZ7?zpI7Ce=i#w@cKVnBcuNY>gxY>p!Gg2>VHsr1*I(*2Ki+;Vvzqp{sP4Va+(Ik z6HE>yKhPMQ_lfEIgVez089{9t==|V7yMNSvNSzBxSD~I*{MV>o4?gG5N>2}b#t&#sA875rg|6;@4=XG1dO%}M&Hs8x zeSTQo52C5k|A*ay3+-=$+%^(0dK!eq&tUO8IIV!{c49C}{r~zu=)SbU;*XK;4p6!R zm31JRo*1-V9b_Ly_=Cs3AooR^u6s9P`v0K%fKm(!OHf>b>M)R5AU=qO)#sr422}1t z>J!M>dZ2O!l$Sy3Kp3*gA{Rtfl0_g+01JtJ=2BYmc2k8g<2fA+(#0FuI-JtyxIL#)Z z{|_4Wo|KG3yJkRfAWAi`O+xvf#pWpvz4-fFzKS&HT zCIG7EabZg9e^7jY+y!crAiEXh-r} zREL7x1M)XW4x|R&gTfnTFDT7}*dTv_#6f05Fl>z@R4;fe z1r%`$O9UAhSSj1^ESJ2MmMa5ae!9y$Yg1YG7g@J_v*Af9z}5E$wFxMx|3UQ~$Uh)Ag4_mTj}#2@FDR~% z(;X;%fW$#~FoXlh9VFp(@BhQf6p-HrgC9oSfT;gL^#CYd=!HS)8B{Kz#{ozjUhYEs zTA=Y^NO=e;|3T%`D8}9f0)-z4gYqV*{0D^-s0;;_ryv?u7lF!rP<{ld1BrpuA@F<1 zeDIpL;IrnD!ye3D4{2+F#uGqxfyyaRJi_Ea<`Kq_dJLo=+-`uLL5Eu(BBEI#@}T$!`3uHJRu2*f@j>>2`~!18h!19O`~p7z zKi=0De9mv2xA%Y0`ajrOf6)Fu(EdM~)c>G3fsQMK+&0oMC=NhzgP!g{;vhU2!UN0M-4VIsjC!fiOrMH2(q<1M!hDsQv-P4QP%Tq#lHk z;{eWI|KUF()>vB-NMG$`k>jlL(NUs&H`hPv-+((f8pz;NlEkp?eD?+7eMI}6egfC08n2Xqz}Z0w?~oY89?p;g)4Y301@dCWIs53z~KT} z{|9mp$b3*+0wxc#6Rr+c_e1AAKx#npAUz;=gW?E+A>$|@aS$IS2Wn4%_#knR7%~RA zAH)aKtKWeA4^j)`o38)#U%hS}_{=}hnm-T*&HaP={MLGU;Bx@%4GnS5{ZrEa2e}s< zHiKlXJ1AV}iD7<6Pv0Onz~n&efy5wpkc3g{e?0fSjnFtBsJH}`0if~?RQ7?`^uVBU z6I9Ni`x!JJ3UUjm%m$SKAT=Nis#8GaKdk%%m4Txev+f6l38+2>oqr1oH_+L(AinXc zH{gBY;PBf3xlax(53XMz>&ZZRVHi{&f#L?#c7W)CoDC0RgW>@s2Qt?Zdaf-k=@X{G*}Mm zcQ6~$-$#}Q=>fS3WG~3gAT}tkfcRkcT1cB7qz?zeaFfV7BHRcy0=j-avIG z*yM{}EI#gZ2f0%mn3k5FZpD2tKI3B6iLnq!xxD?GCV8 zVEa75bsj<<+&>6ngW?~g24oM+?N(d9{?}{S{69T71U&8! zy8j1+{cLUj2RJzV2d)3}w6>;N{~zQwkbgiJCXuNF9iV zse|y*!wcenP*{W3E`rpx;eXIwexNh` z-7PKuJDHh*?*MW#HT@6b6RQ71x8XnkAJkR_xe1g8K_G{C=zJHfTm#9Y zV#pjNs15?<3y@w=*##-LKy?NLgUYgzieX^^3L8)ugX(C|*gZ%b6qca63`8U5Ss?4a zKyv_~u!MyhD11Tr8l(?|L3Ig842D7aL2Qs&Aa$T~dO_+y^$A8@2JXv4>opWMB)&jq zfZU5(|3m6akR2d5lY>EZH^@yeKOxhgdK6?Q$b1k6nQyrA75M&Jkbl7Xpz8oYa>Qb| zUT9kiV&{AC9tsE>GDZV3A5>Q(t49epX#Ec>S3%(q(hs^538V*K9vp6~A^QSAY*4-hsRz}&AUz-q z;)7_AJctb%ZwA#Hp!x^YJ_Ly)V~{-{3~FnD)PUUquDh_+_t?ZBXZV540M*GLJ3)02 z$Q+RSV16Kn2I&Wx12PjGgX{wN6KpPY3?Iw}^-Z968iLw5Ffn{I@|r}DKj3yj&pZc( z8z`;A#lhi&SpNreBiP?yIaoMB)quukp!X|+%mKA)K=y#xFbwi5NDPF*^8w(z3~AfJ z)PUqb@d;B4a}P)!6n7v#xP1X#KL|emuX;InuHRN)|Gy=4%|ECe;0ziAFfszK1q7}0 z$A$IO)c<>Ic>dpD)!Y9@t3hWBzx!{r=G}keweSC%t_Phz_3^*i`caH649wSm{BOGM z!+&GYom-$V1K~jyZXh=jjW>LP`v;T;OhD^jM&o|K(?2YYnSjn{TK54QM<6j;VUxA* z|AR1kng^8$AaP>t1*r$+4WqU1!Q}}oJ(+L#^xtyR=l_VhI29f6I--2ygm~ zWfIDz8AV#6n}d8VK~ z;rfsNtu}xCZ?@qhxV(mleE`QBhz&9eWEV&uD84{(0OEtpvI4scak23;m~FKg;!luT)NuI%mbcjW2^^>9 z8$W^hps)s+53&=4VfKR9pt=<19uOObL3%)JxZJuA|3Pd}S^?z^kXym*&5*QU4%!<6 zEdwmK|N5_5H2Xj3E7j{Wnc9Td zr~ma9J^Zh?@cw^;C6E3aL9yYINB>7LjxbpK@W0-o2mke<7!-bniyscn@LKx#zro^% z|MeF``~zZ-#ygI9r(>P~#e@DLP`o?@#}9~4OANMa(F2S$3=t>A4UfR(2uL3&Ux3OL zP+kFHgT;^j8!dbC-(>mI|E6&K?7zvfC;yE>c#!DZgVUQRMqst8hADdes?nn6P zDcC2ikN$(g1%yHVG+72w2lBhg@+bene0Uf<0hh%Pbx*+Mjp5SA;BYfs z3^NBgz8?QKS_;9S@CBz8Q2JT)5EAB~a9{TLzX=S3>|6d69M+)l2k8N0u>2FSS)lR_ z?6zf3AoebO{9kV&q?`cBk%GbDu=v4$W00T0euRbNlm8|l{<0^K@)TUQK7_CrJplU~ zq!-05s2Z>zLF|PO!0rO61Jz$JH-p$9H6R)kjv#TEIUq4mJb-8uaGHa-2OJjQw1^Z| z;IMlF&W9lNAag+G87+AX&MzP_c$v8vl2<_W0myDhcp>})iX(kcc?*gg5Djua)Sn>W z|JzSJ`rn{s^M9SHrT=w{X8hOBpYq=ze+rleu}3lXurMf?@?S4+@_)^&{{I@8eQ>Ok zJMlkAZcv0SL1ydZ zO#H76!r2r5Yi0NU*8t_4tp5MnIUs*c{BMvy^}liP^#7)%Gyj{H&i-#+Itz+t{x>Tb z+}IrKW{`Vl|2He0`QNZ;8aS>rv-|&RX7&Bo%9;T7J17jmVUY_8iwWR(1@X;FW`X@^ zS~BB544ah90E-zHO$V37Aaix|CjZyXoAe)MpHa~?aQJCvPXLE0hz~Lk99KCL|AX}E zivmt(j_}L8VUr^cunGXs#bhFXLw6Z7s*UOvoA4G%v z3i3Nh4XEq|nQvM=<3HSv(wX3}1^LmaaO!`M9s2o`!D68F2oeMN8>Ai<2OzcJa6nFf zrL(|k)Ua?GIDEnKr86PnS~d%89>@%kdrXRF{5LNLrRACbjfKT-kpE4JrvC@g zpmN!;VCsK3hMH?sIPE_uK0(-^VCsKR+5yD_C_m|CcKufiDfq7(TKM0_$mqYLvGIS< zdjCi_H^_YewzmIW&CUN4+W!w)8xZT|{@=|&_kW1B<^ObFum1(X0snIXe8D)|-v>;? z_#hf2hKxaCFbon$X2bX(8ibMMKx||&5FdnLVlWz648(?EkUR*3_#hgDL2MXC<|DIV z@-P}%4w;Qj9$73m(C>eizt4YP3)BA|#)fbl?d*55)Aa=Bq16VBD*%5;Vi4nw34*z3a zo&QHT+Wq%7GXa~C>E{jhbB3Sy|0rjN|L(?y|HJI8!EV519@s6;j{m{(P7eP;?gFu6 zT^#?%yE=pQg4`Y9VE5nO%KX2liP3*AQ=|XB=BEF{>}~#o(rj&9^#AURwEq)xv;I%a z%l0mcb%FFrRo1O8$E-w0iqKE5$ zKMT|Uo+gI>z08dNhuPcy2gM^O3_xK43X=#&dvIO@g$2l8-I?kCTT_$%x1}ciZ%<1G zvq9ld8ygKSPdd_4{)gGw{Lc#x_&*^h6YT%iCzCoAKBe@@o_`uN!YpfI0YkoUhWHTi$8 zzwiIXgt-3`bF=^VWoQ2H&&v28nV#~$DJlMcb8^D}wv@#G-5II>LE+VzkqWNU+>H(XmxhJ>Z%&E_ zn_UwV2~KBVH$me8q!yI+db2XX;RT8#5FeB-OTt6`S44$_!?Qm-^M7AX)_+jAHYUdZ zua1fOUl|n+#vn5$%VKlNlObnUE#s=vDVSI8h`K*wT|LH+N|3T+1fZAGa z=H~xFIMmtse|Bi-f0#OCvtVK%8it9L2dT%U7F`@!ZEjfDe`E~0F9O7e(J*#lWaR%8 zKR@uE5mz&_{~=CJ|5N<^NAUoML5zn7I9&xfI)d-^0=4lY-QE9#a1@AkbNe6R>iQof z9syz#z#w%n3{nqbgY<*$4FlN$I!7$l%jy}kc?TU&$U%frIre~^O% zIJ`h%3ko-o|3P65@*fC$Sy}xD;j-A+{~$9O)6)JoL2*NB>i_oa?EfV(G5;BW)k2QnX2UV-+Hfx@pcKK{S6i3vC@f#kY!a=_sZDqleEtxQPx4~ipD zT#kkkcghApU3}T~WY~nC67!A^c%tq#e#6cKc3>zONhOQna4x+JPn0k;Lj18he7$gS5 zAT|i2vq5|q2FZgk=&mIY2IVtQ8U>|A5C-u<;R%uhsRQXlreSP!ab!M>jjk5N2Vs~z zh(^cA@*p-Sy@2utG6tnlbUrBEfy#PNxdrkEDBXg}meDrAz_x)v^*^Z01?6WD8&rRS zFt|QJs{cXdGpM`((dZbLII_BEPfzeUqM$k>!N&()|0ntSg3l5ImAxQyKz1Y7VaR6S zVuSR79CZ50q3BnI*WdRqWwKPdfqT3P+~v9vN3KRg^UdBc z;csX6KiJU`yeAA)uLnCh{m+kx0GkI2H&~c~?5j;qhPxZoz5vxVAhSSrmBz+`>nTwE zR2&@*RtNGI$dBY=P(KOOMgi5K$o>TR2jthHs3>qzS5C+)?YOjIv5Xg>j7Z-574Jt=LZfs6V`wvP> zu(lOQEF(DhKPaDp(h+DsALtw(Q2GG1T!RE(!dj1E8gPYrbkeMJ1N>iYFe^LVj z|AWeJP+Wu5fG{ZUfXo1m@q^a-A!8jC74W(M&_032!ovTVfq~%r17URusNMi!5FbW^ z*ytE02ckh3T^^Z_ERW1aR)fq2sR3bRF=RHf95yzx7)T#7AH)V>kT^DsPY$FWCJ!0| z0QHlR>wjMx8*rNplvhD&VHl=|SQ=R$x*lXX5E~{BV#6><4Ahxo&c3QpmaNm2d)hOs`Ei*9;hz~>PLdgK@<$CPtfWWP`(G14KNy= z4da95p?z~ueFaLppuPj>9&uQlgUT^bn((r=2KQxQdO&92!(er8Zs4*HrVbM~Gxf!qnIQ$THhPyU=_@M9xwMjsI)k($0 z;C?Qst%6+6fzl+Y7}OsHl{29D0{Ic-evp4b^(?4<1=X9N_7k$XptJ|_4=C+}$|_Kq z1Zo?C+yYVy>H~xP2xgxK`)c>HmA2gN#8lMG=r=@}0XrS^CWQLQ8$$!uo7pT1i zGAF^?8(gn9rl-TlUqJ2xxew$vP#q6)GsumgbWod=1n#4Q+5n)jo1*CG|Dbvt6c?cJ zl}RNf;BgaBy8~3ugW?esw;*|tdJqi~2gM1fuMY})FH1}C*efUvfznliukU}5`#|!b zI0M!Hpm7~g-hibkP+1QOA5fkF<L_1lOma`X7|%K^R=0LhFAp8?BzfCI+f|kTJ*{P`%}C zWd$DVM~-Vyp9Ew-s9y+D2i6C*56p(vZN#!s+=FZmv>gI+2gn{!djwR@fyS*teHl=j z6jaB8=G#DZRI0x}c&ryxwu0(pP^`Jf_SdW9l|CE4$|Dd`GBps`o+h02+${)%~D&0f~d`2DN`c{d!Q|2d6a; z5AZxc$d9153@Gn{%6m|I5#$!oI0C56j@T z1Vn={hz-KH*dRF&2Fc^XFnMGenGMs2ECymDV~`qTK8TGjhRg@CVHl(qgkgLTjm(F! zK{PT(R);PQl7nGT-3rRfp!PW^J%TVOY(eQ2H0};k2htCsK^Vpc(I5;G17R2&L?dIE z983%sA101WgV-Pp$}6yX9z=ucdJqP&K^VjaxfL`<2x5c!GoZF1hz6|(K&}f$+4OG% zfXXg6=v*?W3;@*|pfUi2LG>hv4=N8p=@86Ds*hoO7!6W`jKSiruHdJnI7gVck{OHf$^vL7T55`$ro88D1224aK6K{Ux2)E01e2ah*^{0PFJ{x7I+3o6G! z?g7;cpfVifZqRz0ii8C47&oYX1C`I9^#Y(a0jzBRs>i_?I#&xS??L@J5C)a$AQ~hF zQUlWiG6z)ufyTu_ZDUZ~4w{1pg%hZq3~~=BJV5RPVX%Lp^*+eYU_MfOV2HW8{`Y~d z7Xa5mxw+tZYf!xbD)T}8Sy0^u%AX)Nf#%FX{td9R`wyC{2i51G`U+H+fYgA>oEnOsr= zUh4!Z7eHkkIT%!@gUko@r9tZ#K=m}p?XWr)#BR^Y0k3la_0K_efb@X;QU_fN0a6R9 z+d*v~&^Q3dzo2y&pfPI0D%TDhELAGjN)6bp?+NfZ8sg zya4LQgW6W0b|h%;A4m)|F91rPu=-z1N$J0drY3lO3MdVMDCkL25u4CJti5FtQkk4H8GD(b*tA2*cDNvteQ&8iqmjKPaDo z(h(>Mt1Ea70Lbq!`$2UgsO$oj{~))4`f;Fi3laypAJh*5rESpKIZ)XSsy9Jp zG^or5)q&u)K|uj{ejC)c1&xJ+Xi$3rRPWX#CjKvsi1-hhR|UBPWEZHc1?6v0z5vyg zpn4zVCU6|MyTjKtfYihMg-&CW1GyVi-+{^ukQ+hu0<7)<%>jVwG|+f9s2>Tc`#|=B z+yJ6MbseY<0b!6@P`M6jmw@Ut5C)B#fck)-G63XvP(9L}pAVjY2Hg<{ic?Vi4yp@4 zZ7EQh5$EX%?pK1uL2VsS`vepopn3^Zwt>PM6b__fP}>32rv-qAwcc|jlqE20x}C3gTz2>08ki%!V#2CK>hy&7nlFuZeIVrJbeE< zIk^5eF|+z_3dYu8Hi&OxYV{wC!Qxi`&CIR;n_Jlax3seRZ*A@H-`3XgzoWg&e`hDR z|L!gx|2l0;MMq2Bj}h+Y3~u!qlPDAak){ zkUEe!j0Uk`7$gS5$b1kRCI+HG7$gS6Abw_05O{nFR33urdaQJ4=>NR1Fz}ofsJsW| zRZuws@*Auk7^MfO{`c~N&kKU;8&JN6)&F1`RM#T)Ig#rabT$SbRKL2pf&1B@vI8T| z{rte|qd@5!)TaU24>ALULGHjtgT&A=x>}GtOpGWt$ekbzaw`Z!#|A)kASk_p#wI{@ zBB(t8%738t0EiFj6M^b#kX@kq3^X`nP&k0(L3%)ZkXu3J9H|&o zpM%^EYJ-64R#2S^!yrBkgWL(Kk3sblXkR<1-wPUp0m*~fJD~Z4`sC#Qp!OQ5`~{6& zfZ8XZumjcKptb>M%_JzjqPr2aP6JsCt^--*K6MPU$ndQe^}iQ3SV&j4;uf6_Wwck z2B^*e(I53f%;4! zdq8y&D6GKlA))R^_7gfAWHzWCb~7^r*DIjDE~u^t(V%)b*4rDrcMVi`gX%U=8wFIp zgYqq?jsw*Jpt=fF2ZH7SK=l}?uMS!h2&&IOZ3fUh0Z1>14H`QK^^ZYoDM9`RVUQW1 zxqeU@1GNW0Z6eTkI>`T^`UKRL0M*N&J}0Pb0Hp^~F(^zy-Q52{l^7~}_#dqH(Q zsEq>J^8spyf!qgb4}kjKpl|`V0g{rydk8`E2%xY?_Voq#kwNPkKy@={%)-go_&+|k zg4_e@=YZN@ps)qm3v&m^EieocgJDqEru+N{Wqc( zhMEa7-(c32|N72>;CUQSx&vWQ8Un480mTg{jzD!isLu%+_Xqh4ly*VmNuclpodF1H z7l7gwl-5D&L16~M;QBu|7d-zDsy9IK1EOI#KR)Tds+92mLJNlf6MY%}cYx|?cZUD% zAdJig@d;sk>OC0#_job<@AhQ)Zzjq3-`C9>T>pdI0do_G24R>OG8-laqVZv5J?Lz7 zK0b3mav=4f`X5wQg31%*v<8YFQ2h_;XMofqV~{>{K1d9NVd5}0hz4PhI5LgQMwf%} zL25vlQ2h^X2ZV-##|R3eqQHAgKz;$WX+U)k$bX}FVEX=`a0jjJ0o7gb@qcLD2dala z7+fBJ>P1j}goMH3NPJM5gkfYkuo>>|;C<+zx)Wq441>xLP}&BSC!l%?q!wldj7ByK znGKRh=flL%#X)=!2FZgkjEzns%YphrUTpmqVMt^}2b zpl}40eW3aaH0}U_|c0LUz`eW0+0jzxgngN$MB zMHYjxamj(&bD(k=)b0SS-v-sQpn4FrJ{(lUoe` zi=(2z`{_Y?Kx5OOb^r{6)||oWeo*}n!V`*${)6WGKy?AA?f|(FRF;AHc6Q+P1E9VD zC=5a20%{k4>;|<*KxG3c>`28Re}Kv(%pl|}URX||?s=q;FA>gnyF#+F+3u^CSb0^3TptuJ44OB0J z^nvPjkl7#%s{27S2!q%l3}S=YATD+;|MjPz{cp7I|9_($|Nk3q{YNtlG9P4*-qh3o z&5SL;b4;Lg1j3;72ntisIsaZZHvd6&4Jhq`=6pbHUeI_KXf6O09-#06#WN_~BV$tijgXCctCWnuYt_GwQpBPLIM1%4SXv_@M zmjIyK1d&^KMN`cLFFWa|Fey~~(4{&<|rXC~?wgbs* zkU3y+q&6117>p01K^R>hF46hW|Ad4F7A9u_Z*T z#+>1Qtu@2{7FUMmAz*uv_6Q2GMpSy0;mBo9-IOe3?A%>#+UFi0GP zL3|Jm!XP#-j7=US2Acl^rFBq#0AZARAKE4WiGlI~sQw3)f8hGx%Ig1U{XcN^KCB)F z)xn^A4l0{LWi%+CgD|KJ0MX!j1zInG>Jw}jqy~oJ@*q8+I^DwqeAXkVtOVHwvlmpq zfa*L@`3b5IK>9&;g2X^amH##9%ZoGeP25)j<6PawiOf+Bcvv08qOe z)UOBC{~$4tJjhR=a0Qj8AR5&E1)Gaz4oD1yaoUR|9Eed5Rs&i`W^D}~uLk8s(0o6r zE(eW+gZ9gV<_AFPKO+I-d}Is~ z2ek`8W`p{Op!p3@`2Y$NP#Oc3T_EgdWAh(W?}Nq|Kzcyq3Lt%;`D0KS2TB*DU{HMo z3S*ENpgJ40)*jTJ0oCiExeIU`AT<@dhocE}b|3T%B(Pf0xIk(ucx^wZ9tODw6b~T# zLE~c}_k!9;pmr*V4QfAu!U5Fxg_X-7wIB>?hk(j8kpDsEfWio5H^?0zvte~Th=yU1 zI0*YXy8hRjeHq;MC$8@Q``>UAF8qhM_QS?M|BVm)|F1jc)PGxjga4qm4k+z{(gUcR zwlg&R4;ljio%IhI>$f#9_z$Z0Ep>Il_y2C`$L2VAu_$(-_L2VRJ-36-OL3IwO&kM?vpz;MY=3f*U30|)WY9D~o z1}Kg|c@;E11L`w_`qv=+$aOwC8&vOs>)y1q|Dd@8P(K({SAy2vgXT#Ot)hFbzF_8N`OU14M(cl~?$GgVi7Y8*TqjxbEKk@4wOB|No8m z@=Z>FvN-%3vpT=#?81qADV(EdN9_5a9qhnghc|5_)=ygYK94`a8uF#PXuXZgRV zKJ5Rr_KN@gH5vaW)@Q--r23ryQyX*t&udEhKR3(lf2#}ge^7e?rXQUK)&HRWzn?A- zc>W*e77z`?pgIm08=oAy9++AX4Z|QcAU22wVHg`mBa6Y|~yKw=;o)V>GR^B@fBUw~*3MrVWSe^40% zZr_`kf%jd3^3W(An7SVn?w~RrR{w+QD^NWGtN%ge7>JKtSAqFxbrm)-m>y6$3Yzx? zmG>a~U>H=+gTz4PCaAv&QU@~!M1wG>?gC+CHi%COM%IgsjVy-ET$ntJ#-#=%kBs5! z(CdAqumh=wtAmPT6GK-6`2o;bf1tJos67H=gX{&_iH|n%Px^1L;pczDEueZE&$$0)P@n(z zf4x~(|LaXY`Co798B{#w^nbmX=l>h5d;i~P*Z=>9VD-4oGurz9zrnh1{|&ri!RIi5 z#%(}tHqhJ*$lsu`574|nDE)x^4{8^H+617s0m1qoY5X5lSAfzIjMk76{9ogUyZ&!> zV)#ETT=f6Mro#Uwc7FeLjjaD0n%Vz1FtPh@U~2c@(A4g~nU%}`fRLE~6Iv?%&rZ|( z-{gR_ZUAjA09OC|>Oks$WVe9WAPjRGG8-fY!pLICY>*rXgT%05kQ@kuq+9I&}9#-eWXplGzgX(`!9}raLgYpche1g>nqx8VE0Wj)+XrCX{1^|_vpg026 z1+Y2=od(N8>n;>ISYH@=XDF!tL5X9~-alJg@cHzhavD_sR zv0*e!97H3F!PqbwBoD(NF%Sm39aPt2aR*o)O&psT%uHM~E}=l)UO1!0YKyYp!y#q1}Z;5X#->*Xgm>A&w$DYQZcAs z0V;PU78k?MuK~4LKyCoJ3ABF^G{*s|he7iMpf&=i90RRU0qsWwhet*R_#6OGy989$ zg4_oxgF$H&6m}pC>f^)edypGJV&HLxgoOW~_6MjP0kQ*xLG?Wd!`LtyT?`~{?w9c2 zVEy<1hFb~L|2zKwH(2rFzlv+*e?>j>|4OEg|CLOg{wtY5v5EbEMN`NBYN18{^%vd) z_wOO|1UT9Np!$FP_y1;oiT^=kAt1Mb(gi3?KxqMlbHc;_rw0dv&w&P&3m`v(+6ACC zA}$Ob{|EK|q5J9vw2B`&MWHlf@2!q7XX^=op(gNDPEwYLVG6F?=*gJqRPKLFOZ~VQN5PAPnQfXqXs`hKYk{m>7%(iDAQp z{L2k8aX1)x4W z=qv-!c}Af69aN{{!=S!DXbk}fcnXxxCg~MsBHnNZ$Rz@*##Pd0;vPl zFQBwRDh9P5K zz~>@>+y|=TL1QGKb^^%Vure6rCXoAJ7$goV>p){8APgGE0O2 zR}0GdZ@3v`=0DtP2|@M$x^Mq2{S(3SFrYB&FDUq5m6-UyI3@;yqoctzC>%lSxUxb+ z|7V7Vg3s^3TmNI({|`!Ip!$QD`hQV@&Ht>l5TmSd=@c!@Z;q~9f z+Wxl&Oh?e>f8aDv%2S8g72&?~nbWrF2VeTP@hN%I$ABJIK z$TTt=rVd8KU_|cDad?K-3%I+0QFfwWhy9) zKz&`%J^|1iJ!tM9ROf@nCP3*Dq!!dh0<{G|>e1Z;>H~w^3fdb7@)KyR05rb>I!_T4 zM)3K6=z2p?T@S1CVKhvP==y)(|Nq+UTmQ>TO8l3Tk@+t#ulQeHR_?#Nto(mDIr;x` zGP3{W6_x(WNr-^e=uW=~nFqkN1^`3BKzQRE~q< z2^43b_$0Re2h|s#x&np?)&H%|4F4CEx&03fi~27hDE41kTIqjhZOQ*N-C6&aG^hNZ z-(C9O)5H6}u#m)mDLJ+Ol{tz3XU41iZ*qdJ1H@7P!^Z!S-Gk1C@zH6J+hJlLHVoqu zgNb9Kk;QPaLH%Y>-w2lOKxq(^7D44Gdi@VF1B7920@3*RFgbJ@qz{B);vhB*gT!DM zCI+HG^*aa?s{cWG5abuoSRE*@g6aa0Uq^kRA{l8H3CQVRSKU zd~|ilYCvpU@-T52jjk4193)392I&J~n0jP3J~3oDkRA|57K5>2G*)@oTm*=Q&c%S# zgW>`-ehrFia6dRN??0%F0j>G2PD%pT*PwDAl#fATpz(81eF$3n4=V3LW`M?sL3Jz6 z`ad)CKS&xSNU3u-HX+yWXa0Oe+3Qw{~BqX|1}Gz|JTf$_Fu&%;=i1< z^nZC!TR>FszfR|VqUwKhX#EdzD=1D%jb=qj+HIeo(lB$|+EM zfa-tb{y(Vh2VrpC0;)rh>UWSB2!rYZ7{=g3$NxcPA*hT1jr)Mc{Xuqu>VHt17L<-b zWhkhf09vC4tN%e}!7$8xQfZKWY}xK3#!jS?J-a}0y@_gR0n~^sX_f*P&|O*A2crm;)Ci=5F1plf$DG2xHzcZ z0*woRXwWz}sGdN_pm_mMT@I@AKxF~QOpyJcele(?1&tkm>)DC&K?Lz@)neiLH$usxeHPcG6P0~*w`?#Jctd#aCIPe zf-q8B1uO>>gVE^nNPHCYpkV#l;4NIT(Zd0&RPN>TM7P z)%&2l2CCOV7&NvGT4SFX5&}N^7gUCW))Rs5=mxddKyw73aeq)942mDncn~P=K=l^L zKcMjd(E348y^V}PbvdZt2&%t9;{~9-^Puzv!l1MOYEyvfe^A>2qzwxy)W!jc!!W3Q08#^*rvR06pm0TY2WTt-)Sd;+ zpMcsdpf&)g-7>ML=s$=C`2iG`pzs5web9OaP#A#L27=}VKzcwJwD$s3_rum6nEA$o z*Wu$^|7W!A|9_+HKmIFw#Q&ESfV$|2J6j2HKm6um4X}{SWH@qpkk~)fXU)ul@&(;ZN`v z`rliX`d?MU@V@}B5coc$89mMaXLVNmpV3kIzqBCdzp9GHe>M(*|6wty|CcvK{qJyP z0-ps0>hFWs03eM6!0LbW@qdt8K=BNsK^VqHreSP!d6+neM#jkMU~G^)G8@E4#vnNm zMiv9rtDt@pC`}@#LD0AwsQyP*3(|{@LGmy$WHv|)7at^!4I}G8mIsN0#v(xVJgCk` zra^2F28n~_5Ho^l?Is z6C?)0pt=AZgT-Ov&91KS`#?c`epnoX*q}NIRK|k(4#@RCx_QWau-PE@f$BIU3=)T7 zWc66tAisbxNI!^%VPrmt4Z|RL5F18=*k~AJH^?p+4Pt{Zj1QwhV#H#Q9vH@}2j(tl zn1kwBP@fwXrl9%_v|b2Q|AXVx-5q?^JE(6B8e<3bOF`%3fa+>c9~6{VLG>GGJP&mK z9jM#^_4z^V0MI@0HrTbUj^hQP?-hl zBe!K|{|C)4gX{*G0UDDB)%~EmcR*tfpguWhoj!Q1!psc3M+B5s2w_lr0o1kurDsrC ziHr&9#U>9j2V@?|Tx5Ar*#%m=1Zo3-)cv(B46i8qgU5;PnW3dEoO2i0S`>&IT}8{rbO>xhtgqFDdq4Exzu*!MczC z^_RZ-ufOc^fAxfh|8kPz|7H2u|0@_;|2J6m5^|;hf%$*r`X3Z8gvS4gs{fJp|AFcZ zP*}lel=>fSuD;2U;s4Y~ss9Znng1oFmH*4i$o*GTRQ|86ZS>#J#OA+|sm*^`IhFr% za!UV`Qqun~>M8y|C0q(}1`tx64{irQ`RMgO%pJ%yhz-Lqw}SY{Y#1L|48(?EkUR{7 z#6WC9G)N5$gVcgBh!09vpguDw4};P(EFFUK7Dx`J4n%`6NDm0Z*!XCe985io528UB zn>a`egwf@Z>wi#P55u7H1k4T%{SV3?pmjH(G6j@}KxNZt{Xa1EKCCVVmCvB^4PO6) z*8CHw|3P&CsBQw$xG<<50`)aP^#-Wi2i5s7J3(~=NDh>iLHnvebrq{~jLTJ2pUL-JrS)G;RnQ(*}+IgUkS7 z(0L-Dx(yWmp!x|^?}OT5pm}o8c|D+dA5>3)&g}*Dfk9&h@!sC>d2!G<9;nX?8nXvs zP#XY7gVqp$$^uZFgY<*$nFnKUZ}9#?kT@tUfcm|laRN|(c~VKqe~=qM_krhzhyTwA z3dJ_ET26z(7z6n~&G7f^cv zv_=pVo|XZLg!}(H|NqyUbL+o?x(=j&FDL(BQP=dplC{@=C2Plr7%ge}u z*8*x)ul#Sc`|p3l%{co0pf&-Ce34#F@#j0V+5p!x(fPYN0b1(o@*_)YWo2j2k$ zDpx^u5pw+x(@zWyvKKUt0BTEs+z4WW%3cr~B!_{a?HZ8VKy@W(4gy4@W0*W>T>^?6 zl75gHa2SEY1lsoo+Y4fYFtmQha065v-G3l;ATbyXVuLV<55pin7=!A4kR3?l{GhrL z4C2KCuNVG3%~fx-qfrU23d!k{()$esun7x11? z(B3joyP+mI89a9mD$7813TUl9XuJ~??w~$4sH_9|g%}JfS3qe2gh6^iZ2=GljbDJr z;qC3g^VRS+fu$vQKLn^w2Kf;*CIZ5saDmwe7B@5d52j5`!DlFg+yvr-Xlxjy7i1Op%3Kzz`+3@DsHV=5*-u|(DXy8S2q%SlQ8mzS0OFE1zeUrvzc zzbt6apD^!#c}a2boPdIw)_?8lW&aI#e1+T}1ght8VOag|m+&7nKLNs^xG9c}{SVsr z4=%&Q!~cWg2UNy`<^(`xd46OhI6T2^Ejzpa=rnl$KU)7ER(F7CT=hR_?O(Ga!~cba zw*O;d6aMq^3jUXuSN;KLwwAbCPGObtjK2!r^@7$gS5FfkY#M1wFk zanK%rP~8eDpFwE{l(s-LsGI}k8IT^BUJwn!=wcu~I!0CpV#6>@9X38p4xI+61-TJa z&x0^Hy+F_Y2k}7|l)gc8Vjwqz+A^U011f_+3i2DMege50nFg^z7$hD88iRn|^8*qC)r%m#APh1GY(CUn7#m$2#0O!p zJjg9b7$god7lc7!2dbAr^$Dna0AY~7LHa;-F33($eGbwC5(C9AXwDm?4pc9K)PU+B z(E58&J_VKWpmYIR3lAEX2jyRo9LNlieW0;z(D*fS{SO+?2d!rVl>;F2K=yzzhz%M` z0O@x*C*DKyD?3LG>*tK0$3B zP<(>g0N5}{4wN=QVFpSEps)g!ufYxu;Ik1xbvMXPka?iA0>YrQ15ytPV^H}8!XR~^ zatzdF0AY|GoY>qPWgY|6#(=2>nFC6i@ssd3>$v)!=n~;C{Zm{C@>yt^e|B zTHrB%IdKt4yFftV*t?l-vVv_KWHomw9l_3HWobgQyw4x zAGDvMA|c^F2!r^rumOb+ItJJOp#DFW`+q=n2Cn+Q*_Gixc<*0z;D1*SzyDmEy#FhmmBl{CKrbP4K9q}b^xf( zN5-)FAJqQ`*$=A6Kr}MOCkB#(VUQjW8$=^xkQfNV#L(FwJ_v*4K{PssiGyem2IVJE zoe4^>p!5RD1E919O4lH9n0}C2bT&*3MuX&Wu|aYm43kHuL2MWXsR3aSA4Y@NAa{cD zG^p+eVGtXJL3~iT0=jb>RJMT1Vvrv|YmPzVW1u`gis@hXgTfqC&SR_pL3IYGo&eVw zpn3;OT?LkdiX*c@vxCfoVNgE7hC$=MU~FLl?)!oK4l3ti7}SmcmGPjo38F#eG6;kCpfVp+ zUx4aNnBPF>8-V-(YLA2JM-UC-BiBK&`Uce20f~duVfY0ajws@wa7V(RumHsisC@wo zGmtw#?gRN1R6c;%Ap1b${h)dmM1#UM9L;=?yFv91sDBE|pP)7xD35~bbxReD=4>Au_w}AWwN|T`eC1_n7s4W1BTaf>V!JzsGR5pUz0id)8rlIEz zgTe)bLGmCB3ImWlC=5Y%g4_j4r=U0h_0K_J2`Zmp7h0A~4{zL!u zCLH^(U9z7|NH6?UjGksBgmcTY#1M%2B`&Mm^g@y4a4MNG)xVM55gcmh=yTM zz69k(So#5_D^NNF)wv)HQU}t53xniA7$gs(K^Vk_VGtjNafzYJBdY_kLGA$6_n@)_ zgh6Z=2Ju0D0M-AXG67VEg8Tp~Q$hI%l&?nd(5U}GWj3hX1JNK1VuLV<4ZtN+7D2_pFQ27DsbAjq%P~8OTPlIS={V+C+2APS0q2u2mHJ~ghA~AP#p1XSOE+ykmRK=y+2706sr z9Sv$DfY>0lAQ}`#$TUbCG)4l_3##iueb7 zcToM`486w&G)@ev|G{)l4tU=`XimQ~Hy3<<9H_nrt@i+x51=vx6!$QuRF z?T3K56C7{W*8f572kq~Ntw{j28$j^@>U)9YKxrD(#sRq#)P?}H&p>TFkeQ%<4k#^v z+L$1Bg33HFhNeZ37&6v&4JT0l|NC#W^VfeBuf+dyB7ERBfLdt5f8%5S!FTw9`ueIN z1>kdkg^9QMiVQ~Eq9sdW#J*b`l(J+j&{&!~h-{-^e ze{yZ=e>ny9|Ga#{{{w@<|1Yle`QKp0@W0cA;s5OF(Ek?JPXBrNMgRNy1^-`O?f1Xe zjq$%KAH#n)RmT6l-k5g^BiH{RH^AHjqCprY24lncAR2^W;>a{I8=o4GIv57217R2+ zMuWsa7{mwBFbt|YLFo#XRzP_cG=2w4m!NopsRQW)VGtjkMixV6gVcdANDPEQY!C*q zVHlYYVuLV94xI+o^PoB(MuXTe4Dti4{s;B_K=}ZaH$ZtEl!r#~;H&>ZX%19IgX#(} zjbrW_RIh+AvKmmo6IA|z%mCH-u=oYBL1iVVP6XBepfllM^*_uEm^mOmJ`7gp>iQql zM+DgeZUaEaS;2Kalnu)_pmG>gpM&ZMP~8S9r$A{DRF{J53MVJ<8dUbd`thJW z+@LxIOi!k|0}qCsr}kUKziF{pk4*F8>7;CTg*d7!!<=57?ff$Du2 zhSvWeb)a?>sJ;RD4^;Pn%mvMxfy!f$ogn*Q?JSTwP<;(j3pN{M9+Fug^FSCR2cki4 z1GyR0b^!IYL3tHq9!MNCUk|DiL48}0eIOcS4=4|V>U+@oJ?sJ#Hv56a)5dJ$CTgJ@7&0MvH`nGY%xK<5jA%mLNCpmPU7>kL5U3g{jp&=>%S z4~h@a8bnao6T+bQ1&y5=wgK4-N}r&42~gaD z(g}zU5(l{(bZ!vHY*6@t%3YWoXdNG@JOp778>BYH&+k9T@1Xbqg*CiQU}pzj%LNK& zP&xvYgP?c>#RI|qKj>bdji3K3S-AZN)$ej*!v8h$ra|uc1Dy+S@c(~}tO?+80XZ>& z|0>?e|Ba9S|F6+^_`ix*5_o?g)-eER{jcL14zA}xVGK%NpgaF`RaE}#C@X`pwvy6+ zEhVM@njoyG_#eav+5~~XB#s7S69{e@2)EVuKz*n z0NULd{S?GyKyn~;VD%mz;JbK1 zbs4CP1=$I!GeCBN{0OS!KyC;5AEXa%9;~efG8?H40Jak<2WpFe;=$3_7<4%E|DZSr z)rlYs8si7m>!A7_RQH3-1NEapZUMO+)HVd2GYB#RR9=AA6@c0Xpn4MIXF?cMuY%$U z6lS1y3@Ch1u%qLDSlth+|3T>j)K&qNV<5MJ%2bdX$j_iO3vxGTO(Ljn2i4;s3@YzH zav=2}3|i9)QU}5yb3kfAYCsso2Kf=B9^^mJ*a|2fK<SF%c>HgxtN1@BS?hm;9mD@VU$+0V z>l6Q5*}44}6O;Mx>lgBWXqCps0Er<`oATeAtvK)+!O)W?ahC%9J7$yd)PeJ(`RK|ePKd7w;%A=rk z1xl+hb;$Y%u|e`6eIOc!VSEq`!XR-%G)xW19iTi5!XWpe)1dkvwEhp&wg#njkRL|t z|3Ogydwc%}m6@PC3@Wcd^$)22f@4tK0j)zoa-ebxhSB+8anOD|clZAwHYlD!=@wLW zg33M+29=ed@()y(fyx<>8KAlbRQ7}Ppkt6cx)=r@T6ec>J*UqAUO~Q)s=AU z>G>bT28n~zfH2r>ko!S?M#7-*0N346IZzz~sz*Ti5LEAj%5jh%z~+J43!r_J(0Uf+ z2V@Mk0~)TN@ehz3$Zn83U>IZ;Xv_g*E-0Kp`2~bQW8ok^NF3xpkbR&w7RU^c9yo@X z4|M}r93+N@LH%FQ{5r@VpgJ8?mxJd2L1u&E3p5u1niBx^k3n{V@-RpZNG%M5_Wpy` z1a{@*fX@#G=>@Ix0iE>=s_#JNf%f--#`Hn;KWLmEbSExoKQPGsps)n30|b>DAblV^ zKr~2CPk#P?(D(poEQ#1Q0LY!7Gytk!(J`p52gMr*gX(yY|3U2pPOpLfS~&Li{|{0F#{mK0b`MA%WG)E9%2JSC5C-u<=7anW zYKQB4MByI)-}nc7hM#WVk^iznJpbi{c)|6&-i*ut4R`$iZwTuD@B05=Eimi9tfgoNr(9!u18uy1`kQfMq!WvX|V8ihGAA0@|$j`_arT&NZ(Lw9=Kz00# zWS#%ZC)NG$tI7U9t*!F^@~*7^-G03PLHh#R-5CDQDf9oIm0S2fFgW~wYHG&+l9b5* z3E^S?pT2zi-_=Cxe}X#0|8g6a|HZb9|I6(ez-I!1#sWa=|3UqKP}qaq0;54}7zT-f zFghPu3?>JnLEd{CYN)%hR{axXFsW<&S?gWL0!XUMv zIt)~If#Mldt|7-Qs5}I%_XgErpuQ)_4iERg01U^*6|>DkRDK726h`# zy8)yh8wS<;F!Nx01weX1#oc2%0wl>8(#mfs89;Xa5J?QwZ`esGR}|2YeV5R-kYL_5VSB1J!59Z2(yP z4+>)t2G#$d^ASMf_36+$8???5T>snJg6nXQn?dzDXucH`XCN~{VFgOdAaN87H3K9D zOZOl)7zYIW2b~23(g!LtK^SBXs7wTf2WbA?0N45dp!$F3|NlCz+y5(S8i4QpRdx*e zZ?N>mf5UCi`hWNT|7wwC;B^5~qJsa0jNSihr?mgSbM5l~b(^;Q7cX7$Uw75B{{{>0 z{x?|p=09l60Ne(E)&Fi0;IR=<*n#5E$<*|}wZ1+W+ZY)9hhbYJHo^KII{y#yD+q)9 z3!*_7rT$0i|AW^5wR>^?pPi`re`&VK|7AI5|EEUE{BLrG&gr`_{O=Ew{GS}|{XaG# z^?y}m)&J1&sQ=4XuKo`Ki80ateJphTyPK;0R}*FVAEpc07YM8WVf+7JZUNEQFvyL_ z;xImphRMPB$TW-%Q-e&ywi$*1f?lZ+JUJ>r$J`H#E{t_F%U); z1F=CEBo4zMJ_sZ8k=e*{p!5sM*B}gXF9^ffU>dalKOzFWz69iUP(B6Gpz;KkPey6_ zw*f%)GidxD)c*t5C!jhFia})^sC-7RTR>$zSR7iXAhSVopt2fNwu0&~P}zP%1>2g0E84z32dT>xT3+YIRDgUo?pWOG60fHBm)aD5=RLCpf`1Nj?-LGA+emqF{` zL2&>I6HxsI${!#MVuQj8w8s%tSAqNm8dCx3g_#Yu4`jZZ+kem)1;~7m9LSF_4B~?@ zNI!^%VURp%Tpv`og2DoHHXm#*AC%WYc@$(G=$>9s9~m@G4(k7d_6dOMdk_Y-1z`Pj zkbgjJKhRu1XnY@Zryi&c0pf$&njm+B$_-F`3ko+-Umw&?0L>|Y&I|^vs{@?_2x?=1 z#tlGg&p~E@)*XP-DJVRM!5}|@`~!+xP<;(*1Ay91u=*cVzk|{!Xzm{ruAp)Vp|*34YKgbS4 zuNd6@fAHS@zyA%_eEx5+;>~}96|esruK5J1!#9KW_Wk`28voa9-u7QhOXq)VWW;~} z;L!h_T|NK*{QC9(-1+nWBXTPKr#DUfZ{Zp8U!!^rcy9oD{SP{m6%MtN(w)rY-*u9y;{@^OrB6>i_?(yLbPu-?9I{jcd?<1p&tY z1)w#9?vOSBsQ(YD|3PlRhC%KEi6he>HVnh$KztY*L?dHlIT#xz58@+ZWN}<<(AYVs z?F}jiKxrRTE`ZwXpmnFn^*_3Pm_0CYQfQD~boDSX5DmgGc^Dg`&WD}>01^jb(0Ctc z&H_}%f&2g}TR`~^l($AP{p)^Em?PK!pz;`0e#0=R+y}8i^$V=tK&N5#2r>;a2UISA z%3#p^F~}Ym29=K>GeGGW)II>I1@V#XKsF1+MwbWm>p=Au*nOaO0|>+FTM!!=L&ZUL zET~Ka)dirjWKbFeVNhQYbS@mIeg%nx>H?4&&^$h9o)=^{vKv9}M8UA}3S>J$Y>>U6 z{Rz-I8C36q+E<`;1Ryg(W`pV=kewiRfWiZmCqVsu5F3O+^L?Ov4hl<<`$2UN2*ct8 z<_-`aZoZovc&#C*t^?J7APiOqb0-!WRG)#$7Et{P+Jg_O|3Q2EKy&X!k&)ni3*d0F zu=o$U`xR6-gX(=42G!r7`+-2?1fX$yP+tY)M^HZ=RG)*!dq8^(KxqKvR#2S}n%f8M zB?H+5+FuA78vwOyK=mqUJ^^&z0H|CEcXs{{>RW)?0HFFB6h@%1AqIo$Z%{ac!U7bh zFd7u@APh1OM1#T?)II^(4N9NL^*^Xy24RrfLFFCDZy-G&bs%wgoe!$VVf8wU4WdC9 zBo3mnVUQdY8+t_(sQ>?f`}#(^{)6WNK>PaOeRy#D;NO4!UH|{<=1uv(XU7(BU5HK` z+q~+(c}VJijpd{6H8KuON)G{)dhQfYmE1VbIz>&=~<9>H_~~&6$tl z&7Z%1|8MK){qL$H`oG43;eVeuWG^7{{6EYcFdF0@5QgzVGzi1Q(Amg*m>Lj`jFHu# zvq5|ihN%a!K^U12V}t5{&^S3Lf5Or|sB8e0t)M&xQwO3!X5hjwc^C~-2jYV;h!3M- zY;-=lI7l9ZLE@k~9^BW5*83nf2!q5y7_^oblwUw)4JaRj#xh6i|ADFZLFE|;gW8p# zvK>@cgX$1a`HX@=^%xX`%5+eD48!PrkT^&$sJ;Z%?V!31J$^y)52}wq^&F^t2Gxlm zeIPLqjnzyf`$6)cx*t@YgX=^OkN+^eApPhVq#o2x0F_gqbO*{mptJ{~(J{zPFgZ|O zgM|yoF1Q__x*Z9F+ycVL@*q1wVF?NckpDn+K1d!^7lZ0rP`H5Vb&y>kJJH<%;)CQt z;R9;3fZPu@2ekG8dgc+xJdizLIZsdU*}9;*4&+Zz*$ZKsts2IZ|$JTUD5P#Y3f*MQ1u zQ27k1!{HcO_oCMs*!ZCG8&r;h%mDRiL49d#@d_%BLGceNGeCBN%mV2J(@6bO7$2Pm znGY(@L3JId?gjOU!D^sm;2<_g4VZRy1+NDHxdoPYNTEUQ1ceXCeV{rD>5Xc-@8w8gdK=Pn`0n!ID17s$M2KfbK9teZjpf&}_ z9*{g}yd6}}fy@WBEkI>A$p6R~qz8mSV%TUAdMx!gxZcNB=i?I#2%xgwQi0I>QWRQH3}1nYm$ z_&+i0|3UqHXuls+S7Tr-@}PcwyavPnoQ(AUfB*mg|K|NCuzwdVUiRNzp5gxlP~GnV z>HCAsgVq1A^M62f7AQ_(G>8qtAU+Hu^U>MZ_#iPDhM57QLE?R33w9 zP~8WrGe8(5k50qHKip4yXoS3B#baDrhVK)VBut4P*|82GzST4Dthr4e|r1-UihxAhSSiAW(e{Gm8)n@(ZXg z2bm8t6GVgT1J#Y7H4mWp0p)oR2C+eP8b}W)EJ1ZYsGR}wE66P%eIUPs+ytUwd=L%7 zC}QsJ|3UVG+zJ|31dZW?#^jOfcu>6$>Vt#oVPtVoTLH!g$${qaL4A5qI{?(r2iXNG zzd&dFfcykvm&L__+hm~n6SNNylm0w8-pch7>#2GF=X$XrmH0i+((1|xPK z04%&g{sP54$d9132de+U*wGQ(&j-nY)2g2zc$^yK1`r>VPC#PpvB-$+9PUjKvY ze$aXVP@4c0Mxb^)HVp3nW2yf^;RdQhDCz&h)&PX)3;y4<7>tiB2V=u%m>Lj` zECynOFi0GRVSEq`$}^xgG$@b5(lluQJS=a4^nlbM)5vU)90-HNkTEtfba|K>5Dmk~ zYG7=T9LSxZx*paJ0I`uVsQw47SpfL~RAzzF4yauN%3Gs&VA=tovKN%DK>brtodQZz zpgIIZ!|ESUU4adQ)S!ri=DXe9!S~OB%3M%gh#s$?_y*NepfVg(?t;pFP#uMA7KjbQ zDCWc32B3aEbZs8U3{ag7G6PgMfb@atOArm$3snzV8wU~xVPrO#4_fo+<_12)50pNU zF{n-i)#act0`;>&WgW;~kUu~eTvyoJgY|;iJs`h>^dOsoiw(*LAhSVZ${_cG!UGiU zApd~;0TKi8L3KU|gW?8MHiPOQkUb!CLGA*LlY{C{kXq2*0+2qC86dxbFqjW*MhFX4^`QD4R?ov|m>4o2BnI054_XTVY6F1kZP0i*s5}6j2Mlr> z=p0#4`vT-vP+9=VfyMdkm_+TA6CEPqd|H=7^;S-`F~iQjg5wm|En&1`oCxT{Qu9dp86k}QSv`5HUIzH zyO;mhOGELe=B``aNTdBsR^$CVRb*KO#nI@$QR4KKcM^p!tnYZ zy8aJVSAb|x*pXZRx41F<@AhQ)Uv0zi-`-gJe`Zn5e}60O|AER3|2<7q{uflV{P!}D z_}}Kj@V^~L{~zWC7!7g{2*daw8X1G+Ko}+lVq?QFc^C~+17gEybT)_&!^moo#Xw{H zpmYXK_s}!VKl58{K^pu7yq zzvwhrEHo562MEf;pgtAI{hJXIrAG%f@R4;(aWmug7 z=0odY7#k)BqCw-*p!Ip6x(PI9x*b^z%CnFDe=s9pi}`$1s?V#6>< z4i|>0!AFDAJq&~F0=XSjFTvaf4r^#T3RFje!Usfy+y-iMfX?CrxeH_m$Q___Ktc5? zNDasgn0}DoNyVUc49IPuF$K_mJWw4DtN%fDJFKpU(I7Dx28n^xg8J^DxdYHR0B8&V z)aD1(r=U6%6waXgg+cvmkefk$XwaHq(3lX24^ji#_XpYo2uhbA^FVC@aJ}pA51u~& ziG$q+V>UL1w25Q%U z$~{oIjDlhHIgEzZ?O-(^F%U);gRw#5|HQ2SgVovCXwZEA?*IR_ie~*Uj1Kr8Qr`bx zY4Yj+iakgErxjNI&(6*NuR8z1f5V;7b$>83(CdHDIhfAQ|3TybpfP?!b#?H0zo0%p z2!qxGfX)LVs{Tis{|AK^sGfk)8d8Gb^?9JW95g(RCj{X zJ1C!m%2|*cNDWLaj1A+%Xk>Ai7&aOt2Es7)AR2^0VlWKjgJ=+jiG%VDxUNT9|A#CF zDhoj4v>>;G`~WJuK>2DE)33fq4{K0)3QAYt`rpF?Tz7)%PY?!`$)GYDRHuMxEd57N z9fK?f(gPZ21=VdJadi7YWj?5%3F`lY#>qkT8^{b02B`wtc>{C|@()xD_5DC@1JwZ_x5DxqD9uuWLGA<9t)Th? zWHu;VL4EodFE8-f3m`XuFh~rPPe64#$W5SjGH8qdq#tBIDF1-`3kqjYn+>E6?njWH z&@f02hC$&0!XQ3~24NT*)P4fl0~!MW)qCJ|fN5#}L2K_p^*gAphtVK5GKPtR=KVo+ zKL~f_<$>>w1J(C&o}T|fZGDg)&^~*RKS6#3oiPY1!$9ZffyN6!=Lv$=2!O^jKw|)) zbpxPz1dtgZe}d90sEr9qU!ZURg$E%F3U5$a0F6h1!VJ{j0UJ27RJViL4RCcJahMtyO^x+`p!$60|Nk0M zrT-1%YyK-uzxH2m*MBfpZQ1o7G`^ra^%Ug1U{G5Dq#lGp_5b=G|8+g0z~}#f=14%{ z1gif*bv@{uKXYB(|2ELG06^yggU$p7%?S|f|0C7^pn3unW-zQS$@jn35z?0j?fFBg z=ke74ps|0@{XRiDjQ^dK82(q;K+gFC)$O1&|6+9+{yV8K{BLk({NIVC|L?EI13rTo zKPXVuLU?Igl7k4n~8-kTFag8;vdo(}yk&;)5_KJ%Z8?C~v~bB2d}~l_8+E zHAp{59f$^Dd~A>$41?67V~`w748#UuLVTDSSX~cm1HfpII0%F4e^A*Bayux`j@JJJ zSMS5>Wl(tvN>`xz1XP!R>U|gnmC+zJsE$C!p!x!Yk;PzakRDLF1nsEpdWU}&8MG8cql=3%2@@?aX;R|csAtqlY9jX~u*XuKHY7Erkl9}h>e z1Ed}WgWLceQvjI@(hH(NbuXx{L9Tm2ZU?1bQZOjrg2EW&HjufXIv!Mqfbs)q>;V)G zp!y9&gTfqC{(|ZmP~3p*2I&WlnSk1Apn3|_b^y5%gh6aDhWZcWFOVG|8ibMAAU-|} zvJ+JQgW?8s#}8;PAZ)Eatd0lO;UG2)BlAIhcFzH3y)1e~|w{;Q*>@L3aXx%mas#L>1g^V5`}6|?!Rtjp z@dw(=3=;>H&u}(!{SIQoFs!Zz(I5;H2hjlm{|&t3{u^xg0p5=X-j@%mn@Po+|NhsV zczvcgb15o|%83SHZ0}2yR z7=h}4(7Au0bALf+{ekO$Jw5Olz`DxH;4=Yh=B)&E`${|VOr zNbLd8zCh3%K#>h2SRZH|AV@z*4AeI0@n!&<+X%V`7+Iei!~Y&H#{XVgkoq6w7HsYU ziGeUo9+?djL#C10Fts2t5C-u<7@ZB{!)TZqbUsKNRR4q0A?Un3P&oi9cR*<$RDXin z#UMQ(3{nfi_}Cyh7)DkL5(Du;7{&(CAdF88BoD$MHK4f&Se=hfgVqKh*Z&~*gUT9E zp8!@jjMDUP4}j`_P@Mv*n?Ut7sEh?;Xuld(zktM$>kV{1NDd?hQV%LaL3JkR{#o=m z1=$Cx(?Dq$RQ`g>c~IR2(hD*J851i8(hsUTLFz$fgXZ2r^;e+a57)Gx1L1HjIj0U$A($oKg_5p(00HFQ}$gQAw2h9zD&IAI*2`Jt{^(ttr zA5<=Y&I1PRF#ydwfYt|q&I|&z9YEy@NDS1j0M*MNy`Xjjh=zp^D2(u7POc;j#IIY21;`#|dgw*LQbyyrjU zydX3)jCTD0Z?NLke?wb$Nc|68{|{;hg6{bP_5VTh{-AUJK<5B}`u<=sJ-z<~>wnPt zKj`_tps)jl84PPHEB?b>AaM{I8H28uG6B>#0oDH?3{r<~4!Rgf9)w}yAT|tx#6TFv2hlJ-hz4Ph z7%~QlfiOr6M1$&hP`wYrp!Pb524NT*l+R;5JmB}Rg2q-sc^Q<4Mlt>Ceo&Z$%4JYp z1Fru;*AUlvTs7?lz#h`Qys>?w2 z0LWYzMmGx;akXfKL2VnCpEWl%#pne*tt^n2l$o>H7N5&xiV0l=53LOgo z`3E%K46k!tUBTz;fa?e7+9y!G3|fN-sy9LY0_9B*2C>ft)MmlD9)fXSR9EB@)roBi=*?A)qwIP=)OHr+=J?5P`wSS z>tQskzK8KaGzf#lL3K4~3;;BL04f(iW`oX|s7^}y5318aVF^kbptJ|t?+2RW2cPv9 z74;uv7w8N^ki8&rP}u@f1LA|y5hyM}`ao>~Q27UHe}Te_5C(-MD9qg~EdGPqQXn=c zor2qUp!y#PgW5o#b^_?`DA0Mm;QAk0kAwRBpmrcAEH! zMyH`-w&phf^%mUzZ?yOSf5Q#Xz4>T$HBsXNpz{Ec$M<1oZ2tG(5QJfT5WV5gf1?Bc z|Le^-_uo?A5S(Y={eM%_|EAj7{|(jDz-#|N^*?AGptiCycugRPPgMPnwEqtjW-#pT z;QHT1j^Y2*0K^@Apn94p3~CR!BhCaw*8>_0K(7Bm?S+Xx4F5}P82-zO2*T@sQ2GS9 z2S$U~AdJk%#)gT3Xb?u%gUkoXgD^-8gz>S_d%7W0#vqw;s=bOZ2(Xm04nQ1^#xcQscu0L zgVseLH6XJ*t*ycLpMvZ_#vnUDWiKclqu2i+y)X#vDNN z*x-8B+#GzKImk{>y$MnWo)19s14s`@9881!fP_I}U<_R^2Mbr+~T0AhpmfiP&S z7}R$JwFy9DTA*<{Q2PhuM^Ie@%B!ICj)Kk2;q71)aWk|3AblV`AQ}{wpz;{Bo&n?! z1BDwXOfw>5|Eq}c{jacvi~)ew>VfKPYGcrx0BCJMpBKY_8ySZG zUd|rieV!mUfH2%WK|x?~WIi$*n_8F{NF6$c$$@APhRLI|VSEq`!Z39p8pH?H{~$J~ zO$sX)Ks1OC5{K3QAhjSqItGb@FtRv^55q8VbUsKNT@1uW7l(wj=P2ki@k>Jd=P}FfA5;U!mK;yNbdK)AT)(5KNp?zkUUJwn! zV0ow<$XzHH)NTOTfz%!V`3Gb+hz4Ph8KCwDsLlqp1wdoSpmYvuW5LD3`6CJE-pss>@;ZJBWs1P<;<#!)Op2q!u*K59;fK>S_>%)%Tz{0I@+B)Gh#(ZJ;xN zU}Xb{57Gx3O9WvMA9NlNsQv}H7vvtWdEVatL2Ur!F#yn<1*lvkwk-gP2TPH!K>O^VemgZW$lPuJ{~PW5|6hOJ_5Vi3*8hX-?IGj; zp!NUI`X5yHgUg;Ury@;SX0)#e8>x0?>)WV?ke;^DpFGQ2!zov@n|HAl0aGZkN0CNk7 z24R>OIvbe}Qv;$w7$gV7=zN$sj7FA+v9Zy}VxT+#(ho|L$mtuj7YH;qg{%GtnE}Ee zz1T2F4unB+AR2^0Y-|`N2ckh3Sq+SjT-Sr@dl(-^gU0_sc^Fi_fiS3C#8yXu^4Tb+ zPrCqAhJwmDP+WleQ=s?()d3(3s?R_eRNsKaQR)d;9SN<2U}`|>K>bEgy$9OshaQh0 zb)Ym1stZAOfb0Z`f%GApkIaV2!Dw_jxHzbO1l7-=eSy&Pfk0(E$UabA3i1o6{sGws zs^j4LpngE+gV`YSKyn}&gkfxC8pH;L1yY*;+#Z0=rGVTD8Xo}l7eQ?TP~Q>c7Et{P z3U^Rgf!qkHvq0_y(I9cqeLx`hg3JQD1!ND*4InlWhRLJTAiL2qHZ?FYm|9T0fX28% zc@z|npgDU`9Sy46v0+f%55gch&>DV_T2OrsDw{xi`#|+I2!rZ-5DlvPK{N=1)&zpq z3V`POL1_iF&Iv?=$`p`ZP&oo>OMuD=Pq=6{0GsXeE^_v!dL%SWMqKvPz2Q%pg0B5APi!IaCSuG ze;qB||5~CP|Kkmr{^#2;{?E5&{GW%8ZLo-;tHHuAuwne4Vb1v9QHk}xFfZT#w8$9n z*gvuxKx_~Oxd()?u|Z-Wj4Y4L2eDxoqy~gxd>9Q9L&hL+5FeR_u|eW6j9mXCr)f|* z0ZNmgF*1-^kX{%D@nIMw24Z8QL1M@lqz;6U#n9Oxc@PGPgJ>9rt^Wh%Sy-Kq%m(fC z1?4SJxdOtVdhC^V?vg`Q6j zDpNsg+_0_f1l5C}dJa^!g6sj+Z=m`Z#Vn+{4Otx7ZV(%Uk>%lRkXt})08h{VpnZIx zJOk<*g4)j@J)kuxAR3ew;d-EUg2d6qu=0_@1SAjB2ckh3R7Zg7D-Z_x5fru{HmENT zk_Y)26c(Ve7StvHxee4N0MW2{5s-SAT96&o#9(uA_!(p`$ZeoH6%=-$@&{B$!|Qm^ zoO7u+6PdbnD`&W2bCwFGk-zr z072ykXx#v4o(dF($a+Cyp!oz)n1Rw9$R5xf3@Ckp+)WGysRflqpfM>>c?xPnfcy?> zqk+r>CBq9*}+z2JvAS zosTRIk^^Co7>tIoVSHp7#0FuI8e|L-L$3cp`4)yj<9MJsyn^s>a2pep-$4EVtuq4U zFZ4QTluy650J#5eZ4F*q0xDlYbut)(&e(;m0f5%0cI%N60#uG*i$_rZ z3KajKvKC|ysBQ$+g&?z$>m+18vN$puqy`%Xs{!o`^zZ=hGXs^?pnf69UQjy+BoFF~ zg7t#j4eGx`>q4*?4mL<1NFGLm*f=q?eE?F6j6roP41>ZO)E)rw!RA2qfW$#z0}B_h z9Fm(r=AnzB^O4mcvys)Ii=*>FK08}4<#`Hn`dQcsYj6roj2!q5x>-9kE_dxLu zsv|+;_@Fu&hLP)TkQj&$_N$v4xLgK}9e~UNjW>X3(Aon~xdJl}v|kdW2c#Eoc5Fdm=VjvnB!^Dtj7@LqfkUU5&2*cPQ8iqmQAdHO<5(i{dAPmwE!Z0?B28p3# zm>h@(VURqC24N5zgpt`GJ~D>MfoKp0)$^b_AJ+E=(J%~Z%Y(`TaQhszU&`G4Kd5{G z^$$RKb`;aE&PNVwP#+3Z7lZ0WSXm6Jdq5aeu7YULekkO611lR;-@3bl=SD&0Ca4dE zY!8eLum7#B|AWj2VNg8>t9xKHRy&aDK!Wnnx)fwS$X}pw08oDxRK|nGJ3wRdptT1e z`#|*uhz6Mnqd{zBj7uC@4F((J24oC!KZp-)Z-C5%VURmv7$gP?6Abe}`k@%4283a1 zkl8RXVrZB?7!A?`V}t4gPS!1nM1#%>0QLPr;R(9i7gX+p z+F78w8oAy^W`pEF@c_~T>c@cW0IeSco%;hSQ$Xz_P#Y1X4yF%AgT=hP!RHEr>KahG z1J$u0J3;XbayvN~q!-jb0qF&;IRy9fLG?2999z)51SmZruMI@0`=M$ovq5yBv~Fbq=*;=|bJG)NAFNfAd@i>?>M2Vs~RbT*6+qQN*Q z2z(zEXbcWCM+HigFbqoXp#B@E{)d?dqQUwC1Ho--7#~C%P_yoy=;vd}JfZ9P!T?exRMkCt~V#6>@9!x{) zTF_WLsEz@ZouD=|DF1-Q&OqbrpzkOnXVJxAd}JC~FGw832VoE! z1w-8g@-wnLj18t?YLMIkG6O6Jbr*;a!XPmahOt3348z1>d}JD34#tPkAhn<{0kxGt z^S~f+(4IcfH~^@w2i5%`3}b`N3IdG}fX2teot^)K*6V}X{Gk3b2!rctFR%X~8iYZ0 zI2e0-gZtB6n*$yw^?fXi@DJ&z58=4C+VE@ekV{0E)+2nt7Z4608+VjvnDMwWxI z(P@}IWN{E1gkf^XG_p8|4Z<*a5F3VJV#qW|4i_ILhl>X31Id9fHa18M9fQ<@+R>nV z0ZP-LctOUXyaB3TLF%ySMHWY9gVdt)L1G|`ERM_u$-yv49EL$+AU3T2ht>VaG^i{9 z_5VTROrU%T!k~0LTL06(&IgrKFbpa?LF1*MJ?xKp4hHr$KT!G01Gt7(eK~ zAP3{nH5VQd&5Mq?8P$$>CP4u)ZT7!49fX2baC zVjyuC2FZaixc(0fg|B5oPRF4156WjCJs`C(8pH-+5Fds~4niCIS?C!VQhT$ zKd9~pjRAnh=|E*K2!qlzD4mbufolVR%1uxo4_yDl=KG;EsP6%83xN8Zpn4QUS1y)8k>G}F?6-)e3*Ke zIE)5~BeOw#Y#3P$G8xNKgL{+V2k<-viCjgZd+& zxqDE#1gZ}~@eHcNLG?QbgV>;Q3skp*(gdvj2Z@0&NF0p4yuf$FCyYU$S&lvk{mWDEI@TUxXy;w)u8!UP~8s-7f=}n8tVeN3zXhr}8&;Qt*f0zeL#9D&5C*A%(V#Pu zot*xI@+hdT2i^Sx>gR*%d(d8gP<;;)1D^$GXb5f-5UT${W`(%8{0D_0s2&6P2RV#D zd=N$!1F=CEBo4wLHVDJm_-K$E2&1b9i6LW{JU%gy8W4u50kL5iCI+K%i6hISvq5?Y ziGkFB!VQ#{Ky&BlX&7|QIY-+I8-zh@7>4nYY4rLZ zJoXR03kX#IgU<2>mHVK&AA~{U8KAU1iU+>_2aN%M>TghejDex`9;htDR(F8Kpm*`W z>VHt%0aRup$1SK|1}d9D^*^ZG0F~EZGtuf>uo%=%u-Qm#d~z_gIMsmGC_wv{Ap2o? z3DjokUWe=XM^}K zjI0JGhK&ZDn+PhyLHQMwcR_VOXbb>U|AW{d3|jLCTDu3T>+>Tc|7QdT{|Dv$^0>JF zpgD5T*gmL!1l7?X3}VCTZ4euTVSI4C51JD|>g%J(V-bhx1+`^CWhChALQq_S)+~VP zXOP=raSftD?Nbm2wf#UCB!&xv>UmHZ2TIEz3`)T(bU z)$7oG{GdDu(u0DXoxy8$Kx6&L7}OSbwXlGn?+2>?LE`|R^Z!BZ0MMEMkQk_aV4|f3 zz6$}AF7RPc`T@1YK@DV#6@VTo6X*;}Qdj!!S$_hz8ZIp!h>hb09V-Z-C@LdO+$x7{&(C z=olss6G!I5*f1KV21LWeU^KEAhz-IZcYyLeItKLzK=nU*{~wetLFpTm&PVaUv;jb6 zCaC`puKz)M)}eiWP#XYLhJrA1U4hI-uP;DlA}CHlWh+QOdYr=Qe^7Z0DwlE9|LEr8 zvlCq{Iv=JNMuW;Xn4ds>Do`E*VNe?Yv>p|t4m2Nt;x_2m0kYX3b;$goz=pXQMkBi! zBnHCBVjwn13^a!eswYA52Fk~vI{`rTKCJ%_n)k0uN%;>-OQ3!~s15^_1)z2TsP6(w z7ohM2l>?x%0mKH?2e5h@REB{tj1O)DK>PkMakw0kIIR=dD&w|P}ke@&pWG1K{1J%c% zFafKxu=o$s3uc>}{|BWdSbG3eUxVxcg#pN3(0M|jG7r=r29>2?92oc?cE_!{k8bgW?F(?g6!DKw%2@dr%O3of?P_ z5=X``F&GV!1F=CE#0Fsy8-$VBAU+7Ai-Gtcj7ttA4#FTcAPi%JXc&fxCm|$V_Z}kT^1isX-P4u|eW68pMWSkQfNV z_#hg@2VqdV7?i(3ZUxaG3}S;YsN4Ye|7~p{=boCI{|BW-P+kD#sZl&|^*^ZW17T3V z1yp{5>TVbY^Fe)EXnz=1CxGe&5F3s`{eKUS|Df^&R4#(_p~oqxegLie1C7yw${tWX z0M?JCeg%tz>_x*cdto#-bwtU5)*iaK{Rfqwpm}0YxeqG0L2V(>xD?1-a67=m13ae< zYBzwyuwi`mVN*YlV(4x~=fm8FEDkDnKn+MNE}-m03?nJgT@&^Wf7>o0g5Y7 z8Uv*@P+bFRcY@LzsBH?mhX6Ew530jKbt+61{1R8N7@FQ|M4nE^@*pgIeL zVf8;qA86hJw1yNECZIM2NG~YtKjRTyS)e=#N=L{Tlpa89>tO0&`e8Io z97dyy!}wqt=8xcDc$mZVA=6;BNZ}2V1Brpo`vA=Wf-uOvAR2^0Y|wdNp!NW$tqr;x z7KB0h6r>NH&Ozrdk7Dp#8NI>;RHlLA1XNan>pM@+|IttkN?RZd;)C{KfiS3?1JTGB zEavVGo?8d?H9+MHNFTZ%K;4c2%mcGMJpO~&$QUM$i-xHM$%8O5 zAI1jJ$a0|e38?G^xf3J~>idApLJN!kp!I>E@Bq~pAURN94-_^aGeG)4G)Npo4`qz( z2V^$PPcSi19|Kf>g6c6){QCk1|T-54nW4BwFMvy5(CjN4C7;^eSN`c4x|>;*67N~`QMqH{U0

    Pk?b5|+k66(5|3P61awDunkS*H|$8uSLd|5V0C_hX1wJ4F6kP8UD9{+5%{LVP=BNZ}(vM-|fZl-%y$xT>r!B z96~gxK0;OlVk2XaJP3otKy@@|EC`e)^1{RagZi)_IS>ZPBh%?E@+MvR4;?f2BkM@)c+v2fZ70{zCFlXSp5$2E2v!nvl~Ric2^aoDT>D|;pZ~@O{{PpVa_YZ{h9$31cen0%Zc#*uX2El&4cP^SY3@wH#;-@ zpAaJPe^Hj{|AiTb{}-e~F^HXE^nXE`;s0r2QvX{V82&dp;vWZSb7T157Fd8NX;v-{_ zUeGzhpzs2vZ{+oaAax*pAdJig@nIMwj*LO#Fg}b8qCprW4x(WgoevTRiNP?852Hci z$ZQZFhLOc#Y!D5?AT=Nwgkfw@c!B&5s#`#QCxk)$ReIEkgzNyhmskv{|3U2qTz(^D z7p>)~RsVzL1VDWzP?S$2i0ul%HGeLDMIT%#`g6epfxv+5s zP(2MY8ze`Lx#)U8^*^W_2bl}2<3Z~eK=}`5H>iILk_Y(9$f!}$|jIsLG3nJJ&%h9o&N`_|G|3zbanrO=l)^+f6)AYL3pXV( z?*Fw;ka>CJIv>Vvabfu1;m-1ZQGM9|Y3&vN`)e}(Ppr>^<4N^7|ED(Q{-4*B^nY%a z+5c7-=KrAf0!%+T4XXb^{r?~X0q`CGSe*l_cR+k(j4qDO2dPCD1JzxiIsoKHP`?z! z2Vs~x5Dmg0y~r3@48{ia_d#O_AhST}8&>~=^nuiXFghE=hhdmJj1Qw>;xHN{j*X2^ z3?_$*Mm7_d8jv^$gVcgBj1B7hgXT^^{w9P$=?at=2O5)9UxLO1pz{PE_oMr9py&Q! zVF^mdL}5Jre^41RTJMj%dLI_&pmGa2eS^e7^&O~=2KB4a>sw;^pm77__A_W50my7n zJq$9Nn)N?u>=jfWf-tC_2G#$dIv?gQkX;~qLH+{C!)RnSObkSWFiZ}at?w20-(bVf z|At#Y^){Yy|IMI2|L^~Lv#$Qvn|$)W-qbUwc*^PjdNa@eH(2-nztOJ${|&+Fahqqf z_5Xi^b>IGLyG4TQe~{lmekG>=4?6!JRR4q80iZMg!D|3O^*;zB)&JPm0H}!b{jYJv zUH>;bG5ntvF8Y6BQ{jITJHP+BM%Mog&FudhnArU{Ftz({XlnQ0%*y3|KuFC02`v@> zXQ%1?Z*o9dH-I)50IUB4^-=48P~8K=usR6DM`nZgAPf?NVPrmt4a1K~Q@cWEQypk2d}fG6z`?Ha18NHVjh>l7q29Gz`PUk@+w& z7!8txv0*ew3>m}3K{PT(Rs&*# zGA+!-g`|7`VCq5re^CDlW;Q6Tg3Jch!yvOkbuvsXB{Zo2k6izQ>P1kQjC`IkYYCtpygVY&#M*lZh|NXz=Rs!|^j{pA+R=oJH;u`s1QP2FplBwf=B~z#W zN@h@OV*g*!)bYPsXwiTDh4;Yyd&oQijy3?O{$Kz7zqV@xxc&!)Dabvbyo;;f4-+@l z*8UHw|3MgB_e011VdDU)(EdNDO#w0&8H4KoY6sl)Kd3IBm#Y20GC%!4x1jWYK0cBE z`~u?t`30r^^9xD;=j9Xo&o3bMpOZ)Qznxpi{{_t{|9iYS|AWR2(EI)%KCJ!^fY$$@ z`UX_*fG~&+!yrB`3{wN5L25uW2!q%l463`3{R-Oy0G5N^c?@F1Fi0;5W8;JBLQpyf zg&8P5VEun&^)P)P8YGU4(ZxV~7zU{Wu|YHl!`LtySq#QTmjm%Z7$y&*(J@FKhCy;5 zHi!mc7#l`|#z{aJlpjETCI%0=x)N0PLoujq0p&4te}cq@T>bCp2roO3{R8sLXuUu3 z>U~(8gT|6!=>fE+1=JPuzHVEV6gXBOMq|U%I3fvDTRR4p<{q<&?`7bXa{$GZR;lC_D$A4KahW|30 z3=lpq>wj5ZmjAMB4FA=Fa{e1`{s!4YfNKr_RR4qe|E`F=`k*!qD12e{JT4kk=Y#5g z5C)wCjIstmTl+t({s)z3ps+&5#MJ+b3T*yor6vCt5|#chEhYQk(%kyLw}5C-u<7{&(C zAPf?NVHh7ogVyVV>Li#ybHc*@gU0bea>(jId=LhSq0=BSP(27b?*}$+0!kyG@c@`w zkQxvhgwfd`J}wMW55gdMWE#Xq#xQx17>EtR=xi7tM1wF)4TufGxcDG(5Jp!6YTtnF zIEIBCF*In51(dcx{ndfQp#BF*{eMSC@SV=cZAF-WL1o!M`UPe;(S8E;|3~Zp(X)TC z?EMGjO<1}Hr6*AR59*(T>i#M1O#{fY0{et+Q zHUV<~A5@-z%malLEZjgeq58konc@GUGPnPsVNw4D1jYVKODp~FtS$M!raSBZlIE2E z^Sev`dwO{P7Z#HEFD0k;zcMHB|IB!m|4mNNb%1#4e^A{6!r1B|kT?i~kyu zKztAl!XS1-YAVV(XlVff@bQ0;JWL&o4dWxzAU3G)4_o^W3M)`s8P<*f=|#sNJuop4 z8-~%vKzwvLkQfMq#6dJN28qEiHgT93x*B9Yh>ffc#0H5WW02n}6B4lYAwmAfg+Xmp zP}%~ev4O-OH;`KYgZlrVatqmSpgb~={y?@HR9+M1Cs6&5WBebqHxpFm!}^1x^vD_u z0Hr5b`UchWp!f&X{h&4gXwIIJaeDOnA7nPDE(V!RiMb$m!Z0Y0!pHx8e86oy(7FYf zpFnGmL3V=bb7Tyv&p~`-8pKA&Ff|}?qU!(6f5GeiG>aGfmlGBIFDEVeUqM6vzeZZ; zf6c<_|26Zb{a0~`_%A0d{a+r`77!KuuhY4oOt%GKy^7tEeM0u!7z-EjRw_+u(ki7@B+mJXgmO92S_~#gUmsv zL1G{b6Nj;3d~7r}F=Txpd31~{4`PEbvKkN{hC$*WHi!mc5F3O+Y!HU|33;p#R>Qs<_LHdyWIb`d99Q}XLIl`cFc@&SVdLIo6t_0Q3;JtsYu4K*q!|Gf#Y@){hxBLUwiM$RSd>02hz}A6$%E8^Fo+GpAT~M%iGwg`tiLc4vK|u_UZA!G z$SjZ^kQ!tR5(8n77>I^pWIl)u!pL&Se3&?l2FZaih>uLe*dTEbhVel(I)=%E#9?d@ z4Zx{~K-p z@n6{^{=cjs&wn`y(f?|}+5e3X|Njq?Gd}qLzrm6x{}t4<|I0~;{g;=K{;xOTByU-ohfFL%gO@M9uA5^Y@%!Ofm^*?9~e}ccz|K6(9|Ed~> z{{?u3{##o+{GZX&{C`$w#s3){mH$f%a{jBTX#8j65cnS!llp&oQ`G+sS0?aTK%o9U zcntv3H~_BtA5<41V^Ez08X1G+(fOcytRMohh7#n@inut8@qdtB5Qgaou|XKd z2hpJVAKk2KwDW{P>d^HO!w0E>VUQUhjLrv%!7#EMhz%15(I7quBeOw#bPSS5#vpkR zAJq2;-ERyED_j^<4}r#`u*naW`X7|G@z#;hHGddtoSgoH`uxa#1NCJ<<_$Ck_1!`J z8w@w2`(?EL2agMb>Yq`JXy<_HMdWrnXum%QgX%pHO>Vsp(uZ6JgYph&Jw9l>0apKm z)KCK>kN<HkZL{a1^x`){!B4mdGz^2} zKx|O`51KoGg%yY{jfwdWS|bNigN{LZKw>Z�FsyABJIk5Dmg0aS)A+L1G{b5`)no zHVA|GAdJq&#fOQ5Xc$J;532j?Q&MoA4+ZiwD6fI~kRUcT3`$p^zBh;-Xbftn5UeZF z>Q0c~(AzekzRY0o6UYrj`3F@0V;RQ)#TUqbqje&pP8>;L0jk$vX&Xexdwc%}_5DFK zC42us^*X3s3QAwd7*s!l$Kt)bD4JIQnGeGl^}oMAN_!pTM-T@234~#6WEz%Wq<=YK_GyZ`d?^8e*!WWj3z zwW?SCH`@L8zu{&aeSc7!0LS=0s4jOlHT~~~rwstA`$6?RNG)jmAJh&2iGeY6{XeW+ z29+nsb2cdTKeUd9)z_f0=<(;zkogVZ3?$ZU`tsO|@0(Apa0@Iq#T(h8{l0Hqsbabz|uZ4Cw* zT>ld@UXIiT0F^JG`X1R&pt2I==YjSU$PL8S{~)!@+YW_0*z&W#uq>|%sx=Q1@S@t!iGV0I!GKw zgV-Pp<0I1`HnH`;ZvTn@a#E82Jp_dI*Hk>n4yG2*bo-Y!DxW zL3|iS=7akGp!5y%ABav148%JA57H0Pi;Q7nAR5$W0JV`pX239d{~uW|hz-(*4I|5e z*dPp22cyy1AU+6VlSdWORoiJctJEXQHHD#+Kedbup~}4=Oh(F(0NERR4qa!h_5P)&C&3 z!~6s)b3o!CF;M*tqhV}hK1d9P(ZykW!u9`O@I1a&^=k0CK5#!@UjDy=vetijH7)R% zznr)Tq+K8*{a>qc$$z7RpuL2k^8!H_#~1*#{|~YswAKpdKT!P-s?S0Fe-Osj1_0IZ z;JRK%2R!}{QV-GxY7>Cukn4X?cpHisR zh5uJpxc*;W>HEL8F6Y07mf?RsKGFZKZr=YFR0aI+a%2AAhe2vV@-Q02hG9_s4@xVr@B`7H@)M>O8x0c!nE_*i`o&G@>Hk6POOP2b zjH~|-(uWO$%tXc@H6T8W2C>mGNDhQy;>c`}7>tjL2C0EzkQ!tR5(n`?Z5z$x4JwC0 zb-^eed2ImXvJf;j2CC;k{UZ6XfH2{&J{p*3#j~o_5VR> z802VHtZ4iZPk$YL-yj7C=n5(i;|^Z%f|e>?yES5IpGFDD}KA5_;XS-AYy z?LYKiZ^E(v+BIwcE9e-5_XL9W2CDj|g6|Lp%^85s3?j7tA5{M%pVthk$3gYEgRwDq zPdmQ)A9VIFX#XEbJ!lR9T>nGQ|3xm#klSr2^*_@5Kj{3v4mali^BWStbN!(Hzpaz^ z|HX|_|NGpS|4;Vi{J*p<@xQs1(|=w*(f=M^{{I(N2mhbs#qvL1pW%O^F~k2ZPt0?G zvDN>eIthe9^%4w&_#h18!)RnSNDPG0#X$8oD4oO72aK*uN%;?w1L=Wbm|hScoeioV zvF(Kitp^0n3xM>%FibCqhGCE#j18kFs{!#r?E;WF$mwe!*&w&T+)XSE@*l{} zApam^(7HyD_&{P}{R8p?C@zrQ4`YMmK;`Br9(naY?CerdS^%X3aJ}c{^&d0_09rSX zT+foi2AKiZ+z@O_zpi%Utcw(0DSI`oT$KmWryJZ#=HLi z*WdKxzvjfV|Bbf%!+xJIQvV<1W>_5!tN%g!`$1(gq59uQT^&9K0Ga~;wE@uk|DbXW z7JfMEe`kjOeLfujC)cL_ms3#x&&wzLKQJi#|KduY{|#0Q|2th6{?D!s{cmCI^q-es z^uMoP@c-r2e*b&j82_vCG5mK^W&Gdkjd`aqdi{@HH-Y#d463VO7@ZFi2Z@0&G8uU98-!tO7!48wVGth~ z!^A)|2!rH6G%^N>fiOr6Mq^`x1 zM1$l;>;92f_k-db6!)Ms0K%X;6jTR-FsOb8)t&h2U3_vNy`cICWG*rW)y*J#LG25C z`bm+4)&HQi1)#nEAiXd_OOT&HGz^3I=olo2EC%AkFi0H42KB!|_we96{}*&G z(8kaIl`P!;gX(uVG2#CjdD9^G{DIB|IQaj+M%D!IxPY9Pz<(9*+5~~ zXB#s7S69{e@2)EVuKz*n0NULd{*hJ{s-;P1BDwp z2CZ=i)&C$p$QYy#nGa)w%)&M|4r&vC`u{L}FdC!}#zv<>av%&7$HzvO1Mxu^rWZzo z#9$aC2Ergdj0Ukm7{rHR5WgcQ=YJ{M`3UG?1*-Qzc@9+XfXWZhoI1K17$4M@91L|N zsNRQRkh@93IM&XC>eIpCH=_LF)G%u|aJNP#sO}`X5x!gZlX(vqA2K*#~OJfa+}+2Kf!d#zlkVKp0&f zCPuLTzy1Gz{l!oID`@Hemjj*sD=zw9yKN_UO#tYQKcn6M|EtG0g3kn!7Zdug9$EHZ zbI-s3E~S0{10!Pp>#Y9t-)JkAF#x3cALJ*{JPK$W8&rpb>V6Og)#acz7y1|gsO|@0 zP+uR^=Le|;Vb~l1di@V7Cqd;lX#57H|Btl(ztN82|GYHa|E*2+|8)$^|C`u&{BNtP z_&+CE>wkkC!~Z^Cw*Ry16aQP;x&0RtllkxK7xI5;UD$tbP5%F_JyZVsTPXc+abWo0 zVL3*2#sgptN)#xM)$^JITwEk*77lYOfz|2LaVf8<#4kOoWbbX*Q2xKm({s+YwsH_3m3Cf?KdK(#o{08E~ zXk<3B7)Tt1VPY^EZ~uSeAMhD|x_w9f%L?)QmlNUz*YkQaF8?>&@&CUesQ ztpBp2LjNTNc>XH}7ycLTx$=MV^x6NX&s+RocIx&2dVBu=H`oC=D+oRofL8y5+yja) z5}KOsEq|I?Rm|GS!K{ZCM5_+M_r^1s-Y@qf8J1NclJ&{zQa`hQT}gj`QyV}rzC z>R>cT3>ky!H_%=`P})GopgaIt%Lh}7OFu{+Sq{|qMK%Y-My~&1>Op!y7{o`%AaQgI zQv(wR@j+~48pH-+kT?i~*f0#@BV%N75E~>1qG1@s2aRWd_@KH3Z5?{1uiLcczj*12|GKN5{Wn-}_rJl)H~&Fn2H-XTTKx|SKaks1V5twN9zBB*8jD8asHp3 zsQG_sw#olxIcEQ-M#}tea)!?7yD8AsR50Rfbt5mU(ng0a6+#8L2Up~KF2k#45}|dX$X{-1`{T#zC^1}LG?eZ ztV9l%!7#o-lz;H_|3Uge<>n|JS>ykpdJQ(F1*$Va^$AD}ghAu!q}2E5YC+`!az25v zL1_(iJ|C$5Lf1nsA5 zzu}tC{|#2W`ERh|^?$=PpCEPkX3*ZgzyCqw|C-I){%dLJ{Ev-{`0pPa`oFWQ=l`Ey zzy6;)fBt_&PR0N9riuS8JVX9#RIdT=4Zv0ZgW77KvKLhE!!T$}A7A|sY6~Er0|43& zfUW-zE3a|Y|Dbbwo1Gc{*H}PswK>E8IvYqI9yC4xs>eHA82-CUG5j~s)&IX?)0Y1S z4;}jd`O6nj_5c6Y-MjzS@7Vv}#x>}_f&kj-XkbV#wM8hyLpAZ`+kBx?jfy_l_fc%AwL2aUe_9LiFB{-ger~U`c0gu-GBdhKQ#W$#r4@=9S zbPTHBK=mUCgVz3o>Tq)EWYD?+P#FO;8<__6nLzigQoa6nbNdfER{%6G4zmx`hJn@p z$bLg+gZv7@Ffn8roekm>uK)jl`}#(^{)6WNK>PaOeRy#D;NO4!UH|{<=1uv(XU7(B zU5HK`+q~+(c}VJijp1Dg9szV{bq4v4OdkN*#GC@!Z1EA z8eI*D55gez$TTt=T@J*DVURkITS03dL2k!~L3Ip9{SP`v56{|vP}&^mx)GL+VKk_% z2XYgrd?E#d{Eltk$YAgzC~hdJ|3Uk-L47h%oiK_=PCEd(ECl5RQ2hp~3qkb?Xq=wx z`rp;{KPaDJD^EcA1yuio`mW@(EwJeU^+7=M|De7<$XuAcp!sq1`XA&+5C-`ZM8hyK ze2^M~>;J%YJdQJbKysip0^9%pS6li1zkNc<{|7g(qSTA~c5L}?8dLmVW$}~$#=HOj zH{1v{3(NRFD4sxl5_e0>|Hxzdmb$v&^N(Tc06~3zaQ%-o2LS5#gX(?|P6`VH?{9*Y zk;pX8{y((-ht>7iXwVr!6Z{zdXXrBiceSzk|M=M}xL=nnTm9cun)`o+732SYZ%Dr% zWCpJKAGywgu|YJb4nwA4Y?wHV52~|4Vj#c4(g%zNm7gFvm|75xjM3#lX5l&;2YLP< zrVpE0xWr(3Kr{#=s{^q?VlWKi!!Sq;#73u)#gN$`bs&G>Y7@c221JAU2B5M4R7N0U zP@M>BJAu?-!=Stl3h%*$LFE#;^*^ZZg6>aH{sWmekbVTk0dl-xW#j4pgW5Ht_5R4I z_hE4jI`GI`qe0>@Hi!mckQl}FKeP>?zvJJ3*`me&m(HC9uMHA}= z|B>q~5F3O+br%eS_~;l}4#Wn@gX%e4{any^6-W&_hUtaTAbAiQWEQq{1fX;Wx(^sO z{|{0N(*t9J_%I9-17Q#!M1wFo8=a4=1||ohv0-GjAT|uc)Pnqhet!YT56Bo)H-PJY zP+uQ?PTbiUXFDHc2B-`e$a)c*-IUb-AoD=}LdKvupnUq1a0sp$K! zuLRUjI~2VoE!9|oyG$Dna;Z0GfX(h4Zufa*eIGhzBcVkqqNbnsmP zpt&ZHUUZxv9*%PV4@fV_3{o&i4-6yg1Brq7FdD>$VUQRI!}u^7CI+HG7$gp&LE(XI zF9foGKzS9^FTgdn3~G0S+VjYIklCQR7Ck);G#}(9qUuZJx)XYS4yd1v>^~SAWZppf z3uHf``X3aJ_{wBZ-wBitM)AlQ2LO$G!qPBk{T!%%1J!k)adS|6093DnXi_n#{|_@4 zod%UDpt&Yc{}p5|xpsi`!Z64TSp5&m2Ov8^`5d&?3+5*f4ZIv#{U^}VH@9=Hu)qNN2t4;a+vhqnQs^*@NOr=kK@3#$J?@d7GG(91D$ z>;D!vhX3834F9Wb82;NEYyZzIs`>A4rTsrpnc=^uiOTM2-#1!99Rh!4UbHVnh~AR2^0;vgD?L2MAlSKooox?Y_JCnt=%Dqwy9<$X|lcC_vvIdwlMu0d%BmIgrk{Xz8`2!qDZVRb9H zG|XId8kE+kJ^v3Xr$A@ogZu=_3m`i|?grKWApgMXau5x}FmYr)NDPKS;vhCUP1O27 zSe=cH2F>U1{{LUAXx9J2=z#wr<^BJaCZGPV*mLB6T4Ck??A-kSs`DTGH{1zb_Xjfr zss9hE`$6p|5C)agpt>J~VdMSia{!>a9^3{%s{2860I)Rxp!y#)UIGd`^fF9Mf)Bht z4^)?f#^+HmQokKV9MqS0hpg#~HDLTNDkS{hQ(qi>_8(|ZK!y>+e;q~X|GKig|65%d z{)5*Eg7mmS)&YRl{|6cffY;-L>NOAs)o~yUV#6>xA6*j1Ln7@j>%@=x&GcLF@TJ^*b1&^@HK{40JvKRL{foA=4ff7FhR`qNlHc;=}!c z%YW$Nc>D_*1HqPe=;1d|84j|WpnnL||D*l?kyZDD;u}i%x_33!r)$RCkeMJ~lm|`X98G5o9i?Ee^61v>p&t|0CDmAT|tx{0U;i zXk<1_3>!^x{ST_ocmDsc5mox%Fuvx$()4Tp^>+OSW7U>j{|&vO|LaaY1vxJm)K&ng z2VqeCzy8O6ea{&1-3*}c1GNJ{aR{pWVHnf~us1UL4?5!qbSDsq53c_~WB(uwY6C#e z0RZj&2elPI^*<=gu$5OT;ynLr9U*;r(4Ie(dLB>x4;uRi-R~2m!}#AxiQ#{h4dk3Z zP~8qX^DkDH;lGm#!~X_n#{ZpI`v1X(0{@ZgD^Q&U;)5`V4Z_H55Fdm=Vjv7+gD{K@ zs{cXfPJsN0jzQz#u=*dS2c!>#vGGA-pfVTT91tH?|AX|xFi1U&jZA~YVHhM1VuNTH zhVgOHAax))7)IxV#9?9}8iYY>6Y$OXgW7?hx&)MmK{PH5lE*b34hjd5IiN7YmZk=S z7%qR|6bIG+PEJ_IOh9>Xp#6%|-LQ5Hp86l;eo)ytibqZx05mraYUhLUDhPw>Iv56x zZG!4lY;`RmF;Kq(loml|;=-V|2goi$W)Uk7aw}-g0c0*{3>;)Hs67Cy|IzDqkli2* z5=X`$F=Pyr1Bt=d`d+dB4L1A$@5cl0%LmoXq~gtg|LaaX^rpteDeHv`z* zM$kRL$okwE{`Yt>{`b>^)c>G53sjGRFfKMo4urAE!^A-KKd6lhN*m}nJ2VtLrw=j% z8H4nqV~{*Z4A#y>Hw&~b5LCy4)PXQaEjAim3|$>a9)z)pgTz1>B#(}f#X)QkhN%Ia zOHh@Vh;UK~b#)m;_K=n9CA2tk1mjhiVg4~A-m`>Ds{cWHLFR(|1Hzy&3{V>fu!RG*>?C%4u3)uSqzww^`kn@7j%rM&V|G&YCSN~1zJyGg^*!n+E zJrBd6`X6)`5a=vmkQliC53Tp%Y|vPMjt+eO9~5TT$}v@W+5b7_4F4ziGW>6bj?trx z0U(PZ)#D&FAobmzjQ@MQ82*Fy0)oU~7&PY(I`<#cPJoGlXpnff7vq0ZIUbbpe^?y` zqLJ$~WIjwBnTD}JWA?DMp&-8^W6(W5p!NaGESMe;4Z|=w5Dhx}2NYJwX2966^?x9B zFpO*lNDRcsMq?9$sRhY_Fg`v=4unDKKp2?~@*fC;>UWr1k!g^BKyrA;{9%1b=z2I@ z^$EyakQ}bMcQA;<>P1p$P#p@IzXbUY8H4K2f%X$2e}LQ$iW6jaBeOyE!D#(Ia_WCj z{Rm38pfmv5*9xxxLHGW8d;bURrGwR}pn8=Q466S@kK6`;-UVQ!uKpj^ z{|Chvs9%fRZ?m}%miT&8-!tO5RHsMav%&7gRwz02xAk6iGgUC8W;@{gJF=HKxr7} zPGlN1R}adwpgMw3Jpz*lsm0b8hM5bRmj;FRV8tN+!u&!k4chMjDl1`rM5aOcW+44a z$UmU?!dL%;%FfaHf8^Bvp!soF`URz1t?Au*Z< zpmqo794nZ8Fgrl@z%Z!%LuRA%VR9fEBnQJFJ_v*OJ{Fe$wae!IH#!J9&;Kv#7(J-2 zrZxt(5w`pV*ZBF{K0xI9A2b$(T>ppr z`2SZH<^5k_3mF3dtNU zL3|Jf@nJNK4XU$2eRf>+74rIjm>!TBAPnMzFo+GpAhU4YAq+};$n`%+JxDJMBlBTw z5DmgGH6R+qhhbzsjEzhqvq5@bd=MLiLG2#UoxXYD;W)?rLGcZ$+lZ|PVd`N02avy! zF-RO#rVM6GsJ?{x5t#;s5y(%-euc3?bt@V8l= z4^+Ry(g0}84_v>2`u|>D|3TxVAbE1?V^IAM$_p^FvC$yAKkeV% zJ7_EuG#3D}2UKT+Fo=x}gXBOMSq{br(J%~>2eCozWK(Om|N4s`{5J-T0f6@DZ-MsN zLH%}WVvxDp{{J`H_y52CyzBqX%qC5;H*p0=l?-^u$hM}jw}yj z!)R>kKyn}ql7nFoABN##>FMCT2>9A7pt=fFuOZiS1ldkb;PawDVTTQa))ft8T?q0M zAxyBoM4Ib>g$Jk)4e}Q@Kclys3E59=d4m2SQ2&GWe1qzRQ9Lr*0ig5(OUIx(7+k-3 zd4cwk#3JAVAv zU;gO7j#un|ki8&(!7$17KWzLTMuX-6baej51_q+kXQ1&L<68d@G8<+dhz8aFxXuv*nVTIF0M7sLmZc?0QZkh@^+#7YyW|3T&FXx%?D>V8l> zBj;aG-3qGLK=lczZULnQkQliblppY6(E379|D0U&vFQW38PxB9*$Yww>MMi%1;U{E z8<~c&LEA(KeizH#asTco)Fjjrj zE`jBADwqD(cMAOPXKe*;o5A7;6i*-wYV&}``0-)*nm<^*k3@s!03v*RQ0jls_zgx` z=H&d})WGz=r~vFe`^!-|2dH{;JP1Hhrwu2eTEIg zS4TulIAU>!L1jQdLZJ^Wm_W!}m0GR{A)TsYK=AfGk;)5_q4jTr^fiOr8nTD}J z;xG&n1Gy74?hk5bqx%=c2hC%H`~9GOZCLucSnCj|I*>k49S<@G8wS<+80p8}eo&nU zK(M}q`V~1GK=nU}kIm2M<7S{RpeH8i9|B`GAisg?g;6~G+W?@mo{;k|Xe|J!d<4~R zpz&=`-AM_?mOqfiKyw73y?P)!$Q@?@=|#q%`X7`BVfKL1GYEs$GJyPsj6wc{@j+}5 z#>NMU!!Sr5nGNEHIy(KgHZuONZ{z;oz}Dlx0f;7mL27j@UH)rZID@gCl`B?#`nDcm zbFKCD|A#s{!s~wI`X9u`SMS5*!1Mp0Iv+aT4{i@2v4h>+QR;tCJBrfs8>Ao9j)27n zAsVC>bap~3+jezW4WHzWxH(K`(|GFO($Dq0kv~CO*|DgUjtZoDKnUU*NQrVz#1!gWT z8dO(Pz5aJ`K`E0#?f|8CP@V;yZ4B}s$ltIz0T3G|24cf7NDPFL`5-n(41_^!5GKS1 z$%8Pc{{^xW6prX+Cdh3dc~CtL>dOm;Y;FIe zyNw!U8K_JGnFAUd#g!J&#X(^OTB`@DLqYX6s4fH5bJ#FQ4unB+FdD=LVHh7|2Ix*+ zbbFBbp!ytCufz0!Xk?6R9%!Bb-QoP+k+gY+Zo1Mxu^BnHADHV7lLVSJDn41>gw zF-#mrgXBPL5Dmg0HpqTla}=QQB2eA{)ng>rf1o}wfqDcK*F&NH2f2}C|2sMT2ZbAY zUV)`0(3lFyTx!(kq?!TBYk2)bAl^pn|B+GmgX(`!8HJpNL4AIZ7zl&f0-(BzTntJ_ zu>63F2ANIm`X6K_vVE{J4%7w!VURp%EC96c5me8D>Tqlr6b8uRFg}O|VVE2`8<`KP z!$9*JAbUV#E1)_M*=-;;D6fLlf%JjYp<__p4ibaWFgA=2qe1ul;Hvjw;^_T-aC-pO z2GG|2Z>6vQ-^b1lrTqk|C#X@Dfy@A5*xF2x-w9z*y9ji@E~rihVNjh0s@q@~#z&_? z@*pt~2C+dH)Q$k%H-XR2^0+wg`9C0i*f7W(5C+MC>Q;Q`=YiJFg4_&hcfj<3Xb=YJ z2hqqFT@1zt(I5;`i%cW4VRFb~AiF{BCr}?B-Or#n0Oe0m9R^B&+}bgWAU+8dUbd+5(_<54c|S_Wlp6*Rj!{aKR=H69dVEFo+MT z_d#rs9iZ|SxqN`JL2}@JzqdDdTp#QP=-NvV8-&4ef+Pmw!^A-}2>aUD{3p8q5328x z=Kw%#5C)0s==^uJv_z@@LFofjrckRa1DORXA7NoY3=LXK58A&5s?$Jq9XbZpdms!F zN2Wn+5C+x3APn*YKKnpt;(_b{=>eGq!XP#XgV@LzRR4qa3*s^l)W!sv1+o{U51Sbv zabyfq1HvFNbQ)O<#Kwg|`at%AFsRLm?mkez9F!M8=^sRsi$U#bY;6meeW123D6T%*BU6^)R*j|Db${Y$vFnf?n2v>;<(0KzRkk2FZi`30jW; z@;9hm1PcdHSb#97PRE5o@*oV7hxO$_WiPIJ4kQj5e}Jh4+XdZo31Y)Awz?iBhOEX) zPwzjhkB^VW=>LQ2d{EsF!XUPe&VNf?U9efmVMy(=92DmG>JDVPVQf%)sy;Op+&_oa zeW1Dy#0JqI3}b_6WDKec@$J=v*#SDw2c#CH7iJzdHb@Rs|AXfEVS3SNPb5RFd^BnMK1jzMD`*v2M6c^s54L3sj1Q-VQx22{_X`y0lG)vbfI z?uWSxR0fa}4xlgu1P+bPHtt$1K9zpw?Q-|7}V|n)h)>Of$}LRy@T>N zNDf3JV~`lEEda_pAU?<~AhSSYxS%xyps)a~hXB>tVC>=XAJldNwG}{eAT=O)Q22rP z$a^Y~-2!5R%m%3ihclLbJxClE##Z-(`g4xP#^5>|U)>LqL#h8^bv}p&VQBpi+6Q25 zVDR7B%nUvb07@I6umQy>wJ<2mah0E-aKeT`aRS=Ek6zz__{eo3G8-fZst-YX`>>gb zEC#FpLHa=$q!&cPFft!xCaC>}tRI;TN=G2|u=*dwhM5DRL40Hk5`$roIE;-qwN|<{DSIQSlolkVo<#gs(U~*sBHkMt3YZ<#i05h zWFE|HTr?;RQoH^KgKz;zFcl0~~D!*VDSq?1b-~c|?1XMPF>M4*INDasw5C*Y9 zV#pYz7KD-QMrMQLKw%1MAAs5ppfCo7H4I~`+mXeP*&sb2K4|SGv3-A(`X5x+!|HrA z8dU#-?gO&a*GFjsfWnp97!)QTGeP|&t$Yvm$1!IF~m>L)j6GP^M#9$aC zj*LO#ptc6CHIATgqek5iO8X#lK=Fpn-ykv2eIg+Fp@2bY5acIPF{m5>=>_>08wQPk z43z%~`32;5&=@2(cZ0@sKxOi19SNx;hjTc9>MvLt0I@-J5~yAQ(V)5tRKAf~_k+}f z`f2$3z%V;OX$=&n_Aa(dK$ZTAB z31mM=4iuK4Iv+Gn0AhpY7eHYQs*~_xP+TC(gZLl}69d)Npn9EHjMD!n&;|hA2W+9M z`yX_75Xc{(u^Lc$N9{5VWG1Mr1l1WJdx*uLwS1uUZJ;_2RQG`}tUg3$gX(ioy-vtn zP#dH!B?W7J4Kf#GCJe*u#FxfFX&dA|ko_=yAR1&A2!q(zFuEKvAH;@XkX{fQM1wHM zO(1__a}%g70!pW_G)*ZD%2Vk13^{y3?RrqWQai2C!aR^W$qEkw>*zsgnilRQ#!OIo zh0jl*v;ZoXkmC%-2IYe|Z}0!0a(NUF?>0byg9Ch=5R_hEbrPtK0oA4C*8iY-98~7O z(iAQlG9`awhx&NvKKT*0IT;wbw7v?3SSV0)#ET4Sq#R8(J(b28We68+S){|`9p3S zfYPsexWAIv;Zoz)2Kufxm&nSqQ!;vfvFYe8y3WhG2MHX3x^F1Gp~ zWCl70*#i@Uu|YHpgXCar5DnvlXpkMCwgxC((A@#b53uw~EgF=rLE(jN7mN>z7f^hH z+%ps~+2Mj`9UW-=bD;c=Tt;E@8z}zpwj0*|Dd{*T)U9Tg&W!)TBg48z1gGzi1QK{Ti=2aV0!7#I*W-;Z4PgV^x? zKT=%}s@uWhpmqRM95k)~vIjH<0K-~JO8-qXH2#}tYW_FU(D)B(9~gpY5LQ>m&L>tJ zWQK+Y*jznT)&J`9@=oK7|aK;af!jiK{N;xs}`gVgh6^h7{-Rt$YLNi6ob+-x#0o| z3sAnm77jSW0Aw%7O&|F>gjL2*y?(aTT#Tdwf}?a ze^9uA>NjL;tf2vx1FJ`BFM!Q}wjJPXbUsWyE^(+l$Zk-4A=^s~8#L~n7ZLFvgtJ0J z|ATN&SQxneHBeInk7eL92NcF2_1U4J|3Mg}A156a23CVDjF9aB_5X6i!@+7{=E2N_ z@j)~Q!^A-}48z1>d=L#21JNM&g8U1bqd~S8#sg z7=Y|T#vps~VUSvoJd7rW4N{AQL3?=c`3dB1e0dDizW|jrqZm>?565t@H8A+Er=kKc z7eV8@ZWb2*K^U}`93)RJ2BjZR9v}vT>M~IHg7lDUA4nglegvg?bUQ(59V8BFV}LM- zjgHa9@$o@&ATvSr6uMn7J}4|fenQ5eb`Hp|1Bv0~EvQTZVNjU?qLDF@7;^dm`3*D| z0P;6RxrVGC#6~g$tQI5&!XR-F2C+dH#D-xQA9@!NzVZp=7Hk+4-k|<)eq9aNF7WcOfNc(EDw{zCI*s&VURq? zy`V86WIJJOQ22q;DSBF`ln<)^L1_SH4>}EMYk}m!X$=&oAdDQx$b67Eh!4UrHZl!j zgD^-Qgh6a%3=@OVAUO~lgh6Z&MrMQfAPf=%VJMs2Fad=xsIQG41|UAD{)dMH$Q}?z zvJ)OYFmYr#7#o`$NDPM2)j`EU=@OrxK<);m50E>tVUW8)d1(|6-})bv29V<(RQ`d= zD^UFp>Q8{`RI;$4A%@w=_Mo#}%*?=jU~1I=pt=U#e2_muWfrdd0IJVna_DSiK1>aW z2AQd^stRvAA=?QO2Zbei-T{e$!gnAsD15*eR8D}(4iJX1K{N9rKw*q4EI?!IpgaW5AISE?>_!)ZiNk1gc@Q5Y2f{Emj0TAzVM^20<@j+}D4Pt}L1LbLSdyx4cw}8SB1gT2C^G8 z|DO$=F94Yb(+{IzV#s`u7&->YgD|K)Q4kdcK7Rsc4>ApEe}d8}tuQDrf&7JRCo&rp zU*Plwic541idPs0$${7~8pH-+5Fdm=Y#4^|VKlNhNDPEQVjvoXL2M9)v5{#I8-}53 z$PFt{Sb*wzWdFn1AaPLo1?LlxJs=FT7e<4`U>GEZiw%>5(dg`qU{Rk?zM)B~f^O55dlt*Fl4k}+k^**SM0MVfO3RI_(g$)hCYX@Lv6QV(L z;-I-#vh0G^{UE)dvKW-#(Cq`&-JtZ2oF719$b5WkbhV&%3c4NWd{Cbi6xN_{1o;ir z_XmY5D0~MJgUcdVIRT=hQGhuvOav*sS2FZgk zhz-KfaR5+S1@$Y@!^CJ_v)@APi!IFpP~vgYqXn|A5j5D2}kX z8zcsr=L3~ppfYR}56?CLa{CWdPQvOZ5Dhv{4ph&9>Q$1lp&@vE94H+TgF)#KRCkkX z4^rI^(hD*Jl;+Xx1m!_cdPlCuk=YxO7>2F`1l1|%{sW~QusPWD!SsV@kUTPt%*G`L5(iP>Ubo?*1QE|HJBA7!9h6kugXdq!u)GMaX{87(Hm79;P3p7sQ6qFgA=2qe0@x z7$gpw&j7g-o1LIKnI3gNDBiKz4-x~73xM()NDUmr;u1uIFf>lV@*qA4Ba0!kk>y}) zba{|C2*bodY#0WKfiQ>uPAbA*u@j-sl)y3PU0hNcK@JDwuj1OwZf$D(Kx_@}q{h)XSjpM@N z8&sad>L(BllBcBp2bl*mn-C4EPeJ<)Ky^4J7*scd@+`W2ATf|%Ky^4W28qKkNF1Gw zE(S9L-F$p}P&k0X6NCq{-iO%@%JV1~RAwM!P+0=vLupX?g>4Q1)E5WU$KY}esus=$ z@sTmeJP<|~1M#tmgTz1>BoD$MHVA{p0(5o3ZA(!3gfHC5k&E*1z&ieqUI&Bt;JP>> z;yZ1CxV^gJ_r-h=yTo;zZPygu)Tj=0Xn# z5FeCp;9&u>8-!tQ0nso%jE0GU_#h18!!V4GOoP}U3{wN5wYC3)${dir_}mSON01tj zJF#In%|DZA)7WbgE0;{7yG^or1)pz97$Dn!`G@bx6n-C33uOL0-*oCYI zWCp0tMz;^-Pf$M`;u(7pfVklW@(8*c7XhY%?%(iaC(5n6)3(y7{&+DFbon0 zVPrmt4HAQ45Fdn*`MB6Hbs!psL26-a5DnskFfyAO^}n7T%04PkIDjx{UjR6dfb2xa z$Zo*JhUtOHgJ=*2iGyem2C+dH#0Fsy8{{Vfa~hy{1mz=;J8@x9c{*DE58wJ9IUj@4 z1E}7I)lZ%UAbUY|I5s;#VxTq&sNMjj zdywBi802pdjSYk3Ko}$k%EurxNX4Lb2XeT=!gru(aQO@>BVc6(hz4Ph7!1SsAR5%? z*3tP7T2qGZcf8}9AhSUFVKj^l;)5_UAH+t+AbAi*7X$G@;-K1BbyDHXTatT&^!^yEf{GG6lbuw1JNLiO$;Os!XP;q zM&@HA*Q2qk-b73@y4XazQ#Qf zki?h|S_1%557Gz2$Yz7sAPkZN(I5c z45K{=i$_rWA+tez5JndR@j)0Qhm1jDAdD;qV}ry&7{td#gXBOMCJ$o6F!a7_O2Y_S z``Acb9ej2iD2~8+3S>VFBiWB42NDOVfzilpkQfMq#6TFv#zBMnLWKMUDg!}rht2(< zxE`o_5L7=6l-(o2UQqZV$2rK)pn3{~L3I|WydkEphpU10-=Q=pO%aPhMivGId3gp!1qB8* zRaJ8%L&N`CnwtL=I(l=l$E`klhpqo>D2|91=2Su&O_z@&kcqk zbKFgJ75_h8sQ*9FOBJNHW@VN3|2HcP{s-7A|Np$k;D2w121vYTPrJ_l-y01uW0ff3QIRe~6O`NR39g zv&#R9C^e8f{@28+|DT$x@n2t0@BgMo?f=_bbpCs|yZ=AXr3*6Se^_Yf|5RVq|KTnw z|BJ)a{`X~S{6Es8`(IC2_kToq`2U9s^#6y3g#6djQ25^vum0cDTIqjDaq<6;A3y$I zy?XV35C{nl{@>Kt_}|6Z`Ty0cSO3qQJNN(bHPQd^!&fIS?B+R z{{H`Isj2_BHS7G}xpU|LU2Qu5_jc%j{QLhUmFeoudLDnxkF`k zq2~YZ>ka>}tkwdBtAnC~f`u{7V)Ii}H zqaZJzWv-|Azbab&|JG*h|BhygAU{?p$jkdFDkxN_s;Ge6tD>x=#GsR(=6NAz>N;5m7O5R#t8aNvyU@adAn@$kNDaxUnK~@~qqnSRA0p z#j2zXS4K;QoC-I$Dw+$_xVY3cXlW_3*&<4;+?ps3(Bfj%Mpi** zZ6&JtdivZ32nTSn8lp;`*dtX@CR-c;}^E5Q|tGpMVo2CW(<`l(4XH zGHXgIN%p6K8?ktZcsXKy0#YZ+8cmx0f_SWkO39ND2%@a%q}iVYwFECkd=QATrjllV z0$z(@l0-XzWcxE{CiaUU+rWxZ#v#iRSpbn1 z{wT>W12ravg@uvr7sHUnDnOe3D3xD4x`8NFGm%4Bq}h*>#n6+VFmn2rM|T_!K56!& zRDS5K43xmZa2z%4M{Rqd)-b5WPX?+a4$Fmwg-P;1N(5(!!a-6}B3iwGku`C-fF%1- zLKr!*qqB)_{*dN>2cI}QgVh>>DDY3YxM zwpToQro`iQuoNlj52fl%YCrrB!)j)9>d`RA`5<~14!{d4hzwQF{>r0Rahw! z>_@Hq;GJNUG8yC+l9B)k_M^1DkjnQov|mHjAfFVy-4 zC1)VnPq-Q&-v20VFSP0%rDQ_bFG6@EfOz{+k{^282bAt$7-4@BE5Vw8c>7UO8G0s% z*$txM_NQgA!r3T^4v9m&{V0_mO7cT%dBW|CXJthXCnTF8OyccF$>$Kw2omIP7>3yo zim)t%66`FZ?MG>QVHgXu8$`qGmuJmpWyNkQLX>FxQSvxOB?Gb-hN1Q+v8Lptuo7y9 z6Ky}rzyn6IhS?3GA@-+bu;%6w9@-LR%_pn~6kI6D58YQNWdp?iMAp>2yaIw5K$NwR zIQv09gJY0`kTEE!!6m`=i?Xs7<>eI_=&PVK#B$kq=@B2`92vfNakroB=9{v>)Er0x@8YN6;v3gLpYs z))I*Q*{qo$4G4^$bD~&TiSj?fDy%Fal+u|MocKU4r~-ut63#%cI4Y@Qzc9!F6{&Cl zN_-&uOW-1@Y^pi+n-a-%9?ZJury4!kTmR@Pc1yYupL zDzN1`gc*&jO;q$hsNjc|d{9^9u;OonClgu!AzX}?mBh*hwHQXF;IDy1S(~Zpe^8?f zW;28)V7e%43jq~){fj0khvEIaY*zHX3W^@;+Aq(V3-NVc2`m{_;V5{ZuAr*@a*$R} zUS3W%D{BG7CAIjQU{tj~i?s@DX>kgu%1s4Vf+ehIePyV}p_C|VE7js(6yp7o3Rc!E zQMnA(6mV9=-vp$l{RyBjFRNySRJ1}_kirmuABc+f3$e16Xkoz z)qmg~0(w0w0_ry6>jRZjtNsUdL6L$U?$abzycv*c?Vlu8d5mrm*b$-`_y!>=S!44_ zTK@w!6O$0hNW#^`NyF9l0+|xU8r#N--Qgf0m2LGH%TO;(}jV7VQS|zbQ${alRBq^R^T&s5*#O` ziF?v!bj}2=KWCWLi7}!~6ARG{o!vPHY&`?x+|GGua&+L%2PJ-p0~U0$E?h(hE0L{O z%-Y!tv7Lc|VM!{> z0|UeQPS!44)pb0Q+{;jyrxvs2nbk5;xq%{AM&NuRZIGu%=X#+J@b)~(xg z&__w3S}CVQw=3;n?d;r%#q&^itmy3Q1oa+ig*!VtcR{VfMXlbjyOTy>&z!xuY(*Dm zWMp&!L6?2|UG}*!G9F-LWCT?fAa#rkj0|8dR1u>Kh{xyxlLx68#iJoG8UmvsFd6~` zLIC6Z5e62-`6Ey^XwyFE{E_sML|jLYfNe=HNyK^d2v`9tYLFJ7`7px#K6F?oq>VjKb7!f1_p+Z zVH;Yb9vcmT;S&P7RL=XbGUO2h14GPcJ7D-Elu@4yyAWVxU|^U^r8*y$?~&=t3=9nN z!!FcDJv15u!y^P(7#J89(lGzuW?*2@93DY6>Wk4370q3Zk@3Hvpx}Q+MaBPyhKB!bZEgSC+uQ$lb#?vk>+Ad9-{1d#(xgfMo12>c^K-Bv z*Zm;&P3TzSunV|R4~>SvFbDx=1_lO{{LjX~@PGA^MgL#Ccmc+5-@g6-@#Dw;U%q_# z|KrDx|G$3y0^`4b|Nj5?@85qI`1Sq!e;Gb5P@YG|qxpXrB$81t4BHUEsQ=j+82+zY zzV!c}KYzd&l+QsJIj_U=JTm?K$&>$5yrcPl*rt?Gj}6BVz^MOW`5!rN6T^P-^eL|V zuQ410Zq!esAutR=0Bio=uyQ#uSsq0Vp8OA5Pc#gIYSas(Au#Mh0F?h{A&>uYFfjb5 zV*bC%z`y`nFF5Q1Zq!4gAuvorU?w&4KaT!CDF1`j4G)u`qPaIfYo zK^U10T34;Wz`y{*Ahj?yjK(GglY`M9b3kUpFo+L|CoKjB22g(uG-r#9L2@8>pwloh zm^g?J!pM9O8?;6o8wS-4AoU=32@x5(9MCl-AiW?AG9QFNY!C*qVg4e92H6k8AiW?q z$Q&6gYu5xA7#MV*bK0Qr0fiL^gV-Q_APh1Cgh6a%j4TFXgY@x1{S2yy1sNC^IqS73=9lX(788I`x}NqaR6e2{0DLy$Q_f>^Z&+GD^S|@#Bjj*A9MWw+Gzbx zD5}8nptuiUU|?9lz`$^Zfq~%y0|Uc(Bn;!9V_;x7i-eK+FgA=vR|gUYVUReo*)aAc z1_lPud<_WSLSlpXpmkgq85kHq7^DuF2C-onCWp?y!oa`)steFDNF1aV!)XQv29REmyI>f`2bl-*6DZ6;7{&(CAPf_Ov0-k8 z(IEXG_9+GihD8hv3{4CS44`t6mw|zyoq>VjE?U@t!Uq&yAU!Y)G6Nlhh8E}?+zuRZ4{|36gWP?Xfq?;3Uq>-8Fz_RV4U7pYGin$Z7#1@yFdWAb=AbwL zg&D{#Aag-!0zPL4YX6g+|1rn^L3V-47?}G;Y19w^)%U>+3=G>C7#Q9om%}5N{fdEs zVHtFf87Q>aq4^G!U*PGK&fx>fvzr+h7+%xaUR?hD%)r2~g@J*=1Qb9}Tmr2ZaOojR zd^G<?GwYW+o z|5c^Lz+tZ-F8p6sMDV|?h`@h&F`@s;5+Y!6B@u!Dle*gffBEv6m@JQ?22cGD8f!$& z0VA82fUDjY5D@q;CnxuR^{Q3>A3uH!#?PKT`wzm;pFjVPjIoKqj{qhBzjVumglO_i-_w}on|6jd${vVWX?%clpKgiwXzc3rd z{t*Q7cXA? zzjNo#|K{fA|5;gB;QB%Cz=l;MMgFf`yzu|q*RTG+ef|3XySH!tzkmDo|C`sZ{)6J` z$)kt=Z{NK6|IV$O{~zAJ_y5JSr~hBQc=7-3o7ewAYkg5NHjx}0_5W!5AGNFljUj`^ za53UgMn>lUojZ5Hdn*X7wI(u3h*AbhYv^fc^O{ve>7|w;kbi&w{{4U6^r`<1)s+4- zW2t-DSXlnYM?`?rDo8!G?8avf$W2a8P8e|o3a^x@ z@Zo=u9XJ*L{}0ZOAT^*pIG{Z_6T3S9tEsB~XTTChJd6zg!#rI6KY927pOIiQLHQhH zE{Mjfm`F)*{>MK5H`@M3lmVbQUySsmp`r2r%9SfbhBS4R-M@by!#(7z|DuMgKxy&Z zsT2RjI56wDsL+uAAKtzNr(J5;MXVX1JYr>Oi4jKArcEQ(2&$+9g$)RU_TN2!`V_-G zpfbtd-R1wQXHThOAE}0b^FL<)A5{O3w*L|N-wa#Zf8Dxuqy{(D)DNco5AxKvFQ5Ng z8|a{N*#UA=MzC5*I`75|?r^gN4!l z2c4rfV3GF!|NqhaPdN04LjL#laR2}6*)zhPp^=Kw`X5J*M-?8;|3rY%`k!zhq1XSO zt}g$dKY2`8BaKwx$^WDMe?%F8k^eh8J82Xn#2GtU{}T?Up-}&OxH$cP_V^KD&(KK4 zX#PiJay%@I{7-5BA5;&#dHsg$SfzIUzjx=(e~_C#efmVUo2Xs?KYjG*|A%*P$#xI5 z^Z&1(KmXsmee3_XuV2V^6DW*fV}Br;()H?(N(EWkrSmIT;xKrzOV!e@W(g9Z-G+ z<$D+=H~)ju(X83C!RZKOR%u@L|95X*5gRmcb))lt;QUR9pj!UFbmB!B+<^RiP&xwgD6gAY!|J2GOAjhHS|HAy-|3~-j{l9DTrvH0)Z2Nz7 z|K9%xckTSYd&_1p-nC`(|GnF{{Xev4*Z)1+w*KF@WBdR8JGTE{yK*^77%9uj{6Br{ z2*?VOFtz;l=lAdb6~%=pZtCmnC&?`^#pwB;-0?qb@jqqCRG2kH(|GFt(fNNo`M-)N<{d-w21J3B{>L2u8(sg4 zS{PvDe{$>ps~4}Lq@#h(|De0!rcRv-cT-?M0Cr zpKwr(*8iv(9S091|C2lackbLdcwPh5i36SgVJYOynKS=SojCFT&Fj}NA(Clg^1lQ( z`~UKy{QqZ9pZgCA3u5qBGS0ODIes+%gF*p6#*_a?`~Qf-03-kR_L4XLd*9F%BlG{jfdhm!(n!T<{wEx;IO_k=^S=>!AH_HU&&Ggyo_}*=BjE%{LlvX>pK##f$p54Bf1q5Cz!>?T-1>j8 z&HoclA%s<$sPZ{aQ*^H8+ka?|DaU% z=hyH5wg$Q=ej|4s5y(7h;L-d~I27^Z|Iz+GqClWp{vXc$|H*x*dt^rQKW6?zU;jHg z|A)wAgP29N{D1!3d6YVGxYYlkl)h=*dKABn=6_JApyI)n|MArSqw{}=0*Pw*e>m6w z=<9z*^FM0d2k{15{vVzHLu7J1ER6h5?)cwet^Xh1zYjiB^vAcapkzuGre^+s_vX$2 z&1=_!_x*nU_?|5H42Ayx=>9)Exo+@CVdQ^u$NvUf{SR7;yK(hO@VPdiIm!I=l>eZ- zM^1*LR{nqg?%n^2;v#roB0V+v|C=|YpOrS6{|Uz;p7#If_#dMD!N~u^rTz!C|M(eE z=j|8HApIN(P)eg#{@=J}4Lt9I$|Mk;HER~g3X{wEw<;QWt${r_nG$CLlbt^coH z8eIE-Up{;GUxEv9))pwQf$k9}oN_Q#P%HoM-?bAX|IeE@57R;dBBS}AKmh&!{~w(H zv9JFf9si?2{zq^B2l)E^fB)tk;fO+0fo=a6Ip=>2%KX23H2|z| zudk0#vcZrat^cuScr;O}<^R{OU;j@|Oa_+$tjx^+d%HUSfBF0wBVGsz4Cnm+{Mpn0 zIhpC;FaqWMpaB2>j~-*f6!U?ATd($aL)grumIirv1;j({~OkVGdc*Z(h`KB2bPi8c>U`+qe5@Msymzl(|CglE z{y$h)fx;-*%l-e`*RTGA?i(e=k)V7J3e!)YKK+07>J|7LfX|;lgTtASIWJ$n#K>zi zX3QX@4Xb=tYb%Ob6UiLg#I|l96iym4lK;cK-T%LO@#6olpFgp>ftrG#a0TI~j~@LO z=ixx{8v_FaDF1`%JVXu{*(^o|1_m!sJmJE^!ovSWMMeK>X=?tD3J&`3YHRa9(97$8 zfQJVP_IG#x9}yV%-^Iq}e?wK({~u(=HMaaesk`I<-P^bSU%hnc|Fz4P3F139Z~Z@h z=+J*LPF9ror`G;o^so{U7XB|MC;Pv>sqX*&J$wFd+qCKbjxAgM@7b~A|A9Sw{_oqh z>;K-JJK=cu_U->SuV4Rv+2Y0jC-(OKZ>q2V-`dple_~(X|HTUyfaO4XLFzy>2=Cjy z`~Q9@-n1U|JVKCrvNAHjc7oruieGb01+PLMoE@7k3sQS`y|gJ_VMAT`@JZ~i}f`g9a?KyE_DYEokVt#vj3_qMhE zzi{U4|1&2}{6BsC`2TaKPW``d`ZO4yId$s)`O~NWgXq&IPyUBt5FaFd_VnrhV0`M- z|BGkNz}21uiG%cl#Lk@gf9}kg|ErfR`!B?ay8j!R|3};Zh%!%>fq`KQay(IsU0qd0 zR9%K%_M_*2kb9VznEo>}Gn0%#dXX`?`G4gS%=^EP%|&K|+{(zv_@4=cnV9~A__#1g z9X5Gc!2+vA6@&*VRNM{}Io^I{t?x-0+s|*wkyQtN*`y^Co)sCdkK@ z|FM}*ju^T5A5>S9W8bJA)bp1HL3lhE9sffq^FZ@||7Z~}dD+?j-@JN7Fu$WK7>xP< z)5j103o=vxD@aTI*HlyaucoZ@Uqw;jzp4^$43bw@QU0%?s`6h|N%6m~w&s5w4YmI~ z>=*@Xf>BC3# ztW6Xj*EkY2(&v)dGl_BoHbtQGL=WuR@&D|}3=9nI3=9m_3=9nQXt)lE-^jqg(7?dJ&;niS zg_7nL%$NqUV!$w{9pP+kj^ZY0{+-Rhz)--zz)*q(7c($0fG|j|6iFV$24R>uhz-La zF_<0@8y&;c5u!o*U}`{Y5QdoxqLJlb>@o%h1{c?GpvS<#kOy@;NFT@?n0gqE zO$;Ol5(i;)Hi(Z4BdZ6gNoHVR;6-xNC=(I_82P`WqhrAG2gu?(ckW=zAIljS7+4`r zCYoFc&0BEu7EGV|A2c@vvS%Rhs~6AzJ6W2+-Gk&lL!x~(s&F&}s22hl`M76=wa<$jInSy(k?uX*2|g4uL_J|8cbc zH#0CW2omipNLv9T|1X+3eL(AfQ2uwZwg8t!Xl2uA{wE=FN0m}71O{FHfB5hrw*0Y? zjQ$%&{$D(cyft$0#tDTCQ2uwup8p-F7NesEjfMd6Au#Cj|CK9Ou;u^l3=9mQbsNGA z3=AMF#K6FS4U0hKB^ekPKz#-jvsNu2{jLoPvpkA+aQ?^A{%2rd@L*tI0QFfwV;smB zBu0E}qN-$pj+wAAFfhO{JCqHx10;^l28n^xfiN-~#s`UkFi0P&jre(>wWc6FAiXdQ zG7}kt#L@X6F&GBP!Pp=gnGa&)!ywl&F)%Q2GB7Z3V8JlGAUPNtM8o(n8YBk7AU?>< zp^P!||3IJrl@uS3l4qgqSVi*`0;u#ni0vQ+> z6rp7WwsZ$78>69P?OhBE4AU4G7^XvM5E~hT=H@_iVlW!U2Jw;A!SsV@5C+MC=*bKW z3>6Fv45p=AsV3=5!mJ_7>-41?5w^nhp>hVfxENF2rnnPH3W;UUHc z<$sj*KLdIG=jzp~!Ruww^DVXb+G=Y5pWeSm#~hDp6*&K6Z~w!~C?foNk%57sgMono z`5a47od(K>+lbIlie03roy)+$fIN<2z`(!&S_ANF0Nq52`^iyzjDdkcpMik^)V3L7 zSs(0Ntofhbb7Y`>gP?ox=#fsc$VPIfDS;s|> zu*71=PiAK3YG!8UQbtC`hgjrcZXZtcaWclHz?p9l5TN{zl5RlvQT_e<_dg87$^sA# z5`)n&HYn>Li-Gn9gZ8z8_5mYf(EfH12I+(0BL@!rFE20u9~~V{*Yu#Hs{FsHqU`^< zlgB{LryG9p?Ad>FZT0`G4AfZ{&&bGlnSp@;v^L`B2+3=7O(!ITDQFKpsBbWbfq?Q1VZ z<)F5b8v_FaXnc~M1*8XrLHa;p1qut~Fam`Sh@YO0xWAFgY3nfq1A{j`Gd}|Z z!;r}TpgaxAH~2894+836fchUG3}RzDlZqN~#>39?f8UO+_?$y^xd(Ue{NKNG=YLHZ z{CO@rJ^laQy?g(E{P^+z*RNl}XN!TthUyOb|NsBJTetr2+qdt(kdP40d?qO<@PE_# zb^jmSy-N!x;5GB{RekN?KUp|FHw)xBrpdMh^Sltvml2(Z&!#=d|tFvxgkxsG_I6 zsR1R7KxI;I_rUHYLC*h0MMeK%X@F7>gVH3(EKnN@bU*Qn7cc&U+7mDu#0FsyA9S`O zi2dZrlmDP|TS06P?&|8o2(JOm|6I`dWMu{h1|=wlu@x8?7_eb^EaKS2koCgM2GJn% zL2{sZ;wzx^0>h@Jrr`MpO5=%I`mbNVjuKZgB0~R992&T@?cctB{a;Z;0L4w9b}6;| zOO83%_H8U)w2&O5sHO)w|5sI2QO#UrgFtO87zT-h$_7y16GS76gXEAgD869n9f=;O z`XAN~7zi4)o(;5q51yV)OiTt<{zpznptzC};{Si_z&_;Yq$~T=hY$bV?QG!T1#%N; ztdFjaK(h?g2LQPP8LwKr08JHrxybQWQBgr(%L&+qV{8(%hHD`5;6U05YBO9zPB+HJ z#{WTmcLG63H)-T_1ajxV=l}Qr-E1sT@;_+Z2HgS#i$&P-|FZdWv8be<5OTZ?k^G-9 zkQs4+>=tKWU_fdA8yFaX&(jCBpXirbaNC5Ojs`>i|M>phe+M(8L7)FuE*h=>aiuC8 z^*?Cu#sFo*0kamgR}XYABRoCp>FI&*92w33*i+BP_wWBZS(w7Z3sfcz#`=HdqWRc8 zKqpb;a(l4V|DgB+#Ty!q8n9eAa2A8|KT7?ttE>C}%a<>MW()v19f9I&pxgi8{BMbR zjtD3{(J5PDwFX=JfB69Kx4v@qD!hywZ22EY{Xd%j85sV9@;_+)4>X2~HL=lIaPZ~- zcmEyDP2g!86lSCOA2U&08^rk^6knitL&Knb-UC+?4~)&AJBU!m|3G^XK=uD{Z2y1# z^7a4vl`Huu|EV$I|6jj+iIJBG2~actKfHhMzq*nFIG?bwu>4=Kco8A%vC2~`|Ns5- z=l}9Wi~h5-qTbzzR!@T6i%$%Febivf|2XRZ*nz2n2h>(M=-EE-I0cRWf$~47Zo-<_ z=q!l7j-1^7|LYge|Jxer!~Mz4%=mxjrVS+fhMM{R^5x5L_ki*fx#vGoEB}A_^yzAYUY3Rv5o%zev;h-(m<{J z4>AjMPD(;l_|3PUBlrBicZ{EE5pBSHrEu1M5lNBXz{qNgXul~E)TEXp>5f%A=bU*3q2#0(A zCpDgNsYh?O!O|6IKRIaaJ}!Ou#6jhyovj@_4q;|ei5`jdKWHz&Q+(kEs(NIx5J3!5Cnq8HUsVw@J_d_tSurx}|JSen54QaO{@vUE6-7nha0>A8{(t4- zMZ95(OLC~?e~^1|`30XisDA`Y2O!$U!u-FJjn#i^Gn4-|=B9YDt%cctM;ojE9?nkx z^|ZCYVGc3_36I43A2j#~I;*~jfq?<*SwwT^lDCc=J^$BKRsO$x?%e;gCr|!AcZx6u zsk?CI^#3iJHloCpytvqZa?Su7jO~9|THm*0`+t!8V0=<(P<}#6$Kdc9%=JIWy`=gP zq#iy0AKbt1|I>#L{y)5Tmmq$0|K5Ml`3*0gKK8gD~h$1YcYeE-*AX#bNOs5mr$@)KHG z{y!4(|Lr?>aD)hc;n}liqogTl*p1ZsAC&)L7<4~0O4v{<|C4*SIcUrW8b4rnkvso4 zn*Z_V32Mut#~X4Sg32p$>_e~rL3WU1&glF)Lc z6DY2b@kpruNAo{M{-s0!bdL%~{s*;{$Vr*#?f=pGpPW!6PS0rmCoY^|sz&R7ti=Q< z|AX$71GlqbbqVOKBv`nSLXYNuQbLO|wWIl;wD23v|2XqMM*R=U|KzL%9&Gs^G`{X` zJGkcmNlUf3RgdO>++l-F2DGLHR=*+9BYpf2RR3e-f6&=>!y^9=!ufw}X_FkW!I=L+ z=kFrrEtEDT$i3wFb9DR7)K(&A&Gu;hPfiLaPY)fY~rUj0VYpFi0Or4Bx$yAor5vQ)=aZ9QFT5p8p4x zAz1VOaH;>_y?*`Q+YzxRWpw@@GY5k1FKKVYyh{MRY@w7t(D@%!r(yBKX#Qtlz!?7n zg%xH>AuKZ3>VMGuzbn$Yy~8R0-@kt!rF{)b+vL>$-@bnRpG=4Qpa(ktS5;M|2rDR{?vWrj|Ns2){eMY*4n|o5 zGLM>gH2=f0+@PZ|#{WR$|CqU(u*hJ`|Dg82r@bvaZ4ZX}|Hh3Q|3P=vQ8RDB%p#}$ z2j%~wT#UW(pnW0V85kHoBjGO$3=Cfw85ut_GBUzw7#k!9Qu_&{hJk_M56n$4dNltJ zx_l3E5Z3yC)~s2CGdmU)gDwAq=KtJm2G{<7^z(mU`GXqtiiM<~{|(Cj1=$(!G7{!s6Itc&*b+1^Rm*x?m;pS)c+?p|7$QXFg!pq3v4#X zy%-Tqga9afG&D58W>{NW{|AL15!x`6jMo3i*&fcun*Yfi{{sd3o40TOgVtD6(lNF2KWP5X*~%Q8c0lQIFpU3!LgVY#ui!8`dh{rWOBM#@Cy<|zF}e9aA2a_C zn))9UIOorw2Zz_AM~^^UvhZmA56|<+3{d{ZnExlY{wFJ9uxO%I{s;H}?Gg8O50?Co z#mgiMQ7ixd`2OwxU~d1D956UE;K=_Yz5fr&|JBHK2#8Hd{f{H~NfM@7{vU+>f06ifdM1`510BM)czlA>wic}w0IO#Gymsh zrosD2pz@!AfdSP1CpZ67b^H%c5RfD_n*Xtu;7kmo`JZ4q8qVkcfX4r^jQ@f1Ke^+7 zdJGH<&!FW9yj%g5R|Er^h6-@x|IzjTqxqj;svFMvAJqTHQU8;h|8*G{7+wsK{6E_M zXJDv8kE?-h|6fJAM;hcdve*C6u>U_}=1hX+1}znU>QhkIAY*dZ|4}*rgX;h1$nFBM zLGGnxcn~rhNBuw2^FP-1|MKO_2?ZxjP~QUyyO{GKOO*5SWks{?C!#{>PgC z!@|P;KYR9!g3zW+YZ3H*99X)R7Z?41^6(*&4F!$=Ia$+Y{@>Bw{{KLx=^2wIV&wmo zix!X^MtJf+CGCHV`hVt>NhG_CS{lB8{rW#WIT<6o7#JAhv5tz3EWr#|K0~Iv$XvTi zX`D^z>&1vCO7g!mRr3G)|4tUB819OXiv0io?_Wy2OtSvFH*fyuWoN^14>{|9@Z^7T z>whB#28NHwX$iy@;O6{)@Ahqy{YniDv!+b?&(6$*5nc=o4E`f4t7G-86DWSrv9zS* z|IDQL|9}7drbZMHWkyj^A=Y>T-T!y;@Ij)?Kvo2*|EV?q=U`@xE&crW^6>co`t@sM zYiY`!)YbXl+!V7c0>vLW`Tytl@Ba&^yZ%p*fq`K)wmra>78d_EtX)mh@Ig1cBq!^? zn20dexMN^ou)>-nMwXx`DDB|Fpf%T_0RjI{Qm|GPJx-AMhxYFI9~>C)-__L>R~-EZ z-T!<3x1yB9|MMqL5TzGc(Z4@`{znJ-<8+^~vGIRDPtX7BSFQa2 z{~wu)o}m{0{{8zu`q_)GU%vcboRt9%BOLV@*linDkv?t%vJcDtU(oy?XfH3hIl&v( z-IAcZ=_}!{VBmw=FV4Wgu#|y;;XE3? zz`(!&!Z2|V8-!teWco6eumPthWN{fOssDO zvb}n`y8n5(x#8xsv$FnIS5qU|90LP`|DwV;>kzp4!h(Wig%QYneSLkfUR_|Si?4-`hA@B(2_8kLoif!hQ14?6z{0|SE+G!KzOaWXJ4WHB%> z+-6{4_y%q3fXYnJxhEiu%m(q1F+MqDb-36+7#J8{GB7YaWnf@fFiL#yCdv;%FWlO#_2E4S@2#7AO;w zi6s~q7^XtcM59I7G-@XCb<}8BjfNGmX#lhzX+8r3gAked9;6M_=LY3{P~V7Hd+DZ* zhnxGqh#>!e9!`$`-0bZCx!BnLbAT`_>wi$cmxGn{KL~TOvHj;_XZtV2$M>I)i}ODp zH|Kv&HdeShS(zCBiwf}n7vbms&&$d2pO2H1AO_jX&&BzlotY7C4st!n%f<0uMne3* zxQOt7F(E;MSXx}{zqqi_e??iD|56eXSj|K>pIU5oCdU7o>T3VhRFwa#Dl3tV)s&U~ zYpJXK*HBgcuc4;;UtLv&SU((NU|`tEz`(GNfq`K=6BE-#YWZ!rn8V7z@ShR2+;LT=*Z<$JeCdA|r1N`0X3+wBI6M6>%gp>gXY$1V z*DqiEf9dR*{})c5A{$>kbL#(%%a{INJ%9fH)k_!tU%qhee@AWA|NNB1|7@sf7as0V zf2pIT(J-huTwPjh)c@MT-2XLH##Q;*{|nNR{-;Do{15l{{U7S<^*=Jm|9@&s0n%*oB6*iC*wbeuE@;<(;$9nR{H-^s2Y%XbwLi*-3aotj*P^ACPtKc<~Rcb z120;*QJV`o(-3sNF+3h%@e&yk@&D+-ga5yO{|?4Ke*F0V^XE@68zctegD{MZEQihp z@sZWS^nk=ba@Q_h{NG$(kKqQ8TZ#(v|AXc}U>G!q1e)6c=>?hd>({UUAU;SOHctYg zKfHVQUzimoJi&PnBu5JV_T|fe2^{%fM^5@b$R1M61F3!W{KbFd`#VAYq$cKIWcWX^ zz2*Pw7tcY~(FM<&Hu=A+Irg;#Sk|MZp!@g9Q`)V|1f>s9T6y#4&Hq=gUi}Brp!D(_$I9=s00A_+=Ud$(`_DTyurA3c1So=(89i^%+s(f=Rm z^*@&U4{HC@J^xRiG6f?}=_xRn^Z!t&{}1dV{X7wB#xJ?~f27y{PT1>zT95ya*8c<& zKg#$&2iyOZi%7qVl7JOtOJl452WkFqAMO9+k7g|OKRw$282$gz_CIPojpl#U@F2v) zQU8P1m@y;uJ2Be-Bfb8|k^d=K*NYU~IGIJreQgkXH2TZCo&A2k0jhBN02J==T6j2L;`QH z_y3p8pF@IgXseXk?f=7v4};?m6o>ELy(7!1&{Eu-q+ejV%1Lb|t`b1j;UGR7} zC=WvMIR*v>Y3gKioTijO?Sk7qgN*ZE-@bkO-`?69Zib|U#Q#kjHjtHmM)N=M!S?s} zZ;bgra_j%yyLbNw-P;RG52mK3|DQa4O1xvBD)HohA&*xt7|0Gh(o&%6|nBL6r0Zx+|NU zm>kUcpNF0GzqOv`e=l3h{{gNJ|8HEq@*fn3r1}%2=jOF*|5KwQ|2vx+{`a!8BpG|# zS^f91wfwJ)w*H^o{6BBrJe2s;Q&#x@?8#$Nz4jkR{s*=H@z(#kN^<`#wbcGwK(V%h z!vCD4g#Yi!?1zB%?3_Av>c4`50vLC7b&<8F1r%2oE?fYc0Wzz(xtT0;Kmqyd=db@W zCiMR|R8oNWQ&aW7nxg!FDJiM{EG*0@;m^RpK#%-i4yrR~fkEL7@-wM;Fz0_pq&==& z3=IF>ER6rZcuxAhwWm)W|BnmuLyvE&@TrymHRPoJKYjF&)ab*P|B>te9AeX4Q$^|j z|709J`taey|2#ZA@GxazVfjCIF6nDGpFe;8UqCz8H&HA9>r%J=M{oa!GB7ZFM|V3meol54S#7L)_wHeY=M*y5 zwmp6N6vLd}-d>X99He2{!i5-SVe>OoY%>D`1FhHpfyNg>d$aJm%hJ*Ud`2_qENfyg zC3i>-rTnidDf<7(!v~>yzkmNe+zgnRA=d?hJ;Q=)jJ=6_Iom7H+vY-elqe`-<^DZx!OwIenEU%7IHtT3#vu0e^rA(a0?X&ZFj zJSeS$+PR?nbwKA){e+ceAUZXbyt8NqWBy;hcri*`f&2$OZ=VMg7z2PY_F;nD)L2p82{~J{Kf9|YV#3w)+s2t7z#0Tnd%>PVGOepz3FE^X`06|hY zRNDWHjEpgKsONE6QHWgkgV;04T-$&Y^b|2i^FQ&yH^lNkQSJYcmj4+T7zVQbAI<*+ zvK#XLUr_mojHx;QPtN%NaLoVc?SD}HPwLnoC`t!o{l66Z`k#TU|1tXiqxC;1^&s#_ z&Hp+|aaLj7#LKbcXxyC@KvBg zzK2LBao9Hg85GR1#RD`Jec}8e;h$dHg?wn7j|l3mF;1Xa0ZTT+}lbK>ovn zw=gg;(E9vOs?`7Q-@g5Cs-+Ik{~$lL55x0+K>k9;!+HFl2K7I3{?A1YM||wo`WoU3 zL?o5i_Ww?wJQ+y^aZL34s6cM*A@h#Bom)5m=VvE+|39c-BuUH4pMimaD*6BO$B+O0 zU7b<#Ke>A(M?(Go;Lh#;4%U_^;WhZ?|Kw>o{+|iTN61)3Ugp2Hvci7@Ew%sV`r7~X zR22T_rltIU|Mm@W85KF<8Yu5Y+?cD|8qMV%n@7}&eQ$?5yI-7Ij#*J`u($dnv z_lFbKiK*iIw{QPJ_oG_rYyY=4)ctR1p#9(4NbkR$so{Sqejb$b^PqbnL3^WUSp-le z|9^P*?!T?EAxe7g?&`t}03t-FmH!_f#E+RBLsue+N#A1iEsg`5?YM^-MV_^ zzq!5+N_br+Mwu#_~Ae3+)Ob2{{4SD z1Jv|Dr~FTq{{PFDFaN74DZ$eZ==`5W^U1p>hg$g`l#Yy*<^D56&+HQC;rYL9<9d=~ zj28L-?5UIgEwq&3;iV!i`TyRXTO_-Un)x48SMu^A?p{}xmj3_f0qJL(5Sjlm&i}r8 z^&0qGJy3m1&U_!qfj5XWfW|km-2VYO|9?o-|Dd3J^7!$8J3Bito;!#9GxDjG|3PlL zcjxwhUwga%E_QbR*DhZI5+WJXBL9ONas2S1|3U7K|DEjY{@=WQ4J1S|re^*JS-yPv za&Y{C;t>=NATd%gp8Sv8|HsJx)H2*U&{4dDQMGGnVa)(;|fB4`*`UVi1Z5vlDhtF%k#&8%I7)J9yS~wwdan%2y z_P+?M!9*h(qy0a7#tdYq(VdN6|HsEh|Nr^@8{ORjvk+hYml5Fk|LFcbm{R)FfB*hR zzyI&_sZ;cK2a=6A+W&LV>i^O9KT??C$p4`FpVs*wqy0a1;zY8}TSM{=MNIVkFD}UU z|KyQF6q!kh=C`k2{g>oo!&ayL=VxX7|Ln;lN{pvS@7tHJ{s;N`qPVRewC?I385d?z z7_I*iL4?5q=YP!kKT!Us_4psg`9H?GI{%-LvF-!IQ)CLD=YLT8 zA!pqlnbu=ydvyQ)e^E|WY-t)ScId!93_bJ`*uP`@e->ucdm}A$HUEG6LcjZ3ko^iu z#~pRG;BW!O8xmeHTK^-56e=4OZdm&N^jQA`I(rBszIwX52doW%E&qEu+5bOra6f9G z(Si5$;e-DfanTszgOslS3vsdhKXI7;eeTa6Km4yM&c|?@04vk~^~;z3|3QVdv!n*` z!kN?mGeOr|B8L$J1H)882b2b#=j)3$eudHhfAW;{dz8s?>>$(x z%1_Sb#^~`$kNTgTfq|iqfq?<#%oS+7f!*V1XZwF*U*G@!-d->bVo&Pt2eT(nnDBqf z#EJhwd=T#M>G|K&)%71lgYd-u{{NGpYNk$_1Xeq3^5p+;eOTn`YEbX9LUs#?9Tye; zf8Nx||L0Ge`hVe!X<&NM%<2EQ?Iha0>97sPlxrH;Q{ZERC zA}Zg5+=Glm{Cxf|oH^zH+^G})&zm;s|C}ik!1Vm-lmE}1HtGL@8B@SCNDd^nVCK~S zi)Kyxzi{SMFb45K7$gVM3o>W+y1V|*oY4D! z{>6kj0wLGFNHsJ&1(g5*GI=1!gb zfA*va|3P{|W`OjA#9(Z6IZzq_sRgNbjLI(ogrh4`kzMjBj=|<%?91M$%vW%#gPMzhHQQY z28J2<+5sayexT=4mNPIgfX=N0oy`QguXa$UsR52N(4Dr}@;)dTW98QV1_lN{ z1_lOD8yDmTa@|iYefOaEBZI~$KaVY}>1E`#u%)r0^$_F4C zgh6a{j7=OS2BVSn%w}L<0ND@nIvWE61L$mY(74e=1_lP0dJql6Fufo?Ha4;tNDV$b zg@J(qRNosiFff3^0^|l<7}O>Jxh;`_fdS+;kUcQ7VQgd?#74&;^&l}24ZDzz87NnkfdOQ0149D?2O|rEsj)GGxv43GnTZLTnTd(2xv6Qi znW<@qxvA++GZT~l#)gLf%}q`JTUl8Aw=gq1YHn)UV{U31U~XzEWo~N9Vrp#6WNvE8 zYi?>9WNvD@#oW~No2jw!Uo#Vvf99s9|18YRKAD@E&NnwTH8D3e288~%bocsi z*E;pT{q$A;&z?Q|zrVNle{6L0{{TO~|64Y1{=Z`R^8d4E&HCTe*!ch8fdl_toSgob zm6ZGkfoIR2{m;zE_&HtZ2eFE8c-rUsmr@5(Vfw`$^p}DE)UvpE_hvufHM&_ob zhs{k*OU+G9IW5f0n9WU1^)1ZIu9%yeel<5W?Kd|y6*4z91&J$}o0`rtH#L1_Zfg3= z+|=}oxvA+jb5qj0sfwT)lFI;o7xp4A-w;XSj0tGQ*AQ z*BN&1+{rL|)+~m#t5-9uUAvay$dMxqM~@s~IC1m5|RweBTy+VEwCg+IX?S2IbA>*1jT+%WWyYh zEaBvY7znY%30cMkB8DJ|wx82kOG^vYe&hf^bv&~DC;`KX5;IyP_@5KxT~zy#3`3JZ zvLD6!oSd!*uY*~{`=8Su-Tz32p?V)V{Ly5Pr9ciK!G0GE`{4m#j2y?D$nlRBFr1tU zpmYSX8G^CdkH{~Iii)lXqcQD=8HS_?tQ-;k=-%h#gk*Mz?bzcVCI_M2z$StSO#7js ziBJMkhU|Ytz_>uAI5|At}YM8Y18b3VrP5KSTirX^dnjxCle!JWfbWh-^Qy z<1mckG$CRvC=u^Nn92|uXvl&mAO&y;(9kBV zMkAMCuJ$O!E*&`bkhlk@(otgIL%;(BJUP8Qyg_d9@#W;?^aBwfo-atwkJAf8`EvSu zcz6VOar$}%`hWz2IDJ9tyg&peCz$m2=k)LgY4rEt^!Ep;_weun8{!4#_ymF^QE@OQ zC#QFaS7=BWCnu+8xCbYvS4dbWM2!bX&LcDwM00WmdvkL7dvJP$1_cCia(ahzdW3}q zazZ7+O8opdgG0PIIlaPzIsN=NA#xsI!$4e4KOcy>ATk0(aB^~j?C10g4fPA~k8yy)H9Rp@S?Dq)`^$QI53iA*3;Pemo^9%O_OG51T3=Inn4fWy-4Gj$q z0{P$1k2BQIFPPIKl+!0H2&{+`OoIH+>EY)az=>?XC&;Z}|3lr%$;lZTryCEpf-^WY zG}JTPJJgReC^&#K)FUw5&(F^f6pEaj9$+~ysQuwVp`o52`$NM(tPqg>oIao!s)t(?5{Y+us|UfP%o0 z<`0te;`9bl{vbd5`FV5tdvk)t!7NTrPq2DUkP@&zIXOeUI63_|Lqj<^!Dc}ehk_IY zfh^?Y;KtkNkdt**&nWUK`_ z0EBCiL0uh!S67G3tF5c8t*eELfYpHskOW8uN`v)7mDPd8Ktvss36cd_%E-uA-_Y39 z)Y#n8+ScCQ4#910?QQLCV0K4aduLl)XIn>SdwW|)TSt3mJD3Sl($)%A*3sF~(Fx*r zcC>f2b%IT4YikEFK=Pe!9ql00-VQPeWNaJQq^@qpy1MS}p5DIx3H=i%Oz7{QG^u~` zgb5QTPna~NzkhQ7lu7;l6DCZW&_8j~#EFyo`}_MR^iKh+n$SNH1Sf(d`}-$Om^5)h z|AfgCCrp?yani*8$rC1m)lTZ4IC0{H{{H?+V0zM|i4&$wm^2Aw^(FexyC4j>R@6$0A{n9LSs~50C#5 zZf^fWU0nVLIXV6Jv$Ol}Wo`Z6)!h8Qy^+y>D?PpcrdnG64b|1bZUMOmhV@ld{~K#) z{I}HA{qJIC1~wza+4+Bfg9F?gHw%mZjwUAmt@ZW)n`&$SH__7iZ>Fsc#uhp{|2?d% z{>ONE{g3waB2FrosF(BZ7ytnuNcpsnt2~Z4T!!WWKjEzo%)FO+a^O5C1 zY-D*D8$`n}Obv(+VuLU;8^#BTfzl)>4S~{vo~kN1jz`O^(K2f^4UDFN(KJAvG+?Z$ z39fS!eSQDuL+k%EX#EeW3&C|JavhI_4X@+f-T#NXx`ONIKnI8a-ZnP>oz2Yt+ZY&t z>vvE&PAoQ1QvkF>` zLG>x9ZUtc&8=VHpfiO%Q#s=|`F-RPQi4_B>1!0hS7>&%vCI*rR)&HROBq+W?@j063 zsgvhN!*MhmN7KM)8UUpMSp5&GC-NgB!F67GP!PCZ531L}^*_>B0H|(^gx2#xj*j3y zIH(^FuAjBE{)5VCPy zB!`S)axfZQ4lEuT3Le)1)upgH7MTXIVHl(agpv6mHcSjggTz1>#0OzyHaZ_BhfIUm zAPiEAjzQuu43bOq^8=43fzk;mU4hc;C>|}hM$^D(8W>Fj)JX%Nv2sxP3K}Oah>H53 z8y@~2)NcgU`=Bv<&{#WYydE^h4hnM%U0v{ayq<~*c-#P_7aInR=fmpcU?(T=_i>Whs;LjBg=uO4^W>uzBIo@)p7 zt3my6P`?XAgZks3el}<sQ&aF7Jj`Le~$%`tu+fG&TXM4?uMTnD+Jk4_dDPs@G63sGsZW3m!8@aVN6f zM6yBpLG#a`d2|ql)vKU77KD-cFg7|3QU}5yaS#TvK^VqHr$KVKFib77JWLFoMppy! z2P_Q1;RgyQA0PO-0GJqzhJ`bX528UBCXS7UiGkFCFo+MrAT|ht*f0#^gJ>9r$$@B) z7>EYB8#E3BYM+AIprG-jp_s=;-8@=1jHZFnG%y&`0BrsrRL+9>yP&oIAPlOPL3JRw zUiR|(52}Y@7^D`4!F_yaeGXC!6Njk(6|H$gVrU0+y!ciZvAJi@d#rG&4 zEk{Swz-Ss6O#{?P1F-rZR38^Y=l?O&9)@sTm8?go|DAT^-+ z8&r3K=ITLn`k?Ux(E0(;_yTBd0W_`v>c@fVY0z8(Xifn%?qGyv?;oh#CkKPfhmCuK z+ytsaNUi^2>Otm!!UI;nf@ly%u47?*kQg!si6diVIS?BphfKrRAaM`|@j)2IhSBI^ z=;FwHklR7)IY9A)5@$I2{~$FWwJ;3g!!S$?M#IEmG)x>ugT(Q%Ve&8 zU>LN<5ER!SH-OIf0o4QO7-TP~jRJC`rJmk@J3~Y8xk8|E0FYgv^$Q^Xfa-KoFsS|q z)kUB_G^kz$VNlqBFpLeOk;Ty2AU+7=Qj1LvrWQtn)POLE55gceHVl#jVRSiAI|fw$ zgW?&4LH>ea7#~K1#6fHj2C+dH#)i?zVlXzk9EcCYAT=-y5(BaE(IB~GfB*lWxg1dX z1f3BDN(ZBuI{BX5a18VE`kxUS`#&`*>VHZ^#Q&tQu>Xmnp`&;-3`Wzy5KIFBZf^fw ztgZi-rKkUID=q!sSXlVKp`hS@Xi^R8bg-G_85#cx;>^tdH2gt)xI9QaJsl+uL3%*)Aa!7zkpVFqO+QE-7(?}g*kFBF)Pcld7;I*G`v2;j z9B`T9W^4ODJ~$Z69;tOrLP*H}_@JQwv4MgA16*9_z7L`(J^lZN<;(w1ZEO1vYDkhJspfI;^O|7#KeHbL2~7BasNTMB0l~< z2v94hQP?0c zm|S%9|KjNA|Fy}<|64LL{0k^CJ7gLp z2jU~s$ZT{u5FdnLYH+c!$s>!Q>uXF)`wxmUQ22r33&cjoFfkAf!XP;i4Z|=#G7Vyb zFh~uECI!Rvz-VN>ATbcGPf7V7>*@L5%gXA1dSKvac?&IXi{j(|=f%bS4|a8>OFLlZ zgbDv=c6X14KQ#P@dYM1!{?T>|EDeCp;{nzGp!yM1r-AAX5C)aUpt=tv4#uE5kpzrY zFQ{&XVUSrcHjKt629hIy!FFO(gKj=Z4NMFhjU*2;6BHJpumRQol?e&pb`6LIwJn;` z(*AcKwE;kNFbIRf5E&zj!PqbwrVhr3(J*mj8YTy$VR9foG6so*_#hgFLG2h&y^4%M zenZ9}IT#I5h zZ<@9NruX&zpWfLy8va_7bA5_nQ>Nr?k0V&-gWEcwv5VMP@OTHP z9;!}E1hZp2JpOxHT7t(*KViaR5*o0W?+st9xNIC|p5oWDFAn(I5EVPk{zVZ$)BAUQBQE$u(Ztu;wW|Em%bz~eZeaUM`yqu0N<_~>ep`5-n7BkKo= z!T88*bTOD5hz7Y46!xGn2CWSNg*|93ASk>eTwVXCj+V!eIyo@#f0%~{P1*pR_4WU! zb#y@N84d5za2QPk!!8ZL>i?psDDapzxSjyb`NqbA$G*Y!Kd9aW)sr9^gh6a{j7uC{ z9X>uTGjNIHGYee~W(GP9RR`+JgX$Yl-2=iPKFIGNG0<8%&>BWiU4#vT`l!tr8UNd} zvf%RopgOlTGxI-49K?o&D>54-hKylyATbadgwfd`J_y6)kl7$H5XL125(l+SKy*WD zDtKN4G>!rCFEWPJ%cRmEGqCAF7Dr~Is|Cq{Fi0Hak4QH+a9ax$=AgZ!AR2~2=R(AJ zc@4Y#NKQW@IUwM_zoR2n+W??-epB1qN5glt&Kpew!#EAV%2-fc2kZZX=88dmVQ~K+ zR6oM%Oc0w8CPgjCEK=2j^nft2`q0&(^Py`Ta>ByEcjSWV`V8p(N1%NJu<(J^JGkha z&`|Jt0MJpDPnFbKoyV`Mh67)Tr!CRQD~{<@SD@Ei-Su!f0))&+p} zbBvA!_=C^Gq~`g^Q%2|eN9(;|TqTJoVeJs$pH>~~#jS+*|1MvEvl=>E= z79C@$b3yh|1;fmS(dc&L;v=cAN=*C@>Py1v6>@0MxO854I5;dpd)B)1^1y4>K;tT) zaRB6c8C?HD*9?NhK^P79vHQ3lNF&GUR4*+3UI{-8u0IH8cbvFou*vJ^0 z7_vMeHcUT^MpqA-YXPlO0Np78iw98OKP?~tycQLdWQ2PXK9!NbtGoqux{mIhU*#GDlWCm=E9~2JM!k{)3$SlyA%Ahp? zp!ybsLG?O}2C+dHoevWOiNi3u7>JLK(basgr5(D-9L3JJ|>_8aQ4giVu#X!^QE{w@|g9x|L{5ig_fc1+{Bn7~~d^`$6X%7eq#a+c=>10H`eis_#H! z|Dd{rQVd!f2r~;*r-Azapm0U0Z*lbhVQR3c2Z@0&Obv(zVPr9EY?vBkIgl6(gT&D> zsBQ(d13>cv$aOc!KgfJsY;5X~#gN&cum|%&dn;mN!DA?(H~^gi1#%a7E(I;TKyC-E zxddTY8vry{Gt%=mtPZDyZYVAut^Y^s|Isus%+mm9OcitvAE>MamBFBL7F6DX#=}A5 z)}ZW%#HaQL_~s0{?Gw?XpcV$gbZ(D*c{?+WTugT~iE;R>p=Kr{$rV`CEo zsl|nn)q~W)_%IqK2IGTh7)F)@iGlba3}S;Yhz-K9b^s`Sfa~b^c8qtp!t5# zx(QI6g3c!fg)gWs2i57Ix*g^Qm>Xd2f#fel0au2932e}Q@rw8%DV-wK1eNg=Y8p{XCf$DOQI#Sm3fzFu&)lDG%AiW^F zJS;5WW6_{6A{K+{{bWBs@cuf`*gq&tVf7d`8d)C32GPhET^~peSqv8+Bo4wLwYX@I z90-HtVHlYY8p8ms4+Mn|D4ihFAT~ONsey^3^FiVuF;LwPipT7bkpG}G1qxqK{RL`k zz}8HF+yTQNw}IH8`W{sOgVH0Y?FQPf0TKtrJIIV62Zs?`e}TsHD5?8FdYg)hMr`W8Y2hQlW;Y# zIv<^e=_i5))dL_mfaV@xW`o2)bukQs(j;h&6G$GU4yGQ&2F+80#6k54XkG)fHw@%2 zQZQ(K091#7&cp$k1)3WmRzIlT0;vU=0jirobLXHs34~$w7Kn|ELE-HudugUVgdxhtTy1E@^L zrUtARqzBd(0I`X{puT&OukU{l2H68zg9xe%KzqGF{X9@#5w=$WbOs-&jtBMoKx4+B zbzh+R10;@IACSWawQoS}4p5y0YIlJ8^2p|Z#uPwq1lbKblODA093&4qn=ZuJ8GNQ5 zC>%j;08sq}3Re&f!pLkGA0!6C*!UnZ5QfQv*w`>Od0b-1;vhCMhM5f#gRx;WNDLGQ zpt>7`LGe!vMpp~tgVGsjj07|X1qw${7=q@PK=nIlya8k%41?SNI!6IC#t%vxAhj^; zZ)XQiGawo!2BJanG!o0W(fWVnmg^%iy^s2t^z;rY8)5xbP+19Ds|G7~LFF>I4hPlW zAPlX$L3JXiJ_MDspt=s!=LXmRNNT`*sCpDOObizt9SvRs20BL%IZ|y^kEpp2i1$9u@O)^1y=8a>n!M+ zbr>5&w9Y_s`528UB8yi^+qy~gRVjv7+W5dXDFg7k4n|@H63|4=WQuo93fM^f~ zr7=)n9dvdNC|!ZV7SxUc?dt=DAIwc4H-Ok63<_^hy9(P{4$#?6pgWmB>jpq(fiNh& zjKs2GwEic(JRFJXWYo_iH=TgSs6k~U41>yK*g7@P_&>bytfK+&K&1Qb4?`XAKS1o;ux1^}%I z0M$XDx(J3rd{Em7RBwU$t)My!gh6!{HX2zB#)hed@j)~Q!^B}UNDLh#%YoP+3{nH5 zL2M8P@j)2I#zrHHp|e4J(3}P+t$^YlMx(Pqd|Vi$2h@fDg)3;R1eB&g<1L{5lA!Pd zg(b+1APlk(gh6bO9B98kXxs%kT_BJ5fZY}s2OrY{?Q0#0W!z}}KXS|Uk(k~`{Y-j# z2bGP;i=r$A*#RL2P^&rXQ{*BLjSQ5Gc+;^*e|L zVGtV`V-thPgXBPGOM&K(Kx6)(IeJh!1kLk++E6e%K{Uu-7!69BpmiM}wICes;sS0j zg3=3U{s$xm!l1S*Xzm}x2F-7c#Ij+u{wKXW9Es^<)XyU`oq*^5?d`#JIH;TiVbGc> z&|WH7{|i*lW2^r`{WjQGc&wM#e^B`guKPiCIx+^;?=U`y4Z<)!h(_l_&)^4{4Vv!< z)yE)r(Hev1F+lc#`~{lN0IzS0ivynr0B!?-+zQ2@@BpcU)kz>4gpunh5Fdn*#gN$` zIS>YkfiN-~nGX{O(I5epKz(#j8w*tbgW6f3_yx5iLG?Sx9uNk(2ZTXv5C-i@0qFy& z1!2$}45$qT8t(_`1C3k3=7m6J!}hd*=BYqweWaChqxJvDEZ0X`Iv@2f`RN=~HiF7h zWDM$y_2lRO2ekn}^*X40M(+cI*64x6LHa=bEYP?(s7?f{gVpJ{XlOl(wY>oCUxVBL zD!)MH(;9=;K!ECekY7Q50M+-PIv#{k{DbW7=;;6Tsj2_b`}v@H3K_%dFA$9j!_*_o zgTz357>&+`@j>z+4C8}nWDJu7iJ`O6`RHoU`6%ks(*A?`>ae;Vokp(jk>x<*ps)t% z1WQIETHrVnj?Uv2ap-aV+9~KXe$Y#nLoZPdR*FRg&eUQl_7jzM)hs5}Oh#UM7Q&ju=Q zK^Rs?f@o0P57G+7?};@!^A)|2!q5y7{mr) z5F3P%*&seL2FbxNvN$N*K=nCt{SIS;#S;?1WAiXJn2wJJpM?Obr$O^Op#DE-&L32_ zgD}V*WII575C+xlpnVpwv;gYg!_p^6JxC3x{||~sm>Q5BAU0^60MwowY30*s{Xg`| zA?pe^!gN?4;=#lwL3s%H^_WiV9?q=P#p&H3%Krw*6pCS2a0=P;z%?|J*cjO)jgp4 z2gF9kATbbziGkQ44C8}nbUsK7gwe%ed~_OFEl3U-gXBOMBnF~E7@dvI2dM#JWN{cD zCI+KH?H^E_gTes=CnSLPKZ54!L2X7bj*kb=6M^CtG#(G4LF4tH@JFu8VfKOPw6y=A zdL1-o080a)aRbnpKWIz<qtv)qy8OQ z=`Gpc|3AL^A5@Nl=1^hfG>8wvu(}>p=EKTZ(E4joIS!f^AXInalLytSAag)%3sC(G zvX536WEaRD5KT;-kL+%c9*{dhbq}bX0%2TibU7Fwq#lGpd~^&F2VrdDFfouk2!r?_ z8iYY?7)IyA#9=f@9)v-B5DmgGHaZQHLly_M3t{y?G7Vyb+Et*ld_nC-5F3MLX*6{p{U9?z=kCMiZ(-(BlLoDG1l9eZu?(#4 z0=W$z2Dux{8URo|1j4X72_FrT17URaATbaIiGwhVjZDMX_~b!qU>K$j#D}p#Gzg=M z!T2CK5C-u<7?};?gZ4mx>UvP!4x>SAP(2UggXV8Q;R{M9AU;SO6y~5f28|_rL30WqcY)@I zNp%;o>OpP>)kC2A38nr=cNZ>xbToLMB4`X8)b9kKPXni~Sw_el2ug3<)&%zn^W{Gjvz z3LlUdNF9gSATiL| zL6AJG-w!%R2&4~$LF|!M#*NnhBeP5&Y3Y2_zvQQLP#Fz6V-HkDl8Qm=13=|FYz_c4 zmH?{1!Sz3=e+;TSVKj)1jIoG=%6d?}L8?2*Q4i`Hg4~L={s*}YgmJkSDhC?F2JI6> zum3@H5vUFWVGtXHL2P6U5`$roIEW3SL2M9)@nJNw7&;roN5&vMAPf?N(I7T528p9% zm^?@v#D>uzHaZ5)wS)W*s@FmFI~XSRZ^@KTICf*9T$HdOy&aKcM}5pgJ35 zF1kISF@BI7C{2Ol7c^D?5(8mu>cRRmGQjNv(0z*_J)k`Wu(S<2Ct#$N6QlJ%`Q_qB zODm)P9l2=*G@lPDD?nu?DHzm82bKAtIe(ZwP@M>_Q=xSvF@0;0dQe>q(hD<()-m+b}l%9?;Mhz23r$PEb7$y#4!!S$?M1wF$97Mw~h>wgx z;>dg$8zc_GAU=!+v0)e_2ErgdIt>y7VVF3K4XV#UVF1IRH36Xc8_?W7s67W7^9RX+ z(g{co)aM7qEl3||t{&Mun3*6kkR0;-52)`C8V`V}L8jsCjEw)FHU+4z2iXBi*RcI5 zAoq;4G7gldDVh5R=^dT_AG!6yNXsuH*}tH&60{Z@RBn=jL393~xm?g$z#x5~F? z4ju!5^`Ft}Q6xTS3?5V`fa+sdxeYRhmKfwuki8&`QvV~l3q>5}4-k!{22}rp%m9sF zgT??r^%lG?!g1a|ObtvOG9M%c!ys`O28n^#$TWzJ4a3wS%i$A4m&3(J7l)Y-8vlXS z@1Qy!G$#P6w?XGAf$Dfr{SOicVNm@KTK5l<1NGyP!whB~$R1GL4@yJGX#kY2K;kfU zAR43=M8h!1Owid?u(g69cfjrl0L@p8wER6<|Bu$)BQ4F3`j`AP4=OJ~bMLS*Q{?g& z7aMeD9;i$Qji-aufaYF7Wj#v$52`nDU{E;^8Yc#g?}GHx1B2QcpgIfgMx;6&E(UWi zvK&kdL__EQLFz&4;6Qa5tR6zImtcGt4O0iAVPd#wkQxvM$%8P6jf`PpAR2~|LQV@HeK0*BbujypX^>tJAJo1B=>_dGfbDMq-Bmf#%7)SUpZv0L zq@|Tn|Bj{=SQ<$1_Wlo=qXm_rgfOVB02=QFVbGbqpmTsg^8xVwGkX1r&X0-t4^j{6 z-x0El8uFm^4xn*q(3}I@jiCA*hGFi5(J*mj8c7Z`1_0{k!s>rm-2|dR7*rpDXb=Xm zkukCuhz-LaH6S)J4Pql>ba@aTgt4gsi6P4&vq5qo3=#uj7#l=`Fh~r9L2MXC=7ZWk zu=*dw2GzNscmj=!fa-f#-4CKc;gsa(_a8J~1RKi-nF%rvgh650o1gz5ww?rJ4h)0# zg2L)|kXn#FWDF7mwHrWgfaw9PGlZRQIa>c4{|AldlZr>j|3~WuSiLYxkDRmsswY8p zJFG0lM}yAj0hRZlv0kioDy;5=)tfLHBo1Bo57G~s2MBaVHss0#+A+>LC~gtwjfoNrUDGK=Lqg5E~Z;sR7BsXb>A6 zgXBOMCXUPoi6Qfm*&sO>MixhA!{pIvm>L)jme0ue4;t?W)$O3T2i5nWI04PIgX&?B z7+4OvKLAw!gUS$4{f<)qr=@|pQ{9Q+zb2-UjspLG?IB-3qHeVKlVv zgw?;GIuukdgUV}=7-%g5KD$Vj1FazkjZ1*cM{ys_Jun*0T_Cp*!Z5dk>LySf1gh&n zbw22hT2MHE>;>^bav%(7zl&d$QUFB!XPmi z4Pt{ZG9Si<(`jkobN)c}J*a&JiW`uhL3~hp0M*AZ466S@b48&13#zL@W`Hng%^nDY z*7$++ z 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�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