1
Fork 0

fsharp(ygosim): feat: added the basic structure and lenses for the CardInstance type and a toCardInstance helper for monsters

Signed-off-by: prescientmoon <git@moonythm.dev>
This commit is contained in:
Matei Adriel 2019-12-15 15:46:36 +02:00 committed by prescientmoon
parent e5b9ed70c6
commit 4b511c12d3
Signed by: prescientmoon
SSH key fingerprint: SHA256:UUF9JT2s8Xfyv76b8ZuVL7XrmimH4o49p4b+iexbVH4

View file

@ -124,18 +124,34 @@ module Card =
| Spell of BaseCard<'s> * SpellCardDetails | Spell of BaseCard<'s> * SpellCardDetails
| Trap of BaseCard<'s> * TrapCardDetails | Trap of BaseCard<'s> * TrapCardDetails
let monster card: option<Monster<'s>> =
match card with
| Monster m -> Some m
| _ -> None
module Card = module Card =
let inline baseCard f card = _1 f card let inline baseCard f card = _1 f card
let inline cardDetails f card = _2 f card let inline cardDetails f card = _2 f card
let inline level f card = (_2 << MonsterCardDetails.level) f card let inline level f card = (_2 << MonsterCardDetails.level) f card
type CardInstance<'s> = Card<'s> type CardInstance<'s> =
{ template: Card<'s>
id: int }
module CardInstance =
let inline template f card = f card.template <&> fun v -> { card with template = v }
let inline _id f card = f card.id <&> fun v -> { card with id = v }
module Monster =
open Card
let monster card: option<Monster<'s> * int> =
match card.template with
| Monster m -> Some(m, card.id)
| _ -> None
let toCardInstance (card: Monster<'a>, _id): CardInstance<'a> =
{ template = Monster card
id = _id }
module Decklist = module Decklist =
type Decklist = type Decklist =