mirror of
https://github.com/k4zmu2a/SpaceCadetPinball.git
synced 2023-12-30 21:52:56 +00:00
Compare commits
3 Commits
54a217c27b
...
e9a4791322
Author | SHA1 | Date | |
---|---|---|---|
|
e9a4791322 | ||
|
a2567c1fea | ||
|
367f4538a3 |
@ -26,6 +26,7 @@ Supports data files from Windows and Full Tilt versions of the game.
|
|||||||
| MorphOS | BeWorld | https://www.morphos-storage.net/?id=1688897 |
|
| MorphOS | BeWorld | https://www.morphos-storage.net/?id=1688897 |
|
||||||
| AmigaOS 4 | rjd324 | http://aminet.net/package/game/actio/spacecadetpinball-aos4 |
|
| AmigaOS 4 | rjd324 | http://aminet.net/package/game/actio/spacecadetpinball-aos4 |
|
||||||
| Android (WIP) | fexed | https://github.com/fexed/Pinball-on-Android |
|
| Android (WIP) | fexed | https://github.com/fexed/Pinball-on-Android |
|
||||||
|
| Web | stech11845 | https://github.com/stech11845/SpaceCadetPinball-web
|
||||||
|
|
||||||
Platforms covered by this project: desktop Windows, Linux and macOS.
|
Platforms covered by this project: desktop Windows, Linux and macOS.
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ void TFlipper::TimerExpired(int timerId, void* caller)
|
|||||||
auto flip = static_cast<TFlipper*>(caller);
|
auto flip = static_cast<TFlipper*>(caller);
|
||||||
int bmpCountSub1 = flip->ListBitmap->size() - 1;
|
int bmpCountSub1 = flip->ListBitmap->size() - 1;
|
||||||
|
|
||||||
auto newBmpIndex = static_cast<int>(floor((pb::time_now - flip->InputTime) / flip->TimerTime));
|
auto newBmpIndex = static_cast<int>(floor(flip->FlipperEdge->flipper_angle(pb::time_now) / flip->FlipperEdge->AngleMax * bmpCountSub1 + 0.5));
|
||||||
if (newBmpIndex > bmpCountSub1)
|
if (newBmpIndex > bmpCountSub1)
|
||||||
newBmpIndex = bmpCountSub1;
|
newBmpIndex = bmpCountSub1;
|
||||||
if (newBmpIndex < 0)
|
if (newBmpIndex < 0)
|
||||||
@ -155,7 +155,7 @@ void TFlipper::TimerExpired(int timerId, void* caller)
|
|||||||
}
|
}
|
||||||
if (flip->MessageField == 2)
|
if (flip->MessageField == 2)
|
||||||
{
|
{
|
||||||
flip->BmpIndex = bmpCountSub1 - newBmpIndex;
|
flip->BmpIndex = newBmpIndex;
|
||||||
if (flip->BmpIndex <= 0)
|
if (flip->BmpIndex <= 0)
|
||||||
{
|
{
|
||||||
flip->BmpIndex = 0;
|
flip->BmpIndex = 0;
|
||||||
|
@ -418,19 +418,17 @@ float TFlipperEdge::flipper_angle(float timeNow)
|
|||||||
{
|
{
|
||||||
if (!FlipperFlag)
|
if (!FlipperFlag)
|
||||||
return Angle1;
|
return Angle1;
|
||||||
float angle = (Angle1 - Angle2) / AngleMax * AngleMult;
|
|
||||||
if (angle < 0.0f)
|
|
||||||
angle = -angle;
|
|
||||||
|
|
||||||
if (angle >= 0.0000001f)
|
float currentAngleDuration = fabsf((Angle1 - Angle2) / AngleMax * AngleMult);
|
||||||
angle = (timeNow - InputTime) / angle;
|
float currentAngleRatio;
|
||||||
|
|
||||||
|
if (currentAngleDuration >= 0.0000001f)
|
||||||
|
currentAngleRatio = (timeNow - InputTime) / currentAngleDuration;
|
||||||
else
|
else
|
||||||
angle = 1.0;
|
currentAngleRatio = 1.0;
|
||||||
|
|
||||||
angle = std::min(1.0f, std::max(angle, 0.0f));
|
currentAngleRatio = std::min(1.0f, std::max(currentAngleRatio, 0.0f));
|
||||||
if (FlipperFlag == 2)
|
return currentAngleRatio * (Angle1 - Angle2) + Angle2;
|
||||||
angle = 1.0f - angle;
|
|
||||||
return angle * AngleMax;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int TFlipperEdge::is_ball_inside(float x, float y)
|
int TFlipperEdge::is_ball_inside(float x, float y)
|
||||||
@ -482,7 +480,6 @@ void TFlipperEdge::SetMotion(int code, float value)
|
|||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!FlipperFlag)
|
|
||||||
InputTime = value;
|
InputTime = value;
|
||||||
FlipperFlag = code;
|
FlipperFlag = code;
|
||||||
AngleStopTime = AngleMult + InputTime;
|
AngleStopTime = AngleMult + InputTime;
|
||||||
|
@ -898,7 +898,7 @@ int winmain::ProcessWindowMessages()
|
|||||||
{
|
{
|
||||||
static auto idleWait = 0;
|
static auto idleWait = 0;
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
if (has_focus && !single_step)
|
if (has_focus)
|
||||||
{
|
{
|
||||||
idleWait = static_cast<int>(TargetFrameTime.count());
|
idleWait = static_cast<int>(TargetFrameTime.count());
|
||||||
while (SDL_PollEvent(&event))
|
while (SDL_PollEvent(&event))
|
||||||
|
Loading…
Reference in New Issue
Block a user