Main
-
[014] 로그인서버2Programming/Dev 2024. 6. 24. 20:09
블로그 글은 오랜만이다.서버 쪽 지식이 없어서 나중에 다시 볼 수 있도록 기록용으로 남겨보려고 한다. class SocketManager : public TSingleton{public: SocketManager(); ~SocketManager(); void Render();private: void Run(std::stop_token stoken); void OnAccept(); void OnReceive(User* user, unsigned long ioSize); void OnDisconnect(User* user);private: HANDLE m_hIOCP; std::array m_threads; // Accept 관련 SOCKET m_..
-
[013] Direct2D 렌더링 코드 구조 변경Programming/Dev 2023. 11. 5. 21:32
데이터베이스 DLL을 따로 뺀 것 처럼 데이터 파일 읽는 것도 클라이언트, 서버 모두 사용할 것이므로 DLL로 빼는 작업을 하고 있다. 해당 작업을 하면서 Direct2D 렌더링 할 때 굳이 보여줄 필요 없는 부분은 보여주지 않으려고 한다. namespace Renderer2D { ComPtr g_ctx{}; void DrawImage(const std::shared_ptr& image, const INT2& position, float opacity) { Resource::UseAsD2D(g_ctx, image); INT2 size{ Resource::GetSize(image) }; g_ctx->DrawBitmap( static_cast(*image), RECTF{ static_cast(position..
-
[012] 로그인서버1Programming/Dev 2023. 9. 26. 18:50
클라이언트는 캐릭터 움직이는 것까지는 되니, 이젠 서버를 만들어보았다. 서버라고 GUI 없이 콘솔로 하기엔 좀 그래서Imgui를 이용하여 GUI도 구현해보았다. void Connection::OnCreate(){ SQLRETURN rc{ SQL_SUCCESS }; rc = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, std::addressof(m_hEnv)); rc = SQLSetEnvAttr(m_hEnv, SQL_ATTR_ODBC_VERSION, reinterpret_cast(SQL_OV_ODBC3), NULL); rc = SQLAllocHandle(SQL_HANDLE_DBC, m_hEnv, std::addressof(m_hD..
-
[011] 이벤트 매니저Programming/Dev 2023. 8. 29. 19:44
특정 상황 때 호출되어야 하는 함수들을 관리해주는 `class EventManager`를 만들어보았다. 이 클래스는 싱글톤으로 해서 어디서든지 이벤트 함수를 등록할 수 있게 했다. class EventManager : public TSingleton { public: EventManager() = default; ~EventManager() = default; void Clear(); public: Event OnSceneChange; }; 이벤트 매니저 클래스 자체는 간단하다. Clear 함수는 모든 이벤트 함수들을 없애주는 함수이다. 여기서 `Event OnSceneChange` 변수에 씬이 변경될 때 호출될 이벤트 함수들이 저장되어있다. template class Event { public: Eve..
-
[010] 플레이어 컨트롤2Programming/Dev 2023. 7. 29. 21:07
[009] 플레이어 컨트롤에서 작업했던 코드들을 좀 더 다듬고, 플렛폼 관련 버그를 수정했다. void Player::InputComponent::Update(FLOAT deltaTime) { // 좌우 이동 int dir{ 0 }; if (GetAsyncKeyState(VK_LEFT) & 0x8000) --dir; if (GetAsyncKeyState(VK_RIGHT) & 0x8000) ++dir; m_player->SetDirection(static_cast(dir)); // 점프 if (GetAsyncKeyState('C') & 0x8000 && m_player->m_physicsComponent.CanJump()) { m_player->OnJump(); } } 이전에는 InputComponent:..