mirror of
https://github.com/GTAmodding/re3.git
synced 2025-07-13 21:04:08 +00:00
sync with upstream
This commit is contained in:
commit
3cc20d7962
42 changed files with 7909 additions and 10148 deletions
|
@ -5536,9 +5536,10 @@ CMenuManager::PrintMap(void)
|
|||
if (mapPoint.y > fMapCenterY - fMapSize && mapPoint.y < fMapCenterY + fMapSize &&
|
||||
mapPoint.x > fMapCenterX - fMapSize && mapPoint.x < fMapCenterX + fMapSize) {
|
||||
|
||||
// Don't ask me the meanings, I don't know. Found them by trying
|
||||
float diffX = fMapCenterX - fMapSize, diffY = fMapCenterY - fMapSize;
|
||||
float x = ((mapPoint.x - diffX) / (fMapSize * 2)) * 4000.0f - 2000.0f;
|
||||
float y = 2000.0f - ((mapPoint.y - diffY) / (fMapSize * 2)) * 4000.0f;
|
||||
float x = ((mapPoint.x - diffX) / (fMapSize * 2)) * (WORLD_SIZE_X / MENU_MAP_WIDTH_SCALE) - (WORLD_SIZE_X / 2 + MENU_MAP_LEFT_OFFSET * MENU_MAP_LENGTH_UNIT);
|
||||
float y = (WORLD_SIZE_Y / 2 - MENU_MAP_TOP_OFFSET * MENU_MAP_LENGTH_UNIT) - ((mapPoint.y - diffY) / (fMapSize * 2)) * (WORLD_SIZE_Y / MENU_MAP_HEIGHT_SCALE);
|
||||
CRadar::ToggleTargetMarker(x, y);
|
||||
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0);
|
||||
}
|
||||
|
@ -5584,7 +5585,8 @@ CMenuManager::PrintMap(void)
|
|||
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
|
||||
if (fMapCenterY - fMapSize > SCREEN_HEIGHT / 2)
|
||||
fMapCenterY = SCREEN_HEIGHT / 2 + fMapSize;
|
||||
|
||||
bMenuMapActive = false;
|
||||
|
||||
|
@ -5654,9 +5656,7 @@ CMenuManager::ConstructStatLine(int rowIdx)
|
|||
|
||||
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);
|
||||
int percentCompleted = CStats::GetPercentageProgress();
|
||||
|
||||
STAT_LINE("PER_COM", &percentCompleted, false, nil);
|
||||
STAT_LINE("NMISON", &CStats::MissionsGiven, false, nil);
|
||||
|
|
|
@ -143,6 +143,7 @@ CPlayerInfo::Clear(void)
|
|||
m_nMaxHealth = m_nMaxArmour = 100;
|
||||
m_bGetOutOfJailFree = false;
|
||||
m_bGetOutOfHospitalFree = false;
|
||||
m_bDriveByAllowed = true;
|
||||
m_nPreviousTimeRewardedForExplosion = 0;
|
||||
m_nExplosionsSinceLastReward = 0;
|
||||
}
|
||||
|
|
|
@ -57,6 +57,7 @@ public:
|
|||
uint8 m_nMaxArmour;
|
||||
bool m_bGetOutOfJailFree;
|
||||
bool m_bGetOutOfHospitalFree;
|
||||
bool m_bDriveByAllowed;
|
||||
char m_aSkinName[32];
|
||||
RwTexture *m_pSkinTexture;
|
||||
|
||||
|
|
|
@ -87,12 +87,11 @@ static_assert(RADAR_TILE_SIZE == (RADAR_SIZE_Y / RADAR_NUM_TILES), "CRadar: not
|
|||
CRGBA CRadar::ArrowBlipColour1;
|
||||
CRGBA CRadar::ArrowBlipColour2;
|
||||
uint16 CRadar::MapLegendCounter;
|
||||
uint16 CRadar::MapLegendList[NUM_MAP_LEGENDS];
|
||||
int16 CRadar::MapLegendList[NUM_MAP_LEGENDS];
|
||||
int CRadar::TargetMarkerId = -1;
|
||||
CVector CRadar::TargetMarkerPos;
|
||||
#endif
|
||||
|
||||
// taken from VC
|
||||
float CRadar::cachedCos;
|
||||
float CRadar::cachedSin;
|
||||
|
||||
|
@ -273,12 +272,9 @@ 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_eRadarSprite = RADAR_SPRITE_NONE;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -481,11 +477,6 @@ void CRadar::DrawBlips()
|
|||
|
||||
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;
|
||||
|
||||
|
@ -1338,9 +1329,8 @@ void CRadar::TransformRadarPointToScreenSpace(CVector2D &out, const CVector2D &i
|
|||
{
|
||||
#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;
|
||||
out.x = (CMenuManager::fMapCenterX - CMenuManager::fMapSize) + (MENU_MAP_LENGTH / 2 + MENU_MAP_LEFT_OFFSET + in.x) * CMenuManager::fMapSize * MENU_MAP_WIDTH_SCALE * 2.0f / MENU_MAP_LENGTH;
|
||||
out.y = (CMenuManager::fMapCenterY - CMenuManager::fMapSize) + (MENU_MAP_LENGTH / 2 - MENU_MAP_TOP_OFFSET - in.y) * CMenuManager::fMapSize * MENU_MAP_HEIGHT_SCALE * 2.0f / MENU_MAP_LENGTH;
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
|
@ -1428,7 +1418,7 @@ 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
|
||||
m_radarRange = MENU_MAP_LENGTH_UNIT; // just affects the multiplier in TransformRadarPointToScreenSpace
|
||||
for (int i = 0; i < NUM_MAP_LEGENDS; i++) {
|
||||
MapLegendList[i] = RADAR_SPRITE_NONE;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
#pragma once
|
||||
#include "Sprite2d.h"
|
||||
|
||||
#define MENU_MAP_LENGTH_UNIT 1190.0f // in game unit
|
||||
#define MENU_MAP_WIDTH_SCALE 1.112f // in game unit (originally 1.112494151260504f)
|
||||
#define MENU_MAP_HEIGHT_SCALE 1.119f // in game unit (originally 1.118714268907563f)
|
||||
#define MENU_MAP_TOP_OFFSET 0.28f // in length unit defined above - ~333 game unit
|
||||
#define MENU_MAP_LEFT_OFFSET 0.185f // in length unit defined above - ~220 game unit
|
||||
#define MENU_MAP_LENGTH (4000.f / MENU_MAP_LENGTH_UNIT)
|
||||
|
||||
enum eBlipType
|
||||
{
|
||||
BLIP_NONE,
|
||||
|
@ -111,7 +118,7 @@ public:
|
|||
#define NUM_MAP_LEGENDS 75
|
||||
static CRGBA ArrowBlipColour1;
|
||||
static CRGBA ArrowBlipColour2;
|
||||
static uint16 MapLegendList[NUM_MAP_LEGENDS];
|
||||
static int16 MapLegendList[NUM_MAP_LEGENDS];
|
||||
static uint16 MapLegendCounter;
|
||||
static int TargetMarkerId;
|
||||
static CVector TargetMarkerPos;
|
||||
|
|
|
@ -209,19 +209,6 @@ void CStats::SetTotalNumberMissions(int32 total)
|
|||
TotalNumberMissions = total;
|
||||
}
|
||||
|
||||
float CStats::GetPercentageProgress()
|
||||
{
|
||||
float p;
|
||||
if (TotalProgressInGame == 0.0f)
|
||||
p = 0.0f;
|
||||
else if (CGame::nastyGame)
|
||||
p = 100.0f * ProgressMade / TotalProgressInGame;
|
||||
else
|
||||
p = 100.0f * ProgressMade / (TotalProgressInGame - 1);
|
||||
|
||||
return Min(100.0f, p);
|
||||
}
|
||||
|
||||
wchar *CStats::FindCriminalRatingString()
|
||||
{
|
||||
int rating = FindCriminalRatingNumber();
|
||||
|
@ -263,6 +250,14 @@ int32 CStats::FindCriminalRatingNumber()
|
|||
return rating;
|
||||
}
|
||||
|
||||
float CStats::GetPercentageProgress()
|
||||
{
|
||||
float percentCompleted = (CStats::TotalProgressInGame == 0 ? 0 :
|
||||
CStats::ProgressMade * 100.0f / (CGame::nastyGame ? CStats::TotalProgressInGame : CStats::TotalProgressInGame - 1.0f));
|
||||
|
||||
return Min(percentCompleted, 100.0f);
|
||||
}
|
||||
|
||||
void CStats::MoneySpentOnFashion(int32 money)
|
||||
{
|
||||
FashionBudget += money;
|
||||
|
|
|
@ -89,9 +89,9 @@ public:
|
|||
static void CheckPointReachedSuccessfully() { TotalLegitimateKills += KillsSinceLastCheckpoint; KillsSinceLastCheckpoint = 0; };
|
||||
static void CheckPointReachedUnsuccessfully() { KillsSinceLastCheckpoint = 0; };
|
||||
static int32 FindCriminalRatingNumber();
|
||||
static float GetPercentageProgress();
|
||||
static void SaveStats(uint8 *buf, uint32 *size);
|
||||
static void LoadStats(uint8 *buf, uint32 size);
|
||||
static float GetPercentageProgress();
|
||||
|
||||
static void MoneySpentOnFashion(int32);
|
||||
};
|
||||
|
|
|
@ -340,21 +340,6 @@ CWorld::ProcessLineOfSightSectorList(CPtrList &list, const CColLine &line, CColP
|
|||
if(e->IsPed()) {
|
||||
if(e->bUsesCollision || deadPeds && ((CPed *)e)->m_nPedState == PED_DEAD) {
|
||||
colmodel = ((CPedModelInfo *)CModelInfo::GetModelInfo(e->GetModelIndex()))->AnimatePedColModelSkinned(e->GetClump());
|
||||
/* this should all be gone, right?
|
||||
if(((CPed *)e)->UseGroundColModel())
|
||||
colmodel = &CTempColModels::ms_colModelPedGroundHit;
|
||||
else
|
||||
#ifdef ANIMATE_PED_COL_MODEL
|
||||
colmodel = CPedModelInfo::AnimatePedColModel(
|
||||
((CPedModelInfo *)CModelInfo::GetModelInfo(e->GetModelIndex()))
|
||||
->GetHitColModel(),
|
||||
RpClumpGetFrame(e->GetClump()));
|
||||
#else
|
||||
colmodel =
|
||||
((CPedModelInfo *)CModelInfo::GetModelInfo(e->GetModelIndex()))
|
||||
->GetHitColModel();
|
||||
#endif
|
||||
*/
|
||||
} else
|
||||
colmodel = nil;
|
||||
|
||||
|
|
|
@ -81,7 +81,7 @@ RwRGBA gColourTop;
|
|||
bool gameAlreadyInitialised;
|
||||
|
||||
float NumberOfChunksLoaded;
|
||||
#define TOTALNUMCHUNKS 73.0f
|
||||
#define TOTALNUMCHUNKS 95.0f
|
||||
|
||||
bool g_SlowMode = false;
|
||||
char version_name[64];
|
||||
|
@ -356,6 +356,7 @@ Terminate3D(void)
|
|||
CSprite2d splash;
|
||||
int splashTxdId = -1;
|
||||
|
||||
//--MIAMI: done
|
||||
CSprite2d*
|
||||
LoadSplash(const char *name)
|
||||
{
|
||||
|
@ -401,22 +402,23 @@ DestroySplashScreen(void)
|
|||
splashTxdId = -1;
|
||||
}
|
||||
|
||||
//--MIAMI: done
|
||||
Const 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
|
||||
static int splashIndex[12] = {
|
||||
1, 2,
|
||||
3, 4,
|
||||
5, 11,
|
||||
6, 8,
|
||||
9, 10,
|
||||
7, 12
|
||||
};
|
||||
|
||||
index = splashIndex[4*index2 + CGeneral::GetRandomNumberInRange(0, 3)];
|
||||
index = splashIndex[2*index2 + CGeneral::GetRandomNumberInRange(0, 2)];
|
||||
index2++;
|
||||
if(index2 == 6)
|
||||
index2 = 0;
|
||||
|
@ -444,16 +446,14 @@ ResetLoadingScreenBar()
|
|||
}
|
||||
|
||||
// TODO: compare with PS2
|
||||
//--MIAMI: done
|
||||
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";
|
||||
splashscreen = "LOADSC0";
|
||||
#endif
|
||||
|
||||
splash = LoadSplash(splashscreen);
|
||||
|
@ -474,36 +474,50 @@ LoadingScreen(const char *str1, const char *str2, const char *splashscreen)
|
|||
if(str1){
|
||||
NumberOfChunksLoaded += 1;
|
||||
|
||||
#ifndef RANDOMSPLASH
|
||||
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));
|
||||
float length = SCREEN_WIDTH - SCREEN_SCALE_X(80);
|
||||
float top = SCREEN_HEIGHT - SCREEN_SCALE_Y(14);
|
||||
float bottom = top + SCREEN_SCALE_Y(5);
|
||||
#else
|
||||
float hpos = SCREEN_STRETCH_X(40);
|
||||
float length = SCREEN_STRETCH_X(440);
|
||||
// this is rather weird
|
||||
float top = SCREEN_STRETCH_Y(407.4f - 7.0f/3.0f);
|
||||
float bottom = SCREEN_STRETCH_Y(407.4f + 7.0f/3.0f);
|
||||
#endif
|
||||
|
||||
CSprite2d::DrawRect(CRect(hpos-1.0f, top-1.0f, hpos+length+1.0f, bottom+1.0f), CRGBA(40, 53, 68, 255));
|
||||
|
||||
CSprite2d::DrawRect(CRect(hpos, top, hpos+length, bottom), CRGBA(155, 50, 125, 255));
|
||||
|
||||
length *= NumberOfChunksLoaded/TOTALNUMCHUNKS;
|
||||
CSprite2d::DrawRect(CRect(hpos, vpos, hpos + length, vpos + height), CRGBA(81, 106, 137, 255));
|
||||
CSprite2d::DrawRect(CRect(hpos, top, hpos+length, bottom), CRGBA(255, 150, 225, 255));
|
||||
|
||||
// this is done by the game but is unused
|
||||
CFont::SetBackgroundOff();
|
||||
CFont::SetScale(SCREEN_SCALE_X(2), SCREEN_SCALE_Y(2));
|
||||
CFont::SetPropOn();
|
||||
CFont::SetRightJustifyOn();
|
||||
CFont::SetDropShadowPosition(1);
|
||||
CFont::SetDropColor(CRGBA(0, 0, 0, 255));
|
||||
CFont::SetFontStyle(FONT_HEADING);
|
||||
|
||||
#ifdef CHATTYSPLASH
|
||||
// my attempt
|
||||
static wchar tmpstr[80];
|
||||
float yscale = SCREEN_SCALE_Y(0.9f);
|
||||
vpos -= 45*yscale;
|
||||
top -= 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;
|
||||
CFont::PrintString(hpos, top, tmpstr);
|
||||
top += 22*yscale;
|
||||
AsciiToUnicode(str2, tmpstr);
|
||||
CFont::PrintString(hpos, vpos, tmpstr);
|
||||
CFont::PrintString(hpos, top, tmpstr);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue