Changes in src/com/example/helloandroid/GameView.java [04a9a00:69f6f01] in galcon-client
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/com/example/helloandroid/GameView.java
r04a9a00 r69f6f01 10 10 import android.graphics.Color; 11 11 import android.graphics.Paint; 12 import android.graphics.RectF; 13 import android.graphics.Paint.FontMetrics; 12 14 import android.os.Bundle; 13 15 import android.os.Handler; … … 77 79 public ArrayList<Fleet> fleets; 78 80 public Planet planetSelected; 81 82 int mFleetSize; 79 83 80 84 public DrawingThread(SurfaceHolder surfaceHolder, Context context, … … 101 105 102 106 fleets = new ArrayList<Fleet>(); 107 108 mFleetSize = 50; 103 109 } 104 110 … … 125 131 public void run() { 126 132 while (mRun) { 133 //Log.i("Gencon", "run called"); 134 127 135 Canvas c = null; 128 136 try { 129 137 c = mSurfaceHolder.lockCanvas(null); 130 synchronized(mSurfaceHolder) { 131 if(mMode == STATE_RUNNING) 132 updatePhysics(); 138 synchronized (mSurfaceHolder) { 139 //Log.i("Gencon", "about to call stuff: mode is "+mMode); 140 141 if (mMode == STATE_RUNNING) updatePhysics(); 133 142 doDraw(c); 134 143 } … … 236 245 if(Planet.collisionDetected(p, planets)) { 237 246 x--; 238 }else if(p.getX()-p.getRadius() < 0 || mCanvasWidth <=p.getX()+p.getRadius() ||239 p.getY()-p.getRadius() < 0 || mCanvasHeight <=p.getY()+p.getRadius()) {247 }else if(p.getX()-p.getRadius() < 0 || mCanvasWidth-20<=p.getX()+p.getRadius() || 248 p.getY()-p.getRadius() < 0 || mCanvasHeight-20<=p.getY()+p.getRadius()) { 240 249 x--; 241 250 }else { … … 340 349 } 341 350 } 351 352 float textSize = mTextPaint.getTextSize(); 353 mTextPaint.setTextSize(24); 354 FontMetrics metrics = mTextPaint.getFontMetrics(); 355 mTextPaint.setColor(Color.WHITE); 356 357 canvas.drawText(mFleetSize+"%", mCanvasWidth-mTextPaint.measureText(mFleetSize+"%"), mCanvasHeight-20-(metrics.ascent+metrics.descent), mTextPaint); 358 359 mTextPaint.setTextSize(textSize); 360 361 mLinePaint.setColor(Color.YELLOW); 362 canvas.drawRoundRect(new RectF(70, mCanvasHeight-15, mCanvasWidth-70, mCanvasHeight-5), 5, 5, mLinePaint); 363 364 mLinePaint.setColor(Color.GREEN); 365 canvas.drawRoundRect(new RectF(70, mCanvasHeight-15, 70+(mCanvasWidth-140)*mFleetSize/100, mCanvasHeight-5), 5, 5, mLinePaint); 342 366 } 343 367 … … 348 372 */ 349 373 private void updatePhysics() { 374 //Log.i("Gencon", "updatePhysics called"); 375 350 376 long now = System.currentTimeMillis(); 351 377 … … 354 380 // by 100ms or whatever. 355 381 if (mLastTime > now) return; 356 382 357 383 synchronized(planetsLock) { 358 384 for(Planet p : planets) { … … 366 392 while(i.hasNext()){ 367 393 f = i.next(); 368 if(f.getNumShips() == 0) 394 if(f.getNumShips() == 0) { 369 395 i.remove(); 370 else396 }else 371 397 f.update(planets); 372 398 } 373 399 } 374 400 375 mLastTime = now +50;401 mLastTime = now; 376 402 } 377 403 } … … 408 434 Log.i("Gencon", "Detected touch event"); 409 435 410 if(event.getAction() != MotionEvent.ACTION_DOWN) 411 return true; 412 413 synchronized(thread.planetsLock) { 414 if(thread.planetSelected != null) { 415 Planet target = null; 416 417 for(Planet p : thread.planets) { 418 if(p.contains((int)event.getX(), (int)event.getY())) { 419 target = p; 420 break; 421 } 422 } 423 424 if(target != null && thread.planetSelected.getFaction() != 0) { 425 synchronized(thread.fleetsLock) { 426 Fleet f = new Fleet(thread.planetSelected, target, 1, 1); 427 f.setFaction(thread.planetSelected.getFaction()); 428 thread.fleets.add(f); 429 } 430 } 431 432 thread.planetSelected.unselect(); 433 thread.planetSelected = null; 434 }else { 435 for(Planet p : thread.planets) { 436 if(p.contains((int)event.getX(), (int)event.getY())) { 437 p.select(); 438 thread.planetSelected = p; 439 break; 440 } 441 } 436 if(event.getAction() == MotionEvent.ACTION_UP) { 437 if(70 <= event.getX() && event.getX() <= thread.mCanvasWidth-70 && 438 thread.mCanvasHeight-15 <= event.getY() && event.getY() <= thread.mCanvasHeight-5) { 439 thread.mFleetSize = ((int)event.getX()-70)*100/(thread.mCanvasWidth-140); 442 440 } 441 }else if(event.getAction() == MotionEvent.ACTION_DOWN) { 442 synchronized(thread.planetsLock) { 443 if(thread.planetSelected != null) { 444 Planet target = null; 445 446 for(Planet p : thread.planets) { 447 if(p.contains((int)event.getX(), (int)event.getY())) { 448 target = p; 449 break; 450 } 451 } 452 453 if(target != null && target != thread.planetSelected && thread.planetSelected.getFaction() != 0) { 454 synchronized(thread.fleetsLock) { 455 Fleet f = new Fleet(thread.planetSelected, target, thread.planetSelected.getNumShips()*thread.mFleetSize/100, thread.planetSelected.getFaction()); 456 f.setFaction(thread.planetSelected.getFaction()); 457 thread.fleets.add(f); 458 } 459 } 460 461 thread.planetSelected.unselect(); 462 thread.planetSelected = null; 463 }else { 464 for(Planet p : thread.planets) { 465 if(p.contains((int)event.getX(), (int)event.getY())) { 466 p.select(); 467 thread.planetSelected = p; 468 break; 469 } 470 } 471 } 472 } 443 473 } 444 474
Note:
See TracChangeset
for help on using the changeset viewer.