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

/**
 * 系統_營運活動#operation.xlsx
 * ##程式碼由工具產生, 在此做的修改都將被覆蓋##
 */
export class OperationTable extends TableBase<WithoutRow> {
	private _time: TimeTable;
	/**  系統_營運活動#operation.xlsx > #time */
	public get Time(): TimeTable { return this._time = this._time || TableManager.InitTable("#operation#time", TimeTable, TimeTableRow); }

	private _fixed: FixedTable;
	/**  系統_營運活動#operation.xlsx > #fixed */
	public get Fixed(): FixedTable { return this._fixed = this._fixed || TableManager.InitTable("#operation#fixed", FixedTable, FixedTableRow); }

	private _group: GroupTable;
	/**  系統_營運活動#operation.xlsx > #group */
	public get Group(): GroupTable { return this._group = this._group || TableManager.InitTable("#operation#group", GroupTable, GroupTableRow); }

	private _string: StringTable;
	/**  系統_營運活動#operation.xlsx > #string */
	public get String(): StringTable { return this._string = this._string || TableManager.InitTable("#operation#string", StringTable, StringTableRow); }

	private _award2: Award2Table;
	/**  系統_營運活動#operation.xlsx > #award2 */
	public get Award2(): Award2Table { return this._award2 = this._award2 || TableManager.InitTable("#operation#award2", Award2Table, Award2TableRow); }

	private _award3: Award3Table;
	/**  系統_營運活動#operation.xlsx > #award3 */
	public get Award3(): Award3Table { return this._award3 = this._award3 || TableManager.InitTable("#operation#award3", Award3Table, Award3TableRow); }
}

/**
 * #time
 */
export class TimeTable extends TableBase<TimeTableRow> {}

export class TimeTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 開始時間 */
	Timestart: string;
	/** 結束時間 */
	Timeend: string;
	/** 刷新時間 */
	Restart: string;
	/** UI關閉時間 */
	Settlement: string;
	/** 活動編號 */
	Activity: number;
	/** 活動組別 */
	Group: number;
	/** 再次累積 */
	Again: number;
	/** 活動規則 */
	Rule: number;
	/** 活動參數 */
	Cond1: number;
	/** 活動參數 */
	Cond2: number;
	/** 活動參數 */
	Cond3: number;
	/** 活動參數 */
	Pam1: number;
	/** icon圖 */
	Icon: number;
	/** 標題 */
	Title: string;
	/** 指定機台群組 */
	Machine: any;
}

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

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

/**
 * #group
 */
export class GroupTable extends TableBase<GroupTableRow> {}

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

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

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

/**
 * #award2
 */
export class Award2Table extends TableBase<Award2TableRow> {}

export class Award2TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 條件 */
	Condition: number;
	/** 獎勵 */
	Award: any;
	/** 圖案 */
	AwardShow: any;
	/** 獎勵內容 */
	Awardtxt: string;
	/** 禮物圖案 */
	Gift: number;
	/** 其他內容 */
	Txt: string;
	/** 其他內容2 */
	Txt2: string;
}

/**
 * #award3
 */
export class Award3Table extends TableBase<Award3TableRow> {}

export class Award3TableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 條件 */
	Condition: number;
	/** 獎勵 */
	Award: any;
	/** 繁體中文訊息 */
	MsgZnTw: string;
}
