Game

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Maps.h Source File

Maps.h

Go to the documentation of this file.
00001 //--------
00002 //  MAPS
00003 //--------
00004 
00005 /** All Map Data
00006 * @file Maps.h
00007 * @brief Contains all the data required for each track.
00008 * @author Henry W Triff
00009 * @date Mar, 2020
00010 */
00011 
00012 /**
00013 * @code
00014 * 
00015 * //        How maps are drawn:
00016 * //        > It is drawn very similar to the way a map is drawn
00017 * //        > I used grid paper and drew the maps then inputted the information by hand
00018 * //        > It uses a coordinate system where the origin point is where the car starts
00019 * //        
00020 * //        Explanation of each part of track:
00021 * //        > Track Lines = Lines showing the inside and outside of the track
00022 * //            - There is a 'to' point
00023 * //            - There is a 'from' point
00024 * //            - It does not matter which way around these are noted
00025 * //        > Dotted lines = Same as Track Lines bit with alternating pixels
00026 * //        > Flags = Starting / Finish line flags
00027 * //        > Walls = These are walls that indicate to the player that this area is out of bounds
00028 * //            - This works the same way as Track Lines except when drawn, the 4 (or however many specified) pixels above
00029 * //              are also drawn giving the impression of height
00030 * //            - There is a 'to' point
00031 * //            - There is a 'from' point
00032 * //            - It does not matter which way around these are noted
00033 * //        > Off Track square = These are square areas that are deemed off the track
00034 * //            - When the game runs, it checks to see if the players car is in these squares
00035 * //            - There is a 'TL' point
00036 * //            - There is a 'BR' point
00037 * //            - It is important that TL is always the top left point when drawing the map
00038 * //            - It is important that BR is always the bottom left point when drawing the map
00039 * //        > Off Track Triangle = These are triangular areas that are deemed off the track
00040 * //            - Very similar to Off Track Squares
00041 * //            - When the game runs, it checks to see if the players car is in these triangles
00042 * //            - There is a 'TL' point
00043 * //            - There is a 'BR' point
00044 * //            - There is a 'Type' int
00045 * //            - It is important that TL is always the top left point when drawing the map
00046 * //            - It is important that BR is always the bottom left point when drawing the map
00047 * //            - The Type is the direction the triangle is drawn (Where the Hypotenuse is)
00048 * //                - Types: (1 = Hyp in Top Right, 2 = Hyp in Bottom Right, 3 = Hyp in Bottom Left, 4 = Hyp in Top Left) 
00049 * //                - Exampe: The following triangle is type 2
00050 * //                _____
00051 * //                |   /
00052 * //                |  /
00053 * //                | /
00054 * //                |/
00055 * //                
00056 * //        > Out Of Bounds Square = These are square areas that are deemed out of bounds
00057 * //            - Works exactly the same as Off Track Square
00058 * //        > Out Of Bounds Triangle = These are triangular areas that are deemed off the track
00059 * //            - Works exactly the same as Off Track Triangle
00060 * //        > Gates = Used to check if a full lap has been completed
00061 * //            - For a player to complete a full lap, their car must pass through these gates as they do their lap
00062 * //            - If a gate is missed, then a lap is not completed
00063 * //            - This is used to prevent the player from reversing at the start and moving behind the finish line
00064 * //              then moving forward and the game thinking that a lap has been completed
00065 * //        > Boost plates = These are parts of the track that make cars go extra fast
00066 * //            - There is a 'TL' point
00067 * //            - There is a 'BR' point
00068 * //            - There is a 'Type' int
00069 * //            - It is important that TL is always the top left point when drawing the map
00070 * //            - It is important that BR is always the bottom left point when drawing the map
00071 * //            - The type is the direction of the arrow drawn on the boost plates
00072 * //            - Types: (1 = Pointing up, 2 = Pointing right, 3 = Pointing down, 4 = Pointing left)
00073 * //            - Example: The following boost plate is type 3
00074 * //            ______
00075 * //            |\  /|
00076 * //            | \/ |
00077 * //            ------ 
00078 * @endcode
00079 */
00080 
00081 //MAP - 1
00082 const Map_Data Map_1  = {36,1,18,20,14,20,9,5,12,0};
00083 
00084 //Lines
00085 const Line_2D Map_1_Track_Lines[36] = {
00086     //Inside Line
00087     {{-20,0},{-20,80}},
00088     {{-20,80},{-40,100}},
00089     {{-40,100},{-80,100}},
00090     {{-80,100},{-100,80}},
00091     {{-100,80},{-100,40}},
00092     {{-100,40},{-140,0}},
00093     {{-140,0},{-220,0}},
00094     {{-220,0},{-260,40}},
00095     {{-260,40},{-260,80}},
00096     {{-260,80},{-280,100}},
00097     {{-280,100},{-320,100}},
00098     {{-320,100},{-360,60}},
00099     {{-360,60},{-360,-100}},
00100     {{-360,-100},{-300,-160}},
00101     {{-300,-160},{-220,-80}},
00102     {{-220,-80},{-100,-80}},
00103     {{-100,-80},{-20,0}},
00104     //Outside Line
00105     {{20,-20},{20,100}},
00106     {{20,100},{-20,140}},
00107     {{-20,140},{-100,140}},
00108     {{-100,140},{-140,100}},
00109     {{-140,100},{-140,60}},
00110     {{-140,60},{-160,40}},
00111     {{-160,40},{-200,40}},
00112     {{-200,40},{-220,60}},
00113     {{-220,60},{-220,100}},
00114     {{-220,100},{-260,140}},
00115     {{-260,140},{-340,140}},
00116     {{-340,140},{-400,80}},
00117     {{-400,80},{-400,-120}},
00118     {{-400,-120},{-320,-200}},
00119     {{-320,-200},{-280,-200}},
00120     {{-280,-200},{-200,-120}},
00121     {{-200,-120},{-80,-120}},
00122     {{-80,-120},{20,-20}},
00123 };
00124 
00125 //Dotted Lines
00126 const Line_2D Map_1_Track_Dotted_Lines[1] = {
00127     {{-20,0},{20,0}},
00128 };
00129 
00130 //Flags
00131 const Sprite_2D Map_1_Sprites[18] = {
00132     {-24,0, Flag},
00133     {24,0, Flag},
00134     {-300,-50, Helicopter},
00135     
00136     {-40,162, People_Cheering},
00137     {-50,162, People_Standing_1},
00138     {-70,162, People_Standing_2},
00139     
00140     {42,-20, People_Cheering},
00141     {42,-10, People_Standing_1},
00142     {42,0, People_Cheering},
00143     {42,10, People_Standing_2},
00144     
00145     {-422,60, People_Cheering},
00146     {-422,50, People_Standing_1},
00147     {-422,40, People_Cheering},
00148     {-422,30, People_Standing_2},
00149     {-422,20, People_Standing_1},
00150     
00151     {-200,-58, People_Cheering},
00152     {-180,-58, People_Standing_1},
00153     {-170,-58, People_Standing_2}
00154 };
00155 
00156 //Walls
00157 const Line_2D Map_1_Walls[20] = {
00158     //Inside
00159     {{-40,80},{-40,0}},
00160     {{-40,0},{-100,-60}},
00161     {{-100,-60},{-240,-60}},
00162     {{-240,-60},{-300,-120}},
00163     {{-300,-120},{-340,-60}},
00164     {{-340,-60},{-340,60}},
00165     {{-340,60},{-280,60}},
00166     {{-280,60},{-280,-20}},
00167     {{-280,-20},{-100,-20}},
00168     {{-100,-20},{-80,0}},
00169     {{-80,0},{-80,80}},
00170     {{-80,80},{-40,80}},
00171     //Outside
00172     {{40,160},{40,-220}},
00173     {{40,-220},{-420,-220}},
00174     {{-420,-220},{-420,160}},
00175     {{-420,160},{-200,160}},
00176     {{-200,160},{-200,60}},
00177     {{-200,60},{-160,60}},
00178     {{-160,60},{-160,160}},
00179     {{-160,160},{40,160}},
00180 };
00181 
00182 //Off track? objects
00183 const Square_2D Map_1_Off_Track_Square[14] = {
00184     //Inside
00185     {{-100,80},{-20,0}},
00186     {{-80,100},{-40,80}},
00187     {{-260,0},{-100,-80}},
00188     {{-360,60},{-260,-100}},
00189     {{-320,100},{-280,60}},
00190     {{-280,80},{-260,60}},
00191     {{-300,-100},{-260,-120}},
00192     {{-200,60},{-160,40}},
00193     {{-220,140},{-140,60}},
00194     {{-200,-120},{20,-200}},
00195     {{-400,200},{20,140}},
00196     {{-500,200},{-400,-300}},
00197     {{20,200},{100,-300}},
00198     {{-400,-200},{20,-300}}
00199 };
00200 
00201 //Off track? objects
00202 const Triangle_2D Map_1_Off_Track_Triangle[20] = {
00203     {{-40,100},{-20,80},1},
00204     {{-100,100},{-80,80},4},
00205     {{-140,40},{-100,0},4},
00206     {{-100,0},{-20,-80},2}, //
00207     {{-260,40},{-220,0},1},
00208     {{-260,-80},{-220,-120},2},
00209     {{-200,-120},{-260,-160},2},
00210     {{-280,100},{-260,80},1},
00211     {{-360,100},{-320,60},4},
00212     {{-360,-100},{-300,-160},3},
00213     {{-300,-100},{-240,-160},2},
00214     //Outside
00215     {{-20,140},{20,100},3},
00216     {{-80,-20},{20,-120},4},
00217     {{-140,140},{-100,100},2},
00218     {{-160,60},{-140,40},2}, //
00219     {{-220,60},{-200,40},3},
00220     {{-280,-120},{-200,-200},4},
00221     {{-260,140},{-240,100},3},
00222     {{-400,140},{-340,80},2}, //
00223     {{-400,-120},{-320,-200},1}
00224 };
00225 
00226 const Square_2D Map_1_Out_Of_Bounds_Square[9] = {
00227     //Inside
00228     {{-80,80},{-40,0}},
00229     {{-340,60},{-280,-60}},
00230     {{-280,-20},{-100,-60}},
00231     {{-80,0},{-60,-20}},
00232     //Outside
00233     {{40,160},{60,-220}},
00234     {{-420,-220},{40,-240}},
00235     {{-440,160},{-420,-220}},
00236     {{-420,180},{40,160}},
00237     {{-200,160},{-160,60}}
00238 };
00239 
00240 const Triangle_2D Map_1_Out_Of_Bounds_Triangle[5] = {
00241     //Inside
00242     {{-60,0},{-40,-20},2},
00243     {{-100,0},{-80,-20},4},
00244     {{-100,-20},{-60,-60},2},
00245     {{-300,-60},{-240,-120},2},
00246     {{-340,-60},{-300,-120},3}
00247 };
00248 
00249 const Square_2D Map_1_Gates[12] = {
00250     {{-40,0},{40,-10}},
00251     {{-40,80},{40,70}},
00252     {{-80,160},{-70,80}},
00253     {{-160,70},{-80,60}},
00254     {{-200,60},{-190,-20}},
00255     {{-310,160},{-300,60}},
00256     {{-420,10},{-340,0}},
00257     {{-420,-90},{-300, -100}},
00258     {{-300,-100},{-290,-220}},
00259     {{-200,-60},{-190,-220}},
00260     {{-110,-60},{-100,-220}},
00261     {{-100,-40},{40,-60}}
00262 };
00263 
00264 const Triangle_2D Map_1_Boost_Plates[0] = {
00265 };
00266 
00267 //MAP - 2
00268 const Map_Data Map_2 = {64,1,38,36,21,37,12,27,19,3};
00269 
00270 //Lines
00271 const Line_2D Map_2_Track_Lines[64] = {
00272     //Inside Line
00273     {{20,280},{20,-80}},
00274     {{20,-80},{-20,-120}},
00275     {{-20,-120},{-80,-120}},
00276     {{-80,-120},{-200,0}},
00277     {{-200,0},{-420,0}},
00278     {{-420,0},{-440,-20}},
00279     {{-440,-20},{-440,-40}},
00280     {{-440,-40},{-420,-60}},
00281     {{-420,-60},{-400,-60}},
00282     {{-400,-60},{-380,-40}},
00283     {{-380,-40},{-300,-40}},
00284     {{-300,-40},{-280,-60}},
00285     {{-280,-60},{-200,-60}},
00286     {{-200,-60},{-100,-160}},
00287     {{-100,-160},{0,-160}},
00288     {{0,-160},{60,-100}},
00289     {{60,-100},{60,300}},
00290     {{60,300},{0,360}},
00291     {{0,360},{-320,360}},
00292     {{-320,360},{-380,300}},
00293     {{-380,300},{-380,180}},
00294     {{-380,180},{-360,160}},
00295     {{-360,160},{-340,160}},
00296     {{-340,160},{-320,180}},
00297     {{-320,180},{-320,280}},
00298     {{-320,280},{-280,320}},
00299     {{-280,320},{-20,320}},
00300     {{-20,320},{20,280}},
00301     //Inside Circle
00302     {{-120,260},{-120,180}},
00303     {{-120,180},{-120,160}},
00304     {{-120,160},{-260,160}},
00305     {{-260,160},{-280,180}},
00306     {{-280,180},{-280,260}},
00307     {{-280,260},{-260,280}},
00308     {{-260,280},{-140,280}},
00309     {{-140,280},{-120,260}},
00310     //Outside Line
00311     {{100,320},{100,-120}},
00312     {{100,-120},{20,-200}},
00313     {{20,-200},{-120,-200}},
00314     {{-120,-200},{-220,-100}},
00315     {{-220,-100},{-280,-100}},
00316     {{-280,-100},{-300,-120}},
00317     {{-300,-120},{-380,-120}},
00318     {{-380,-120},{-400,-100}},
00319     {{-400,-100},{-440,-100}},
00320     {{-440,-100},{-480,-60}},
00321     {{-480,-60},{-480,0}},
00322     {{-480,0},{-440,40}},
00323     {{-440,40},{-180,40}},
00324     {{-180,40},{-60,-80}},
00325     {{-60,-80},{-40,-80}},
00326     {{-40,-80},{-20,-60}},
00327     {{-20,-60},{-20,260}},
00328     {{-20,260},{-40,280}},
00329     {{-40,280},{-60,280}},
00330     {{-60,280},{-80,260}},
00331     {{-80,260},{-80,160}},
00332     {{-80,160},{-120,120}},
00333     {{-120,120},{-380,120}},
00334     {{-380,120},{-420,160}},
00335     {{-420,160},{-420,320}},
00336     {{-420,320},{-340,400}},
00337     {{-340,400},{20,400}},
00338     {{20,400},{100,320}}
00339 };
00340 
00341 //Dotted Lines
00342 const Line_2D Map_2_Track_Dotted_Lines[1] = {
00343     {{-20,0},{20,0}},
00344 };
00345 
00346 //Flags
00347 const Sprite_2D Map_2_Sprites[38] = {
00348     {-20,0, Flag},
00349     {24,0, Flag},
00350     
00351     {-80,40, Helicopter},
00352     
00353     {-42,-10, People_Cheering},
00354     {-42,0, People_Standing_1},
00355     {-42,10, People_Standing_2},
00356     {-42,20, People_Cheering},
00357     {-52,20, People_Standing_1},
00358     {-52,10, People_Cheering},
00359     
00360     {-160,258, People_Cheering},
00361     {-150,258, People_Cheering},
00362     {-142,250, People_Standing_2},
00363     {-142,240, People_Standing_2},
00364     {-150,250, People_Standing_1},
00365     {-150,240, People_Cheering},
00366     
00367     {-460,360, Helicopter},
00368     
00369     {-280,98, People_Cheering},
00370     {-290,98, People_Cheering},
00371     {-300,98, People_Standing_2},
00372     {-310,98, People_Standing_2},
00373     {-320,98, People_Standing_1},
00374     {-330,98, People_Cheering},
00375     
00376     {48,280, People_Standing_1},
00377     {48,270, People_Cheering},
00378     {48,260, People_Standing_2},
00379     
00380     {48,-70, People_Standing_2},
00381     {48,-80, People_Standing_2},
00382     {48,-90, People_Cheering},
00383     
00384     {-210,-28, People_Standing_1},
00385     {-220,-28, People_Standing_1},
00386     {-240,-28, People_Cheering},
00387     {-250,-28, People_Standing_2},
00388     
00389     {-380,-28, People_Standing_1},
00390     {-390,-28, People_Cheering},
00391     
00392     {-200,62, People_Cheering},
00393     {-210,62, People_Standing_1},
00394     {-220,62, People_Cheering},
00395     {-230,62, People_Standing_2},
00396 };
00397 
00398 //Walls
00399 const Line_2D Map_2_Walls[36] = {
00400     //Outside
00401     {{-500,60},{-500,-300}},
00402     {{-500,-300},{200,-300}},
00403     {{200,-300},{200,500}},
00404     {{200,500},{-500,500}},
00405     {{-500,500},{-500,100}},
00406     {{-500,100},{-60,100}},
00407     {{-60,100},{-60,260}},
00408     {{-60,260},{-40,260}},
00409     {{-40,260},{-40,-60}},
00410     {{-40,-60},{-60,-60}},
00411     {{-60,-60},{-180,60}},
00412     {{-180,60},{-500,60}},
00413     //Inside Circle
00414     {{-260,260},{-140,260}},
00415     {{-140,260},{-140,180}},
00416     {{-140,180},{-260,180}},
00417     {{-260,180},{-260,260}},
00418     //Inside
00419     {{-360,180},{-360,300}},
00420     {{-360,300},{-310,350}},
00421     {{-310,350},{-10,350}},
00422     {{-10,350},{50,290}},
00423     {{50,290},{50,-90}},
00424     {{50,-90},{-10,-150}},
00425     {{-10,-150},{-90,-150}},
00426     {{-90,-150},{-210,-30}},
00427     {{-210,-30},{-400,-30}},
00428     {{-400,-30},{-400,-10}},
00429     {{-400,-10},{-210,-10}},
00430     {{-210,-10},{-90,-130}},
00431     {{-90,-130},{-10,-130}},
00432     {{-10,-130},{30,-90}},
00433     {{30,-90},{30,290}},
00434     {{30,290},{-10,330}},
00435     {{-10,330},{-290,330}},
00436     {{-290,330},{-340,280}},
00437     {{-340,280},{-340,180}},
00438     {{-340,180},{-360,180}}
00439 };
00440 
00441 //Off track? objects
00442 const Square_2D Map_2_Off_Track_Square[21] = {
00443     //Inside
00444     {{-380,300},{-320,180}},
00445     {{-360,180},{-340,160}},
00446     {{-320,360},{0,320}},
00447     {{20,300},{60,-100}},
00448     {{-420,0},{-200,-40}},
00449     {{-440,-20},{-420,-40}},
00450     {{-420,-40},{-400,-60}},
00451     {{-280,-40},{-200,-60}},
00452     {{-100,-120},{0,-160}},
00453     //Inside Circle
00454     {{-280,260},{-120,180}},
00455     {{-260,280},{-140,260}},
00456     {{-260,180},{-140,160}},
00457     //Outside
00458     {{-500,120},{-80,40}},
00459     {{-80,260},{-20,-60}},
00460     {{-60,280},{-40,260}},
00461     {{-60,-60},{-40,-80}},
00462     {{-500,40},{-480,-100}},
00463     {{-500,-100},{-400,-200}},
00464     {{-400,-120},{-280,-200}},
00465     {{-280,-100},{-220,-200}},
00466     {{-500,400},{-420,120}}
00467 };
00468 
00469 //Off track? objects
00470 const Triangle_2D Map_2_Off_Track_Triangle[37] = {
00471     //Inside
00472     {{-380,180},{-360,160},3},
00473     {{-340,180},{-320,160},2},
00474     {{-380,360},{-320,300},4},
00475     {{-320,320},{-280,280},2},
00476     {{0,360},{60,300},1},
00477     {{-20,320},{0,300},3},
00478     {{0,300},{20,280},3},
00479     {{-440,0},{-420,-20},4},
00480     {{-440,-40},{-420,-60},3},
00481     {{-400,-40},{-380,-60},2},
00482     {{-300,-40},{-280,-60},3},
00483     {{-200,0},{-140,-60},1},
00484     {{-200,-60},{-140,-120},3},
00485     {{-140,-60},{-80,-120},1},
00486     {{-140,-120},{-100,-160},3},
00487     {{-20,-100},{0,-120},4},
00488     {{0,-80},{20,-100},4},
00489     {{0,-100},{60,-160},2},
00490     //Inside Circle
00491     {{-280,280},{-260,260},4},
00492     {{-140,280},{-120,260},1},
00493     {{-140,180},{-120,160},2},
00494     {{-280,180},{-260,160},3},
00495     //Outside
00496     {{-420,400},{-340,320},2},
00497     {{-420,160},{-380,120},1},
00498     {{-120,160},{-80,120},4},
00499     {{-80,280},{-60,260},4},
00500     {{-40,280},{-20,260},1},
00501     {{20,400},{100,320},3},
00502     {{-480,40},{-440,0},2},
00503     {{-480,-60},{-440,-100},1},
00504     {{-400,-100},{-380,-120},1},
00505     {{-300,-100},{-280,-120},4},
00506     {{-220,-100},{-120,-200},1},
00507     {{-180,40},{-80,-60},3},
00508     {{-80,-60},{-60,-80},3},
00509     {{-40,-60},{-20,-80},2},
00510     {{20,-120},{100,-200},4},
00511 };
00512 
00513 const Square_2D Map_2_Out_Of_Bounds_Square[12] = {
00514     //Outside
00515     {{-500,100},{-60,60}},
00516     {{-60,260},{-40,-60}},
00517     {{-600,500},{-500,-400}},
00518     {{-500,-300},{200,-400}},
00519     {{200,600},{300,-400}},
00520     {{-500,600},{200,500}},
00521     //Inside Circle
00522     {{-260,260},{-140,180}},
00523     //Inside
00524     {{-360,300},{-340,180}},
00525     {{-310,350},{-10,330}},
00526     {{-400,-10},{-210,-30}},
00527     {{-90,-130},{-10,-150}},
00528     {{30,290},{50,-90}}
00529 };
00530 
00531 const Triangle_2D Map_2_Out_Of_Bounds_Triangle[27] = {
00532     //Outside
00533     {{-180,60},{-60,-60},3},
00534     //Inside
00535     {{-360,340},{-320,300},4},
00536     {{-340,300},{-320,280},2},
00537     {{-320,340},{-280,300},2},
00538     {{-320,350},{-310,340},4},
00539     {{-10,350},{10,330},1},
00540     {{-10,330},{10,310},3},
00541     {{10,330},{30,310},1},
00542     {{10,310},{30,290},3},
00543     {{30,310},{50,290},1},
00544     {{-10,-130},{10,-150},2},
00545     {{-10,-110},{10,-130},4},
00546     {{10,-110},{30,-130},2},
00547     {{10,-90},{30,-110},4},
00548     {{30,-90},{50,-110},2},
00549     {{-210,-10},{-190,-30},1},
00550     {{-210,-30},{-190,-50},3},
00551     {{-190,-30},{-170,-50},1},
00552     {{-190,-50},{-170,-70},3},
00553     {{-170,-50},{-150,-70},1},
00554     {{-170,-70},{-150,-90},3},
00555     {{-150,-70},{-130,-90},1},
00556     {{-150,-90},{-130,-110},3},
00557     {{-130,-90},{-110,-110},1},
00558     {{-130,-110},{-110,-130},3},
00559     {{-110,-110},{-90,-130},1},
00560     {{-110,-130},{-90,-150},3}
00561 };
00562 
00563 const Square_2D Map_2_Gates[19] = {
00564     {{-40,0},{30,-10}},
00565     {{-40,110},{30,100}},
00566     {{-40,210},{30,200}},
00567     {{-60,330},{-50,260}},
00568     {{-210,330},{-200,100}},
00569     {{-350,180},{-340,100}},
00570     {{-600,210},{-360,200}},
00571     {{-600,310},{-350,300}},
00572     {{-300,500},{-290,350}},
00573     {{-100,500},{-90,350}},
00574     {{40,300},{200,290}},
00575     {{50,110},{200,100}},
00576     {{50,0},{200,-10}},
00577     {{-20,-150},{-10,-300}},
00578     {{-280,-30},{-270,-300}},
00579     {{-600,-20},{-400,-30}},
00580     {{-310,60},{-300,-10}},
00581     {{-140,20},{-130,-90}},
00582     {{-50,-60},{-40,-130}}
00583 };
00584 
00585 const Triangle_2D Map_2_Boost_Plates[3] = {
00586     {{60,280},{80,260},3},
00587     {{-420,40},{-400,20},2},
00588     {{-280,400},{-260,380},2}
00589 };
00590 
00591 
00592 
00593 
00594 
00595 //MAP - 3
00596 const Map_Data Map_3 = {102,1,52,44,35,50,18,12,17,5};
00597 
00598 //Lines
00599 const Line_2D Map_3_Track_Lines[106] = {
00600     //Inside
00601     {{20,40},{40,60}},
00602     {{40,60},{160,60}},
00603     {{160,60},{200,100}},
00604     {{200,100},{200,140}},
00605     {{200,140},{220,160}},
00606     {{220,160},{280,160}},
00607     {{280,160},{300,140}},
00608     {{300,140},{300,60}},
00609     {{300,60},{320,40}},
00610     {{320,40},{380,40}},
00611     {{380,40},{400,60}},
00612     {{400,60},{400,260}},
00613     {{400,260},{360,300}},
00614     {{360,300},{120,300}},
00615     {{120,300},{100,320}},
00616     {{100,320},{100,380}},
00617     {{100,380},{120,400}},
00618     {{120,400},{400,400}},
00619     {{400,400},{500,300}},
00620     {{500,300},{700,300}},
00621     {{700,300},{740,340}},
00622     {{740,340},{740,420}},
00623     {{740,420},{760,440}},
00624     {{760,440},{780,440}},
00625     {{780,440},{800,420}},
00626     {{800,420},{800,380}},
00627     {{800,380},{840,340}},
00628     {{840,340},{900,340}},
00629     {{900,340},{940,380}},
00630     {{940,380},{940,420}},
00631     {{940,420},{960,440}},
00632     {{960,440},{980,440}},
00633     {{980,440},{1000,420}},
00634     {{1000,420},{1000,320}},
00635     {{1000,320},{980,300}},
00636     {{980,300},{780,300}},
00637     {{780,300},{740,260}},
00638     {{740,260},{740,200}},
00639     {{740,200},{780,160}},
00640     {{780,160},{1140,160}},
00641     {{1140,160},{1160,140}},
00642     {{1160,140},{1160,-40}},
00643     {{1160,-40},{1140,-60}},
00644     {{1140,-60},{960,-60}},
00645     {{960,-60},{940,-40}},
00646     {{940,-40},{940,60}},
00647     {{940,60},{900,100}},
00648     {{900,100},{680,100}},
00649     {{680,100},{520,-60}},
00650     {{520,-60},{40,-60}},
00651     {{40,-60},{20,-40}},
00652     {{20,-40},{20,40}},
00653     //Outside
00654     {{-20,60},{20,100}},
00655     {{20,100},{140,100}},
00656     {{140,100},{160,120}},
00657     {{160,120},{160,160}},
00658     {{160,160},{200,200}},
00659     {{200,200},{300,200}},
00660     {{300,200},{340,160}},
00661     {{340,160},{340,100}},
00662     {{340,100},{360,100}},
00663     {{360,100},{360,240}},
00664     {{360,240},{340,260}},
00665     {{340,260},{100,260}},
00666     {{100,260},{60,300}},
00667     {{60,300},{60,400}},
00668     {{60,400},{100,440}},
00669     {{100,440},{420,440}},
00670     {{420,440},{520,340}},
00671     {{520,340},{680,340}},
00672     {{680,340},{700,360}},
00673     {{700,360},{700,440}},
00674     {{700,440},{740,480}},
00675     {{740,480},{800,480}},
00676     {{800,480},{840,440}},
00677     {{840,440},{840,400}},
00678     {{840,400},{860,380}},
00679     {{860,380},{880,380}},
00680     {{880,380},{900,400}},
00681     {{900,400},{900,440}},
00682     {{900,440},{940,480}},
00683     {{940,480},{1000,480}},
00684     {{1000,480},{1040,440}},
00685     {{1040,440},{1040,300}},
00686     {{1040,300},{1000,260}},
00687     {{1000,260},{800,260}},
00688     {{800,260},{780,240}},
00689     {{780,240},{780,220}},
00690     {{780,220},{800,200}},
00691     {{800,200},{1160,200}},
00692     {{1160,200},{1200,160}},
00693     {{1200,160},{1200,-60}},
00694     {{1200,-60},{1160,-100}},
00695     {{1160,-100},{940,-100}},
00696     {{940,-100},{900,-60}},
00697     {{900,-60},{900,40}},
00698     {{900,40},{880,60}},
00699     {{880,60},{700,60}},
00700     {{700,60},{540,-100}},
00701     {{540,-100},{20,-100}},
00702     {{20,-100},{-20,-60}},
00703     {{-20,-60},{-20,60}},
00704     {{-100,600},{0,-200}},
00705     {{0,600},{1200,500}},
00706     {{1200,600},{1300,-200}},
00707     {{0,-100},{1200,-200}}
00708 };
00709 
00710 //Dotted Lines
00711 const Line_2D Map_3_Track_Dotted_Lines[1] = {
00712     {{-20,0},{20,0}}
00713 };
00714 
00715 //Flags
00716 const Sprite_2D Map_3_Sprites[52] = {
00717     {-20,0, Flag},
00718     {20,0, Flag},
00719     
00720     {200,350, Helicopter},
00721     {1000,0, Helicopter},
00722     {600,100, Helicopter},
00723     {1100,400, Helicopter},
00724     
00725     {52,-20,People_Cheering},
00726     {52,-10,People_Standing_1},
00727     {52,0,People_Standing_2},
00728     {52,10,People_Cheering},
00729     {52,20,People_Standing_1},
00730     {60,0,People_Standing_2},
00731     
00732     {320,8,People_Cheering},
00733     {330,8,People_Standing_2},
00734     {340,8,People_Standing_1},
00735     {350,8,People_Standing_2},
00736     
00737     {200,238,People_Cheering},
00738     {210,238,People_Standing_1},
00739     {220,238,People_Standing_2},
00740     
00741     {400,350,People_Cheering},
00742     {410,340,People_Standing_1},
00743     {420,330,People_Standing_2},
00744     {430,320,People_Cheering},
00745     {440,310,People_Standing_1},
00746     {450,300,People_Standing_2},
00747     
00748     {762,340,People_Cheering},
00749     {762,350,People_Standing_1},
00750     {762,360,People_Standing_2},
00751     
00752     {950,312,People_Cheering},
00753     {960,312,People_Standing_1},
00754     {978,330,People_Standing_2},
00755     {978,340,People_Standing_2},
00756     
00757     {802,222,People_Cheering},
00758     {802,238,People_Standing_2},
00759     
00760     {1138,110,People_Cheering},
00761     {1138,100,People_Standing_1},
00762     {1138,70,People_Standing_2},
00763     {1138,60,People_Cheering},
00764     {1138,50,People_Standing_1},
00765     {1138,30,People_Standing_2},
00766     
00767     {780,122,People_Cheering},
00768     {800,122,People_Standing_1},
00769     {810,122,People_Standing_2},
00770     
00771     {500,-28,People_Cheering},
00772     {520,-8,People_Standing_1},
00773     {530,2,People_Standing_2},
00774     {560,32,People_Cheering},
00775     {570,42,People_Standing_1},
00776     {580,52,People_Standing_2},
00777     {600,72,People_Cheering},
00778     {620,92,People_Standing_1},
00779     {630,102,People_Standing_2},
00780     
00781 };
00782 
00783 //Walls
00784 const Line_2D Map_3_Walls[44] = {
00785     //Inside
00786     {{50,30},{230,30}},
00787     {{230,30},{230,130}},
00788     {{230,130},{270,130}},
00789     {{270,130},{270,10}},
00790     {{270,10},{430,10}},
00791     {{430,10},{430,270}},
00792     {{430,270},{370,330}},
00793     {{370,330},{130,330}},
00794     {{130,330},{130,370}},
00795     {{130,370},{390,370}},
00796     {{390,370},{490,270}},
00797     {{490,270},{700,270}},
00798     {{700,270},{760,330}},
00799     {{760,330},{760,420}},
00800     {{760,420},{780,420}},
00801     {{780,420},{780,330}},
00802     {{780,330},{960,330}},
00803     {{960,330},{960,420}},
00804     {{960,420},{980,420}},
00805     {{980,420},{980,330}},
00806     {{980,330},{960,310}},
00807     {{960,310},{760,310}},
00808     {{760,310},{710,260}},
00809     {{710,260},{710,140}},
00810     {{710,140},{1140,140}},
00811     {{1140,140},{1140,-40}},
00812     {{1140,-40},{960,-40}},
00813     {{960,-40},{960,120}},
00814     {{960,120},{660,120}},
00815     {{660,120},{510,-30}},
00816     {{510,-30},{50,-30}},
00817     {{50,-30},{50,30}},
00818     //Outside
00819     {{-100,220},{340,220}},
00820     {{340,220},{340,240}},
00821     {{340,240},{-100,240}},
00822     {{-100,240},{-100,600}},
00823     {{-100,600},{1300,600}},
00824     {{1300,600},{1300,240}},
00825     {{1300,240},{800,240}},
00826     {{800,240},{800,220}},
00827     {{800,220},{1300,220}},
00828     {{1300,220},{1300,-200}},
00829     {{1300,-200},{-100,-200}},
00830     {{-100,-200},{-100,220}}
00831 };
00832 
00833 //Off track? objects
00834 const Square_2D Map_3_Off_Track_Square[35] = {
00835     //Inside
00836     {{20,40},{40,-40}},
00837     {{40,60},{200,40}},
00838     {{40,40},{520,-60}},
00839     {{100,380},{120,320}},
00840     {{120,400},{400,300}},
00841     {{200,140},{300,40}},
00842     {{220,160},{280,140}},
00843     {{400,300},{740,100}},
00844     {{400,100},{500,40}},
00845     {{740,420},{800,340}},
00846     {{740,340},{980,300}},
00847     {{740,160},{940,100}},
00848     {{940,420},{1000,340}},
00849     {{940,160},{1140,-40}},
00850     {{960,440},{980,420}},
00851     {{960,-40},{1140,-60}},
00852     {{980,340},{1000,320}},
00853     {{1140,140},{1160,-40}},
00854     {{760,440},{780,420}},
00855     //Outside
00856     {{-20,500},{60,100}},
00857     {{60,500},{700,440}},
00858     {{60,260},{340,200}},
00859     {{60,200},{160,120}},
00860     {{60,120},{140,100}},
00861     {{340,240},{360,100}},
00862     {{700,500},{1200,480}},
00863     {{520,440},{680,340}},
00864     {{680,440},{700,360}},
00865     {{700,60},{880,40}},
00866     {{700,40},{900,-100}},
00867     {{800,260},{1200,200}},
00868     {{780,240},{800,220}},
00869     {{1040,480},{1060,260}},
00870     {{840,480},{900,400}},
00871     {{860,400},{880,380}}
00872 };
00873 
00874 //Off track? objects
00875 const Triangle_2D Map_3_Off_Track_Triangle[50] = {
00876     //Inside
00877     {{20,60},{40,40},4},
00878     {{20,-40},{40,-60},3},
00879     {{100,400},{120,380},4},
00880     {{100,320},{120,300},3},
00881     {{160,100},{200,60},4},
00882     {{200,160},{220,140},4},
00883     {{280,160},{300,140},1},
00884     {{360,300},{400,260},3},
00885     {{400,400},{500,300},1},
00886     {{520,100},{680,-60},2},
00887     {{700,340},{740,300},4},
00888     {{300,60},{320,40},1},
00889     {{380,60},{400,40},4},
00890     {{740,440},{760,420},4},
00891     {{740,300},{780,260},2},
00892     {{740,200},{780,160},1},
00893     {{780,440},{800,420},1},
00894     {{800,380},{840,340},1},
00895     {{900,380},{940,340},4},
00896     {{900,100},{940,60},3},
00897     {{940,440},{960,420},4},
00898     {{940,-40},{960,-60},3},
00899     {{980,440},{1000,420},1},
00900     {{980,320},{1000,300},2},
00901     {{1140,160},{1160,140},1},
00902     {{1140,-40},{1160,-60},2},
00903     //Outside
00904     {{-20,100},{20,60},2},
00905     {{-20,-60},{20,-100},1},
00906     {{60,440},{100,400},2},
00907     {{60,300},{100,260},1},
00908     {{140,120},{160,100},2},
00909     {{160,200},{200,160},2},
00910     {{300,200},{340,160},3},
00911     {{340,260},{360,240},1},
00912     {{420,440},{520,340},3},
00913     {{540,60},{700,-100},4},
00914     {{680,360},{700,340},2},
00915     {{700,480},{740,440},2},
00916     {{780,260},{800,240},4},
00917     {{780,220},{800,200},3},
00918     {{800,480},{840,440},3},
00919     {{840,400},{860,380},3},
00920     {{880,400},{900,380},2},
00921     {{880,60},{900,40},1},
00922     {{900,480},{940,440},2},
00923     {{900,-60},{940,-100},1},
00924     {{1000,480},{1040,440},3},
00925     {{1000,300},{1040,260},4},
00926     {{1160,200},{1200,160},3},
00927     {{1160,-60},{1200,-100},4}
00928 };
00929 
00930 const Square_2D Map_3_Out_Of_Bounds_Square[18] = {
00931     //Inside
00932     {{50,30},{270,-30}},
00933     {{230,130},{270,30}},
00934     {{130,370},{390,330}},
00935     {{270,10},{430,-30}},
00936     {{430,120},{510,-30}},
00937     {{430,310},{450,270}},
00938     {{430,270},{710,120}},
00939     {{710,140},{960,120}},
00940     {{760,420},{780,310}},
00941     {{780,30},{960,310}},
00942     {{960,420},{980,330}},
00943     {{960,140},{1140,-40}},
00944     //Outside
00945     {{-100,240},{340,220}},
00946     {{800,240},{1300,220}},
00947     {{-200,700},{-100,-300}},
00948     {{-100,700},{1300,600}},
00949     {{1300,700},{1400,-300}},
00950     {{-100,-200},{1300,-300}}
00951 };
00952 
00953 const Triangle_2D Map_3_Out_Of_Bounds_Triangle[12] = {
00954     {{370,330},{390,310},3},
00955     {{390,370},{450,310},1},
00956     {{390,310},{430,270},3},
00957     {{450,310},{490,270},1},
00958     {{510,120},{660,-30},2},
00959     {{700,290},{720,270},4},
00960     {{710,270},{720,260},2},
00961     {{720,290},{740,270},2},
00962     {{720,310},{740,290},4},
00963     {{740,310},{760,290},2},
00964     {{740,330},{760,310},4},
00965     {{960,330},{980,310},2}
00966 };
00967 
00968 const Square_2D Map_3_Gates[17] = {
00969     {{-100,10},{50,0}},
00970     {{100,220},{110,30}},
00971     {{340,230},{430,220}},
00972     {{130,330},{140,240}},
00973     {{130,600},{140,370}},
00974     {{500,600},{510,270}},
00975     {{760,600},{770,420}},
00976     {{960,600},{970,420}},
00977     {{950,310},{960,240}},
00978     {{710,230},{800,220}},
00979     {{990,220},{1000,140}},
00980     {{1140,100},{1300,90}},
00981     {{1000,-40},{1010,-200}},
00982     {{700,120},{710,-200}},
00983     {{500,-30},{510,-200}},
00984     {{300,-30},{310,-200}},
00985     {{50,-30},{60,-200}}
00986 };
00987 
00988 const Triangle_2D Map_3_Boost_Plates[5] = {
00989     {{200,440},{220,420},2},
00990     {{520,340},{540,320},2},
00991     {{880,200},{900,180},2},
00992     {{460,-60},{480,-80},4},
00993     {{200,-60},{220,-80},4}
00994 };