/
word.js
178 lines (164 loc) · 4.49 KB
/
word.js
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
Word = baa.entity.extend("Word");
Word.shiftKeys = {
"1" : "!",
"2" : "@",
"3" : "#",
"4" : "$",
"5" : "%",
"6" : "^",
"7" : "&",
"8" : "*",
"9" : "(",
"0" : ")",
"-" : "_",
"=" : "+",
"[" : "{",
"]" : "}",
";" : ":",
"," : "<",
"." : ">",
"/" : "?",
"\\" : "|"
}
Word.init = function (parent) {
Word.super.init(this);
this.text = "";
this.shot = false;
this.parent = parent;
this.kind;
this.activated = false;
this.placed = false;
this.vertical = false;
this.separatePriority = 10;
this.strength = 0;
}
Word.update = function () {
var camera = Play.inst.camera;
this.insideCamera = this.x > camera.x && this.right() < camera.right();
if (this.x > camera.right()) {
Play.inst.remove(this);
Play.inst.words.remove(this);
}
if (!this.activated) {
this.x = this.parent.x;
this.y = this.parent.y - 9;
}
Word.super.update(this);
}
Word.draw = function () {
// Word.super.draw(this);
baa.graphics.setFont(this.activated ? Game.fonts.type : Game.fonts.typeSmall);
if (this.shot) {
baa.graphics.setScissor(
function () {
if (this.parent.flip) {
baa.graphics.rectangle("scissor",this.parent.left()-500,this.y,500,20);
}
else {
baa.graphics.rectangle("scissor",this.parent.right(),this.y,500,20);
}
},this
)
baa.graphics.setColor(0,0,0);
}
else {
if (Word.__getValid(this.text)) {
baa.graphics.setColor(0,0,0)
}
else {
baa.graphics.setColor(255,0,0)
}
}
baa.graphics.setColor(255,255,255)
baa.graphics.print(this.text,this.x-0.5 + this.offset.x,this.y-0.5 + this.offset.y,this.vertical ? -Math.PI/2 : 0);
baa.graphics.print(this.text,this.x-0.5 + this.offset.x,this.y+0.5 + this.offset.y,this.vertical ? -Math.PI/2 : 0);
baa.graphics.print(this.text,this.x-0.5 + this.offset.x,this.y + this.offset.y,this.vertical ? -Math.PI/2 : 0);
baa.graphics.print(this.text,this.x+0.5 + this.offset.x,this.y-0.5 + this.offset.y,this.vertical ? -Math.PI/2 : 0);
baa.graphics.print(this.text,this.x+0.5 + this.offset.x,this.y+0.5 + this.offset.y,this.vertical ? -Math.PI/2 : 0);
baa.graphics.print(this.text,this.x+0.5 + this.offset.x,this.y + this.offset.y,this.vertical ? -Math.PI/2 : 0);
baa.graphics.print(this.text,this.x + this.offset.x,this.y+0.5 + this.offset.y,this.vertical ? -Math.PI/2 : 0);
baa.graphics.print(this.text,this.x + this.offset.x,this.y-0.5 + this.offset.y,this.vertical ? -Math.PI/2 : 0);
if (Word.__getValid(this.text) || this.shot) {
baa.graphics.setColor(0,0,0)
}
else {
baa.graphics.setColor(255,0,0)
}
baa.graphics.print(this.text,this.x + this.offset.x,this.y + this.offset.y,this.vertical ? -Math.PI/2 : 0);
if (this.shot) { baa.graphics.setScissor(); };
}
Word.keypressed = function (key) {
if (!this.activated) {
if (key.length == 1 && key != " " ) {
if (baa.keyboard.isDown("shift")) {
if (_.has(Word.shiftKeys,key)) {
key = Word.shiftKeys[key];
}
else {
key = key.toUpperCase();
}
}
this.text = this.text + key;
return true;
}
else {
if (key == "backspace") {
if (this.text.length > 0) {
this.text = this.text.substring(0,this.text.length-1);
return true;
}
}
else if (key == "tab" || key == "return" || key == " ") {
if (this.text.length > 0) {
if (Word.__getValid(this.text)) {
this.create();
}
}
}
// else if (key == "ctrl") {
// this.vertical = !this.vertical;
// }
}
return false;
}
}
Word.create = function () {
WORDS[this.text] = 0;
Game.listOfWords.push(this.text);
this.width = this.vertical ? 10 : baa.graphics.getTextWidth(this.text);
this.height = this.vertical ? baa.graphics.getTextWidth(this.text) : 10;
this.offset.y = this.vertical ? this.height : 0;
this.shoot();
this.strength = this.text.length;
}
Word.shoot = function () {
this.shot = true;
this.activated = true;
this.velocity.x = this.parent.flip ? -300 : 300;
this.setInBackOfParent();
this.parent.newWord();
Play.inst.add(this);
}
Word.setInBackOfParent = function () {
this.x = this.parent.x - this.width + 20;
this.y = this.parent.centerY()-5;
}
Word.setInFrontOfParent = function () {
this.y = this.vertical ? this.parent.centerY()-20 : this.parent.centerY()-5;
this.x = this.parent.flip ? this.parent.left() - this.width : this.parent.right();
}
Word.onOverlap = function (e) {
if (this.insideCamera) {
if (e.is("Thug") || e.is("Dumbell")) {
Play.inst.words.remove(this);
this.dead = true;
Play.inst.remove(this);
}
}
}
Word.__getValid = function (word) {
if (_.has(WORDS,word)) {
return WORDS[word];
}
return false;
}