本文整理汇总了C++中WorldSession::EnterWorldWithCharacter方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldSession::EnterWorldWithCharacter方法的具体用法?C++ WorldSession::EnterWorldWithCharacter怎么用?C++ WorldSession::EnterWorldWithCharacter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldSession
的用法示例。
在下文中一共展示了WorldSession::EnterWorldWithCharacter方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnUpdate
void SceneCharSelection::OnUpdate(s32 timepassed)
{
// treat doubleclick on listboxes as OK button click
if(eventrecv->HasGUIEvent())
{
const SEvent::SGUIEvent& ev = eventrecv->NextGUIEvent();
if(ev.EventType == EGET_LISTBOX_SELECTED_AGAIN)
{
if(ev.Caller == realmlistbox)
{
eventrecv->buttons |= BUTTON_REALMWIN_OK;
}
else if(ev.Caller == charlistbox)
{
eventrecv->buttons |= BUTTON_ENTER_WORLD;
}
}
if(ev.EventType == EGET_ELEMENT_CLOSED)
{
if(ev.Caller == realmwin)//realmwin got closed via the close button, remove pointer
{
realmwin = NULL;
}
if(ev.Caller == newcharwin)//got closed via the close button, remove pointer
{
newcharwin = NULL;
}
}
if(ev.EventType == EGET_COMBO_BOX_CHANGED)
{
if(ev.Caller == raceselect)
{
classselect->clear();
u32 class_name = classdb->GetFieldId("name");
u32 race_classmask = racedb->GetFieldId("classmask");
u32 classmask = racedb->GetInt(racemap[raceselect->getSelected()],race_classmask);
for(u32 i=1;i<=classdb->GetRowsCount();i++)
{
if(classmask & 1<<i)//if class is in classmask, put it into the list
{
core::stringw name = classdb->GetString(i,class_name);
classmap[classselect->addItem(name.c_str())]=i;
}
}
}
}
}
if(eventrecv->buttons & BUTTON_ENTER_WORLD && !realmwin && !newcharwin)
{
logdebug("GUI: SceneCharSelect: Entering world");
WorldSession *ws = instance->GetWSession();
if(ws)
{
u32 selected = charlistbox->getSelected();
if(selected < ws->GetCharsCount())
{
ws->EnterWorldWithCharacter(ws->GetCharFromList(selected).p._name);
}
else
logerror("Character selection out of bounds! (%u)",selected);
}
else
logerror("GUI: BUTTON_ENTER_ WORLD pressed, but no WorldSession exists!");
}
if(eventrecv->buttons & BUTTON_BACK && !realmwin && !newcharwin) // cant cancel with any window open (important for ESC key handling)
{
logdebug("GUI: SceneCharSelect: Back to Loginscreen");
gui->SetSceneState(SCENESTATE_LOGINSCREEN);
// disconnect from realm server if connected
if(RealmSession *rs = instance->GetRSession())
rs->SetMustDie();
if(WorldSession *ws = instance->GetWSession())
ws->SetMustDie();
}
if(eventrecv->buttons & BUTTON_DELETE_CHARACTER)
{
guienv->addMessageBox(L"Not yet implemented!", L"Deleting a character does not yet work!");
}
if(eventrecv->buttons & BUTTON_NEW_CHARACTER && !newcharwin)
{
dimension2d<s32> dim;
rect<s32> pos;
msgbox_textid = 0;
newcharwin = guienv->addWindow(CalcRelativeScreenPos(driver, 0.2f, 0.2f, 0.6f, 0.6f), true,
GetStringFromDB(ISCENE_CHARSEL_LABELS, DSCENE_CHARSEL_LABEL_NEWCHARWIN).c_str());
pos = newcharwin->getAbsolutePosition(); // get absolute position and transform <dim> to absolute in-window position
dim.Width = pos.LowerRightCorner.X - pos.UpperLeftCorner.X;
dim.Height = pos.LowerRightCorner.Y - pos.UpperLeftCorner.Y;
newcharwin->addChild(guienv->addButton(CalcRelativeScreenPos(dim, 0.7f, 0.93f, 0.12f, 0.05f), newcharwin, BUTTON_NEWCHARWIN_OK,
GetStringFromDB(ISCENE_CHARSEL_BUTTONS, DSCENE_CHARSEL_NEWCHARWIN_OK).c_str()));
newcharwin->addChild(guienv->addButton(CalcRelativeScreenPos(dim, 0.85f, 0.93f, 0.12f, 0.05f), newcharwin, BUTTON_NEWCHARWIN_CANCEL,
GetStringFromDB(ISCENE_CHARSEL_BUTTONS, DSCENE_CHARSEL_NEWCHARWIN_CANCEL).c_str()));
raceselect = guienv->addComboBox(CalcRelativeScreenPos(dim, 0.1f,0.1f,0.8f,0.05f), newcharwin);
u32 race_name = racedb->GetFieldId("name");
u32 race_classmask = racedb->GetFieldId("classmask");
for(u32 i=1;i<=racedb->GetRowsCount();i++)
//.........这里部分代码省略.........