/// 클랜가입 동의을 기다리고 있는지의 여부 bool IsWaitingClanJoiningAgree() { ZIDLResource* pResource = ZApplication::GetGameInterface()->GetIDLResource(); MWidget* pWidget = pResource->FindWidget("ClanJoinerAgreementWait"); if(pWidget!=NULL) { return pWidget->IsVisible(); } return false; }
/// 동의을 기다리고 있는지의 여부 - ui로 체크한다. bool IsWaitingRepliersAgreement() { ZIDLResource* pResource = ZApplication::GetGameInterface()->GetIDLResource(); MWidget* pWidget = pResource->FindWidget("ProposalAgreementWait"); if(pWidget!=NULL) { return pWidget->IsVisible(); } return false; }
bool ZGameInput::ShowCombatInputChat() { if( ZGetCombatInterface()->IsShowUI() && !ZGetCombatInterface()->IsShowResult() ) { // UI토글이 켜져 있을때만 채팅토글을 처리해준다. ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface(); if ((pCombatInterface) && (!pCombatInterface->IsChat()) && !ZGetGame()->IsReplay()) { MWidget* pWidget = ZGetGameInterface()->GetIDLResource()->FindWidget("112Confirm"); if (pWidget && pWidget->IsVisible()) return false; pCombatInterface->EnableInputChat(true); } } return true; }
void SetCountdown(const ZCOUNTDOWN& Countdown) { auto Callback = [Countdown = Countdown]() mutable { ZIDLResource* pResource = ZApplication::GetGameInterface()->GetIDLResource(); MWidget* pTargetWidget = pResource->FindWidget(Countdown.szTargetWidget); if (!pTargetWidget || !pTargetWidget->IsVisible()) return true; if (Countdown.nSeconds > 0) { if (Countdown.szLabelWidget != NULL) { ZIDLResource* pResource = ZApplication::GetGameInterface()->GetIDLResource(); MWidget* pWidget = pResource->FindWidget(Countdown.szLabelWidget); if (pWidget) { char buffer[256]; sprintf_safe(buffer, "%d", Countdown.nSeconds); pWidget->SetText(buffer); } } Countdown.nSeconds--; return false; } pTargetWidget->Show(false); if (Countdown.pCallBack) Countdown.pCallBack(); return true; }; ZApplication::GetTimer()->SetTimerEvent(1000, Callback); }
bool ZGameInput::OnEvent(MEvent* pEvent) { int sel = 0; if ((ZGetGameInterface()->GetState() != GUNZ_GAME)) return false; if ( ZGetGameInterface()->GetGame() == NULL ) return false; MWidget* pMenuWidget = ZGetGameInterface()->GetIDLResource()->FindWidget("CombatMenuFrame"); if ((pMenuWidget) && (pMenuWidget->IsVisible())) return false; MWidget* pChatWidget = ZGetGameInterface()->GetIDLResource()->FindWidget("CombatChatInput"); if ((pChatWidget) && (pChatWidget->IsVisible())) return false; MWidget* p112ConfirmWidget = ZGetGameInterface()->GetIDLResource()->FindWidget("112Confirm"); if (p112ConfirmWidget->IsVisible()) return false; #ifndef _PUBLISH if (m_pInstance) { if (m_pInstance->OnDebugEvent(pEvent) == true) return true; } #endif ZMyCharacter* pMyCharacter = ZGetGameInterface()->GetGame()->m_pMyCharacter; if ((!pMyCharacter) || (!pMyCharacter->GetInitialized())) return false; //////////////////////////////////////////////////////////////////////////// switch(pEvent->nMessage){ case MWM_HOTKEY: { int nKey = pEvent->nKey; ZHOTKEY *hk=ZGetConfiguration()->GetHotkey(nKey); //if(ProcessLowLevelCommand(hk->command.c_str())==false) char buffer[256]; strcpy(buffer,hk->command.c_str()); ZApplication::GetGameInterface()->GetChat()->Input(buffer); // ConsoleInputEvent(hk->command.c_str()); }break; case MWM_LBUTTONDOWN: { ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface(); if ( ZGetCombatInterface()->IsShowResult()) { if ( ((ZGetCombatInterface()->m_nReservedOutTime - timeGetTime()) / 1000) < 13) { if(ZGetGameClient()->IsLadderGame() || ZGetGameClient()->IsDuelTournamentGame()) ZChangeGameState(GUNZ_LOBBY); else ZChangeGameState(GUNZ_STAGE); return true; } } if (pCombatInterface->IsChat()) { pCombatInterface->EnableInputChat(false); } if (pCombatInterface->GetObserver()->IsVisible()) { pCombatInterface->GetObserver()->ChangeToNextTarget(); return true; } /* if ((pMyCharacter) && (pMyCharacter->IsDie())) //// 실서비스에서 스폰안되는 버그유발. 원인불명(_PUBLISH누락) 영구봉쇄. { // 혼자테스트할때 되살아나기 if(g_pGame->m_CharacterManager.size()==1) { #ifndef _PUBLISH ZGetGameInterface()->RespawnMyCharacter(); return true; #endif } }*/ if (ZGetGameInterface()->IsCursorEnable()) return false; } return true; case MWM_RBUTTONDOWN: { if (ZGetGameInterface()->GetCombatInterface()->IsChat()) { ZGetGameInterface()->GetCombatInterface()->EnableInputChat(false); } ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface(); if (pCombatInterface->GetObserver()->IsVisible()) { pCombatInterface->GetObserver()->NextLookMode(); } } return true; case MWM_MBUTTONDOWN: if (ZGetGameInterface()->GetCombatInterface()->IsChat()) { ZGetGameInterface()->GetCombatInterface()->EnableInputChat(false); } return true; case MWM_ACTIONRELEASED: { switch(pEvent->nKey){ case ZACTION_FORWARD: case ZACTION_BACK: case ZACTION_LEFT: case ZACTION_RIGHT: if (m_pInstance) m_pInstance->m_ActionKeyHistory.push_back(ZACTIONKEYITEM(ZGetGame()->GetTime(),false,pEvent->nKey)); return true; case ZACTION_DEFENCE: { if(ZGetGame()->m_pMyCharacter) ZGetGame()->m_pMyCharacter->m_statusFlags.Ref().m_bGuardKey = false; } return true; } }break; case MWM_ACTIONPRESSED: if ( !ZGetGame()->IsReservedSuicide()) // 자살 예정인 경우 대쉬를 할수없게 막는다 { switch(pEvent->nKey){ case ZACTION_FORWARD: case ZACTION_BACK: case ZACTION_LEFT: case ZACTION_RIGHT: case ZACTION_JUMP: if (m_pInstance) m_pInstance->m_ActionKeyHistory.push_back(ZACTIONKEYITEM(ZGetGame()->GetTime(),true,pEvent->nKey)); return true; case ZACTION_MELEE_WEAPON: { if ( !ZGetGame()->IsReplay()) ZGetGameInterface()->ChangeWeapon(ZCWT_MELEE); } return true; case ZACTION_PRIMARY_WEAPON: { if ( !ZGetGame()->IsReplay()) ZGetGameInterface()->ChangeWeapon(ZCWT_PRIMARY); } return true; case ZACTION_SECONDARY_WEAPON: { if ( !ZGetGame()->IsReplay()) ZGetGameInterface()->ChangeWeapon(ZCWT_SECONDARY); } return true; case ZACTION_ITEM1: case ZACTION_ITEM2: { int nIndex = pEvent->nKey - ZACTION_ITEM1 + ZCWT_CUSTOM1; if ( !ZGetGame()->IsReplay()) { ZGetGameInterface()->ChangeWeapon(ZChangeWeaponType(nIndex)); } } return true; case ZACTION_COMMUNITYITEM1: mlog("Community Item1 Selected!\n"); return true; case ZACTION_COMMUNITYITEM2: mlog("Community Item2 Selected!\n"); return true; case ZACTION_PREV_WEAPON: { if ( !ZGetGame()->IsReplay()) ZGetGameInterface()->ChangeWeapon(ZCWT_PREV); } return true; case ZACTION_NEXT_WEAPON: { if ( !ZGetGame()->IsReplay()) ZGetGameInterface()->ChangeWeapon(ZCWT_NEXT); } return true; case ZACTION_RELOAD: { if ( !ZGetGame()->IsReplay()) ZGetGameInterface()->Reload(); } return true; case ZACTION_DEFENCE: { if ( ZGetGame()->m_pMyCharacter && !ZGetGame()->IsReplay()) ZGetGame()->m_pMyCharacter->m_statusFlags.Ref().m_bGuardKey = true; } return true; case ZACTION_TAUNT: // 틸다키 case ZACTION_BOW: case ZACTION_WAVE: case ZACTION_LAUGH: case ZACTION_CRY: case ZACTION_DANCE: { if ( ZGetGame()->IsReplay()) break; if ( MEvent::GetShiftState()) break; if(ZGetGameInterface()->GetCombatInterface()->GetObserverMode()) break; ZC_SPMOTION_TYPE mtype; if(pEvent->nKey == ZACTION_TAUNT) mtype = ZC_SPMOTION_TAUNT; else if(pEvent->nKey == ZACTION_BOW ) mtype = ZC_SPMOTION_BOW; else if(pEvent->nKey == ZACTION_WAVE ) mtype = ZC_SPMOTION_WAVE; else if(pEvent->nKey == ZACTION_LAUGH) mtype = ZC_SPMOTION_LAUGH; else if(pEvent->nKey == ZACTION_CRY ) mtype = ZC_SPMOTION_CRY; else if(pEvent->nKey == ZACTION_DANCE) mtype = ZC_SPMOTION_DANCE; else return true; if(ZGetGame()) ZGetGame()->PostSpMotion( mtype ); // ZPostSpMotion(mtype); } return true; case ZACTION_RECORD: { if ( ZGetGame() && !ZGetGame()->IsReplay()) ZGetGame()->ToggleRecording(); } return true; case ZACTION_MOVING_PICTURE: { // 동영상 캡쳐...2008.10.02 if (ZGetGameInterface()->GetBandiCapturer() != NULL) ZGetGameInterface()->GetBandiCapturer()->ToggleStart(); } return true; case ZACTION_TOGGLE_CHAT: { if(ZGetCombatInterface()->IsShowUI()) { // UI토글이 켜져 있을때만 채팅토글을 처리해준다. if (ZGetGame()) { ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface(); ZGetSoundEngine()->PlaySound("if_error"); pCombatInterface->ShowChatOutput(!ZGetConfiguration()->GetViewGameChat()); } } } return true; case ZACTION_USE_WEAPON: case ZACTION_USE_WEAPON2: { return true; } case ZACTION_SENSITIVITY_INC: case ZACTION_SENSITIVITY_DEC: { int nPrev = ZGetConfiguration()->GetMouseSensitivityInInt(); float senstivity = Z_MOUSE_SENSITIVITY; if (pEvent->nKey == ZACTION_SENSITIVITY_INC) senstivity += 0.01f; else senstivity -= 0.01f; ZGetConfiguration()->SetMouseSensitivityInFloat(senstivity); int nNew = ZGetConfiguration()->GetMouseSensitivityInInt(); ZGetConfiguration()->ReserveSave(); ZChatOutputMouseSensitivityChanged(nPrev, nNew); return true; } } // switch } break; case MWM_KEYDOWN: { ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface(); switch (pEvent->nKey) { case VK_F1: case VK_F2: case VK_F3: case VK_F4: case VK_F5: case VK_F6: case VK_F7: case VK_F8: if( pEvent->nKey == VK_F1 ) sel = 0; else if( pEvent->nKey == VK_F2 ) sel = 1; else if( pEvent->nKey == VK_F3 ) sel = 2; else if( pEvent->nKey == VK_F4 ) sel = 3; else if( pEvent->nKey == VK_F5 ) sel = 4; else if( pEvent->nKey == VK_F6 ) sel = 5; else if( pEvent->nKey == VK_F7 ) sel = 6; else if( pEvent->nKey == VK_F8 ) sel = 7; if(ZGetConfiguration()) { char* str = ZGetConfiguration()->GetMacro()->GetString( sel ); if(str) { if(ZApplication::GetGameInterface()) if(ZApplication::GetGameInterface()->GetChat()) ZApplication::GetGameInterface()->GetChat()->Input(str); } } return true; case VK_F9: if (ZIsLaunchDevelop()) { ZApplication::GetGameInterface()->GetScreenDebugger()->SwitchDebugInfo(); } else { // 애들이 어떻게 알고서 쓰길래 막음... -_-; // if (pEvent->bCtrl) // ZApplication::GetGameInterface()->GetScreenDebugger()->SwitchDebugInfo(); } return true; case VK_RETURN: case VK_OEM_2: { if (!ShowCombatInputChat()) return false; } return true; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'Y': case 'N': if (pCombatInterface->GetObserver()->IsVisible()) pCombatInterface->GetObserver()->OnKeyEvent(pEvent->bCtrl, pEvent->nKey); if (ZGetGameClient()->CanVote() || ZGetGameInterface()->GetCombatInterface()->GetVoteInterface()->GetShowTargetList() ) { ZGetGameInterface()->GetCombatInterface()->GetVoteInterface()->VoteInput(pEvent->nKey); } break; case VK_ESCAPE: // 메뉴를 부르거나 kick player를 취소한다 if (ZGetGameInterface()->GetCombatInterface()->GetVoteInterface()->GetShowTargetList()) { ZGetGameInterface()->GetCombatInterface()->GetVoteInterface()->CancelVote(); } else { ZGetGameInterface()->ShowMenu(!ZGetGameInterface()->IsMenuVisible()); ZGetGameInterface()->Show112Dialog(false); } return true; case 'M' : if ( ZGetGame()->IsReplay() && pCombatInterface->GetObserver()->IsVisible()) { if(ZGetGameInterface()->GetCamera()->GetLookMode()==ZCAMERA_FREELOOK) ZGetGameInterface()->GetCamera()->SetLookMode(ZCAMERA_MINIMAP); else ZGetGameInterface()->GetCamera()->SetLookMode(ZCAMERA_FREELOOK); } break; case 'T' : if(ZGetGame()->m_pMyCharacter->GetTeamID()==MMT_SPECTATOR && ZGetGame()->GetMatch()->IsTeamPlay() && pCombatInterface->GetObserver()->IsVisible()) { ZObserver *pObserver = pCombatInterface->GetObserver(); pObserver->SetType(pObserver->GetType()==ZOM_BLUE ? ZOM_RED : ZOM_BLUE); pObserver->ChangeToNextTarget(); } case 'H': if ( ZGetGame()->IsReplay() && pCombatInterface->GetObserver()->IsVisible()) { if ( ZGetGame()->IsShowReplayInfo()) ZGetGame()->ShowReplayInfo( false); else ZGetGame()->ShowReplayInfo( true); } break; case 'J': { #ifdef _CMD_PROFILE if ((pEvent->bCtrl) && (ZIsLaunchDevelop())) { #ifndef _PUBLISH ZGetGameClient()->m_CommandProfiler.Analysis(); #endif } #endif } break; #ifdef _DEBUG case 'K': { rvector pos = ZGetGame()->m_pMyCharacter->GetPosition(); pos.x+=1; ZGetGame()->m_pMyCharacter->SetPosition(pos); } break; case 'L': { rvector pos = ZGetGame()->m_pMyCharacter->GetPosition(); pos.x-=1; ZGetGame()->m_pMyCharacter->SetPosition(pos); } break; //case 'J': // { // ZGetGame()->m_pMyCharacter->GetPosition().z = ZGetGame()->m_pMyCharacter->GetPosition().z+1; // } // break; //case 'M': // { // ZGetGame()->m_pMyCharacter->GetPosition().z = ZGetGame()->m_pMyCharacter->GetPosition().z-1; // } // break; case 'U': { rvector pos = ZGetGame()->m_pMyCharacter->GetPosition(); pos.x = -3809; pos.y = -1330; pos.z = 100; ZGetGame()->m_pMyCharacter->SetPosition(pos); //ZGetGame()->m_pMyCharacter->GetPosition().x = -3809; //ZGetGame()->m_pMyCharacter->GetPosition().y = -1337.5; //ZGetGame()->m_pMyCharacter->GetPosition().z = 461; } break; #endif } } break; case MWM_CHAR: { ZMatch* pMatch = ZGetGame()->GetMatch(); if (pMatch->IsTeamPlay()) { switch(pEvent->nKey) { case '\'': case '\"': { ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface(); pCombatInterface->EnableInputChat(true, true); } return true; }; } // for deutsch, spanish keyboard if (pEvent->nKey == '/') { if (!ShowCombatInputChat()) return false; } } break; case MWM_SYSKEYDOWN: { // alt+a ~ z(65~90) if(pEvent->nKey==90){ // Alt+'Z' // 모든 UI 감추기... by kammir 20081020 ZGetCombatInterface()->SetIsShowUI(!ZGetCombatInterface()->IsShowUI()); if (ZGetGame()) { ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface(); ZGetSoundEngine()->PlaySound("if_error"); pCombatInterface->ShowChatOutput(ZGetCombatInterface()->IsShowUI()); } } } break; case MWM_MOUSEWHEEL: { if ( ZGetGame()->IsReplay()) break; int nDelta = pEvent->nDelta; if ( (ZGetMyInfo()->IsAdminGrade() && ZGetCombatInterface()->GetObserver()->IsVisible()) || (ZGetGameInterface()->GetScreenDebugger()->IsVisible()) || (!ZGetGameInterface()->m_bViewUI)) { ZCamera* pCamera = ZGetGameInterface()->GetCamera(); pCamera->m_fDist+=-(float)nDelta; pCamera->m_fDist=max(CAMERA_DIST_MIN,pCamera->m_fDist); pCamera->m_fDist=min(CAMERA_DIST_MAX,pCamera->m_fDist); break; } // if (nDelta > 0) ZGetGameInterface()->ChangeWeapon(ZCWT_PREV); // else if (nDelta < 0) ZGetGameInterface()->ChangeWeapon(ZCWT_NEXT); }break; case MWM_MOUSEMOVE: { if(ZGetGameInterface()->IsCursorEnable()==false) { return true; } } break; } // switch (message) return false; }