Notify::Notify(){ //BOOST_ASSERT(!msg.empty()); //バルーンとタスクトレイの設定 //ZeroMemory(¬ifyData, sizeof(NOTIFYICONDATA)); this->notifyData = boost::shared_ptr<NOTIFYICONDATA>(new NOTIFYICONDATA(), NotifyDeleter() ); this->notifyData->cbSize = sizeof(NOTIFYICONDATA); this->notifyData->uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP | NIF_INFO; this->notifyData->uID = 0; this->notifyData->uCallbackMessage = WM_MYNOTIFY; this->notifyData->uTimeout = 1000; this->notifyData->hWnd = sys::Form::GetInst()->GetHandle(); this->notifyData->hIcon = (HICON)LoadIcon(NULL, IDI_APPLICATION); if(!this->notifyData->hWnd){ throw std::runtime_error("ウィンドウハンドルがnullです"); } _tcscpy_s(notifyData->szInfoTitle, _T("espoirが起動しました")); Stringstream str; str << _T("ここにデバッグメッセージやゲームの情報が表示されます") << std::endl; str << _T("ゲームが初期化されました") << std::endl; str << _T("■キャラクターが作成されました") << std::endl; str << _T("x = 100 y = 200"); _tcscpy_s(notifyData->szInfo, str.str().c_str()); _tcscpy_s(notifyData->szTip, _T("test")); if(!Shell_NotifyIcon(NIM_ADD, notifyData.get())){ //throw std::runtime_error("通知に失敗しました"); } DOut dout; dout << GetLastError() << std::endl; }
bool floatToString( float _value, String & _str ) { Stringstream ss; ss << _value; _str = ss.str(); return true; }
bool unsignedToString( uint32_t _value, String & _str ) { Stringstream ss; ss << _value; _str = ss.str(); return true; }
bool stringToFloat( const String & _str, float & _value ) { Stringstream ss; ss << _str; ss >> _value; if( ss.fail() == true ) { return false; } return true; }
bool stringToUnsigned( const String & _str, uint32_t & _value ) { Stringstream ss; ss << _str; ss >> _value; if( ss.fail() == true ) { return false; } return true; }
void Player::render() { if( this->isChangedScene() == true ) { return; } unsigned int debugMask = APPLICATION_SERVICE(m_serviceProvider) ->getDebugMask(); RenderObjectState state; state.viewport = m_renderViewport; state.camera = m_renderCamera; state.clipplane = m_renderClipplane; state.target = m_renderTarget; RenderServiceInterface * renderService = RENDER_SERVICE( m_serviceProvider ); if( m_scene != nullptr ) { m_scene->render( renderService, &state, debugMask ); } MODULE_SERVICE(m_serviceProvider) ->render( &state, debugMask ); RENDER_SERVICE(m_serviceProvider) ->endLimitRenderObjects(); if( m_arrow != nullptr ) { m_arrow->render( renderService, &state, debugMask ); } //# ifndef MENGINE_MASTER_RELEASE if( m_showDebugText != 0 ) { const RenderDebugInfo & rdi = RENDER_SERVICE(m_serviceProvider)->getDebugInfo(); const RenderTextureDebugInfo & rtdi = RENDERTEXTURE_SERVICE(m_serviceProvider)->getDebugInfo(); //size_t particlesCount = // Holder<ParticleEngine>::get()->getFrameParticlesCount(); uint32_t particlesCount = 0; Stringstream ss; ss << "FPS: " << m_fps << std::endl; if( m_showDebugText > 1 ) { const Resolution & contentResolution = APPLICATION_SERVICE( m_serviceProvider ) ->getContentResolution(); double sreenfillrate = rdi.fillrate / double( contentResolution.getWidth() * contentResolution.getHeight() ); ss << "Fillrate " << std::setiosflags(std::ios::fixed) << std::setprecision(2) << sreenfillrate << " (Object " << rdi.object << " Triangle " << rdi.triangle << ")" << std::endl; ss << "DIP: " << rdi.dips << std::endl; ERenderBatchMode mode = RENDER_SERVICE(m_serviceProvider) ->getBatchMode(); ss << "Smart Batch: " << mode << " " << rdi.batch << std::endl; ss << "Texture Memory Usage: " << (float)rtdi.textureMemory / (1024.f*1024.f) << std::endl; ss << "Texture Count: " << rtdi.textureCount << std::endl; ss << "Particles: " << particlesCount << std::endl; } if( m_showDebugText == 2 ) { class CompileResourceVisitor : public Visitor , public ConcreteVisitor<ResourceReference> { public: CompileResourceVisitor() : m_count(0) { } public: uint32_t getCount() const { return m_count; } protected: void accept( ResourceReference * _resource ) { if( _resource->isCompile() == false ) { return; } ++m_count; } protected: uint32_t m_count; }; CompileResourceVisitor crv; RESOURCE_SERVICE(m_serviceProvider) ->visitResources( &crv ); ss << "Resources: " << crv.getCount() << std::endl; PrefetcherDebugInfo pdInfo = PREFETCHER_SERVICE(m_serviceProvider) ->getDebugInfo(); ss << "Prefetcher " << pdInfo.receiverCount << std::endl; MousePickerSystemInterface * mousePickerSystem = PLAYER_SERVICE(m_serviceProvider)->getMousePickerSystem(); ss << "PickerTrapCount:" << mousePickerSystem->getPickerTrapCount() << std::endl; } else if( m_showDebugText == 3 ) { VisitorPlayerFactoryManager pfmv(m_serviceProvider, CONST_STRING(m_serviceProvider, Node), ss); PROTOTYPE_SERVICE(m_serviceProvider) ->visitGenerators( &pfmv ); } else if( m_showDebugText == 4 ) { class MyVisitorClassTypeScope : public pybind::visitor_class_type_scope { public: MyVisitorClassTypeScope( Stringstream & _ss ) : m_ss(_ss) , m_count(0) { } protected: void operator = ( const MyVisitorClassTypeScope & ) { } protected: void visit_scope( pybind::class_type_scope * _scope ) override { uint32_t count = _scope->getObjectCount(); if( count == 0 ) { return; } if( m_count % 3 == 0 ) { m_ss << "Py: "; } m_ss << _scope->get_name() << " " << count; if( m_count % 3 != 2 ) { m_ss << " "; } else { m_ss << std::endl; } ++m_count; } protected: Stringstream & m_ss; uint32_t m_count; }; pybind::kernel_interface * kernel = pybind::get_kernel(); MyVisitorClassTypeScope mvcts(ss); kernel->visit_types_scope( &mvcts ); } String text = ss.str(); TVectorString args; args.push_back( text ); m_debugText->setTextFormatArgs( args ); float gameViewportAspect; Viewport gameViewport; APPLICATION_SERVICE(m_serviceProvider) ->getGameViewport( gameViewportAspect, gameViewport ); m_debugText->setLocalPosition( mt::vec3f(gameViewport.begin, 0.f) ); const Resolution & resolution = APPLICATION_SERVICE( m_serviceProvider ) ->getCurrentResolution(); const Resolution & content = APPLICATION_SERVICE( m_serviceProvider ) ->getContentResolution(); mt::vec2f scale; content.calcScale( resolution, scale ); m_debugText->setScale( mt::vec3f( scale, 1.f ) ); m_debugText->render( renderService, &state, debugMask ); } //# endif //m_renderCamera2D->setLocalPosition( pos ); }