// Called from main thread int NetplayEventHook(const SDL_Event *event) { if(event->type == SDL_USEREVENT) switch(event->user.code) { case CEVT_NP_LINE_RESPONSE: { inputable = (event->user.data1 != NULL); if(event->user.data2 != NULL) { viewable = true; LastTextTime = Time::MonoMS(); } } break; case CEVT_NP_TOGGLE_TT: // // FIXME: Setting manager mutex needed example! // if(viewable && !inputable) { inputable = TRUE; } else { viewable = !viewable; inputable = viewable; } break; case CEVT_NP_DISPLAY_TEXT: NetConsole.WriteLine((char*)event->user.data1); free(event->user.data1); if(!(bool)event->user.data2) { viewable = 1; LastTextTime = Time::MonoMS(); } break; } if(!inputable) return(1); return(NetConsole.Event(event)); }
// Called from main thread int NetplayEventHook(const SDL_Event *event) { if(event->type == SDL_USEREVENT) switch(event->user.code) { case CEVT_NP_LINE_RESPONSE: { inputable = (event->user.data1 != NULL); if(event->user.data2 != NULL) { viewable = true; LastTextTime = SDL_GetTicks(); } } break; case CEVT_NP_TOGGLE_TT: NetConsole.SetFont(MDFN_GetSettingB("netplay.smallfont") ? MDFN_FONT_5x7 : MDFN_FONT_9x18_18x18); // FIXME: Setting manager mutex needed example! if(viewable && !inputable) { inputable = TRUE; } else { viewable = !viewable; inputable = viewable; } break; case CEVT_NP_DISPLAY_TEXT: NetConsole.WriteLine((UTF8*)event->user.data1); free(event->user.data1); if(!(bool)event->user.data2) { viewable = 1; LastTextTime = SDL_GetTicks(); } break; } if(!inputable) return(1); return(NetConsole.Event(event)); }
// Called from main thread void DrawNetplayTextBuffer(MDFN_Surface *surface, const MDFN_Rect *src_rect) { if(!viewable) { return; } if(!inputable) { if((int64)SDL_GetTicks() >= (LastTextTime + PopupTime)) { viewable = 0; return; } } NetConsole.ShowPrompt(inputable); NetConsole.Draw(surface, src_rect); }
// Called from main thread void Netplay_MT_Draw(const MDFN_PixelFormat& pformat, const int32 screen_w, const int32 screen_h) { if(!viewable) return; if(!inputable) { if((int64)Time::MonoMS() >= (LastTextTime + PopupTime)) { viewable = 0; return; } } NetConsole.ShowPrompt(inputable); // { const unsigned fontid = MDFN_GetSettingUI("netplay.console.font"); const int32 lines = MDFN_GetSettingUI("netplay.console.lines"); int32 scale = MDFN_GetSettingUI("netplay.console.scale"); MDFN_Rect srect; MDFN_Rect drect; if(!scale) scale = std::min<int32>(std::max<int32>(1, screen_h / 500), std::max<int32>(1, screen_w / 500)); srect.x = srect.y = 0; srect.w = screen_w / scale; srect.h = GetFontHeight(fontid) * lines; drect.x = 0; drect.y = screen_h - (srect.h * scale); drect.w = srect.w * scale; drect.h = srect.h * scale; BlitRaw(NetConsole.Draw(pformat, srect.w, srect.h, fontid), &srect, &drect); } }