package plugins.greed_monger;
import io.gamemachine.core.Commands;
import io.gamemachine.core.GameGrid;
import io.gamemachine.core.GameMessageActor;
import io.gamemachine.core.Grid;
import io.gamemachine.core.PlayerCommands;
import io.gamemachine.core.PlayerService;
import io.gamemachine.messages.Character;
import io.gamemachine.messages.Characters;
import io.gamemachine.messages.GameMessage;
import io.gamemachine.messages.PlayerContract;
import io.gamemachine.messages.PlayerContracts;
import io.gamemachine.messages.PlayerOffer;
import io.gamemachine.messages.PvpGameMessage;
import io.gamemachine.messages.TrackData;
import io.gamemachine.messages.WorldObject;
import io.gamemachine.messages.Skill;
import io.gamemachine.messages.Skills;
import io.gamemachine.messages.SkillRequest;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import scala.concurrent.duration.Duration;
import akka.event.Logging;
import akka.event.LoggingAdapter;
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
public class SkillHandler extends GameMessageActor
{
public static String name = SkillHandler.class.getSimpleName();
public static AtomicLong counter = new AtomicLong();
@Override
public void awake() {
// TODO Auto-generated method stub
}
@Override
public void onGameMessage(GameMessage gameMessage) {
if(gameMessage.hasSkillRequest()){
SkillRequest request = gameMessage.skillRequest;
if(request.requestType.matches("get")){
Skills skills = new Skills();
skills.skills = this.GetPlayerSkills(request.ownerId);
request.skills = skills;
if(request.skills.skills.isEmpty()){
request = PopulatePlayersSkills(request);
}
request.resultCode = 1;
gameMessage.skillRequest = request;
PlayerCommands.sendGameMessage(gameMessage, playerId);
}
}
}
private SkillRequest PopulatePlayersSkills(SkillRequest request) {
// TODO Auto-generated method stub
List<Skill> generalSkills = this.GetPlayerSkills("Template");
for(Skill skill : generalSkills){
Skill s = new Skill();
s.name = skill.name;
s.description = skill.description;
s.id = skill.id;
s.currentExperience = 0;
s.experienceNeeded = skill.experienceNeeded;
s.level = skill.level;
s.ownerId = request.ownerId;
request.skills.addSkills(s);
Skill.db().save(s);
}
return request;
}
public static Skill GetSkill(String characterId, String skillId){
List<Skill> skills = Skill.db().where("skill_owner_id = ?", characterId);
for(Skill skill : skills){
if(skill.id.equals(skillId))
return skill;
}
return null;
}
public static int GetSkillLevel(String characterId, String skillId){
List<Skill> skills = Skill.db().where("skill_owner_id = ?", characterId);
for(Skill skill : skills){
if(skill.id.equals(skillId))
return skill.level;
}
return -1;
}
public static void LevelUpSkill(String skillId, String characterId, int increaseAmount){
List<Skill> skills = Skill.db().where("skill_owner_id = ?", characterId);
for(Skill skill : skills){
if(skill.id.equals(skillId)){
skill.currentExperience = skill.currentExperience + increaseAmount;
if(skill.currentExperience >= skill.experienceNeeded){
skill.level += 1;
skill.experienceNeeded *= skill.level;
skill.currentExperience = 0;
}
Skill.db().save(skill);
}
}
}
private List<Skill> GetList(){
return Skill.db().findAll();
}
private List<Skill> GetPlayerSkills(String id){
return Skill.db().where("skill_owner_id = ?", id);
}
}