added bucket and relauncher
This commit is contained in:
parent
dc9a10636b
commit
8b31d9ed2e
|
@ -29,7 +29,7 @@ set(ASSETS
|
|||
set(ASSETS_cg
|
||||
assets-cg/font.png
|
||||
assets-cg/font_pinball.png
|
||||
assets-cg/abyss.png
|
||||
# assets-cg/abyss.png
|
||||
# ...
|
||||
)
|
||||
|
||||
|
|
|
@ -42,6 +42,25 @@ public:
|
|||
this->pos.Add(this->vel, dt);
|
||||
}
|
||||
|
||||
void SetSpeed( Vector2D speed ){
|
||||
this->vel = speed.Clone();
|
||||
}
|
||||
|
||||
void SetPosition( Vector2D position ){
|
||||
this->pos = position.Clone();
|
||||
}
|
||||
|
||||
bool IsStopped( void ) {
|
||||
if (this->vel.Length() <= libnum::num32( 0.02 ) ) return true;
|
||||
else return false;
|
||||
}
|
||||
|
||||
bool IsInBucket( Vector2D BucketMin, Vector2D BucketMax ) {
|
||||
if (this->pos.x >= BucketMin.x && this->pos.y >= BucketMin.y &&
|
||||
this->pos.x <= BucketMax.x && this->pos.y <= BucketMax.y) return true;
|
||||
else return false;
|
||||
}
|
||||
|
||||
libnum::num32 radius, mass, restitution;
|
||||
Vector2D pos, vel;
|
||||
uint16_t color;
|
||||
|
@ -201,6 +220,11 @@ struct Scene
|
|||
Vector2D Lock_pos;
|
||||
uint16_t Lock_color;
|
||||
|
||||
Vector2D BucketMin, BucketMax;
|
||||
|
||||
uint8_t CurrentBallToLaunch;
|
||||
Vector2D InitialPosition;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ libnum::num32 cScale;
|
|||
libnum::num32 simWidth;
|
||||
libnum::num32 simHeight;
|
||||
|
||||
extern bopti_image_t img_abyss;
|
||||
// extern bopti_image_t img_abyss;
|
||||
extern uint8_t CurrentSequence;
|
||||
|
||||
|
||||
|
@ -333,7 +333,7 @@ void Setup_Table_3(void) {
|
|||
MyPinball.score = 0;
|
||||
MyPinball.gravity.Set(Vector2D(libnum::num32(0.0), libnum::num32(-1.0)));
|
||||
|
||||
MyPinball.sideimage = &img_abyss;
|
||||
MyPinball.sideimage = nullptr; // &img_abyss;
|
||||
|
||||
MyPinball.borders.clear();
|
||||
MyPinball.borders.emplace_back(libnum::num32(0.74), libnum::num32(0.25));
|
||||
|
@ -457,7 +457,7 @@ void Setup_Table_4(void) {
|
|||
MyPinball.score = 0;
|
||||
MyPinball.gravity.Set(Vector2D(libnum::num32(0.0), libnum::num32(-1.0)));
|
||||
|
||||
MyPinball.sideimage = &img_abyss;
|
||||
MyPinball.sideimage = nullptr ; //&img_abyss;
|
||||
|
||||
MyPinball.borders.clear();
|
||||
MyPinball.borders.emplace_back( libnum::num32(0.74), libnum::num32(0.25) );
|
||||
|
@ -641,16 +641,24 @@ void Setup_Table_5(void) {
|
|||
MyPinball.Lock_color = RGB565_LEMONYELLOW;
|
||||
|
||||
|
||||
MyPinball.BucketMin = Vector2D( libnum::num32(0.42), libnum::num32(0.02) );
|
||||
MyPinball.BucketMax = Vector2D( libnum::num32(0.58), libnum::num32(0.10) );
|
||||
|
||||
|
||||
MyPinball.balls.clear();
|
||||
libnum::num32 ball_radius = libnum::num32(0.03);
|
||||
libnum::num32 ball_mass = libnum::num32(PI) * ball_radius * ball_radius;
|
||||
|
||||
Vector2D ball_pos1(libnum::num32(1.075), libnum::num32(0.15));
|
||||
Vector2D ball_vel1(libnum::num32(0.0), libnum::num32(3.5));
|
||||
// Vector2D ball_vel1(libnum::num32(0.0), libnum::num32(3.5));
|
||||
Vector2D ball_vel1(libnum::num32(0.0), libnum::num32(0.0));
|
||||
|
||||
MyPinball.balls.push_back(Ball(ball_radius, ball_mass, ball_pos1, ball_vel1,
|
||||
0.2, RGB565_LEMONYELLOW));
|
||||
|
||||
MyPinball.CurrentBallToLaunch = 0;
|
||||
MyPinball.InitialPosition = ball_pos1.Clone();
|
||||
|
||||
/*
|
||||
Vector2D ball_pos2(libnum::num32(1.075), libnum::num32(0.45));
|
||||
Vector2D ball_vel2(libnum::num32(0.0), libnum::num32(3.5));
|
||||
|
|
22
src/main.cpp
22
src/main.cpp
|
@ -171,6 +171,13 @@ static void render(void) {
|
|||
/* Clear Screen */
|
||||
azrp_clear(RGB565_BLACK);
|
||||
|
||||
|
||||
if (MyPinball.balls[MyPinball.CurrentBallToLaunch].IsInBucket( MyPinball.BucketMin , MyPinball.BucketMax ))
|
||||
azrp_rect( 10, 10, 10, 10, C_GREEN );
|
||||
else
|
||||
azrp_rect( 10, 10, 10, 10, C_RED );;
|
||||
|
||||
|
||||
/* render the side image if available */
|
||||
if (MyPinball.sideimage != nullptr)
|
||||
azrp_image_p8(azrp_width - MyPinball.sideimage->width - 25, 5,
|
||||
|
@ -248,6 +255,9 @@ static void get_inputs(float dt) {
|
|||
MyPinball.flippers[i].touchIdentifier = libnum::num32(-1);
|
||||
}
|
||||
|
||||
|
||||
#if(!DEMO)
|
||||
|
||||
/* RESET THE GAME AND CHANGE THE CURRENT TABLE ( [OPTN] + [Fx] loads Table #x )*/
|
||||
if (MyKeyboard.IsKeyPressed(MYKEY_OPTN) &&
|
||||
MyKeyboard.IsKeyHoldPressed(MYKEY_F1)) {
|
||||
|
@ -274,10 +284,18 @@ static void get_inputs(float dt) {
|
|||
SetupScene(5);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
if (MyKeyboard.IsKeyHoldPressed(MYKEY_EXE)) {
|
||||
SetupScene(CurrentSequence);
|
||||
if (MyKeyboard.IsKeyPressed(MYKEY_EXE)) {
|
||||
if (MyPinball.balls[MyPinball.CurrentBallToLaunch].IsStopped() || MyPinball.balls[MyPinball.CurrentBallToLaunch].IsInBucket( MyPinball.BucketMin , MyPinball.BucketMax ))
|
||||
{
|
||||
cumulatedTime=0.0f;
|
||||
MyPinball.locker_is_enabled = false;
|
||||
MyPinball.balls[MyPinball.CurrentBallToLaunch].SetPosition( MyPinball.InitialPosition );
|
||||
MyPinball.balls[MyPinball.CurrentBallToLaunch].SetSpeed( Vector2D( libnum::num32(0.0), libnum::num32(3.5)) );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// TODO : to be changed to remove cumulatedTime
|
||||
|
|
|
@ -10,4 +10,6 @@
|
|||
|
||||
#define SCALE_PIXEL 1
|
||||
|
||||
#define DEMO 1
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue