Files
mod-playerbots/src/strategy/values/BudgetValues.h
2024-08-04 10:23:36 +08:00

89 lines
2.2 KiB
C++

/*
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
* and/or modify it under version 2 of the License, or (at your option), any later version.
*/
#ifndef _PLAYERBOT_BUDGETVALUES_H
#define _PLAYERBOT_BUDGETVALUES_H
#include "NamedObjectContext.h"
#include "Value.h"
class PlayerbotAI;
enum class NeedMoneyFor : uint32
{
none = 0,
repair = 1,
ammo = 2,
spells = 3,
travel = 4,
consumables = 5,
gear = 6,
guild = 7,
tradeskill = 8,
anything = 9
};
class MaxGearRepairCostValue : public Uint32CalculatedValue
{
public:
MaxGearRepairCostValue(PlayerbotAI* botAI) : Uint32CalculatedValue(botAI, "max repair cost", 60) {}
uint32 Calculate() override;
};
class RepairCostValue : public Uint32CalculatedValue
{
public:
RepairCostValue(PlayerbotAI* botAI) : Uint32CalculatedValue(botAI, "repair cost", 60) {}
uint32 Calculate() override;
};
class TrainCostValue : public Uint32CalculatedValue
{
public:
TrainCostValue(PlayerbotAI* botAI) : Uint32CalculatedValue(botAI, "train cost", 60) {}
uint32 Calculate() override;
};
class MoneyNeededForValue : public Uint32CalculatedValue, public Qualified
{
public:
MoneyNeededForValue(PlayerbotAI* botAI) : Uint32CalculatedValue(botAI, "money needed for", 60) {}
uint32 Calculate() override;
};
class TotalMoneyNeededForValue : public Uint32CalculatedValue, public Qualified
{
public:
TotalMoneyNeededForValue(PlayerbotAI* botAI) : Uint32CalculatedValue(botAI, "total money needed for", 60) {}
uint32 Calculate() override;
private:
std::vector<NeedMoneyFor> saveMoneyFor = {NeedMoneyFor::guild, NeedMoneyFor::repair, NeedMoneyFor::ammo,
NeedMoneyFor::spells, NeedMoneyFor::travel};
};
class FreeMoneyForValue : public Uint32CalculatedValue, public Qualified
{
public:
FreeMoneyForValue(PlayerbotAI* botAI) : Uint32CalculatedValue(botAI, "free money for") {}
uint32 Calculate() override;
};
class ShouldGetMoneyValue : public BoolCalculatedValue
{
public:
ShouldGetMoneyValue(PlayerbotAI* botAI) : BoolCalculatedValue(botAI, "should get money", 2) {}
bool Calculate() override;
};
#endif