Beispiel #1
0
    public void UpdateSimEventPanel(SimEventData data, int slotIndex)
    {
        index = slotIndex;

        textEventName.text = data.name;
        textEventCost.text = "$" + data.cost.ToString();

        /*// set background color?
         * Color bgColor = uiManager.buttonEventMinorColor;
         * if(data.category == SimEventData.SimEventCategories.Major) {
         *  bgColor = uiManager.buttonEventMajorColor;
         * }
         * if(data.category == SimEventData.SimEventCategories.Extreme) {
         *  bgColor = uiManager.buttonEventExtremeColor;
         * }*/

        if (isSelected)
        {
            //bgColor *= 2f;
            //imageBG.color = new Color(0.6f, 0.6f, 0.6f);
        }
        //else {
        //    imageBG.color = new Color(0.3f, 0.3f, 0.3f);
        //}
        //imageBG.color = bgColor;
    }
Beispiel #2
0
 void RegenerateAvailableExtremeEvents()
 {
     availableExtremeEventsList.Clear();
     for (int i = 0; i < numAvailableEventsPerMenu; i++)
     {
         SimEventData newEventData = GenerateNewRandomExtremeEvent(availableExtremeEventsList);
         availableExtremeEventsList.Add(newEventData);
     }
 }
Beispiel #3
0
    public SimEvent GetEventData(SimEventData input)
    {
        switch (input.category)
        {
        case SimEventCategories.Minor: return(GetMinorEvent(input.typeMinor));

        case SimEventCategories.Major: return(GetMajorEvent(input.typeMajor));

        case SimEventCategories.Extreme: return(GetExtremeEvent(input.typeExtreme));

        default: return(null);
        }
    }
Beispiel #4
0
    /*
     * public void ExecuteEvent(SimulationManager simManager, SimEventData data) {
     *  curEventBucks -= data.cost;
     *
     *  if(data.category == SimEventData.SimEventCategories.Minor) {
     *      ExecuteEventMinor(simManager, data);
     *  }
     *  else if(data.category == SimEventData.SimEventCategories.Major) {
     *      ExecuteEventMajor(simManager, data);
     *  }
     *  else {
     *      ExecuteEventExtreme(simManager, data);
     *  }
     *
     *  isCooldown = true;
     *  mostRecentEventString = data.name + " Activated! ( -$" + data.cost + ")";
     *  RegenerateAvailableMinorEvents(simManager);
     *  RegenerateAvailableMajorEvents(simManager);
     *  RegenerateAvailableExtremeEvents(simManager);
     *
     *  data.timeStepActivated = simManager.simAgeTimeSteps;
     *  completeEventHistoryList.Add(data);
     * }
     * public void ExecuteEventMinor(SimulationManager simManager, SimEventData data) {
     *
     *  int posNeg = -1;
     *  if(data.isPositive) {
     *      posNeg = 1;
     *  }
     *  // Do stuff here:
     *  int deltaTiers = 1 * posNeg;
     *
     *  int randomSpeciesID = simManager.masterGenomePool.currentlyActiveSpeciesIDList[UnityEngine.Random.Range(0, simManager.masterGenomePool.currentlyActiveSpeciesIDList.Count)];
     *
     *  switch(data.typeMinor) {
     *      case SimEventData.SimEventTypeMinor.BodyModules:
     *          simManager.settingsManager.ChangeTierBodyMutationModules(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeMinor.BodyMutation:
     *          float randRollBodyMutation = UnityEngine.Random.Range(0f, 1f);
     *          if(randRollBodyMutation < 0.67f) {
     *              simManager.settingsManager.ChangeTierBodyMutationAmplitude(deltaTiers);
     *          }
     *          if(randRollBodyMutation > 0.33f) {
     *              simManager.settingsManager.ChangeTierBodyMutationFrequency(deltaTiers);
     *          }
     *          break;
     *      case SimEventData.SimEventTypeMinor.BrainMutation:
     *          float randRollBrainMutation = UnityEngine.Random.Range(0f, 1f);
     *          if(randRollBrainMutation < 0.67f) {
     *              simManager.settingsManager.ChangeTierBrainMutationAmplitude(deltaTiers);
     *          }
     *          if(randRollBrainMutation > 0.33f) {
     *              simManager.settingsManager.ChangeTierBrainMutationFrequency(deltaTiers);
     *          }
     *          break;
     *      case SimEventData.SimEventTypeMinor.BrainSize:
     *          float randRollGrowth = UnityEngine.Random.Range(0f, 1f);
     *          simManager.settingsManager.ChangeTierBrainMutationNewLink(deltaTiers);
     *          simManager.settingsManager.ChangeTierBrainMutationNewHiddenNeuron(deltaTiers);
     *          simManager.settingsManager.ChangeTierBrainMutationWeightDecay(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeMinor.CalmWaters:
     *          simManager.environmentFluidManager.curTierWaterCurrents = 1; // Mathf.Clamp(simManager.environmentFluidManager.curTierWaterCurrents + deltaTiers, 0, 10);
     *          //simManager.environmentFluidManager.RerollForcePoints();
     *          break;
     *      case SimEventData.SimEventTypeMinor.CreateSpecies:
     *          //AgentGenome newGenome = simManager.masterGenomePool.completeSpeciesPoolsList[randomSpeciesID].GetNewMutatedGenome();
     *          //simManager.AddNewSpecies(newGenome, randomSpeciesID);
     *          //simManager.AddNewSpecies(simManager.masterGenomePool.completeSpeciesPoolsList[randomSpeciesID].leaderboardGenomesList[0].candidateGenome, randomSpeciesID);
     *          break;
     *      case SimEventData.SimEventTypeMinor.FoodCorpse:
     *          simManager.settingsManager.ChangeTierFoodCorpse(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeMinor.FoodEgg:
     *          simManager.settingsManager.ChangeTierFoodEgg(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeMinor.FoodDecay:
     *          simManager.settingsManager.ChangeTierFoodDecay(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeMinor.FoodPlant:
     *          simManager.settingsManager.ChangeTierFoodPlant(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeMinor.KillSpecies:
     *          if(simManager.masterGenomePool.currentlyActiveSpeciesIDList.Count > 1) {
     *              simManager.masterGenomePool.FlagSpeciesExtinct(randomSpeciesID);
     *              //simManager.masterGenomePool.completeSpeciesPoolsList[randomSpeciesID].isFlaggedForExtinction = true;
     *              //Debug.Log("FLAG EXTINCT: " + randomSpeciesID.ToString());
     *          }
     *          else {
     *              Debug.LogError("ERROR: Couldn't Kill last remaining species");
     *          }
     *          break;
     *      default:
     *          break;
     *  }
     *
     *  // ^ Did stuff there
     * }
     * public void ExecuteEventMajor(SimulationManager simManager, SimEventData data) {
     *  int posNeg = -1;
     *  if(data.isPositive) {
     *      posNeg = 1;
     *  }
     *  // Do stuff here:
     *  int deltaTiers = 3 * posNeg;
     *
     *  int speciesIndex = GetEventSpeciesID(simManager, data);
     *  //int randomSpeciesID = UnityEngine.Random.Range(0, simManager.masterGenomePool.currentlyActiveSpeciesIDList.Count);
     *
     *  switch(data.typeMajor) {
     *      case SimEventData.SimEventTypeMajor.BodyModules:
     *          simManager.settingsManager.ChangeTierBodyMutationModules(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeMajor.BodyMutation:
     *          float randRollBodyMutation = UnityEngine.Random.Range(0f, 1f);
     *          if(randRollBodyMutation < 0.67f) {
     *              simManager.settingsManager.ChangeTierBodyMutationAmplitude(deltaTiers);
     *          }
     *          if(randRollBodyMutation > 0.33f) {
     *              simManager.settingsManager.ChangeTierBodyMutationFrequency(deltaTiers);
     *          }
     *          break;
     *      case SimEventData.SimEventTypeMajor.BrainMutation:
     *          float randRollBrainMutation = UnityEngine.Random.Range(0f, 1f);
     *          if(randRollBrainMutation < 0.67f) {
     *              simManager.settingsManager.ChangeTierBrainMutationAmplitude(deltaTiers);
     *          }
     *          if(randRollBrainMutation > 0.33f) {
     *              simManager.settingsManager.ChangeTierBrainMutationFrequency(deltaTiers);
     *          }
     *          break;
     *      case SimEventData.SimEventTypeMajor.BrainSize:
     *          float randRollGrowth = UnityEngine.Random.Range(0f, 1f);
     *          simManager.settingsManager.ChangeTierBrainMutationNewLink(deltaTiers);
     *          simManager.settingsManager.ChangeTierBrainMutationNewHiddenNeuron(deltaTiers);
     *          simManager.settingsManager.ChangeTierBrainMutationWeightDecay(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeMajor.Gale:
     *          simManager.environmentFluidManager.curTierWaterCurrents = 4; // Mathf.Clamp(simManager.environmentFluidManager.curTierWaterCurrents + deltaTiers, 0, 10);
     *          simManager.environmentFluidManager.RerollForcePoints();
     *          break;
     *      case SimEventData.SimEventTypeMajor.CreateSpecies:
     *          //int speciesIndex = GetEventSpeciesID(simManager, data);
     *          //AgentGenome newGenome = simManager.masterGenomePool.completeSpeciesPoolsList[speciesIndex].GetNewMutatedGenome();
     *          //simManager.AddNewSpecies(newGenome, speciesIndex);
     *          //simManager.AddNewSpecies(simManager.masterGenomePool.completeSpeciesPoolsList[speciesIndex].leaderboardGenomesList[0].candidateGenome, speciesIndex);
     *          break;
     *      case SimEventData.SimEventTypeMajor.FoodCorpse:
     *          simManager.settingsManager.ChangeTierFoodCorpse(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeMajor.FoodEgg:
     *          simManager.settingsManager.ChangeTierFoodEgg(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeMajor.FoodDecay:
     *          simManager.settingsManager.ChangeTierFoodDecay(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeMajor.FoodPlant:
     *          simManager.settingsManager.ChangeTierFoodPlant(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeMajor.KillSpecies:
     *          if(simManager.masterGenomePool.currentlyActiveSpeciesIDList.Count > 1) {
     *              simManager.masterGenomePool.FlagSpeciesExtinct(speciesIndex);
     *              //simManager.masterGenomePool.completeSpeciesPoolsList[speciesIndex].isFlaggedForExtinction = true;
     *              //Debug.Log("FLAG EXTINCT: " + speciesIndex.ToString());
     *          }
     *          else {
     *              Debug.LogError("ERROR: Couldn't Kill last remaining species");
     *          }
     *          break;
     *      default:
     *          break;
     *  }
     * }
     * public void ExecuteEventExtreme(SimulationManager simManager, SimEventData data) {
     *  int posNeg = -1;
     *  if(data.isPositive) {
     *      posNeg = 1;
     *  }
     *  // Do stuff here:
     *  int deltaTiers = 9 * posNeg;
     *
     *  int speciesIndex = GetEventSpeciesID(simManager, data);
     *  //int randomSpeciesID = UnityEngine.Random.Range(0, simManager.masterGenomePool.currentlyActiveSpeciesIDList.Count);
     *
     *  switch(data.typeExtreme) {
     *      case SimEventData.SimEventTypeExtreme.BodyModules:
     *          simManager.settingsManager.ChangeTierBodyMutationModules(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeExtreme.BodyMutation:
     *          float randRollBodyMutation = UnityEngine.Random.Range(0f, 1f);
     *          if(randRollBodyMutation < 0.67f) {
     *              simManager.settingsManager.ChangeTierBodyMutationAmplitude(deltaTiers);
     *          }
     *          if(randRollBodyMutation > 0.33f) {
     *              simManager.settingsManager.ChangeTierBodyMutationFrequency(deltaTiers);
     *          }
     *          break;
     *      case SimEventData.SimEventTypeExtreme.BrainMutation:
     *          float randRollBrainMutation = UnityEngine.Random.Range(0f, 1f);
     *          if(randRollBrainMutation < 0.67f) {
     *              simManager.settingsManager.ChangeTierBrainMutationAmplitude(deltaTiers);
     *          }
     *          if(randRollBrainMutation > 0.33f) {
     *              simManager.settingsManager.ChangeTierBrainMutationFrequency(deltaTiers);
     *          }
     *          break;
     *      case SimEventData.SimEventTypeExtreme.BrainSize:
     *          float randRollGrowth = UnityEngine.Random.Range(0f, 1f);
     *          simManager.settingsManager.ChangeTierBrainMutationNewLink(deltaTiers);
     *          simManager.settingsManager.ChangeTierBrainMutationNewHiddenNeuron(deltaTiers);
     *          simManager.settingsManager.ChangeTierBrainMutationWeightDecay(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeExtreme.Hurricane:
     *          simManager.environmentFluidManager.curTierWaterCurrents = 10; // Mathf.Clamp(simManager.environmentFluidManager.curTierWaterCurrents + deltaTiers, 0, 10);
     *          simManager.environmentFluidManager.RerollForcePoints();
     *          break;
     *      case SimEventData.SimEventTypeExtreme.CreateSpecies:
     *          //int speciesIndex = GetEventSpeciesID(simManager, data);
     *          for(int i = 0; i < data.quantity; i++) {
     *              int speciesID = simManager.masterGenomePool.currentlyActiveSpeciesIDList[UnityEngine.Random.Range(0, simManager.masterGenomePool.currentlyActiveSpeciesIDList.Count)];
     *              //int candID = UnityEngine.Random.Range(0, simManager.masterGenomePool.completeSpeciesPoolsList[speciesID].leaderboardGenomesList.Count);
     *              // Get mutated version first?
     *              //simManager.masterGenomePool.completeSpeciesPoolsList[speciesID].leaderboardGenomesList[candID].candidateGenome
     *              //AgentGenome newGenome = simManager.masterGenomePool.completeSpeciesPoolsList[speciesID].GetNewMutatedGenome();
     *              //simManager.AddNewSpecies(newGenome, speciesID);
     *          }
     *          break;
     *      case SimEventData.SimEventTypeExtreme.FoodCorpse:
     *          simManager.settingsManager.ChangeTierFoodCorpse(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeExtreme.FoodEgg:
     *          simManager.settingsManager.ChangeTierFoodEgg(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeExtreme.FoodDecay:
     *          simManager.settingsManager.ChangeTierFoodDecay(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeExtreme.FoodPlant:
     *          simManager.settingsManager.ChangeTierFoodPlant(deltaTiers);
     *          break;
     *      case SimEventData.SimEventTypeExtreme.KillSpecies:
     *          int randSpeciesID = simManager.masterGenomePool.currentlyActiveSpeciesIDList[UnityEngine.Random.Range(0, simManager.masterGenomePool.currentlyActiveSpeciesIDList.Count)];
     *          if(simManager.masterGenomePool.currentlyActiveSpeciesIDList.Count > 1) {
     *              for(int i = 0; i < simManager.masterGenomePool.currentlyActiveSpeciesIDList.Count; i++) {
     *                  if(simManager.masterGenomePool.currentlyActiveSpeciesIDList[i] != randSpeciesID) {
     *                      simManager.masterGenomePool.FlagSpeciesExtinct(simManager.masterGenomePool.currentlyActiveSpeciesIDList[i]);
     *                      //simManager.masterGenomePool.completeSpeciesPoolsList[simManager.masterGenomePool.currentlyActiveSpeciesIDList[i]].isFlaggedForExtinction = true;
     *                      //Debug.Log("FLAG EXTINCT: " + speciesIndex.ToString());
     *                  }
     *              }
     *          }
     *          else {
     *              Debug.LogError("ERROR: Couldn't Kill last remaining species");
     *          }
     *          break;
     *      default:
     *          break;
     *  }
     * }
     */

    int GetEventSpeciesID(SimEventData data)
    {
        int   speciesID  = 0; // -1;
        float recordLow  = 9999999f;
        float recordHigh = -9999999f;
        bool  positivePolaritySetsHighRecord = true;

        foreach (var id in simManager.masterGenomePool.currentlyActiveSpeciesIDList)
        {
            var value = 0f;

            switch (data.speciesQualifier)
            {
            case SpeciesQualifier.Age:
                positivePolaritySetsHighRecord = false;
                break;

            case SpeciesQualifier.BodySize:
                break;

            case SpeciesQualifier.Fitness:
                value = simManager.masterGenomePool.completeSpeciesPoolsList[id].avgCandidateData.performanceData.totalTicksAlive;
                break;

            // **** IMPLEMENT ACTUAL NOVELTY SCORE!!!! ****
            case SpeciesQualifier.Novelty:
                value = Random.Range(0f, 1f);
                break;
            }

            bool checkHighRecord = positivePolaritySetsHighRecord == data.polarity;

            if (checkHighRecord && value > recordHigh)
            {
                recordHigh = value;
                speciesID  = id;
            }
            else if (!checkHighRecord && value < recordLow)
            {
                recordLow = value;
                speciesID = id;
            }
        }

        return(speciesID);
    }
Beispiel #5
0
    SimEventData GenerateNewRandomMinorEvent(List <SimEventData> eventList)
    {
        var newEventData = new SimEventData(3, 1, SimEventCategories.Minor);
        var randType     = SimEventData.GetRandomMinorEventType();

        // Check if impossible or duplicates present
        for (int i = 0; i < 8; i++)
        {
            if (eventList.Count <= 0 || eventList.Any(e => e.typeMinor == randType))
            {
                break;
            }

            randType = SimEventData.GetRandomMinorEventType();
        }

        newEventData.typeMinor = randType;
        newEventData.Refresh();
        return(newEventData);
    }
Beispiel #6
0
    SimEventData GenerateNewRandomExtremeEvent(List <SimEventData> eventList)
    {
        SimEventData newEventData = new SimEventData(75, 3, SimEventCategories.Extreme);
        var          randType     = SimEventData.GetRandomExtremeEventType();

        for (int i = 0; i < 8; i++)
        {
            if (eventList.Count <= 0 || eventList.Any(e => e.typeExtreme == randType))
            {
                break;
            }

            randType = SimEventData.GetRandomExtremeEventType();
        }

        var randQualifier = (SpeciesQualifier)Random.Range(1, 5);

        newEventData.typeExtreme = randType;
        newEventData.Refresh(randQualifier);
        return(newEventData);
    }
Beispiel #7
0
 public void SetRandomMinorEvent()
 {
     minorEvent = SimEventData.GetRandomMinorEventType();
 }