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

	private _bonusInfo: BonusInfoTable;
	/**  SLOT_042好運到#slot_042.xlsx > #bonus_info */
	public get BonusInfo(): BonusInfoTable { return this._bonusInfo = this._bonusInfo || TableManager.InitTable("#slot_042#bonus_info", BonusInfoTable, BonusInfoTableRow); }

	private _symbol: SymbolTable;
	/**  SLOT_042好運到#slot_042.xlsx > #symbol */
	public get Symbol(): SymbolTable { return this._symbol = this._symbol || TableManager.InitTable("#slot_042#symbol", SymbolTable, SymbolTableRow); }

	private _basepay: BasepayTable;
	/**  SLOT_042好運到#slot_042.xlsx > #basepay */
	public get Basepay(): BasepayTable { return this._basepay = this._basepay || TableManager.InitTable("#slot_042#basepay", BasepayTable, BasepayTableRow); }

	private _freepay: FreepayTable;
	/**  SLOT_042好運到#slot_042.xlsx > #freepay */
	public get Freepay(): FreepayTable { return this._freepay = this._freepay || TableManager.InitTable("#slot_042#freepay", FreepayTable, FreepayTableRow); }

	private _line: LineTable;
	/**  SLOT_042好運到#slot_042.xlsx > #line */
	public get Line(): LineTable { return this._line = this._line || TableManager.InitTable("#slot_042#line", LineTable, LineTableRow); }

	private _sound: SoundTable;
	/**  SLOT_042好運到#slot_042.xlsx > #sound */
	public get Sound(): SoundTable { return this._sound = this._sound || TableManager.InitTable("#slot_042#sound", SoundTable, SoundTableRow); }

	private _string: StringTable;
	/**  SLOT_042好運到#slot_042.xlsx > #string */
	public get String(): StringTable { return this._string = this._string || TableManager.InitTable("#slot_042#string", StringTable, StringTableRow); }

	private _ss: SsTable;
	/**  SLOT_042好運到#slot_042.xlsx > #ss */
	public get Ss(): SsTable { return this._ss = this._ss || TableManager.InitTable("#slot_042#ss", SsTable, SsTableRow); }

	private _wheelForm: WheelFormTable;
	/**  SLOT_042好運到#slot_042.xlsx > #wheel_form */
	public get WheelForm(): WheelFormTable { return this._wheelForm = this._wheelForm || TableManager.InitTable("#slot_042#wheel_form", WheelFormTable, WheelFormTableRow); }

	private _wheelClient: WheelClientTable;
	/**  SLOT_042好運到#slot_042.xlsx > #wheel_client */
	public get WheelClient(): WheelClientTable { return this._wheelClient = this._wheelClient || TableManager.InitTable("#slot_042#wheel_client", WheelClientTable, WheelClientTableRow); }
}

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

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

/**
 * #bonus_info
 */
export class BonusInfoTable extends TableBase<BonusInfoTableRow> {}

export class BonusInfoTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 類型 */
	Type: number;
	/** 局數 */
	Freespins: number;
	/** wild數 */
	Wilds: number;
	/** 重複觸發局數 */
	Retrigger: number;
	/** 滾輪帶編號 */
	WheelId: any;
}

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

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

/**
 * #basepay
 */
export class BasepayTable extends TableBase<BasepayTableRow> {}

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

/**
 * #freepay
 */
export class FreepayTable extends TableBase<FreepayTableRow> {}

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

/**
 * #line
 */
export class LineTable extends TableBase<LineTableRow> {}

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

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

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

/**
 * #string
 */
export class StringTable extends TableBase<StringTableRow> {}

export class StringTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 英文訊息 */
	MsgEn: string;
	/** 繁體中文訊息 */
	MsgZnTw: string;
	/** 簡體中文讯息 */
	MsgZnCh: string;
}

/**
 * #ss
 */
export class SsTable extends TableBase<SsTableRow> {}

export class SsTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 權重 */
	Weight: any;
}

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