#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#include "sprites.h"
#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
int x = 100;
int y = 30;
void drawOneSprite(int x, int y, uint16_t* spr, int width, int height) {
  int length=width*height;
  tft.startWrite();
  tft.setAddrWindow(x,y,width,height);
  for (int n=0; n<length; n++) {
    tft.SPI_WRITE16( pgm_read_word( &spr[n] ) ); 
  }
  tft.endWrite(); 
}
void clearOneSprite(int x, int y, int width, int height, unsigned int fon) {
  int length=width*height;
  tft.startWrite();
  tft.setAddrWindow(x,y,width,height);
  for (int n=0; n<length; n++) {
    tft.SPI_WRITE16( fon ); 
  }
  tft.endWrite(); 
}
void init_mas(){
  for (int i=0; i<10; i++) {
    mas[i].x = 30 + i*15;
    mas[i].y = 50;
    mas[i].w = SPRITE_W;
    mas[i].h = SPRITE_H;
  }
}
void setup() {
  tft.begin();
  tft.setRotation(1);
  tft.println("SpaceInvaders");
  init_mas();
  for (int n=0; n<50; n++) {
    for (int i=0; i<10; i++) {
      clearOneSprite(mas[i].x, mas[i].y, mas[i].w, mas[i].h, F );
      mas[i].y += random(10)-5;
      mas[i].x += random(10)-5;
      drawOneSprite(mas[i].x, mas[i].y, sprite, mas[i].w, mas[i].h );
    }
    delay(20);
  }
}
void show_prite(){
  //tft.drawRGBBitmap(x,y, sprite, SPRITE_W, SPRITE_H );
  drawOneSprite(x,y, sprite, SPRITE_W, SPRITE_H );
}
void loop() {
  // put your main code here, to run repeatedly:
}