ouppy/src/Main.elm

62 lines
1.6 KiB
Elm
Raw Permalink Normal View History

2023-05-22 17:35:52 +00:00
module Main exposing (main)
import Browser
import Random
import Html exposing (Html, button, div, p, text)
import Html.Attributes exposing (disabled, hidden)
2023-05-22 17:35:52 +00:00
import Html.Events exposing (onClick)
import GenderFriends exposing (altBlumBlumShub, getPolygenderWithLength, renderPolygender)
constant a b = a
main = Browser.element
{ init = init
, update = update
, subscriptions = constant Sub.none
, view = view
}
type Model
= AwaitingSeed
| Ready Int {- seed -} Int {- regeneration count -}
type Msg
= SetSeed Int
| Regenerate
init : () -> (Model, Cmd Msg)
init _ = (AwaitingSeed, Random.generate SetSeed (Random.int 2147483648 4294967296))
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
let
newModel =
case msg of
SetSeed seed -> Ready seed 0
Regenerate -> case model of
AwaitingSeed -> AwaitingSeed
Ready oldSeed regenCount -> Ready (altBlumBlumShub oldSeed) (regenCount + 1)
in
(newModel, Cmd.none)
viewStr : Model -> String
viewStr model = case model of
AwaitingSeed -> "...loading..."
Ready seed regenCount ->
let
(gender, newSeed) = getPolygenderWithLength regenCount seed
genderStr = if regenCount == 75 then "queer platonic partners" else renderPolygender gender
in "do u think a ouppy and a kittys could be " ++ genderStr ++ ",,?"
2023-05-22 17:35:52 +00:00
view : Model -> Html Msg
view model =
div []
[ p [] [ text (viewStr model) ]
, button
( case model of
AwaitingSeed -> []
Ready _ 75 -> [disabled True, hidden True]
2023-05-22 17:35:52 +00:00
Ready _ _ -> [onClick Regenerate]
)
[ text "make it gayer" ]
]