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_021火山#slot_021.xlsx
 * ##程式碼由工具產生, 在此做的修改都將被覆蓋##
 */
export class Slot021Table extends TableBase<WithoutRow> {
	private _fixed: FixedTable;
	/**  SLOT_021火山#slot_021.xlsx > #fixed */
	public get Fixed(): FixedTable { return this._fixed = this._fixed || TableManager.InitTable("#slot_021#fixed", FixedTable, FixedTableRow); }

	private _symbol: SymbolTable;
	/**  SLOT_021火山#slot_021.xlsx > #symbol */
	public get Symbol(): SymbolTable { return this._symbol = this._symbol || TableManager.InitTable("#slot_021#symbol", SymbolTable, SymbolTableRow); }

	private _pay: PayTable;
	/**  SLOT_021火山#slot_021.xlsx > #pay */
	public get Pay(): PayTable { return this._pay = this._pay || TableManager.InitTable("#slot_021#pay", PayTable, PayTableRow); }

	private _lineBase: LineBaseTable;
	/**  SLOT_021火山#slot_021.xlsx > #line_base */
	public get LineBase(): LineBaseTable { return this._lineBase = this._lineBase || TableManager.InitTable("#slot_021#line_base", LineBaseTable, LineBaseTableRow); }

	private _lineFree: LineFreeTable;
	/**  SLOT_021火山#slot_021.xlsx > #line_free */
	public get LineFree(): LineFreeTable { return this._lineFree = this._lineFree || TableManager.InitTable("#slot_021#line_free", LineFreeTable, LineFreeTableRow); }

	private _wheelForm: WheelFormTable;
	/**  SLOT_021火山#slot_021.xlsx > #wheel_form */
	public get WheelForm(): WheelFormTable { return this._wheelForm = this._wheelForm || TableManager.InitTable("#slot_021#wheel_form", WheelFormTable, WheelFormTableRow); }

	private _wheelClient: WheelClientTable;
	/**  SLOT_021火山#slot_021.xlsx > #wheel_client */
	public get WheelClient(): WheelClientTable { return this._wheelClient = this._wheelClient || TableManager.InitTable("#slot_021#wheel_client", WheelClientTable, WheelClientTableRow); }

	private _path: PathTable;
	/**  SLOT_021火山#slot_021.xlsx > #path */
	public get Path(): PathTable { return this._path = this._path || TableManager.InitTable("#slot_021#path", PathTable, PathTableRow); }
}

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

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

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

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

/**
 * #pay
 */
export class PayTable extends TableBase<PayTableRow> {}

export class PayTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 賠率 */
	X1: number;
	/** 賠率 */
	X2: number;
	/** 賠率 */
	X3: number;
	/** 賠率 */
	X4: number;
	/** 賠率 */
	X5: number;
	/** 賠率 */
	X6: number;
}

/**
 * #line_base
 */
export class LineBaseTable extends TableBase<LineBaseTableRow> {}

export class LineBaseTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 線編號 */
	LineId: number;
}

/**
 * #line_free
 */
export class LineFreeTable extends TableBase<LineFreeTableRow> {}

export class LineFreeTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 線編號 */
	LineId: number;
}

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

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

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

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

/**
 * #path
 */
export class PathTable extends TableBase<PathTableRow> {}

export class PathTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 時間 */
	Time: number;
	/** 路徑點 */
	PathPoins: any;
}
