#include <io.h>
#include <system.h>
#include <stdio.h>

#define IOWR_SRAM_DATA(base, offset, data) \
  IOWR_16DIRECT(base, (offset) * 2, data)

// 60* 80 player 13 2
// 60 * 80 boss 15 0
// 30 * 14 bullet14 1


int main()
{

    int xPlayerCoordinate;
    int yPlayerCoordinate;
    int xBossCoordinate;
    int yBossCoordinate;
    int xBulletCoordinate;
    int yBulletCoordinate;
    int xSpeed;
    int ySpeed;
    int xBossSpeed;
    int yBossSpeed;
    int xLowBound;
    int xHighBound;
    int yLowBound;
    int yHighBound;
    int counter=10000;
    int deadFlag;

	int i = 0;
    printf("software works \n");

    //IOWR_VGA_SPEED(VGA_BASE, 0x0040);

    xPlayerCoordinate = 40;
    yPlayerCoordinate = 50;
    xBossCoordinate = 600;
    yBossCoordinate = 200;
    xBulletCoordinate = 600;
    yBulletCoordinate = 480;
    xSpeed = 2;
    xBossSpeed = 1;
    ySpeed = -2;
    yBossSpeed = 5;
    xLowBound = 0;
    xHighBound = 640;
    yLowBound = 0;
    yHighBound = 480;
    deadFlag = 0;


    for(;;){
    	counter--;

    	if (counter ==0)
    	{
    		counter=10000;

        if(yPlayerCoordinate - yLowBound <= 10){
            ySpeed = - ySpeed;
        }
        if(yHighBound - yPlayerCoordinate <= 80){
            ySpeed = - ySpeed;
        }

        if(yBossCoordinate - yLowBound <= 10){
        	yBossSpeed = -yBossSpeed;
        }
        if(yHighBound - yBossCoordinate <= 80){
        	yBossSpeed = -yBossSpeed;
        }



        if(xBulletCoordinate == 600){
        	xBulletCoordinate = 80;
        	yBulletCoordinate = yPlayerCoordinate + 50;
        }

        xBossCoordinate = xBossCoordinate - xBossSpeed;
        yBossCoordinate = yBossCoordinate + yBossSpeed;


        xBulletCoordinate = xBulletCoordinate + xSpeed;
        yPlayerCoordinate = yPlayerCoordinate + ySpeed;



        IOWR_SRAM_DATA(VGA_BASE, 2, xPlayerCoordinate);
        IOWR_SRAM_DATA(VGA_BASE, 13, yPlayerCoordinate);
        IOWR_SRAM_DATA(VGA_BASE, 1, xBulletCoordinate);
        IOWR_SRAM_DATA(VGA_BASE, 14, yBulletCoordinate);
        IOWR_SRAM_DATA(VGA_BASE, 0, xBossCoordinate);
        IOWR_SRAM_DATA(VGA_BASE, 15, yBossCoordinate);

//        if( (abs(xPlayerCoordinate - xBossCoordinate) <= 60) && (abs(yPlayerCoordinate - yBossCoordinate) <= 80)){
//
//        	deadFlag = 1;
//        	for(i = 0;i < 5; i++){
//
//        	    printf("collision happens \n");
//                IOWR_SRAM_DATA(VGA_BASE, 2, 1000);
//                IOWR_SRAM_DATA(VGA_BASE, 13, 800);
//
//        	}
//        }

        if(DeadFlag == 1){
        	DeadFlag = 0;
        }else if(DeadFlag == 0){
        	DeadFlag = 1;
        }





    	}
    }


    return 0;
}
