JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
new tiles get at least 4 hp
[hexbog.git] / main.coffee
index 860469d..d33d36a 100644 (file)
@@ -293,11 +293,6 @@ unselect_all = ->
                _unselect_tile()
        update_selection_display()
 
-shrink_selection = (leave_count) ->
-       while selected.length > leave_count
-               _unselect_tile()
-       update_selection_display()
-
 selected_word = ->
        word = ''
        word += tiles[i].text for i in selected
@@ -335,15 +330,17 @@ blip_selection = ->
        # convert to arrays so we can sort, etc
        nneighbors = (v for k, v of nneighbors)
        neighbors = (v for k, v of neighbors)
-       # TODO randsort neighbors and nneighbors
+       # TODO make this apply eavenly to neighbors
+       # TODO different range for different word lengths
        for nei in [neighbors, nneighbors]
                if unsink > 0
                        for i in nei
-                               if i.hp is 0 and unsink >= 15
+                               if i.hp is 0 and unsink >= 10
                                        i.new_hp = 10
-                                       unsink -= 15
+                                       unsink -= 10
                                        i.text = new_letter()
                                        i.dom.html i.text
+       for nei in [neighbors, nneighbors]
                if unsink > 0
                        for i in nei
                                if i.hp > 0 and unsink > 0
@@ -445,7 +442,7 @@ select_tile = (num) ->
 new_tile = (num, x, y) ->
        letter = new_letter()
 
-       hp = Math.floor(Math.random() * HP_MAX)
+       hp = 4 + Math.floor(Math.random() * (HP_MAX - 4))
 
        html_tile = $("<div class=\"tile hp#{hp}\" style=\"left: #{x}px; top: #{y}px\" unselectable=\"on\">#{letter}</div>")
        $board.append(html_tile)
@@ -458,26 +455,18 @@ new_tile = (num, x, y) ->
                num = me.data 'tile_number'
                return if tiles[num].hp < 1
                if num in selected
-                       nth_of_word = selected.indexOf(num)
-                       first = nth_of_word is 0
-                       last = nth_of_word is selected.length - 1
-
-                       if first and last
-                               unselect_all() # Clicking only selected letter unselects it
-                       else if first and !last
-                               shrink_selection 1 # Clicking start of word goes back to just that letter
-                               # should this unselect all?
-                       else if last
+                       if selected.length > 2 and num is selected.last()
                                activate_selection()
                        else
-                               shrink_selection nth_of_word + 1
-               else # (not clicking on selected tile)
-                       if selected.length is 0
-                               select_tile num
-                       else
-                               unless num in board_neighbors[selected.last()]
+                               if selected.length > 1
+                                       unselect_all()
+                                       select_tile num
+                               else
                                        unselect_all()
-                               select_tile num
+               else # (not clicking on selected tile)
+                       if selected.length > 0 and not (num in board_neighbors[selected.last()])
+                               unselect_all()
+                       select_tile num
 
 
 $board = null