Logo Search packages:      
Sourcecode: lbreakout2 version File versions  Download package

server.h

/***************************************************************************
                          server.h  -  description
                             -------------------
    begin                : 03/03/19
    copyright            : (C) 2003 by Michael Speck
    email                : kulkanie@gmx.net
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef __SERVER_H
#define __SERVER_H

/***** INCLUDES ************************************************************/

#ifdef HAVE_CONFIG_H
#include "../config.h"
#endif
#include <SDL.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <signal.h>
#include <time.h>
#include "../common/tools.h"
#include "../common/net.h"
#include "../common/messages.h"
#include "../common/list.h"
#include "../common/parser.h"
#include "../game/game.h"

/***** TYPE DEFINITIONS ****************************************************/

typedef struct {
      int      id;            /* global user id */
      char       name[20];
        int        no_comm;     /* user does not communicate: bots and disconnected
                                   users have this set True */
      int      bot;             /* if True this is a paddle bot */
        int        bot_level;   /* paddle speed in pix/sec */
      NetSocket  socket;      /* transmission socket */
      int      hidden;  /* True if chatroom user is not visible
                           (e.g. looking at game statistics or playing) */
      int      admin;   /* wether user logged in with admit rights */
      void     *game;   /* FIXME: I'M A BAD HACK: points to the current ServerGame
                                 if this user is playing */
      int      player_id;     /* 0 - challenger in game or 1 - challenged */
} ServerUser;

typedef struct {
      char       name[20];
      int      id;
      List     *users;  
} ServerChannel;

enum {
      SERVER_AWAIT_ACCEPT, /* the first user has created the game and is already
                        added. a challenge note is sent to the challenged
                        user. in this state the server awaits either a 
                        ACCEPTED or REFUSED message by the remote 
                        or a CANCEL, DISCONNECT by the challenger */
      SERVER_AWAIT_READY, /* await ready message from both users, then play */
      SERVER_PLAY,      /* now the game is actually running: valid messages are
                     paddle updates, pause requests, chat messages and exits */
      SERVER_PAUSE      /* game is paused and players may exchange chat messages
                     until one sends an UNPAUSE */
}; /* states of a server game */

typedef struct {
      ServerUser  *challenger;
      ServerUser  *challenged;      /* the two users that will play */

      char        name[20];   /* name of the levelset */
      int         diff;       /* difficulty level */
      int         rounds;           /* per level */
      int         frags;            /* DM: frags required to win */
      int         balls;            /* DM: number of balls a paddle may fire */
} ServerGameCtx;

typedef struct {
      int         id;         /* users join a game by sending its id */
      int         state;            /* current state as above */ 
      ServerUser  *users[2];  /* pointers to chat channel:
                                 0 - challenger
                                 1 - challenged */
      ServerChannel     *channel;   /* the channel the users are in */
      
      LevelSet    *set;       /* pointer to the current set */
      int         rounds_per_level;
      int         rounds;           /* level count * rounds per level */
      int         cur_round;  /* id of current round. level id
                                 is cur_round / rounds */
      int         cur_level;  /* id of current level */
      
      int         ready[2];   /* wether user has sent READY */
      Game        *game;            /* the actual game data used by server */
      GameStats   stats[2];   /* game stats: 
                                 0 - challenger
                                 1 - challenged */
      int         game_over;  /* True after last round was finalized
                                 and stats have been send. */
} ServerGame;

/***** PUBLIC FUNCTIONS ****************************************************/

#endif


Generated by  Doxygen 1.6.0   Back to index