Skip to content

Commit

Permalink
using maps, trying to fix the GameScreen
Browse files Browse the repository at this point in the history
  • Loading branch information
Zomis committed Feb 3, 2015
1 parent 0ec28ca commit 4c3f603
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 12 deletions.
2 changes: 2 additions & 0 deletions gdx/core/src/com/cardshifter/gdx/CardshifterGame.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ public void resize(int width, int height) {
public void render () {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

camera.update();
batch.begin();
super.render();
batch.end();
Expand Down
1 change: 1 addition & 0 deletions gdx/core/src/com/cardshifter/gdx/DefaultZoneView.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public class DefaultZoneView extends ZoneView {

public DefaultZoneView(CardshifterGame game, ZoneMessage message) {
this.table = new Table(game.skin);
this.table.add(message.getName() + '@' + message.getId()).row();
this.game = game;
}

Expand Down
58 changes: 47 additions & 11 deletions gdx/core/src/com/cardshifter/gdx/GameScreen.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.cardshifter.gdx;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.scenes.scene2d.ui.Container;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.cardshifter.api.messages.Message;
import com.cardshifter.api.outgoing.*;
Expand All @@ -22,8 +24,10 @@ public class GameScreen implements Screen {
private final int gameId;

private final Table table;
private final List<PlayerView> playerViews = new ArrayList<PlayerView>();
private final Map<Integer, PlayerView> playerViews = new HashMap<Integer, PlayerView>();
private final Map<Integer, ZoneView> zoneViews = new HashMap<Integer, ZoneView>();
private final Map<Integer, EntityView> entityViews = new HashMap<Integer, EntityView>();
private final Map<String, Container<Table>> holders = new HashMap<String, Container<Table>>();

public GameScreen(CardshifterGame game, CardshifterClient client, NewGameMessage message) {
this.game = game;
Expand All @@ -33,14 +37,34 @@ public GameScreen(CardshifterGame game, CardshifterClient client, NewGameMessage

this.table = new Table(game.skin);

this.playerViews.add(new PlayerView(game));
this.playerViews.add(new PlayerView(game));
Table leftTable = new Table(game.skin);
Table topTable = new Table(game.skin);
Table rightTable = new Table(game.skin);
Table centerTable = new Table(game.skin);

// leftTable.add(playerViews.get(0).getActor()).row();
// leftTable.add(playerViews.get(1).getActor()).row();
leftTable.add("players");
topTable.add(leftTable).left().expandY().fillY();
topTable.add(centerTable).center().expandY().fillY();
topTable.add(rightTable).right().expandY().fillY();

addZoneHolder(centerTable, 1 - this.playerIndex, "Hand");
addZoneHolder(centerTable, 1 - this.playerIndex, "Battlefield");
addZoneHolder(centerTable, this.playerIndex, "Battlefield");

this.table.add(topTable).row();
addZoneHolder(this.table, this.playerIndex, "Hand");

this.table.add(playerViews.get(0).getActor()).row();
this.table.add(playerViews.get(1).getActor()).row();
this.table.setDebug(true, true);
}

private void addZoneHolder(Table table, int i, String name) {
Container<Table> container = new Container<Table>();
table.add(container).expandX().fillX().row();
holders.put(i + name, container);
}

@Override
public void render(float delta) {

Expand Down Expand Up @@ -95,10 +119,8 @@ public void handle(CardInfoMessage message) {
handlers.put(PlayerMessage.class, new SpecificHandler<PlayerMessage>() {
@Override
public void handle(PlayerMessage message) {
while (playerViews.size() < message.getIndex()) {
playerViews.add(new PlayerView(game));
}
playerViews.get(message.getIndex()).set(message);
PlayerView playerView = new PlayerView(game, message);
playerViews.put(message.getId(), playerView);
}
});
handlers.put(ResetAvailableActionsMessage.class, null);
Expand All @@ -107,11 +129,25 @@ public void handle(PlayerMessage message) {
handlers.put(ZoneMessage.class, new SpecificHandler<ZoneMessage>() {
@Override
public void handle(ZoneMessage message) {
Gdx.app.log("GameScreen", "Zone " + message);
ZoneView zoneView = createZoneView(message);
zoneViews.put(message.getId(), zoneView);
if (zoneView != null) {
PlayerView view = playerViews.get(message.getOwner());
if (view == null) {
Gdx.app.log("GameScreen", "no playerView for " + message.getOwner());
return;
}
String key = view.getIndex() + message.getName();
Container<Table> container = holders.get(key);
if (container == null) {
Gdx.app.log("GameScreen", "no container for " + key);
return;
}
Gdx.app.log("GameScreen", "putting zoneview for " + key);
container.setActor((Table) zoneView.getActor());
zoneViews.put(message.getId(), zoneView);
zoneView.apply(message);
table.add(zoneView.getActor()).row();
table.add(zoneView.getActor()).expandX().fillX().row();
table.setDebug(true, true);
}
}
Expand Down
11 changes: 10 additions & 1 deletion gdx/core/src/com/cardshifter/gdx/PlayerView.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,15 @@

public class PlayerView {

private final int id;
private final int index;
private Table table;

public PlayerView(CardshifterGame game) {
public PlayerView(CardshifterGame game, PlayerMessage message) {
this.table = new Table(game.skin);
this.id = message.getId();
this.index = message.getIndex();
this.set(message);
}

public Actor getActor() {
Expand All @@ -19,4 +24,8 @@ public Actor getActor() {
public void set(PlayerMessage message) {

}

public int getIndex() {
return index;
}
}

0 comments on commit 4c3f603

Please sign in to comment.