home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Games / flying-6.11 / carrom.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-30  |  3.3 KB  |  152 lines

  1. #ifndef _carrom_h
  2. #define _carrom_h
  3.  
  4. #ifndef _real_h
  5. #    include "real.h"
  6. #endif
  7. #ifndef _vec2_h
  8. #    include "vec2.h"
  9. #endif
  10. #ifndef _game_h
  11. #    include "game.h"
  12. #endif
  13.  
  14. class StaticArc;
  15. class StaticBall;
  16. class Wall;
  17. class Ball;
  18. class BallMover;        // forward
  19.  
  20. class Carrom : public Game {
  21.     public:
  22.         static Real TableWidth;
  23.         static Real TableHeight;
  24.  
  25.         Carrom(double wx=TableWidth, double wy=TableHeight);
  26.         virtual ~Carrom();
  27.  
  28.         virtual const Real & GetPresetA() const;
  29.         virtual const Real & GetPresetHaft() const;
  30.         virtual const Real & GetSlowGranularity() const;
  31.  
  32.         virtual const Real & GetNormalBallSize() const;
  33.  
  34.         virtual void InitPlayground();
  35.         virtual void DrawBackground() const;
  36.  
  37.         virtual const Real AreaOffX() const;
  38.         virtual const Real AreaOffY() const;
  39.         virtual const Real AreaWidth() const;
  40.         virtual const Real AreaHeight() const;
  41.  
  42.         virtual const Real TAreaOffX() const;
  43.         virtual const Real TAreaOffY() const;
  44.         virtual const Real TAreaWidth() const;
  45.         virtual const Real TAreaHeight() const;
  46.  
  47.         virtual const Real& GetChargeGranularity()    const;
  48.         virtual const Real& GetChargeSpeed()            const;
  49.         virtual const Real& GetMaxCharge()                const;
  50.         virtual const Real& GetShootTime()                const;
  51.  
  52.         virtual void AllBallsStopped();
  53.         virtual void InPocket( Ball *b );
  54.     private:
  55.                   void ResetToCenter(Ball *b);
  56.     public:
  57.         virtual int  IsSelectable(Ball *b);
  58.  
  59.     public:
  60.         static Real Offset;
  61.  
  62.         static Real PresetA;
  63.         static Real PresetHaft;
  64.         static Real SlowGranularity;
  65.  
  66.         static Real FrameOffset;
  67.         static Real ToPocket;
  68.         static Real Cushion;
  69.         static Real    PocketRadius;
  70.         static Real StoneRadius;
  71.         static Real StrikerRadius;
  72.         static Real StoneWeight;
  73.         static Real StrikerWeight;
  74.  
  75.         static Real PocketFrame;
  76.         static Real PocketWidth;
  77.  
  78.         static Real    ChargeGranularity;    // LΣnge eines Ladeschritts
  79.         static Real ChargeSpeed;            // Einheiten pro Sekunde (Aufladen)
  80.         static Real    MaxCharge;                // maximale Ladung
  81.         static Real ShootTime;                // Zeit der Entladeanimation
  82.  
  83.     protected:
  84.         void InitArea( double width, double height );
  85.         void Setup(double px, double py);            // Steine verteilen
  86.  
  87.         Real area_off_x;
  88.         Real area_off_y;
  89.         Real area_width;
  90.         Real area_height;
  91.  
  92.         BallMover    *mstone;
  93.         BallMover    *mstriker;
  94.  
  95.         ColorId        table_col;
  96.  
  97.         ColorId        table_red;
  98.         ColorId        table_green;
  99.         ColorId        table_black;
  100.  
  101.         ColorId        pocket_col;
  102.  
  103.     protected:
  104.         StaticArc    *p[4];            // Taschenobjekte
  105.         StaticBall    *e[4][2];        // Ecken am Taschenrand
  106.         Wall            *w[4];            // WΣnde zwischen Ecken am Taschenrand
  107.  
  108.         Ball            *white[9];        // Spielsteine
  109.         Ball            *black[9];
  110.         Ball            *queen;
  111.         Ball            *striker;
  112.  
  113.         int            striker_in_pocket;
  114.         int            queen_in_pocket;
  115.         int            whites_in_pocket;
  116.         int            blacks_in_pocket;
  117.  
  118.         Vec2        mid;                // Mittelpunktvektor
  119.         Vec2        base[4][2];        // Begrenzung der Grundlinien
  120.  
  121.         ColorId        white_col;
  122.         ColorId        black_col;
  123.         ColorId        striker_col;
  124.         ColorId        queen_col;
  125.  
  126.  
  127.     private:
  128.         Carrom(const Carrom &)    {}    // to overcome a BUG in 2.6.0 of g++
  129. };
  130.  
  131. class CarromDemo : public Carrom {
  132.     public:
  133.         CarromDemo( double s=40.0 ) : shot_speed(s)    {}
  134.         virtual ~CarromDemo();
  135.  
  136.         virtual const Real &GetPresetA() const;
  137.         virtual const Real &GetSlowGranularity() const;
  138.  
  139.         virtual void InitPlayground();
  140.         virtual void DrawBackground() const;
  141.  
  142.     private:
  143.         Real            shot_speed;
  144.  
  145.     public:
  146.         static Real    PresetA;
  147.         static Real    SlowGranularity;
  148. };
  149.  
  150. #endif
  151.  
  152.