blanc = Color.new(255,255,255)

function blit_player()
if statut_player1 == 1 or statut_player1 == 0 then ---Si il ne fait rien
if direction=="right" then
     ecran:blit(player.x+scrolling,player.y,player1,0,0,larg,hau)
else
     ecran:blit(player.x+scrolling,player.y,player1,larg*6,0,larg,hau)
end
end
----Droite
if statut_player1 == 2 then
ecran:blit(player.x+scrolling, player.y, player1, statut_right[compteur_statut].xs, statut_right[compteur_statut].y, statut_right[compteur_statut].lg, statut_right[compteur_statut].h)
compteur_statut = compteur_statut + 1
if compteur_statut > statut_right[1].n then
compteur_statut = 1
statut_player1 = 0
end 
end

----Gauche
if statut_player1 == 3 then
ecran:blit(player.x+scrolling, player.y, player1, statut_left[compteur_statut].xs, statut_left[compteur_statut].y, statut_left[compteur_statut].lg, statut_left[compteur_statut].h)
compteur_statut = compteur_statut + 1
if compteur_statut > statut_left[1].n then
compteur_statut = 1
statut_player1 = 0 
end 
end

-----haut
if statut_player1 == 4 then
ecran:blit(player.x+scrolling, player.y, player1, statut_up[compteur_statut].xs, statut_up[compteur_statut].y, statut_up[compteur_statut].lg, statut_up[compteur_statut].h)
compteur_statut = compteur_statut + 1
if compteur_statut > statut_up[1].n then
compteur_statut = 1
statut_player1 = 0 
end
end

-----tir
if statut_player1 == 5 and direction == "right"  then
if compteur_statut<2 then
ecran:blit(player.x+scrolling, player.y, player1, statut_sot[compteur_statut].xs, statut_sot[compteur_statut].y, statut_sot[compteur_statut].lg, statut_sot[compteur_statut].h)
compteur_statut = compteur_statut + 1
else
ecran:blit(player.x+scrolling, player.y, player1, statut_sot[1].xs, statut_sot[1].y, statut_sot[1].lg, statut_sot[1].h)
end
if compteur_statut > statut_sot[1].n then
compteur_statut = 1
statut_player1 = 0 
end
end


if statut_player1 == 0 then -- on remet en rester si derniere anim finie
statut_player1 = 1
end


for tempo = 1, 2000 do -- boucle pour temporiser sinon ?a va trop vite
max = tempo + 1
end
end

red=Color.new(255,0,0)
black=Color.new(0,0,0)
function barre_vie()
ecran:fillRect(6,6,108,20,blanc)
ecran:fillRect(9,9,102,14,black)
ecran:fillRect(10,10,player.health,12,red)
end



function game_createSol(x1,y1,l1)
if player.x>=x1 and player.x<=x1+l1 and player.y<y1 then
   gravity_max=(y1-hau)+1
end
ecran:blit(x1+scrolling,y1,sol,0,0,l1,sol:height())
end 


function menu_()
choix_menu={"Game Menu","Option","Quitter"}
selecteur=1
while true do
pad=Controls.read()
screen:clear()
screen:blit(0,0,ecran)
screen:blit((480-menu:width())/2,(272-menu:height())/2,menu)
for i=1,table.getn(choix_menu) do
if i~=selecteur then
screen:fontPrint(arial,(480-menu:width())/2+15,((272-menu:height())/2)+20+(i*32),choix_menu[i], black)
end
end
screen:fontPrint(arial,(480-menu:width())/2+15,((272-menu:height())/2)+20+(selecteur*32),choix_menu[selecteur], red)

if pad:triangle() then break end
if pad:up() and pad~=oldpad and selecteur>1 then selecteur=selecteur-1 end
if pad:down() and pad~=oldpad  and selecteur<table.getn(choix_menu) then selecteur=selecteur+1 end

screen.waitVblankStart()
screen.flip()
oldpad=pad
end

end

function menu_anim_clear()
animation_menu(10,55+selecteur*34,img_obj[4],jeton2)
end


menu_2=Image.load("ass.png")
function game_menu()
choix={"Jouer","Credit","Quitter"}
selecteur=1
xx=-200
while true do
pad=Controls.read()
screen:clear() 

screen:blit(0,0,menu_2)
xx=xx+4
if xx>470 then xx=-200 end
screen:fontPrint(arial,xx,30,"Wario Ware PSP", blanc)
for i=1,table.getn(choix) do
if i~=selecteur then
screen:fontPrint(arial, 30 ,75+i*34,choix[i], black)
end
end
screen:fontPrint(arial, 30 ,75+selecteur*34,choix[selecteur], red)
menu_anim_clear()
if pad:cross() and selecteur==1 then 
System.sleep(200)
map_choice() 
break
end
if pad:cross() and selecteur==2 then 
System.message("Wario ware PSP compilation ! ",0)
end

if pad:up() and pad~=oldpad and selecteur>1 then selecteur=selecteur-1 end
if pad:down() and pad~=oldpad  and selecteur<table.getn(choix) then selecteur=selecteur+1 end

screen.waitVblankStart()
screen.flip()
oldpad=pad
end

end

function map_choice()
choix2=System.listDirectory("jeu/minijeu/")
selecteur=1
table.remove(choix2,1)
table.remove(choix2,1)
while true do
pad=Controls.read()
screen:clear()
screen:blit(0,0,menu_2)
xx=xx+4
if xx>470 then xx=-200 end
screen:fontPrint(arial,xx,30,"Sonic for psp by jade2293",blanc)

for i=1,table.getn(choix2) do
if i~=selecteur then
screen:fontPrint(arial, 30 ,75+i*34,string.sub(choix2[i].name,0,string.len(choix2[i].name)-4), black)
end
end
screen:fontPrint(arial, 30 ,75+selecteur*34,string.sub(choix2[selecteur].name,0,string.len(choix2[selecteur].name)-4), red)
menu_anim_clear()
if pad:cross() and selecteur==1 then 
charg_()
load_map(choix2[selecteur].name)
break 
end

if pad:up() and selecteur>1 then selecteur=selecteur-1 end
if pad:down() and selecteur<table.getn(choix2) then selecteur=selecteur+1 end

screen.waitVblankStart()
screen.flip()
end

end




bullet = Image.createEmpty(4,2)
bullet:clear(black)
currentBullet = 0
direction = "right"
--Create Array for Bullets
BulletInfo = {}
for a = 1,5 do
BulletInfo[a] = { pic = bullet , firing = false, direction = "right", x = player.x + 32,y = player.y + 16 }
end

function bulletSetup()
--Increase the current bullet by one, or reset it to 1
if currentBullet < 5 then
currentBullet = currentBullet + 1
else
currentBullet = 1
end
if direction == "right" then
BulletInfo[currentBullet].x = player.x + 32
BulletInfo[currentBullet].y = player.y + 17
end
 
BulletInfo[currentBullet].direction = direction
BulletInfo[currentBullet].firing = true
end

function bulletFire()
for i = 1,5 do
if BulletInfo[i].firing == true then
if BulletInfo[i].direction == "right" then BulletInfo[i].x = BulletInfo[i].x + 10 end
ecran:blit(BulletInfo[i].x+scrolling,BulletInfo[i].y,BulletInfo[i].pic)
end
if BulletInfo[i].x < 0 or BulletInfo[i].x+scrolling > 480 or BulletInfo[i].y < 0 or BulletInfo[i].y > 272 then BulletInfo[i].firing = false end
end
end

function game_aff()
ecran:blit(0,0,sky)
map_()
end_game()
object:play()
bulletFire()
monstre:play()
blit_player()
plus_player()
chute_map()
blit_dialogue()
barre_vie()
game_scroling_dep()
messageBox(table.getn(dialogue_texte),dialogue_texte)
end


scrolling=0
function game_scroling_dep()
if (player.x+scrolling)>455 then
scrolling=scrolling-440
end
if (player.x+scrolling)<0 then
scrolling=scrolling+441
end
if scrolling>0 then scrolling=0 end
if scrolling<(-map_ll) then scrolling=(-map_ll) end
end
nb_jeton_j=0
function game_stat_write()
animation(130,2,img_obj[4],jeton2)
ecran:print(150,3,balle_nb,black)
ecran:blit(210,2,img_obj[1],0,0,large,haue)
ecran:print(230,3,nb_jeton_j,black)
end

function load_map()
gravity_max=272
player.gravity = gravity_max
player.y = gravity_max
player.x = 0
player.jumpspeed = 10
player.jumpstate = "sol"
charg_()
dofile("jeu/menu.lua" )
end



map_ll=480
function map_size(l)
map_ll=l
end

function map_sol_terre() 
ecran:blit(0,262,sol,0,0,480,10)
end

large2=img_obj[4]:width()/4
haue2=img_obj[4]:height()
jeton2 = {}--2
jeton2[1] = {xs=large2*1, y=0, lg=large2, h=haue2, n=3}
jeton2[2] = {xs=large2*2, y=0, lg=large2, h=haue2, n=3}
jeton2[3] = {xs=large2*3, y=0, lg=large2, h=haue2, n=3}


compteur_anime2=1
function animation(x,y,image,tablee)
ecran:blit(x,y,image,tablee[compteur_anime2].xs, tablee[compteur_anime2].y, tablee[compteur_anime2].lg, tablee[compteur_anime2].h)
compteur_anime2 = compteur_anime2 + 1
if compteur_anime2 > tablee[1].n then
compteur_anime2 = 1
end
end


enemie={}
function create_enemie(x1,l1,vitesse1)
enemie[table.getn(enemie)+1]={x2=x1,x=math.random(x1,x1+l1),l=l1,y=-64,vitesse=vitesse1}
end

boulet_chute1=Image.load("game/bombe.png")
function chute_map()
for i=1,table.getn(enemie) do
enemie[i].y=enemie[i].y+enemie[i].vitesse
if enemie[i].y>480 then 
enemie[i].y=-64 
enemie[i].x=math.random(enemie[i].x2,enemie[i].x2+enemie[i].l)
end
ecran:blit(enemie[i].x+scrolling,enemie[i].y,boulet_chute1)
if (player.x)>enemie[i].x and (player.x)<enemie[i].x+60 and (player.y)>enemie[i].y and player.y<enemie[i].y+64 then 
 player.health=0
end
end
end


gameover=Image.load("game/gameover.png")
function game_over()
if player.health<=0 then
while true do
pad=Controls.read()
screen:clear()
screen:blit(0,0,ecran)
screen:blit((480-gameover:width())/2,(272-gameover:height())/2,gameover)
if pad:triangle() then game_menu() end
screen.waitVblankStart()
screen.flip()
end
end
end


dialogue_open=false
function init_dialogue(texte)
dialogue_open=true
bulle_d:clear()
bulle_d:blit(0,0,bulle_d2)
bulle_d:print(2,3,string.sub(texte,0,11))
bulle_d:print(2,14,string.sub(texte,12,23))
end

bulle_d=Image.load("game/dialogue.png")
bulle_d2=bulle_d
function blit_dialogue()
if dialogue_open then
ecran:blit((player.x+scrolling)-50,player.y-40,bulle_d)
end
end

function close_dialogue()
dialogue_open=false
end

compteur_anime2=1
function animation_menu(x,y,image,tablee)
screen:blit(x,y,image,tablee[compteur_anime2].xs, tablee[compteur_anime2].y, tablee[compteur_anime2].lg, tablee[compteur_anime2].h)
compteur_anime2 = compteur_anime2 + 1
if compteur_anime2 > tablee[1].n then
compteur_anime2 = 1
end
end


end_game_pan=Image.load("jetons/next.png")
function end_game()
ecran:blit((map_ll-100)+scrolling,262-100,end_game_pan)
if player.x>(map_ll-60) then
save_()
map_choice()
end
end

function save_()
file=io.open("save/partie.bin","w")
file:write("balle_nb="..balle_nb)
file:write("\nnb_jeton_j="..nb_jeton_j)
file:close()
end

function charg_()
dofile("SAVE/partie.bin")
gravity_max=(262-hau)+1
player.gravity = gravity_max
player.y = gravity_max
player.x = -5
player.health=100
end
