Revision: 2483
          http://rigsofrods.svn.sourceforge.net/rigsofrods/?rev=2483&view=rev
Author:   ulteq
Date:     2012-04-28 18:17:06 +0000 (Sat, 28 Apr 2012)
Log Message:
-----------
-Feature: Vehicle name now part of the packet

Modified Paths:
--------------
    trunk/source/main/gameplay/OutProtocol.cpp
    trunk/source/main/gameplay/OutProtocol.h

Modified: trunk/source/main/gameplay/OutProtocol.cpp
===================================================================
--- trunk/source/main/gameplay/OutProtocol.cpp  2012-04-27 17:09:16 UTC (rev 
2482)
+++ trunk/source/main/gameplay/OutProtocol.cpp  2012-04-28 18:17:06 UTC (rev 
2483)
@@ -20,83 +20,22 @@
 
 #include "BeamEngine.h"
 #include "BeamFactory.h"
-#include "OutProtocol.h"
 #include "RoRVersion.h"
 #include "Settings.h"
 
+#include "OutProtocol.h"
 
-#ifdef WIN32
-#include <Ws2tcpip.h>
-#define PACK( __Declaration__ ) __pragma( pack(push, 1) ) __Declaration__ 
__pragma( pack(pop) )
-#else
-#define PACK( __Declaration__ ) __Declaration__ __attribute__((__packed__))
-#endif //WIN32
-
-using namespace std;
-
-// from LFS/doc/insim.txt
-enum
-{
-       OG_SHIFT      = 1,           // key
-       OG_CTRL       = 2,           // key
-       OG_TURBO      = 8192,        // show turbo gauge
-       OG_KM         = 16384,       // if not set - user prefers MILES
-       OG_BAR        = 32768,       // if not set - user prefers PSI
-};
-
-enum
-{
-       DL_SHIFT      = BITMASK(1),  // bit 0   - shift light
-       DL_FULLBEAM   = BITMASK(2),      // bit 1       - full beam
-       DL_HANDBRAKE  = BITMASK(3),      // bit 2       - handbrake
-       DL_PITSPEED   = BITMASK(4),      // bit 3       - pit speed limiter
-       DL_TC         = BITMASK(5),      // bit 4       - TC active or switched 
off
-       DL_SIGNAL_L   = BITMASK(6),      // bit 5       - left turn signal
-       DL_SIGNAL_R   = BITMASK(7),      // bit 6       - right turn signal
-       DL_SIGNAL_ANY = BITMASK(8),  // bit 7   - shared turn signal
-       DL_OILWARN    = BITMASK(9),  // bit 8   - oil pressure warning
-       DL_BATTERY    = BITMASK(10), // bit 9   - battery warning
-       DL_ABS        = BITMASK(11), // bit 10  - ABS active or switched off
-       DL_SPARE      = BITMASK(12), // bit 11
-       DL_NUM        = BITMASK(13)  // bit 14  - end
-};
-
-PACK (struct OutGaugePack
-{
-       unsigned int   Time;         // time in milliseconds (to check order)
-       char           Car[4];       // Car name
-       unsigned short Flags;        // Info (see OG_x below)
-       unsigned char  Gear;         // Reverse:0, Neutral:1, First:2...
-       unsigned char  PLID;         // Unique ID of viewed player (0 = none)
-       float              Speed;                // M/S
-       float              RPM;              // RPM
-       float              Turbo;                // BAR
-       float              EngTemp;              // C
-       float              Fuel;                 // 0 to 1
-       float              OilPressure;  // BAR
-       float              OilTemp;              // C
-       unsigned int   DashLights;   // Dash lights available (see DL_x below)
-       unsigned int   ShowLights;   // Dash lights currently switched on
-       float              Throttle;     // 0 to 1
-       float              Brake;        // 0 to 1
-       float              Clutch;       // 0 to 1
-       char           Display1[16]; // Usually Fuel
-       char           Display2[16]; // Usually Settings
-       int                        ID;           // optional - only if OutGauge 
ID is specified
-});
-
 OutProtocol::OutProtocol(void) : 
-         counter(0)
-       , delay(0.1)
+         delay(0.1f)
        , id(0)
        , mode(0)
        , sockfd(-1)
        , timer(0)
        , working(false)
 {
-       delay = FSETTING("OutGauge Delay", 10) * 0.1f;
-       mode  = ISETTING("OutGauge Mode", 0);
-       id    = ISETTING("OutGauge ID", 0);
+       delay *= FSETTING("OutGauge Delay", 10);
+       mode   = ISETTING("OutGauge Mode", 0);
+       id     = ISETTING("OutGauge ID", 0);
 
        if ( mode > 0 )
        {
@@ -123,7 +62,7 @@
        SWBaseSocket::SWBaseError error;
 
        // get some settings
-       string ipstr = SSETTING("OutGauge IP", "192.168.1.100");
+       String ipstr = SSETTING("OutGauge IP", "192.168.1.100");
        int port     = ISETTING("OutGauge Port", 1337);
        
        // startup winsock
@@ -152,7 +91,7 @@
        sendaddr.sin_addr.s_addr = inet_addr(ip);
        sendaddr.sin_port        = htons(port);
 
-       // then connect
+       // connect
        if( connect(sockfd, (struct sockaddr *) &sendaddr, sizeof(sendaddr)) == 
SOCKET_ERROR )
        {
                LOG(String("error connecting socket for OutGauge: 
").append(strerror(errno)));
@@ -161,7 +100,9 @@
 
        LOG("OutGauge connected successfully");
        working = true;
-#endif // WIN32
+#else
+       // TODO: fix linux
+#endif //WIN32
 }
 
 bool OutProtocol::update(float dt)
@@ -185,11 +126,10 @@
        memset(&gd, 0, sizeof(gd));
 
        // set some common things
-       gd.Time = counter++;
-       sprintf(gd.Display1, "RoR v %s", ROR_VERSION_STRING);
-       gd.ID = id;
-       sprintf(gd.Car, "RoR");
+       gd.Time  = Ogre::Root::getSingleton().getTimer()->getMilliseconds();
+       gd.ID    = id;
        gd.Flags = 0 | OG_KM;
+       sprintf(gd.Car, "RoR");
 
        Beam *truck = BeamFactory::getSingleton().getCurrentTruck();
        if ( !truck )
@@ -200,28 +140,24 @@
        {
                // no engine?
                sprintf(gd.Display2, "no engine");
-       } else if( truck && truck->engine )
+       } else if ( truck && truck->engine )
        {
                // truck and engine valid
                if ( truck->engine->hasturbo )
                {
                        gd.Flags |= OG_TURBO;
                }
-               gd.Gear    = truck->engine->getGear() + 1;
-               if ( gd.Gear < 0 )
-               {
-                       gd.Gear = 0; // we only support one reverse gear
-               }
-               gd.PLID    = 0;
-               gd.Speed   = fabs(truck->WheelSpeed);
-               gd.RPM     = truck->engine->getRPM();
-               gd.Turbo   = truck->engine->getTurboPSI();
-               gd.EngTemp = 0;     // TODO
-               gd.Fuel    = 0;     // TODO
+               gd.Gear        = std::max(0, truck->engine->getGear() + 1); // 
we only support one reverse gear
+               gd.PLID        = 0;
+               gd.Speed       = fabs(truck->WheelSpeed);
+               gd.RPM         = truck->engine->getRPM();
+               gd.Turbo       = truck->engine->getTurboPSI();
+               gd.EngTemp     = 0; // TODO
+               gd.Fuel        = 0; // TODO
                gd.OilPressure = 0; // TODO
-               gd.OilTemp = 0;     // TODO
+               gd.OilTemp     = 0; // TODO
 
-               gd.DashLights = 0;
+               gd.DashLights  = 0;
                gd.DashLights |= DL_HANDBRAKE;
                gd.DashLights |= DL_BATTERY;
                gd.DashLights |= DL_SIGNAL_L;
@@ -244,7 +180,11 @@
                gd.Brake    = truck->brake / truck->brakeforce;
                gd.Clutch   = truck->engine->getClutch(); // 0-1
 
-               strncpy(gd.Display2, truck->realtruckname.c_str(), 15);
+               strncpy(gd.Display1, truck->realtruckname.c_str(), 15);
+               if ( truck->realtruckname.length() > 15 )
+               {
+                       strncpy(gd.Display2, truck->realtruckname.c_str() + 15, 
15);
+               }
        }
        // send the package
        send(sockfd, (const char*)&gd, sizeof(gd), NULL);

Modified: trunk/source/main/gameplay/OutProtocol.h
===================================================================
--- trunk/source/main/gameplay/OutProtocol.h    2012-04-27 17:09:16 UTC (rev 
2482)
+++ trunk/source/main/gameplay/OutProtocol.h    2012-04-28 18:17:06 UTC (rev 
2483)
@@ -20,8 +20,8 @@
 
 // created by Thomas Fischer thomas{AT}thomasfischer{DOT}biz, 17th of July 2011
 
-#ifndef OUTPROTCOL_H__
-#define OUTPROTCOL_H__
+#ifndef _OUTPROTCOL_H__
+#define _OUTPROTCOL_H__
 
 #include "RoRPrerequisites.h"
 #include "Singleton.h"
@@ -30,22 +30,82 @@
 #include "SocketW.h"
 #endif //USE_SOCKETW
 
+#ifdef WIN32
+#include <Ws2tcpip.h>
+#define PACK( __Declaration__ ) __pragma( pack(push, 1) ) __Declaration__ 
__pragma( pack(pop) )
+#else
+#define PACK( __Declaration__ ) __Declaration__ __attribute__((__packed__))
+#endif //WIN32
+
 class OutProtocol : public RoRSingleton< OutProtocol >
 {
 public:
+
        OutProtocol(void);
        ~OutProtocol(void);
 
        bool update(float dt);
-protected:
-       int sockfd;
+
+private:
+
+       bool working;
        float delay, timer;
+       int id;
        int mode;
-       int id;
-       bool working;
-       unsigned counter;
+       int sockfd;
 
        void startup();
+
+       // from LFS/doc/insim.txt
+       enum
+       {
+               OG_SHIFT      = 1,           // key
+               OG_CTRL       = 2,           // key
+               OG_TURBO      = 8192,        // show turbo gauge
+               OG_KM         = 16384,       // if not set - user prefers MILES
+               OG_BAR        = 32768,       // if not set - user prefers PSI
+       };
+
+       enum
+       {
+               DL_SHIFT      = BITMASK(1),  // bit 0   - shift light
+               DL_FULLBEAM   = BITMASK(2),      // bit 1       - full beam
+               DL_HANDBRAKE  = BITMASK(3),      // bit 2       - handbrake
+               DL_PITSPEED   = BITMASK(4),      // bit 3       - pit speed 
limiter
+               DL_TC         = BITMASK(5),      // bit 4       - TC active or 
switched off
+               DL_SIGNAL_L   = BITMASK(6),      // bit 5       - left turn 
signal
+               DL_SIGNAL_R   = BITMASK(7),      // bit 6       - right turn 
signal
+               DL_SIGNAL_ANY = BITMASK(8),  // bit 7   - shared turn signal
+               DL_OILWARN    = BITMASK(9),  // bit 8   - oil pressure warning
+               DL_BATTERY    = BITMASK(10), // bit 9   - battery warning
+               DL_ABS        = BITMASK(11), // bit 10  - ABS active or 
switched off
+               DL_SPARE      = BITMASK(12), // bit 11
+               DL_NUM        = BITMASK(13)  // bit 14  - end
+       };
+
+       PACK (struct OutGaugePack
+       {
+               unsigned int   Time;         // time in milliseconds (to check 
order)
+               char           Car[4];       // Car name
+               unsigned short Flags;        // Info (see OG_x below)
+               unsigned char  Gear;         // Reverse:0, Neutral:1, First:2...
+               unsigned char  PLID;         // Unique ID of viewed player (0 = 
none)
+               float              Speed;                // M/S
+               float              RPM;              // RPM
+               float              Turbo;                // BAR
+               float              EngTemp;              // C
+               float              Fuel;                 // 0 to 1
+               float              OilPressure;  // BAR
+               float              OilTemp;              // C
+               unsigned int   DashLights;   // Dash lights available (see DL_x 
below)
+               unsigned int   ShowLights;   // Dash lights currently switched 
on
+               float              Throttle;     // 0 to 1
+               float              Brake;        // 0 to 1
+               float              Clutch;       // 0 to 1
+               char           Display1[16]; // Usually Fuel
+               char           Display2[16]; // Usually Settings
+               int                        ID;           // optional - only if 
OutGauge ID is specified
+       });
 };
 
-#endif // OUTPROTCOL_H__
+#endif // _OUTPROTCOL_H__

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Rigsofrods-devel mailing list
Rigsofrods-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rigsofrods-devel

Reply via email to