Skip to content

Commit

Permalink
Significant cleanup.
Browse files Browse the repository at this point in the history
  • Loading branch information
Friendly0Fire committed Aug 6, 2023
1 parent df515cd commit abe2939
Show file tree
Hide file tree
Showing 21 changed files with 1,070 additions and 1,449 deletions.
6 changes: 3 additions & 3 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ AllowShortIfStatementsOnASingleLine: false
AllowShortLambdasOnASingleLine: Inline
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: false
BraceWrapping:
BraceWrapping:
AfterCaseLabel: true
AfterClass: true
AfterControlStatement: false
Expand All @@ -33,8 +33,8 @@ BreakConstructorInitializers: BeforeComma
ColumnLimit: 140
ConstructorInitializerAllOnOneLineOrOnePerLine: true
Cpp11BracedListStyle: false
IncludeBlocks: Preserve
IncludeCategories:
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^<[^\.]+$'
Priority: 1
- Regex: '^<.*'
Expand Down
7 changes: 7 additions & 0 deletions GW2Clarity.sln.DotSettings
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,12 @@
&lt;CppIncludeCategorySetting Pattern="^&amp;quot;.*" Description="#include &amp;quot;header&amp;quot;" Group="3" Order="4" /&gt;&#xD;
&lt;/CppIncludeCategories&gt;</s:String>
<s:Int64 x:Key="/Default/CodeStyle/CppSortIncludes/MainHeaderGroup/@EntryValue">0</s:Int64>
<s:Boolean x:Key="/Default/CodeStyle/CppSortIncludes/PreserveIncludeBlocks/@EntryValue">False</s:Boolean>
<s:Int64 x:Key="/Default/CodeStyle/CppSortIncludes/UnmatchedHeaderOrder/@EntryValue">5</s:Int64>
<s:String x:Key="/Default/CodeStyle/Naming/CppNaming/Abbreviations/=EOF/@EntryIndexedValue">EOF</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CppNaming/Abbreviations/=OEM/@EntryIndexedValue">OEM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CppNaming/Abbreviations/=SBC/@EntryIndexedValue">SBC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CppNaming/Abbreviations/=SC/@EntryIndexedValue">SC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CppNaming/Rules/=Class_0020and_0020struct_0020fields/@EntryIndexedValue"></s:String>
<s:Boolean x:Key="/Default/CodeStyle/Naming/CppNaming/Rules/=Class_0020and_0020struct_0020fields/@EntryIndexRemoved">True</s:Boolean>
<s:String x:Key="/Default/CodeStyle/Naming/CppNaming/Rules/=Class_0020and_0020struct_0020methods/@EntryIndexedValue"></s:String>
Expand Down Expand Up @@ -94,6 +99,8 @@
<s:String x:Key="/Default/CodeStyle/Naming/CppNaming/Rules/=Unions/@EntryIndexedValue"></s:String>
<s:Boolean x:Key="/Default/CodeStyle/Naming/CppNaming/Rules/=Unions/@EntryIndexRemoved">True</s:Boolean>
<s:String x:Key="/Default/CodeStyle/Naming/CppNaming/Rules/=Variables/@EntryIndexedValue">&lt;NamingElement Priority="10"&gt;&lt;Descriptor Static="Indeterminate" Constexpr="Indeterminate" Const="Indeterminate" Volatile="Indeterminate" Accessibility="NOT_APPLICABLE"&gt;&lt;type Name="global variable" /&gt;&lt;type Name="local variable" /&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/NamingElement&gt;</s:String>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EFeature_002EServices_002ECpp_002ECodeStyle_002EIncludesOrder_002ECppIncludeDirectiveSettingsMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EFeature_002EServices_002ECpp_002ECodeStyle_002ESettingsUpgrade_002EFunctionReturnStyleSettingsUpgrader/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=hlsl/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=HRESULT/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Keybind/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
2 changes: 1 addition & 1 deletion GW2Clarity/common
203 changes: 64 additions & 139 deletions GW2Clarity/include/Buffs.h
Original file line number Diff line number Diff line change
@@ -1,101 +1,63 @@
#pragma once

#include <ActivationKeybind.h>
#include <ConfigurationFile.h>
#include <Graphics.h>
#include <Layouts.h>
#include <Main.h>
#include <SettingsMenu.h>
#include <glm/glm.hpp>
#include <imgui.h>
#include <map>
#include <mutex>
#include <set>
#include <span>

#include "ActivationKeybind.h"
#include "ConfigurationFile.h"
#include "Graphics.h"
#include "Layouts.h"
#include "Main.h"
#include "SettingsMenu.h"

namespace GW2Clarity
{

struct Buff
{
uint id;
int maxStacks;
std::string name;
std::string atlasEntry;
glm::vec2 uv{};
std::set<uint> extraIds;
std::string category;

static std::string NameToAtlas(const std::string& name)
{
return ReplaceChars(ToLower(name), {
{' ', '_'},
{ '\"', '_'}
});
}
uint id;
int maxStacks;
std::string name;
std::string atlasEntry;
glm::vec2 uv {};
std::set<uint> extraIds;
std::string category;

implicit Buff(std::string&& name)
: Buff(0xFFFFFFFF, std::move(name))
{}
static std::string NameToAtlas(const std::string& name) { return ReplaceChars(ToLower(name), { { ' ', '_' }, { '\"', '_' } }); }

implicit Buff(std::string&& name) : Buff(0xFFFFFFFF, std::move(name)) { }

Buff(uint id, std::string&& name, int maxStacks = std::numeric_limits<int>::max())
: id(id)
, maxStacks(maxStacks)
, name(std::move(name))
{
: id(id), maxStacks(maxStacks), name(std::move(name)) {
atlasEntry = NameToAtlas(this->name);
}

Buff(uint id, std::string&& name, std::string&& atlas, int maxStacks = std::numeric_limits<int>::max())
: id(id)
, maxStacks(maxStacks)
, name(std::move(name))
, atlasEntry(std::move(atlas))
{}
: id(id), maxStacks(maxStacks), name(std::move(name)), atlasEntry(std::move(atlas)) { }

Buff(uint id, std::string&& name, glm::vec4&& uv, int maxStacks = std::numeric_limits<int>::max())
: id(id)
, maxStacks(maxStacks)
, name(std::move(name))
, uv(std::move(uv))
{}
: id(id), maxStacks(maxStacks), name(std::move(name)), uv(std::move(uv)) { }

Buff(std::initializer_list<uint> ids, std::string&& name, int maxStacks = std::numeric_limits<int>::max())
: id(*ids.begin())
, maxStacks(maxStacks)
, name(std::move(name))
{
: id(*ids.begin()), maxStacks(maxStacks), name(std::move(name)) {
atlasEntry = NameToAtlas(this->name);
extraIds.insert(ids.begin() + 1, ids.end());
}

Buff(std::initializer_list<uint> ids, std::string&& name, std::string&& atlas, int maxStacks = std::numeric_limits<int>::max())
: id(*ids.begin())
, maxStacks(maxStacks)
, name(std::move(name))
, atlasEntry(std::move(atlas))
{
: id(*ids.begin()), maxStacks(maxStacks), name(std::move(name)), atlasEntry(std::move(atlas)) {
extraIds.insert(ids.begin() + 1, ids.end());
}

Buff(std::initializer_list<uint> ids, std::string&& name, glm::vec2&& uv, int maxStacks = std::numeric_limits<int>::max())
: id(*ids.begin())
, maxStacks(maxStacks)
, name(std::move(name))
, uv(std::move(uv))
{
: id(*ids.begin()), maxStacks(maxStacks), name(std::move(name)), uv(std::move(uv)) {
extraIds.insert(ids.begin() + 1, ids.end());
}

[[nodiscard]] int GetStacks(std::unordered_map<uint, int>& activeBuffs) const
{
[[nodiscard]] int GetStacks(std::unordered_map<uint, int>& activeBuffs) const {
return std::accumulate(extraIds.begin(), extraIds.end(), activeBuffs[id], [&](int a, uint b) { return a + activeBuffs[b]; });
}

[[nodiscard]] bool ShowNumber(int count) const
{
return maxStacks > 1 && count > 1;
}
[[nodiscard]] bool ShowNumber(int count) const { return maxStacks > 1 && count > 1; }
};

class Buffs
Expand All @@ -107,112 +69,75 @@ class Buffs
Buffs(ComPtr<ID3D11Device>& dev);

#ifdef _DEBUG
void DrawMenu(Keybind** currentEditedKeybind) override;
void DrawMenu(Keybind** currentEditedKeybind) override;

[[nodiscard]] const char* GetTabName() const override
{
return "Buffs Analyzer";
}
[[nodiscard]] const char* GetTabName() const override { return "Buffs Analyzer"; }
#endif

void UpdateBuffsTable(StackedBuff* buffs);
void UpdateBuffsTable(StackedBuff* buffs);

static inline const Buff UnknownBuff{ 0, "Unknown", 1 };
static inline const Buff UnknownBuff { 0, "Unknown", 1 };

[[nodiscard]] auto buffs() const
{
return std::span{ buffs_ };
}
[[nodiscard]] glm::vec2 GetNumber(int n) const
{
[[nodiscard]] auto buffs() const { return std::span { buffs_ }; }
[[nodiscard]] glm::vec2 GetNumber(int n) const {
// 0 and 1 are not in the array, so 2 is at index 0
n -= 2;
return n < 0 ? glm::vec2{} : n < int(numbers_.size()) ? numbers_[n] : numbers_.back();
}
[[nodiscard]] const auto& buffsMap() const
{
return buffsMap_;
}
[[nodiscard]] auto& activeBuffs() const
{
return activeBuffs_;
return n < 0 ? glm::vec2 {} : n < int(numbers_.size()) ? numbers_[n] : numbers_.back();
}
[[nodiscard]] const auto& buffsMap() const { return buffsMap_; }
[[nodiscard]] auto& activeBuffs() const { return activeBuffs_; }

[[nodiscard]] const auto& buffsAtlasUVSize() const
{
return buffsAtlasUVSize_;
}
[[nodiscard]] const auto& numbersAtlasUVSize() const
{
return numbersAtlasUVSize_;
}
[[nodiscard]] const auto& buffsAtlasUVSize() const { return buffsAtlasUVSize_; }
[[nodiscard]] const auto& numbersAtlasUVSize() const { return numbersAtlasUVSize_; }

[[nodiscard]] const Texture2D& buffsAtlas() const
{
return buffsAtlas_;
}
[[nodiscard]] const Texture2D& numbersAtlas() const
{
return numbersAtlas_;
}
[[nodiscard]] const Texture2D& buffsAtlas() const { return buffsAtlas_; }
[[nodiscard]] const Texture2D& numbersAtlas() const { return numbersAtlas_; }

bool DrawBuffCombo(const char* name, const Buff*& selectedBuf, std::span<char> searchBuffer) const;

protected:
Texture2D buffsAtlas_;
Texture2D numbersAtlas_;
Texture2D buffsAtlas_;
Texture2D numbersAtlas_;

glm::vec2 buffsAtlasUVSize_;
glm::vec2 numbersAtlasUVSize_;
glm::vec2 buffsAtlasUVSize_;
glm::vec2 numbersAtlasUVSize_;

const std::vector<Buff> buffs_;
const std::map<int, const Buff*> buffsMap_;
const std::vector<glm::vec2> numbers_;
const std::vector<Buff> buffs_;
const std::unordered_map<int, const Buff*> buffsMap_;
const std::vector<glm::vec2> numbers_;
mutable std::unordered_map<uint, int> activeBuffs_;
int lastGetBuffsError_ = 0;
int lastGetBuffsError_ = 0;

static std::vector<Buff> GenerateBuffsList(glm::vec2& uvSize);
static std::map<int, const Buff*> GenerateBuffsMap(const std::vector<Buff>& lst);
static std::vector<Buff> GenerateBuffsList(glm::vec2& uvSize);
static std::unordered_map<int, const Buff*> GenerateBuffsMap(const std::vector<Buff>& lst);

#ifdef _DEBUG
int guildLogId_ = 3;
std::map<uint, std::string> buffNames_;
bool hideInactive_ = false;
std::set<uint> hiddenBuffs_;
int guildLogId_ = 3;
std::unordered_map<uint, std::string> buffNames_;
bool hideInactive_ = false;
std::set<uint> hiddenBuffs_;

void SaveNames() const;
void LoadNames();
void SaveNames() const;
void LoadNames();
#endif
};

class BuffComboBox
{
public:
BuffComboBox(const Buffs* buffs, std::string_view name)
: buffs_(buffs)
, name_(name)
{}

const auto& name() const
{
return name_;
}
BuffComboBox(const Buffs* buffs, std::string_view name) : buffs_(buffs), name_(name) { }

bool Draw(const char* display = nullptr)
{
return buffs_->DrawBuffCombo(display ? display : name_.c_str(), selectedBuff_, buffer_);
}
const auto& name() const { return name_; }

const auto* selectedBuff() const
{
return selectedBuff_;
}
bool Draw(const char* display = nullptr) { return buffs_->DrawBuffCombo(display ? display : name_.c_str(), selectedBuff_, buffer_); }

const auto* selectedBuff() const { return selectedBuff_; }

protected:
const Buffs* buffs_;
std::string name_;
const Buff* selectedBuff_ = nullptr;
std::array<char, 512> buffer_{ '\0' };
const Buffs* buffs_;
std::string name_;
const Buff* selectedBuff_ = nullptr;
std::array<char, 512> buffer_ { '\0' };
};

} // namespace GW2Clarity
} // namespace GW2Clarity
Loading

0 comments on commit abe2939

Please sign in to comment.