package controllers;
import actions.User;
import drawer.Images;
import drawer.MedalsPicture;
import drawer.SignaturePicture;
import drawer.VersusPicture;
import models.Player;
import play.mvc.Controller;
import play.mvc.Result;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Map;
import static drawer.MedalsPicture.createMedalsPicture;
public class PlayerController extends Controller {
public static Result index(Player player) {
if (player == null) {
return notFound();
}
return ok(views.html.player_read.render(player, player.fetchScores()));
}
public static Result hideMedals(Boolean hide) {
Player player = User.current();
player.hideMedals = hide;
player.update();
return index(player);
}
public static Result signature(Player player) throws IOException {
if (player == null) {
return notFound();
}
Map<Player, byte[]> signatures = CacheController.getSignatureCache();
byte[] bytes = signatures.get(player);
if (bytes == null) {
BufferedImage image = SignaturePicture.createSignaturePicture(player);
bytes = Images.toBytes(image);
signatures.put(player, bytes);
}
response().setHeader(CACHE_CONTROL, "max-age=3600");
response().setContentType("image/png");
return ok(bytes);
}
public static Result versus(Player player) throws IOException {
if (player == null) {
return notFound();
}
Map<Player, byte[]> versus = CacheController.getVersusCache();
byte[] bytes = versus.get(player);
if (bytes == null) {
BufferedImage image = VersusPicture.createVersusPicture(player);
bytes = Images.toBytes(image);
versus.put(player, bytes);
}
response().setHeader(CACHE_CONTROL, "max-age=3600");
response().setContentType("image/png");
return ok(bytes);
}
public static Result medals(Long shmupId) throws IOException {
response().setHeader(CACHE_CONTROL, "max-age=3600");
response().setContentType("image/png");
Player player = Player.findByShmupUserId(shmupId);
if (player == null || player.hideMedals) {
return ok(Images.toBytes(MedalsPicture.blankImage));
}
Map<Player, byte[]> medals = CacheController.getMedalsCache();
byte[] bytes = medals.get(player);
if (bytes == null) {
BufferedImage image = createMedalsPicture(player);
bytes = Images.toBytes(image);
medals.put(player, bytes);
}
return ok(bytes);
}
public static Result indexShmup(Long shmupId) throws IOException {
Player player = Player.findByShmupUserId(shmupId);
return index(player);
}
}