mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 14:02:59 +00:00 
			
		
		
		
	ads-game:: fuel/crash particles
This commit is contained in:
		| @@ -124,7 +124,6 @@ bool ads_turn(int idelta) { | |||||||
|   if(a[16+8] && !la[16+8]) pushScreen(game_menu);     |   if(a[16+8] && !la[16+8]) pushScreen(game_menu);     | ||||||
|  |  | ||||||
|   if(!paused) { |   if(!paused) { | ||||||
|     dynamicval<eGeometry> g(geometry, geometry == gRotSpace ? geometry : gCubeTiling); |  | ||||||
|      |      | ||||||
|     /* proper time passed */ |     /* proper time passed */ | ||||||
|     ld pt = delta * simspeed; |     ld pt = delta * simspeed; | ||||||
| @@ -155,6 +154,9 @@ bool ads_turn(int idelta) { | |||||||
|  |  | ||||||
|     apply_lorentz(spin(ang*degree) * lorentz(0, 2, -delta*accel*mul) * spin(-ang*degree)); |     apply_lorentz(spin(ang*degree) * lorentz(0, 2, -delta*accel*mul) * spin(-ang*degree)); | ||||||
|     pdata.fuel -= delta*accel*mul; |     pdata.fuel -= delta*accel*mul; | ||||||
|  |      | ||||||
|  |     cell *c = hybrid::get_where(vctr).first; | ||||||
|  |     gen_particles(rpoisson(delta*accel*mul*20), c, ads_inverse(current * vctrV) * spin(ang*degree+M_PI) * rots::uxpush(0.06), rsrc_color[rtFuel], 0.15, 0.02); | ||||||
|  |  | ||||||
|     current.T = cspin(3, 2, pt) * current.T; |     current.T = cspin(3, 2, pt) * current.T; | ||||||
|     optimize_shift(current);     |     optimize_shift(current);     | ||||||
|   | |||||||
| @@ -148,10 +148,10 @@ void gen_rocks(cell *c, cellinfo& ci, int radius) { | |||||||
|   ci.rock_dist = radius; |   ci.rock_dist = radius; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| void gen_particles(int qty, cell *c, shiftmatrix from, color_t col, ld t) { | void gen_particles(int qty, cell *c, shiftmatrix from, color_t col, ld t, ld spread = 1) { | ||||||
|   auto& ro = ci_at[c].rocks; |   auto& ro = ci_at[c].rocks; | ||||||
|   for(int i=0; i<qty; i++) { |   for(int i=0; i<qty; i++) { | ||||||
|     auto r = std::make_unique<ads_object>(oParticle, c, from * spin(randd() * TAU) * lorentz(0, 2, 1 + randd()), col ); |     auto r = std::make_unique<ads_object>(oParticle, c, from * spin(randd() * TAU * spread) * lorentz(0, 2, 1 + randd()), col ); | ||||||
|     r->shape = &shape_particle; |     r->shape = &shape_particle; | ||||||
|     r->life_end = randd() * t; |     r->life_end = randd() * t; | ||||||
|     r->life_start = 0; |     r->life_start = 0; | ||||||
| @@ -187,6 +187,10 @@ void crash_ship() { | |||||||
|   invincibility_pt = ship_pt + how_much_invincibility; |   invincibility_pt = ship_pt + how_much_invincibility; | ||||||
|   pdata.hitpoints--; |   pdata.hitpoints--; | ||||||
|   if(pdata.hitpoints <= 0) game_over = true; |   if(pdata.hitpoints <= 0) game_over = true; | ||||||
|  |   hybrid::in_actual([&] { | ||||||
|  |     cell *c = hybrid::get_where(vctr).first; | ||||||
|  |     gen_particles(16, c, ads_inverse(current * vctrV) * spin(ang*degree), rsrc_color[rtHull], 0.5); | ||||||
|  |     }); | ||||||
|   } |   } | ||||||
|  |  | ||||||
| void handle_crashes() { | void handle_crashes() { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue