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

/**
 * SLOT_1501柏青哥_金貓#slot_1501.xlsx
 * ##程式碼由工具產生, 在此做的修改都將被覆蓋##
 */
export class Slot1501Table extends TableBase<WithoutRow> {
	private _fixed: FixedTable;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #fixed */
	public get Fixed(): FixedTable { return this._fixed = this._fixed || TableManager.InitTable("#slot_1501#fixed", FixedTable, FixedTableRow); }

	private _betpage: BetpageTable;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #betpage */
	public get Betpage(): BetpageTable { return this._betpage = this._betpage || TableManager.InitTable("#slot_1501#betpage", BetpageTable, BetpageTableRow); }

	private _nail: NailTable;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #nail */
	public get Nail(): NailTable { return this._nail = this._nail || TableManager.InitTable("#slot_1501#nail", NailTable, NailTableRow); }

	private _trigger: TriggerTable;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #trigger */
	public get Trigger(): TriggerTable { return this._trigger = this._trigger || TableManager.InitTable("#slot_1501#trigger", TriggerTable, TriggerTableRow); }

	private _wall: WallTable;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #wall */
	public get Wall(): WallTable { return this._wall = this._wall || TableManager.InitTable("#slot_1501#wall", WallTable, WallTableRow); }

	private _device: DeviceTable;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #device */
	public get Device(): DeviceTable { return this._device = this._device || TableManager.InitTable("#slot_1501#device", DeviceTable, DeviceTableRow); }

	private _symbol: SymbolTable;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #symbol */
	public get Symbol(): SymbolTable { return this._symbol = this._symbol || TableManager.InitTable("#slot_1501#symbol", SymbolTable, SymbolTableRow); }

	private _slotGet: SlotGetTable;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #slot_get */
	public get SlotGet(): SlotGetTable { return this._slotGet = this._slotGet || TableManager.InitTable("#slot_1501#slot_get", SlotGetTable, SlotGetTableRow); }

	private _wheelForm: WheelFormTable;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #wheel_form */
	public get WheelForm(): WheelFormTable { return this._wheelForm = this._wheelForm || TableManager.InitTable("#slot_1501#wheel_form", WheelFormTable, WheelFormTableRow); }

	private _wheel: WheelTable;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #wheel */
	public get Wheel(): WheelTable { return this._wheel = this._wheel || TableManager.InitTable("#slot_1501#wheel", WheelTable, WheelTableRow); }

	private _wheelClient: WheelClientTable;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #wheel_client */
	public get WheelClient(): WheelClientTable { return this._wheelClient = this._wheelClient || TableManager.InitTable("#slot_1501#wheel_client", WheelClientTable, WheelClientTableRow); }

	private _sound: SoundTable;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #sound */
	public get Sound(): SoundTable { return this._sound = this._sound || TableManager.InitTable("#slot_1501#sound", SoundTable, SoundTableRow); }

	private _power1: Power1Table;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #power1 */
	public get Power1(): Power1Table { return this._power1 = this._power1 || TableManager.InitTable("#slot_1501#power1", Power1Table, Power1TableRow); }

	private _power2: Power2Table;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #power2 */
	public get Power2(): Power2Table { return this._power2 = this._power2 || TableManager.InitTable("#slot_1501#power2", Power2Table, Power2TableRow); }

	private _power3: Power3Table;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #power3 */
	public get Power3(): Power3Table { return this._power3 = this._power3 || TableManager.InitTable("#slot_1501#power3", Power3Table, Power3TableRow); }

	private _power4: Power4Table;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #power4 */
	public get Power4(): Power4Table { return this._power4 = this._power4 || TableManager.InitTable("#slot_1501#power4", Power4Table, Power4TableRow); }

	private _power5: Power5Table;
	/**  SLOT_1501柏青哥_金貓#slot_1501.xlsx > #power5 */
	public get Power5(): Power5Table { return this._power5 = this._power5 || TableManager.InitTable("#slot_1501#power5", Power5Table, Power5TableRow); }
}

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

/**
 * #nail
 */
export class NailTable extends TableBase<NailTableRow> {}

export class NailTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 座標半徑 */
	Coordinate: any;
}

/**
 * #trigger
 */
export class TriggerTable extends TableBase<TriggerTableRow> {}

export class TriggerTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 形狀 */
	Type: number;
	/** 座標 */
	Coordinate: any;
	/** 半徑 */
	Radius: any;
}

/**
 * #wall
 */
export class WallTable extends TableBase<WallTableRow> {}

export class WallTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 座標 */
	Coordinate: any;
}

/**
 * #device
 */
export class DeviceTable extends TableBase<DeviceTableRow> {}

export class DeviceTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 圖形類型 */
	Type: number;
	/** 模式 */
	Mod: number;
	/** 索引 */
	Keyname: number;
	/** 座標 */
	Coordinate: any;
}

/**
 * #symbol
 */
export class SymbolTable extends TableBase<SymbolTableRow> {}

export class SymbolTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 圖檔索引 */
	PicIndex: number;
	/** 重複位移 */
	SameShift: number;
}

/**
 * #slot_get
 */
export class SlotGetTable extends TableBase<SlotGetTableRow> {}

export class SlotGetTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 進珠上限 */
	BallLimit: number;
	/** 增加珠數 */
	BallAdd: number;
}

/**
 * #wheel_form
 */
export class WheelFormTable extends TableBase<WheelFormTableRow> {}

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

/**
 * #wheel
 */
export class WheelTable extends TableBase<WheelTableRow> {}

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

/**
 * #wheel_client
 */
export class WheelClientTable extends TableBase<WheelClientTableRow> {}

export class WheelClientTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 輪軸列表 */
	SymbolList: any;
}

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

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

/**
 * #power1
 */
export class Power1Table extends TableBase<Power1TableRow> {}

export class Power1TableRow implements ITableRow {
	/** 實際力量 */
	Id: number;
	/** 洞口編號 */
	Type: string;
	/** 路徑資料 */
	Path: any;
}

/**
 * #power2
 */
export class Power2Table extends TableBase<Power2TableRow> {}

export class Power2TableRow implements ITableRow {
	/** 實際力量 */
	Id: number;
	/** 洞口編號 */
	Type: string;
	/** 路徑資料 */
	Path: any;
}

/**
 * #power3
 */
export class Power3Table extends TableBase<Power3TableRow> {}

export class Power3TableRow implements ITableRow {
	/** 實際力量 */
	Id: number;
	/** 洞口編號 */
	Type: string;
	/** 路徑資料 */
	Path: any;
}

/**
 * #power4
 */
export class Power4Table extends TableBase<Power4TableRow> {}

export class Power4TableRow implements ITableRow {
	/** 實際力量 */
	Id: number;
	/** 洞口編號 */
	Type: string;
	/** 路徑資料 */
	Path: any;
}

/**
 * #power5
 */
export class Power5Table extends TableBase<Power5TableRow> {}

export class Power5TableRow implements ITableRow {
	/** 實際力量 */
	Id: number;
	/** 洞口編號 */
	Type: string;
	/** 路徑資料 */
	Path: any;
}
