Seated, active, playing
A player will be considered:
-
seated, if his chair is occupied
-
active: if he is posting blinds, i.e not sitting out
-
playing, if he holds cards; i.e either face-cards or cardbacks.
OpenHoldem will scrape the above information in this order and much depends on getting this information right. For example if a player is not even seated, then OpenHoldem will be smart and avoid the costly scraping of cards and especially names. Fortunately deciding if a player is seated or active can usually be done with an inexpensive and reliable hash-transformation, which usually requires only the colour of a single pixel.
Scraping cards works in a similar way: It requires:
-
cardbacks: again this information can usually be scraped with a cheap and reliable colour-transform
-
“nocard”-regions. These regions were introduced for two reasons: if a player holds no cards we can avoid the somewhat costly scraping for card-faces which usually requires fuzzy fonts. As an additional benefit we get improved error-detection in debug-mode, because a player either shows cardbacks, cardfaces or no-card.
-
cardfaces (or alternatively ranks plus suits): this information can sometimes be done with hashes or images, if the cards are always displayed the same way: but often the display will differ a little bit and you will need text-scraping (fuzzy fonts).
In practice it looks like this:
|
Not seated
|
pXseated == false
|
Rest does not matter
|
|
|
Seated, but sitting out
|
pXseated == true
|
pXactive == false
|
|
|
Seated and active, but not playing
|
pXseated == true
|
pXactive == true
|
pXcardback == false
|
pYcardfaceYnocard == true
|
|
|
Seated, active and playing (villain)
|
pXseated == true
|
pXactive == true
|
pXcardback == true
|
|
|
Seated, active and playing
|
(usually hero, at some casinos villain at showdown)
|
|
pXseated == true
|
pXactive == true
|
pXcardback == false
|
pXcardfaceYnocard == false
|
|