summaryrefslogtreecommitdiff
blob: dc90ed4a9544aeaf830941bf157a3e9590098bec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
module Battlemap.Html exposing (view)

import Html exposing (Html, text, table, tr, td)
import Html.Events exposing (onClick)

-- import List as Lt exposing (map)
import Array as Ay exposing (foldr)

import Update exposing (Msg(..))
import Model exposing (Model)

import Battlemap exposing (Battlemap, random)
import Battlemap.Tile exposing (Tile)
import Battlemap.Direction exposing (Direction(..))

view_battlemap_cell : Tile -> (Html Msg)
view_battlemap_cell t =
   case t.char_level of
      Nothing ->
         (td
            []
            [
               (text "[_]"),
               (text
                  (
                     (case t.nav_level of
                        Right -> "R"
                        Left -> "L"
                        Up -> "U"
                        Down -> "D"
                        None -> (toString t.floor_level)
                     )
                  )
               )
            ]
         )
      (Just char_id) ->
         (td
            [ (onClick (SelectCharacter char_id)) ]
            [
               (text ("[" ++ char_id ++ "]")),
               (text
                  (
                     (case t.nav_level of
                        Right -> "R"
                        Left -> "L"
                        Up -> "U"
                        Down -> "D"
                        None -> (toString t.floor_level)
                     )
                  )
               )
            ]
         )

type alias GridBuilder =
   {
      row : (List (Html Msg)),
      columns : (List (Html Msg)),
      row_size : Int,
      bmap : Battlemap
   }

foldr_to_html : Tile -> GridBuilder -> GridBuilder
foldr_to_html t gb =
   if (gb.row_size == gb.bmap.width)
   then
      {gb |
         row = [(view_battlemap_cell t)],
         row_size = 1,
         columns =
            (
               (tr [] gb.row) :: gb.columns
            )
      }
   else
      {gb |
         row = ((view_battlemap_cell t) :: gb.row),
         row_size = (gb.row_size + 1)
      }

grid_builder_to_html : GridBuilder -> (List (Html Msg))
grid_builder_to_html gb =
   if (gb.row_size == 0)
   then
      gb.columns
   else
      (grid_builder_to_html
         {gb |
            row = [],
            row_size = 0,
            columns =
               (
                  (tr [] gb.row) :: gb.columns
               )
         }
      )

view_battlemap : Battlemap -> (Html Msg)
view_battlemap battlemap =
   (table
      []
      (grid_builder_to_html
         (Ay.foldr
            (foldr_to_html)
            {
               row = [],
               columns = [],
               row_size = 0,
               bmap = battlemap
            }
            battlemap.content
         )
      )
   )


view : Model -> (Html Msg)
view m =
   (view_battlemap m.battlemap)