Files
Sun1602/Client/GameClient/Interface/uiMissionObject/uiMissionObject.h
T
2022-10-26 12:25:11 +08:00

105 lines
2.6 KiB
C++

#pragma once
#include "uibase.h"
#include "FTextParser.h"
#include "FTextSentence.h"
#include "FTextParam.h"
#include "FTextRender.h"
#include "MissionInfoParser.h"
#define MISSION_OBJECT_DELAY 5000
class uiMissionObject : public uiBase
{
enum eDIALOG_POS
{
eDIALOG_MISSION_OBJECT_LIST,
eDIALOG_EXIT,
eDIALOG_VSCROLL,
eDIALOG_TITTLE,
eDIALOG_ALL_BUTTON,
eDIALOG_PLAY_BUTTON,
eDIALOG_COMPLETE_BUTTON,
DLGPOS_MAX,
};
enum eDisplayType
{
TYPE_ALL,
TYPE_PLAYING,
TYPE_COMPLETE,
TYPE_BUTTON_MAX,
};
public:
uiMissionObject(InterfaceManager* ui_manager);
~uiMissionObject();
virtual void Init(CDrawBase* draw_base);
virtual void Release();
virtual void OnUpdateSolarDialog();
virtual void OnRenderSolarDialog();
virtual void Process(DWORD tick_count);
virtual void OnShowWindow(BOOL open_value);
virtual void MessageProc(SI_MESSAGE* message);
virtual void NetworkProc(MSG_BASE* message);
virtual void MouseOver_MsgProc(SI_MESSAGE* message);
virtual void UpdatePosition();
bool MissionObjectComplete(DWORD trigger_id);
void CheckMissionObjectShow(DWORD trigger_id);
void SetMissionObjectMapCode(DWORD map_code, DWORD field_code);
protected:
CControlWZ* get_control(POSTYPE AtPos);
POSTYPE get_control_id_to_pos(WzID wzID);
private:
void MissionDataReflash();
void InitMissionList();
bool AddFormatText(const TCHAR* message);
void updateMouseWheel();
void InitLineText();
void ResetButton();
void UpdateToolTip();
void MissionNotice();
static WzID wz_control_id_[DLGPOS_MAX];
MISSION_OBJECT_LIST mission_object_all_;
CCtrlListWZ* mission_object_list_;
CCtrlStaticWZ* mission_title_;
CCtrlVScrollWZ* vertical_scroll_;
CCtrlButtonWZ* type_button_[TYPE_BUTTON_MAX];
FTextRender ftext_render_;
FTextSentence ftext_sentence_;
FTextParser ftext_parser_;
FTextParam ftext_param_;
int display_type_;
DWORD map_code_;
DWORD field_code_;
DWORD name_code_;
TCHAR line_string_[INTERFACE_STRING_LENGTH];
TCHAR complete_string_[INTERFACE_STRING_LENGTH];
DWORD tooltip_string_code;
bool line_update_;
DWORD mission_delay_tick_count_;
bool reflash_line_convert_;
};
inline CControlWZ* uiMissionObject::get_control(POSTYPE AtPos)
{
assert(AtPos < DLGPOS_MAX);
return GetControlWZ(wz_control_id_[AtPos]);
}
inline POSTYPE uiMissionObject::get_control_id_to_pos(WzID wzID)
{
for ( int i = 0; i < DLGPOS_MAX ; ++i)
{
if ( wz_control_id_[i] == wzID)
return i;
}
return DLGPOS_MAX;
}