@ -6,20 +6,115 @@ using namespace Pinetime::Applications::Screens;
extern lv_font_t jetbrains_mono_extrabold_compressed ;
extern lv_font_t jetbrains_mono_bold_20 ;
namespace {
const uint8_t paddle_map [ ] = {
0xfc , 0xfe , 0xfc , 0xff , /*Color of index 0*/
0xff , 0xff , 0xff , 0xff , /*Color of index 1*/
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
0x00 ,
} ;
const uint8_t ball_map [ ] = {
0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed ,
0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed ,
0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed ,
0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed ,
0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed ,
0x6f , 0xed , 0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed , 0x6f , 0xed ,
0x6f , 0xed , 0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed ,
0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed ,
0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed ,
0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ,
0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ,
0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ,
0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ,
0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ,
0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ,
0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ,
0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed ,
0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed ,
0x6f , 0xed , 0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed , 0x6f , 0xed ,
0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed ,
0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed ,
0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed ,
0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed ,
0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed , 0x6f , 0xed ,
} ;
}
Paddle : : Paddle ( Pinetime : : Applications : : DisplayApp * app , Pinetime : : Components : : LittleVgl & lvgl ) : Screen ( app ) , lvgl { lvgl } {
app - > SetTouchMode ( DisplayApp : : TouchModes : : Polling ) ;
points = lv_label_create ( lv_scr_act ( ) , NULL ) ;
points = lv_label_create ( lv_scr_act ( ) , nullptr ) ;
lv_label_set_text ( points , " 0 " ) ;
lv_obj_align ( points , lv_scr_act ( ) , LV_ALIGN_IN_TOP_MID , 0 , 0 ) ;
paddle . header . always_zero = 0 ;
paddle . header . w = 4 ;
paddle . header . h = 60 ;
paddle . data_size = 60 * 4 * LV_COLOR_SIZE / 8 ;
paddle . header . cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED ;
paddle . data_size = 6 8;
paddle . header . cf = LV_IMG_CF_ INDEXED_1BIT ;
paddle . data = paddle_map ;
paddle_image = lv_img_create ( lv_scr_act ( ) , NULL ) ;
paddle_image = lv_img_create ( lv_scr_act ( ) , nullptr ) ;
lv_img_set_src ( paddle_image , & paddle ) ;
ball . header . always_zero = 0 ;
@ -28,7 +123,7 @@ Paddle::Paddle(Pinetime::Applications::DisplayApp* app, Pinetime::Components::Li
ball . data_size = 24 * 24 * LV_COLOR_SIZE / 8 ;
ball . header . cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED ;
ball . data = ball_map ;
ball_image = lv_img_create ( lv_scr_act ( ) , NULL ) ;
ball_image = lv_img_create ( lv_scr_act ( ) , nullptr ) ;
lv_img_set_src ( ball_image , & ball ) ;
}
@ -44,38 +139,38 @@ bool Paddle::Refresh() {
counter = 0 ;
ball_x + = dx ;
ball_y + = dy ;
BallX + = dx ;
BallY + = dy ;
lv_obj_set_pos ( ball_image , ball_x, ball_y ) ;
lv_obj_set_pos ( ball_image , BallX, BallY ) ;
//checks if it has touched the sides (floor and ceiling)
if ( ball_y < = 0 | | ball_y > = 215 ) {
if ( BallY < = 0 | | BallY > = 215 ) {
dy * = - 1 ;
}
//checks if it has touched the side (left side)
if ( ball_x > = 215 ) {
if ( BallX > = 215 ) {
dx * = - 1 ;
}
//checks if it is in the position of the paddle
if ( ball_y > = ( y_paddle_bottom + 16 ) & & ball_y < = ( y_paddle_top - 8 ) ) {
if ( ball_x > = 0 & & ball_x < 4 ) {
lv_obj_set_pos ( ball_image , 5 , ball_y ) ;
if ( BallY > = ( PaddleBottomY + 16 ) & & BallY < = ( PaddleTopY - 8 ) ) {
if ( BallX > = 0 & & BallX < 4 ) {
lv_obj_set_pos ( ball_image , 5 , BallY ) ;
dx * = - 1 ;
score + + ;
}
}
//checks if it has gone behind the paddle
else if ( ball_x < = - 40 ) {
ball_x = 107 ;
ball_y = 107 ;
else if ( BallX < = - 40 ) {
BallX = 107 ;
BallY = 107 ;
score = 0 ;
}
sprintf ( Val , " %d " , score ) ;
lv_label_set_text ( points , Val ) ;
sprintf ( scoreStr , " %d " , score ) ;
lv_label_set_text ( points , scoreStr ) ;
}
return running ;
}
@ -85,7 +180,6 @@ bool Paddle::OnButtonPushed() {
return true ;
}
bool Paddle : : OnTouchEvent ( Pinetime : : Applications : : TouchEvents event ) {
return true ;
}
@ -93,8 +187,8 @@ bool Paddle::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
bool Paddle : : OnTouchEvent ( uint16_t x , uint16_t y ) {
lv_obj_set_pos ( paddle_image , 0 , y - 30 ) ; // sets the center paddle pos. (30px offset) with the the y_coordinate of the finger and defaults the x_coordinate to 0
y_paddle_top = y - 30 ; // refreshes the upper extreme of the paddle
y_paddle_bottom = y + 30 ; // refreshes the lower extreme of the paddle
PaddleTopY = y - 30 ; // refreshes the upper extreme of the paddle
PaddleBottomY = y + 30 ; // refreshes the lower extreme of the paddle
return true ;
}