_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
# remove the selected tiles from the board, create new tiles, and slide everything into place
blip_selection = ->
- difficulty = 7 # higher numbers are easier
+ difficulty = 11 - Math.log(100 + score) # higher numbers are easier
unsink = difficulty * score_for selected_word() # how much tile restoration we have left to do
faders = selected.num_sort()
selected = []
# 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
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)
html_tile.click ->
me = $(this)
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