| 114 | } |
| 115 | |
| 116 | MapDrawerSoft::MapDrawerSoft( |
| 117 | Settings& settings, |
| 118 | const GameResourcesConstPtr& game_resources, |
| 119 | const RenderingContextSoft& rendering_context ) |
| 120 | : settings_(settings) |
| 121 | , game_resources_( game_resources ) |
| 122 | , rendering_context_( rendering_context ) |
| 123 | , screen_transform_x_( 0.5f * float( rendering_context_.viewport_size.Width () ) ) |
| 124 | , screen_transform_y_( 0.5f * float( rendering_context_.viewport_size.Height() ) ) |
| 125 | , rasterizer_( |
| 126 | rendering_context.viewport_size.Width(), rendering_context.viewport_size.Height(), |
| 127 | rendering_context.row_pixels, rendering_context.window_surface_data ) |
| 128 | , surfaces_cache_( rendering_context_.viewport_size ) |
| 129 | { |
| 130 | PC_ASSERT( game_resources_ != nullptr ); |
| 131 | |
| 132 | sky_texture_.file_name[0]= '\0'; |
| 133 | |
| 134 | LoadModelsGroup( game_resources_->items_models, items_models_ ); |
| 135 | LoadModelsGroup( game_resources_->rockets_models, rockets_models_ ); |
| 136 | LoadModelsGroup( game_resources_->gibs_models, gibs_models_ ); |
| 137 | LoadModelsGroup( game_resources_->weapons_models, weapons_models_ ); |
| 138 | LoadModelsGroup( game_resources_->monsters_models, monsters_models_ ); |
| 139 | |
| 140 | // Load effects sprites. |
| 141 | |
| 142 | const PaletteTransformed& palette= *rendering_context_.palette_transformed; |
| 143 | |
| 144 | sprite_effects_textures_.resize( game_resources_->effects_sprites.size() ); |
| 145 | for( unsigned int i= 0u; i < sprite_effects_textures_.size(); i++ ) |
| 146 | { |
| 147 | const ObjSprite& in_sprite= game_resources_->effects_sprites[i]; |
| 148 | SpriteTexture& out_sprite_texture= sprite_effects_textures_[i]; |
| 149 | |
| 150 | out_sprite_texture.size[0]= in_sprite.size[0]; |
| 151 | out_sprite_texture.size[1]= in_sprite.size[1]; |
| 152 | out_sprite_texture.size[2]= in_sprite.frame_count; |
| 153 | |
| 154 | const unsigned int pixel_count= in_sprite.size[0] * in_sprite.size[1] * in_sprite.frame_count; |
| 155 | out_sprite_texture.data.resize( pixel_count ); |
| 156 | for( unsigned int j= 0u; j < pixel_count; j++ ) |
| 157 | out_sprite_texture.data[j]= palette[in_sprite.data[j]]; |
| 158 | } |
| 159 | |
| 160 | bmp_objects_sprites_.resize( game_resources_->bmp_objects_sprites.size() ); |
| 161 | for( unsigned int i= 0u; i < bmp_objects_sprites_.size(); i++ ) |
| 162 | { |
| 163 | const ObjSprite& in_sprite= game_resources_->bmp_objects_sprites[i]; |
| 164 | SpriteTexture& out_sprite_texture= bmp_objects_sprites_[i]; |
| 165 | |
| 166 | out_sprite_texture.size[0]= in_sprite.size[0]; |
| 167 | out_sprite_texture.size[1]= in_sprite.size[1]; |
| 168 | out_sprite_texture.size[2]= in_sprite.frame_count; |
| 169 | |
| 170 | const unsigned int pixel_count= in_sprite.size[0] * in_sprite.size[1] * in_sprite.frame_count; |
| 171 | out_sprite_texture.data.resize( pixel_count ); |
| 172 | for( unsigned int j= 0u; j < pixel_count; j++ ) |
| 173 | out_sprite_texture.data[j]= palette[in_sprite.data[j]]; |