impls item price modifiers

This commit is contained in:
2019-11-17 15:41:48 +01:00
parent 516006f352
commit ebdba97d1e
2 changed files with 206 additions and 59 deletions

View File

@@ -320,26 +320,60 @@ type ActionMode
type RequestData
= SellPayload Loot (Maybe Float) (List Float) (List Int)
| BuyPayload Loot (Maybe Float) (List Float)
= SellPayload Loot (Maybe Float) (List (Maybe Float)) (List Int)
| BuyPayload Loot (Maybe Float) (List (Maybe Float))
| GrabPayload Loot
| AddPayload String Loot
zip xs ys =
List.map2 Tuple.pair xs ys
itemsWithMods items mods =
zip items mods
|> E.list
(\( item, mod ) ->
E.list identity
[ E.int item.id
, case mod of
Just m ->
E.float m
Nothing ->
E.null
]
)
buildPayload : RequestData -> E.Value
buildPayload data =
case data of
BuyPayload items _ _ ->
BuyPayload items gMod iMods ->
E.object
[ ( "items", items |> E.list (\i -> E.list identity [ E.int i.id, E.null ]) )
, ( "global_mod", E.null )
[ ( "items", itemsWithMods items iMods )
, ( "global_mod"
, case gMod of
Nothing ->
E.null
Just f ->
E.float f
)
]
SellPayload items _ _ _ ->
SellPayload items gMod iMods players ->
E.object
[ ( "items", items |> E.list (\i -> E.list identity [ E.int i.id, E.null ]) )
, ( "global_mod", E.null )
, ( "players", E.null )
[ ( "items", itemsWithMods items iMods )
, ( "global_mod"
, case gMod of
Nothing ->
E.null
Just f ->
E.float f
)
, ( "players", E.list (\id -> E.int id) players )
]
-- API expects the list of claimed items ids