neptools

Modding tools to Neptunia games
git clone https://git.neptards.moe/neptards/neptools.git
Log | Files | Refs | Submodules | README | LICENSE

expansion.hpp (1498B)


      1 #ifndef GUARD_KNOBBILY_BROGUED_NET_REGISTER_TON_BESOTS_7814
      2 #define GUARD_KNOBBILY_BROGUED_NET_REGISTER_TON_BESOTS_7814
      3 #pragma once
      4 
      5 #include "../item.hpp"
      6 #include <boost/endian/arithmetic.hpp>
      7 
      8 namespace Neptools::Stcm
      9 {
     10 
     11   class ExpansionItem final : public Item
     12   {
     13     LIBSHIT_DYNAMIC_OBJECT;
     14   public:
     15     struct Header
     16     {
     17       boost::endian::little_uint32_t index;
     18       boost::endian::little_uint32_t name;
     19       boost::endian::little_uint64_t ptr; // used by game engine
     20       boost::endian::little_uint32_t pad[16];
     21 
     22       void Validate(FilePosition file_size) const;
     23     };
     24     static_assert(sizeof(Header) == 0x50);
     25 
     26     ExpansionItem(Key k, Context& ctx, uint32_t index, LabelPtr name)
     27       : Item{k, ctx}, index{index}, name{name} {}
     28     LIBSHIT_NOLUA
     29     ExpansionItem(Key k, Context& ctx, const Header& hdr);
     30     static ExpansionItem& CreateAndInsert(ItemPointer ptr);
     31 
     32     FilePosition GetSize() const noexcept override { return sizeof(Header); }
     33 
     34     uint32_t index;
     35     Libshit::NotNull<LabelPtr> name;
     36 
     37   private:
     38     void Dump_(Sink& sink) const override;
     39     void Inspect_(std::ostream& os, unsigned indent) const override;
     40   };
     41 
     42   class ExpansionsItem final : public ItemWithChildren
     43   {
     44     LIBSHIT_DYNAMIC_OBJECT;
     45   public:
     46     ExpansionsItem(Key k, Context& ctx) : ItemWithChildren{k, ctx} {}
     47     static ExpansionsItem& CreateAndInsert(ItemPointer ptr, uint32_t count);
     48 
     49   private:
     50     void Inspect_(std::ostream& os, unsigned indent) const override;
     51   };
     52 
     53 }
     54 #endif