
var HorizonalScrollStageClass = function()
{
	HorizonalScrollStageClass.base.apply(this, []);

	this.scrollX = 0;
	this.scrollMaxX =1280 - 640;	//ステージの横の長さ-640
	
}.extend(GameStage, {
	className: "HorizonalScrollStageClass",
	timerTick: function(){

		HorizonalScrollStageClass.base.prototype.timerTick.call(this);
		if(this.userControlledCharacter){
			//キャラクターを追尾する
			this.scrollTo(this.getScrollLocation());
		}
	},
	
	// 子ステージで、操作中キャラ以外を中心に持ってきたいときはこの関数をオーバーライドする
	getScrollLocation: function(){
		var pos = 0;
		if(this.userControlledCharacter){
			return this.userControlledCharacter.origin.x - 320;
		}
		
		return 0;
	},
	draw: function(){
		this.drawBackground();
		this.drawAsPoint(this.scrollX, 0);
		if(this.waterLevel){
			this.drawWater();
		}
	},
	drawBackground: function(){
		if(this.background){
			//画面位置に合わせて画像をスクロール表示する
			var width = this.background.width;
			var pos = -((this.scrollX / 2) % width);
			for(;pos < this.background.width; pos += width)
			{
				this.mainContext.drawImage(this.background, pos, 0, this.background.width, this.background.height);
			}
		} else{
			//キャンバスを全消去
			this.mainContext.clearRect(0, 0, this.mainCanvas.width, this.mainCanvas.height);
		}
		if(this.collisionMapContext){
			this.collisionMapContext.clearRect(0, 0, this.collisionMapCanvas.width, this.collisionMapCanvas.height);
		}
	},
	
	//スクロールしたいときに、tick毎に呼ぶ。
	scrollTo: function(x){
		this.scrollX += (x - this.scrollX) / 7;
		if(this.scrollX > this.scrollMaxX){
			this.scrollX = this.scrollMaxX;
		}
		if(this.scrollX < 0){
			this.scrollX = 0;
		}
	}
});

