mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-29 04:47:41 +00:00 
			
		
		
		
	bouncy blocks from above, left, and right
This commit is contained in:
		| @@ -105,7 +105,7 @@ void entity::apply_walls() { | ||||
|   for(int x = obb.minx; x < obb.maxx; x++) for(int y = obb.maxy; y < jbb.maxy; y++) { | ||||
|     eWall b = current_room->at(x, y); | ||||
|     if(walls[b].flags & blocking) { | ||||
|       if(walls[b].flags & W_BOUNCY) { vel.y = -vel.y; on_bounce = true; goto again; } | ||||
|       if(walls[b].flags & W_BOUNCY) { vel.y = -vel.y; apply_grav(); apply_grav(); if(vel.y > 0) vel.y = 0; on_bounce = true; goto again; } | ||||
|       on_floor = true; | ||||
|       if(walls[b].flags & W_FROZEN) on_ice = true; | ||||
|       vel.y /= 2; | ||||
| @@ -132,6 +132,7 @@ void entity::apply_walls() { | ||||
|   for(int x = obb.minx; x < obb.maxx; x++) for(int y = jbb.miny; y < obb.miny; y++) { | ||||
|     eWall b = current_room->at(x, y); | ||||
|     if(walls[b].flags & W_BLOCK) { | ||||
|       if(walls[b].flags & W_BOUNCY) { vel.y = -vel.y; apply_grav(); apply_grav(); on_bounce = true; goto again; } | ||||
|       vel.y /= 2; | ||||
|       if(abs(vel.y) < 1e-6) vel.y = 0; | ||||
|       if(pixel_to_block(get_pixel_bbox_at(where + vel)).miny > y) where.y += vel.y; | ||||
| @@ -154,6 +155,7 @@ void entity::apply_walls() { | ||||
|   for(int x = obb.maxx; x < jbb.maxx; x++) for(int y = jbb.miny; y < jbb.maxy; y++) { | ||||
|     eWall b = current_room->at(x, y); | ||||
|     if(walls[b].flags & W_BLOCK) { | ||||
|       if(walls[b].flags & W_BOUNCY) { vel.x = -vel.x; on_bounce = true; goto again; } | ||||
|       if(freezing()) { hit_wall(); } | ||||
|       if(burning()) { | ||||
|         if(b == wWoodWall) current_room->replace_block_frev(x, y, wAir); | ||||
| @@ -169,6 +171,7 @@ void entity::apply_walls() { | ||||
|   for(int x = jbb.minx; x < obb.minx; x++) for(int y = jbb.miny; y < jbb.maxy; y++) { | ||||
|     eWall b = current_room->at(x, y); | ||||
|     if(walls[b].flags & W_BLOCK) { | ||||
|       if(walls[b].flags & W_BOUNCY) { vel.x = -vel.x; on_bounce = true; goto again; } | ||||
|       if(freezing()) { hit_wall(); } | ||||
|       if(burning()) { | ||||
|         if(b == wWoodWall) current_room->replace_block_frev(x, y, wAir); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue