root / branches / cpp-ode / src / libmmpong / netgame_ode_pong.h @ 536

Revision 536, 2.3 kB (checked in by jan@…, 8 months ago)
  • forgot something... better now
Line 
1#ifndef __NETGAME_ODE_PONG_H__
2#define __NETGAME_ODE_PONG_H__
3
4#include "netgame_ode.h"
5#include "ode_box.h"
6#include "ode_sphere.h"
7
8namespace mmp {
9
10class NetGameODEPong : public NetGameODE {
11                //a similar block has to appear in every "leaf" game
12                //<-- Begin
13        friend class NetGameCreator;
14        private:
15                enum { classid = NetGame::ODEPong };
16        public:
17                static pointer create(NetCon::pointer cln_con_=NetCon::pointer()) {
18                        return pointer(new NetGameODEPong(cln_con_));
19                };
20                virtual NetGame::Class get_classid() { return (NetGame::Class)classid; };
21                //End -->
22        public:
23                NetGameODEPong(NetCon::pointer cln_con) : NetGameODE(cln_con) {
24                        classname="NetGameODEPong";
25                       
26                        //create 2 teams
27                        srv_teamid_cur=0;
28                        team2players[srv_teamid_cur++]=std::set<uint16_t>();
29                        team2players[srv_teamid_cur++]=std::set<uint16_t>();
30                       
31                        //ATTENTION: do not perform server-specific actions here
32                        //           => use srv_init() instead
33                };
34
35                typedef enum {
36                        PlayerEnter=0,
37                        PlayerId,
38                        PlayerLeave,
39                } CmdCustom;
40               
41                //client
42                virtual NetEnt::pointer cln_ent_update(NetMsg::pointer msg);
43                virtual void cln_msg_custom(NetMsg::pointer msg);
44
45                //server
46                virtual void srv_init() {
47                        //create bars on top and bottom
48                        //uint16_t entid;
49                        boost::shared_ptr<ODEBox>
50                                bartop=srv_ent_create<ODEBox>(),
51                                barbot=srv_ent_create<ODEBox>();
52                        bartop->geom.setLengths(2.0,0.05,0.05);
53                        bartop->setPosition(0.0, 1.05, 0.0);
54                        barbot->geom.setLengths(2.0,0.05,0.05);
55                        barbot->setPosition(0.0, -1.05, 0.0);
56                       
57                        boost::shared_ptr<ODESphere>
58                                ball=srv_ent_create<ODESphere>();
59                        ball->geom.setRadius(0.025);
60                };
61                virtual void srv_con_start(NetCon::pointer con);
62                virtual void srv_con_end(NetCon::pointer con);
63                virtual bool srv_msg_process(NetCon::pointer con, NetMsg::pointer msg);
64
65                void print_playerlist(); //mainly for debugging perposes :)
66        protected:
67                std::map<uint16_t, std::set<uint16_t> > team2players; //team2players[teamid] is a set of all playerids in team teamid;
68                std::map<uint16_t, uint16_t> player2team; //player2team[playerid] is teamid
69                std::map<uint16_t, uint16_t> player2pad; //player2pad[playerid] is entid
70
71                //server stuff
72                uint16_t srv_teamid_cur;
73                std::map<NetCon::pointer, uint16_t> srv_con2player; //srv_con2player[con]
74
75                //client stuff
76                uint16_t myplayerid, myteamid, mypadid;
77};
78
79}
80
81#endif
Note: See TracBrowser for help on using the browser.