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

/**
 * 系統_道具設定#item_setting.xlsx
 * ##程式碼由工具產生, 在此做的修改都將被覆蓋##
 */
export class ItemSettingTable extends TableBase<WithoutRow> {
	private _card1Setting: Card1SettingTable;
	/**  系統_道具設定#item_setting.xlsx > #card1_setting */
	public get Card1Setting(): Card1SettingTable { return this._card1Setting = this._card1Setting || TableManager.InitTable("#item_setting#card1_setting", Card1SettingTable, Card1SettingTableRow); }

	private _chipSetting: ChipSettingTable;
	/**  系統_道具設定#item_setting.xlsx > #chip_setting */
	public get ChipSetting(): ChipSettingTable { return this._chipSetting = this._chipSetting || TableManager.InitTable("#item_setting#chip_setting", ChipSettingTable, ChipSettingTableRow); }

	private _randomcardSetting: RandomcardSettingTable;
	/**  系統_道具設定#item_setting.xlsx > #randomcard_setting */
	public get RandomcardSetting(): RandomcardSettingTable { return this._randomcardSetting = this._randomcardSetting || TableManager.InitTable("#item_setting#randomcard_setting", RandomcardSettingTable, RandomcardSettingTableRow); }

	private _bingoSetting: BingoSettingTable;
	/**  系統_道具設定#item_setting.xlsx > #bingo_setting */
	public get BingoSetting(): BingoSettingTable { return this._bingoSetting = this._bingoSetting || TableManager.InitTable("#item_setting#bingo_setting", BingoSettingTable, BingoSettingTableRow); }

	private _fiveSetting: FiveSettingTable;
	/**  系統_道具設定#item_setting.xlsx > #five_setting */
	public get FiveSetting(): FiveSettingTable { return this._fiveSetting = this._fiveSetting || TableManager.InitTable("#item_setting#five_setting", FiveSettingTable, FiveSettingTableRow); }

	private _stringItem: StringItemTable;
	/**  系統_道具設定#item_setting.xlsx > #string_item */
	public get StringItem(): StringItemTable { return this._stringItem = this._stringItem || TableManager.InitTable("#item_setting#string_item", StringItemTable, StringItemTableRow); }
}

/**
 * #card1_setting
 */
export class Card1SettingTable extends TableBase<Card1SettingTableRow> {}

export class Card1SettingTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 機台 */
	Slot: number;
	/** 顏色 */
	Rank: number;
	/** 星數 */
	Star: number;
	/** 廳館 */
	Lobby: number;
	/** 押注 */
	Bet: number;
	/** 押注 */
	Betrank: number;
	/** 卡片說明 */
	CardString: number;
	/** 卡片名稱 */
	CardName: string;
	/** 獲得金額 */
	Obtain: number;
}

/**
 * #chip_setting
 */
export class ChipSettingTable extends TableBase<ChipSettingTableRow> {}

export class ChipSettingTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 機台 */
	Slot: number;
	/** 廳館 */
	Lobby: number;
	/** 部位 */
	Number: number;
}

/**
 * #randomcard_setting
 */
export class RandomcardSettingTable extends TableBase<RandomcardSettingTableRow> {}

export class RandomcardSettingTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 顏色 */
	Rank: number;
	/** 星數 */
	Star: number;
}

/**
 * #bingo_setting
 */
export class BingoSettingTable extends TableBase<BingoSettingTableRow> {}

export class BingoSettingTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 名稱 */
	Name: string;
	/** 顏色 */
	Rank: number;
}

/**
 * #five_setting
 */
export class FiveSettingTable extends TableBase<FiveSettingTableRow> {}

export class FiveSettingTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 名稱 */
	Name: string;
	/** 顏色 */
	Rank: number;
}

/**
 * #string_item
 */
export class StringItemTable extends TableBase<StringItemTableRow> {}

export class StringItemTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 繁體中文訊息 */
	MsgZnTw: string;
}
