BlockClass.as

package {
	import flash.utils.*;
 
	public class BlockClass{
 
 
		public var on_flag:Boolean = false; //実態があるかどうかフラグ
		public var visible_flg:Boolean = false; //表示されるかどうかフラグ
		public var minus_flg:Boolean = false; //反転ブロックフラグ
		public var sys_flag:Boolean = false; //灰色ブロックフラグ
 
		public var ChainBreak_flg:Boolean = false; //ライン巻き込み可能フラグ
		public var NextBreak_flg:Boolean = false; //ライン巻き込み予定フラグ
		public var Metal_flg:Boolean = false; //メタル属性フラグ
		public var Crystal_flg:Boolean = false; //クリスタル属性フラグ
 
		public var fream_counter:uint = 1; //表示されるブロックの状態
		public var color_number:uint = 0; //色の番号
 
		public var type_number:uint = 0; //システム上の連結タイプ
		public var sys_number:uint = 0; //システム上の分類
 
		public var HP:Number = 100; //耐久値
		public var MAXHP:Number = 100; //最大耐久値
		public var Weight:Number = 1; //重さ
		public var FaillNumber:int = 0; //連鎖時の落下タイムラグ格納
 
		public var x:Number = 0; //X座標
		public var y:Number = 0; //Y座標
 
		//コンストラクタ-------------------------------------------
		public function BlockClass() {
 
		}
		//リセット-------------------------------------------
		public function reset():void{
			on_flag = false;
			visible_flg = false;
			minus_flg = false;
			sys_flag = false;
 
			ChainBreak_flg = false;
			NextBreak_flg = false;
			Metal_flg = false;
			Crystal_flg = false;
 
			fream_counter = 0;
			color_number = 1;
 
			type_number = 0;
			sys_number = 0;
 
			HP = 0;
			MAXHP = 0;
			Weight = 0;
			FaillNumber = 0;
 
			x = 0;
			y = 0;
		}
		//自分にコピーを取る-------------------------------------------
		public function setCopy(fromBlockClass:BlockClass):void{
			on_flag = fromBlockClass.on_flag;
			visible_flg = fromBlockClass.visible_flg;
			minus_flg = fromBlockClass.minus_flg;
			sys_flag = fromBlockClass.sys_flag;
 
			ChainBreak_flg = fromBlockClass.ChainBreak_flg;
			NextBreak_flg = fromBlockClass.NextBreak_flg;
			Crystal_flg = fromBlockClass.Crystal_flg;
			Metal_flg = fromBlockClass.Metal_flg;
 
			fream_counter = fromBlockClass.fream_counter;
			color_number = fromBlockClass.color_number;
 
			type_number = fromBlockClass.type_number;
			sys_number = fromBlockClass.sys_number;
 
			HP = fromBlockClass.HP;
			MAXHP = fromBlockClass.MAXHP;
			Weight = fromBlockClass.Weight;
			FaillNumber = fromBlockClass.FaillNumber;
 
			x = fromBlockClass.x;
			y = fromBlockClass.y;
		}
		//自分からコピーを取る-------------------------------------------
		public function getCopy(toBlockClass:BlockClass):void{
			toBlockClass.on_flag = on_flag;
			toBlockClass.visible_flg = visible_flg;
			toBlockClass.minus_flg = minus_flg;
			toBlockClass.sys_flag = sys_flag;
 
			toBlockClass.ChainBreak_flg = ChainBreak_flg;
			toBlockClass.NextBreak_flg = NextBreak_flg;
			toBlockClass.Crystal_flg = Crystal_flg;
			toBlockClass.Metal_flg = Metal_flg;
 
			toBlockClass.fream_counter = fream_counter;
			toBlockClass.color_number = color_number;
 
			toBlockClass.type_number = type_number;
			toBlockClass.sys_number = sys_number;
 
			toBlockClass.HP = HP;
			toBlockClass.MAXHP = MAXHP;
			toBlockClass.Weight = Weight;
			toBlockClass.FaillNumber = FaillNumber;
 
			toBlockClass.x = x;
			toBlockClass.y = y;
		}
 
		//バイトストリーム取り出し-------------------------------------------
		public function getBytes(temp_byte:ByteArray):ByteArray{ //通信対戦用のデータ取り出し
			temp_byte.writeBoolean(on_flag);
			temp_byte.writeBoolean(visible_flg);
			temp_byte.writeBoolean(minus_flg);
			temp_byte.writeBoolean(sys_flag);
 
			temp_byte.writeBoolean(ChainBreak_flg);
			temp_byte.writeBoolean(NextBreak_flg);
			temp_byte.writeBoolean(Crystal_flg);
			temp_byte.writeBoolean(Metal_flg);
 
			temp_byte.writeUnsignedInt(fream_counter);
			temp_byte.writeUnsignedInt(color_number);
 
			if(!(on_flag))return temp_byte;
 
			temp_byte.writeInt(type_number);
			temp_byte.writeInt(sys_number);
 
			temp_byte.writeInt(HP * 100);
			temp_byte.writeInt(MAXHP * 100);
			temp_byte.writeInt(Weight * 100);
			temp_byte.writeInt(FaillNumber);
 
			temp_byte.writeInt(this.x * 100);
			temp_byte.writeInt(this.y * 100);
 
			return temp_byte;
		}
		//バイトストリーム取り入れ-------------------------------------------
		public function setBytes(temp_byte:ByteArray):void{ //通信対戦用のデータ取り入れ
			on_flag = temp_byte.readBoolean();
			visible_flg = temp_byte.readBoolean();
			minus_flg = temp_byte.readBoolean();
			sys_flag = temp_byte.readBoolean();
 
			ChainBreak_flg = temp_byte.readBoolean();
			NextBreak_flg = temp_byte.readBoolean();
			Crystal_flg = temp_byte.readBoolean();
			Metal_flg = temp_byte.readBoolean();
 
			fream_counter = temp_byte.readUnsignedInt();
			color_number = temp_byte.readUnsignedInt();
 
			if(!(on_flag))return ;
 
			type_number = temp_byte.readUnsignedInt();
			sys_number = temp_byte.readUnsignedInt();
 
			HP = temp_byte.readInt() / 100;
			MAXHP = temp_byte.readInt() / 100;
			Weight = temp_byte.readInt() / 100;
			FaillNumber = temp_byte.readInt();
 
			this.x = temp_byte.readInt() / 100;
			this.y = temp_byte.readInt() / 100;
 
		}
		//END-------------------------------------------
 
    }
}
 
//見ての通り、クリスタルなメタルブロックということも可能。
//その場合の表示や処理は、堅い方が優先されてしまう。
最終更新:2012年12月21日 13:26