/** * Main update code (We don't want any allocations happening anywhere in the main loop). * * @param delta The amount of time that has passed since the previous update */ public void update(float delta) { float[] paddleCenterY = {mTouchLocs[0].y, mTouchLocs[1].y}; if (!mPaused) { mGameLogic.update(delta, paddleCenterY); mGameLogic.updateBallSprite(mBall); mGameLogic.updatePaddleSprites(mPaddles); } else if (mStartNextRound) { mGameLogic.initRound(); mPaused = false; mStartNextRound = false; } }
/** called by the game logic when a point scored */ public boolean pointScored(int winner, int hits) { if (mPongListener != null) { if (mPongListener.pointScored(winner, hits)) { mPaused = true; return true; } } mGameLogic.initRound(); return false; }
/** * Load game assets and initialize * * @param gl openGL context reference */ public void loadAssets(GL10 gl) { GLGfx.initGfx(40); // Get the density for banner size calcs. DisplayMetrics metrics = new DisplayMetrics(); mActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics); mDensity = metrics.density; // initialize the only texture try { AssetManager assetMgr = mActivity.getAssets(); mTex = Texture.createTextureFromStream((GL11) gl, true, assetMgr.open("assets_tex.png")); } catch (Exception e) { throw new RuntimeException(e); } // setup the sprites mPaddles = new Sprite[2]; mPaddles[0] = new Sprite9Patch(PADDLE_TEXRECT, PADDLE_SIZE); mPaddles[1] = new Sprite9Patch(PADDLE_TEXRECT, PADDLE_SIZE); mBall = new Sprite(BALL_TEXRECT); mBack = new Sprite(BACK_TEXRECT); // position the background image so it is centered in the game area drawn at it's native size if // it fits // if it doesn't fit scale it so it draws as large as possible float gameAreaHeight = getHeight() - BANNER_HEIGHT * mDensity; float scale = (BACK_SIZE.y > gameAreaHeight) ? (gameAreaHeight / BACK_SIZE.y) : 1.0f; float bgX = (getWidth() - (scale * BACK_SIZE.x)) / 2.0f; float bgY = (BANNER_HEIGHT * mDensity) + (gameAreaHeight - (scale * BACK_SIZE.y)) / 2.0f; mBack.setPosAndSize(bgX, bgY, scale * BACK_SIZE.x, scale * BACK_SIZE.y); // Initialize the game mGameLogic.setupRect(new RectF(0.0f, BANNER_HEIGHT * mDensity, getWidth(), getHeight())); mGameLogic.initRound(); }