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

/**
 * 系統_背包#packet.xlsx
 * ##程式碼由工具產生, 在此做的修改都將被覆蓋##
 */
export class PacketTable extends TableBase<WithoutRow> {
	private _select: SelectTable;
	/**  系統_背包#packet.xlsx > #select */
	public get Select(): SelectTable { return this._select = this._select || TableManager.InitTable("#packet#select", SelectTable, SelectTableRow); }

	private _type: TypeTable;
	/**  系統_背包#packet.xlsx > #type */
	public get Type(): TypeTable { return this._type = this._type || TableManager.InitTable("#packet#type", TypeTable, TypeTableRow); }

	private _chip: ChipTable;
	/**  系統_背包#packet.xlsx > #chip */
	public get Chip(): ChipTable { return this._chip = this._chip || TableManager.InitTable("#packet#chip", ChipTable, ChipTableRow); }

	private _string: StringTable;
	/**  系統_背包#packet.xlsx > #string */
	public get String(): StringTable { return this._string = this._string || TableManager.InitTable("#packet#string", StringTable, StringTableRow); }
}

/**
 * #select
 */
export class SelectTable extends TableBase<SelectTableRow> {}

export class SelectTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 機台名稱 */
	Slot: string;
	/** 威力卡 */
	Card1: number;
}

/**
 * #type
 */
export class TypeTable extends TableBase<TypeTableRow> {}

export class TypeTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 字串 */
	String: number;
}

/**
 * #chip
 */
export class ChipTable extends TableBase<ChipTableRow> {}

export class ChipTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 機台 */
	Slot: number;
	/** 機台名稱 */
	Name: string;
}

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

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