void EmoteEnercitiesMessages.IEnercitiesGameStateEvents.GameStarted(string player1Name, string player1Role, string player2Name, string player2Role)
        {
            //TODO update session and final score
            //QUESTION Change this for thalmausID. Update session information...
            //TODO roles can be swithched to the enum for the roles. 
            //TODo update this to send
            string[] eis = new string[2];

            RoleToPlayer[player1Role] = "1";
            RoleToPlayer[player2Role] = "2";
            EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "roll", 0.0, EvidenceType.roll, sessionId);
            ei.actual = player1Role;
            
            eis[0] = ei.SerializeToJson();

            ei = new EvidenceItem(PlayerToId["2"], stepId, activityId, scenarioId, 2, "roll", 0.0, EvidenceType.roll, sessionId);
            ei.actual = player2Role;

            eis[1] = ei.SerializeToJson();
            JavaWebRequest("addEvidenceItems", eis);
        }
 void EmoteEnercitiesMessages.IEnercitiesGameStateEvents.ReachedNewLevel(int level)
 {
     //Update level in learner model. 
     EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "levelReached", level, EvidenceType.levelReached, sessionId);
     submitEIForBothLearners(ei);
 }
 void EmoteEnercitiesMessages.IEnercitiesGameStateEvents.EndGameSuccessfull(int totalScore)
 {
     EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "endGame", totalScore, EvidenceType.endGame, sessionId);
     ei.actual = "succesfull";
     submitEIForBothLearners(ei);
 }
 void EmoteEnercitiesMessages.IEnercitiesGameStateEvents.EndGameTimeOut(int totalScore)
 {
     //TODO  session and final score
     EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "endGame", totalScore, EvidenceType.endGame, sessionId);
     ei.actual = "timeOut";
     submitEIForBothLearners(ei);
 }
 void EmoteEnercitiesMessages.IEnercitiesTaskEvents.SkipTurn()
 {
     //TODO Update strategy?
     //TODO Update learner model with strategy?
     //QUESTION when is this used?
     EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "skipTurn", 0, EvidenceType.takeTurn, sessionId);
     ei.actual = "skipTurn";
     ei.action = "skipTurn";
     submitEIForBothLearners(ei);
 }
        void EmoteEnercitiesMessages.IEnercitiesExamineEvents.UpgradesMenuShowed()
        {
            //TODO update tool use evidence? 

            EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "toolUsed", 0.0, EvidenceType.toolUse, sessionId);
            ei.actual = "upgradeMenuShowed";
            ei.action = "upgradeMenuShowed";
            submitEIForBothLearners(ei);
        }
        void EmoteEnercitiesMessages.IEnercitiesExamineEvents.BuildingMenuToolUnselected(EmoteEnercitiesMessages.StructureType structure, string translation)
        {
            //TODO update tool use evidence? 

            EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "toolUsed", 0.0, EvidenceType.toolUse, sessionId);
            ei.actual = structure.ToString();
            ei.action = "buildingMenuUnselected";
            submitEIForBothLearners(ei);
            
        }
 void EmoteEnercitiesMessages.IEnercitiesTaskEvents.ExamineCell(double screenX, double screenY, int cellX, int cellY, EmoteEnercitiesMessages.StructureType StructureType_structure, string StructureType_translated)
 {
     //TODO Update tool use
     //TODO update knowledge encountered? 
     EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "toolUsed", 0.0, EvidenceType.toolUse, sessionId);
     ei.actual = StructureType_structure.ToString();
     ei.action = "examineCell";
     submitEIForBothLearners(ei);
 }
        void EmoteEnercitiesMessages.IEnercitiesExamineEvents.BuildMenuTooltipClosed(EmoteEnercitiesMessages.StructureCategory category, string translation)
        {
            //TODO update tool use evidence?
            //TODO link to applicationEvidenceID... Stick in a dictionary. key is the structure category+buildmenu. 
         //   EmoteEvents.

            EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "toolUsed", 0.0, EvidenceType.toolUse, sessionId);
            ei.actual = category.ToString();
            ei.action = "tooltipClosed";
            submitEIForBothLearners(ei);
            
        }
        void EmoteEnercitiesMessages.IEnercitiesExamineEvents.BuildMenuTooltipShowed(EmoteEnercitiesMessages.StructureCategory category, string translation)
        {
            //TODO update tool use evidence?
            //QUESTION Is this always explicitly closed? Mainly interested in the fact that it is opened. 

            //TODO send evidence:
            //evidence
            //TOOL = build menu
            //applicationEvidenceID = generate Stick in a dictionary. key is the structure category+buildmenu. 

            EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "toolUsed", 0.0, EvidenceType.toolUse, sessionId);
            ei.actual = category.ToString();
            ei.action = "tooltipShowed";
            submitEIForBothLearners(ei);

        }
 private void submitEIForBothLearners(EvidenceItem ei)
 {
     string[] eis = new string[2];
     eis[0] = ei.SerializeToJson();
     ei.learnerId = PlayerToId["2"];
     eis[1] = ei.SerializeToJson();
     JavaWebRequest("addEvidenceItems", eis);
 }
        void EmoteEnercitiesMessages.IEnercitiesAIPerceptions.UpdateStrategies(string StrategiesSet_strategies)
        {
            //TODO QUESTION what does this do?
            StrategiesSet ss = EmoteEvents.StrategiesSet.DeserializeFromJson(StrategiesSet_strategies);
            Dictionary<EmoteEnercitiesMessages.EnercitiesRole, double[]> strategies = ss.Strategies;
            foreach (KeyValuePair<EmoteEnercitiesMessages.EnercitiesRole, double[]> item in strategies)
            {
                //json = json + "\"" + item.Key + "\":\"" + item.Value + "\",";
                //double[] item.Value
                if(item.Key==EnercitiesRole.Mayor)
                {
                }
                else
                {

                     Strategy s = new Strategy(item.Value);
                    String player = RoleToPlayer[item.Key.ToString()];
                    int learnerId =  PlayerToId[player];
                //Weight -1 dont do, 1 is the pay attention. 
                //Abolute sum of all weights =1 
                //Scores/Strategy:
                double economy = s.EconomyWeight;
                double environment = s.EnvironmentWeight;
                double wellbeing = s.WellbeingWeight;
                double uniformity = s.ScoreUniformityWeight;

                //Resources:
                double homes = s.HomesWeight; //will tend to increase
                double money = s.MoneyWeight; //Will fluctuate with game? 
                double oil = s.OilWeight; //Will tend to decrease
                double power = s.PowerWeight; //Will fluctuate with game? 
              
                //check the item.key for the role, then check role to send the learner id to the system. Need to make a note based on the role sent in the start message.
                //break out each aspect of s and send to java.. 
                //Just send as evidence at the moment. 
                string[] eis = new string[8];
                EvidenceItem ei = new EvidenceItem(learnerId, stepId, activityId, scenarioId, 2,"economy",economy,EvidenceType.strategyWeight,sessionId);
                eis[0] = ei.SerializeToJson();
                ei = new EvidenceItem(learnerId, stepId, activityId, scenarioId, 2, "environment", environment, EvidenceType.strategyWeight, sessionId);
                eis[1] = ei.SerializeToJson();
                ei = new EvidenceItem(learnerId, stepId, activityId, scenarioId, 2, "wellbeing", wellbeing, EvidenceType.strategyWeight, sessionId);
                eis[2] = ei.SerializeToJson();
                ei = new EvidenceItem(learnerId, stepId, activityId, scenarioId, 2, "uniformity", uniformity, EvidenceType.strategyWeight, sessionId);
                eis[3] = ei.SerializeToJson();
                ei = new EvidenceItem(learnerId, stepId, activityId, scenarioId, 2, "homes", homes, EvidenceType.resourceWeight, sessionId);
                eis[4] = ei.SerializeToJson();
                ei = new EvidenceItem(learnerId, stepId, activityId, scenarioId, 2, "money", money, EvidenceType.resourceWeight, sessionId);
                eis[5] = ei.SerializeToJson();
                ei = new EvidenceItem(learnerId, stepId, activityId, scenarioId, 2, "oil", oil, EvidenceType.resourceWeight, sessionId);
                eis[6] = ei.SerializeToJson();
                ei = new EvidenceItem(learnerId, stepId, activityId, scenarioId, 2, "power", power, EvidenceType.resourceWeight, sessionId);
                eis[7] = ei.SerializeToJson();

                JavaWebRequest("addEvidenceItems", eis);

                }

                }
            //TODO QUESTION how should I record this? 
        }
 void IEmotionalClimate.EmotionalClimateLevel(EmotionalClimateLevel level)
 {
     double value = 0.0;
     if (level.Equals(EmotionalClimateLevel.Positive))
     {
         value = 1.0;
     }
     EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "emotionalClimateLevel", value, EvidenceType.emotionalClimateLevel, sessionId);
     ei.actual = level.ToString();
     submitEIForBothLearners(ei);
 }
        void EmoteEnercitiesMessages.IEnercitiesGameStateEvents.TurnChanged(string serializedGameState)
        {

            EnercitiesGameInfo egi = EnercitiesGameInfo.DeserializeFromJson(serializedGameState);
           
            
        /*public EnercitiesRole CurrentRole { get; set; }
        public double EconomyScore { get; set; }
        public double EnvironmentScore { get; set; }
        public double GlobalScore { get; set; }
        public int Level { get; set; }
        public double Money { get; set; }
        public double MoneyEarning { get; set; }
        public double Oil { get; set; }
        public int Population { get; set; }
        public double PowerConsumption { get; set; }
        public double PowerProduction { get; set; }
        public int TargetPopulation { get; set; }
        public double WellbeingScore { get; set; }*/

            //TODO increment the turn changed
            //TODO change the learner id. Robot, 1,2. 

            //TODO Update game state? 
            stepId = egi.Level;

           // submitGameState(serializedGameState);

            if (egi.CurrentRole != EnercitiesRole.Mayor)
            {
                String currentRole = RoleToPlayer[egi.CurrentRole.ToString()];
                currentLearnerId = PlayerToId[currentRole];

                EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "turnChanged",
                    egi.GlobalScore, EvidenceType.turnChanged, sessionId);
                submitEIForBothLearners(ei);
            }

           // JavaWebRequest("addEnercitiesGameState", serializedGameState);
           
            Dictionary<String, String> parametersForJson = new Dictionary<String, String>();
            	
            parametersForJson["learner1"] = ""+PlayerToId["1"];
            parametersForJson["learner2"] = ""+PlayerToId["2"];
            parametersForJson["stepId"] = ""+stepId;
            parametersForJson["activityId"] = ""+activityId;
            parametersForJson["scenarioId"] = ""+scenarioId;
            parametersForJson["emoteScenarioId"] = "" + 2;
            parametersForJson["sessionNumber"] = "" + sessionId;
            
            parametersForJson["currentRole"] = egi.CurrentRole.ToString();
            parametersForJson["economyScore"] = "" + egi.EconomyScore;
            parametersForJson["environmentScore"] = "" + egi.EnvironmentScore;
            parametersForJson["globalScore"] = "" + egi.GlobalScore;
            parametersForJson["level"] = "" + egi.Level;
            parametersForJson["money"] = "" + egi.Money;
            parametersForJson["moneyEarning"] = "" + egi.MoneyEarning;
            parametersForJson["population"] = "" + egi.Population;
            parametersForJson["powerConsumption"] = "" + egi.PowerConsumption;
            parametersForJson["powerProduction"] = "" + egi.PowerProduction;
            parametersForJson["targetPopulation"] = "" + egi.TargetPopulation;
            parametersForJson["wellbeingScore"] = "" + egi.WellbeingScore;
       

            JavaWebRequest("addEnercitiesGameState", parametersForJson);

            if (egi.Money < 0.0)
            {
                EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "crisis", egi.Money, EvidenceType.crisis, sessionId);
                ei.actual = "financial";
                submitEIForBothLearners(ei);
            }
            if (egi.Oil < 0.0)
            {
                EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "crisis", egi.Oil, EvidenceType.crisis, sessionId);
                ei.actual = "energy";
                submitEIForBothLearners(ei);
            }
        }
        void EmoteEnercitiesMessages.IEnercitiesExamineEvents.PolicyTooltipClosed()
        {
            //update tool use evidence

            EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "toolUsed", 0.0, EvidenceType.toolUse, sessionId);
            ei.actual = "policyTooltipClosed";
            ei.action = "policyTooltipClosed";
            submitEIForBothLearners(ei);
        }
 void EmoteEnercitiesMessages.IEnercitiesTaskEvents.ConfirmConstruction(EmoteEnercitiesMessages.StructureType structure, string translation, int cellX, int cellY)
 {
    //TODO Update constructions encountered? 
     //TODO Update learner model with strategy?
     //QUESTION when is this used?
     EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "confirmConstruction", 0, EvidenceType.takeTurn, sessionId);
     ei.actual = structure.ToString();
     ei.action = "confirmConstruction";
     submitEIForBothLearners(ei);
 }
        void EmoteEnercitiesMessages.IEnercitiesExamineEvents.PolicyTooltipShowed(EmoteEnercitiesMessages.PolicyType policy, string translation)
        {
            //TODO update tool use evidence? 

            EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "toolUsed", 0.0, EvidenceType.toolUse, sessionId);
            ei.actual = policy.ToString();
            ei.action = "policyTooltipShowed";
            submitEIForBothLearners(ei);
        }
 void EmoteEnercitiesMessages.IEnercitiesTaskEvents.ImplementPolicy(EmoteEnercitiesMessages.PolicyType policy, string translation)
 {
     //TODO Update policy encountered
     //TODO Update learner model with strategy?
     //QUESTION when is this used?
     EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "implementPolicy", 0, EvidenceType.takeTurn, sessionId);
     ei.actual = policy.ToString();
     ei.action = "implementPolicy";
     submitEIForBothLearners(ei);
 }
 void EmoteEnercitiesMessages.IEnercitiesTaskEvents.PerformUpgrade(EmoteEnercitiesMessages.UpgradeType upgrade, string translation, int cellX, int cellY)
 {
     //TODO Update upgrade encountered
     //TODO Update learner model with strategy?
     //QUESTION when is this used?
     EvidenceItem ei = new EvidenceItem(PlayerToId["1"], stepId, activityId, scenarioId, 2, "performUpgrade", 0, EvidenceType.takeTurn, sessionId);
     ei.actual = upgrade.ToString();
     ei.action = "performUpgrade";
     submitEIForBothLearners(ei);
 }