Monopoly — Portage moderne
0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
AITradeSendRuntime.cpp
Go to the documentation of this file.
1
#include "
AITradeSendRuntime.hpp
"
2
3
#include "
Messaging.hpp
"
4
5
namespace
monopoly::ai::trade
6
{
7
bool
sendProposedTrade
(
8
const
rules::GameState
&
state
,
9
rules::PlayerNumber
player,
10
const
TradeProposalList
&
proposals
,
11
bool
tradeAccept,
12
rules::PlayerNumber
proposedPlayer,
13
TradeSendRuntimeState
& runtime)
noexcept
14
{
15
ProposedTradeSendInputs
inputs
{};
16
inputs
.
playerSendingTrade
=
runtime
.state !=
SendingTradeState::Nothing
;
17
inputs
.tradeAccept = tradeAccept;
18
inputs
.sendTradeOffer =
runtime
.sendTradeOffer;
19
inputs
.proposedPlayer = proposedPlayer;
20
21
const
auto
plan
=
buildProposedTradeSendPlan
(
state
, player,
proposals
,
inputs
);
22
if
(!
plan
.sendable() ||
23
messaging::currentQueueSize
() +
plan
.count >
messaging::MessageQueueCapacity
)
24
return
false
;
25
26
for
(std::size_t
index
= 0;
index
<
plan
.count; ++
index
)
27
{
28
if
(!
messaging::sendAction
(
plan
.actions[
index
]))
29
return
false
;
30
}
31
32
runtime
.state =
plan
.status ==
ProposedTradeSendStatus::RequestEditing
33
?
SendingTradeState::AskingTradeEdit
34
:
SendingTradeState::TradeSent
;
35
return
true
;
36
}
37
38
void
processTradeSendActionCompleted
(
39
TradeSendRuntimeState
& runtime,
40
actions::Type
action,
41
bool
success
)
noexcept
42
{
43
if
(action ==
actions::Type::TradeEditingDone
)
44
{
45
runtime
.state =
SendingTradeState::Nothing
;
46
runtime
.sendTradeOffer =
false
;
47
}
48
if
(action ==
actions::Type::StartTradeEditing
)
49
runtime
.state =
success
?
SendingTradeState::TradeItems
50
:
SendingTradeState::Nothing
;
51
}
52
}
plan
decision::EconomicActionPlan plan
Definition
AIMessageIngress.cpp:634
AITradeSendRuntime.hpp
runtime
fonts::Runtime & runtime
Definition
EuropeanDeed.cpp:45
Messaging.hpp
state
unsigned state
Definition
ModernIBarSkin.cpp:25
index
unsigned index
Definition
ModernIBarSkin.cpp:25
monopoly::actions::Type
Type
Definition
Actions.hpp:12
monopoly::actions::Type::TradeEditingDone
@ TradeEditingDone
monopoly::actions::Type::StartTradeEditing
@ StartTradeEditing
monopoly::ai::trade
Definition
AICounterTradeRuntime.cpp:6
monopoly::ai::trade::sendProposedTrade
bool sendProposedTrade(const rules::GameState &state, rules::PlayerNumber player, const TradeProposalList &proposals, bool tradeAccept, rules::PlayerNumber proposedPlayer, TradeSendRuntimeState &runtime) noexcept
Definition
AITradeSendRuntime.cpp:7
monopoly::ai::trade::buildProposedTradeSendPlan
ProposedTradeSendPlan buildProposedTradeSendPlan(const rules::GameState &state, rules::PlayerNumber player, const TradeProposalList &proposals, const ProposedTradeSendInputs &inputs) noexcept
Definition
AITradeUtility.cpp:1377
monopoly::ai::trade::SendingTradeState::TradeItems
@ TradeItems
monopoly::ai::trade::SendingTradeState::AskingTradeEdit
@ AskingTradeEdit
monopoly::ai::trade::SendingTradeState::TradeSent
@ TradeSent
monopoly::ai::trade::SendingTradeState::Nothing
@ Nothing
monopoly::ai::trade::processTradeSendActionCompleted
void processTradeSendActionCompleted(TradeSendRuntimeState &runtime, actions::Type action, bool success) noexcept
Definition
AITradeSendRuntime.cpp:38
monopoly::ai::trade::TradeProposalList
std::array< TradeProposalRecord, rules::MaxPlayers > TradeProposalList
Definition
AITradeUtility.hpp:39
monopoly::ai::trade::ProposedTradeSendStatus::RequestEditing
@ RequestEditing
monopoly::messaging::currentQueueSize
std::size_t currentQueueSize()
Definition
Messaging.cpp:322
monopoly::messaging::MessageQueueCapacity
constexpr std::size_t MessageQueueCapacity
Definition
Messaging.hpp:14
monopoly::messaging::sendAction
bool sendAction(const actions::Message &message)
Definition
Messaging.cpp:234
monopoly::rules::PlayerNumber
std::uint8_t PlayerNumber
Definition
RuleTypes.hpp:12
monopoly::ai::trade::ProposedTradeSendInputs
Definition
AITradeUtility.hpp:332
monopoly::ai::trade::ProposedTradeSendInputs::playerSendingTrade
bool playerSendingTrade
Definition
AITradeUtility.hpp:333
monopoly::ai::trade::TradeSendRuntimeState
Definition
AITradeSendRuntime.hpp:17
monopoly::rules::GameState
Definition
RuleTypes.hpp:259
AITradeSendRuntime.cpp
Generated by
1.9.8