package com.rs.game.map.bossInstance.impl;

import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

import com.rs.game.map.bossInstance.BossInstance;
import com.rs.game.map.bossInstance.BossInstanceHandler;
import com.rs.game.map.bossInstance.InstanceSettings;
import com.rs.game.player.Player;

public class VoragoInstance extends BossInstance {

    private List<Player> playersOnBattle;

    public VoragoInstance(Player owner, InstanceSettings settings) {
	super(owner, settings);
	playersOnBattle = new CopyOnWriteArrayList<Player>();
    }

    public List<Player> getPlayersOnBattle() {
	return playersOnBattle;
    }

    public boolean isBattleOn() {
	synchronized (BossInstanceHandler.LOCK) {
	    return !playersOnBattle.isEmpty();
	}
    }

    public boolean isPlayerOnBattle(Player player) {
	synchronized (BossInstanceHandler.LOCK) {
	    return playersOnBattle.contains(player);
	}
    }

    @Override
    public int[] getMapSize() {
	return new int[] { 2, 3 };
    }

    @Override
    public int[] getMapPos() {
	return new int[] { 376, 744 };
    }

    @Override
    public void leaveInstance(Player player, int type) {
	leaveBattle(player);
	super.leaveInstance(player, type);
    }

    public void leaveBattle(Player player) {
	synchronized (BossInstanceHandler.LOCK) {
						     // saving, wont do anything
						     // if it wasnt enabled yet
	    playersOnBattle.remove(player);
	    if (playersOnBattle.isEmpty())
		finishBattle();
	}
    }

    // accept challenge
    public void enterBattle(Player player) {
	playersOnBattle.add(player);
	if (playersOnBattle.size() == 1) {
	    // vorago.startBattle(makes vorago head go into first stage)
	}
    }

    // clears the floor and deletes vorago
    public void finishBattle() {
	// vorago.endBattle(makes vorago head go into head)
    }

    @Override
    public void playMusic(Player player) {
	if (!isPlayerOnBattle(player)) { // forces no music
	    player.getMusicsManager().forcePlayMusic(-2);
	    return;
	}
	super.playMusic(player);
    }

    @Override
    public void loadMapInstance() {

    }

}
