mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 05:52:59 +00:00 
			
		
		
		
	ads-game:: resources displayed
This commit is contained in:
		| @@ -5,6 +5,7 @@ | ||||
| #include "shapes.cpp" | ||||
| #include "map.cpp" | ||||
| #include "control.cpp" | ||||
| #include "resources.cpp" | ||||
| #include "display.cpp" | ||||
| #include "menu.cpp" | ||||
|  | ||||
| @@ -45,6 +46,7 @@ void run_ads_game() { | ||||
|   rogueviz::rv_hook(hooks_prestats, 100, view_ads_game); | ||||
|   rogueviz::rv_hook(hooks_handleKey, 0, handleKey); | ||||
|   rogueviz::rv_hook(shmup::hooks_turn, 0, ads_turn); | ||||
|   init_rsrc(); | ||||
|   } | ||||
|  | ||||
| auto shot_hooks =  | ||||
|   | ||||
| @@ -223,6 +223,7 @@ bool view_ads_game() { | ||||
|     drawaura(); | ||||
|     }); | ||||
|   check_cgi(); | ||||
|   display_rsrc(); | ||||
|   return true; | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -45,4 +45,14 @@ vector<struct ads_object*> displayed; | ||||
|  | ||||
| color_t missile_color = 0xFF0000FF; | ||||
|  | ||||
| struct player_data { | ||||
|   int hitpoints; | ||||
|   int score; | ||||
|   int ammo; | ||||
|   ld fuel; | ||||
|   ld oxygen; | ||||
|   }; | ||||
|  | ||||
| player_data pdata, max_pdata, tank_pdata; | ||||
|  | ||||
| }} | ||||
|   | ||||
							
								
								
									
										98
									
								
								rogueviz/ads/resources.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								rogueviz/ads/resources.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,98 @@ | ||||
| namespace hr { | ||||
|  | ||||
| namespace ads_game { | ||||
|  | ||||
| void init_rsrc() { | ||||
|   max_pdata.hitpoints = 3; | ||||
|   max_pdata.score = 0; | ||||
|   max_pdata.ammo = 50; | ||||
|   max_pdata.fuel = 12 * TAU; | ||||
|   max_pdata.oxygen = 20 * TAU; | ||||
|    | ||||
|   tank_pdata.hitpoints = 1; | ||||
|   tank_pdata.score = 1; | ||||
|   tank_pdata.ammo = 20; | ||||
|   tank_pdata.fuel = 4 * TAU; | ||||
|   tank_pdata.oxygen = 5 * TAU; | ||||
|    | ||||
|   pdata = max_pdata; | ||||
|   } | ||||
|  | ||||
| void display(int id, int y, ld val, ld maxv, ld tank, ld unit) { | ||||
|   auto sId = shiftless(Id); | ||||
|  | ||||
| //  ld pix = 1 / (2 * cgi.hcrossf / cgi.crossf); | ||||
|    | ||||
|   color_t col = rsrc_color[id]; | ||||
|    | ||||
|   auto& shape = rsrc_shape[id][0]; | ||||
|   int N = isize(shape); | ||||
|    | ||||
|   ld ctr = 20*y+10; | ||||
|    | ||||
|   for(int i=0; i<N; i+=2) curvepoint(atscreenpos(10 + shape[i+1] * 100, ctr - shape[i] * 100, 1) * C0); | ||||
|   curvedata.push_back(curvedata[curvestart]); | ||||
|   queuecurve(sId, 0x000000FF, col, PPR::ZERO); | ||||
|    | ||||
|   ld sta = 20; | ||||
|   ld siz = 200; | ||||
|   ld fen = sta + siz; | ||||
|   ld top = ctr-5; | ||||
|   ld bot = ctr+5; | ||||
|    | ||||
|   if(maxv == 0) { | ||||
|     queuestr(sta, ctr, 0, 20, its(val+.05), col >> 8, 1, 0); | ||||
|     return; | ||||
|     } | ||||
|    | ||||
|   curvepoint(atscreenpos(sta, top, 1) * C0); | ||||
|   curvepoint(atscreenpos(fen, top, 1) * C0); | ||||
|   curvepoint(atscreenpos(fen, bot, 1) * C0); | ||||
|   curvepoint(atscreenpos(sta, bot, 1) * C0); | ||||
|   curvepoint(atscreenpos(sta, top, 1) * C0); | ||||
|   queuecurve(sId, col, col - 128, PPR::ZERO); | ||||
|    | ||||
|   ld end = sta + siz * val / maxv; | ||||
|   curvepoint(atscreenpos(sta, top, 1) * C0); | ||||
|   curvepoint(atscreenpos(end, top, 1) * C0); | ||||
|   curvepoint(atscreenpos(end, bot, 1) * C0); | ||||
|   curvepoint(atscreenpos(sta, bot, 1) * C0); | ||||
|   curvepoint(atscreenpos(sta, top, 1) * C0); | ||||
|   queuecurve(sId, col, col, PPR::ZERO); | ||||
|    | ||||
|   if(unit) for(ld u=unit; u<maxv-1e-3; u+=unit) { | ||||
|     ld at = sta + siz * u / maxv; | ||||
|     curvepoint(atscreenpos(at, top, 1) * C0); | ||||
|     curvepoint(atscreenpos(at, ctr, 1) * C0); | ||||
|     queuecurve(sId, 0x80, 0, PPR::ZERO); | ||||
|     } | ||||
|  | ||||
|   for(ld u=tank; u<maxv-1e-3; u+=tank) { | ||||
|     ld at = sta + siz * u / maxv; | ||||
|     curvepoint(atscreenpos(at, ctr, 1) * C0); | ||||
|     curvepoint(atscreenpos(at, bot, 1) * C0); | ||||
|     queuecurve(sId, 0x80, 0, PPR::ZERO); | ||||
|     }   | ||||
|   } | ||||
|  | ||||
| void display_rsrc() { | ||||
|   dynamicval<eGeometry> g(geometry, gEuclid); | ||||
|   dynamicval<eModel> pm(pmodel, mdDisk); | ||||
|   dynamicval<bool> ga(vid.always3, false); | ||||
|   dynamicval<color_t> ou(poly_outline); | ||||
|   dynamicval<geometryinfo1> gi(ginf[gEuclid].g, giEuclid2); | ||||
|   initquickqueue(); | ||||
|   check_cgi(); cgi.require_shapes(); | ||||
|  | ||||
|   #define D(id, y, field, unit) display(id, y, pdata.field, max_pdata.field, tank_pdata.field, unit) | ||||
|   D(1, 1, hitpoints, 1); | ||||
|   D(3, 2, ammo, 1); | ||||
|   D(4, 3, fuel, TAU); | ||||
|   D(5, 4, oxygen, TAU); | ||||
|   D(2, 5, score, 10); | ||||
|   #undef D | ||||
|    | ||||
|   quickqueue(); | ||||
|   } | ||||
|  | ||||
| }} | ||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue