|
10 | 10 | #include "tick.h" |
11 | 11 | #include "config.h" |
12 | 12 | /**********************************************************************************************************************************************************************/ |
| 13 | +struct stcBox { |
| 14 | + uint left; |
| 15 | + uint right; |
| 16 | + uint top; |
| 17 | + uint bottom; |
| 18 | +}; |
| 19 | +typedef struct stcBox BOX; |
| 20 | +/**********************************************************************************************************************************************************************/ |
13 | 21 | void addNewCannonball(LOC, LOC); |
| 22 | +void checkForCollisons(void); |
| 23 | +bool checkCollide(BOX, BOX); |
| 24 | +void doCollision(uint, uint); |
| 25 | +BOX boxMaker(LOC); |
14 | 26 | /**********************************************************************************************************************************************************************/ |
15 | 27 | namespace Global { |
16 | 28 | #ifdef DEFINED_BUILD_MODE_PRIVATE |
@@ -83,7 +95,7 @@ int main(int argc, char *argv[]) { |
83 | 95 | Cannonballs[i].update(tempdeltat); |
84 | 96 | } //end if started |
85 | 97 | } //end for loop |
86 | | - |
| 98 | + checkForCollisons(); |
87 | 99 | CannonWindow.update(); |
88 | 100 | } while (!quit); |
89 | 101 | return 0; |
@@ -124,11 +136,38 @@ void addNewCannonball(LOC mouseC, LOC mouseO ) { |
124 | 136 | printf("You cannot add more cannonballs, please wait for some to decay.\n"); |
125 | 137 | } |
126 | 138 | /**********************************************************************************************************************************************************************/ |
127 | | -void checkCollide(LOC place1, LOC place2) { |
128 | | - |
| 139 | +void checkForCollisons() { //Checks every cannonball against every other cannonball to see if they collide |
| 140 | + BOX A, B; |
| 141 | + for(uint j = 0; j < DEFINED_CANNONBALL_LIMIT; j++) { |
| 142 | + A = boxMaker( Cannonballs[j].getplace() ); |
| 143 | + for (uint i = 0; i < DEFINED_CANNONBALL_LIMIT; i++) { |
| 144 | + if (Cannonballs[i].blnstarted && i != j) { |
| 145 | + B = boxMaker( Cannonballs[i].getplace() ); |
| 146 | + if ( checkCollide(A, B) ) { doCollision(j, i); } |
| 147 | + } //end if started and not same ball |
| 148 | + } //end for loop inner |
| 149 | + } //end for loop outer |
| 150 | +} |
| 151 | +/**********************************************************************************************************************************************************************/ |
| 152 | +bool checkCollide(BOX A, BOX B) { //checks if two objects (made with the BOXES collide) |
| 153 | + if( A.bottom <= B.top ){return false;} |
| 154 | + if( A.top >= B.bottom ){return false;} |
| 155 | + if( A.right <= B.left ){return false;} |
| 156 | + if( A.left >= B.right ){return false;} |
| 157 | + //If none of the sides from A are outside B |
| 158 | + return true; |
129 | 159 | } |
130 | 160 | /**********************************************************************************************************************************************************************/ |
131 | 161 | void doCollision(uint num1, uint num2) { |
132 | 162 |
|
133 | 163 | } |
134 | 164 | /**********************************************************************************************************************************************************************/ |
| 165 | +BOX boxMaker(LOC place) { |
| 166 | + BOX tempBOX; |
| 167 | + tempBOX.left = place.x; |
| 168 | + tempBOX.top = place.y; |
| 169 | + tempBOX.bottom = tempBOX.top + 10; |
| 170 | + tempBOX.right = tempBOX.left + 10; |
| 171 | + return tempBOX; |
| 172 | +} |
| 173 | +/**********************************************************************************************************************************************************************/ |
0 commit comments