Progress on poker logic
This commit is contained in:
106
src/dawn/poker/visualnovel/PokerDetermineBetterEvent.hpp
Normal file
106
src/dawn/poker/visualnovel/PokerDetermineBetterEvent.hpp
Normal file
@ -0,0 +1,106 @@
|
||||
// Copyright (c) 2022 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#pragma once
|
||||
#include "PokerGameEvent.hpp"
|
||||
|
||||
namespace Dawn {
|
||||
class PokerDetermineBetterEvent : public PokerGameEvent {
|
||||
protected:
|
||||
IVisualNovelEvent * eventEveryoneFolded = nullptr;
|
||||
IVisualNovelEvent * eventBettingFinished = nullptr;
|
||||
IVisualNovelEvent * eventTurn = nullptr;
|
||||
IVisualNovelEvent * eventAiBet = nullptr;
|
||||
IVisualNovelEvent * eventHumanBet = nullptr;
|
||||
|
||||
void onStart() override;
|
||||
bool_t onUpdate() override;
|
||||
void onEnd() override;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Construct a better determine event.
|
||||
*
|
||||
* @param manager VN manager that this event belongs to.
|
||||
*/
|
||||
PokerDetermineBetterEvent(VisualNovelManager *manager);
|
||||
|
||||
/**
|
||||
* Sets the event that is triggered when everyone is folded.
|
||||
*
|
||||
* @param event Event to trigger.
|
||||
* @return The event that was passed in.
|
||||
*/
|
||||
template<class T>
|
||||
T * whenEveryoneFolded(T *event) {
|
||||
assertNotNull(event);
|
||||
this->eventEveryoneFolded = event;
|
||||
event->previous = this;
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the event that is triggered after everyone has finished betting.
|
||||
*
|
||||
* @param event Event to trigger.
|
||||
* @return The event that was passed in.
|
||||
*/
|
||||
template<class T>
|
||||
T * whenBettingFinished(T *event) {
|
||||
assertNotNull(event);
|
||||
this->eventBettingFinished = event;
|
||||
event->previous = this;
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event to trigger when all betting is finished and its time to turn the
|
||||
* next set of community cards.
|
||||
*
|
||||
* @param event Event to trigger.
|
||||
* @return The event that was passed in.
|
||||
*/
|
||||
template<class T>
|
||||
T * whenTurn(T *event) {
|
||||
assertNotNull(event);
|
||||
this->eventTurn = event;
|
||||
event->previous = this;
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the event to trigger when its an AI's turn to bet.
|
||||
*
|
||||
* @param event Event to trigger.
|
||||
* @return The event that was passed in.
|
||||
*/
|
||||
template<class T>
|
||||
T * whenAiBet(T *event) {
|
||||
assertNotNull(event);
|
||||
this->eventAiBet = event;
|
||||
event->previous = this;
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the event to trigger when its a human's turn to bet.
|
||||
*
|
||||
* @param event Event to trigger.
|
||||
* @return The event that was passed in.
|
||||
*/
|
||||
template<class T>
|
||||
T * whenHumanBet(T *event) {
|
||||
assertNotNull(event);
|
||||
this->eventHumanBet = event;
|
||||
event->previous = this;
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dispose override for the event.
|
||||
*/
|
||||
~PokerDetermineBetterEvent();
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user