import { ITableRow, WithoutRow } from "../../Engine/CatanEngine/TableV3/Core/ITableRow";
import { TableBase } from "../../Engine/CatanEngine/TableV3/Core/TableBase";
import { TableManager } from "../../Engine/CatanEngine/TableV3/TableManager";

/**
 * 捕魚機_乖海豹捕魚#fish2004.xlsx
 * ##程式碼由工具產生, 在此做的修改都將被覆蓋##
 */
export class Fish2004Table extends TableBase<WithoutRow> {
	private _fixed: FixedTable;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #fixed */
	public get Fixed(): FixedTable { return this._fixed = this._fixed || TableManager.InitTable("#fish2004#fixed", FixedTable, FixedTableRow); }

	private _betpage: BetpageTable;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #betpage */
	public get Betpage(): BetpageTable { return this._betpage = this._betpage || TableManager.InitTable("#fish2004#betpage", BetpageTable, BetpageTableRow); }

	private _fish: FishTable;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #fish */
	public get Fish(): FishTable { return this._fish = this._fish || TableManager.InitTable("#fish2004#fish", FishTable, FishTableRow); }

	private _special: SpecialTable;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #special */
	public get Special(): SpecialTable { return this._special = this._special || TableManager.InitTable("#fish2004#special", SpecialTable, SpecialTableRow); }

	private _fishGroup: FishGroupTable;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #fish_group */
	public get FishGroup(): FishGroupTable { return this._fishGroup = this._fishGroup || TableManager.InitTable("#fish2004#fish_group", FishGroupTable, FishGroupTableRow); }

	private _groupCreate1: GroupCreate1Table;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #group_create1 */
	public get GroupCreate1(): GroupCreate1Table { return this._groupCreate1 = this._groupCreate1 || TableManager.InitTable("#fish2004#group_create1", GroupCreate1Table, GroupCreate1TableRow); }

	private _groupCreate2: GroupCreate2Table;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #group_create2 */
	public get GroupCreate2(): GroupCreate2Table { return this._groupCreate2 = this._groupCreate2 || TableManager.InitTable("#fish2004#group_create2", GroupCreate2Table, GroupCreate2TableRow); }

	private _groupCreate3: GroupCreate3Table;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #group_create3 */
	public get GroupCreate3(): GroupCreate3Table { return this._groupCreate3 = this._groupCreate3 || TableManager.InitTable("#fish2004#group_create3", GroupCreate3Table, GroupCreate3TableRow); }

	private _story1: Story1Table;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #story_1 */
	public get Story1(): Story1Table { return this._story1 = this._story1 || TableManager.InitTable("#fish2004#story_1", Story1Table, Story1TableRow); }

	private _story2: Story2Table;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #story_2 */
	public get Story2(): Story2Table { return this._story2 = this._story2 || TableManager.InitTable("#fish2004#story_2", Story2Table, Story2TableRow); }

	private _story3: Story3Table;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #story_3 */
	public get Story3(): Story3Table { return this._story3 = this._story3 || TableManager.InitTable("#fish2004#story_3", Story3Table, Story3TableRow); }

	private _fishpath: FishpathTable;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #fishpath */
	public get Fishpath(): FishpathTable { return this._fishpath = this._fishpath || TableManager.InitTable("#fish2004#fishpath", FishpathTable, FishpathTableRow); }

	private _bonus: BonusTable;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #bonus */
	public get Bonus(): BonusTable { return this._bonus = this._bonus || TableManager.InitTable("#fish2004#bonus", BonusTable, BonusTableRow); }

	private _scenes: ScenesTable;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #scenes */
	public get Scenes(): ScenesTable { return this._scenes = this._scenes || TableManager.InitTable("#fish2004#scenes", ScenesTable, ScenesTableRow); }

	private _tower: TowerTable;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #tower */
	public get Tower(): TowerTable { return this._tower = this._tower || TableManager.InitTable("#fish2004#tower", TowerTable, TowerTableRow); }

	private _auto: AutoTable;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #auto */
	public get Auto(): AutoTable { return this._auto = this._auto || TableManager.InitTable("#fish2004#auto", AutoTable, AutoTableRow); }

	private _sound: SoundTable;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #sound */
	public get Sound(): SoundTable { return this._sound = this._sound || TableManager.InitTable("#fish2004#sound", SoundTable, SoundTableRow); }

	private _ai: AiTable;
	/**  捕魚機_乖海豹捕魚#fish2004.xlsx > #ai */
	public get Ai(): AiTable { return this._ai = this._ai || TableManager.InitTable("#fish2004#ai", AiTable, AiTableRow); }
}

/**
 * #fixed
 */
export class FixedTable extends TableBase<FixedTableRow> {}

export class FixedTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 共用(值) */
	BValue: number;
	/** client專用(值) */
	CValue: number;
}

/**
 * #betpage
 */
export class BetpageTable extends TableBase<BetpageTableRow> {}

export class BetpageTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 最低金額 */
	Wallet: number;
	/** 最小階級 */
	BetrankMini: number;
	/** 最大階級 */
	BetrankMax: number;
	/** 預設階級 */
	BetrankPreset: number;
}

/**
 * #fish
 */
export class FishTable extends TableBase<FishTableRow> {}

export class FishTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 類型 */
	Type: number;
	/** 倍率 */
	Pay: any;
	/** 死亡 */
	Die: number;
	/** 死亡表演 */
	Showtype: number;
	/** AI死亡表演 */
	ShowtypeAI: number;
}

/**
 * #special
 */
export class SpecialTable extends TableBase<SpecialTableRow> {}

export class SpecialTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 給分方式 */
	Type: number;
	/** 子彈數 */
	Args: number;
	/** 倍率 */
	Pay: number;
	/** 可秒殺的魚 */
	KillGroup: any;
	/** 死亡表演 */
	Showtype: number;
}

/**
 * #fish_group
 */
export class FishGroupTable extends TableBase<FishGroupTableRow> {}

export class FishGroupTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 造型 */
	Skin: number;
	/** 動作 */
	Move: any;
	/** 動作時間 */
	Time: any;
	/** 移動時間 */
	MoveTime: any;
	/** 尺寸 */
	Size: number;
	/** 碰撞盒 */
	Boxsize: any;
	/** 類型 */
	Type: number;
	/** 對應目標 */
	Targets: any;
	/** 機率_權重 */
	Sum: number;
	/** 機率 */
	Weights: any;
	/** 顯示賠率 */
	Pay: any;
	/** 層級 */
	Level: number;
}

/**
 * #group_create1
 */
export class GroupCreate1Table extends TableBase<GroupCreate1TableRow> {}

export class GroupCreate1TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 移動路徑 */
	Move: number;
	/** 登場時間 */
	DebutTime: any;
	/** 限制數量 */
	Limit: number;
	/** 產出方式 */
	Type: number;
	/** 權重 */
	Weight: number;
	/** 重複產出 */
	Repeat: any;
	/** 魚群資料 */
	Fishgroupdata: any;
}

/**
 * #group_create2
 */
export class GroupCreate2Table extends TableBase<GroupCreate2TableRow> {}

export class GroupCreate2TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 移動路徑 */
	Move: number;
	/** 登場時間 */
	DebutTime: any;
	/** 限制數量 */
	Limit: number;
	/** 產出方式 */
	Type: number;
	/** 權重 */
	Weight: number;
	/** 重複產出 */
	Repeat: any;
	/** 魚群資料 */
	Fishgroupdata: any;
}

/**
 * #group_create3
 */
export class GroupCreate3Table extends TableBase<GroupCreate3TableRow> {}

export class GroupCreate3TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 移動路徑 */
	Move: number;
	/** 登場時間 */
	DebutTime: any;
	/** 限制數量 */
	Limit: number;
	/** 產出方式 */
	Type: number;
	/** 權重 */
	Weight: number;
	/** 重複產出 */
	Repeat: any;
	/** 魚群資料 */
	Fishgroupdata: any;
}

/**
 * #story_1
 */
export class Story1Table extends TableBase<Story1TableRow> {}

export class Story1TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 時間 */
	Time: number;
	/** 出現魚種 */
	GroupId: number;
	/** 移動路徑 */
	Move: number;
}

/**
 * #story_2
 */
export class Story2Table extends TableBase<Story2TableRow> {}

export class Story2TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 時間 */
	Time: number;
	/** 出現魚種 */
	GroupId: number;
	/** 移動路徑 */
	Move: number;
}

/**
 * #story_3
 */
export class Story3Table extends TableBase<Story3TableRow> {}

export class Story3TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 時間 */
	Time: number;
	/** 出現魚種 */
	GroupId: number;
	/** 移動路徑 */
	Move: number;
}

/**
 * #fishpath
 */
export class FishpathTable extends TableBase<FishpathTableRow> {}

export class FishpathTableRow implements ITableRow {
	/** 路徑編號 */
	Id: number;
	/** 總類 */
	Type: number;
	/** 路徑 */
	Path: any;
	/** X偏移(小) */
	Xoffsetmin: number;
	/** X偏移(大) */
	Xoffsetmax: number;
	/** Y偏移(小) */
	Yoffsetmin: number;
	/** Y偏移(大) */
	Yoffsetmax: number;
	/** 速率 */
	Timespeed: number;
	/** 存活時間 */
	Lifetime: number;
}

/**
 * #bonus
 */
export class BonusTable extends TableBase<BonusTableRow> {}

export class BonusTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 表演 */
	Show: any;
}

/**
 * #scenes
 */
export class ScenesTable extends TableBase<ScenesTableRow> {}

export class ScenesTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 時間 */
	Time: any;
	/** 出現魚種 */
	GroupId: any;
}

/**
 * #tower
 */
export class TowerTable extends TableBase<TowerTableRow> {}

export class TowerTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 消耗BET */
	Pay: number;
	/** 攻擊目標 */
	Target: number;
	/** 機率加倍 */
	Power: number;
	/** 發射間隔 */
	Time: number;
	/** 可打魚種 */
	Group: any;
	/** 擴散不能打 */
	NoGroup: any;
}

/**
 * #auto
 */
export class AutoTable extends TableBase<AutoTableRow> {}

export class AutoTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 倍率顯示 */
	AutoString: string;
	/** 魚編號 */
	Fish: number;
}

/**
 * #sound
 */
export class SoundTable extends TableBase<SoundTableRow> {}

export class SoundTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 音效=1, 音樂 = 2 */
	Type: number;
	/** 繁/簡體中文音檔位置 */
	PathZnTw: string;
	/** 英文音檔位置(預設音檔位置) */
	PathEn: string;
}

/**
 * #ai
 */
export class AiTable extends TableBase<AiTableRow> {}

export class AiTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 權重 */
	Weight: number;
	/** 持續時間(秒) */
	Time: any;
	/** 使用BET */
	Bet: any;
	/** 砲台 */
	Tower: number;
	/** 攻擊目標 */
	Traget: any;
	/** 交換權重 */
	SwitchWeight: any;
	/** 交換對象 */
	SwitchTraget: any;
}
