Elaztek Developer Hub
Blamite Game Engine - Guerilla (Library)  00384.05.11.23.0458.blamite
The tag editor for the Blamite Game Engine.
block.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <vector>
4 #include <string>
5 
6 #include "../fields.h"
7 
8 #ifdef GUERILLA_LIB_EXPORTS
9 #define GUERILLA_LIB_API __declspec(dllexport)
10 #else
11 #define GUERILLA_LIB_API __declspec(dllimport)
12 #endif
13 
18 {
19 public:
20  std::string name;
21  std::vector<BlamTagField*> fields;
22 
24 
25  BlamTagField* GetField(std::string field_id);
26 
27  BlamTagField* GetField(std::string field_id, BlamTagFieldType field_type);
28 
29  BlamTagBlockEntry* Copy();
30 };
31 
42 {
43 public:
44  int entry_size = 0;
45  std::vector<BlamPluginField*> fields;
46 
47  int c_entry_count = 0;
48  int c_entry_offset = 0;
49 
56 
58 
59  BlamPluginField* GetField(std::string id);
60 
61  BlamPluginField* GetField(std::string id, BlamTagFieldType type);
62 
63  void UpdateOffsetData(int new_offset) override;
64 
65  std::string GenerateXMLString() override;
66 };
67 
78 {
79 public:
80  std::vector<BlamTagBlockEntry*> entries;
81 
88 
89  bool AddEntry(int offset = -1);
90  bool DuplicateEntry(int index);
91  bool DeleteEntry(int index);
92  void DeleteAllEntries();
93 
94  BlamTagBlockEntry* CreateNewEntry();
95 
96  std::string GenerateXMLString();
97  std::string GenerateXMLString(bool keep_unused, bool keep_invalid);
98  std::vector<char> GetValueAsBytes();
99 
105  std::vector<char> GetEntryDataAsBytes();
106 };
BlamTagField
Class representing a tag field.
Definition: fields.h:164
BlamTagFieldType::Int16
@ Int16
Indicates that the field is a 16-bit integer.
block.h
BlamTagField::GetType
BlamTagFieldType GetType()
Retrieves the type of this field.
Definition: BlamTagField.cpp:19
BlamTagFieldType::Real
@ Real
Indicates that the field is a Float32.
BlamPluginField::GenerateTagField
virtual BlamTagField * GenerateTagField(BlamTag *tag)
Generates a new tag field from this plugin field.
Definition: BlamPluginField.cpp:54
BlamTagField_Tagref::data_size
int data_size
Definition: tagref.h:25
BlamTagFieldType::Int32
@ Int32
Indicates that the field is a 32-bit integer.
BlamPluginField_Enum::options
std::vector< BlamEnumFieldOption > options
The list of options within the enum.
Definition: enum.h:34
bitfield.h
BlamPluginField_Block::entry_size
int entry_size
The size of a each block entry.
Definition: block.h:44
BlamTagBlockEntry::Copy
BlamTagBlockEntry * Copy()
Definition: BlamTagBlockEntry.cpp:45
BlamTagFieldType::Enum8
@ Enum8
Indicates that the field is an Enum8.
BlamPluginField_Block::GetField
BlamPluginField * GetField(std::string id)
Definition: BlamPluginField_Block.cpp:22
BlamPluginField_Enum
Class representing a plugin enum field.
Definition: enum.h:31
BlamTagFieldType::Vector4
@ Vector4
Indicates that the field is a vector4.
BlamTagField_Bitfield::bits
std::vector< BlamBitfieldBitData > bits
The list of bits within this bitfield.
Definition: bitfield.h:60
GUERILLA_BITFIELD_DECOMPILE_SET_BITFIELD_BIT
#define GUERILLA_BITFIELD_DECOMPILE_SET_BITFIELD_BIT(index)
Definition: BlamPluginField.cpp:14
tags.h
BlamTagField::GetPluginField
BlamPluginField * GetPluginField()
Retrieves the plugin data associated with this field, if available.
Definition: BlamTagField.cpp:29
BlamPluginField::GenerateXMLString
virtual std::string GenerateXMLString()
Generates a string representing this plugin field.
Definition: BlamPluginField.cpp:351
BlamTagField::GetTag
BlamTag * GetTag()
Retrieves the tag associated with this field.
Definition: BlamTagField.cpp:24
BlamTagFieldType::Block
@ Block
Indicates that the field is a tag block.
BlamTagField_Block::entries
std::vector< BlamTagBlockEntry * > entries
The list of entries within this block.
Definition: block.h:80
BlamPluginField_Block::~BlamPluginField_Block
~BlamPluginField_Block()
Definition: BlamPluginField_Block.cpp:12
BlamTagFieldType::Ascii
@ Ascii
Indicates that the field is a string of text.
BlamTagField::field_id
std::string field_id
The ID of this field.
Definition: fields.h:175
BlamTagField_Vector::value
BlamVector4 value
The value of the field, represented as a 4D vector.
Definition: vector.h:23
BlamTagFieldType::Dataref
@ Dataref
Indicates that the field is a data reference.
BlamPluginField::GetType
BlamTagFieldType GetType()
Retrieves the type of this field.
Definition: BlamPluginField.cpp:44
BlamTagFieldType::Enum16
@ Enum16
Indicates that the field is an Enum16.
BlamTagBlockEntry
Data structure representing a tag block entry.
Definition: block.h:17
BlamTagField_Block::DeleteAllEntries
void DeleteAllEntries()
Definition: BlamTagField_Block.cpp:82
BlamTagField_Block::GetEntryDataAsBytes
std::vector< char > GetEntryDataAsBytes()
Compiles the entry data into a list of bytes.
Definition: BlamTagField_Block.cpp:211
BlamTagFieldType::Bitfield16
@ Bitfield16
Indicates that the field is a Bitfield16.
BlamTagFieldType
BlamTagFieldType
Enumerator containing all possible tag field types.
Definition: fields.h:23
BlamTagFieldType::Int8
@ Int8
Indicates that the field is an 8-bit integer.
BlamTagField_Color::value
BlamColor value
The value of the field, represented as a color.
Definition: color.h:22
BlamTagField_Float32
Class representing a float32 tag field.
Definition: float32.h:16
BlamTagField_Tagref::referenced_tag_class
std::string referenced_tag_class
Definition: tagref.h:29
BlamPluginField_Block
Class representing a block plugin field.
Definition: block.h:41
BlamTagFieldType::Color
@ Color
Indicates that the field is a color.
BlamTagField_Tagref::data_address
void * data_address
Definition: tagref.h:26
BlamTagFieldType::Comment
@ Comment
Indicates that the field is a comment. These do not store any tag data.
dataref.h
BlamTagField::GenerateXMLString
virtual std::string GenerateXMLString()
Generates a string with the field ID and value, ready to be written to an XML file.
Definition: BlamTagField.cpp:9
Guerilla::Tags::Fields::GetFieldTypeName
GUERILLA_LIB_API std::string GetFieldTypeName(BlamTagFieldType type)
Generates a string name based on the provided tag field type.
Definition: fields.cpp:190
tagref.h
BlamPluginField::UpdateOffsetData
virtual void UpdateOffsetData(int new_offset)
Updates any offsets or lengths for the given field.
Definition: BlamPluginField.cpp:360
BlamTagField_Tagref
Definition: tagref.h:22
BlamTagField_Block::DeleteEntry
bool DeleteEntry(int index)
Definition: BlamTagField_Block.cpp:63
BlamPluginField::display_name
std::string display_name
The display name of the field.
Definition: fields.h:69
BlamTagField_Bitfield
Clas representing a bitfield tag field.
Definition: bitfield.h:57
BlamTagField_Block
Class representing a block tag field.
Definition: block.h:77
BlamTagBlockEntry::GetField
BlamTagField * GetField(std::string field_id)
Definition: BlamTagBlockEntry.cpp:13
BlamPluginField
Class representing a plugin field.
Definition: fields.h:59
BlamTagField_Bitfield::BlamTagField_Bitfield
BlamTagField_Bitfield(BlamTag *_tag, BlamTagFieldType _type)
Constructs a new bitfield tag field.
Definition: BlamTagField_Bitfield.cpp:15
BlamTagField_Dataref
Definition: dataref.h:11
BlamTag
Class representing a Tag.
Definition: tags.h:210
BlamPluginField::BlamPluginField
BlamPluginField(BlamPlugin *_plugin, BlamTagFieldType _type)
Constructs a new plugin field.
Definition: BlamPluginField.cpp:22
BlamTagField_Block::BlamTagField_Block
BlamTagField_Block(BlamTag *_tag)
Constructs a new block tag field.
Definition: BlamTagField_Block.cpp:3
BlamTagField_Block::GenerateXMLString
std::string GenerateXMLString()
Generates a string with the field ID and value, ready to be written to an XML file.
Definition: BlamTagField_Block.cpp:128
BlamTagFieldType::Int64
@ Int64
Indicates that the field is a 32-bit integer.
BlamPluginField_Block::GenerateXMLString
std::string GenerateXMLString() override
Generates a string representing this plugin field.
Definition: BlamPluginField_Block.cpp:81
GUERILLA_LIB_API
#define GUERILLA_LIB_API
Definition: block.h:11
BlamTagField_Enum::current_option
std::string current_option
The ID of the currently selected option.
Definition: enum.h:56
BlamPluginField_Bitfield::BlamPluginField_Bitfield
BlamPluginField_Bitfield(BlamPluginField *base_field)
Constructs a new bitfield plugin field from an existing generic plugin field.
Definition: BlamPluginField_Bitfield.cpp:3
BlamTagFieldType::Tagref
@ Tagref
Indicates that the field is a tag reference.
BlamPluginField::visible
bool visible
Whether or not the field is visible.
Definition: fields.h:68
BlamTagField::HasPluginField
bool HasPluginField()
Checks whether the field has plugin data available.
Definition: BlamTagField.cpp:34
BlamTagField_Dataref::data_size
int data_size
Definition: dataref.h:15
BlamTagBlockEntry::fields
std::vector< BlamTagField * > fields
The list of fields within the entry.
Definition: block.h:21
BlamTagFieldType::Vector3
@ Vector3
Indicates that the field is a vector3.
BlamTagField_Enum
Class representing a tag enum field.
Definition: enum.h:53
BlamTagBlockEntry::~BlamTagBlockEntry
~BlamTagBlockEntry()
Definition: BlamTagBlockEntry.cpp:3
BlamTagField_Float32::value
float value
The value of the field.
Definition: float32.h:21
BlamPlugin
Class representing a Plugin.
Definition: tags.h:79
BlamPluginField::field_id
std::string field_id
The ID of the field.
Definition: fields.h:71
BlamTagField_Int
Class representing an integer tag field.
Definition: int.h:16
BlamTagField_Block::CreateNewEntry
BlamTagBlockEntry * CreateNewEntry()
Definition: BlamTagField_Block.cpp:99
BlamTagField_Vector
Class representing a vector tag field.
Definition: vector.h:18
fields.h
BlamPluginField_Bitfield
Clas representing a bitfield plugin field.
Definition: bitfield.h:39
BlamTagFieldType::Bitfield8
@ Bitfield8
Indicates that the field is a Bitfield8.
BlamPluginField_Block::fields
std::vector< BlamPluginField * > fields
The list of fields within the tag block.
Definition: block.h:45
BlamPluginField_Block::c_entry_count
int c_entry_count
The entry count. Used in tag decompilation.
Definition: block.h:47
BlamTagField_Block::DuplicateEntry
bool DuplicateEntry(int index)
Definition: BlamTagField_Block.cpp:42
BlamPluginField_Block::UpdateOffsetData
void UpdateOffsetData(int new_offset) override
Updates any offsets or lengths for the given field.
Definition: BlamPluginField_Block.cpp:64
BlamTagField_Dataref::data_address
void * data_address
Definition: dataref.h:14
float32.h
Guerilla::Tags::Fields::GetStandardFieldLength
GUERILLA_LIB_API int GetStandardFieldLength(BlamTagFieldType type)
Retrieves the length of a tag field.
Definition: fields.cpp:7
vector.h
BlamTagField::plugin_field
BlamPluginField * plugin_field
The plugin data associated with this field, if any.
Definition: fields.h:174
BlamTagField::BlamTagField
BlamTagField(BlamTag *_tag, BlamTagFieldType _type)
Constructs a new tag field.
Definition: BlamTagField.cpp:3
GUERILLA_SET_BITFIELD_BIT
#define GUERILLA_SET_BITFIELD_BIT(index)
Definition: BlamTagField_Bitfield.cpp:6
BlamPluginField::description
std::string description
An optional description of the field.
Definition: fields.h:70
BlamTagFieldType::Unspecified
@ Unspecified
Indicates that the field's type is not specified. Fields with this type should be considered invalid.
BlamTagFieldType::StringId
@ StringId
Indicates that the field is a String ID.
BlamPluginField_Block::c_entry_offset
int c_entry_offset
The offset of the entry data. Used in tag decompilation.
Definition: block.h:48
BlamPluginField_Bitfield::bits
std::vector< BlamBitfieldBitInfo > bits
The list of bits within this bitfield.
Definition: bitfield.h:42
color.h
BlamPluginField::GetPlugin
BlamPlugin * GetPlugin()
Retrieves the plugin this field is associated with.
Definition: BlamPluginField.cpp:49
BlamTagFieldType::Bitfield32
@ Bitfield32
Indicates that the field is a Bitfield32.
BlamPluginField::offset
int offset
The offset of the field data.
Definition: fields.h:66
BlamTagBlockEntry::name
std::string name
The name of the entry.
Definition: block.h:20
BlamTagFieldType::Vector2
@ Vector2
Indicates that the field is a vector2.
BlamBitfieldBitData
Data structure containing data for a bitfield bit.
Definition: bitfield.h:28
BlamTagField_Bitfield::GenerateXMLString
std::string GenerateXMLString()
Generates a string with the field ID and value, ready to be written to an XML file.
Definition: BlamTagField_Bitfield.cpp:20
ascii.h
BlamTagField_Block::GetValueAsBytes
std::vector< char > GetValueAsBytes()
Retrieves the field value as a list of bytes.
Definition: BlamTagField_Block.cpp:185
BlamTagField_Int::value
int64_t value
The value of the field, represented as a 32-bit integer.
Definition: int.h:21
BlamPluginField::length
int length
The length of the field data.
Definition: fields.h:67
BlamTagField_Bitfield::GetValueAsBytes
std::vector< char > GetValueAsBytes()
Retrieves the field value as a list of bytes.
Definition: BlamTagField_Bitfield.cpp:54
BlamTagField_Block::AddEntry
bool AddEntry(int offset=-1)
Definition: BlamTagField_Block.cpp:8
int.h
BlamTagField::GetValueAsBytes
virtual std::vector< char > GetValueAsBytes()
Retrieves the field value as a list of bytes.
Definition: BlamTagField.cpp:14
BlamTagFieldType::Enum32
@ Enum32
Indicates that the field is an Enum32.
BlamTagField_Ascii::value
std::string value
The value of the field.
Definition: ascii.h:23
BlamPluginField_Block::BlamPluginField_Block
BlamPluginField_Block(BlamPluginField *base_field)
Constructs a new block plugin field from an existing generic plugin field.
Definition: BlamPluginField_Block.cpp:7
enum.h
BlamTagField_Color
Class representing a color tag field.
Definition: color.h:17
BlamTagField_Ascii
Class representing an ascii tag field.
Definition: ascii.h:18