78 lines
2.1 KiB
C++
78 lines
2.1 KiB
C++
#include "asteroid/game.h"
|
|
#include "glfw/glfw_initialization.h"
|
|
#include "glfw/glfw_monitor.h"
|
|
#include "glfw/glfw_window.h"
|
|
#include "socket/iocp.h"
|
|
#include "socket/packet.h"
|
|
#include "socket/tcp_socket.h"
|
|
#include "socket/udp_socket.h"
|
|
#include "socket/wsa_manager.h"
|
|
#include "utils/log.h"
|
|
#include "utils/snowflake.h"
|
|
#include "vulkan_engine/vulkan/engine.h"
|
|
#include "vulkan_engine/vulkan/graphics.h"
|
|
|
|
std::uint8_t CLIENTID = 0;
|
|
|
|
std::int32_t main(std::int32_t argc, gsl::zstring* argv) {
|
|
Network::WSAManager wsamanager;
|
|
#if !defined(NDEBUG)
|
|
utils::setDefaultLogger(spdlog::level::level_enum::debug, "log.log", 1024, 2);
|
|
#endif
|
|
utils::ThreadPool tp(0);
|
|
Network::IOCP iocp;
|
|
iocp.init(&tp, SessionProtocol::TCP);
|
|
|
|
Network::Address addr;
|
|
in6_addr in6addr;
|
|
|
|
addr.set(AF_INET6, "::1", 9010);
|
|
|
|
Network::Socket sock;
|
|
Network::TCPSocket TCPSock;
|
|
TCPSock.init(AF_INET6);
|
|
sock = TCPSock;
|
|
if (sock.connect(addr) == INVALID_SOCKET) {
|
|
spdlog::error("connect()");
|
|
std::exit(EXIT_FAILURE);
|
|
}
|
|
iocp.registerTCPSocket(sock, 16 * 1024);
|
|
|
|
while (iocp.GetRecvedBytes(sock.sock) < 6);
|
|
std::vector<char> header_serialized(6);
|
|
iocp.recv(sock, header_serialized);
|
|
Packet::Header header;
|
|
header.Deserialize(header_serialized);
|
|
while (iocp.GetRecvedBytes(sock.sock) < header.body_length);
|
|
std::vector<char> data(header.body_length);
|
|
iocp.recv(sock, data);
|
|
::memcpy(&CLIENTID, data.data(), 1); //id 받기
|
|
|
|
const veng::GlfwInitialization _glfw;
|
|
|
|
veng::Window window("Vulkan Engine", {800, 600});
|
|
window.TryMoveToMonitor(0);
|
|
|
|
veng::Graphics graphics(&window);
|
|
veng::Engine engine(&graphics, &tp, &iocp);
|
|
|
|
engine.LoadModelAsset("assets/player.fbx", "player");
|
|
engine.LoadModelAsset("assets/player_flame.fbx", "player_flame");
|
|
engine.LoadModelAsset("assets/bullet.fbx", "bullet");
|
|
engine.LoadModelAsset("assets/background.fbx", "background");
|
|
|
|
engine.BeginPlay = BeginPlay;
|
|
engine.Tick = Tick;
|
|
|
|
engine.init();
|
|
|
|
while (!window.ShouldClose()) {
|
|
glfwPollEvents();
|
|
|
|
engine.Update();
|
|
engine.NetUpdate(std::make_shared<Network::Socket>(sock));
|
|
}
|
|
|
|
return EXIT_SUCCESS;
|
|
}
|