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

/**
 * 系統_聊天室#chat.xlsx
 * ##程式碼由工具產生, 在此做的修改都將被覆蓋##
 */
export class ChatTable extends TableBase<WithoutRow> {
	private _channel: ChannelTable;
	/**  系統_聊天室#chat.xlsx > #channel */
	public get Channel(): ChannelTable { return this._channel = this._channel || TableManager.InitTable("#chat#channel", ChannelTable, ChannelTableRow); }

	private _fixed: FixedTable;
	/**  系統_聊天室#chat.xlsx > #fixed */
	public get Fixed(): FixedTable { return this._fixed = this._fixed || TableManager.InitTable("#chat#fixed", FixedTable, FixedTableRow); }

	private _banstring: BanstringTable;
	/**  系統_聊天室#chat.xlsx > #banstring */
	public get Banstring(): BanstringTable { return this._banstring = this._banstring || TableManager.InitTable("#chat#banstring", BanstringTable, BanstringTableRow); }

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

	private _priority: PriorityTable;
	/**  系統_聊天室#chat.xlsx > #priority */
	public get Priority(): PriorityTable { return this._priority = this._priority || TableManager.InitTable("#chat#priority", PriorityTable, PriorityTableRow); }
}

/**
 * #channel
 */
export class ChannelTable extends TableBase<ChannelTableRow> {}

export class ChannelTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 名稱 */
	Name: string;
}

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

export class FixedTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 參數 */
	ValueC: number;
}

/**
 * #banstring
 */
export class BanstringTable extends TableBase<BanstringTableRow> {}

export class BanstringTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 禁字 */
	Word: string;
}

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

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

/**
 * #priority
 */
export class PriorityTable extends TableBase<PriorityTableRow> {}

export class PriorityTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 後端廣播ID */
	ConditionId: number;
	/** 繁體中文訊息 */
	MsgZnTw: string;
}
