diff options
Diffstat (limited to 'server/src/main.ts')
-rw-r--r-- | server/src/main.ts | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/server/src/main.ts b/server/src/main.ts new file mode 100644 index 0000000..0e47491 --- /dev/null +++ b/server/src/main.ts @@ -0,0 +1,59 @@ +import { Grid } from '@engine/structures'; +import { + ServerMessageProcessor, + ServerSocketMessagePublisher, + ServerSocketMessageReceiver, + MemorySessionManager, + SessionInputSystem +} from './network'; +import { Collision, NetworkUpdate, Physics, WallBounds } from '@engine/systems'; +import { Game } from '@engine/Game'; +import { Constants } from './constants'; +import { GameServer } from './server'; +import { Floor } from '@engine/entities'; +import { BoundingBox } from '@engine/components'; +import { Miscellaneous } from '@engine/config'; + +const game = new Game(); + +const sessionManager = new MemorySessionManager(); + +const messageReceiver = new ServerSocketMessageReceiver(); +const messagePublisher = new ServerSocketMessagePublisher(); +const messageProcessor = new ServerMessageProcessor(game, sessionManager); + +const server = new GameServer( + game, + messageReceiver, + messagePublisher, + sessionManager +); + +[ + new SessionInputSystem(sessionManager), + new NetworkUpdate(messageReceiver, messagePublisher, messageProcessor), + new Physics(), + new Collision(new Grid()), + new WallBounds() +].forEach((system) => game.addSystem(system)); + +const floor = new Floor(160); +const floorHeight = 200; + +floor.addComponent( + new BoundingBox( + { + x: Miscellaneous.WIDTH / 2, + y: Miscellaneous.HEIGHT + floorHeight / 2 + }, + { width: Miscellaneous.WIDTH, height: floorHeight } + ) +); +game.addEntity(floor); + +game.start(); +setInterval(() => { + game.doGameLoop(performance.now()); +}, Constants.SERVER_TICK_RATE); + +server.serve(); |