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_1201三勇者#slot_1201.xlsx
 * ##程式碼由工具產生, 在此做的修改都將被覆蓋##
 */
export class Slot1201Table extends TableBase<WithoutRow> {
	private _string: StringTable;
	/**  SLOT_1201三勇者#slot_1201.xlsx > #string */
	public get String(): StringTable { return this._string = this._string || TableManager.InitTable("#slot_1201#string", StringTable, StringTableRow); }

	private _fixed: FixedTable;
	/**  SLOT_1201三勇者#slot_1201.xlsx > #fixed */
	public get Fixed(): FixedTable { return this._fixed = this._fixed || TableManager.InitTable("#slot_1201#fixed", FixedTable, FixedTableRow); }

	private _symbolBase: SymbolBaseTable;
	/**  SLOT_1201三勇者#slot_1201.xlsx > #symbol_base */
	public get SymbolBase(): SymbolBaseTable { return this._symbolBase = this._symbolBase || TableManager.InitTable("#slot_1201#symbol_base", SymbolBaseTable, SymbolBaseTableRow); }

	private _symbolFree: SymbolFreeTable;
	/**  SLOT_1201三勇者#slot_1201.xlsx > #symbol_free */
	public get SymbolFree(): SymbolFreeTable { return this._symbolFree = this._symbolFree || TableManager.InitTable("#slot_1201#symbol_free", SymbolFreeTable, SymbolFreeTableRow); }

	private _pay: PayTable;
	/**  SLOT_1201三勇者#slot_1201.xlsx > #pay */
	public get Pay(): PayTable { return this._pay = this._pay || TableManager.InitTable("#slot_1201#pay", PayTable, PayTableRow); }

	private _monster: MonsterTable;
	/**  SLOT_1201三勇者#slot_1201.xlsx > #monster */
	public get Monster(): MonsterTable { return this._monster = this._monster || TableManager.InitTable("#slot_1201#monster", MonsterTable, MonsterTableRow); }

	private _sound: SoundTable;
	/**  SLOT_1201三勇者#slot_1201.xlsx > #sound */
	public get Sound(): SoundTable { return this._sound = this._sound || TableManager.InitTable("#slot_1201#sound", SoundTable, SoundTableRow); }

	private _wheelForm: WheelFormTable;
	/**  SLOT_1201三勇者#slot_1201.xlsx > #wheel_form */
	public get WheelForm(): WheelFormTable { return this._wheelForm = this._wheelForm || TableManager.InitTable("#slot_1201#wheel_form", WheelFormTable, WheelFormTableRow); }
}

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

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

/**
 * #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_base
 */
export class SymbolBaseTable extends TableBase<SymbolBaseTableRow> {}

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

/**
 * #symbol_free
 */
export class SymbolFreeTable extends TableBase<SymbolFreeTableRow> {}

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

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

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

/**
 * #monster
 */
export class MonsterTable extends TableBase<MonsterTableRow> {}

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

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

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

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

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