Add original project.

This commit is contained in:
2025-01-04 12:48:09 -07:00
parent 2ea0f8441d
commit 6e7114a24d
92 changed files with 3462 additions and 0 deletions
@@ -0,0 +1,101 @@
package com.hyperling.apps.games;
import android.graphics.Canvas;
import android.util.Log;
import android.view.SurfaceHolder;
/**
* Created by ling on 12/17/16.
*/
public class GameLoopThread extends Thread {
private final int FPS = 30;
protected double averageFPS;
private SurfaceHolder surfaceHolder;
private GameView gameView;
private boolean running;
public static Canvas canvas;
public boolean markerFrame;
private String TAG;
public GameLoopThread(SurfaceHolder sh, GameView gv){
super();
surfaceHolder = sh;
gameView = gv;
TAG = gameView.getResources().getString(R.string.TAG);
markerFrame = false;
}
@Override
public void run() {
super.run();
long timeStart, timeRun, timeWait, timeTotal, timeTarget;
timeTotal = 0;
timeTarget = 1000/FPS;
int frameCount = 0;
while(running){
timeStart = System.currentTimeMillis();
canvas = null;
try{
canvas = this.surfaceHolder.lockCanvas();
synchronized (surfaceHolder){
this.gameView.update();
this.gameView.draw(canvas);
}
} catch(Exception e){
e.printStackTrace();
} finally {
if (canvas != null) {
try {
surfaceHolder.unlockCanvasAndPost(canvas);
} catch (Exception e) {
e.printStackTrace();
}
}
}
timeRun = (System.currentTimeMillis() - timeStart);
timeWait = timeTarget - timeRun;
if (timeWait > 0) {
try {
this.sleep(timeWait);
} catch (Exception e) {
e.printStackTrace();
}
}
timeTotal += System.currentTimeMillis()-timeStart;
frameCount++;
if (frameCount >= FPS){
averageFPS = 1000/((timeTotal/frameCount));
frameCount = 0;
timeTotal = 0;
Log.i(TAG, "GameLoopThread.run(): averageFPS=" + averageFPS);
Log.d(TAG, "GameLoopThread.run(): canvas.getHeight()=" + canvas.getHeight() + ", canvas.getWidth()=" + canvas.getWidth());
markerFrame = true;
}
else{
markerFrame = false;
}
}
}
public void setRunning(boolean r){
running = r;
if (running) {
this.start();
}
}
}