示例#1
0
void
LoginApp::MessageReceived(BMessage *message)
{
	bool reboot = false;

	switch (message->what) {
		case kAttemptLogin:
			message->PrintToStream();
			TryLogin(message);
			// TODO
			break;
#ifdef __ANTARES__
		case kHaltAction:
			reboot = false;
			// FALLTHROUGH
		case kRebootAction:
		{
			BRoster roster;
			BRoster::Private rosterPrivate(roster);
			status_t error = rosterPrivate.ShutDown(reboot, false, false);
			if (error < B_OK) {
				BString msg("Error: ");
				msg << strerror(error);
				(new BAlert("Error", msg.String(), "OK"))->Go();
			}
			break;
		}
		case kSuspendAction:
			(new BAlert("Error", "Unimplemented", "OK"))->Go();
			break;
#endif
	default:
		BApplication::MessageReceived(message);
	}
}
示例#2
0
//----------------------------------------------------------
void TMasterLogic::HandleFromMMOEngine(nsMMOEngine::TBaseEvent* pBE)
{
  std::string sEvent;  
  switch(pBE->mType)
  {
    case nsMMOEngine::eConnectDown:
      sEvent = "ConnectDown";
      ConnectDown((nsMMOEngine::TEventConnectDown*)pBE);
      break;
    case nsMMOEngine::eDisconnectDown:
      sEvent = "DisconnectDown";
      DisconnectDown((nsMMOEngine::TEventDisconnectDown*)pBE);
      break;
    case nsMMOEngine::eConnectUp:
      sEvent = "ConnectUp";
      ConnectUp((nsMMOEngine::TEventConnectUp*)pBE);
      break;
    case nsMMOEngine::eDisconnectUp:
      sEvent = "DisconnectUp";
      DisconnectUp((nsMMOEngine::TEventDisconnectUp*)pBE);
      break;
    case nsMMOEngine::eError:
    {
      char sError[300];
      nsMMOEngine::TEventError* pEr = (nsMMOEngine::TEventError*)pBE;
      sprintf(sError, "Error code=%u", pEr->code);
      sEvent = sError;
    }
      break;
    case nsMMOEngine::eRecvFromDown:
      sEvent = "RecvFromDown";
      break;
    case nsMMOEngine::eRecvFromUp:
      sEvent = "RecvFromUp";
      break;
    case nsMMOEngine::eTryLogin:
      sEvent = "TryLogin";
      TryLogin((nsMMOEngine::TEventTryLogin*)pBE);
      break;
    case nsMMOEngine::eDestroyGroup:
      sEvent = "DestroyGroup";
      break;
    default:BL_FIX_BUG();
  }
  GetLogger("Inner")->WriteF_time("MMOEngine: %s.\n",sEvent.data());
}
示例#3
0
void
LoginApp::MessageReceived(BMessage *message)
{
	bool reboot = false;

	switch (message->what) {
		case kAttemptLogin:
			message->PrintToStream();
			TryLogin(message);
			// TODO
			break;
#ifdef __HAIKU__
		case kHaltAction:
			reboot = false;
			// FALLTHROUGH
		case kRebootAction:
		{
			BRoster roster;
			BRoster::Private rosterPrivate(roster);
			status_t error = rosterPrivate.ShutDown(reboot, false, false);
			if (error < B_OK) {
				BString msg(B_TRANSLATE("Error: %1"));
				msg.ReplaceFirst("%1", strerror(error));
				BAlert* alert = new BAlert(("Error"), msg.String(),
					B_TRANSLATE("OK"));
				alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
				alert->Go();
			}
			break;
		}
		case kSuspendAction:
		{
			BAlert* alert = new BAlert(B_TRANSLATE("Error"),
				B_TRANSLATE("Unimplemented"), B_TRANSLATE("OK"));
			alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
			alert->Go();
			break;
		}
#endif
	default:
		BApplication::MessageReceived(message);
	}
}
示例#4
0
/***********************************************************
called to check for game events and handle them
***********************************************************/
void LbaNetEngine::HandleGameEvents()
{
    std::vector<GameEvent *> events;
    InternalWorkpile::getInstance()->GetPendingEvents(events);
    std::vector<GameEvent *>::iterator it = events.begin();
    std::vector<GameEvent *>::iterator end = events.end();
    for(; it != end; ++it)
    {
        switch((*it)->GetType())
        {
        case 1: // login event
            if(m_currentstate == ELogin)
            {
                //SaveCharToFile();
                LoginEvent * ev = static_cast<LoginEvent *> (*it);
                TryLogin(ev->_Name, ev->_Password);
                m_gui_handler.SetPlayerName(ev->_Name);
            }
            break;

        case 2: // gui exit event
            ExitGui();
            break;

        case 3: // change world event
        {
            ChangeWorldEvent * evcw = static_cast<ChangeWorldEvent *> (*it);
            ChangeWorld(evcw->_NewWorld);
        }
        break;

        case 4: // display gui event
        {
            DisplayGUIEvent * evdg = static_cast<DisplayGUIEvent *> (*it);
            DisplayGUI(evdg->_GuiNumber);
        }
        break;

        case 5: // GameServerAddressEvent
        {
            GameServerAddressEvent * evdg = static_cast<GameServerAddressEvent *> (*it);
            ConnectToGameServer(evdg->_ServerName, evdg->_ServerAddress);
        }
        break;

        case 6: // GameServerUnreachableEvent
        {
            GameErrorMessageEvent * evdg = static_cast<GameErrorMessageEvent *> (*it);
            GameErrorMessage(evdg->_Message);
        }
        break;

        case 7: // NewMapEvent
        {
            NewMapEvent * evdg = static_cast<NewMapEvent *> (*it);
            m_lbaNetModel.NewMapEvent(evdg->_MapName, evdg->_MapType);
            m_gui_handler.SetCurrentMap(evdg->_MapName);
        }
        break;



        case 8: // new font size event
        {
            m_gui_handler.ReloadFontSize();
        }
        break;

        //case 9: // teleport event
        //	{
        //		TeleportEvent * evcbe = static_cast<TeleportEvent *> (*it);
        //		m_lbaNetModel.ChangeMap(evcbe->_NewMap, evcbe->_Spawning);
        //	}
        //break;

        //case 10: // teleport event
        //	{
        //		ChangeMainBodyColorEvent * evcbe = static_cast<ChangeMainBodyColorEvent *> (*it);
        //		if(evcbe->_plus)
        //			m_lbaNetModel.IncreasePlayerBodyColor();
        //		else
        //			m_lbaNetModel.DecreasePlayerBodyColor();
        //	}
        //break;

        case 11: // display text event
        {
            if(m_currentstate == EGaming)
            {
                DisplayGameTextEvent * evcbe = static_cast<DisplayGameTextEvent *> (*it);
                m_gui_handler.DisplayGameText(evcbe->_textid);
            }
        }
        break;

        //case 12: // player scripted event
        //	{
        //		if(m_currentstate == EGaming)
        //		{
        //			MainPlayerScriptedEvent * evcbe = static_cast<MainPlayerScriptedEvent *> (*it);
        //			m_lbaNetModel.DoPlayerScriptedEvent(evcbe->_script);
        //		}
        //	}
        //break;

        //case 13: // game signal event
        //	{
        //		if(m_currentstate == EGaming)
        //		{
        //			GameSignalvent * evcbe = static_cast<GameSignalvent *> (*it);
        //			m_lbaNetModel.SignalEvent(evcbe->_signal, evcbe->_targets);
        //		}
        //	}
        //break;

        //case 14: // teleport anywere event
        //	{
        //		if(m_currentstate == EGaming)
        //		{
        //			TeleportAnyEvent * evcbe = static_cast<TeleportAnyEvent *> (*it);
        //			m_lbaNetModel.ChangeMap(evcbe->_NewMap, evcbe->_X, evcbe->_Y, evcbe->_Z, 0);
        //		}
        //	}
        //break;

        //case 15: // change perspective event
        //	{
        //		ChangePerspectiveEvent * evcs = static_cast<ChangePerspectiveEvent *> (*it);
        //		m_lbaNetModel.ChangePespective(evcs->_perspective);
        //	}
        //break;

        //case 16: // display exits event
        //	{
        //		DisplayExitsEvent * evcs = static_cast<DisplayExitsEvent *> (*it);
        //		m_lbaNetModel.DisplayExits(evcs->_display);
        //	}
        //break;

        //case 17: // playerhurt
        //	{
        //		PlayerHurtEvent * evcs = static_cast<PlayerHurtEvent *> (*it);
        //		m_lbaNetModel.PlayerHurt(evcs->_fromactorid);
        //	}
        //break;

        //case 18: // do full check
        //	{
        //		m_lbaNetModel.DoFullCheckEvent();
        //	}
        //break;

        //case 19: // player life changed
        //	{
        //		PlayerLifeChangedEvent * evcs = static_cast<PlayerLifeChangedEvent *> (*it);
        //		m_lbaNetModel.PlayerLifeChanged(evcs->_CurLife, evcs->_MaxLife,
        //											evcs->_CurMana, evcs->_MaxMana);

        //		_MaxLife = evcs->_MaxLife;
        //		_MaxMana = evcs->_MaxMana;
        //		_CurrentLife = evcs->_CurLife;
        //		if(_CurrentLife < 0)
        //			_CurrentLife = 0;
        //		_CurrentMana = evcs->_CurMana;
        //		if(_CurrentMana < 0)
        //			_CurrentMana = 0;
        //	}
        //break;

        //case 20: // player name color changed
        //	{
        //		PlayerNameColorChangedEvent * evcs =
        //			static_cast<PlayerNameColorChangedEvent *> (*it);
        //		m_lbaNetModel.SetPlayerNameColor(evcs->_R, evcs->_G, evcs->_B);
        //	}
        //break;

        //case 21: // change stance event
        //	{
        //		ChangeStanceEvent * evcs =
        //			static_cast<ChangeStanceEvent *> (*it);
        //		PlayerChangeStance(evcs->_stance);
        //	}
        //break;

        //case 22: // inventory used event
        //	{
        //		InventoryObjectUsedEvent * evcs =
        //			static_cast<InventoryObjectUsedEvent *> (*it);
        //		m_lbaNetModel.InventoryUsed(evcs->_ObjectId, _CurrentLife==_MaxLife, _CurrentMana==_MaxMana);
        //	}
        //break;

        case 23: // focus chatbox event
            FocusChatbox(true);
            break;

            //case 24: // display NPC dialog
            //	{
            //		DisplayDialogEvent * evcs =
            //			static_cast<DisplayDialogEvent *> (*it);
            //		m_guiHandler.ShowDialog(evcs->_ActorId, evcs->_ActorName, evcs->_Dialog,
            //									evcs->_Show, evcs->_inventory);
            //	}
            //break;


            //case 25: // object update event
            //	{
            //		ObjectUpdateEvent * evcs =
            //			static_cast<ObjectUpdateEvent *> (*it);

            //		if(!evcs->_Received)
            //		{
            //			std::stringstream strs;
            //			strs<<"You used "<<evcs->_Number<<" [colour='FFFFFFFF'][image='set:"<<ImageSetHandler::GetInstance()->GetInventoryMiniImage(evcs->_ObjectId)<<"   image:full_image']";
            //			ThreadSafeWorkpile::ChatTextData cdata;
            //			cdata.Channel = "All";
            //			cdata.Sender = "info";
            //			cdata.Text = strs.str();
            //			ThreadSafeWorkpile::getInstance()->AddChatData(cdata);
            //		}
            //		else
            //		{
            //			std::stringstream strs;
            //			strs<<"You received "<<evcs->_Number<<" [colour='FFFFFFFF'][image='set:"<<ImageSetHandler::GetInstance()->GetInventoryMiniImage(evcs->_ObjectId)<<"   image:full_image']";
            //			ThreadSafeWorkpile::ChatTextData cdata;
            //			cdata.Channel = "All";
            //			cdata.Sender = "info";
            //			cdata.Text = strs.str();
            //			ThreadSafeWorkpile::getInstance()->AddChatData(cdata);
            //		}
            //	}
            //break;
        }

        delete *it;
    }
}
示例#5
0
    void MasterWidget::ChangeContext(UiDefines::UiStates::ConnectionState new_state)
    {
        ui_state_ = (new_state == UiDefines::UiStates::NoStateChange ? ui_state_ : new_state);
        current_size_ = CleanSelf();

        switch (ui_state_)
        {
            case UiDefines::UiStates::Disconnected:
            {
                SAFE_DELETE(login_widget_);
                login_widget_ = new QWidget();
                login_ui_->setupUi(login_widget_);
                layout()->addWidget(login_widget_);
                to_be_removed_ << "login_ui_";

                config_helper_->SetPreviousData(login_ui_, login_helper_->GetPreviousCredentials());
                login_ui_->passwordLineEdit->setFocus(Qt::MouseFocusReason);
                if (!login_helper_->GetErrorMessage().isEmpty())
                    login_ui_->statusLabel->setText(login_helper_->GetErrorMessage());
                
                connect(login_ui_->connectPushButton, SIGNAL( clicked() ), login_helper_, SLOT( TryLogin() ));
                connect(login_ui_->presetsComboBox, SIGNAL( currentIndexChanged(int) ), this, SLOT( PresetSelected(int) ));
                connect(login_helper_, SIGNAL( StateChange(UiDefines::UiStates::ConnectionState) ), this, SLOT( ChangeContext(UiDefines::UiStates::ConnectionState) ));
                break;
            }
            case UiDefines::UiStates::Connecting:
            {
                SAFE_DELETE(loading_widget_);
                loading_widget_ = new QWidget();
                loading_ui_->setupUi(loading_widget_);
                layout()->addWidget(loading_widget_);
                to_be_removed_ << "loading_ui_";

                connect(loading_ui_->cancelPushButton, SIGNAL( clicked() ), login_helper_, SLOT( LoginCanceled() ));
                break;
            }
            case UiDefines::UiStates::Connected:
            {
                config_helper_->SaveLoginData(login_helper_->GetPreviousCredentials());

                SAFE_DELETE(session_manager_widget_);
                session_manager_widget_ = new QWidget();
                session_manager_ui_->setupUi(session_manager_widget_);
                layout()->addWidget(session_manager_widget_);
                to_be_removed_ << "session_manager_ui_";

                connect(session_manager_, SIGNAL( StateChange(UiDefines::UiStates::ConnectionState) ), this, SLOT( ChangeContext(UiDefines::UiStates::ConnectionState) ));
                session_manager_->Start(login_helper_->GetPreviousCredentials()["username"], login_helper_->GetConnectionInterface(), event_handler_);
                break;
            }
            case UiDefines::UiStates::Exit:
            {
                hide();
                return;
            }
        }
        resize(current_size_);
    }