Fixed starting olympiad games.

This commit is contained in:
MobiusDev 2017-04-13 20:00:31 +00:00
parent 64b0f98620
commit add2101129
2 changed files with 46 additions and 10 deletions

View File

@ -68,24 +68,27 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame
{ {
return null; return null;
} }
final List<Integer> list = new ArrayList<>(set.size());
int playerOneObjectId = 0; int playerOneObjectId = 0;
int playerTwoObjectId = 0;
L2PcInstance playerOne = null; L2PcInstance playerOne = null;
L2PcInstance playerTwo = null; L2PcInstance playerTwo = null;
while (list.size() > 1) while (set.size() > 1)
{ {
playerOneObjectId = list.remove(Rnd.nextInt(list.size())); playerOneObjectId = getRandomPlayerId(set);
set.remove(playerOneObjectId);
playerOne = L2World.getInstance().getPlayer(playerOneObjectId); playerOne = L2World.getInstance().getPlayer(playerOneObjectId);
if ((playerOne == null) || !playerOne.isOnline()) if ((playerOne == null) || !playerOne.isOnline())
{ {
continue; continue;
} }
playerTwo = L2World.getInstance().getPlayer(list.remove(Rnd.nextInt(list.size()))); playerTwoObjectId = getRandomPlayerId(set);
set.remove(playerTwoObjectId);
playerTwo = L2World.getInstance().getPlayer(playerTwoObjectId);
if ((playerTwo == null) || !playerTwo.isOnline()) if ((playerTwo == null) || !playerTwo.isOnline())
{ {
list.add(playerOneObjectId); set.add(playerOneObjectId);
continue; continue;
} }
@ -98,6 +101,21 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame
return null; return null;
} }
private static int getRandomPlayerId(Set<Integer> set)
{
final int rnd = Rnd.nextInt(set.size());
int counter = 0;
for (int id : set)
{
if (counter == rnd)
{
return id;
}
counter++;
}
return 0;
}
@Override @Override
public final boolean containsParticipant(int playerId) public final boolean containsParticipant(int playerId)
{ {

View File

@ -68,24 +68,27 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame
{ {
return null; return null;
} }
final List<Integer> list = new ArrayList<>(set.size());
int playerOneObjectId = 0; int playerOneObjectId = 0;
int playerTwoObjectId = 0;
L2PcInstance playerOne = null; L2PcInstance playerOne = null;
L2PcInstance playerTwo = null; L2PcInstance playerTwo = null;
while (list.size() > 1) while (set.size() > 1)
{ {
playerOneObjectId = list.remove(Rnd.nextInt(list.size())); playerOneObjectId = getRandomPlayerId(set);
set.remove(playerOneObjectId);
playerOne = L2World.getInstance().getPlayer(playerOneObjectId); playerOne = L2World.getInstance().getPlayer(playerOneObjectId);
if ((playerOne == null) || !playerOne.isOnline()) if ((playerOne == null) || !playerOne.isOnline())
{ {
continue; continue;
} }
playerTwo = L2World.getInstance().getPlayer(list.remove(Rnd.nextInt(list.size()))); playerTwoObjectId = getRandomPlayerId(set);
set.remove(playerTwoObjectId);
playerTwo = L2World.getInstance().getPlayer(playerTwoObjectId);
if ((playerTwo == null) || !playerTwo.isOnline()) if ((playerTwo == null) || !playerTwo.isOnline())
{ {
list.add(playerOneObjectId); set.add(playerOneObjectId);
continue; continue;
} }
@ -98,6 +101,21 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame
return null; return null;
} }
private static int getRandomPlayerId(Set<Integer> set)
{
final int rnd = Rnd.nextInt(set.size());
int counter = 0;
for (int id : set)
{
if (counter == rnd)
{
return id;
}
counter++;
}
return 0;
}
@Override @Override
public final boolean containsParticipant(int playerId) public final boolean containsParticipant(int playerId)
{ {