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

/**
 * Cluster_1304龍蛋#cluster_1304.xlsx
 * ##程式碼由工具產生, 在此做的修改都將被覆蓋##
 */
export class Cluster1304Table extends TableBase<WithoutRow> {
	private _fixed: FixedTable;
	/**  Cluster_1304龍蛋#cluster_1304.xlsx > #fixed */
	public get Fixed(): FixedTable { return this._fixed = this._fixed || TableManager.InitTable("#cluster_1304#fixed", FixedTable, FixedTableRow); }

	private _symbol: SymbolTable;
	/**  Cluster_1304龍蛋#cluster_1304.xlsx > #symbol */
	public get Symbol(): SymbolTable { return this._symbol = this._symbol || TableManager.InitTable("#cluster_1304#symbol", SymbolTable, SymbolTableRow); }

	private _pay: PayTable;
	/**  Cluster_1304龍蛋#cluster_1304.xlsx > #pay */
	public get Pay(): PayTable { return this._pay = this._pay || TableManager.InitTable("#cluster_1304#pay", PayTable, PayTableRow); }

	private _wheelForm: WheelFormTable;
	/**  Cluster_1304龍蛋#cluster_1304.xlsx > #wheel_form */
	public get WheelForm(): WheelFormTable { return this._wheelForm = this._wheelForm || TableManager.InitTable("#cluster_1304#wheel_form", WheelFormTable, WheelFormTableRow); }

	private _wheel: WheelTable;
	/**  Cluster_1304龍蛋#cluster_1304.xlsx > #wheel */
	public get Wheel(): WheelTable { return this._wheel = this._wheel || TableManager.InitTable("#cluster_1304#wheel", WheelTable, WheelTableRow); }

	private _wheelClient: WheelClientTable;
	/**  Cluster_1304龍蛋#cluster_1304.xlsx > #wheel_client */
	public get WheelClient(): WheelClientTable { return this._wheelClient = this._wheelClient || TableManager.InitTable("#cluster_1304#wheel_client", WheelClientTable, WheelClientTableRow); }

	private _sound: SoundTable;
	/**  Cluster_1304龍蛋#cluster_1304.xlsx > #sound */
	public get Sound(): SoundTable { return this._sound = this._sound || TableManager.InitTable("#cluster_1304#sound", SoundTable, SoundTableRow); }
}

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

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

/**
 * #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;
	/** 賠率 */
	X7: number;
	/** 賠率 */
	X8: number;
	/** 賠率 */
	X9: number;
	/** 賠率 */
	X10: number;
	/** 賠率 */
	X11: number;
	/** 賠率 */
	X12: number;
	/** 賠率 */
	X13: number;
	/** 賠率 */
	X14: number;
	/** 賠率 */
	X15: number;
	/** 賠率 */
	X16: number;
	/** 賠率 */
	X17: number;
	/** 賠率 */
	X18: number;
	/** 賠率 */
	X19: number;
	/** 賠率 */
	X20: number;
	/** 賠率 */
	X21: number;
	/** 賠率 */
	X22: number;
	/** 賠率 */
	X23: number;
	/** 賠率 */
	X24: number;
	/** 賠率 */
	X25: number;
	/** 賠率 */
	X26: number;
	/** 賠率 */
	X27: number;
	/** 賠率 */
	X28: number;
	/** 賠率 */
	X29: number;
	/** 賠率 */
	X30: number;
	/** 賠率 */
	X31: number;
	/** 賠率 */
	X32: number;
	/** 賠率 */
	X33: number;
	/** 賠率 */
	X34: number;
	/** 賠率 */
	X35: number;
	/** 賠率 */
	X36: number;
	/** 賠率 */
	X37: number;
	/** 賠率 */
	X38: number;
	/** 賠率 */
	X39: number;
	/** 賠率 */
	X40: number;
	/** 賠率 */
	X41: number;
	/** 賠率 */
	X42: number;
	/** 賠率 */
	X43: number;
	/** 賠率 */
	X44: number;
	/** 賠率 */
	X45: number;
	/** 賠率 */
	X46: number;
	/** 賠率 */
	X47: number;
	/** 賠率 */
	X48: number;
	/** 賠率 */
	X49: number;
	/** 賠率 */
	X50: number;
	/** 賠率 */
	X51: number;
	/** 賠率 */
	X52: number;
	/** 賠率 */
	X53: number;
	/** 賠率 */
	X54: number;
	/** 賠率 */
	X55: number;
	/** 賠率 */
	X56: number;
	/** 賠率 */
	X57: number;
	/** 賠率 */
	X58: number;
	/** 賠率 */
	X59: number;
	/** 賠率 */
	X60: number;
	/** 賠率 */
	X61: number;
	/** 賠率 */
	X62: number;
	/** 賠率 */
	X63: number;
	/** 賠率 */
	X64: 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;
}
