Skip to content
This repository was archived by the owner on Jan 5, 2024. It is now read-only.

Commit aea5154

Browse files
authored
Merge pull request #195 from cortex-command-community/star-ints
Star optimizations
2 parents 63d5314 + 8d30ff6 commit aea5154

File tree

1 file changed

+35
-48
lines changed

1 file changed

+35
-48
lines changed

Main.cpp

Lines changed: 35 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -133,27 +133,18 @@ ScenarioGUI *g_pScenarioGUI = 0;
133133
Controller *g_pMainMenuController = 0;
134134

135135
enum StarSize {
136-
StarSmall = 0,
137-
StarLarge,
138-
StarHuge,
136+
StarSmall = 0,
137+
StarLarge,
138+
StarHuge,
139139
};
140140

141141
struct Star {
142-
// Bitmap representation
143-
BITMAP *m_pBitmap;
144-
// Center location on screen
145-
Vector m_Pos;
146-
// Bitmap offset
147-
// int m_Offset;
148-
// Scrolling ratio
149-
float m_ScrollRatio;
150-
// Normalized intensity 0-1.0
151-
float m_Intensity;
152-
// Type
153-
StarSize m_Size;
154-
155-
Star() { m_pBitmap = 0; m_Pos.Reset(); m_ScrollRatio = 1.0; m_Intensity = 1.0; m_Size = StarSmall; }
156-
Star(BITMAP *pBitmap, Vector &pos, float scrollRatio, float intensity) { m_pBitmap = pBitmap; m_Pos = pos; m_ScrollRatio = scrollRatio; m_Intensity = intensity; }
142+
BITMAP *m_Bitmap = nullptr;
143+
int m_PosX = 0;
144+
int m_PosY = 0;
145+
float m_ScrollRatio = 1.0F;
146+
int m_Intensity = 0; //!< Intensity value on a scale from 0 to 255.
147+
StarSize m_Size = StarSmall;
157148
};
158149

159150
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -420,29 +411,26 @@ bool PlayIntroTitle() {
420411
BITMAP **apStarSmallBitmaps = starSmallFile.GetAsAnimation(starSmallBitmapCount);
421412
BITMAP **apStarLargeBitmaps = starLargeFile.GetAsAnimation(starLargeBitmapCount);
422413
BITMAP **apStarHugeBitmaps = starHugeFile.GetAsAnimation(starHugeBitmapCount);
423-
Star *aStars = new Star[starCount];
424-
StarSize size;
425-
426-
for (int star = 0; star < starCount; ++star) {
427-
if (RandomNum() < 0.95F) {
428-
aStars[star].m_Size = StarSmall;
429-
aStars[star].m_pBitmap = apStarSmallBitmaps[RandomNum(0, starSmallBitmapCount - 1)];
430-
aStars[star].m_Intensity = RandomNum(0.001F, 0.5F);
431-
}
432-
else if (RandomNum() < 0.85F) {
433-
aStars[star].m_Size = StarLarge;
434-
aStars[star].m_pBitmap = apStarLargeBitmaps[RandomNum(0, starLargeBitmapCount - 1)];
435-
aStars[star].m_Intensity = RandomNum(0.6F, 1.0F);
436-
}
437-
else {
438-
aStars[star].m_Size = StarHuge;
439-
aStars[star].m_pBitmap = apStarHugeBitmaps[RandomNum(0, starLargeBitmapCount - 1)];
440-
aStars[star].m_Intensity = RandomNum(0.9F, 1.0F);
441-
}
442-
aStars[star].m_Pos.SetXY(resX * RandomNum(), pBackdrop->GetBitmap()->h * RandomNum());//resY * RandomNum());
443-
aStars[star].m_Pos.Floor();
414+
Star *stars = new Star[starCount];
415+
416+
for (int star = 0; star < starCount; ++star) {
417+
if (RandomNum() < 0.95F) {
418+
// Default size is StarSmall.
419+
stars[star].m_Bitmap = apStarSmallBitmaps[RandomNum(0, starSmallBitmapCount - 1)];
420+
stars[star].m_Intensity = RandomNum(0, 92);
421+
} else if (RandomNum() < 0.85F) {
422+
stars[star].m_Size = StarLarge;
423+
stars[star].m_Bitmap = apStarLargeBitmaps[RandomNum(0, starLargeBitmapCount - 1)];
424+
stars[star].m_Intensity = RandomNum(111, 185);
425+
} else {
426+
stars[star].m_Size = StarHuge;
427+
stars[star].m_Bitmap = apStarHugeBitmaps[RandomNum(0, starLargeBitmapCount - 1)];
428+
stars[star].m_Intensity = RandomNum(166, 185);
429+
}
430+
stars[star].m_PosX = RandomNum(0, resX);
431+
stars[star].m_PosY = RandomNum(0, pBackdrop->GetBitmap()->h);
444432
// To match the nebula scroll
445-
aStars[star].m_ScrollRatio = backdropScrollRatio;
433+
stars[star].m_ScrollRatio = backdropScrollRatio;
446434
}
447435

448436
// Font stuff
@@ -596,14 +584,13 @@ bool PlayIntroTitle() {
596584
Box backdropBox;
597585
pBackdrop->Draw(g_FrameMan.GetBackBuffer32(), backdropBox, scrollOffset * backdropScrollRatio);
598586

599-
Vector starDrawPos;
600587
for (int star = 0; star < starCount; ++star)
601588
{
602-
size = aStars[star].m_Size;
603-
int intensity = 185 * aStars[star].m_Intensity + (size == StarSmall ? 35 : 70) * RandomNum();
604-
set_screen_blender(intensity, intensity, intensity, intensity);
605-
starDrawPos.SetXY(aStars[star].m_Pos.m_X, aStars[star].m_Pos.m_Y - scrollOffset.m_Y * aStars[star].m_ScrollRatio);
606-
draw_trans_sprite(g_FrameMan.GetBackBuffer32(), aStars[star].m_pBitmap, starDrawPos.GetFloorIntX(), starDrawPos.GetFloorIntY());
589+
const int intensity = stars[star].m_Intensity + RandomNum(0, (stars[star].m_Size == StarSmall) ? 35 : 70);
590+
set_screen_blender(intensity, intensity, intensity, intensity);
591+
const int &starDrawPosX = stars[star].m_PosX;
592+
int starDrawPosY = stars[star].m_PosY - static_cast<int>(scrollOffset.m_Y * stars[star].m_ScrollRatio);
593+
draw_trans_sprite(g_FrameMan.GetBackBuffer32(), stars[star].m_Bitmap, starDrawPosX, starDrawPosY);
607594
}
608595

609596
planetPos.SetXY(g_FrameMan.GetResX() / 2, 567 - scrollOffset.GetFloorIntY());
@@ -1538,8 +1525,8 @@ bool PlayIntroTitle() {
15381525
pMoon = nullptr;
15391526
delete pStation;
15401527
pStation = nullptr;
1541-
delete[] aStars;
1542-
aStars = nullptr;
1528+
delete[] stars;
1529+
stars = nullptr;
15431530

15441531
if (g_FrameMan.ResolutionChanged()) { PlayIntroTitle(); }
15451532

0 commit comments

Comments
 (0)