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

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

	private _betpage: BetpageTable;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #betpage */
	public get Betpage(): BetpageTable { return this._betpage = this._betpage || TableManager.InitTable("#monkeytower#betpage", BetpageTable, BetpageTableRow); }

	private _sound: SoundTable;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #sound */
	public get Sound(): SoundTable { return this._sound = this._sound || TableManager.InitTable("#monkeytower#sound", SoundTable, SoundTableRow); }

	private _item: ItemTable;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #item */
	public get Item(): ItemTable { return this._item = this._item || TableManager.InitTable("#monkeytower#item", ItemTable, ItemTableRow); }

	private _fishType: FishTypeTable;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #fish_type */
	public get FishType(): FishTypeTable { return this._fishType = this._fishType || TableManager.InitTable("#monkeytower#fish_type", FishTypeTable, FishTypeTableRow); }

	private _fish: FishTable;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #fish */
	public get Fish(): FishTable { return this._fish = this._fish || TableManager.InitTable("#monkeytower#fish", FishTable, FishTableRow); }

	private _fishFantasy: FishFantasyTable;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #fish_fantasy */
	public get FishFantasy(): FishFantasyTable { return this._fishFantasy = this._fishFantasy || TableManager.InitTable("#monkeytower#fish_fantasy", FishFantasyTable, FishFantasyTableRow); }

	private _tower: TowerTable;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #tower */
	public get Tower(): TowerTable { return this._tower = this._tower || TableManager.InitTable("#monkeytower#tower", TowerTable, TowerTableRow); }

	private _skill: SkillTable;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #skill */
	public get Skill(): SkillTable { return this._skill = this._skill || TableManager.InitTable("#monkeytower#skill", SkillTable, SkillTableRow); }

	private _mission: MissionTable;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #mission */
	public get Mission(): MissionTable { return this._mission = this._mission || TableManager.InitTable("#monkeytower#mission", MissionTable, MissionTableRow); }

	private _script11: Script11Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_11 */
	public get Script11(): Script11Table { return this._script11 = this._script11 || TableManager.InitTable("#monkeytower#script_11", Script11Table, Script11TableRow); }

	private _script12: Script12Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_12 */
	public get Script12(): Script12Table { return this._script12 = this._script12 || TableManager.InitTable("#monkeytower#script_12", Script12Table, Script12TableRow); }

	private _script13: Script13Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_13 */
	public get Script13(): Script13Table { return this._script13 = this._script13 || TableManager.InitTable("#monkeytower#script_13", Script13Table, Script13TableRow); }

	private _script14: Script14Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_14 */
	public get Script14(): Script14Table { return this._script14 = this._script14 || TableManager.InitTable("#monkeytower#script_14", Script14Table, Script14TableRow); }

	private _script15: Script15Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_15 */
	public get Script15(): Script15Table { return this._script15 = this._script15 || TableManager.InitTable("#monkeytower#script_15", Script15Table, Script15TableRow); }

	private _script21: Script21Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_21 */
	public get Script21(): Script21Table { return this._script21 = this._script21 || TableManager.InitTable("#monkeytower#script_21", Script21Table, Script21TableRow); }

	private _script22: Script22Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_22 */
	public get Script22(): Script22Table { return this._script22 = this._script22 || TableManager.InitTable("#monkeytower#script_22", Script22Table, Script22TableRow); }

	private _script23: Script23Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_23 */
	public get Script23(): Script23Table { return this._script23 = this._script23 || TableManager.InitTable("#monkeytower#script_23", Script23Table, Script23TableRow); }

	private _script24: Script24Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_24 */
	public get Script24(): Script24Table { return this._script24 = this._script24 || TableManager.InitTable("#monkeytower#script_24", Script24Table, Script24TableRow); }

	private _script25: Script25Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_25 */
	public get Script25(): Script25Table { return this._script25 = this._script25 || TableManager.InitTable("#monkeytower#script_25", Script25Table, Script25TableRow); }

	private _script31: Script31Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_31 */
	public get Script31(): Script31Table { return this._script31 = this._script31 || TableManager.InitTable("#monkeytower#script_31", Script31Table, Script31TableRow); }

	private _script32: Script32Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_32 */
	public get Script32(): Script32Table { return this._script32 = this._script32 || TableManager.InitTable("#monkeytower#script_32", Script32Table, Script32TableRow); }

	private _script33: Script33Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_33 */
	public get Script33(): Script33Table { return this._script33 = this._script33 || TableManager.InitTable("#monkeytower#script_33", Script33Table, Script33TableRow); }

	private _script34: Script34Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_34 */
	public get Script34(): Script34Table { return this._script34 = this._script34 || TableManager.InitTable("#monkeytower#script_34", Script34Table, Script34TableRow); }

	private _script35: Script35Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #script_35 */
	public get Script35(): Script35Table { return this._script35 = this._script35 || TableManager.InitTable("#monkeytower#script_35", Script35Table, Script35TableRow); }

	private _set1: Set1Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #set_1 */
	public get Set1(): Set1Table { return this._set1 = this._set1 || TableManager.InitTable("#monkeytower#set_1", Set1Table, Set1TableRow); }

	private _building1: Building1Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #building_1 */
	public get Building1(): Building1Table { return this._building1 = this._building1 || TableManager.InitTable("#monkeytower#building_1", Building1Table, Building1TableRow); }

	private _corner1: Corner1Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #corner_1 */
	public get Corner1(): Corner1Table { return this._corner1 = this._corner1 || TableManager.InitTable("#monkeytower#corner_1", Corner1Table, Corner1TableRow); }

	private _set2: Set2Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #set_2 */
	public get Set2(): Set2Table { return this._set2 = this._set2 || TableManager.InitTable("#monkeytower#set_2", Set2Table, Set2TableRow); }

	private _building2: Building2Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #building_2 */
	public get Building2(): Building2Table { return this._building2 = this._building2 || TableManager.InitTable("#monkeytower#building_2", Building2Table, Building2TableRow); }

	private _corner2: Corner2Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #corner_2 */
	public get Corner2(): Corner2Table { return this._corner2 = this._corner2 || TableManager.InitTable("#monkeytower#corner_2", Corner2Table, Corner2TableRow); }

	private _set3: Set3Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #set_3 */
	public get Set3(): Set3Table { return this._set3 = this._set3 || TableManager.InitTable("#monkeytower#set_3", Set3Table, Set3TableRow); }

	private _building3: Building3Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #building_3 */
	public get Building3(): Building3Table { return this._building3 = this._building3 || TableManager.InitTable("#monkeytower#building_3", Building3Table, Building3TableRow); }

	private _corner3: Corner3Table;
	/**  捕魚機_西遊塔防#monkeytower.xlsx > #corner_3 */
	public get Corner3(): Corner3Table { return this._corner3 = this._corner3 || TableManager.InitTable("#monkeytower#corner_3", Corner3Table, Corner3TableRow); }
}

/**
 * #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;
}

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

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

/**
 * #item
 */
export class ItemTable extends TableBase<ItemTableRow> {}

export class ItemTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 保存上限 */
	QuantityLimit: number;
	/** 參數1 */
	Args1: number;
}

/**
 * #fish_type
 */
export class FishTypeTable extends TableBase<FishTypeTableRow> {}

export class FishTypeTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 怪物 */
	FishId: any;
}

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

export class FishTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 賠率優先度 */
	PayPriority: number;
	/** 血量 */
	Hp: number;
	/** 攻擊力 */
	Attack: number;
	/** 速度 */
	Speed: number;
	/** 停頓間隔 */
	StopInterval: number;
	/** 停頓時間 */
	StopTime: number;
	/** 回頭 */
	Back: number;
	/** 紀錄血量 */
	HpSave: number;
	/** 體積 */
	Size: number;
	/** 造型 */
	SameId: number;
}

/**
 * #fish_fantasy
 */
export class FishFantasyTable extends TableBase<FishFantasyTableRow> {}

export class FishFantasyTableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

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

export class TowerTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 攻擊類型 */
	AttackType1: number;
	/** 攻擊速度 */
	AttackSpeed1: number;
	/** 攻擊目標 */
	AttackAims1: number;
	/** 攻擊距離 */
	AttackRange1: number;
	/** 參數1 */
	AttackArgs11: number;
	/** 攻擊類型 */
	AttackType2: number;
	/** 攻擊速度 */
	AttackSpeed2: number;
	/** 攻擊目標 */
	AttackAims2: number;
	/** 攻擊距離 */
	AttackRange2: number;
	/** 參數1 */
	AttackArgs21: number;
}

/**
 * #skill
 */
export class SkillTable extends TableBase<SkillTableRow> {}

export class SkillTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 子彈數 */
	Hit: number;
}

/**
 * #mission
 */
export class MissionTable extends TableBase<MissionTableRow> {}

export class MissionTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 劇本 */
	Script: any;
	/** 劇本 */
	ScriptWave: any;
	/** BOSS登場 */
	BossWave: any;
	/** 地點座標 */
	Set: number;
	/** 塔座標 */
	Building: number;
	/** 轉角座標 */
	Corner: number;
	/** BOSS */
	Boss: number;
}

/**
 * #script_11
 */
export class Script11Table extends TableBase<Script11TableRow> {}

export class Script11TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_12
 */
export class Script12Table extends TableBase<Script12TableRow> {}

export class Script12TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_13
 */
export class Script13Table extends TableBase<Script13TableRow> {}

export class Script13TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_14
 */
export class Script14Table extends TableBase<Script14TableRow> {}

export class Script14TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_15
 */
export class Script15Table extends TableBase<Script15TableRow> {}

export class Script15TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_21
 */
export class Script21Table extends TableBase<Script21TableRow> {}

export class Script21TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_22
 */
export class Script22Table extends TableBase<Script22TableRow> {}

export class Script22TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_23
 */
export class Script23Table extends TableBase<Script23TableRow> {}

export class Script23TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_24
 */
export class Script24Table extends TableBase<Script24TableRow> {}

export class Script24TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_25
 */
export class Script25Table extends TableBase<Script25TableRow> {}

export class Script25TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_31
 */
export class Script31Table extends TableBase<Script31TableRow> {}

export class Script31TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_32
 */
export class Script32Table extends TableBase<Script32TableRow> {}

export class Script32TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_33
 */
export class Script33Table extends TableBase<Script33TableRow> {}

export class Script33TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_34
 */
export class Script34Table extends TableBase<Script34TableRow> {}

export class Script34TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #script_35
 */
export class Script35Table extends TableBase<Script35TableRow> {}

export class Script35TableRow implements ITableRow {
	/** 編號 */
	Id: number;
}

/**
 * #set_1
 */
export class Set1Table extends TableBase<Set1TableRow> {}

export class Set1TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** x座標 */
	CoordinateX: number;
	/** y座標 */
	CoordinateY: number;
}

/**
 * #building_1
 */
export class Building1Table extends TableBase<Building1TableRow> {}

export class Building1TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 類型 */
	Type: number;
	/** x座標 */
	CoordinateX: number;
	/** y座標 */
	CoordinateY: number;
}

/**
 * #corner_1
 */
export class Corner1Table extends TableBase<Corner1TableRow> {}

export class Corner1TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** x座標 */
	CoordinateX: number;
	/** y座標 */
	CoordinateY: number;
	/** x移動 */
	MovingX: number;
	/** y移動 */
	MovingY: number;
}

/**
 * #set_2
 */
export class Set2Table extends TableBase<Set2TableRow> {}

export class Set2TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** x座標 */
	CoordinateX: number;
	/** y座標 */
	CoordinateY: number;
}

/**
 * #building_2
 */
export class Building2Table extends TableBase<Building2TableRow> {}

export class Building2TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 類型 */
	Type: number;
	/** x座標 */
	CoordinateX: number;
	/** y座標 */
	CoordinateY: number;
}

/**
 * #corner_2
 */
export class Corner2Table extends TableBase<Corner2TableRow> {}

export class Corner2TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** x座標 */
	CoordinateX: number;
	/** y座標 */
	CoordinateY: number;
	/** x移動 */
	MovingX: number;
	/** y移動 */
	MovingY: number;
}

/**
 * #set_3
 */
export class Set3Table extends TableBase<Set3TableRow> {}

export class Set3TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** x座標 */
	CoordinateX: number;
	/** y座標 */
	CoordinateY: number;
}

/**
 * #building_3
 */
export class Building3Table extends TableBase<Building3TableRow> {}

export class Building3TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 類型 */
	Type: number;
	/** x座標 */
	CoordinateX: number;
	/** y座標 */
	CoordinateY: number;
}

/**
 * #corner_3
 */
export class Corner3Table extends TableBase<Corner3TableRow> {}

export class Corner3TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** x座標 */
	CoordinateX: number;
	/** y座標 */
	CoordinateY: number;
	/** x移動 */
	MovingX: number;
	/** y移動 */
	MovingY: number;
}
