2013-02-10 18:51:27 +01:00
|
|
|
/************************************************************************
|
|
|
|
Drone.blocktype() method
|
|
|
|
========================
|
|
|
|
Creates the text out of blocks. Useful for large-scale in-game signs.
|
|
|
|
|
|
|
|
Parameters
|
|
|
|
----------
|
|
|
|
|
|
|
|
* message - The message to create - (use `\n` for newlines)
|
|
|
|
* foregroundBlock (default: black wool) - The block to use for the foreground
|
|
|
|
* backgroundBlock (default: none) - The block to use for the background
|
2013-01-20 22:03:45 +01:00
|
|
|
|
2013-02-10 18:51:27 +01:00
|
|
|
Example
|
|
|
|
-------
|
|
|
|
To create a 2-line high message using glowstone...
|
|
|
|
|
|
|
|
blocktype("Hello\nWorld",blocks.glowstone);
|
|
|
|
|
|
|
|
![blocktype example][imgbt1]
|
|
|
|
|
|
|
|
[imgbt1]: img/blocktype1.png
|
|
|
|
|
|
|
|
***/
|
2013-01-20 22:03:45 +01:00
|
|
|
(function(){
|
|
|
|
|
2013-01-21 23:18:47 +01:00
|
|
|
var bitmaps = {
|
|
|
|
raw: {
|
|
|
|
'0':' ### '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'1':' # '+
|
|
|
|
' ## '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'2':' ### '+
|
|
|
|
' # '+
|
|
|
|
' ### '+
|
|
|
|
' # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'3':' ### '+
|
|
|
|
' # '+
|
|
|
|
' ## '+
|
|
|
|
' # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'4':' # '+
|
|
|
|
' ## '+
|
|
|
|
' # # '+
|
|
|
|
' ### '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
'5':' ### '+
|
|
|
|
' # '+
|
|
|
|
' ### '+
|
|
|
|
' # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'6':' ### '+
|
|
|
|
' # '+
|
|
|
|
' ### '+
|
|
|
|
' # # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'7':' ### '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
'8':' ### '+
|
|
|
|
' # # '+
|
|
|
|
' ### '+
|
|
|
|
' # # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'9':' ### '+
|
|
|
|
' # # '+
|
|
|
|
' ### '+
|
|
|
|
' # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'a':' ### '+
|
|
|
|
' # # '+
|
|
|
|
' ### '+
|
|
|
|
' # # '+
|
|
|
|
' # # ',
|
|
|
|
|
|
|
|
'b':' ## '+
|
|
|
|
' # # '+
|
|
|
|
' ## '+
|
|
|
|
' # # '+
|
|
|
|
' ## ',
|
|
|
|
|
|
|
|
'c':' ## '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' ## ',
|
|
|
|
|
|
|
|
'd':' ## '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' ## ',
|
|
|
|
|
|
|
|
'e':' ### '+
|
|
|
|
' # '+
|
|
|
|
' ## '+
|
|
|
|
' # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'f':' ### '+
|
|
|
|
' # '+
|
|
|
|
' ## '+
|
|
|
|
' # '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
'g':' ### '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' # # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'h':' # # '+
|
|
|
|
' # # '+
|
|
|
|
' ### '+
|
|
|
|
' # # '+
|
|
|
|
' # # ',
|
|
|
|
|
|
|
|
'i':' ### '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'j':' ### '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
'k':' # '+
|
|
|
|
' # # '+
|
|
|
|
' ## '+
|
|
|
|
' # # '+
|
|
|
|
' # # ',
|
|
|
|
|
|
|
|
'l':' # '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'm':' # # '+
|
|
|
|
' ### '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # # ',
|
|
|
|
|
|
|
|
'n':' ## '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # # ',
|
|
|
|
|
|
|
|
'o':' # '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
'p':' ### '+
|
|
|
|
' # # '+
|
|
|
|
' ### '+
|
|
|
|
' # '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
'q':' ### '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' ### '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
'r':' ## '+
|
|
|
|
' # # '+
|
|
|
|
' ## '+
|
|
|
|
' # # '+
|
|
|
|
' # # ',
|
|
|
|
|
|
|
|
's':' ## '+
|
|
|
|
' # '+
|
|
|
|
' ### '+
|
|
|
|
' # '+
|
|
|
|
' ## ',
|
|
|
|
|
|
|
|
't':' ### '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
'u':' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'v':' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
2013-01-22 01:00:35 +01:00
|
|
|
' # ',
|
2013-01-21 23:18:47 +01:00
|
|
|
|
|
|
|
'w':' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' ### '+
|
|
|
|
' # # ',
|
|
|
|
|
|
|
|
'x':' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # '+
|
|
|
|
' # # '+
|
|
|
|
' # # ',
|
|
|
|
|
|
|
|
'y':' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # # '+
|
|
|
|
' # '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
'z':' ### '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' ### ',
|
|
|
|
|
|
|
|
'!':' # '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
':':' '+
|
|
|
|
' # '+
|
|
|
|
' '+
|
|
|
|
' # '+
|
|
|
|
' ',
|
|
|
|
|
|
|
|
';':' '+
|
|
|
|
' # '+
|
|
|
|
' '+
|
|
|
|
' # '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
',':' '+
|
|
|
|
' '+
|
|
|
|
' '+
|
|
|
|
' # '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
'/':' # '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' # '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
'+':' '+
|
|
|
|
' # '+
|
|
|
|
' ### '+
|
|
|
|
' # '+
|
|
|
|
' ',
|
|
|
|
|
|
|
|
'-':' '+
|
|
|
|
' '+
|
|
|
|
' ### '+
|
|
|
|
' '+
|
|
|
|
' ',
|
|
|
|
|
|
|
|
'.':' '+
|
|
|
|
' '+
|
|
|
|
' '+
|
|
|
|
' '+
|
|
|
|
' # ',
|
|
|
|
|
|
|
|
"'":' # '+
|
|
|
|
' # '+
|
|
|
|
' '+
|
|
|
|
' '+
|
|
|
|
' ',
|
|
|
|
|
|
|
|
' ':' '+
|
|
|
|
' '+
|
|
|
|
' '+
|
|
|
|
' '+
|
|
|
|
' '
|
|
|
|
},
|
|
|
|
computed: {}
|
2013-01-20 22:03:45 +01:00
|
|
|
};
|
2013-01-21 23:18:47 +01:00
|
|
|
/*
|
|
|
|
wph 20130121 compute the width, and x,y coords of pixels ahead of time
|
|
|
|
*/
|
|
|
|
for (var c in bitmaps.raw){
|
|
|
|
var bits = bitmaps.raw[c];
|
|
|
|
var width = bits.length/5;
|
|
|
|
var bmInfo = {"width": width,"pixels":[]}
|
|
|
|
bitmaps.computed[c] = bmInfo;
|
|
|
|
for (var j = 0; j < bits.length; j++){
|
|
|
|
if (bits.charAt(j) != ' '){
|
|
|
|
bmInfo.pixels.push([j%width,Math.ceil(j/width)]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2013-02-09 00:22:14 +01:00
|
|
|
|
|
|
|
|
2013-01-25 05:38:46 +01:00
|
|
|
//
|
|
|
|
// message
|
|
|
|
// string with text to be displayed
|
|
|
|
// fg
|
|
|
|
// foreground material. The material the text will be in.
|
|
|
|
// bg
|
|
|
|
// background material, optional. The negative space within the bounding box of the text.
|
|
|
|
//
|
2013-01-20 22:03:45 +01:00
|
|
|
Drone.extend('blocktype', function(message,fg,bg){
|
|
|
|
|
|
|
|
this.chkpt('blocktext');
|
2013-01-30 23:48:37 +01:00
|
|
|
|
2013-02-09 00:22:14 +01:00
|
|
|
if (typeof fg == "undefined")
|
2013-07-22 16:03:44 +02:00
|
|
|
fg = blocks.wool.black;
|
2013-02-09 00:22:14 +01:00
|
|
|
|
2013-01-30 23:48:37 +01:00
|
|
|
var bmfg = this._getBlockIdAndMeta(fg);
|
|
|
|
var bmbg = null;
|
|
|
|
if (typeof bg != "undefined")
|
|
|
|
bmbg = this._getBlockIdAndMeta(bg);
|
2013-01-20 22:03:45 +01:00
|
|
|
var lines = message.split("\n");
|
|
|
|
var lineCount = lines.length;
|
|
|
|
for (var h = 0;h < lineCount; h++) {
|
|
|
|
var line = lines[h];
|
|
|
|
line = line.toLowerCase().replace(/[^0-9a-z \.\-\+\/\;\'\:\!]/g,"");
|
|
|
|
this.up(7*(lineCount-(h+1)));
|
|
|
|
|
|
|
|
for (var i =0;i < line.length; i++) {
|
|
|
|
var ch = line.charAt(i)
|
2013-01-21 23:18:47 +01:00
|
|
|
var bits = bitmaps.computed[ch];
|
2013-01-20 22:03:45 +01:00
|
|
|
if (typeof bits == "undefined"){
|
2013-01-21 23:18:47 +01:00
|
|
|
bits = bitmaps.computed[' '];
|
2013-01-20 22:03:45 +01:00
|
|
|
}
|
2013-01-21 23:18:47 +01:00
|
|
|
var charWidth = bits.width;
|
2013-01-20 22:03:45 +01:00
|
|
|
if (typeof bg != "undefined")
|
2013-02-07 23:16:30 +01:00
|
|
|
this.cuboidX(bmbg[0],bmbg[1],charWidth,7,1);
|
2013-01-21 23:18:47 +01:00
|
|
|
for (var j = 0;j < bits.pixels.length;j++){
|
2013-01-20 22:03:45 +01:00
|
|
|
this.chkpt('btbl');
|
2013-01-21 23:18:47 +01:00
|
|
|
var x = bits.pixels[j][0];
|
|
|
|
var y = bits.pixels[j][1];
|
2013-02-07 23:16:30 +01:00
|
|
|
this.up(6-y).right(x).cuboidX(bmfg[0],bmfg[1]);
|
2013-01-20 22:03:45 +01:00
|
|
|
this.move('btbl');
|
|
|
|
}
|
|
|
|
this.right(charWidth-1);
|
|
|
|
}
|
|
|
|
this.move('blocktext');
|
|
|
|
}
|
|
|
|
|
|
|
|
return this.move('blocktext');
|
|
|
|
});
|
|
|
|
}());
|
|
|
|
|
|
|
|
|