package com.chughes.dip.game;
import java.util.Arrays;
import java.util.Date;
import java.util.Vector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import com.chughes.dip.data.GameRepository;
import com.chughes.dip.game.GameEntity.Stage;
import dip.world.Power;
@Service
public class GameMaster {
@Autowired private Judge j;
@Autowired private GameRepository gr;
private static final Logger logger = LoggerFactory.getLogger(GameMaster.class);
//Every minute
@Scheduled(cron="0 * * * * ?")
public void resolveGames(){
j.cron();
}
public void beginGame(GameEntity game){
game.setStage(Stage.PLAYING);
Vector<Power> powers = new Vector<Power>(Arrays.asList(game.getW().getMap().getPowers()));
//Simple way to choose powers
for (UserGameEntity player : game.getPlayers()) {
int chosen = (int) Math.floor(Math.random()*powers.size());
player.setPower(powers.remove(chosen).getName());
}
j.updateInfo(game);
}
public void processGame(GameEntity ge){
try{
for (UserGameEntity player : ge.getPlayers()) {
if (!player.isReady()){
return;
}
}
for (UserGameEntity player : ge.getPlayers()) {
player.setOrderable(false);
}
ge.setTurnend(new Date());
gr.updateGame(ge);
}
catch(Exception e){
e.printStackTrace();
}
}
}