package tv.dyndns.kishibe.qmaclone.client.game.shuffler;
import java.util.List;
import tv.dyndns.kishibe.qmaclone.client.packet.PacketProblem;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
public class ShufflerYontaku implements Shuffleable {
private static int NUMBER_OF_CHOICES = 4;
@Override
public void shuffle(PacketProblem problem, int[] answerOrder, int[] choiceOrder) {
Preconditions.checkNotNull(answerOrder);
Preconditions.checkNotNull(choiceOrder);
if (answerOrder.length < 1 || choiceOrder.length < 4) {
problem.shuffledAnswers = null;
problem.shuffledChoices = null;
return;
}
// 解答を含めた選択肢を4つ選ぶ
List<String> choices = Lists.newArrayList();
choices.add(problem.answers[0]);
int numberOfChoices = problem.getNumberOfChoices();
for (int i = 0; choices.size() < NUMBER_OF_CHOICES && i < numberOfChoices; ++i) {
String answer = problem.choices[choiceOrder[i]];
if (!choices.contains(answer)) {
choices.add(answer);
}
}
// 4つの選択肢を並び替える
List<Integer> secondOrder = Lists.newArrayList();
for (int order : choiceOrder) {
if (order < NUMBER_OF_CHOICES) {
secondOrder.add(order);
}
}
problem.shuffledChoices = new String[4];
for (int i = 0; i < NUMBER_OF_CHOICES; ++i) {
problem.shuffledChoices[i] = choices.get(secondOrder.get(i));
}
problem.shuffledAnswers = new String[] { problem.answers[0] };
}
}