| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /**
- * @constructor
- **/
- function Definition(data) {
- /** @type {Array.<string>} */
- this.text = data["text"];
- /** @type {number} */
- this.direction = data["pos"];
- }
- /** @const */
- Definition.RIGHT_HORIZONTAL = 1;
- /** @const */
- Definition.RIGHT_VERTICAL = 2;
- /** @const */
- Definition.BOTTOM_HORIZONTAL = 3;
- /** @const */
- Definition.BOTTOM_VERTICAL = 4;
- /**
- * @constructor
- **/
- function Cell() {
- /** @type {boolean} */
- this.isBlack = false;
- /** @type {Array.<Definition>} */
- this.definitions = null;
- }
- Cell.prototype.update = function(data) {
- if (data["type"] === null) {
- this.isBlack = true;
- } else if (data["definitions"] !== undefined) {
- this.definitions = [];
- data["definitions"].forEach(function(definition) {
- this.definitions.push(new Definition(definition));
- }.bind(this));
- } else {
- // Grid letter
- // TODO return version
- }
- return 0;
- };
- /**
- * @constructor
- **/
- function Grid(data) {
- /** @type {string} */
- this.title = data["title"] || "";
- /** @type {number} */
- this.difficulty = data["difficulty"];
- /** @type {number} */
- this.width = data["w"];
- /** @type {number} */
- this.height = data["h"];
- this.grid = [];
- for (var i =0; i < this.width; i++) {
- this.grid[i] = [];
- for (var j =0; j < this.height; j++) {
- this.grid[i][j] = new Cell();
- }
- }
- }
- /**
- * @return {number|null}
- **/
- Grid.prototype.update = function(data) {
- var maxVersion = null
- ,grid = this.grid;
- data.forEach(function(cellData) {
- maxVersion = Math.max(maxVersion || 0, grid[cellData["x"]][cellData["y"]].update(cellData));
- });
- return maxVersion;
- };
|