Files
cards/src/game/rule/operation/suit.go
Bel LaPointe 9efb30ae3e in prog
2021-03-28 13:13:17 -05:00

53 lines
801 B
Go

package operation
import (
"encoding/json"
"local/sandbox/cards/src/entity"
)
type Suit int
const (
_ Suit = iota
Heart Suit = iota
Spade Suit = iota
Diamond Suit = iota
Club Suit = iota
)
var suitStrings = map[string]Suit{
"heart": Heart,
"spade": Spade,
"diamond": Diamond,
"club": Club,
}
func (suit Suit) Is(card entity.Card) bool {
return card.Suit == int(suit)
}
func (suit Suit) MarshalJSON() ([]byte, error) {
for k, v := range suitStrings {
if suit == v {
return json.Marshal(k)
}
}
return json.Marshal("?")
}
func (suit *Suit) UnmarshalJSON(b []byte) error {
var s string
err := json.Unmarshal(b, &s)
if err != nil {
return err
}
for k, v := range suitStrings {
if k == s {
*suit = v
return nil
}
}
*suit = 0
return nil
}