Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
navscreenoccupied Class Reference

#include <navscreenoccupied.h>

Public Member Functions

 navscreenoccupied ()
 
 navscreenoccupied (float x_small, float x_large, float y_small, float y_large, bool _markreturned)
 
void reset ()
 
float findfreesector (float x, float y)
 
float findfreefloat (int &sector, float &y)
 

Detailed Description

Definition at line 6 of file navscreenoccupied.h.

Constructor & Destructor Documentation

navscreenoccupied::navscreenoccupied ( )

Definition at line 5 of file navscreenoccupied.cpp.

6 {
7  sector0 = 0;
8  sector1 = 0;
9  sector2 = 0;
10  sector3 = 0;
11  sector4 = 0;
12  sector5 = 0;
13  sector6 = 0;
14  sector7 = 0;
15  sector8 = 0;
16  sector9 = 0;
17 
18  screenskipby4[0] = -.5;
19  screenskipby4[1] = 0.5;
20  screenskipby4[2] = -.5;
21  screenskipby4[3] = 0.5;
22 
23  markreturned = 0;
24 }
navscreenoccupied::navscreenoccupied ( float  x_small,
float  x_large,
float  y_small,
float  y_large,
bool  _markreturned 
)

Definition at line 26 of file navscreenoccupied.cpp.

27 {
28  sector0 = 0;
29  sector1 = 0;
30  sector2 = 0;
31  sector3 = 0;
32  sector4 = 0;
33  sector5 = 0;
34  sector6 = 0;
35  sector7 = 0;
36  sector8 = 0;
37  sector9 = 0;
38 
39  screenskipby4[0] = x_small;
40  screenskipby4[1] = x_large;
41  screenskipby4[2] = y_small;
42  screenskipby4[3] = y_large;
43 
44  markreturned = _markreturned;
45 }

Member Function Documentation

float navscreenoccupied::findfreefloat ( int sector,
float y 
)

Definition at line 129 of file navscreenoccupied.cpp.

References checkbit(), dosetbit(), float, int, and y.

Referenced by findfreesector().

130 {
131  //convert the y into a height of 32
132  //scan that 32 down untill a free power
133  //set that power used and return its float
134 
135 //( [.2] - [-.5] ) / ( [.5] - [-.5] )
136 //( [.7] ) / ( [1] ) = .7
137  float percent = ( (y-screenskipby4[2])/(screenskipby4[3]-screenskipby4[2]) );
138 
139  percent = percent*31.0;
140  int bit = int(percent);
141 
142  float answer = y;
143  while ( checkbit( sector, bit ) )
144  bit -= 1;
145  if (bit < 0) {
146  bit = 0;
147  //run back up (0 -> 31 is upwards)
148  while ( checkbit( sector, bit ) )
149  bit += 1;
150  if (bit > 31) {
151  //was all full
152 
153  //set it to the default
154  return y;
155  } else {
156  //set the flaot to this %
157  percent = ( float(bit)/float(31) );
158  if (markreturned == 1)
159  dosetbit( sector, bit );
160  }
161  } else {
162  //set the float to this %
163  percent = ( float(bit)/float(31) );
164  if (markreturned == 1)
165  dosetbit( sector, bit );
166  }
167  answer = screenskipby4[2]+( (screenskipby4[3]-screenskipby4[2])*percent );
168  return answer;
169 }
float navscreenoccupied::findfreesector ( float  x,
float  y 
)

Definition at line 61 of file navscreenoccupied.cpp.

References findfreefloat().

Referenced by drawdescription(), and DrawNodeDescription().

62 {
63  float percent = ( (x-screenskipby4[0])/(screenskipby4[1]-screenskipby4[0]) );
64  float answer = 0.0;
65  //strange structure, but it uses n tests for n cases, instead of 2 '(x<y)&&(x>z)'-per-case
66  //though i could have done *10 and turned it onto an int... variety is fun
67  if (percent >= 0.1) {
68  //0.1 - n
69  if (percent >= 0.2) {
70  //0.2 - n
71  if (percent >= 0.3) {
72  //0.3 - n
73  if (percent >= 0.4) {
74  //0.4 - n
75  if (percent >= 0.5) {
76  //0.5 - n
77  if (percent >= 0.6) {
78  //0.6 - n
79  if (percent >= 0.7) {
80  //0.7 - n
81  if (percent >= 0.8) {
82  //0.8 - n
83  if (percent >= 0.9) //0.9 - n
84  answer = findfreefloat( sector9, y );
85  else //percent 0.8 - 0.9
86  answer = findfreefloat( sector8, y );
87  } else {
88  //percent 0.7 - 0.8
89 
90  answer = findfreefloat( sector7, y );
91  }
92  } else {
93  //percent 0.6 - 0.7
94 
95  answer = findfreefloat( sector6, y );
96  }
97  } else {
98  //percent 0.5 - 0.6
99 
100  answer = findfreefloat( sector5, y );
101  }
102  } else {
103  //percent 0.4 - 0.5
104 
105  answer = findfreefloat( sector4, y );
106  }
107  } else {
108  //percent 0.3 - 0.4
109 
110  answer = findfreefloat( sector3, y );
111  }
112  } else {
113  //percent 0.2 - 0.3
114 
115  answer = findfreefloat( sector2, y );
116  }
117  } else {
118  //percent 0.1 - 0.2
119 
120  answer = findfreefloat( sector1, y );
121  }
122  } else {
123  //(percent < 0.1)
124 
125  answer = findfreefloat( sector0, y );
126  }
127  return answer;
128 }
void navscreenoccupied::reset ( )

Definition at line 47 of file navscreenoccupied.cpp.

Referenced by NavigationSystem::Draw().

48 {
49  sector0 = 0;
50  sector1 = 0;
51  sector2 = 0;
52  sector3 = 0;
53  sector4 = 0;
54  sector5 = 0;
55  sector6 = 0;
56  sector7 = 0;
57  sector8 = 0;
58  sector9 = 0;
59 }

The documentation for this class was generated from the following files: