package hello;

import javax.microedition.lcdui.Graphics;

public class Tutorial
{
    private mySprite characterAppears;
    private mySprite badGuys;
    private mySprite killThem;
    private mySprite moveHim;
    private mySprite spaceKey;
    private mySprite pressThe;

    private Building tutorialBuildings;

    private GoodGuy tutorialSoldier;
    private BadGuy tutorialHipsters;
    private Weapon tutorialBullet;

    private int tutorialCounter = 0;
    final int NUMBEROFBADGUYS = 4;
    private boolean finished = false;

    public Tutorial(Canvas canv)
    {
        characterAppears = new mySprite("This is....png", 125, 10);
        badGuys = new mySprite("bad guys....png", 145, 10);
        killThem = new mySprite("kill them....png", 71, 8);
        moveHim = new mySprite("MoveAround.png", 165, 23);
        spaceKey = new mySprite("space key....png", 152, 23);
        pressThe = new mySprite("Proceed.png", 164, 23);

        tutorialSoldier = new GoodGuy();
        tutorialHipsters = new BadGuy(NUMBEROFBADGUYS);
        tutorialBullet = new Weapon(0);
    }

    public void runTutorial(Canvas canv, Graphics g)
    {

        if(tutorialBuildings == null)
        {
            tutorialBuildings = new Building(canv, g);
         //   System.out.println("tutorial Buildings created");
        }

        if(tutorialBuildings != null)
        {
            tutorialBuildings.draw(g, null);
        //    System.out.println("Is drawn");
        }
        else
            System.out.println("Tutorial Buildings null");

        tutorialSoldier.update(canv);

        for(int i = 0; i < NUMBEROFBADGUYS; i++)
	{
           tutorialHipsters.update(canv);
	}

	if(tutorialCounter < 100 && tutorialCounter > 0)
	{
            characterAppears.setActive();
            tutorialSoldier.getSprite().setActive();

            tutorialSoldier.getSprite().setLocation(5, 250);
            int loc = 100;

            for(int i = 0; i < NUMBEROFBADGUYS; i++)
            {
                tutorialHipsters.getSprite(i).setActive();
                tutorialHipsters.getSprite(i).setLocation(loc, 43);
                loc += 32;
            }

            characterAppears.setLocation(tutorialSoldier.getSprite().getPosx(), (tutorialSoldier.getSprite().getPosy()));
            characterAppears.draw(g);
	}
	else if (tutorialCounter < 500 && tutorialCounter > 100)
	{
            characterAppears.setInactive();
            moveHim.setActive();

            moveHim.setLocation(tutorialSoldier.getSprite().getPosx(), tutorialSoldier.getSprite().getPosy());

            if(tutorialSoldier.getSprite().getPosx() >= 176)
            {
                tutorialSoldier.getSprite().move(0.0, -0.6);
                //System.out.println("Moving up.");
                if(tutorialSoldier.getSprite().getPosx() < 176)
                    tutorialSoldier.getSprite().setPosx(176);
                else if(tutorialSoldier.getSprite().getPosx() > 176)
                    tutorialSoldier.getSprite().setPosx(176);
            }
            else
            {
                System.out.println(tutorialCounter);
                tutorialSoldier.getSprite().move(0.6, 0.0);
                //System.out.println("Moving right.");
                /*if(tutorialSoldier.getSprite().getPosy() < 208)
                    tutorialSoldier.getSprite().setPosy(208);
                else if(tutorialSoldier.getSprite().getPosy() > 208)
                    tutorialSoldier.getSprite().setPosy(208);*/
            }
            moveHim.draw(g);
  	}
	else if (tutorialCounter < 600 && tutorialCounter > 500)
	{
            moveHim.setInactive();
            spaceKey.setActive();
            spaceKey.setLocation(tutorialSoldier.getSprite().getPosx(), tutorialSoldier.getSprite().getPosy());

            tutorialSoldier.getSprite().move(0.0, -0.6);
            /*
            if(tutorialSoldier.getSprite().getPosx() < 80)
                tutorialSoldier.getSprite().setPosx(215);
            else if(tutorialSoldier.getSprite().getPosx() > 80)
                tutorialSoldier.getSprite().setPosx(215);
*/
            if(tutorialCounter == 501)
            {
		tutorialBullet.getSprite().setLocation(tutorialSoldier.getSprite().getPosx(), tutorialSoldier.getSprite().getPosy()- 1.0);
                tutorialBullet.getSprite().setActive();
                tutorialBullet.fire(0);
            }

            tutorialBullet.getSprite().update(canv);
            tutorialBullet.getSprite().draw(g);
            spaceKey.draw(g);
        }
        else if (tutorialCounter < 700 && tutorialCounter > 600)
        {
            if(tutorialBullet.getSprite().getPosy() > canv.getWidth())
                tutorialBullet.getSprite().setInactive();
            tutorialSoldier.getSprite().setVelocity(0.0, 0.0);
            spaceKey.setInactive();
            badGuys.setActive();
            badGuys.setLocation(tutorialHipsters.getSprite(1).getPosx(), tutorialHipsters.getSprite(2).getPosy() + 20);
            badGuys.draw(g);
           // tutorialHipsters.getSprite(2).draw(g);
        }
        else if (tutorialCounter < 800 && tutorialCounter > 700)
        {
            tutorialSoldier.getSprite().setVelocity(0.0, 0.0);
            badGuys.setInactive();
            killThem.setActive();
            killThem.setLocation(tutorialHipsters.getSprite(2).getPosx() + 10, tutorialHipsters.getSprite(2).getPosy() + 10);
            killThem.draw(g);
        }
        else if(tutorialCounter > 800)
        {
            killThem.setInactive();
            pressThe.setActive();
            pressThe.setPosx(50);
            pressThe.setPosy(50);
            pressThe.draw(g);
            finished = true;
        }

        for(int i = 0; i < NUMBEROFBADGUYS; i++)
        {
            tutorialHipsters.draw(g, i);
        }

        tutorialSoldier.draw(g);

        tutorialCounter++;
    }

    public boolean isFinished()
    {
        return finished;
    }

    public int getTutorialBadGuys()
    {
        return NUMBEROFBADGUYS;
    }
}
