All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
InteriorsMaterialDtoRepository.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Interiors.h"
6 #include "IInteriorsMaterialDtoRepository.h"
7 #include "Types.h"
8 #include "CityThemes.h"
9 #include "ICallback.h"
10 #include <string>
11 #include <map>
12 
13 namespace Eegeo
14 {
15  namespace Resources
16  {
17  namespace Interiors
18  {
19  namespace Materials
20  {
22  {
23  public:
24  typedef std::map<std::string, InteriorsMaterialDto> TMaterialKeyToData;
25  typedef std::map<std::string, TMaterialKeyToData> TInteriorToMaterials;
26 
28  InteriorsTextureResourceService& interiorsTextureResourceService);
29 
31 
32  virtual bool HasInterior(const std::string& interiorNamespace) const;
33 
34  virtual void Add(const std::string& interiorNamespace,
35  const InteriorsMaterialDto& interiorMaterialDto);
36 
37  virtual void Remove(const std::string& interiorNamespace);
38 
39  virtual bool Contains(const std::string& interiorNamespace,
40  const std::string& materialKey) const;
41 
42  virtual InteriorsMaterialDto Get(const std::string& interiorNamespace,
43  const std::string& materialKey) const;
44 
45  virtual std::vector<InteriorsMaterialDto> GetAll(const std::string& interiorNamespace) const;
46 
47  virtual void UpdateCommonMaterials();
48 
49  protected:
50  virtual bool ShouldClearSharedThemeDataOnThemeChange() const;
51 
52  private:
53 
54  bool ExplicitlyContains(const std::string& interiorNamespace,
55  const std::string& materialKey) const;
56 
57  bool ContainedInCommon (const std::string& materialKey) const;
58 
59  bool TryGetFromCommon(const std::string& materialKey, InteriorsMaterialDto& out_dto) const;
60 
61  void HandleSharedThemeDataUpdated();
62 
63  CityThemes::ICityThemesService& m_cityThemesService;
64  InteriorsTextureResourceService& m_interiorsTextureResourceService;
65  TInteriorToMaterials m_interiorToMaterials;
66  Helpers::TCallback0<InteriorsMaterialDtoRepository> m_sharedThemeDataUpdatedCallback;
67  };
68  }
69  }
70  }
71 }