 |
Blamite Game Engine - blam!
00296.01.12.21.0102.blamite
The core library for the Blamite Game Engine.
|
Go to the documentation of this file.
5 #include <Strings/components/utils/string/string.h>
8 #include "components/3rdparty/imgui/imgui.h"
10 #include "components/3rdparty/imgui/extensions/imgui_extensions.h"
51 ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), std::string(
"<field '" +
display_name +
"' has no imgui control available>").c_str());
74 std::string field_id = BlamStrings::Utils::String::ToLower(
display_name);
75 field_id = BlamStrings::Utils::String::Replace(field_id,
" ",
"_");
77 std::string field_string =
"<unknown id=\"" + field_id +
"\" name=\"" +
display_name +
"\" offset=\"" + std::to_string(offset) +
"\" visible=\"false\" />";
92 AsciiField(std::string _display_name, std::string _extra_info)
113 std::string field_id = BlamStrings::Utils::String::ToLower(
display_name);
114 field_id = BlamStrings::Utils::String::Replace(field_id,
" ",
"_");
116 std::string field_string =
"<ascii id=\"" + field_id +
"\" name=\"" +
display_name +
"\" offset=\"" + std::to_string(offset) +
"\" length=\"" + std::to_string(
read_length) +
"\" visible=\"true\" />";
130 Int32Field(std::string _display_name, std::string _extra_info)
151 std::string field_id = BlamStrings::Utils::String::ToLower(
display_name);
152 field_id = BlamStrings::Utils::String::Replace(field_id,
" ",
"_");
154 std::string field_string =
"<int32 id=\"" + field_id +
"\" name=\"" +
display_name +
"\" offset=\"" + std::to_string(offset) +
"\" visible=\"true\" />";
168 Int16Field(std::string _display_name, std::string _extra_info)
180 ImGui::DragInt(
display_name.c_str(), &value_expand, 1.0f, -32768, 32767);
193 std::string field_id = BlamStrings::Utils::String::ToLower(
display_name);
194 field_id = BlamStrings::Utils::String::Replace(field_id,
" ",
"_");
196 std::string field_string =
"<int16 id=\"" + field_id +
"\" name=\"" +
display_name +
"\" offset=\"" + std::to_string(offset) +
"\" visible=\"true\" />";
210 Int8Field(std::string _display_name, std::string _extra_info)
222 ImGui::DragInt(
display_name.c_str(), &value_expand, 1.0f, 0, 255);
235 std::string field_id = BlamStrings::Utils::String::ToLower(
display_name);
236 field_id = BlamStrings::Utils::String::Replace(field_id,
" ",
"_");
238 std::string field_string =
"<int8 id=\"" + field_id +
"\" name=\"" +
display_name +
"\" offset=\"" + std::to_string(offset) +
"\" visible=\"true\" />";
274 std::string field_id = BlamStrings::Utils::String::ToLower(
display_name);
275 field_id = BlamStrings::Utils::String::Replace(field_id,
" ",
"_");
277 std::string field_string =
"<boolean id=\"" + field_id +
"\" name=\"" +
display_name +
"\" offset=\"" + std::to_string(offset) +
"\" visible=\"true\" />";
313 std::string field_id = BlamStrings::Utils::String::ToLower(
display_name);
314 field_id = BlamStrings::Utils::String::Replace(field_id,
" ",
"_");
316 std::string field_string =
"<colorf id=\"" + field_id +
"\" name=\"" +
display_name +
"\" offset=\"" + std::to_string(offset) +
"\" visible=\"true\" format=\"rgba\" />";
331 std::vector<std::string> options;
332 int* active_item = 0;
335 EnumField(std::string _display_name, std::string _extra_info, std::vector<std::string> _options)
348 if (ImGui::BeginCombo(
display_name.c_str(), options.at(*active_item).c_str()))
350 for (
int i = 0; i < options.size(); i++)
352 if (ImGui::Selectable(options.at(i).c_str()))
370 std::string field_id = BlamStrings::Utils::String::ToLower(
display_name);
371 field_id = BlamStrings::Utils::String::Replace(field_id,
" ",
"_");
373 std::string field_string =
"<enum id=\"" + field_id +
"\" name=\"" +
display_name +
"\" offset=\"" + std::to_string(offset) +
"\" visible=\"true\">";
375 for (
int i = 0; i < options.size(); i++)
377 field_string +=
"<option id=\"" + field_id +
"\" name=\"" +
display_name +
"\" value=\"" + std::to_string(i) +
"\" visible=\"true\"/>";
380 field_string +=
"</enum>";
397 Bitfield8Field(std::string _display_name, std::string _extra_info, std::vector<std::string> _options)
410 int region_width = ImGui::CalcItemWidth();
413 ImGui::BeginChild(
display_name.c_str(), ImVec2(region_width, region_height),
true, ImGuiWindowFlags_HorizontalScrollbar);
415 int max_bits_available = 0;
423 max_bits_available =
options.size();
426 for (
int i = 0; i <
options.size(); i++)
430 ImGui::Checkbox(
options.at(i).c_str(), (
bool*)prop_address);
437 for (
int i = 0; i < unused_options; i++)
439 bool helper_value =
false;
441 ImGui::Checkbox(
"", &helper_value);
443 ImGui::TextDisabled(
"unused bit");
461 std::string field_id = BlamStrings::Utils::String::ToLower(
display_name);
462 field_id = BlamStrings::Utils::String::Replace(field_id,
" ",
"_");
464 std::string field_string =
"<bitfield8 id=\"" + field_id +
"\" name=\"" +
display_name +
"\" offset=\"" + std::to_string(offset) +
"\" visible=\"true\">";
466 for (
int i = 0; i <
options.size(); i++)
468 field_string +=
"<bit id=\"" + field_id +
"\" name=\"" +
display_name +
"\" index=\"" + std::to_string(i) +
"\" visible=\"true\"/>";
471 field_string +=
"</bitfield8>";
488 Bitfield16Field(std::string _display_name, std::string _extra_info, std::vector<std::string> _options)
501 int region_width = ImGui::CalcItemWidth();
504 ImGui::BeginChild(
display_name.c_str(), ImVec2(region_width, region_height),
true, ImGuiWindowFlags_HorizontalScrollbar);
506 int max_bits_available = 0;
514 max_bits_available =
options.size();
517 for (
int i = 0; i <
options.size(); i++)
521 ImGui::Checkbox(
options.at(i).c_str(), (
bool*)prop_address);
528 for (
int i = 0; i < unused_options; i++)
530 bool helper_value =
false;
532 ImGui::Checkbox(
"", &helper_value);
534 ImGui::TextDisabled(
"unused bit");
552 std::string field_id = BlamStrings::Utils::String::ToLower(
display_name);
553 field_id = BlamStrings::Utils::String::Replace(field_id,
" ",
"_");
555 std::string field_string =
"<bitfield16 id=\"" + field_id +
"\" name=\"" +
display_name +
"\" offset=\"" + std::to_string(offset) +
"\" visible=\"true\">";
557 for (
int i = 0; i <
options.size(); i++)
559 field_string +=
"<bit id=\"" + field_id +
"\" name=\"" +
display_name +
"\" index=\"" + std::to_string(i) +
"\" visible=\"true\"/>";
562 field_string +=
"</bitfield16>";
579 Bitfield32Field(std::string _display_name, std::string _extra_info, std::vector<std::string> _options)
592 int region_width = ImGui::CalcItemWidth();
595 ImGui::BeginChild(
display_name.c_str(), ImVec2(region_width, region_height),
true, ImGuiWindowFlags_HorizontalScrollbar);
597 int max_bits_available = 0;
605 max_bits_available =
options.size();
608 for (
int i = 0; i <
options.size(); i++)
612 ImGui::Checkbox(
options.at(i).c_str(), (
bool*)prop_address);
619 for (
int i = 0; i < unused_options; i++)
621 bool helper_value =
false;
623 ImGui::Checkbox(
"", &helper_value);
625 ImGui::TextDisabled(
"unused bit");
643 std::string field_id = BlamStrings::Utils::String::ToLower(
display_name);
644 field_id = BlamStrings::Utils::String::Replace(field_id,
" ",
"_");
646 std::string field_string =
"<bitfield32 id=\"" + field_id +
"\" name=\"" +
display_name +
"\" offset=\"" + std::to_string(offset) +
"\" visible=\"true\">";
648 for (
int i = 0; i <
options.size(); i++)
650 field_string +=
"<bit id=\"" + field_id +
"\" name=\"" +
display_name +
"\" index=\"" + std::to_string(i) +
"\" visible=\"true\"/>";
653 field_string +=
"</bitfield32>";
698 std::string field_id = BlamStrings::Utils::String::ToLower(
display_name);
699 field_id = BlamStrings::Utils::String::Replace(field_id,
" ",
"_");
701 std::string field_string =
"<comment title=\"" +
display_name +
"\" visible=\"true\">";
705 field_string +=
"</comment>";
720 std::vector<std::string> valid_classes;
721 int active_class_index = 0;
722 std::string active_tag_class_label;
724 std::vector<tag_memory_data> filtered_tag_list;
725 int active_tag_index = 0;
727 TagReference(std::string _display_name, std::string _extra_info, std::vector<std::string> _valid_classes)
731 valid_classes = _valid_classes;
748 float indent = 22.0f;
757 Block(
int _entry_size, std::string _display_name, std::string _extra_info, std::vector<TagField*> _block_template)
774 std::string field_id = BlamStrings::Utils::String::ToLower(
display_name);
775 field_id = BlamStrings::Utils::String::Replace(field_id,
" ",
"_");
777 std::string field_string =
"<reflexive id=\"" + field_id +
"\" title=\"" +
display_name +
"\" offset=\"" + std::to_string(offset) +
"\" entrySize=\"" + std::to_string(
entry_size) +
"\" visible=\"true\">";
779 int field_offset = 0;
783 field_string +=
block_template.at(i)->GetFieldXMLString(field_offset);
787 field_string +=
"</reflexive>";
814 ImGui::Indent(indent);
818 ImGui::PushID(block_id.c_str());
819 if (ImGui::Button(
"Add"))
853 if (ImGui::Button(
"Insert"))
860 if (ImGui::Button(
"Duplicate"))
867 if (ImGui::Button(
"Delete"))
874 if (ImGui::Button(
"Delete All"))
881 ImGui::PushItemWidth(70.0f);
882 if (ImGui::BeginCombo(
"entry", std::to_string(
active_entry).c_str()))
886 std::string label =
"entry " + std::to_string(i);
888 if (ImGui::Selectable(label.c_str()))
896 ImGui::PopItemWidth();
902 void* next_field_address = entry_start_address;
918 ImGui::Unindent(indent);
int entry_size
The size of each block entry.
Definition: tags.h:82
Class representing a tag reference, or tagref for short.
Definition: fields.h:717
Namespace containing things related to tag data.
Definition: bitmap.h:9
void * entry_data_address
The address of the blocks' entry data.
Definition: tags.h:83
BLAM void LogEvent(std::string message)
Logs a message to the log and/or console.
Definition: aliases.cpp:101
TagReference(std::string _display_name, std::string _extra_info, std::vector< std::string > _valid_classes)
Definition: fields.h:727
std::string GetFieldXMLString(int offset)
Generates a string representing an XML node associated with this tag field, used for generating plugi...
Definition: fields.h:368
int active_entry
The index of the active entry.
Definition: fields.h:752
Int8Field(std::string _display_name, std::string _extra_info)
Definition: fields.h:210
void ShowImPropertyControl()
Shows a set of ImGUI controls representing the tag field.
Definition: fields.h:407
char ascii[32]
Typedef for an ascii field, used in tag data definitions.
Definition: fields.h:21
void ShowImPropertyControl()
Shows a set of ImGUI controls representing the tag field.
Definition: fields.h:218
void ShowImPropertyControl()
Shows a set of ImGUI controls representing the tag field.
Definition: fields.h:589
virtual std::string GetFieldXMLString(int offset)
Generates a string representing an XML node associated with this tag field, used for generating plugi...
Definition: fields.h:72
std::string GetFieldXMLString(int offset)
Generates a string representing an XML node associated with this tag field, used for generating plugi...
Definition: fields.h:459
void ShowImPropertyControl()
Shows a set of ImGUI controls representing the tag field.
Definition: fields.h:100
Bitfield16Field(std::string _display_name, std::string _extra_info, std::vector< std::string > _options)
Definition: fields.h:488
AsciiField(std::string _display_name, std::string _extra_info)
Definition: fields.h:92
Class representing a bitfield8 tag field.
Definition: fields.h:391
Class representing a tag block, also referred to as a struct or reflexive in the modding community.
Definition: fields.h:745
int max_items_to_show
Maximum number of bitfield options to show.
Definition: fields.h:486
Bitfield8Field(std::string _display_name, std::string _extra_info, std::vector< std::string > _options)
Definition: fields.h:397
std::vector< std::string > options
List of options available in the bitfield.
Definition: fields.h:394
std::string GetFieldXMLString(int offset)
Generates a string representing an XML node associated with this tag field, used for generating plugi...
Definition: fields.h:772
std::string GetFieldXMLString(int offset)
Generates a string representing an XML node associated with this tag field, used for generating plugi...
Definition: fields.h:550
EnumField(std::string _display_name, std::string _extra_info, std::vector< std::string > _options)
Definition: fields.h:335
void ShowImPropertyControl()
Shows a set of ImGUI controls representing the tag field.
Definition: fields.h:792
std::string GetFieldXMLString(int offset)
Generates a string representing an XML node associated with this tag field, used for generating plugi...
Definition: fields.h:233
bool bitfield8[8]
Typedef for a bitfield8 field, used in tag data definitions.
Definition: fields.h:18
void ShowImPropertyControl()
Shows a set of ImGUI controls representing the tag field.
Definition: fields.h:138
Class representing an enum tag field.
Definition: fields.h:328
std::string GetFieldXMLString(int offset)
Generates a string representing an XML node associated with this tag field, used for generating plugi...
Definition: fields.h:111
Int32Field(std::string _display_name, std::string _extra_info)
Definition: fields.h:130
std::string GetFieldXMLString(int offset)
Generates a string representing an XML node associated with this tag field, used for generating plugi...
Definition: fields.h:191
std::string GetFieldXMLString(int offset)
Generates a string representing an XML node associated with this tag field, used for generating plugi...
Definition: fields.h:311
Class representing a color tag field.
Definition: fields.h:289
void ShowImPropertyControl()
Shows a set of ImGUI controls representing the tag field.
Definition: fields.cpp:45
ColorFloatField(std::string _display_name, std::string _extra_info)
Definition: fields.h:292
BooleanField(std::string _display_name, std::string _extra_info)
Definition: fields.h:253
std::vector< std::string > options
List of options available in the bitfield.
Definition: fields.h:485
int entry_count
The number of entries within the tag block.
Definition: tags.h:84
void * read_address
The address of the data the field is currently representing.
Definition: fields.h:41
std::string GetFieldXMLString(int offset)
Generates a string representing an XML node associated with this tag field, used for generating plugi...
Definition: fields.h:641
void ShowImPropertyControl()
Shows a set of ImGUI controls representing the tag field.
Definition: fields.h:300
Structure representing a tag reference.
Definition: tags.h:112
std::vector< TagField * > block_template
The list of block entries in this block.
Definition: fields.h:751
Class representing an int8 tag field.
Definition: fields.h:207
int entry_size
The size of each block entry.
Definition: fields.h:755
tag_block< void > * block_info
Pointer to the current block info being represented.
Definition: fields.h:753
void ShowImPropertyControl()
Shows a set of ImGUI controls representing the tag field.
Definition: fields.h:176
Base class representing a tag field.
Definition: fields.h:35
char block_identifier[6]
Special variable that is used for saving tag data to a file from within the engine....
Definition: tags.h:81
int read_length
How many bytes to read from the start of the address.
Definition: fields.h:42
std::string extra_info
Additional information to show alongside the field.
Definition: fields.h:39
Class representing a bitfield32 tag field.
Definition: fields.h:573
Class representing an int32 tag field.
Definition: fields.h:127
bool bitfield16[16]
Typedef for a bitfield16 field, used in tag data definitions.
Definition: fields.h:19
char stringid[128]
Typedef for a stringid field, used in tag data definitions.
Definition: fields.h:22
void SetMemoryLocation(void *new_address)
Sets the read location of the tag field.
Definition: fields.h:767
int max_items_to_show
Maximum number of bitfield options to show.
Definition: fields.h:577
std::string GetFieldXMLString(int offset)
Generates a string representing an XML node associated with this tag field, used for generating plugi...
Definition: fields.h:272
Int16Field(std::string _display_name, std::string _extra_info)
Definition: fields.h:168
bool bitfield32[32]
Typedef for a bitfield32 field, used in tag data definitions.
Definition: fields.h:20
std::vector< std::string > options
List of options available in the bitfield.
Definition: fields.h:576
Class representing an ascii tag field.
Definition: fields.h:89
int max_items_to_show
Maximum number of bitfield options to show.
Definition: fields.h:395
virtual void SetMemoryLocation(void *new_address)
Sets the read location of the tag field.
Definition: fields.h:57
std::string display_name
The display name of the tag field.
Definition: fields.h:38
void ShowImPropertyControl()
Shows a set of ImGUI controls representing the tag field.
Definition: fields.h:498
Block(int _entry_size, std::string _display_name, std::string _extra_info, std::vector< TagField * > _block_template)
Definition: fields.h:757
void ShowImPropertyControl()
Shows a set of ImGUI controls representing the tag field.
Definition: fields.h:344
std::string GetFieldXMLString(int offset)
Generates a string representing an XML node associated with this tag field, used for generating plugi...
Definition: fields.cpp:5
Class representing a boolean tag field.
Definition: fields.h:250
Class representing an int16 tag field.
Definition: fields.h:165
std::string GetFieldXMLString(int offset)
Generates a string representing an XML node associated with this tag field, used for generating plugi...
Definition: fields.h:149
@ Text
Master text object that wraps around both BitmapText and DWText.
Definition: render_stack.h:73
virtual void ShowImPropertyControl()
Shows a set of ImGUI controls representing the tag field.
Definition: fields.h:49
Bitfield32Field(std::string _display_name, std::string _extra_info, std::vector< std::string > _options)
Definition: fields.h:579
Class representing a bitfield16 tag field.
Definition: fields.h:482
void ShowImPropertyControl()
Shows a set of ImGUI controls representing the tag field.
Definition: fields.h:261