Main Page | Namespace List | Class Hierarchy | Compound List | File List | Compound Members | File Members

wind.h

Go to the documentation of this file.
00001 #ifndef WIND_H
00002 #define WIND_H
00003 
00004 #include <stdio.h>
00005 #include <math.h>
00006 #include <stdlib.h>
00007 
00008 typedef enum { 
00009   LONELY = 0,
00010   EMPTY, 
00011   INITIAL,
00012   READY } _tstage;
00013 
00014 typedef enum {
00015   NORTH = 0,
00016   NORTHWEST,
00017   WEST,
00018   SOUTHWEST,
00019   SOUTH,
00020   SOUTHEAST,
00021   EAST,
00022   NORTHEAST,
00023 } _tdirections;
00024 
00025 #define NET_WIDTH 8
00026 #define NET_HEIGHT 5
00027 #define WIND_CONE_DELTA 5.0f
00028 #define MAX_NEIGHBOURS 4
00029 #define MAX_WIND_SPEED 20
00030 
00031 class SNode;
00032 class SNode {
00033   public:
00034     SNode(unsigned char xx, unsigned char yy);
00035     char* get_stage() { return &stage;}
00036     void set_empty() { stage = EMPTY; }
00037     float* get_wind_speed() { return &speed;}
00038     float* get_wind_heading() { return &heading;}
00039     void  set_neighbour(char dir, SNode* other);
00040     void update_forbidden();
00041     void gen_random();
00042   protected:
00043     unsigned char x;
00044     unsigned char y;
00045     SNode* north;
00046     SNode* south;
00047     SNode* west;
00048     SNode* east;
00049     SNode* northwest;
00050     SNode* southwest;
00051     SNode* northeast;
00052     SNode* southeast;
00053     float forbidden_headings[MAX_NEIGHBOURS];
00054     signed char last_h;
00055     float speed;
00056     float heading;
00057     char stage;
00058     bool is_forbidden(float angle);
00059 };
00060 
00061 class SNet {
00062   public:
00063     SNet();
00064     ~SNet();
00065     float* get_wind(float x, float y);
00066   private:
00067     void clg();
00068     void chg();
00069     void initial_rn();
00070     SNode* sectors[NET_WIDTH][NET_HEIGHT];
00071 };
00072 
00073 class FNode : SNode {
00074   public:
00075     FNode(unsigned char xx, unsigned char yy);
00076 };
00077 
00078 #endif

Generated on Sat Jul 12 04:29:21 2003 for glPirates by doxygen 1.3.2