[Game] overlay

start building this partly asleep so its realy basic and badly designed
its a basic 3 layer sprite editor, not much else going on curently its set to 32x32 sprites looking into setting it up with dynamic sprite sizes

#include "Pokitto.h"

Pokitto::Core game;
const uint8_t Spritex = 32;
const uint8_t Spritey = 32;
uint8_t sprite[(Spritex/2)*Spritey+2];// = new uint8_t[(Spritex/2)*Spritey+2];

uint8_t layer1[(Spritex/2)*Spritey+2];// = new uint8_t[(Spritex/2)*Spritey+2];

uint8_t layer2[(Spritex/2)*Spritey+2];//= new uint8_t[(Spritex/2)*Spritey+2];

uint8_t layer3[(Spritex/2)*Spritey+2]; //= new uint8_t[(Spritex/2)*Spritey+2];


uint16_t pallet[16] ={
    0x0,
    0x194a,
    0x792a,
    0x42a,
    0xaa86,
    0x5aa9,
    0xc618,
    0xff9d,
    0xf809,
    0xfd00,
    0xffe4,
    0x72a,
    0x2d7f,
    0x83b3,
    0xfbb5,
    0xfe75
};
uint8_t selector =0;
uint8_t activelayer =1;
uint8_t pixelX = 10;
uint8_t pixelY = 10;
bool isMenu = false;
void setActiveLayer(){
    
    switch (activelayer)
    {
        case 1:
            game.display.setFrameBufferTo(layer1+2);
         
            break;
        case 2:
             game.display.setFrameBufferTo(layer2+2);
           
            break;
        case 3:
             game.display.setFrameBufferTo(layer3+2);
             
            break;
        default:
            game.display.setFrameBufferTo(layer1+2);
            break;
    }
    
    
}
void drawSelector(uint16_t col){
    game.display.directRectangle(selector*13+1,163,(selector*13)+12,163,col);
    game.display.directRectangle(selector*13+1,176,(selector*13)+12,175,col);
    game.display.directRectangle(selector*13,164,selector*13+1,174,col);
    game.display.directRectangle((selector*13)+12,164,(selector*13)+13,174,col);
}
int main () {
    game.begin();
    game.display.load565Palette(pallet);
    game.display.directcolor = 0xFFFF;

    sprite[0] = Spritex;
    sprite[1] = Spritey;
    layer1[0] = Spritex;
    layer1[1] = Spritey;
    layer2[0] = Spritex;
    layer2[1] = Spritey;
    layer3[0] = Spritex;
    layer3[1] = Spritey;
    game.display.width = Spritex;
    game.display.height = Spritey;
    game.display.persistence = true;
    game.display.setInvisibleColor(0);



    //test
    game.display.setFrameBufferTo(layer1+2);
     game.display.setColor(9);
        game.display.drawRectangle(1,1,15,15);
            game.display.setColor(3);
            game.display.drawCircle(1,1,4);

            game.display.setFrameBufferTo(layer2+2);
            game.display.setColor(6);
            game.display.drawCircle(16,1,4);

            game.display.setFrameBufferTo(layer3+2);
            game.display.drawRectangle(2,2,15,15);

    while (game.isRunning()) {
        
        if (game.update(true)) {/*
            game.display.print("Hello World!");
            game.display.screenbuffer[53] = 110;
            game.display.screenbuffer[54] = 87;
            game.display.directBitmap(100,0,game.display.screenbuffer+53,4,0);
            */
           // game.display.directRectangle(10,10,50,100,pallet[5]);
            
            game.display.setInvisibleColor(0);
            setActiveLayer();
            //game.display.print("Hello World!");
           



            game.display.setFrameBufferTo(sprite+2);
            game.display.drawBitmap(0,0,layer1);
            game.display.drawBitmap(0,0,layer2);
            game.display.drawBitmap(1,1,layer3);


            game.display.setInvisibleColor(17);
            game.display.directBitmap(1,1,sprite,4,2);
            game.display.setInvisibleColor(0);
            game.display.directPixel(pixelX*2+1,pixelY*2,0xFFFF);
            game.display.directPixel(pixelX*2+2,pixelY*2,0xFFFF);
            game.display.directPixel(pixelX*2+1,pixelY*2+3,0xFFFF);
            game.display.directPixel(pixelX*2+2,pixelY*2+3,0xFFFF);
            game.display.directPixel(pixelX*2,pixelY*2+1,0xFFFF);
            game.display.directPixel(pixelX*2,pixelY*2+2,0xFFFF);
            game.display.directPixel(pixelX*2+3,pixelY*2+1,0xFFFF);
            game.display.directPixel(pixelX*2+3,pixelY*2+2,0xFFFF);

            if(activelayer == 1){
                game.display.directRectangle(1,69,64,69,0xFFFF);
            }else game.display.directRectangle(1,69,64,69,0);
            game.display.directBitmap(1,70,layer1,4,2);
            if(activelayer == 2){
                game.display.directRectangle(65,69,65+64,69,0xFFFF);
            }else game.display.directRectangle(65,69,65+64,69,0);
            game.display.directBitmap(65,70,layer2,4,2);
            if(activelayer == 3){
                game.display.directRectangle(132,69,132+64,69,0xFFFF);
            }else game.display.directRectangle(132,69,132+64,69,0);
            game.display.directBitmap(132,70,layer3,4,2);

            if (game.buttons.pressed(BTN_C)){
                game.display.directRectangle((selector*13)+2,155,(selector*13)+12,163,0);
                isMenu = !isMenu;
            }
            //game.display.directChar((selector*13)+1,150,54);
            if(isMenu){
                if (game.buttons.pressed(BTN_A)){
                    activelayer += 1;
                    activelayer = activelayer%3;
                }
                if (game.buttons.pressed(BTN_B)){
                    activelayer -=1;
                    activelayer = activelayer%3;
                }
                if (game.buttons.repeat(BTN_RIGHT,5)){
                    game.display.directRectangle((selector*13)+2,155,(selector*13)+12,163,0);
                    drawSelector(0);
                    selector += 1;
                    selector = selector%16;
                }
                if (game.buttons.repeat(BTN_LEFT,5)){
                    game.display.directRectangle((selector*13)+2,155,(selector*13)+12,163,0);
                    drawSelector(0);
                    selector -= 1;
                    selector = selector%16;
                }
                game.display.directChar((selector*13)+2,155,86);
            }else{
                if (game.buttons.repeat(BTN_RIGHT,5)){
                    pixelX++;
                    pixelX = pixelX%Spritex;
                }
                if (game.buttons.repeat(BTN_LEFT,5)){
                    pixelX--;
                    pixelX = pixelX%Spritex;
                }
                if (game.buttons.repeat(BTN_UP,5)){
                    pixelY --;
                    pixelY = pixelY%Spritey;
                }
                if (game.buttons.repeat(BTN_DOWN,5)){
                    pixelY ++;
                    pixelY = pixelY%Spritey;
                }
                if (game.buttons.pressed(BTN_A)){
                    setActiveLayer();
                    game.display.drawPixel(pixelX,pixelY,selector);
                }
            }       
            // pallet
            for(int i = 0; i < 16; i++)game.display.directRectangle(i*13+1,164,(i*13)+12,174,pallet[i]);
            drawSelector(0xFFFF);
        }
    }

}

overlay_test.bin (38.0 KB)

3 Likes