com.aionemu.gameserver.model.instance.instancereward.DredgionReward.java Source code

Java tutorial

Introduction

Here is the source code for com.aionemu.gameserver.model.instance.instancereward.DredgionReward.java

Source

/**
 * This file is part of Aion-Lightning <aion-lightning.org>.
 *
 *  Aion-Lightning 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.
 *
 *  Aion-Lightning 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 Aion-Lightning.
 *  If not, see <http://www.gnu.org/licenses/>.
 */
package com.aionemu.gameserver.model.instance.instancereward;

import com.aionemu.commons.utils.Rnd;
import com.aionemu.gameserver.model.Race;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.model.geometry.Point3D;
import com.aionemu.gameserver.model.instance.playerreward.DredgionPlayerReward;
import com.aionemu.gameserver.services.teleport.TeleportService2;
import javolution.util.FastList;
import org.apache.commons.lang.mutable.MutableInt;

/**
 * @author xTz
 */
public class DredgionReward extends InstanceReward<DredgionPlayerReward> {

    private int winnerPoints;
    private int looserPoints;
    @SuppressWarnings("unused")
    private int drawPoins;
    private MutableInt asmodiansPoints = new MutableInt(0);
    private MutableInt elyosPoins = new MutableInt(0);
    private Race race;
    private FastList<DredgionRooms> dredgionRooms = new FastList<DredgionRooms>();
    private Point3D asmodiansStartPosition;
    private Point3D elyosStartPosition;

    public DredgionReward(Integer mapId, int instanceId) {
        super(mapId, instanceId);
        winnerPoints = mapId == 300110000 ? 3000 : 4500;
        looserPoints = mapId == 300110000 ? 1500 : 2500;
        drawPoins = mapId == 300110000 ? 2250 : 3750;
        setStartPositions();
        for (int i = 1; i < 15; i++) {
            dredgionRooms.add(new DredgionRooms(i));
        }
    }

    private void setStartPositions() {
        Point3D a = new Point3D(570.468f, 166.897f, 432.28986f);
        Point3D b = new Point3D(400.741f, 166.713f, 432.290f);

        if (Rnd.get(2) == 0) {
            asmodiansStartPosition = a;
            elyosStartPosition = b;
        } else {
            asmodiansStartPosition = b;
            elyosStartPosition = a;
        }
    }

    public void portToPosition(Player player) {
        if (player.getRace() == Race.ASMODIANS) {
            TeleportService2.teleportTo(player, mapId, instanceId, asmodiansStartPosition.getX(),
                    asmodiansStartPosition.getY(), asmodiansStartPosition.getZ());
        } else {
            TeleportService2.teleportTo(player, mapId, instanceId, elyosStartPosition.getX(),
                    elyosStartPosition.getY(), elyosStartPosition.getZ());
        }
    }

    /**
     * 1 Primary Armory 2 Backup Armory 3 Gravity Control 4 Engine Room 5
     * Auxiliary Power 6 Weapons Deck 7 Lower Weapons Deck 8 Ready Room 1 9
     * Ready Room 2 10 Barracks 11 Logistics Managment 12 Logistics Storage 13
     * The Bridge 14 Captain's Room
     */
    public class DredgionRooms {

        private int roomId;
        private int state = 0xFF;

        public DredgionRooms(int roomId) {
            this.roomId = roomId;
        }

        public int getRoomId() {
            return roomId;
        }

        public void captureRoom(Race race) {
            state = race.equals(Race.ASMODIANS) ? 0x01 : 0x00;
        }

        public int getState() {
            return state;
        }
    }

    public FastList<DredgionRooms> getDredgionRooms() {
        return dredgionRooms;
    }

    public DredgionRooms getDredgionRoomById(int roomId) {
        for (DredgionRooms dredgionRoom : dredgionRooms) {
            if (dredgionRoom.getRoomId() == roomId) {
                return dredgionRoom;
            }
        }
        return null;
    }

    public MutableInt getPointsByRace(Race race) {
        switch (race) {
        case ELYOS:
            return elyosPoins;
        case ASMODIANS:
            return asmodiansPoints;
        default:
            break;
        }
        return null;
    }

    public void addPointsByRace(Race race, int points) {
        MutableInt racePoints = getPointsByRace(race);
        racePoints.add(points);
        if (racePoints.intValue() < 0) {
            racePoints.setValue(0);
        }
    }

    public int getLooserPoints() {
        return looserPoints;
    }

    public int getWinnerPoints() {
        return winnerPoints;
    }

    public void setWinningRace(Race race) {
        this.race = race;
    }

    public Race getWinningRace() {
        return race;
    }

    public Race getWinningRaceByScore() {
        return asmodiansPoints.compareTo(elyosPoins) > 0 ? Race.ASMODIANS : Race.ELYOS;
    }

    @Override
    public void clear() {
        super.clear();
        dredgionRooms.clear();
    }
}