package sample.game.builder;

import java.util.ArrayList;

import library.core.model.CoreModel;
import library.core.object.CoreObjectFactory;
import library.core.system.CoreImageData;
import library.core.view.CoreView;
import sample.game.controller.TitleAiController;
import sample.game.main.AiGameTitle;
import sample.game.model.titleAi.NumberButton;
import sample.game.model.titleAi.NumberButton.TitleAiButtonType;
import sample.game.model.titleAi.TitleAiNextButton;

public class TitleAiBuilder {



	private CoreObjectFactory objectFactory;


	public TitleAiBuilder(CoreObjectFactory objectFactory){
		this.objectFactory=objectFactory;


	}


	public TitleAiController build(AiGameTitle palent,int boatNum,int ministerNum,int wolfNum,
			int cabbageNum,int cattleNum){


		TitleAiController controller=new TitleAiController(palent);


		//ロゴの表示
		CoreModel logo=new CoreModel(new CoreImageData("image/title/titlelogo.png"),
				640, 96, 1024, 144);
		objectFactory.create(logo, new CoreView(logo, 2));


		//背景表示
		CoreModel back=new CoreModel(new CoreImageData("image/back/title.png"),
				640, 369, 1280, 720);
		objectFactory.create(back, new CoreView(back, 0));
		controller.setBackScreen(back);

		//フェイド用のマスク
		CoreModel fadeMask=new CoreModel(new CoreImageData("image/game/screen/fadeMask.png"),
				640, 360, 1280, 720);
		fadeMask.setShowView(false);
		fadeMask.setAlpha(0);
		objectFactory.create(fadeMask, new CoreView(fadeMask, 20));
		controller.setFadeMask(fadeMask);


		back=new CoreModel(new CoreImageData("image/back/title.png"),
				-640, 369, 1280, 720);
		objectFactory.create(back, new CoreView(back, 0));
		controller.setBackScreen2(back);


		//左下の説明欄
		CoreModel titleExample=new CoreModel(new CoreImageData("image/title/ai/ui/titleExample.png"),
				350, 645, 528, 96);
		objectFactory.create(titleExample, new CoreView(titleExample, 2));

		//右下のゲームスタートボタン
		TitleAiNextButton button=new TitleAiNextButton(controller, new CoreImageData("image/title/ai/ui/ai_start.png"),
				920, 645, 532, 156);
		objectFactory.create(button, new CoreView(button, 2));
		controller.setNextButton(button);


		//ボタンの背景の表示
		CoreModel buttonBack=new CoreModel(new CoreImageData("image/title/ai/ui/ai_title.png"),
				640, 370, 1024, 416);
		objectFactory.create(buttonBack, new CoreView(buttonBack, 1));


		/////////////////////////////////////////////////////
		//ボタン
		/////////////////////////////////////////////////////
		ArrayList<NumberButton> numberButtons=new ArrayList<NumberButton>();

		//ボート
		CoreImageData off=new CoreImageData("image/title/ai/ui/ai_boat2_off.png");
		CoreImageData on=new CoreImageData("image/title/ai/ui/ai_boat2_on.png");

		NumberButton numbutton=new NumberButton(2==boatNum?true:false,controller,TitleAiButtonType.boat,
				2, on, off, 190, 262, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);


		off=new CoreImageData("image/title/ai/ui/ai_boat3_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_boat3_on.png");

		numbutton=new NumberButton(3==boatNum?true:false,controller,TitleAiButtonType.boat,
				3, on, off, 190, 384, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);


		off=new CoreImageData("image/title/ai/ui/ai_boat4_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_boat4_on.png");

		numbutton=new NumberButton(4==boatNum?true:false,controller,TitleAiButtonType.boat,
				4, on, off, 190, 517, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);

		/////////////////////////////////////////////////////////////////////////////////
		//みなみ
		off=new CoreImageData("image/title/ai/ui/ai_minami1_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_minami1_on.png");

		numbutton=new NumberButton(1==ministerNum?true:false,controller,TitleAiButtonType.minister,
				1, on, off, 416, 262, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);

		off=new CoreImageData("image/title/ai/ui/ai_minami2_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_minami2_on.png");

		numbutton=new NumberButton(2==ministerNum?true:false,controller,TitleAiButtonType.minister,
				2, on, off, 416, 384, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);


		off=new CoreImageData("image/title/ai/ui/ai_minami3_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_minami3_on.png");

		numbutton=new NumberButton(3==ministerNum?true:false,controller,TitleAiButtonType.minister,
				3, on, off, 416, 517, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);

		//////////////////////////////////////////////////////////////////////////////////
		//りんご
		off=new CoreImageData("image/title/ai/ui/ai_apple1_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_apple1_on.png");

		numbutton=new NumberButton(1==cabbageNum?true:false,controller,TitleAiButtonType.cabbage,
				1, on, off, 640, 262, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);

		off=new CoreImageData("image/title/ai/ui/ai_apple2_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_apple2_on.png");

		numbutton=new NumberButton(2==cabbageNum?true:false,controller,TitleAiButtonType.cabbage,
				2, on, off, 640, 384, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);


		off=new CoreImageData("image/title/ai/ui/ai_apple3_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_apple3_on.png");

		numbutton=new NumberButton(3==cabbageNum?true:false,controller,TitleAiButtonType.cabbage,
				3, on, off, 640, 517, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);


		//////////////////////////////////////////////////////////////////////////////////
		//なんぼう
		off=new CoreImageData("image/title/ai/ui/ai_nanbou1_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_nanbou1_on.png");

		numbutton=new NumberButton(1==cattleNum?true:false,controller,TitleAiButtonType.cattle,
				1, on, off, 865, 262, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);

		off=new CoreImageData("image/title/ai/ui/ai_nanbou2_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_nanbou2_on.png");

		numbutton=new NumberButton(2==cattleNum?true:false,controller,TitleAiButtonType.cattle,
				2, on, off, 865, 384, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);


		off=new CoreImageData("image/title/ai/ui/ai_nanbou3_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_nanbou3_on.png");

		numbutton=new NumberButton(3==cattleNum?true:false,controller,TitleAiButtonType.cattle,
				3, on, off, 865, 517, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);


		//////////////////////////////////////////////////////////////////////////////////
		//へび
		off=new CoreImageData("image/title/ai/ui/ai_snake1_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_snake1_on.png");

		numbutton=new NumberButton(1==wolfNum?true:false,controller,TitleAiButtonType.wolf,
				1, on, off, 1088, 262, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);

		off=new CoreImageData("image/title/ai/ui/ai_snake2_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_snake2_on.png");

		numbutton=new NumberButton(2==wolfNum?true:false,controller,TitleAiButtonType.wolf,
				2, on, off, 1088, 384, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);


		off=new CoreImageData("image/title/ai/ui/ai_snake3_off.png");
		on=new CoreImageData("image/title/ai/ui/ai_snake3_on.png");

		numbutton=new NumberButton(3==wolfNum?true:false,controller,TitleAiButtonType.wolf,
				3, on, off, 1088, 517, 96, 96);
		objectFactory.create(numbutton, new CoreView(numbutton, 4));
		numberButtons.add(numbutton);



		controller.setNumberButtons(numberButtons);


		controller.checkInitProduction();

		return controller;


	}
}
