/*
Copyright (C) 2005 David Green <green@couchpotato.net>
All Rights Reserved.

This file is part of Aelfengard.

Aelfengard is proprietary software. You may not redistribute it without
prior written permission from the copyright holder.
*/
package server;

import server.token.TokenString;

public enum DifficultyLevel {

    EASY_4(new TokenString("@00AYou could kill %a1 without even breaking a sweat.")),
    EASY_3(new TokenString("@00A%N1 wouldn't pose any challenge at all.")),
    EASY_2(new TokenString("@002%N1 wouldn't be much of a challenge.")),
    EASY_1(new TokenString("@00C%N1 would be a good fight.")),
    HARD_1(new TokenString("@10FTrying to kill %a1 would be pushing your luck.")),
    HARD_2(new TokenString("@00B%N1 would provide quite a challenge.")),
    HARD_3(new TokenString("@009%N1 would almost certainly win.")),
    HARD_4(new TokenString("@101%N1 would kill you without even breaking a sweat."));
    
    private final TokenString ts;
    
    private DifficultyLevel(TokenString ts) {
        this.ts = ts;
    }
    
    public TokenString getTokenString() {
        return ts;
    }
    
    public static DifficultyLevel forPair(int level1, int level2) {
        if (level1 == level2) {
            return HARD_1;
        }
        else if (level2 > level1) {
            switch(level2 - level1) {
                case 1:
                case 2: return HARD_2;
                case 3:
                case 4: return HARD_3;
                default: return HARD_4;
            }
        }
        int ratio = (level2 * 10) / level1;
        switch (ratio) {
            case 0:
            case 1:
            case 2: return EASY_4;
            case 3: 
            case 4: return EASY_3;
            case 5:
            case 6:
            case 7: return EASY_2;
            case 8:
            case 9: return EASY_1;
            default: throw new FatalError("Invalid ratio: " + ratio);
        }
    }

}