Android Open Source - dragon-wars Building






From Project

Back to project page dragon-wars.

License

The source code is released under:

GNU General Public License

If you think the Android project dragon-wars listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/* This file is part of Dragon Wars.
 */* ww w.  j ava2  s. c om*/
 * Dragon Wars is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Dragon Wars is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Dragon Wars.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.group7.dragonwars.engine;

import java.util.ArrayList;
import java.util.List;

public final class Building extends DrawableMapObject {

    private Integer captureWorth;
    private Integer captureDifficulty, remainingCaptureTime;
    private Double attackBonus, defenseBonus;
    private Player owner = null;
    private Boolean goalBuilding;
    private Player lastCapturer;
    private List<Unit> producibleUnits = new ArrayList<Unit>();
    private Position position;


    public Building(final String name, final Integer captureDifficulty,
                    final Double attackBonus, final Double defenseBonus,
                    final Boolean goalBuilding, final Integer captureWorth,
                    final String spriteLocation, final String spriteDir,
                    final String spritePack) {
        super(name, spriteLocation, spriteDir, spritePack);

        this.captureDifficulty = captureDifficulty;
        this.remainingCaptureTime = this.captureDifficulty;

        this.attackBonus = attackBonus;
        this.defenseBonus = defenseBonus;

        this.goalBuilding = goalBuilding;
        this.captureWorth = captureWorth;

        generateInfo();

    }

    public Building(final Building building) {
        super(building.getName(), building.getSpriteLocation(),
              building.getSpriteDir(), building.getSpritePack());

        this.captureDifficulty = building.getCaptureDifficulty();
        this.remainingCaptureTime = this.captureDifficulty;

        this.attackBonus = building.getAttackBonus();
        this.defenseBonus = building.getDefenseBonus();

        this.goalBuilding = building.isGoalBuilding();
        this.captureWorth = building.getCaptureWorth();

        this.info = building.info;

    }

    public Boolean canProduceUnits() {
        return !this.producibleUnits.isEmpty();
    }

    public void addProducibleUnit(final Unit unit) {
        this.producibleUnits.add(unit);
        this.generateInfo();
    }

    public List<Unit> getProducibleUnits() {
        return this.producibleUnits;
    }

    public String toString() {
        return getName();
    }

    public Player getLastCapturer() {
        return this.lastCapturer;
    }

    public void setLastCapturer(final Player player) {
        this.lastCapturer = player;
    }

    public Integer getCaptureDifficulty() {
        return this.captureDifficulty;
    }

    public Integer getRemainingCaptureTime() {
        return this.remainingCaptureTime;
    }

    public Double getAttackBonus() {
        return this.attackBonus;
    }

    public Double getDefenseBonus() {
        return this.defenseBonus;
    }

    public Boolean hasOwner() {
        return this.owner != null;
    }

    public Player getOwner() {
        return this.owner;
    }

    public void setOwner(final Player player) {
        this.owner = player;
    }

    public Boolean isGoalBuilding() {
        return this.goalBuilding;
    }

    public void reduceCaptureTime(final Integer captureAmount) {
        this.remainingCaptureTime -= captureAmount;

        if (this.remainingCaptureTime <= 0) {
            this.remainingCaptureTime = 0;
            this.owner.removeBuilding(this);
            this.owner = this.lastCapturer;
            this.lastCapturer.addBuilding(this);
        }
    }

    public void resetCaptureTime() {
        this.remainingCaptureTime = this.captureDifficulty;
    }

    public Position getPosition() {
        return this.position;
    }

    public void setPosition(final Position pos) {
        this.position = pos;
    }

    public Integer getCaptureWorth() {
        return this.captureWorth;
    }

    @Override
    public String getInfo() {
        String r = getName();

        if (hasOwner()) {
            r += " ~ " + getOwner().getName();
        }

        r += "\n";

        return r + this.info;
    }

    @Override
    public void generateInfo() {
        String r = "";

        if (canProduceUnits()) {
            r += "Produces:\n";

            for (Unit u : getProducibleUnits()) {
                r += " " + u + " - "
                     + u.getProductionCost() + " Gold\n";
            }
        }

        this.info = r;

    }
}




Java Source Code List

com.group7.dragonwars.DrawingThread.java
com.group7.dragonwars.GameActivity.java
com.group7.dragonwars.GameView.java
com.group7.dragonwars.HelpActivity.java
com.group7.dragonwars.IsAiAdapter.java
com.group7.dragonwars.MainMenuActivity.java
com.group7.dragonwars.MapSelectActivity.java
com.group7.dragonwars.PlayerSelectActivity.java
com.group7.dragonwars.Results.java
com.group7.dragonwars.StatisticsActivity.java
com.group7.dragonwars.engine.BasicMapInfo.java
com.group7.dragonwars.engine.BitmapChanger.java
com.group7.dragonwars.engine.Building.java
com.group7.dragonwars.engine.DrawableMapObject.java
com.group7.dragonwars.engine.FloatPair.java
com.group7.dragonwars.engine.FuncEx.java
com.group7.dragonwars.engine.Func.java
com.group7.dragonwars.engine.GameField.java
com.group7.dragonwars.engine.GameFinishedException.java
com.group7.dragonwars.engine.GameMap.java
com.group7.dragonwars.engine.GameState.java
com.group7.dragonwars.engine.InformationState.java
com.group7.dragonwars.engine.Logic.java
com.group7.dragonwars.engine.MapReader.java
com.group7.dragonwars.engine.Pair.java
com.group7.dragonwars.engine.PlayerAI.java
com.group7.dragonwars.engine.Player.java
com.group7.dragonwars.engine.Position.java
com.group7.dragonwars.engine.RangedUnit.java
com.group7.dragonwars.engine.Statistics.java
com.group7.dragonwars.engine.Unit.java
com.group7.dragonwars.engine.Database.Database.java
com.group7.dragonwars.engine.GoalArbitration.AtomicAction.java
com.group7.dragonwars.engine.GoalArbitration.AttackAt.java
com.group7.dragonwars.engine.GoalArbitration.BuildUnit.java
com.group7.dragonwars.engine.GoalArbitration.MoveTo.java
com.group7.dragonwars.engine.GoalArbitration.Node.java
com.group7.dragonwars.engine.GoalArbitration.StateTree.java