Main.elm 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. module Main exposing (..)
  2. import Browser
  3. import Model as Ml
  4. import View as Vi
  5. import Msg as Ev
  6. -- MAIN
  7. main =
  8. Browser.sandbox
  9. { init = init
  10. , update = update
  11. , view = Vi.view
  12. }
  13. -- EVENTS
  14. init : Ml.Model
  15. init =
  16. { name="STR"
  17. , val=10
  18. , character =
  19. { name="Skadi the Brave"
  20. , abilities =
  21. { str = 10
  22. , dex = 10
  23. , con = 10
  24. , int = 10
  25. , wis = 10
  26. , cha = 10
  27. }
  28. }
  29. }
  30. changeVal : Ml.Model -> Int -> Ml.Model
  31. changeVal model x =
  32. { name=model.name
  33. , val=model.val + x
  34. , character=model.character
  35. }
  36. changeAbi : Ml.Abilities -> Ml.Ability -> Int -> Ml.Abilities
  37. changeAbi abilities abi x =
  38. case abi of
  39. Ml.Strength ->
  40. { str = abilities.str + x
  41. , dex = 10
  42. , con = 10
  43. , int = 10
  44. , wis = 10
  45. , cha = 10
  46. }
  47. _ -> abilities
  48. changeAbilities : Ml.Model -> Ml.Abilities -> Ml.Model
  49. changeAbilities model abilities =
  50. { name=model.name
  51. , val=model.val
  52. , character=
  53. { name = model.character.name
  54. , abilities = abilities
  55. }
  56. }
  57. -- UPDATE
  58. update : Ev.Msg -> Ml.Model -> Ml.Model
  59. update msg model =
  60. case msg of
  61. Ev.Increment ->
  62. changeVal model 1
  63. Ev.Decrement ->
  64. changeVal model -1
  65. Ev.IncrementStr ->
  66. changeAbilities model (changeAbi model.character.abilities Ml.Strength 1)
  67. Ev.DecrementStr ->
  68. changeAbilities model (changeAbi model.character.abilities Ml.Strength -1)