1 #ifndef __GNUC__ 2 #pragma once 3 #endif 4 #ifndef __XR_LEVEL_DETAILS_H__ 5 #define __XR_LEVEL_DETAILS_H__ 6 7 #include <vector> 8 #include "xr_details.h" 9 10 namespace xray_re { 11 12 class xr_reader; 13 class xr_writer; 14 class xr_image; 15 class xr_dm; 16 17 class xr_level_details { 18 public: 19 xr_level_details(); 20 xr_level_details(xr_reader& r); 21 virtual ~xr_level_details(); 22 23 bool load_texture(const char* path); 24 25 details_header& header(); 26 const details_header& header() const; 27 uint32_t num_slots() const; 28 detail_slot_v3*& slots(); 29 const detail_slot_v3* slots() const; 30 std::vector<xr_dm*>& models(); 31 const std::vector<xr_dm*>& models() const; 32 const xr_image* texture() const; 33 const uint8_t* raw_texture() const; 34 const size_t raw_texture_size() const; 35 36 protected: 37 void load(xr_reader& r); 38 void save(xr_writer& w) const; 39 40 private: 41 details_header m_header; 42 detail_slot_v3* m_slots; 43 std::vector<xr_dm*> m_models; 44 xr_image* m_texture; 45 size_t m_raw_texture_size; 46 uint8_t* m_raw_texture; 47 }; 48 xr_level_details()49inline xr_level_details::xr_level_details(): 50 m_slots(0), m_texture(0), m_raw_texture(0) {} xr_level_details(xr_reader & r)51inline xr_level_details::xr_level_details(xr_reader& r): 52 m_slots(0), m_texture(0), m_raw_texture(0) { load(r); } header()53inline details_header& xr_level_details::header() { return m_header; } header()54inline const details_header& xr_level_details::header() const { return m_header; } num_slots()55inline uint32_t xr_level_details::num_slots() const { return m_header.size_x*m_header.size_z; } slots()56inline detail_slot_v3*& xr_level_details::slots() { return m_slots; } slots()57inline const detail_slot_v3* xr_level_details::slots() const { return m_slots; } models()58inline std::vector<xr_dm*>& xr_level_details::models() { return m_models; } models()59inline const std::vector<xr_dm*>& xr_level_details::models() const { return m_models; } texture()60inline const xr_image* xr_level_details::texture() const { return m_texture; } raw_texture()61inline const uint8_t* xr_level_details::raw_texture() const { return m_raw_texture; } raw_texture_size()62inline const size_t xr_level_details::raw_texture_size() const { return m_raw_texture_size; } 63 64 } // end of namespace xray_re 65 66 #endif 67