Author: hhubner
Date: 2007-11-17 05:28:57 -0500 (Sat, 17 Nov 2007)
New Revision: 2284
Added:
branches/trunk-reorg/projects/scrabble/website/images/de/cursor.png
branches/trunk-reorg/projects/scrabble/website/images/de/mask.png
branches/trunk-reorg/projects/scrabble/website/images/en/cursor.png
branches/trunk-reorg/projects/scrabble/website/images/en/mask.png
Modified:
branches/trunk-reorg/projects/scrabble/src/make-letters.lisp
branches/trunk-reorg/projects/scrabble/website/scrabble.js
Log:
Cursor image, mask image for placed tiles, don't consider placed tiles
for move legality determination.
Modified: branches/trunk-reorg/projects/scrabble/src/make-letters.lisp
===================================================================
--- branches/trunk-reorg/projects/scrabble/src/make-letters.lisp 2007-11-15 14:10:11 UTC (rev 2283)
+++ branches/trunk-reorg/projects/scrabble/src/make-letters.lisp 2007-11-17 10:28:57 UTC (rev 2284)
@@ -1,43 +1,44 @@
-
(in-package :scrabble.graphics)
-(defparameter *special-tile-texts* (make-hash-table))
+(defparameter *special-field-texts* (make-hash-table))
-(setf (gethash :de *special-tile-texts*)
+(setf (gethash :de *special-field-texts*)
'(:double-letter "DOPPELTER
BUCHSTABEN
WERT"
- :double-word "DOPPELTER
+ :double-word "DOPPELTER
WORT
WERT"
- :triple-letter "DREIFACHER
+ :triple-letter "DREIFACHER
BUCHSTABEN
WERT"
- :triple-word "DREIFACHER
+ :triple-word "DREIFACHER
WORT
WERT"))
-(setf (gethash :en *special-tile-texts*)
+(setf (gethash :en *special-field-texts*)
'(:double-letter "DOUBLE
LETTER
SCORE"
- :double-word "DOUBLE
+ :double-word "DOUBLE
WORD
SCORE"
- :triple-letter "TRIPLE
+ :triple-letter "TRIPLE
LETTER
SCORE"
- :triple-word "TRIPLE
+ :triple-word "TRIPLE
WORD
SCORE"))
-(defparameter *special-tile-colors*
+(defparameter *special-field-colors*
'(:double-letter (0.53 0.8 0.94)
:double-word (0.97 0.67 0.6)
:triple-letter (0.0 0.62 0.87)
:triple-word (0.93 0.11 0.18)
:standard (0.0 0.59 0.57)))
+(defparameter *tile-color* '(1.0 0.98 0.8))
+
(defparameter *bold-font* #.(merge-pathnames #p"../fonts/DIN/DINMd___.ttf" *default-pathname-defaults*))
(defparameter *regular-font* #.(merge-pathnames #p"../fonts/DIN/DINRg___.ttf" *default-pathname-defaults*))
@@ -50,7 +51,7 @@
(char-name char)
char-string)
:type "png")))
- (set-rgb-fill 1.0 0.98 0.8)
+ (apply #'set-rgb-fill *tile-color*)
(rounded-rectangle 0 0 34 34 4 4)
(fill-path)
(when char
@@ -62,6 +63,13 @@
(save-png pathname)
pathname)))
+(defun make-mask-tile ()
+ (with-canvas (:width 34 :height 34)
+ (apply #'set-rgba-fill (append *tile-color* (list 0.5)))
+ (rounded-rectangle 0 0 34 34 4 4)
+ (fill-path)
+ (save-png #P"mask.png")))
+
(defun make-letter-tile-set (language)
(with-open-file (letter-map-file "charmap.xml"
:direction :output
@@ -76,7 +84,15 @@
(cxml:attribute "filename" (namestring (make-letter-tile letter score)))
(cxml:text (princ-to-string letter)))))))))
-(defun make-special-tile (name color &key text star)
+(defun make-cursor ()
+ (with-canvas (:width 46 :height 46)
+ (apply #'set-rgb-stroke *tile-color*)
+ (set-line-width 5)
+ (rounded-rectangle 4 4 38 38 5 5)
+ (stroke)
+ (save-png #P"cursor.png")))
+
+(defun make-special-field (name color &key text star)
(with-canvas (:width 40 :height 40)
(let ((regular-font (get-font *regular-font*)))
(apply #'set-rgb-fill color)
@@ -84,26 +100,25 @@
(fill-path)
(set-rgb-fill 0 0 0)
(cond
- (text
- (set-font regular-font 6)
+ (text
+ (set-font regular-font 6)
(let* ((lines (cl-ppcre:split "\\n" text))
(position (+ 20 (* 6 (/ 2 (length lines))))))
(dolist (line lines)
(draw-centered-string 20 position line)
(decf position 6))))
- (star
- ))
+ (star
+ ))
(save-png (make-pathname :name (string-downcase (symbol-name name)) :type "png")))))
-(defun make-special-tile-set (language)
+(defun make-special-field-set (language)
(dolist (tile-name '(:double-letter :double-word :triple-letter :triple-word))
- (make-special-tile tile-name
- (getf *special-tile-colors* tile-name)
- :text (getf (gethash language *special-tile-texts*) tile-name)))
- (make-special-tile :standard (getf *special-tile-colors* :standard) :star nil)
- (make-special-tile :standard (getf *special-tile-colors* :double-word) :star t))
+ (make-special-field tile-name
+ (getf *special-field-colors* tile-name)
+ :text (getf (gethash language *special-field-texts*) tile-name)))
+ (make-special-field :standard (getf *special-field-colors* :standard) :star nil)
+ (make-special-field :standard (getf *special-field-colors* :double-word) :star t))
-
(defun make-tile-set (directory language)
(let ((*default-pathname-defaults*
(merge-pathnames (merge-pathnames (make-pathname
@@ -111,5 +126,5 @@
directory))))
(ensure-directories-exist *default-pathname-defaults*)
(make-letter-tile-set language)
- (make-special-tile-set language)))
-
+ (make-special-field-set language)
+ (make-cursor)))
Added: branches/trunk-reorg/projects/scrabble/website/images/de/cursor.png
===================================================================
(Binary files differ)
Property changes on: branches/trunk-reorg/projects/scrabble/website/images/de/cursor.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/trunk-reorg/projects/scrabble/website/images/de/mask.png
===================================================================
(Binary files differ)
Property changes on: branches/trunk-reorg/projects/scrabble/website/images/de/mask.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/trunk-reorg/projects/scrabble/website/images/en/cursor.png
===================================================================
(Binary files differ)
Property changes on: branches/trunk-reorg/projects/scrabble/website/images/en/cursor.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/trunk-reorg/projects/scrabble/website/images/en/mask.png
===================================================================
(Binary files differ)
Property changes on: branches/trunk-reorg/projects/scrabble/website/images/en/mask.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: branches/trunk-reorg/projects/scrabble/website/scrabble.js
===================================================================
--- branches/trunk-reorg/projects/scrabble/website/scrabble.js 2007-11-15 14:10:11 UTC (rev 2283)
+++ branches/trunk-reorg/projects/scrabble/website/scrabble.js 2007-11-17 10:28:57 UTC (rev 2284)
@@ -74,8 +74,8 @@
}
}
}
-
-
+
+
//
function getFieldScore(x, y) {
@@ -138,27 +138,35 @@
// appendChildNodes(container, clearButton);
}
-function setLetter(x, y, letter) {
+function setLetter(x, y, letter, justPlaced) {
var image = IMG({ src: 'images/' + letter + '.png'});
image.style.position = 'absolute';
image.style.top = '3px';
image.style.left = '3px';
replaceChildNodes(board[x][y], image);
+ if (justPlaced) {
+ var mask = IMG({ src: 'images/mask.png'});
+ mask.style.position = 'absolute';
+ mask.style.top = '3px';
+ mask.style.left = '3px';
+ appendChildNodes(board[x][y], mask);
+ }
board[x][y].letterNode = image;
board[x][y].letter = letter;
+ board[x][y].justPlaced = justPlaced;
YAHOO.util.Event.purgeElement(board[x][y], false, 'click');
}
function letterAt(x, y) {
- return board[x][y].letter;
+ return board[x][y].letter && !board[x][y].justPlaced;
}
function Cursor()
{
- var image = new IMG({ src: 'images/NIL.png' });
+ var image = new IMG({ src: 'images/cursor.png' });
image.style.position = 'absolute';
- image.style.top = '3px';
- image.style.left = '3px';
+ image.style.top = '-3px';
+ image.style.left = '-3px';
this.image = image;
this.x = -1;
@@ -233,12 +241,13 @@
function makeMove(x, y, letter) {
move[move.length] = [x, y, letter];
- $('move').onclick = submitMove;
- $('move').innerHTML = move.toString();
try {
checkMoveLegality(move);
+ $('move').onclick = submitMove;
+ $('move').innerHTML = move.toString();
}
catch (e) {
+ $('move').onclick = undefined;
$('move').innerHTML = e.toString();
}
}
@@ -291,7 +300,7 @@
var x = cursor.x;
var y = cursor.y;
cursor.advance();
- setLetter(x, y, letter);
+ setLetter(x, y, letter, true);
makeMove(x, y, letter);
}
@@ -304,7 +313,7 @@
function functionKeyPressed(type, args, obj) {
var x = cursor.x;
var y = cursor.y;
-
+
switch (args[0]) {
case rightKey:
while (x < 14)