}Scenario(String _fileMap, String _fileSpawn, String _filePlayer, String _fileEnemy) {
//TODO: scenario init
}void setMap(String _filename) {= new Map(_filename);
}void setMap(Map _map) {= _map;
}void setSpawns(String _filename) {= new ArrayList<Point>();= new ArrayList<Point>();(_filename);
}void addPlayerSpawn(Point _point) {.add(_point);
}void addEnemySpawn(Point _point) {.add(_point);
}void setPlayerTeam(String _filename) {= new ArrayList<Unit>();(_filename);
}void setEnemyTeam(String _filename) {= new ArrayList<Unit>();(_filename);
}void addPlayerUnit(Unit _unit) {.add(_unit);
_unit.setFlag(Game1.flagPlayer);
}void addEnemyUnit(Unit _unit) {.add(_unit);
_unit.setFlag(Game1.flagEnemy);
}void parseSpawns(String _filename) {file = Gdx.files.internal(_filename);str = Game1.formatString(file.readString());spacePos;(int y = 0; y < map.HEIGHT; y++) {(int x = 0; x < map.WIDTH - 1; x++) {= str.indexOf(" ");(Integer.parseInt(str.substring(0, spacePos)), x, y);= str.substring(spacePos + 1);
}(y == map.HEIGHT - 1) {(Integer.parseInt(str.substring(0)), map.WIDTH - 1, y);
} else {= str.indexOf(" ");(Integer.parseInt(str.substring(0, spacePos)), map.WIDTH - 1, y);= str.substring(spacePos + 1);
}
}
}void parsePlayerTeam(String _filename) {
//TODO: parse
}void parseEnemyTeam(String _filename) {
//TODO: parse
}void parseSpawnCode(int _code, int _x, int _y) {(_code) {1: {(new Point(_x, _y));;
}
}
}void placeUnits() {p;(Unit unit: playerTeam) {(!playerSpawn.isEmpty()) {= playerSpawn.remove(0);.getField(p).setUnit(unit);.setLocate(p);
}
}(Unit unit: enemyTeam) {(!enemySpawn.isEmpty()) {= enemySpawn.remove(0);.getField(p).setUnit(unit);.setLocate(p);
}
}
}void drawUnits(Pixmap _pxmp) {(Unit unit: playerTeam) {
_pxmp.drawPixmap(unit.getPixmap(), unit.getLocate().x * Game1.SCALE, unit.getLocate().y * Game1.SCALE, 0, 0, Game1.SCALE, Game1.SCALE);
}(Unit unit: enemyTeam) {
_pxmp.drawPixmap(unit.getPixmap(), unit.getLocate().x * Game1.SCALE, unit.getLocate().y * Game1.SCALE, 0, 0, Game1.SCALE, Game1.SCALE);
}
}void drawUnits(SpriteBatch _sb) {(Unit unit: playerTeam) {.setSpritePosition(Gdx.graphics.getWidth() * unit.getLocate().x / map.WIDTH,
((Gdx.graphics.getHeight() - Game1.INTERFACE_HEIGHT) * unit.getLocate().y / map.HEIGHT) + Game1.INTERFACE_HEIGHT);.getSprite().draw(_sb);.getFlag().draw(_sb);
}(Unit unit: enemyTeam) {.setSpritePosition(Gdx.graphics.getWidth() * unit.getLocate().x / map.WIDTH,
((Gdx.graphics.getHeight() - Game1.INTERFACE_HEIGHT) * unit.getLocate().y / map.HEIGHT) + Game1.INTERFACE_HEIGHT);.getSprite().draw(_sb);.getFlag().draw(_sb);
}
}
}
Unit.java
package com.vlerof.game1.Scenario;com.badlogic.gdx.graphics.Pixmap;com.badlogic.gdx.graphics.Texture;com.badlogic.gdx.graphics.g2d.Sprite;com.vlerof.game1.Tile;java.awt.Point;java.util.ArrayList;class Unit {Texture texture;Sprite sprite;Sprite flag;Pixmap pixmap;String name;Point locate;Level level;ArrayList<Point> moves;ArrayList<FieldType> moveTypes;ArrayList<Attack> attacks;boolean alive;int healthCurrent;int healthMax;int healthPerLvl;int defenseMelee;int defenseRange;int defenseFire;Unit(String _name, int _maxLevel, Tile _tile) {= _name;= new Level(0, _maxLevel);= new ArrayList<Attack>();= _tile.getTexture();= new Sprite(texture);= _tile.getPixmap();
}Unit setLocate(Point _locate) {= _locate;this;
}Point getLocate() {locate;
}void setSpritePosition(float _x, float _y) {.setPosition(_x, _y);.setPosition(_x + 32, _y);
}void addExp(int _amount) {lvlUps = level.addExp(_amount);(lvlUps > 0) {+= lvlUps * healthPerLvl;= healthMax;
}
}int getLevel() {level.getLevel();
}void setHealth(int _hpMax, int _hpPerLvl){= healthMax = _hpMax;= _hpPerLvl;= true;
}void setDefenses(int _defMelee, int _defRange, int _defFire) {= _defMelee;= _defRange;= _defFire;
}void addMove(Point _point) {.add(_point);
}void addMoveType(FieldType _type) {.add(_type);
}void addAttack(Attack _attack) {.add(_attack);
}ArrayList<Point> getMoves(){moves;
}ArrayList<FieldType> getMoveTypes(){moveTypes;
}ArrayList<Attack> getAttacks(){attacks;
}Texture getTexture() {texture;
}Sprite getSprite() {sprite;
}Pixmap getPixmap() {pixmap;
}void setFlag(Texture _texture) {= new Sprite(_texture);
}Sprite getFlag() {flag;
}boolean isAlive() {alive;
}
}
Level.java
package com.vlerof.game1.Scenario;java.util.ArrayList;class Level {int level;final int max;int experience;static final ArrayList<Integer> sumToUp = new ArrayList<Integer>();Level(int _experience, int _max) {(_experience > 0 && _experience < 1000000) {= _experience;
} else {= 0;
}(_max > 0 && _max < 100) {= _max;
} else {= 10;
}
}int getLevel() {level;
}int addExp(int _amount) {levelUps = 0;+= _amount;sumToNext = sumToUp.get(level);(experience > sumToNext && level < max) {-= sumToNext;++;++;= sumToUp.get(level);
}levelUps;
}static void initLevels() {.add(15);(int i = 1; i < 100; i++) {.add((i + 3) * 5 + sumToUp.get(i - 1));
}
}
}
FieldType.java
package com.vlerof.game1.Scenario;enum FieldType {,,,,,
}
Field.java
package com.vlerof.game1.Scenario;com.vlerof.game1.Game1;com.vlerof.game1.Tile;java.util.ArrayList;java.util.HashMap;class Field {static HashMap<FieldType, ArrayList<Tile>> tilesMap = new HashMap<FieldType, ArrayList<Tile>>();FieldType fieldType;Unit unit;int tileNumber;Field(FieldType _type, int _tileNumber) {= _type;= null;(_tileNumber < tilesMap.get(_type).size()) {= _tileNumber;
} else {= 0;
}
}Tile getTile() {tilesMap.get(fieldType).get(tileNumber);
}FieldType getType() {fieldType;
}Unit getUnit(){unit;
}void setUnit(Unit _unit) {= _unit;
}int getTilesCount() {tilesMap.get(fieldType).size();
}static int getTypeTilesCount(FieldType _type) {tilesMap.get(_type).size();
}static void initTiles() {.put(FieldType.PLAIN, new ArrayList<Tile>());.put(FieldType.FOREST, new ArrayList<Tile>());.put(FieldType.MOUNTAIN, new ArrayList<Tile>());.put(FieldType.WATER, new ArrayList<Tile>());.put(FieldType.BLOCKED, new ArrayList<Tile>());.put(FieldType.SNOW, new ArrayList<Tile>());
}(int i = 0; i < 6; i++) {.add(new Tile(Game1.fieldMap, i, 3));
}(int i = 0; i < 3; i++) {.add(new Tile(Game1.fieldMap, i + 3, 4));
}
///////////////////////////////////////////////////////
//Forests= tilesMap.get(FieldType.FOREST);(int i = 0; i < 9; i++) {.add(new Tile(Game1.fieldMap, i, 6));
}(int i = 0; i < 3; i++) {.add(new Tile(Game1.fieldMap, i + 6, 7));
}
///////////////////////////////////////////////////////
//Mountains= tilesMap.get(FieldType.MOUNTAIN);(int i = 0; i < 3; i++) {.add(new Tile(Game1.fieldMap, i, 9));
}(int i = 0; i < 3; i++) {.add(new Tile(Game1.fieldMap, i + 6, 9));
}(int i = 0; i < 9; i++) {.add(new Tile(Game1.fieldMap, i, 13));
}
///////////////////////////////////////////////////////
//Water= tilesMap.get(FieldType.WATER);(int i = 0; i < 3; i++) {.add(new Tile(Game1.fieldMap, i + 6, 1));
}(int i = 0; i < 3; i++) {.add(new Tile(Game1.fieldMap, i, 2));
}
///////////////////////////////////////////////////////
//Blocked= tilesMap.get(FieldType.BLOCKED);(int i = 0; i < 3; i++) {.add(new Tile(Game1.fieldMap, i, 3));
}(int i = 0; i < 3; i++) {.add(new Tile(Game1.fieldMap, i + 6, 4));
}(int i = 0; i < 3; i++) {.add(new Tile(Game1.fieldMap, i + 6, 8));
}
///////////////////////////////////////////////////////
//Snow= tilesMap.get(FieldType.SNOW);(int i = 0; i < 3; i++) {.add(new Tile(Game1.fieldMap, i + 3, 9));
}(int i = 0; i < 3; i++) {.add(new Tile(Game1.fieldMap, i + 6, 10));
}(int i = 0; i < 3; i++) {.add(new Tile(Game1.fieldMap, i + 6, 11));
}
///////////////////////////////////////////////////////
}
}
GameStateManager.java
package com.vlerof.game1.States;com.badlogic.gdx.graphics.g2d.SpriteBatch;java.util.Stack;class GameStateManager {Stack<State> states;GameStateManager() {= new Stack<State>();
}void push(State _state) {.push(_state);
}void pop() {.pop().dispose();
}void set(State _state) {.pop().dispose();.push(_state);
}void update(float _dt) {.peek().update(_dt);
}void render(SpriteBatch _sb) {.peek().render(_sb);
}
}
State.java
package com.vlerof.game1.States;com.badlogic.gdx.graphics.OrthographicCamera;com.badlogic.gdx.graphics.g2d.SpriteBatch;com.badlogic.gdx.math.Vector3;abstract class State {OrthographicCamera camera;Vector3 mouse;GameStateManager gsm;State(GameStateManager _gsm) {= _gsm;= new OrthographicCamera();= new Vector3();
}abstract void handleInput();abstract void update(float dt);abstract void render(SpriteBatch sb);abstract void dispose();
}
MenuState.java
package com.vlerof.game1.States;com.badlogic.gdx.Gdx;com.badlogic.gdx.graphics.Texture;com.badlogic.gdx.graphics.g2d.SpriteBatch;com.vlerof.game1.Game1;class MenuState extends State {Texture background;MenuState(GameStateManager _gsm) {(_gsm);= new Texture("Map.jpg");
}
@Overridevoid handleInput() {(Gdx.input.justTouched()) {x = Gdx.input.getX();y = Gdx.input.getY();(x > Gdx.graphics.getWidth() / 2 - Game1.buttonStart.getWidth() / 2 &&< Gdx.graphics.getWidth() / 2 + Game1.buttonStart.getWidth() / 2 &&< Gdx.graphics.getHeight() / 3 &&> Gdx.graphics.getHeight() / 3 - Game1.buttonStart.getHeight()) {.set(new ScenarioState(gsm, Game1.getDefaultScenario()));
} else if (x > Gdx.graphics.getWidth() / 2 - Game1.buttonExit.getWidth() / 2 &&< Gdx.graphics.getWidth() / 2 + Game1.buttonExit.getWidth() / 2 &&< Gdx.graphics.getHeight() * 2 / 3 &&> Gdx.graphics.getHeight() * 2 / 3 - Game1.buttonExit.getHeight()) {.app.exit();
}
}
}
@Overridevoid update(float dt) {();
}
@Overridevoid render(SpriteBatch sb) {.begin();.draw(background, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());.draw(Game1.buttonStart, Gdx.graphics.getWidth() / 2 - Game1.buttonStart.getWidth() / 2,.graphics.getHeight() * 2 / 3);.draw(Game1.buttonExit, Gdx.graphics.getWidth() / 2 - Game1.buttonExit.getWidth() / 2,.graphics.getHeight() / 3);
//TODO: Buttons.end();
}
@Overridevoid dispose() {.dispose();
}
}
ScenarioState.java
package com.vlerof.game1.States;com.badlogic.gdx.Gdx;com.badlogic.gdx.graphics.GL20;com.badlogic.gdx.graphics.Pixmap;com.badlogic.gdx.graphics.Texture;com.badlogic.gdx.graphics.g2d.SpriteBatch;com.vlerof.game1.Game1;com.vlerof.game1.Scenario.Scenario;class ScenarioState extends State {Scenario scenario;Pixmap mapPixmap;Texture mapTexture;Texture interfaceTexture;ScenarioState(GameStateManager gsm, Scenario _scenario) {(gsm);= _scenario;.placeUnits();= _scenario.map.getPixmap();= new Texture(mapPixmap);pxmp = new Pixmap(Game1.WIDTH, Game1.INTERFACE_HEIGHT, Pixmap.Format.RGBA8888);.setColor(Game1.COLOR_SIENNA);.fillRectangle(0, 0, Game1.WIDTH, Game1.INTERFACE_HEIGHT);.setColor(Game1.COLOR_SADDLEBROWN);.fillRectangle(Game1.ATTACK_BORDER, 0, 2, Game1.INTERFACE_HEIGHT);.setColor(Game1.COLOR_SADDLEBROWN);.fillRectangle(0, 0, Game1.WIDTH, 5);= new Texture(pxmp);
}
@Overridevoid handleInput() {
}
@Overridevoid update(float dt) {
}
@Overridevoid render(SpriteBatch sb) {.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);.begin();.draw(mapTexture, 0, Game1.INTERFACE_HEIGHT, Gdx.graphics.getWidth(), Gdx.graphics.getHeight() - Game1.INTERFACE_HEIGHT);.draw(interfaceTexture, 0, 0, Game1.WIDTH, Game1.INTERFACE_HEIGHT);.drawUnits(sb);.end();
}
@Overridevoid dispose() {.dispose();.dispose();
}
}