Finally got it- connecting tilemaps & inventory (explained)

Understanding the language, error messages, etc.

Finally got it- connecting tilemaps & inventory (explained)

Postby naed » Wed Sep 28, 2016 2:09 pm

here is a GIF of what i have achieved over the last few days

Image

I appreciate i have been away from the scene for a while, but back and motivated now

UPDATE!!

Image

added an inventory system to my game project, the above GIF shows me manually adding an item (a key) without this in my inventory i cannot access the house, this can be added to a trigger to allow you to pick the item up from anywhere on your tilemap (like chests) - I will add explanation write up to this thread later

UPDATE!!

Image

added animation to the inventory screen - looks much better now

Would love some feedback or suggestions from the community so please feel free to post below


Updated hex file
MAP.zip
(21.8 KiB) Downloaded 473 times
Last edited by naed on Thu Oct 13, 2016 12:16 am, edited 10 times in total.
User avatar
naed
 
Posts: 140
Joined: Tue May 31, 2016 3:18 pm

Re: Finally figured it out - connecting tilemaps

Postby Sorunome » Wed Sep 28, 2016 6:30 pm

This is looking awesome! :D
User avatar
Sorunome
 
Posts: 629
Joined: Sun Mar 01, 2015 1:58 pm

Re: Finally figured it out - connecting tilemaps

Postby naed » Wed Sep 28, 2016 6:56 pm

Thanks :)

Using Summoner123's collision detection for your tilemapper I am able to not only have collision detection but also add events when touching selected tilemaps (like display text our trigger an event) and this is what I'm using to trigger the map changes.

The code I'm using is a bit all over the place and could obviously be re-written more efficiently, but seeing as I came here with no knowledge at all of programming I think I'm doing ok working this all out.

Next is looking at an inventory maybe? (Sounds a bit more challenging)

I'll post some code up soon (with a little write-up) so anyone who wants to can see how I'm triggering all the events
User avatar
naed
 
Posts: 140
Joined: Tue May 31, 2016 3:18 pm

Re: Finally figured it out - connecting tilemaps

Postby naed » Wed Sep 28, 2016 10:04 pm

okies, so here's my code

Code: Select all
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;



const byte tilemap1[] PROGMEM = {17,11,
8,8,

 2, 2, 2, 2, 2, 2, 2, 2,26,26,26,26,26,26,26,26, 2,
 2, 2, 2, 2, 2, 2, 2,19,26,26,26,26,26,26,26,26,20,
 2, 2, 2, 2, 2, 2, 2,19,25,26,26,25,25,25,25,25,20,
 2, 2, 2, 2, 2, 2,18, 4, 8,25,26,56,57,58,59,60,20,
 2, 2, 2, 2, 2, 4, 8, 8, 8, 8,25,51,52,53,54,55,20,
 2, 2, 2, 2, 4, 8, 8, 8, 8, 8, 8,46,47,48,49,50,20,  /////////112x64 pix res
18,18,18, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3,
28, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,29,
21,21, 6, 8, 8, 8,22,23,24, 8, 8, 8, 8, 8, 5,21,21,
 2, 2,19, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,20, 2, 2,
 2, 2, 2,21,21,21,21,21,21,21,21,21,21,21, 2, 2, 2};

const byte tilemap2[] PROGMEM = {17,11,
8,8,
 2, 2, 2, 2, 2, 2, 2,19,30,30, 3,18,18,18,18,18, 2,
 2, 2, 2, 2, 2, 2, 2,19, 8, 8,27,27,27,27,27,27,20,
 2, 2, 2, 2, 2, 2, 2,19, 8, 8,26,26,26,26,26,26,20,
 2, 2, 2, 2, 2, 2,18, 4, 8, 8,25,26,26,26,26,26,20,
 2, 2, 2, 2, 2, 4, 8, 8, 8, 8, 8,26,26,26,26,26,20,
 2, 2, 2, 2, 4, 8, 8, 8, 8, 8, 8,26,26,26,26,26,20,  /////////112x64 pix res
18,18,18, 4, 8, 8, 8,27, 8, 8, 8, 8,25,25,25,25, 3,
28, 8, 8, 8, 8, 8,27,26,27, 8, 8, 8, 8, 8, 8, 8,29,
21,21, 6, 8, 8,27,26,26,26,27, 8, 8, 8, 8, 5,21,21,
 2, 2,19, 8, 8,25,25,25,25,25, 8, 8, 8, 8,20, 2, 2,
 2, 2, 2,21,21,21,21,21,21,21,21,21,21,21, 2, 2, 2};

const byte tilemap3[] PROGMEM = {17,11,
8,8,
 2, 2, 2, 2, 2, 2, 2, 2,18,18,18,18,18,18,18,18, 2,
 2, 2, 2, 2, 2, 2, 2,19, 8, 8, 8, 8, 8, 8, 8, 8,20,
 2, 2, 2, 2, 2, 2, 2,19, 8, 8, 8, 8, 8, 8, 8, 8,20,
 2,18,18,18,18,18,18, 4, 8, 8, 8, 8, 5,21,21,21, 2,
19, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 2, 2, 2, 2, 2,
19, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 2, 2, 2, 2, 2, 2,  /////////112x64 pix res
19, 8, 8, 5,21,21,21, 6, 8, 8,20, 2, 2, 2, 2, 2, 2,
19, 8, 8,20, 2, 2, 2,19, 8, 8,20, 2, 2, 2, 2, 2, 2,
19,34, 8,20, 2, 2, 2,19, 8, 8,20, 2, 2, 2, 2, 2, 2,
 2,21,21, 2, 2, 2, 2,19, 8, 8,20, 2, 2, 2, 2, 2, 2,
 2, 2, 2, 2, 2, 2, 2,19,28,28,20, 2, 2, 2, 2, 2, 2};

const byte tilemap4[] PROGMEM = {17,11,
8,8,
 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
 2,18,18,18,18,18, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
19, 8, 8, 8,36, 8,20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
19, 8, 8, 8, 8, 8,20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  /////////112x64 pix res
19, 8, 8, 5,21,21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
19, 8, 8,20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
19,35, 8,20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
 2,21,21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2};

 const byte tilemap5[] PROGMEM = {12,11,
8,8,
45,45,45,45,45,45,45,45,45,45,45,45,
45,45,37,37,37,37,37,37,37,45,45,45,
45,41,61,61,61,61,61,62,61,40,45,45,
45,41, 8, 8, 8, 8, 8,63, 8,40,45,45,
45,41, 8, 8, 8, 8, 8,64, 8,40,45,45,
45,41, 8, 8, 8, 8, 8, 8, 8,40,45,45,  /////////112x64 pix res
45,41, 8, 8, 8, 8, 8, 8, 8,40,45,45,
45,41, 8, 8, 8, 8, 8, 8, 8,40,45,45,
45,41, 8, 8, 8, 8, 8, 8, 8,40,45,45,
45,45,42,42,44, 8,43,42,42,45,45,45,
45,45,45,45,41,28,40,45,45,45,45,45,};

const byte bush[] PROGMEM = {B00101100,B01010010,B10001001,B01000010,B10010001,B01001010,B00100100,B01111110,};
const byte port_noir[] PROGMEM = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,};
const byte rock_terrain_master[] PROGMEM = {B00000010,B00010000,B01000000,B00000010,B00010000,B00001000,B01000001,B00000100,};
const byte rock_valley_ne[] PROGMEM = {B10100000,B11001001,B01110000,B00001100,B00000101,B00000100,B00000110,B00000011,};
const byte rock_valley_nw[] PROGMEM = {B00000101,B10010011,B00001110,B00110000,B10100000,B00100000,B01100000,B11000000,};
const byte rock_valley_se[] PROGMEM = {B00000011,B00000110,B00000100,B00000101,B00001100,B01110000,B11001001,B10100000,};
const byte rock_valley_sw[] PROGMEM = {B11000000,B01100000,B00100000,B10100000,B00110000,B00001110,B10010011,B00000101,};
const byte turtle_rock[] PROGMEM = {B01101100,B10110010,B11010001,B01010101,B01010010,B10011001,B10000001,B11111110,};
const byte void_tile[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte water_left_bottom[] PROGMEM = {B10001111,B10000000,B11110000,B10000000,B10001111,B10000000,B11110000,B11111111,};
const byte water_left_middle[] PROGMEM = {B10001111,B10000000,B11110000,B10000000,B10001111,B10000000,B11110000,B10000000,};
const byte water_left_top[] PROGMEM = {B11111111,B10000000,B11110000,B10001111,B10000000,B10000000,B11110000,B10000000,};
const byte water_right_bottom[] PROGMEM = {B1110001,B00000001,B0000111,B00000001,B11110001,B00000001,B00001111,B11111111,};
const byte water_right_middle[] PROGMEM = {B11110001,B00000001,B00001111,B00000001,B11110001,B00000001,B00001111,B00000001,};
const byte water_right_top[] PROGMEM = {B11111111,B00000001,B00001111,B00000001,B11110001,B00000001,B00001111,B00000001,};
const byte water_middle_bottom[] PROGMEM = {B11110000,B00000000,B00001111,B00000000,B11110000,B00000000,B00001111,B11111111,};
const byte water_middle_middle[] PROGMEM = {B11110000,B00000000,B00001111,B00000000,B11110000,B00000000,B00001111,B00000000,};
const byte water_middle_top[] PROGMEM = {B11111111,B00000000,B11110000,B00000000,B00001111,B00000000,B11110000,B00000000,};
const byte rock_s[] PROGMEM = {B00010010,B00000000,B01001000,B00000100,B00100001,B10001100,B01110010,B10000001,};
const byte rock_e[] PROGMEM = {B00000101,B00100010,B00001010,B10000010,B00100100,B00010100,B10000010,B00001001,};
const byte rock_n[] PROGMEM = {B10000001,B01110010,B10001100,B00100001,B00000100,B01001000,B00000000,B00010010,};
const byte rock_w[] PROGMEM = {B10100000,B01000100,B01010000,B01000001,B00100100,B00101000,B01000001,B10010000,};
const byte bush_left[] PROGMEM = {B00111011,B01000100,B10100000,B10010100,B01000010,B10000000,B10001000,B01110111,};
const byte bush_middle[] PROGMEM = {B10111101,B01000010,B00001000,B10000100,B00010000,B00100001,B10001000,B01110111,};
const byte bush_right[] PROGMEM = {B11011100,B00100010,B00000101,B00101001,B01000010,B00000001,B00010001,B11101110,};
const byte tree_base[] PROGMEM = {B01010100,B01000100,B10100010,B10001010,B10000010,B01101100,B00101000,B00101000,};
const byte tree_repeat[] PROGMEM = {B01010100,B01000100,B10000010,B10010010,B10101010,B01101100,B00101000,B01000100,};
const byte tree_top[] PROGMEM = {B00000000,B00000000,B00000000,B00010000,B00101000,B00101000,B00101000,B01000100,};
const byte exit_1[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_2[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_3[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_4[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_5[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_6[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte cave_ladder[] PROGMEM = {B11000011,B11011011,B11000011,B11011011,B11000011,B11011011,B11000011,B11011011,};
const byte ladder[] PROGMEM = {B00111100,B00100100,B00111100,B00100100,B00111100,B00100100,B00111100,B00100100,};
const byte tombstone[] PROGMEM = {B00111100,B01000010,B10000001,B10111001,B10000001,B10101101,B10000001,B11111111,};
const byte WallB[] PROGMEM = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B11111111,};
const byte WallBL[] PROGMEM = {B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,B10000000,B11111111,};
const byte WallBR[] PROGMEM = {B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,B00000001,B11111111,};
const byte WallL[] PROGMEM = {B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,};
const byte WallR[] PROGMEM = {B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,};
const byte WallT[] PROGMEM = {B11111111,B00000000,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,};
const byte WallTL[] PROGMEM = {B11111111,B10000000,B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,};
const byte WallTR[] PROGMEM = {B11111111,B00000001,B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,};
const byte blackwall[] PROGMEM = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,};
const byte houseB1[] PROGMEM = {B01010011,B01010010,B01010010,B01010001,B11110000,B10011111,B10010010,B11111111,};
const byte houseB2[] PROGMEM = {B11111000,B01001000,B01001000,B11110000,B00000000,B11111111,B01001000,B11111111,};
const byte houseB3[] PROGMEM = {B00111100,B01100110,B11000011,B10011001,B10000001,B10000101,B10000001,B11111111,};
const byte houseB4[] PROGMEM = {B00011111,B00010010,B00010010,B00001111,B00000000,B11111111,B00010010,B11111111,};
const byte houseB5[] PROGMEM = {B11001010,B01001010,B01001010,B10001010,B00001111,B11111001,B01001001,B11111111,};
const byte houseT1[] PROGMEM = {B11111111,B01010010,B01011111,B01010000,B01010000,B11110001,B10010010,B11110010,};
const byte houseT2[] PROGMEM = {B11111111,B01001001,B11111111,B00000000,B00000000,B11110000,B01001000,B01001000,};
const byte houseT3[] PROGMEM = {B11111111,B00100100,B11111111,B00000000,B01111110,B10100101,B11111111,B00000000,};
const byte houseT4[] PROGMEM = {B11111111,B10010010,B11111111,B00000000,B00000000,B00001111,B00010010,B00010010,};
const byte houseT5[] PROGMEM = {B11111111,B01001010,B11111010,B00001010,B00001010,B10001111,B01001001,B01001111,};
const byte roof1[] PROGMEM = {B00000000,B00011111,B00110010,B00101101,B01000000,B01010010,B11101101,B10000000,};
const byte roof2[] PROGMEM = {B00000000,B11111111,B01001001,B10110110,B00000000,B01001001,B10110110,B00000000,};
const byte roof3[] PROGMEM = {B00000000,B11111111,B00100100,B11011011,B00000000,B00100100,B11011011,B00000000,};
const byte roof4[] PROGMEM = {B00000111,B11111100,B10010111,B01101100,B00000100,B10010111,B01101101,B00000000,};
const byte roof5[] PROGMEM = {B10000000,B11111000,B11001100,B10110100,B10000010,B11001010,B10110111,B00000001,};
const byte wallpaper[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,};
const byte bedbottom[] PROGMEM = {B10111101,B11000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte bedmid[] PROGMEM = {B11111111,B10000001,B10000001,B10000001,B10111101,B11000011,B10000001,B10000001,};
const byte bedtop[] PROGMEM = {B00000000,B00000000,B00000000,B00111100,B11000011,B10000001,B10111101,B10100101,};





const byte *spritesheet[] = {bush,    //0
port_noir,                            //1
rock_terrain_master,                  //2
rock_valley_ne,                       //3
rock_valley_nw,                       //4
rock_valley_se,                       //5
rock_valley_sw,                       //6
turtle_rock,                          //7
void_tile,                            //8
water_left_bottom,                    //9
water_left_middle,                    //10
water_left_top,                       //11
water_right_bottom,                   //12
water_right_middle,                   //13
water_right_top,                      //14
water_middle_bottom,                  //15
water_middle_middle,                  //16
water_middle_top,                     //17
rock_s,                               //18
rock_e,                               //19
rock_w,                               //20
rock_n,                               //21
bush_left,                            //22
bush_middle,                          //23
bush_right,                           //24
tree_base,                            //25
tree_repeat,                          //26
tree_top,                             //27
exit_1,                               //28
exit_2,                               //29
exit_3,                               //30
exit_4,                               //31
exit_5,                               //32
exit_6,                               //33
cave_ladder,                          //34
ladder,                               //35
tombstone,                            //36
WallB,                                //37
WallBL,                               //38
WallBR,                               //39
WallL,                                //40
WallR,                                //41
WallT,                                //42
WallTL,                               //43
WallTR,                               //44
blackwall,                            //45
houseB1,                              //46
houseB2,                              //47
houseB3,                              //48
houseB4,                              //49
houseB5,                              //50
houseT1,                              //51
houseT2,                              //52
houseT3,                              //53
houseT4,                              //54
houseT5,                              //55
roof1,                                //56
roof2,                                //57
roof3,                                //58
roof4,                                //59
roof5,                                //60
wallpaper,                            //61
bedtop,                               //62
bedmid,                               //63
bedbottom};                           //64

const byte backblack[] PROGMEM = {8,8,0x7E,0x42,0x42,0x3C,0x7E,0x3C,0x3C,0x24,};
const byte backgrey[] PROGMEM = {8,8,0x1,0x1,0x1,0xC1,0x81,0xC0,0x40,0x0,};
const byte frontblack[] PROGMEM = {8,8,0x7E,0x66,0x42,0x38,0x78,0x38,0x3C,0x24,};
const byte frontgrey[] PROGMEM = {8,8,0x80,0x80,0x80,0x87,0x87,0x7,0x2,0x0,};
const byte leftblack[] PROGMEM = {8,8,0x3E,0x32,0x22,0x1C,0x1C,0x1C,0x1C,0x14,};
const byte leftgrey[] PROGMEM = {8,8,0x0,0x0,0x0,0x60,0x60,0x60,0x40,0x0,};
const byte rightblack[] PROGMEM = {8,8,0x7C,0x4C,0x44,0x38,0x3C,0x38,0x38,0x28,};
const byte rightgrey[] PROGMEM = {8,8,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,};


  int player_x = 70;    //cant get these to center
  int player_y = 40;    //cant get these to center
  int player_direction = 0;
  int room = 1;
  int co_ords = 1;

int x,y; ///if 0 player spite will not move, -50,50 no tilemap

//////CAMERA//////
int camerax = -20 ;
int cameray = -20 ;
int animTransition;


void setup() {
  gb.begin();
  gb.titleScreen(F("test"));
  gb.setFrameRate(62);  ////////for sprite
  gb.display.persistence = false;
//  animTransition=-6;
}

/////////PLAYER_MOVEMENT\\\\\\\\\

void loop() {
  if(gb.update()){
    if (gb.buttons.repeat(BTN_RIGHT,1));{x--;}
    if (gb.buttons.repeat(BTN_LEFT,1));{x++;}
    if (gb.buttons.repeat(BTN_DOWN,1));{y--;}
    if (gb.buttons.repeat(BTN_UP,1));{y++;}


//      if(player_x > 64 ) {camerax-=2; player_x -=2;}    //Y Scrolling  right
//else  if(player_x < 10 ){camerax+=2; player_x +=2;}   //Y Scrolling  left
 
//        if(player_y > 28 ) {cameray-=2; player_y -=2;}    //Y Scrolling  Down
//else  if(player_y < 10 ){cameray+=2; player_y +=2;}   //Y Scrolling  Up

//      if(cameray > 0)cameray=0;   
//else  if(cameray < -24) cameray = -24;
//      if(camerax > 0)camerax=0;   
//else  if(camerax < -36) camerax = -36;

if(player_x > 59 && camerax <  0 && camerax  > -52){player_x = 59;camerax--;}
else  if(player_x < 15 && camerax <  0 && camerax  > -52){player_x = 15;camerax++;}
else  if(player_x > 59 && camerax <= 0 && camerax >= -52)camerax--;
else  if(player_x < 15 && camerax <= 0 && camerax >= -52)camerax++;   
 
 
      if(player_y > 28 && cameray < 0 && cameray >  -40){player_y = 28;cameray--;}
else  if(player_y < 15 && cameray < 0 && cameray >  -40){player_y = 15;cameray++;}
else  if(player_y > 28 && cameray <= 0 && cameray >= -40)cameray--;
else  if(player_y < 15 && cameray <= 0 && cameray >= -40)cameray++; 

      if(camerax > 0)camerax= 0;
else  if(camerax < -52) camerax = -52;
 
      if(cameray > 0)cameray= 0;   
else  if(cameray < -40) cameray = -40;

  if(room == 1){
    gb.display.drawTilemap(camerax,cameray,tilemap1,spritesheet);} // draw the tilemap
 //  gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
  if(room == 2){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap2,spritesheet);} // draw the tilemap
 //   gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
  if(room == 3){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap3,spritesheet);} // draw the tilemap
//    gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
  if(room == 4){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap4,spritesheet);} // draw the tilemap
//    gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
  if(room == 5){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap5,spritesheet);} // draw the tilemap
//    gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );



//if(gb.buttons.repeat(BTN_A,1)){
//    gb.display.setColor(BLACK);
//    gb.display.fillRect(0,0,84,48);
//    gb.display.setColor(WHITE);
//    gb.display.fillRect(animTransition,animTransition,84-(2*animTransition),48-(2*animTransition));
//    gb.display.setColor(BLACK);
//    {animTransition = animTransition + 6;}
//  }
//  if(gb.buttons.repeat(BTN_B,1)){
//    gb.display.setColor(BLACK);
//    gb.display.fillRect(0,0,84,48);
//    gb.display.setColor(WHITE);
//    gb.display.fillRect(animTransition,animTransition,84-(2*animTransition),48-(2*animTransition));
//    gb.display.setColor(BLACK);
//    {animTransition = animTransition - 6;}
//  }

 if(gb.buttons.repeat(BTN_UP,1)){
       gb.display.setColor(BLACK);{
    gb.display.drawBitmap(player_x,player_y,backblack);
       }
    gb.display.setColor(GRAY);{
    gb.display.drawBitmap(player_x,player_y,backgrey);
    }
      player_direction = 1;
      player_y = player_y - 1;
      if(checkcolision())player_y++;  // ADD by Summoner123 - If have colision on the new position regreat one Pixel
      }

     
    if(player_y <= 0){
      player_y = 0;}



    if(gb.buttons.repeat(BTN_DOWN,1)){
      gb.display.setColor(BLACK);{
    gb.display.drawBitmap(player_x,player_y,frontblack);
    }
     gb.display.setColor(GRAY);{
    gb.display.drawBitmap(player_x,player_y,frontgrey);
    }
      player_direction = 2;
      player_y = player_y + 1;
      if(checkcolision())player_y--;  // ADD by Summoner123 - If have colision on the new position regreat one Pixel
      }
     
    if(player_y >= 40){
      player_y = 40;}
 


    if(gb.buttons.repeat(BTN_RIGHT,1)){
       gb.display.setColor(BLACK);{
    gb.display.drawBitmap(player_x,player_y,rightblack);
    }
     gb.display.setColor(GRAY);{
    gb.display.drawBitmap(player_x,player_y,rightgrey);
    }
      player_direction = 3;
      player_x = player_x + 1;
      if(checkcolision())player_x--;  // ADD by Summoner123 - If have colision on the new position regreat one Pixel
      }
     
     
    if(player_x >= 77){
      player_x = 77;}


    if(gb.buttons.repeat(BTN_LEFT,1)){
       gb.display.setColor(BLACK);{
    gb.display.drawBitmap(player_x,player_y,leftblack);
    }
    gb.display.setColor(GRAY);{
    gb.display.drawBitmap(player_x,player_y,leftgrey);
    }
      player_direction = 4;
      player_x = player_x - 1;
     
      if(checkcolision())player_x++;  // ADD by Summoner123 - If have colision on the new position regreat one Pixel
      }
     
    if(player_x <= -2){
      player_x = -2;}
     
      ////////////PLAYER DIRECTION/////////////

 if (player_direction == 1){
        gb.display.setColor(BLACK);{
        gb.display.drawBitmap(player_x,player_y,backblack);
      }
        gb.display.setColor(GRAY);{
        gb.display.drawBitmap(player_x,player_y,backgrey);
        }
 }
     
      else if (player_direction == 2){
        gb.display.setColor(BLACK);{
        gb.display.drawBitmap(player_x,player_y,frontblack);
      }
        gb.display.setColor(GRAY);{
        gb.display.drawBitmap(player_x,player_y,frontgrey);
        }
      }
else if (player_direction == 3){
        gb.display.setColor(BLACK);{
        gb.display.drawBitmap(player_x,player_y,rightblack);
      }
        gb.display.setColor(GRAY);{
        gb.display.drawBitmap(player_x,player_y,rightgrey);
        }
}
      else if (player_direction == 4){
        gb.display.setColor(BLACK);{
        gb.display.drawBitmap(player_x,player_y,leftblack);
      }
        gb.display.setColor(GRAY);{
        gb.display.drawBitmap(player_x,player_y,leftgrey);
        }
      }
      else {  gb.display.setColor(BLACK);{
        gb.display.drawBitmap(player_x,player_y,frontblack);
      }
        gb.display.setColor(GRAY);{
        gb.display.drawBitmap(player_x,player_y,frontgrey);
        }
      }
}
 

gb.display.setColor(BLACK);

if(gb.buttons.held(BTN_B,20)){
    co_ords = co_ords + 1;}

if(co_ords == 1){
  gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );}
else if(co_ords == 2){
  gb.display.cursorY = 12; gb.display.println( camerax );gb.display.println( cameray );}
else if(co_ords >= 3){
    co_ords = 0;}

}



     bool checkcolision() // Transformed it into a function
   {
    uint16_t i;
     for(i=0; i < gb.display.numcolision + 1; i++)
   {
    if(gb.collideRectRect(player_x,player_y,8,8,gb.display.solid[i].x,gb.display.solid[i].y,8,8))///changed player_x,y back to 8
    {
        //  if(gb.display.solid[i].spritecol == void_tile); //Do nothing because it's floor - This line not needed
          if(gb.display.solid[i].spritecol == bush) return true;
else      if(gb.display.solid[i].spritecol == port_noir) return true;
else      if(gb.display.solid[i].spritecol == rock_terrain_master) {gb.popup(F(" ""Rock"" "),1); return true;} //Return True if character have touched the wall
else      if(gb.display.solid[i].spritecol == rock_valley_ne) return true;
else      if(gb.display.solid[i].spritecol == rock_valley_nw) return true;
else      if(gb.display.solid[i].spritecol == rock_valley_se) return true;
else      if(gb.display.solid[i].spritecol == rock_valley_sw) return true;
else      if(gb.display.solid[i].spritecol == turtle_rock) return true;
else      if(gb.display.solid[i].spritecol == water_left_bottom) return true;
else      if(gb.display.solid[i].spritecol == water_left_middle) return true;
else      if(gb.display.solid[i].spritecol == water_left_top) return true;
else      if(gb.display.solid[i].spritecol == water_right_bottom) return true;
else      if(gb.display.solid[i].spritecol == water_right_middle) return true;
else      if(gb.display.solid[i].spritecol == water_right_top) return true;
else      if(gb.display.solid[i].spritecol == water_middle_bottom) return true;
else      if(gb.display.solid[i].spritecol == water_middle_middle) return true;
else      if(gb.display.solid[i].spritecol == water_middle_top) return true;
else      if(gb.display.solid[i].spritecol == rock_n) return true;
else      if(gb.display.solid[i].spritecol == rock_e) return true;
else      if(gb.display.solid[i].spritecol == rock_s) return true;
else      if(gb.display.solid[i].spritecol == rock_w) return true;
else      if(gb.display.solid[i].spritecol == bush_left) return true;
else      if(gb.display.solid[i].spritecol == bush_middle) return true;
else      if(gb.display.solid[i].spritecol == bush_right) return true;
//else      if(gb.display.solid[i].spritecol == bush_left) {gb.popup(F(" ""A bush!!"" "),1); return true;}
//else      if(gb.display.solid[i].spritecol == bush_middle) {gb.popup(F(" ""A bush!!"" "),1); return true;}
//else      if(gb.display.solid[i].spritecol == bush_right) {gb.popup(F(" ""A bush!!"" "),1); return true;}
else      if(gb.display.solid[i].spritecol == tree_base) return true;
else      if(gb.display.solid[i].spritecol == tree_repeat) return true;
else      if(gb.display.solid[i].spritecol == tree_top) return true;
else      if((gb.display.solid[i].spritecol == exit_1) && room == 1) {room = 2; player_x = 68; camerax = -52;}
else      if((gb.display.solid[i].spritecol == exit_1) && room == 2) {room = 1; player_x = 68; camerax = -52;}
else      if((gb.display.solid[i].spritecol == exit_1) && room == 3) {room = 2; player_y = 9; cameray = 0;}
else      if((gb.display.solid[i].spritecol == exit_1) && room == 5) {room = 1; player_y = 27; player_x = 59; camerax = -45; cameray = -21;}
else      if((gb.display.solid[i].spritecol == exit_2) && room == 1) {room = 2; player_x = 9; camerax = 0;}
else      if((gb.display.solid[i].spritecol == exit_2) && room == 2) {room = 1; player_x = 9; camerax = 0;}
else      if((gb.display.solid[i].spritecol == exit_3) && room == 2) {room = 3; player_y = 32; cameray = -40;}
else      if(gb.display.solid[i].spritecol == exit_4) return true;
else      if(gb.display.solid[i].spritecol == exit_5) return true;
else      if(gb.display.solid[i].spritecol == exit_6) return true;
else      if((gb.display.solid[i].spritecol == cave_ladder) && room ==3) {room = 4; player_x = 16; player_y = 24; camerax = 0; cameray = -48;}
else      if((gb.display.solid[i].spritecol == ladder) && room == 4) {room  = 3; player_x = 16; player_y = 24; camerax = 0; cameray = -48;}
else      if((gb.display.solid[i].spritecol == tombstone) && gb.buttons.repeat(BTN_A,1)) {gb.popup(F(" ""Here Lies Dave!"" "),1); return true;}
else      if(gb.display.solid[i].spritecol == tombstone) return true;
else      if(gb.display.solid[i].spritecol == WallB) return true;
else      if(gb.display.solid[i].spritecol == WallBL) return true;
else      if(gb.display.solid[i].spritecol == WallBR) return true;
else      if(gb.display.solid[i].spritecol == WallT) return true;
else      if(gb.display.solid[i].spritecol == WallTL) return true;
else      if(gb.display.solid[i].spritecol == WallTR) return true;
else      if(gb.display.solid[i].spritecol == WallL) return true;
else      if(gb.display.solid[i].spritecol == WallR) return true;
else      if(gb.display.solid[i].spritecol == houseB1) return true;
else      if(gb.display.solid[i].spritecol == houseB2) return true;
else      if((gb.display.solid[i].spritecol == houseB3) && room == 1) {room = 5; player_y = 32; player_x = 40; camerax = -0; cameray = -40;}
else      if(gb.display.solid[i].spritecol == houseB4) return true;
else      if(gb.display.solid[i].spritecol == houseB5) return true;
else      if(gb.display.solid[i].spritecol == houseT1) return true;
else      if(gb.display.solid[i].spritecol == houseT2) return true;
else      if(gb.display.solid[i].spritecol == houseT3) return true;
else      if(gb.display.solid[i].spritecol == houseT4) return true;
else      if(gb.display.solid[i].spritecol == houseT5) return true;
else      if(gb.display.solid[i].spritecol == roof1) return true;
else      if(gb.display.solid[i].spritecol == roof2) return true;
else      if(gb.display.solid[i].spritecol == roof3) return true;
else      if(gb.display.solid[i].spritecol == roof4) return true;
else      if(gb.display.solid[i].spritecol == roof5) return true;
else      if((gb.display.solid[i].spritecol == bedtop) && gb.buttons.repeat(BTN_A,1)) {gb.popup(F(" ""Aaah! My bed"" "),1); return true;}
else      if(gb.display.solid[i].spritecol == bedtop) return true;
else      if((gb.display.solid[i].spritecol == bedmid) && gb.buttons.repeat(BTN_A,1)) {gb.popup(F(" ""Aaah! My bed"" "),1); return true;}
else      if(gb.display.solid[i].spritecol == bedmid) return true;
else      if((gb.display.solid[i].spritecol == bedbottom) && gb.buttons.repeat(BTN_A,1)) {gb.popup(F(" ""Aaah! My bed"" "),1);}

 
      }
   }
    return false; // Return false if don't touch anything
  }     


I'll try to explain it here (excuse my lack of programming knowledge)
This is to explain how I managed to connect tilemaps - creating tilemaps, collision detection etc has already been discussed in some detail on these forums if you need help on these then ask below and I'll try my best to help or point you in the right direction.


To connect tilemaps first i created an integer for the rooms
Code: Select all
int room = 1;


this allowed me to separate my rooms and call them at will with the room integer

then comes to the code that actually switches the tilemaps

Code: Select all
  if(room == 1){
     gb.display.clear();
    gb.display.drawTilemap(camerax,cameray,tilemap1,spritesheet);}
  if(room == 2){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap2,spritesheet);}
  if(room == 3){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap3,spritesheet);}
  if(room == 4){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap4,spritesheet);}
  if(room == 5){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap5,spritesheet);}


so lets break this code down really quickly

if(room ==1){
this checks the state of the room integer that we created earlier

if this is true (so if int room = 1 then the above will be true) it will run the next line of code

gb.display.clear();
this simply clears the display so we can draw our next tilemap

gb.display.drawTilemap(camerax,cameray,tilemap1,spritesheet);}
this then draws the next tilemap to the display (tilemap1 being my first room/map)

to enable you to have a tile that triggers this event to take place I added the following summoner123's collision detection code

Code: Select all
else      if((gb.display.solid[i].spritecol == exit_1) && room == 5) {room = 1; player_y = 27; player_x = 59; camerax = -45; cameray = -21;}


this basically reads like this

if((gb.display.solid[i].spritecol == exit_1) && room == 5)
if collision with tile is detected and room integer is 5

{room = 1; player_y = 27; player_x = 59; camerax = -45; cameray = -21;}
changer room integer to 1 (thus enabling our tilemap change) and also change player x/y and camera x/y positions ( or your player will appear in the same place he was in the old room)

and that's pretty much it

my code isn't pretty, or refined and there is certainly an easier way of coding this (I'm sure of it) so please do not bash me for my lack of knowledge

hope this helps someone - and if you have any questions please feel free to ask me :)



EDIT

I also used the collision detection to enable me to trigger other events, for example, when trying the demo, go into the house and walk into the bed whilst pressing A (direction and A at same time) it will trigger an event!!

this is the code i used to achieve this
Code: Select all
else      if((gb.display.solid[i].spritecol == bedtop) && gb.buttons.repeat(BTN_A,1)) {gb.popup(F(" ""Aaah! My bed"" "),1); return true;}
else      if(gb.display.solid[i].spritecol == bedtop) return true;


else if((gb.display.solid[i].spritecol == bedtop) && gb.buttons.repeat(BTN_A,1))
if collision with tile is detected and button A ia pressed

{gb.popup(F(" ""Aaah! My bed"" "),1); return true;}
display popup message

else if(gb.display.solid[i].spritecol == bedtop) return true;
you also need to have the collision detection tell us its a solid item with the above code

(im sure i could get this down to 1 line but haven't have time to refine it yet, i'll update if i do)
User avatar
naed
 
Posts: 140
Joined: Tue May 31, 2016 3:18 pm

Re: Finally got it- connecting tilemaps & inventory (explain

Postby Duhjoker » Fri Sep 30, 2016 8:52 am

Awesome!!! You rock!!!!! Great example and explanation!!!!!! THANK YOU!!!!!!
User avatar
Duhjoker
 
Posts: 446
Joined: Sat Jul 02, 2016 4:57 am
Location: Where Palm trees grow

Re: Finally got it- connecting tilemaps & inventory (explain

Postby naed » Fri Sep 30, 2016 11:46 am

Haha was waiting for you to see this duhjoker
User avatar
naed
 
Posts: 140
Joined: Tue May 31, 2016 3:18 pm

Re: Finally got it- connecting tilemaps & inventory (explain

Postby Duhjoker » Sat Oct 01, 2016 3:05 am

lol
User avatar
Duhjoker
 
Posts: 446
Joined: Sat Jul 02, 2016 4:57 am
Location: Where Palm trees grow

Re: Finally got it- connecting tilemaps & inventory (explain

Postby naed » Sat Oct 01, 2016 10:32 pm

Here's my game with a working inventory system

Code: Select all
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;



const byte tilemap1[] PROGMEM = {17,11,
8,8,

 2, 2, 2, 2, 2, 2, 2, 2,26,26,26,26,26,26,26,26, 2,
 2, 2, 2, 2, 2, 2, 2,19,26,26,26,26,26,26,26,26,20,
 2, 2, 2, 2, 2, 2, 2,19,25,26,26,25,25,25,25,25,20,
 2, 2, 2, 2, 2, 2,18, 4, 8,25,26,56,57,58,59,60,20,
 2, 2, 2, 2, 2, 4, 8, 8, 8,65,25,51,52,53,54,55,20,
 2, 2, 2, 2, 4, 8, 8, 8, 8, 8, 8,46,47,48,49,50,20,  /////////112x64 pix res
18,18,18, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3,
28, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,29,
21,21, 6, 8, 8, 8,22,23,24, 8, 8, 8, 8, 8, 5,21,21,
 2, 2,19, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,20, 2, 2,
 2, 2, 2,21,21,21,21,21,21,21,21,21,21,21, 2, 2, 2};

const byte tilemap2[] PROGMEM = {17,11,
8,8,
 2, 2, 2, 2, 2, 2, 2,19,30,30, 3,18,18,18,18,18, 2,
 2, 2, 2, 2, 2, 2, 2,19, 8, 8,27,27,27,27,27,27,20,
 2, 2, 2, 2, 2, 2, 2,19, 8, 8,26,26,26,26,26,26,20,
 2, 2, 2, 2, 2, 2,18, 4, 8, 8,25,26,26,26,26,26,20,
 2, 2, 2, 2, 2, 4, 8, 8, 8, 8, 8,26,26,26,26,26,20,
 2, 2, 2, 2, 4, 8, 8, 8, 8, 8, 8,26,26,26,26,26,20,  /////////112x64 pix res
18,18,18, 4, 8, 8, 8,27, 8, 8, 8, 8,25,25,25,25, 3,
28, 8, 8, 8, 8, 8,27,26,27, 8, 8, 8, 8, 8, 8, 8,29,
21,21, 6, 8, 8,27,26,26,26,27, 8, 8, 8, 8, 5,21,21,
 2, 2,19, 8, 8,25,25,25,25,25, 8, 8, 8, 8,20, 2, 2,
 2, 2, 2,21,21,21,21,21,21,21,21,21,21,21, 2, 2, 2};

const byte tilemap3[] PROGMEM = {17,11,
8,8,
 2, 2, 2, 2, 2, 2, 2, 2,18,18,18,18,18,18,18,18, 2,
 2, 2, 2, 2, 2, 2, 2,19, 8, 8, 8, 8, 8, 8, 8, 8,20,
 2, 2, 2, 2, 2, 2, 2,19, 8, 8, 8, 8, 8, 8, 8, 8,20,
 2,18,18,18,18,18,18, 4, 8, 8, 8, 8, 5,21,21,21, 2,
19, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 2, 2, 2, 2, 2,
19, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 2, 2, 2, 2, 2, 2,  /////////112x64 pix res
19, 8, 8, 5,21,21,21, 6, 8, 8,20, 2, 2, 2, 2, 2, 2,
19, 8, 8,20, 2, 2, 2,19, 8, 8,20, 2, 2, 2, 2, 2, 2,
19,34, 8,20, 2, 2, 2,19, 8, 8,20, 2, 2, 2, 2, 2, 2,
 2,21,21, 2, 2, 2, 2,19, 8, 8,20, 2, 2, 2, 2, 2, 2,
 2, 2, 2, 2, 2, 2, 2,19,28,28,20, 2, 2, 2, 2, 2, 2};

const byte tilemap4[] PROGMEM = {17,11,
8,8,
 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
 2,18,18,18,18,18, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
19, 8, 8, 8,36, 8,20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
19, 8, 8, 8, 8, 8,20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  /////////112x64 pix res
19, 8, 8, 5,21,21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
19, 8, 8,20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
19,35, 8,20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
 2,21,21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2};

 const byte tilemap5[] PROGMEM = {12,11,
8,8,
45,45,45,45,45,45,45,45,45,45,45,45,
45,45,37,37,37,37,37,37,37,45,45,45,
45,41,61,61,61,61,66,62,61,40,45,45,
45,41, 8, 8, 8, 8,67,63, 8,40,45,45,
45,41, 8, 8, 8, 8, 8,64, 8,40,45,45,
45,41, 8, 8, 8, 8, 8, 8, 8,40,45,45,  /////////112x64 pix res
45,41, 8, 8, 8, 8, 8, 8, 8,40,45,45,
45,41, 8, 8, 8, 8, 8, 8, 8,40,45,45,
45,41, 8, 8, 8, 8, 8, 8, 8,40,45,45,
45,45,42,42,44, 8,43,42,42,45,45,45,
45,45,45,45,41,28,40,45,45,45,45,45,};

const byte bush[] PROGMEM = {B00101100,B01010010,B10001001,B01000010,B10010001,B01001010,B00100100,B01111110,};
const byte port_noir[] PROGMEM = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,};
const byte rock_terrain_master[] PROGMEM = {B00000010,B00010000,B01000000,B00000010,B00010000,B00001000,B01000001,B00000100,};
const byte rock_valley_ne[] PROGMEM = {B10100000,B11001001,B01110000,B00001100,B00000101,B00000100,B00000110,B00000011,};
const byte rock_valley_nw[] PROGMEM = {B00000101,B10010011,B00001110,B00110000,B10100000,B00100000,B01100000,B11000000,};
const byte rock_valley_se[] PROGMEM = {B00000011,B00000110,B00000100,B00000101,B00001100,B01110000,B11001001,B10100000,};
const byte rock_valley_sw[] PROGMEM = {B11000000,B01100000,B00100000,B10100000,B00110000,B00001110,B10010011,B00000101,};
const byte turtle_rock[] PROGMEM = {B01101100,B10110010,B11010001,B01010101,B01010010,B10011001,B10000001,B11111110,};
const byte void_tile[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte water_left_bottom[] PROGMEM = {B10001111,B10000000,B11110000,B10000000,B10001111,B10000000,B11110000,B11111111,};
const byte water_left_middle[] PROGMEM = {B10001111,B10000000,B11110000,B10000000,B10001111,B10000000,B11110000,B10000000,};
const byte water_left_top[] PROGMEM = {B11111111,B10000000,B11110000,B10001111,B10000000,B10000000,B11110000,B10000000,};
const byte water_right_bottom[] PROGMEM = {B1110001,B00000001,B0000111,B00000001,B11110001,B00000001,B00001111,B11111111,};
const byte water_right_middle[] PROGMEM = {B11110001,B00000001,B00001111,B00000001,B11110001,B00000001,B00001111,B00000001,};
const byte water_right_top[] PROGMEM = {B11111111,B00000001,B00001111,B00000001,B11110001,B00000001,B00001111,B00000001,};
const byte water_middle_bottom[] PROGMEM = {B11110000,B00000000,B00001111,B00000000,B11110000,B00000000,B00001111,B11111111,};
const byte water_middle_middle[] PROGMEM = {B11110000,B00000000,B00001111,B00000000,B11110000,B00000000,B00001111,B00000000,};
const byte water_middle_top[] PROGMEM = {B11111111,B00000000,B11110000,B00000000,B00001111,B00000000,B11110000,B00000000,};
const byte rock_s[] PROGMEM = {B00010010,B00000000,B01001000,B00000100,B00100001,B10001100,B01110010,B10000001,};
const byte rock_e[] PROGMEM = {B00000101,B00100010,B00001010,B10000010,B00100100,B00010100,B10000010,B00001001,};
const byte rock_n[] PROGMEM = {B10000001,B01110010,B10001100,B00100001,B00000100,B01001000,B00000000,B00010010,};
const byte rock_w[] PROGMEM = {B10100000,B01000100,B01010000,B01000001,B00100100,B00101000,B01000001,B10010000,};
const byte bush_left[] PROGMEM = {B00111011,B01000100,B10100000,B10010100,B01000010,B10000000,B10001000,B01110111,};
const byte bush_middle[] PROGMEM = {B10111101,B01000010,B00001000,B10000100,B00010000,B00100001,B10001000,B01110111,};
const byte bush_right[] PROGMEM = {B11011100,B00100010,B00000101,B00101001,B01000010,B00000001,B00010001,B11101110,};
const byte tree_base[] PROGMEM = {B01010100,B01000100,B10100010,B10001010,B10000010,B01101100,B00101000,B00101000,};
const byte tree_repeat[] PROGMEM = {B01010100,B01000100,B10000010,B10010010,B10101010,B01101100,B00101000,B01000100,};
const byte tree_top[] PROGMEM = {B00000000,B00000000,B00000000,B00010000,B00101000,B00101000,B00101000,B01000100,};
const byte exit_1[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_2[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_3[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_4[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_5[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte exit_6[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte cave_ladder[] PROGMEM = {B11000011,B11011011,B11000011,B11011011,B11000011,B11011011,B11000011,B11011011,};
const byte ladder[] PROGMEM = {B00111100,B00100100,B00111100,B00100100,B00111100,B00100100,B00111100,B00100100,};
const byte tombstone[] PROGMEM = {B00111100,B01000010,B10000001,B10111001,B10000001,B10101101,B10000001,B11111111,};
const byte WallB[] PROGMEM = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B11111111,};
const byte WallBL[] PROGMEM = {B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,B10000000,B11111111,};
const byte WallBR[] PROGMEM = {B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,B00000001,B11111111,};
const byte WallL[] PROGMEM = {B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,};
const byte WallR[] PROGMEM = {B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,};
const byte WallT[] PROGMEM = {B11111111,B00000000,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,};
const byte WallTL[] PROGMEM = {B11111111,B10000000,B10111111,B10111111,B10111111,B10111111,B10111111,B10111111,};
const byte WallTR[] PROGMEM = {B11111111,B00000001,B11111101,B11111101,B11111101,B11111101,B11111101,B11111101,};
const byte blackwall[] PROGMEM = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,};
const byte houseB1[] PROGMEM = {B01010011,B01010010,B01010010,B01010001,B11110000,B10011111,B10010010,B11111111,};
const byte houseB2[] PROGMEM = {B11111000,B01001000,B01001000,B11110000,B00000000,B11111111,B01001000,B11111111,};
const byte houseB3[] PROGMEM = {B00111100,B01100110,B11000011,B10011001,B10000001,B10000101,B10000001,B11111111,};
const byte houseB4[] PROGMEM = {B00011111,B00010010,B00010010,B00001111,B00000000,B11111111,B00010010,B11111111,};
const byte houseB5[] PROGMEM = {B11001010,B01001010,B01001010,B10001010,B00001111,B11111001,B01001001,B11111111,};
const byte houseT1[] PROGMEM = {B11111111,B01010010,B01011111,B01010000,B01010000,B11110001,B10010010,B11110010,};
const byte houseT2[] PROGMEM = {B11111111,B01001001,B11111111,B00000000,B00000000,B11110000,B01001000,B01001000,};
const byte houseT3[] PROGMEM = {B11111111,B00100100,B11111111,B00000000,B01111110,B10100101,B11111111,B00000000,};
const byte houseT4[] PROGMEM = {B11111111,B10010010,B11111111,B00000000,B00000000,B00001111,B00010010,B00010010,};
const byte houseT5[] PROGMEM = {B11111111,B01001010,B11111010,B00001010,B00001010,B10001111,B01001001,B01001111,};
const byte roof1[] PROGMEM = {B00000000,B00011111,B00110010,B00101101,B01000000,B01010010,B11101101,B10000000,};
const byte roof2[] PROGMEM = {B00000000,B11111111,B01001001,B10110110,B00000000,B01001001,B10110110,B00000000,};
const byte roof3[] PROGMEM = {B00000000,B11111111,B00100100,B11011011,B00000000,B00100100,B11011011,B00000000,};
const byte roof4[] PROGMEM = {B00000111,B11111100,B10010111,B01101100,B00000100,B10010111,B01101101,B00000000,};
const byte roof5[] PROGMEM = {B10000000,B11111000,B11001100,B10110100,B10000010,B11001010,B10110111,B00000001,};
const byte wallpaper[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,};
const byte bedbottom[] PROGMEM = {B10111101,B11000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte bedmid[] PROGMEM = {B11111111,B10000001,B10000001,B10000001,B10111101,B11000011,B10000001,B10000001,};
const byte bedtop[] PROGMEM = {B00000000,B00000000,B00000000,B00111100,B11000011,B10000001,B10111101,B10100101,};
const byte menu1[] PROGMEM = {88,48,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00010001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000,B10000000,B00100110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B01000000,B00101000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B01000000,B01001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B00100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B11111111,B11110000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B10000000,B00010000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11110000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10100000,B01001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B00100000,B00101000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B01000000,B00100110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B01000000,B00010001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000,B10000000,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte menu2[] PROGMEM = {88,48,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00011001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B10000000,B00010111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B10000000,B00110111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B11000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B00000000,B00001111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00001111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01000000,B00110111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B11000000,B00010111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B10000000,B00011001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B10000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte key[] PROGMEM = {16,17,B11111111,B11100000,B10000000,B00100000,B10000000,B00100000,B10000011,B10100000,B10000010,B10100000,B10010111,B10100000,B10101110,B00100000,B10011100,B00100000,B10011000,B00100000,B10000000,B00100000,B11111111,B11100000,B00000000,B00000000,B10000000,B00000000,B10100110,B10100000,B11001100,B11100000,B10100110,B00100000,B00000000,B11000000,};
const byte chest[] PROGMEM = {B00000000,B00000000,B01111110,B10000001,B11111111,B10011001,B10000001,B11111111,};
const byte bedsidebottom[] PROGMEM = {B10000001,B10111101,B10100101,B10111101,B10000001,B11111111,B00000000,B00000000,};
const byte bedsidetop[] PROGMEM = {B00000000,B00000000,B00000000,B11111111,B10000001,B10000001,B10000001,B11111111,};
const byte sox[] PROGMEM = {16,17,B11111111,B11100000,B10000000,B00100000,B10000111,B10100000,B10000100,B10100000,B10000111,B10100000,B10011100,B10100000,B10100000,B10100000,B10100001,B00100000,B10011110,B00100000,B10000000,B00100000,B11111111,B11100000,B00000000,B00000000,B01100000,B00000000,B10000100,B10100000,B00101010,B01000000,B11000100,B10100000,B00000000,B00000000,};




const byte *spritesheet[] = {bush,    //0
port_noir,                            //1
rock_terrain_master,                  //2
rock_valley_ne,                       //3
rock_valley_nw,                       //4
rock_valley_se,                       //5
rock_valley_sw,                       //6
turtle_rock,                          //7
void_tile,                            //8
water_left_bottom,                    //9
water_left_middle,                    //10
water_left_top,                       //11
water_right_bottom,                   //12
water_right_middle,                   //13
water_right_top,                      //14
water_middle_bottom,                  //15
water_middle_middle,                  //16
water_middle_top,                     //17
rock_s,                               //18
rock_e,                               //19
rock_w,                               //20
rock_n,                               //21
bush_left,                            //22
bush_middle,                          //23
bush_right,                           //24
tree_base,                            //25
tree_repeat,                          //26
tree_top,                             //27
exit_1,                               //28
exit_2,                               //29
exit_3,                               //30
exit_4,                               //31
exit_5,                               //32
exit_6,                               //33
cave_ladder,                          //34
ladder,                               //35
tombstone,                            //36
WallB,                                //37
WallBL,                               //38
WallBR,                               //39
WallL,                                //40
WallR,                                //41
WallT,                                //42
WallTL,                               //43
WallTR,                               //44
blackwall,                            //45
houseB1,                              //46
houseB2,                              //47
houseB3,                              //48
houseB4,                              //49
houseB5,                              //50
houseT1,                              //51
houseT2,                              //52
houseT3,                              //53
houseT4,                              //54
houseT5,                              //55
roof1,                                //56
roof2,                                //57
roof3,                                //58
roof4,                                //59
roof5,                                //60
wallpaper,                            //61
bedtop,                               //62
bedmid,                               //63
bedbottom,                            //64
chest,                                //65
bedsidetop,                           //66
bedsidebottom};                       //67

const byte backblack[] PROGMEM = {8,8,0x7E,0x42,0x42,0x3C,0x7E,0x3C,0x3C,0x24,};
const byte backgrey[] PROGMEM = {8,8,0x1,0x1,0x1,0xC1,0x81,0xC0,0x40,0x0,};
const byte frontblack[] PROGMEM = {8,8,0x7E,0x66,0x42,0x38,0x78,0x38,0x3C,0x24,};
const byte frontgrey[] PROGMEM = {8,8,0x80,0x80,0x80,0x87,0x87,0x7,0x2,0x0,};
const byte leftblack[] PROGMEM = {8,8,0x3E,0x32,0x22,0x1C,0x1C,0x1C,0x1C,0x14,};
const byte leftgrey[] PROGMEM = {8,8,0x0,0x0,0x0,0x60,0x60,0x60,0x40,0x0,};
const byte rightblack[] PROGMEM = {8,8,0x7C,0x4C,0x44,0x38,0x3C,0x38,0x38,0x28,};
const byte rightgrey[] PROGMEM = {8,8,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,};


  int player_x = 70;    //cant get these to center
  int player_y = 40;    //cant get these to center
  int player_direction = 0;
  int room = 1;
  int co_ords = 1;
  int menu_1 = 1;
  int key_1 = 1;
  int sox_1 = 1;

int x,y; ///if 0 player spite will not move, -50,50 no tilemap

//////CAMERA//////
int camerax = -20 ;
int cameray = -20 ;
int animTransition;


void setup() {
  gb.begin();
  gb.titleScreen(F("test"));
  gb.setFrameRate(62);  ////////for sprite
  gb.display.persistence = false;
//  animTransition=-6;
}

/////////PLAYER_MOVEMENT\\\\\\\\\

void loop() {
  if(gb.update()){
    if (gb.buttons.repeat(BTN_RIGHT,1));{x--;}
    if (gb.buttons.repeat(BTN_LEFT,1));{x++;}
    if (gb.buttons.repeat(BTN_DOWN,1));{y--;}
    if (gb.buttons.repeat(BTN_UP,1));{y++;}


//      if(player_x > 64 ) {camerax-=2; player_x -=2;}    //Y Scrolling  right
//else  if(player_x < 10 ){camerax+=2; player_x +=2;}   //Y Scrolling  left
 
//        if(player_y > 28 ) {cameray-=2; player_y -=2;}    //Y Scrolling  Down
//else  if(player_y < 10 ){cameray+=2; player_y +=2;}   //Y Scrolling  Up

//      if(cameray > 0)cameray=0;   
//else  if(cameray < -24) cameray = -24;
//      if(camerax > 0)camerax=0;   
//else  if(camerax < -36) camerax = -36;

if(player_x > 59 && camerax <  0 && camerax  > -52){player_x = 59;camerax--;}
else  if(player_x < 15 && camerax <  0 && camerax  > -52){player_x = 15;camerax++;}
else  if(player_x > 59 && camerax <= 0 && camerax >= -52)camerax--;
else  if(player_x < 15 && camerax <= 0 && camerax >= -52)camerax++;   
 
 
      if(player_y > 28 && cameray < 0 && cameray >  -40){player_y = 28;cameray--;}
else  if(player_y < 15 && cameray < 0 && cameray >  -40){player_y = 15;cameray++;}
else  if(player_y > 28 && cameray <= 0 && cameray >= -40)cameray--;
else  if(player_y < 15 && cameray <= 0 && cameray >= -40)cameray++; 

      if(camerax > 0)camerax= 0;
else  if(camerax < -52) camerax = -52;
 
      if(cameray > 0)cameray= 0;   
else  if(cameray < -40) cameray = -40;

  if(room == 1){
    gb.display.clear();
    gb.display.drawTilemap(camerax,cameray,tilemap1,spritesheet);} // draw the tilemap
 //  gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
  if(room == 2){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap2,spritesheet);} // draw the tilemap
 //   gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
  if(room == 3){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap3,spritesheet);} // draw the tilemap
//    gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
  if(room == 4){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap4,spritesheet);} // draw the tilemap
//    gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
  if(room == 5){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap5,spritesheet);} // draw the tilemap
//    gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );



//if(gb.buttons.repeat(BTN_A,1)){
//    gb.display.setColor(BLACK);
//    gb.display.fillRect(0,0,84,48);
//    gb.display.setColor(WHITE);
//    gb.display.fillRect(animTransition,animTransition,84-(2*animTransition),48-(2*animTransition));
//    gb.display.setColor(BLACK);
//    {animTransition = animTransition + 6;}
//  }
//  if(gb.buttons.repeat(BTN_B,1)){
//    gb.display.setColor(BLACK);
//    gb.display.fillRect(0,0,84,48);
//    gb.display.setColor(WHITE);
//    gb.display.fillRect(animTransition,animTransition,84-(2*animTransition),48-(2*animTransition));
//    gb.display.setColor(BLACK);
//    {animTransition = animTransition - 6;}
//  }

 if(gb.buttons.repeat(BTN_UP,1)){
       gb.display.setColor(BLACK);{
    gb.display.drawBitmap(player_x,player_y,backblack);
       }
    gb.display.setColor(GRAY);{
    gb.display.drawBitmap(player_x,player_y,backgrey);
    }
      player_direction = 1;
      player_y = player_y - 1;
      if(checkcolision())player_y++;  // ADD by Summoner123 - If have colision on the new position regreat one Pixel
      }

     
    if(player_y <= 0){
      player_y = 0;}



    if(gb.buttons.repeat(BTN_DOWN,1)){
      gb.display.setColor(BLACK);{
    gb.display.drawBitmap(player_x,player_y,frontblack);
    }
     gb.display.setColor(GRAY);{
    gb.display.drawBitmap(player_x,player_y,frontgrey);
    }
      player_direction = 2;
      player_y = player_y + 1;
      if(checkcolision())player_y--;  // ADD by Summoner123 - If have colision on the new position regreat one Pixel
      }
     
    if(player_y >= 40){
      player_y = 40;}
 


    if(gb.buttons.repeat(BTN_RIGHT,1)){
       gb.display.setColor(BLACK);{
    gb.display.drawBitmap(player_x,player_y,rightblack);
    }
     gb.display.setColor(GRAY);{
    gb.display.drawBitmap(player_x,player_y,rightgrey);
    }
      player_direction = 3;
      player_x = player_x + 1;
      if(checkcolision())player_x--;  // ADD by Summoner123 - If have colision on the new position regreat one Pixel
      }
     
     
    if(player_x >= 77){
      player_x = 77;}


    if(gb.buttons.repeat(BTN_LEFT,1)){
       gb.display.setColor(BLACK);{
    gb.display.drawBitmap(player_x,player_y,leftblack);
    }
    gb.display.setColor(GRAY);{
    gb.display.drawBitmap(player_x,player_y,leftgrey);
    }
      player_direction = 4;
      player_x = player_x - 1;
     
      if(checkcolision())player_x++;  // ADD by Summoner123 - If have colision on the new position regreat one Pixel
      }
     
    if(player_x <= -2){
      player_x = -2;}
     
      ////////////PLAYER DIRECTION/////////////

 if (player_direction == 1){
        gb.display.setColor(BLACK);{
        gb.display.drawBitmap(player_x,player_y,backblack);
      }
        gb.display.setColor(GRAY);{
        gb.display.drawBitmap(player_x,player_y,backgrey);
        }
 }
     
      else if (player_direction == 2){
        gb.display.setColor(BLACK);{
        gb.display.drawBitmap(player_x,player_y,frontblack);
      }
        gb.display.setColor(GRAY);{
        gb.display.drawBitmap(player_x,player_y,frontgrey);
        }
      }
else if (player_direction == 3){
        gb.display.setColor(BLACK);{
        gb.display.drawBitmap(player_x,player_y,rightblack);
      }
        gb.display.setColor(GRAY);{
        gb.display.drawBitmap(player_x,player_y,rightgrey);
        }
}
      else if (player_direction == 4){
        gb.display.setColor(BLACK);{
        gb.display.drawBitmap(player_x,player_y,leftblack);
      }
        gb.display.setColor(GRAY);{
        gb.display.drawBitmap(player_x,player_y,leftgrey);
        }
      }
      else {  gb.display.setColor(BLACK);{
        gb.display.drawBitmap(player_x,player_y,frontblack);
      }
        gb.display.setColor(GRAY);{
        gb.display.drawBitmap(player_x,player_y,frontgrey);
        }
      }
}
 

gb.display.setColor(BLACK);

if(gb.buttons.held(BTN_B,20)){
    co_ords = co_ords + 1;}

if(co_ords == 0){
  gb.display.cursorY = 12; gb.display.println( menu_1 );gb.display.println( menu_1 );}
if(co_ords == 1){
  gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );}
else if(co_ords == 2){
  gb.display.cursorY = 12; gb.display.println( camerax );gb.display.println( cameray );}
else if(co_ords >= 3){
    co_ords = 0;}


/////////////////////////////////////TEST MENU OVERLAY///////////////////////////////////////////////

if (gb.buttons.pressed(BTN_C)){
   menu_1 = menu_1 + 1;}

if(menu_1 == 3){
  gb.display.setColor(BLACK);
  gb.display.drawBitmap(0,0,menu1);
  gb.display.setColor(WHITE);
  gb.display.drawBitmap(0,0,menu2);
  gb.display.setColor(BLACK);}
// else if(menu_1 == 1){
//  gb.display.cursorY = 12; gb.display.println( camerax );gb.display.println( cameray );}
//if (gb.buttons.pressed(BTN_A)){
//    menu_1 = menu_1 + 1;}
else if(menu_1 >= 5){
    menu_1 = 1;}


if(menu_1 == 3 && key_1 == 3){
  gb.display.drawBitmap(8,8,key);
}

if(menu_1 == 3 && sox_1 == 3){
  gb.display.drawBitmap(22,8,sox);
}

//if (gb.buttons.pressed(BTN_C)){
//  key_1 = key_1 + 1;}
//  else if(key_1 >= 5){
//    key_1 = 1;
//}
////////////////////////////END TEST MENY//////////////////////////////////////
}




     bool checkcolision() // Transformed it into a function
   {
    uint16_t i;
     for(i=0; i < gb.display.numcolision + 1; i++)
   {
    if(gb.collideRectRect(player_x,player_y,8,8,gb.display.solid[i].x,gb.display.solid[i].y,8,8))///changed player_x,y back to 8
    {
        //  if(gb.display.solid[i].spritecol == void_tile); //Do nothing because it's floor - This line not needed
          if(gb.display.solid[i].spritecol == bush) return true;
else      if(gb.display.solid[i].spritecol == port_noir) return true;
else      if(gb.display.solid[i].spritecol == rock_terrain_master) {gb.popup(F(" ""Rock"" "),1); return true;} //Return True if character have touched the wall
else      if(gb.display.solid[i].spritecol == rock_valley_ne) return true;
else      if(gb.display.solid[i].spritecol == rock_valley_nw) return true;
else      if(gb.display.solid[i].spritecol == rock_valley_se) return true;
else      if(gb.display.solid[i].spritecol == rock_valley_sw) return true;
else      if(gb.display.solid[i].spritecol == turtle_rock) return true;
else      if(gb.display.solid[i].spritecol == water_left_bottom) return true;
else      if(gb.display.solid[i].spritecol == water_left_middle) return true;
else      if(gb.display.solid[i].spritecol == water_left_top) return true;
else      if(gb.display.solid[i].spritecol == water_right_bottom) return true;
else      if(gb.display.solid[i].spritecol == water_right_middle) return true;
else      if(gb.display.solid[i].spritecol == water_right_top) return true;
else      if(gb.display.solid[i].spritecol == water_middle_bottom) return true;
else      if(gb.display.solid[i].spritecol == water_middle_middle) return true;
else      if(gb.display.solid[i].spritecol == water_middle_top) return true;
else      if(gb.display.solid[i].spritecol == rock_n) return true;
else      if(gb.display.solid[i].spritecol == rock_e) return true;
else      if(gb.display.solid[i].spritecol == rock_s) return true;
else      if(gb.display.solid[i].spritecol == rock_w) return true;
else      if(gb.display.solid[i].spritecol == bush_left) return true;
else      if(gb.display.solid[i].spritecol == bush_middle) return true;
else      if(gb.display.solid[i].spritecol == bush_right) return true;
//else      if(gb.display.solid[i].spritecol == bush_left) {gb.popup(F(" ""A bush!!"" "),1); return true;}
//else      if(gb.display.solid[i].spritecol == bush_middle) {gb.popup(F(" ""A bush!!"" "),1); return true;}
//else      if(gb.display.solid[i].spritecol == bush_right) {gb.popup(F(" ""A bush!!"" "),1); return true;}
else      if(gb.display.solid[i].spritecol == tree_base) return true;
else      if(gb.display.solid[i].spritecol == tree_repeat) return true;
else      if(gb.display.solid[i].spritecol == tree_top) return true;
else      if((gb.display.solid[i].spritecol == exit_1) && room == 1) {room = 2; player_x = 68; camerax = -52;}
else      if((gb.display.solid[i].spritecol == exit_1) && room == 2) {room = 1; player_x = 68; camerax = -52;}
else      if((gb.display.solid[i].spritecol == exit_1) && room == 3) {room = 2; player_y = 9; cameray = 0;}
else      if((gb.display.solid[i].spritecol == exit_1) && room == 5) {room = 1; player_y = 27; player_x = 59; camerax = -45; cameray = -21;}
else      if((gb.display.solid[i].spritecol == exit_2) && room == 1) {room = 2; player_x = 9; camerax = 0;}
else      if((gb.display.solid[i].spritecol == exit_2) && room == 2) {room = 1; player_x = 9; camerax = 0;}
else      if((gb.display.solid[i].spritecol == exit_3) && room == 2) {room = 3; player_y = 32; cameray = -40;}
else      if(gb.display.solid[i].spritecol == exit_4) return true;
else      if(gb.display.solid[i].spritecol == exit_5) return true;
else      if(gb.display.solid[i].spritecol == exit_6) return true;
else      if((gb.display.solid[i].spritecol == cave_ladder) && room ==3) {room = 4; player_x = 16; player_y = 24; camerax = 0; cameray = -48;}
else      if((gb.display.solid[i].spritecol == ladder) && room == 4) {room  = 3; player_x = 16; player_y = 24; camerax = 0; cameray = -48;}
else      if((gb.display.solid[i].spritecol == tombstone) && gb.buttons.pressed(BTN_A)) {gb.popup(F(" ""Here Lies Dave!"" "),10); return true;}
else      if(gb.display.solid[i].spritecol == tombstone) return true;
else      if(gb.display.solid[i].spritecol == WallB) return true;
else      if(gb.display.solid[i].spritecol == WallBL) return true;
else      if(gb.display.solid[i].spritecol == WallBR) return true;
else      if(gb.display.solid[i].spritecol == WallT) return true;
else      if(gb.display.solid[i].spritecol == WallTL) return true;
else      if(gb.display.solid[i].spritecol == WallTR) return true;
else      if(gb.display.solid[i].spritecol == WallL) return true;
else      if(gb.display.solid[i].spritecol == WallR) return true;
else      if(gb.display.solid[i].spritecol == houseB1) return true;
else      if(gb.display.solid[i].spritecol == houseB2) return true;
else      if((gb.display.solid[i].spritecol == houseB3) && room == 1 && key_1 == 3) {room = 5; player_y = 32; player_x = 40; camerax = -0; cameray = -40;}
else      if((gb.display.solid[i].spritecol == houseB3) && room == 1 && key_1 == 1) return true;
else      if(gb.display.solid[i].spritecol == houseB4) return true;
else      if(gb.display.solid[i].spritecol == houseB5) return true;
else      if(gb.display.solid[i].spritecol == houseT1) return true;
else      if(gb.display.solid[i].spritecol == houseT2) return true;
else      if(gb.display.solid[i].spritecol == houseT3) return true;
else      if(gb.display.solid[i].spritecol == houseT4) return true;
else      if(gb.display.solid[i].spritecol == houseT5) return true;
else      if(gb.display.solid[i].spritecol == roof1) return true;
else      if(gb.display.solid[i].spritecol == roof2) return true;
else      if(gb.display.solid[i].spritecol == roof3) return true;
else      if(gb.display.solid[i].spritecol == roof4) return true;
else      if(gb.display.solid[i].spritecol == roof5) return true;
else      if((gb.display.solid[i].spritecol == bedtop) && gb.buttons.pressed(BTN_A)) {gb.popup(F(" ""Aaah! My bed"" "),10); return true;}
else      if(gb.display.solid[i].spritecol == bedtop) return true;
else      if((gb.display.solid[i].spritecol == bedmid) && gb.buttons.pressed(BTN_A)) {gb.popup(F(" ""Aaah! My bed"" "),10); return true;}
else      if(gb.display.solid[i].spritecol == bedmid) return true;
else      if((gb.display.solid[i].spritecol == bedbottom) && gb.buttons.pressed(BTN_A)) {gb.popup(F(" ""Aaah! My bed"" "),10);}
else      if((gb.display.solid[i].spritecol == chest) && room == 1 && gb.buttons.pressed(BTN_A) && key_1 == 1) {gb.popup(F(" ""You got key"" "),10); key_1 = 3; return true;}
else      if((gb.display.solid[i].spritecol == chest) && room == 1 && gb.buttons.pressed(BTN_A) && key_1 == 3) {gb.popup(F(" ""It's empty!!"" "),10); return true;}
else      if(gb.display.solid[i].spritecol == chest) return true;
else      if((gb.display.solid[i].spritecol == bedsidebottom) && room == 5 && gb.buttons.pressed(BTN_A) && sox_1 == 1) {gb.popup(F(" ""You got a sock?"" "),10); sox_1 = 3; return true;}
else      if((gb.display.solid[i].spritecol == bedsidebottom) && room == 5 && gb.buttons.pressed(BTN_A) && sox_1 == 3) {gb.popup(F(" ""It's empty!!"" "),10); return true;}
else      if(gb.display.solid[i].spritecol == bedsidetop) return true;
else      if(gb.display.solid[i].spritecol == bedsidebottom) return true;
 
      }
   }
    return false; // Return false if don't touch anything
  }     




And here it is my explanation to my inventory (although i will have to change the layout at some point if i'm including text on the screen due to size limitations of the Gamebuino's screen - I do have some ideas around how to achieve this)

First off we start with an integer for the menu/inventory
(I called mine Menu but you van call yours whatever you like)
Code: Select all
int menu_1 = 1;


This allows us to call the menu/inventory when we want

Next we create a Sprite for our menu
Code: Select all
const byte menu1[] PROGMEM = {88,48,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00010001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000,B10000000,B00100110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B01000000,B00101000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B01000000,B01001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B00100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B11111111,B11110000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B10000000,B00100010,B00000000,B10001000,B00000010,B00100000,B00001000,B10000000,B00010000,B10100000,B01010000,B11111111,B11100011,B11111111,B10001111,B11111110,B00111111,B11111000,B10000000,B00010000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00010000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11110000,B10100000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10100000,B01001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B00100000,B00101000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B01000000,B00100110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B01000000,B00010001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000,B10000000,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte menu2[] PROGMEM = {88,48,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00011001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B10000000,B00010111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B10000000,B00110111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B11000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B00000000,B00001111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B01111111,B11011101,B11111111,B01110111,B11111101,B11011111,B11110111,B01111111,B11101111,B01000000,B00101111,B00000000,B00011100,B00000000,B01110000,B00000001,B11000000,B00000111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11101111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00001111,B01000000,B00101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01000000,B00110111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B11000000,B00010111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B10000000,B00011001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B10000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};

menu.jpg
menu.jpg (3.35 KiB) Viewed 10990 times

menu2.jpg
menu2.jpg (3.37 KiB) Viewed 10990 times


We have to create a Sprite that displays both the black pixels and the white pixels - this is due to the default colour of the Gamebuino being transparent and if we do not add the white pixels we would be able to see through our menu and this looks terrible

then comes the code that actually displays/draws the menu
Code: Select all
if (gb.buttons.pressed(BTN_C)){
   menu_1 = menu_1 + 1;}

if(menu_1 == 3){
  gb.display.setColor(BLACK);
  gb.display.drawBitmap(0,0,menu1);
  gb.display.setColor(WHITE);
  gb.display.drawBitmap(0,0,menu2);
  gb.display.setColor(BLACK);}

else if(menu_1 >= 5){
    menu_1 = 1;}

If button C is pressed our menu_1 integer increases (for some reason this increases by 2 each time?? work in progress lol)
If its 1 it does nothing
if its 3 it displays both our BLACK and WHITE menu/inventory sprite
if it goes to 5 then it resets to 1

simply adding the above code would enable you to display a blank menu/inventory by pressing the C button on your Gamebuino whilst in the game

How do we add items to our menu/inventory I hear you ask...?

this was a little bit more tricky for me to work out, due to my lack of programming knowledge, but I did figure out a way and it works perfectly for me. doing this I was able to add an item to a chest and enable a trigger that allowed you to search the chest and pick up the item

first we need to add the item integer
Code: Select all
int key_1 = 1;


My item was a key - so I named it key

I created the item Sprite and added it to my code (this also includes the text

Code: Select all
const byte key[] PROGMEM = {16,17,B11111111,B11100000,B10000000,B00100000,B10000000,B00100000,B10000011,B10100000,B10000010,B10100000,B10010111,B10100000,B10101110,B00100000,B10011100,B00100000,B10011000,B00100000,B10000000,B00100000,B11111111,B11100000,B00000000,B00000000,B10000000,B00000000,B10100110,B10100000,B11001100,B11100000,B10100110,B00100000,B00000000,B11000000,};

key.jpg
key.jpg (922 Bytes) Viewed 10990 times


We then write the code to say if the menu is active (on screen) and the key is in possetion - display key in inventory (this is simply drawing the key sprite in top of our menu/inventory)

Code: Select all
if(menu_1 == 3 && key_1 == 3){
  gb.display.drawBitmap(8,8,key);
}


so how do we pick up the key from a location (say a chest?)
Code: Select all
else      if((gb.display.solid[i].spritecol == chest) && room == 1 && gb.buttons.pressed(BTN_A) && key_1 == 1) {gb.popup(F(" ""You got key"" "),10); key_1 = 3; return true;}
else      if((gb.display.solid[i].spritecol == chest) && room == 1 && gb.buttons.pressed(BTN_A) && key_1 == 3) {gb.popup(F(" ""It's empty!!"" "),10); return true;}
else      if(gb.display.solid[i].spritecol == chest) return true;


I'll break this down a bit to help understanding

if((gb.display.solid[i].spritecol == chest) && room == 1 && gb.buttons.pressed(BTN_A) && key_1 == 1) {gb.popup(F(" ""You got key"" "),10); key_1 = 3; return true;}

If collision is detected with our chest sprite AND we are in the correct TileMap AND we press button A - the key integer changes and we get a message saying "You got key"

if((gb.display.solid[i].spritecol == chest) && room == 1 && gb.buttons.pressed(BTN_A) && key_1 == 3) {gb.popup(F(" ""It's empty!!"" "),10); return true;}

If collision is detected with our chest sprite AND we are in the correct TileMap AND we press button A AND the key is already in possession - we get a message that tells us the chest is empty "It's empty!!"

if(gb.display.solid[i].spritecol == chest) return true;

This line gives our chest collision detection so we don't walk through it


add these all together and we get a nice little menu/inventory system that lets us do the following

Press C to show/hide menu/inventory
Collect item from location (say a chest)
add item to our menu/inventory

now we have the key - let's use it to access the house

in my code the house will not allow you to enter unless you have the key in your possession this was done in the following way

Code: Select all
else      if((gb.display.solid[i].spritecol == houseB3) && room == 1 && key_1 == 3) {room = 5; player_y = 32; player_x = 40; camerax = -0; cameray = -40;}
else      if((gb.display.solid[i].spritecol == houseB3) && room == 1 && key_1 == 1) return true;


if((gb.display.solid[i].spritecol == houseB3) && room == 1 && key_1 == 3) {room = 5; player_y = 32; player_x = 40; camerax = -0; cameray = -40;}

If collision is detected with the House Door AND we are in the correct TileMap AND key is in our possession change TileMap to inside house and set character/camera x/y co-ordinates

if((gb.display.solid[i].spritecol == houseB3) && room == 1 && key_1 == 1) return true;

If collision is detected with the House Door AND we are in the correct TileMap AND key is NOT our possession set collision detection so we don't walk through it but do nothing
(you could add some text that says "door is locked" or "key required" if wanted)


and that's it

I've added a HEX file to my original first post in this thread - so if you want to test it you can without having to compile it - there's also a hidden item (well it's not hidden very well but I've not mentioned it here) for you to find

I'll keep adding to this and updating you on what i find that could be useful to anyone that's interested

EDIT

I added some debugging tools to the uploaded HEX file and examples

Long press button B will scroll between showing player x/y co-ords, camera x/y co-ords and no co-ords, this should help if using my example to add your own tilemaps so you can see what your player/camera co-ords should be set to when changing tilemaps
User avatar
naed
 
Posts: 140
Joined: Tue May 31, 2016 3:18 pm

Re: Finally got it- connecting tilemaps & inventory (explain

Postby naed » Sun Oct 02, 2016 10:11 pm

Image

Just a quick update, I've implemented a text box that will allow me to narrate a story line, I'll update this post when i get a little more time

just a teaser for now ;)
User avatar
naed
 
Posts: 140
Joined: Tue May 31, 2016 3:18 pm

Re: Finally got it- connecting tilemaps & inventory (explain

Postby Duhjoker » Tue Oct 11, 2016 7:48 am

I'm stuck on my project so I've been looking at your code and ofcourse I have questions.

The magic that changes the screen if(room==1){.etc. will I need to write that function for every room?

Code: Select all
  if(room == 1){
     gb.display.clear();
    gb.display.drawTilemap(camerax,cameray,tilemap1,spritesheet);}
  if(room == 2){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap2,spritesheet);}
  if(room == 3){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap3,spritesheet);}
  if(room == 4){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap4,spritesheet);}
  if(room == 5){
    gb.display.clear();
   gb.display.drawTilemap(camerax,cameray,tilemap5,spritesheet);}
User avatar
Duhjoker
 
Posts: 446
Joined: Sat Jul 02, 2016 4:57 am
Location: Where Palm trees grow

Next

Return to Programming Questions

Who is online

Users browsing this forum: No registered users and 12 guests

cron