package views;
import entities.Pair;
import entities.modelExtentions.Stage;
import models.IModel;
import models.JumpingGameModel;
import java.util.ArrayList;
public class TileMapRenderer implements IView {
private double offsetY = 32d;
private TileRenderer newTile = new TileRenderer("resources/tile.png", null, 2);
private ArrayList<TileRenderer> tiles = new ArrayList<>();
public TileMapRenderer(IModel model) {
JumpingGameModel jumpGameModel = (JumpingGameModel) model;
initTiles(jumpGameModel.getStage());
}
@Override
public void update(IModel model) {
for (TileRenderer tile : tiles) tile.update(model);
}
@Override
public void display() {
for (TileRenderer tile : tiles) tile.display();
}
@Override
public void delete() {
for (TileRenderer tile : tiles) tile.delete();
}
private void initTiles(Stage stage) {
boolean isOpen = false;
int space = 10;
for (int i = 0; i < space; i++) {
double x = 32 * newTile.getScaleValue() * i;
if (i == 12) addNewTile(x, TileType.OPEN);
else addNewTile(x, TileType.CLOSE);
}
for (int i = 0; i < 120; i++) {
double x = 32 * newTile.getScaleValue() * (i + space);
if (stage.isFlag(i)){
isOpen = !isOpen;
System.out.println(isOpen);
}
if (isOpen) addNewTile(x, TileType.OPEN);
else addNewTile(x, TileType.CLOSE);
}
}
private void addNewTile(double x, TileType tileType) {
switch (tileType) {
case CLOSE:
newTile = new TileRenderer("resources/tile.png", new Pair<>(x, offsetY), 2);
break;
case OPEN:
newTile = new TileRenderer("resources/hole.png", new Pair<>(x, offsetY), 2);
break;
}
tiles.add(newTile);
System.out.println("New tile created.");
}
}