Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
AITradeUtility.hpp File Reference
#include "AIUtility.hpp"
#include "Actions.hpp"
#include <array>
#include <cstddef>
#include <cstdint>
#include <span>
Include dependency graph for AITradeUtility.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  monopoly::ai::trade::MonopolyTradeGroup
 
struct  monopoly::ai::trade::TradeProposalRecord
 
struct  monopoly::ai::trade::FutureImmunityRecord
 
struct  monopoly::ai::trade::PropertyImportanceConfig
 
struct  monopoly::ai::trade::PropertyImportanceResult
 
struct  monopoly::ai::trade::TradeCadenceInputs
 
struct  monopoly::ai::trade::PlayerPropertyAttitudeList
 
struct  monopoly::ai::trade::MonopolyTradeGenerosity
 
struct  monopoly::ai::trade::TradeImportanceRecord
 
struct  monopoly::ai::trade::PropertyTradeMemory
 
struct  monopoly::ai::trade::ProposedTradeSendInputs
 
struct  monopoly::ai::trade::ProposedTradeSendPlan
 

Namespaces

namespace  monopoly
 
namespace  monopoly::ai
 
namespace  monopoly::ai::trade
 

Typedefs

using monopoly::ai::trade::PropertySets = std::array< rules::board::PropertySet, rules::MaxPlayers >
 
using monopoly::ai::trade::TradeProposalList = std::array< TradeProposalRecord, rules::MaxPlayers >
 
using monopoly::ai::trade::FutureImmunityList = std::array< FutureImmunityRecord, rules::MaxCountHitSets >
 
using monopoly::ai::trade::WhatToTradeTable = std::array< MonopolyTradeGenerosity, WhatToTradeEntries >
 
using monopoly::ai::trade::CashMultiplierTable = std::array< double, WhatToTradeEntries >
 
using monopoly::ai::trade::TradeImportanceList = std::array< TradeImportanceRecord, 6 >
 

Enumerations

enum class  monopoly::ai::trade::MonopolyTradeDecision : std::uint8_t { monopoly::ai::trade::Avoid = 0 , monopoly::ai::trade::Required = 1 , monopoly::ai::trade::Maybe = 2 }
 
enum class  monopoly::ai::trade::MonopolySortOrder : std::uint8_t { monopoly::ai::trade::Ascending = 0 , monopoly::ai::trade::Descending , monopoly::ai::trade::Random }
 
enum class  monopoly::ai::trade::StrategicPropertyImportance : std::uint8_t { monopoly::ai::trade::NotImportant = 0 , monopoly::ai::trade::GivesDirectMonopoly = 1 , monopoly::ai::trade::AllowsTrade = 2 , monopoly::ai::trade::CashCow = 3 }
 
enum class  monopoly::ai::trade::PropertyClassification : std::uint8_t {
  monopoly::ai::trade::None = 0 , monopoly::ai::trade::One = 1 , monopoly::ai::trade::Two , monopoly::ai::trade::Three ,
  monopoly::ai::trade::Four , monopoly::ai::trade::Five , monopoly::ai::trade::Six , monopoly::ai::trade::Worst = 10 ,
  monopoly::ai::trade::Best = 11
}
 
enum class  monopoly::ai::trade::TradeImportanceItem : std::uint8_t {
  monopoly::ai::trade::Monopoly = 0 , monopoly::ai::trade::Trade , monopoly::ai::trade::OneUnowned , monopoly::ai::trade::TwoUnowned ,
  monopoly::ai::trade::Railroad , monopoly::ai::trade::Utility , monopoly::ai::trade::Count , monopoly::ai::trade::Junk
}
 
enum class  monopoly::ai::trade::ProposedTradeSendStatus : std::uint8_t {
  monopoly::ai::trade::InvalidInput = 0 , monopoly::ai::trade::Busy , monopoly::ai::trade::NotTwoPlayers , monopoly::ai::trade::RequestEditing ,
  monopoly::ai::trade::Ready , monopoly::ai::trade::CapacityExceeded
}
 

Functions

MonopolyTradeGroup monopoly::ai::trade::findSmallestMonopolyTrade (rules::PlayerNumber player, rules::board::PropertySet monopoly, std::span< const rules::PlayerNumber > candidates, const PropertySets &properties) noexcept
 
std::int64_t monopoly::ai::trade::transferTax (const rules::GameState &state, rules::board::PropertySet properties) noexcept
 
int monopoly::ai::trade::vetoMonopolies (rules::board::PropertySet properties) noexcept
 
int monopoly::ai::trade::possibleMonopoly (const rules::GameState &state, rules::PlayerNumber owner, rules::board::SquareType square) noexcept
 
std::array< rules::board::SquareGroup, 8 > monopoly::ai::trade::orderMonopolyImportance (std::int64_t liquidAssets, MonopolySortOrder order, std::span< const std::uint32_t > randomKeys) noexcept
 
PropertyImportanceResult monopoly::ai::trade::findPlayerPropertyImportance (const rules::GameState &state, rules::PlayerNumber player, rules::PlayerNumber strategyPlayer, const PropertyImportanceConfig &config, std::int64_t moneyOwed) noexcept
 
double monopoly::ai::trade::calculateTradePropertyImportance (const rules::GameState &before, const rules::GameState &after, rules::PlayerNumber player, rules::PlayerNumber strategyPlayer, const TradeProposalList &proposals, bool givingMonopolyAway, const PropertyImportanceConfig &config, std::span< const std::int64_t > moneyOwed) noexcept
 
MonopolyTradeDecision monopoly::ai::trade::shouldTradeForMonopoly (const rules::GameState &state, rules::PlayerNumber player) noexcept
 
rules::PlayerNumber monopoly::ai::trade::findNonmonopolyPlayer (const rules::GameState &state, rules::PlayerNumber player, std::span< const std::int64_t > moneyOwed) noexcept
 
bool monopoly::ai::trade::onlyPlayerHasMonopoly (const rules::GameState &state, rules::PlayerNumber player) noexcept
 
bool monopoly::ai::trade::hasMonopolyTrade (const rules::GameState &state, rules::PlayerNumber player, rules::PlayerNumber excludedPlayer) noexcept
 
StrategicPropertyImportance monopoly::ai::trade::strategicPropertyImportance (const rules::GameState &state, rules::board::SquareType property, rules::PlayerNumber excludedPlayer, rules::PlayerNumber includedPlayer, rules::PlayerNumber purchasingPlayer, rules::board::SquareType purchasingProperty) noexcept
 
int monopoly::ai::trade::findFreeTradeSpot (std::span< const std::int64_t > timeLastTrade, std::size_t maxTrades) noexcept
 
bool monopoly::ai::trade::shouldTrade (const rules::GameState &state, rules::PlayerNumber player, std::uint8_t importance, std::span< const std::int64_t > timeLastTrade, std::size_t maxTrades, const TradeCadenceInputs &inputs) noexcept
 
PlayerPropertyAttitudeList monopoly::ai::trade::createPlayerPropertyAttitudeList (const rules::GameState &state, rules::PlayerNumber player, const TradeProposalList &proposals, std::span< const double > playerAttitudes) noexcept
 
bool monopoly::ai::trade::addTradeMonopoly (const rules::GameState &state, rules::PlayerNumber toPlayer, rules::board::PropertySet &properties, PropertyClassification type, TradeProposalList &proposals, std::int64_t moneyOwed) noexcept
 
TradeImportanceList monopoly::ai::trade::createItemImportanceList (const rules::GameState &state, rules::PlayerNumber player, rules::PlayerNumber strategyPlayer, const PropertyImportanceConfig &config, double strategyAttitudeTowardPlayer, const CashMultiplierTable &multipliers) noexcept
 
bool monopoly::ai::trade::addTypeProperty (const rules::GameState &before, const rules::GameState &after, rules::PlayerNumber player, rules::PlayerNumber strategyPlayer, rules::board::PropertySet &combinedProperties, TradeImportanceItem item, TradeProposalList &proposals, const PropertySets &properties, bool giveDescending, const WhatToTradeTable &whatToTrade, double strategyAttitudeTowardPlayer, std::int64_t playerMoneyOwed) noexcept
 
void monopoly::ai::trade::rememberTradedProperties (PropertyTradeMemory &memory, rules::PlayerNumber proposedPlayer, const TradeProposalRecord &proposal) noexcept
 
rules::board::PropertySet monopoly::ai::trade::propertiesAlreadyTraded (const PropertyTradeMemory &memory, rules::PlayerNumber proposedPlayer, const TradeProposalRecord &proposal, int dangerLevel) noexcept
 
void monopoly::ai::trade::forgetTradedProperties (PropertyTradeMemory &memory) noexcept
 
double monopoly::ai::trade::cashMultiplier (double attitude, const CashMultiplierTable &multipliers) noexcept
 
bool monopoly::ai::trade::playerInvolvedInTrade (const TradeProposalRecord &proposal) noexcept
 
rules::PlayerNumber monopoly::ai::trade::nextPlayerWantingCash (const TradeProposalList &proposals) noexcept
 
bool monopoly::ai::trade::tradeIsProper (const rules::GameState &state, const TradeProposalList &proposals, std::span< const FutureImmunityRecord > immunities) noexcept
 
void monopoly::ai::trade::makeTradeProper (const rules::GameState &state, TradeProposalList &proposals, std::span< const FutureImmunityRecord > immunities) noexcept
 
void monopoly::ai::trade::applyTradeToState (rules::GameState &state, const TradeProposalList &proposals) noexcept
 
bool monopoly::ai::trade::isMonopolyTrade (const rules::GameState &state, const TradeProposalList &proposals) noexcept
 
bool monopoly::ai::trade::playerHasFutureOrImmunity (rules::PlayerNumber player, std::span< const FutureImmunityRecord > immunities) noexcept
 
ProposedTradeSendPlan monopoly::ai::trade::buildProposedTradeSendPlan (const rules::GameState &state, rules::PlayerNumber player, const TradeProposalList &proposals, const ProposedTradeSendInputs &inputs) noexcept
 
bool monopoly::ai::trade::addTradeItem (TradeProposalList &proposals, FutureImmunityList &immunities, rules::TradeItemKind kind, std::int64_t amount, rules::PlayerNumber fromPlayer, rules::PlayerNumber toPlayer, rules::board::PropertySet propertySet) noexcept
 

Variables

constexpr std::size_t monopoly::ai::trade::DeckCount
 
constexpr std::uint8_t monopoly::ai::trade::TradeSomewhatImportant = 1u << 0
 
constexpr std::uint8_t monopoly::ai::trade::TradeDesperate = 1u << 1
 
constexpr std::uint8_t monopoly::ai::trade::TradeForCash = 1u << 2
 
constexpr std::uint8_t monopoly::ai::trade::TradeGiveMonopoly = 1u << 3
 
constexpr std::size_t monopoly::ai::trade::WhatToTradeEntries = 20
 
constexpr std::size_t monopoly::ai::trade::MaxProposedTradeSendActions