// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   playerPool.java

package boggle.server;

import boggle.codec;
import boggle.server.comms.serverClient;
import boggle.settings;
import java.io.PrintStream;
import java.rmi.RemoteException;

// Referenced classes of package boggle.server:
//            player

public class playerPool
{

    public static void initialise(serverClient serverclient)
    {
        if(!started)
        {
            netsync = serverclient;
            playerList = new player[settings.getMaxPlayers()];
            players = 0;
            loggedInList = new int[settings.getMaxPlayers()];
            loggedIn = 0;
            started = true;
            try
            {
                addPlayer("Automated Client", "none", -1);
                login("Automated Client", codec.encode("Automated Client", "none"), -1);
                return;
            }
            catch(Exception exception)
            {
                System.out.println(exception.getMessage());
                exception.printStackTrace();
                return;
            }
        } else
        {
            return;
        }
    }

    public static int addPlayer(String s, String s1, int i)
        throws RemoteException
    {
        if(s.equals(""))
            return -1;
        if(players == settings.getMaxPlayers() - 1)
            return -2;
        if(findPlayerNumber(s) == -1)
        {
            playerList[players] = new player(s, s1, i);
            netsync.addNewPlayer(settings.getHostName(), players, playerList[players]);
            return players++;
        } else
        {
            return -1;
        }
    }

    private static int findPlayerNumber(String s)
    {
        for(int i = 0; i < players; i++)
            if(playerList[i].getName().equals(s))
                return i;

        return -1;
    }

    public static int login(String s, int i, int j)
    {
        int k = findPlayerNumber(s);
        if(k < 0)
            return -1;
        if(playerList[k].checkCode(i))
        {
            for(int l = 0; l < loggedIn; l++)
                if(k == loggedInList[l])
                {
                    playerList[k].setLanguage(j);
                    return loggedInList[l];
                }

            loggedInList[loggedIn++] = k;
            playerList[k].setLanguage(j);
            setPlayerStatus(k, " looking for a game to play ...");
            netsync.login(settings.getHostName(), k, j);
            return k;
        } else
        {
            return -2;
        }
    }

    public static int getLoggedIn()
    {
        return loggedIn;
    }

    private static boolean Logout(int i)
    {
        for(int j = 0; j < loggedIn - 1; j++)
            if(i == loggedInList[j])
            {
                loggedInList[j] = loggedInList[loggedIn - 1];
                loggedIn--;
                return true;
            }

        return false;
    }

    public static void logout(int i)
    {
        if(Logout(i))
            netsync.logout(settings.getHostName(), i);
    }

    public static String getPlayerStatus(int i)
    {
        return playerList[loggedInList[i]].getName() + ":\t" + playerList[loggedInList[i]].getStatus();
    }

    public static void setPlayerStatus(int i, String s)
    {
        playerList[i].setStatus(s);
    }

    public static String getPlayerName(int i)
    {
        return playerList[i].getName();
    }

    public static void score(int i, int j, int k, int l)
    {
        playerList[i].score(j, k, l);
    }

    public static int getPlayerPlayed(int i, int j, int k)
    {
        return playerList[i].getPlayed(j, k);
    }

    public static int getPlayerScored(int i, int j, int k)
    {
        return playerList[i].getScored(j, k);
    }

    public static int getPlayerHighest(int i, int j, int k)
    {
        return playerList[i].getHighest(j, k);
    }

    public static void addPlayer(String s, int i, player player1)
    {
        playerList[i] = player1;
        netsync.addNewPlayer(s, i, player1);
    }

    public static void Login(String s, int i, int j)
    {
        loggedInList[loggedIn++] = i;
        playerList[i].setLanguage(j);
        setPlayerStatus(i, " looking for a game to play ...");
        netsync.login(s, i, j);
    }

    public static void logout(String s, int i)
    {
        if(Logout(i))
            netsync.logout(s, i);
    }

    public static player[] getPlayerList()
    {
        return playerList;
    }

    public static void setPlayerList(player aplayer[])
    {
        playerList = aplayer;
    }

    public static int[] getLoggedInList()
    {
        return loggedInList;
    }

    public static void setLoggedInList(int ai[])
    {
        loggedInList = ai;
    }

    public playerPool()
    {
    }

    private static int players;
    private static player playerList[];
    private static int loggedIn;
    private static int loggedInList[];
    private static boolean started;
    private static serverClient netsync;
}
