Added Game Controller and Listener.
This commit is contained in:
parent
6b3a8bf760
commit
9859945768
141
app/src/main/java/fr/iutfbleau/sae/GameController.java
Normal file
141
app/src/main/java/fr/iutfbleau/sae/GameController.java
Normal file
@ -0,0 +1,141 @@
|
||||
package fr.iutfbleau.sae;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
||||
public class GameController implements GameListener, View.OnClickListener {
|
||||
|
||||
private final Activity activity;
|
||||
|
||||
|
||||
private final GameView view;
|
||||
|
||||
|
||||
private final GameModel model;
|
||||
|
||||
|
||||
private final Button reset;
|
||||
|
||||
|
||||
private final TextView score;
|
||||
|
||||
|
||||
private final TextView moves;
|
||||
|
||||
|
||||
private final View end;
|
||||
|
||||
|
||||
private final TextView endScore;
|
||||
|
||||
|
||||
private final Button back;
|
||||
|
||||
|
||||
private final Button watch;
|
||||
|
||||
|
||||
public GameController(Activity activity, GameView view, GameModel model) {
|
||||
this.activity = activity;
|
||||
this.view = view;
|
||||
this.model = model;
|
||||
|
||||
this.reset = (Button) this.activity.findViewById(R.id.reset);
|
||||
this.score = (TextView) this.activity.findViewById(R.id.score);
|
||||
this.moves = (TextView) this.activity.findViewById(R.id.moves);
|
||||
|
||||
this.end = this.activity.findViewById(R.id.end);
|
||||
this.endScore = (TextView) this.activity.findViewById(R.id.end_score);
|
||||
this.back = (Button) this.activity.findViewById(R.id.back);
|
||||
this.watch = (Button) this.activity.findViewById(R.id.watch);
|
||||
|
||||
this.view.setListener(this);
|
||||
|
||||
this.reset.setOnClickListener(this);
|
||||
this.back.setOnClickListener(this);
|
||||
this.watch.setOnClickListener(this);
|
||||
|
||||
this.update();
|
||||
}
|
||||
|
||||
|
||||
public void update() {
|
||||
this.score.setText(this.activity.getString(R.string.score, this.model.getScore()));
|
||||
this.moves.setText(this.activity.getString(R.string.moves, this.model.getValidLineCount()));
|
||||
|
||||
if (this.model.isGameFinished()) {
|
||||
this.end.setVisibility(View.VISIBLE);
|
||||
this.endScore.setText(this.activity.getString(R.string.end_score, this.model.getScore()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void watch() {
|
||||
this.end.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
|
||||
public void back() {
|
||||
this.activity.finish();
|
||||
}
|
||||
|
||||
|
||||
public void reset() {
|
||||
this.view.setOffset(0, 0);
|
||||
this.view.invalidate();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onLineStarted(GameView view, Cell start) {
|
||||
if (this.view != view)
|
||||
return;
|
||||
if (this.model.isGameFinished())
|
||||
return;
|
||||
|
||||
this.model.startInputLine(start);
|
||||
this.view.invalidate();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onLineEndMoved(GameView view, Cell end) {
|
||||
if (this.view != view)
|
||||
return;
|
||||
if (this.model.isGameFinished())
|
||||
return;
|
||||
|
||||
if (this.model.moveInputLineEnd(end))
|
||||
this.view.invalidate();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onLineEnded(GameView view, Cell end) {
|
||||
if (this.view != view)
|
||||
return;
|
||||
if (this.model.isGameFinished())
|
||||
return;
|
||||
|
||||
this.model.endInputLine(end);
|
||||
this.view.invalidate();
|
||||
|
||||
this.update();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (this.reset == view)
|
||||
this.reset();
|
||||
else if (this.back == view)
|
||||
this.back();
|
||||
else if (this.watch == view)
|
||||
this.watch();
|
||||
else
|
||||
throw new IllegalStateException("Unhandled click event source.");
|
||||
}
|
||||
}
|
15
app/src/main/java/fr/iutfbleau/sae/GameListener.java
Normal file
15
app/src/main/java/fr/iutfbleau/sae/GameListener.java
Normal file
@ -0,0 +1,15 @@
|
||||
package fr.iutfbleau.sae;
|
||||
|
||||
import android.graphics.Point;
|
||||
|
||||
|
||||
public interface GameListener {
|
||||
|
||||
void onLineStarted(GameView view, Cell start);
|
||||
|
||||
|
||||
void onLineEndMoved(GameView view, Cell end);
|
||||
|
||||
|
||||
void onLineEnded(GameView view, Cell end);
|
||||
}
|
Loading…
Reference in New Issue
Block a user