|
@@ -9,9 +9,11 @@
|
|
|
#include "lib/sprite.h"
|
|
|
#include "lib/object.h"
|
|
|
|
|
|
+int walk_speed = 1;
|
|
|
+int run_speed = 3;
|
|
|
float scale = 3.0;
|
|
|
int frameskip = 10;
|
|
|
-
|
|
|
+
|
|
|
|
|
|
#define log(msg) dbg_sprintf(dbgout, "[TBP] %s\n", msg)
|
|
|
|
|
@@ -21,7 +23,9 @@ int main(void){
|
|
|
int max_height = LCD_HEIGHT;
|
|
|
int frame = 0;
|
|
|
size_t i;
|
|
|
+ int speed;
|
|
|
Object* object;
|
|
|
+ Sprite* sprite;
|
|
|
Object* player = new_Object(0, 0);
|
|
|
Vector* objects = new_Vector(1, sizeof(Object), &free_Object);
|
|
|
Vector* sprites = new_Vector(22, sizeof(Sprite), &free_Sprite);
|
|
@@ -66,13 +70,20 @@ int main(void){
|
|
|
player->sprite = sprites->get(sprites, 0);
|
|
|
log("Get max sizes");
|
|
|
|
|
|
- max_width -= player->sprite->data->width * scale;
|
|
|
- max_height -= player->sprite->data->height * scale;
|
|
|
- log("Set scale");
|
|
|
-
|
|
|
+ #ifdef RESIZE_SPRITES
|
|
|
+ log("Resizing sprites");
|
|
|
+ dbg_sprintf(dbgout, "[Player] %d x %d\n", player->sprite->data->width, player->sprite->data->height);
|
|
|
+ for(i = 0; i < sprites->count(sprites); i++){
|
|
|
+ sprite = sprites->get(sprites, i);
|
|
|
+ sprite->resize(sprite, sprite->data->width * scale, sprite->data->height * scale);
|
|
|
+ }
|
|
|
+ dbg_sprintf(dbgout, "[Player] %d x %d\n", player->sprite->data->width, player->sprite->data->height);
|
|
|
+ #else
|
|
|
player->scale.x = scale;
|
|
|
player->scale.y = scale;
|
|
|
-
|
|
|
+ max_width -= player->width(player);
|
|
|
+ max_height -= player->height(player);
|
|
|
+ #endif
|
|
|
|
|
|
log("Start graphics");
|
|
|
gfx_Begin();
|
|
@@ -83,11 +94,15 @@ int main(void){
|
|
|
do{
|
|
|
player->sprite = sprites->get(sprites, 0);
|
|
|
kb_Scan();
|
|
|
+ if(kb_Data[2] & kb_Alpha){
|
|
|
+ speed = run_speed;
|
|
|
+ }else{
|
|
|
+ speed = walk_speed;
|
|
|
+ }
|
|
|
arrows = kb_Data[7];
|
|
|
-
|
|
|
if(arrows & kb_Down){
|
|
|
if(player->y < max_height){
|
|
|
- player->y++;
|
|
|
+ player->y += speed;
|
|
|
if(frame > 2){
|
|
|
player->sprite = sprites->get(sprites, 2);
|
|
|
}else{
|
|
@@ -96,7 +111,7 @@ int main(void){
|
|
|
}
|
|
|
}else if(arrows & kb_Up){
|
|
|
if(player->y > 0){
|
|
|
- player->y--;
|
|
|
+ player->y -= speed;
|
|
|
if(frame > 2){
|
|
|
player->sprite = sprites->get(sprites, 18);
|
|
|
}else{
|
|
@@ -106,7 +121,7 @@ int main(void){
|
|
|
}
|
|
|
if(arrows & kb_Right){
|
|
|
if(player->x < max_width){
|
|
|
- player->x++;
|
|
|
+ player->x += speed;
|
|
|
if(frame > 2){
|
|
|
player->sprite = sprites->get(sprites, 10);
|
|
|
}else{
|
|
@@ -115,7 +130,7 @@ int main(void){
|
|
|
}
|
|
|
}else if(arrows & kb_Left){
|
|
|
if(player->x > 0){
|
|
|
- player->x--;
|
|
|
+ player->x -= speed;
|
|
|
if(frame > 2){
|
|
|
player->sprite = sprites->get(sprites, 6);
|
|
|
}else{
|
|
@@ -123,6 +138,16 @@ int main(void){
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ if(player->x < 0){
|
|
|
+ player->x = 0;
|
|
|
+ }else if(player->x >= max_width){
|
|
|
+ player->x = max_width;
|
|
|
+ }
|
|
|
+ if(player->y < 0){
|
|
|
+ player->y = 0;
|
|
|
+ }else if(player->y >= max_height){
|
|
|
+ player->y = max_height;
|
|
|
+ }
|
|
|
gfx_FillScreen(0);
|
|
|
for(i = 0; i < objects->count(objects); i++){
|
|
|
object = objects->get(objects, i);
|