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

/**
 * 系統_任務#task.xlsx
 * ##程式碼由工具產生, 在此做的修改都將被覆蓋##
 */
export class TaskTable extends TableBase<WithoutRow> {
	private _list: ListTable;
	/**  系統_任務#task.xlsx > #list */
	public get List(): ListTable { return this._list = this._list || TableManager.InitTable("#task#list", ListTable, ListTableRow); }

	private _taskSetting: TaskSettingTable;
	/**  系統_任務#task.xlsx > #task_setting */
	public get TaskSetting(): TaskSettingTable { return this._taskSetting = this._taskSetting || TableManager.InitTable("#task#task_setting", TaskSettingTable, TaskSettingTableRow); }

	private _tiroTask: TiroTaskTable;
	/**  系統_任務#task.xlsx > #tiro_task */
	public get TiroTask(): TiroTaskTable { return this._tiroTask = this._tiroTask || TableManager.InitTable("#task#tiro_task", TiroTaskTable, TiroTaskTableRow); }

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

/**
 * #list
 */
export class ListTable extends TableBase<ListTableRow> {}

export class ListTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 一般任務 */
	Normal: number;
	/** 進階任務 */
	Advanced: number;
}

/**
 * #task_setting
 */
export class TaskSettingTable extends TableBase<TaskSettingTableRow> {}

export class TaskSettingTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** VIP限制 */
	Vip: number;
	/** 天數 */
	Day: number;
	/** 機台 */
	Game: any;
	/** 類型 */
	Type: number;
	/** 顯示 */
	ShowZnTw: string;
	/** 押分 */
	Bet: number;
	/** 獎勵類型 */
	AwardType: number;
	/** 獎勵參數 */
	AwardValue: number;
}

/**
 * #tiro_task
 */
export class TiroTaskTable extends TableBase<TiroTaskTableRow> {}

export class TiroTaskTableRow implements ITableRow {
	/** 編號 */
	Id: number;
	/** 類型 */
	Type: number;
	/** 參數 */
	Value: any;
	/** 顯示 */
	ShowZnTw: string;
	/** 獎勵 */
	Award: any;
	/** 前置條件 */
	Condition: number;
}

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

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