/** * Called when a new stroke is created on the pen. The stroke information is added to the * ICRContext */ public void strokeCreated(long time, Region areaID, PageInstance page) { /* the icr engine is only needed when a game is in progress * and the game board has been completely drawn */ // only process if the stroke is not part of a single tap if (time > singletaptime) { if (gamestate == gameinprogress && gameBoardReady) { // only interested in recognizing if it is written in the guess region if (areaID.getAreaId() == guessRegion) { // check if game is over if (gamestate == gameinprogress) { this.icrContext.addStroke(page, time); StrokeStorage ss = new StrokeStorage(page); Rectangle rect = ss.getStrokeBoundingBox(time); if (numberofxcoordinates < 4) { xcoordinates[numberofxcoordinates] = rect.getX(); numberofxcoordinates++; } } } } else { if (gamestate == makegameboard || gamestate == startgameboard) { int areaid; areaid = areaID.getAreaId(); gamestate = makegameboard; if (areaid != guessRegion && areaid != clearRegion && areaid != soundRegion && areaid != newGameRegion) { RegionCollection rc = this.context.getCurrentRegionCollection(); StrokeStorage ss = new StrokeStorage(page); Rectangle rect = ss.getStrokeBoundingBox(time); if (makingRegionRect) { RegionRect = rect; makingRegionRect = false; } else { RegionRect = Rectangle.getUnion(RegionRect, rect); } if (rc.isOverlappingExistingRegion(RegionRect)) { // overlaps existing region, beep and do not do anything playSound("SL_Error"); } } } } } // reset the single tap time singletaptime = 0; }
public void penDown(long time, Region areaID, PageInstance page) { int id; id = areaID.getAreaId(); if (id != 0 && gameBoardReady) { if (clearRegion == id) { /* User has tapped the "clear icon". * check to see if the game is over? * if there are entries in the current guess. * clear them. else clear the previous entry */ if (gamestate == gameinprogress) { if (guess[guesscount - 1].length() > 0) { guess[guesscount - 1] = ""; result[guesscount - 1] = ""; } else if (guesscount > 1) { guesscount--; guess[guesscount - 1] = ""; result[guesscount - 1] = ""; } promptForGuess(guesscount); } return; } if (soundRegion == id) { soundToggle(); return; } if (newGameRegion == id) { if (gamestate == 0 || gamestate == actapp || gamestate == gameover || gamestate == gameinprogress || gamestate == gamepaused) { gamestate = newGame(true); } return; } if (guessRegion == id && gamestate == gamepaused) { gamestate = gameinprogress; promptForGuess(guesscount); return; } if (guessRegion == id && gamestate == gameinprogress) { if (this.player.isAudioPlayerPlaying()) { this.player.stop(); } return; } } }