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; }
void RegenerateAvailableExtremeEvents() { availableExtremeEventsList.Clear(); for (int i = 0; i < numAvailableEventsPerMenu; i++) { SimEventData newEventData = GenerateNewRandomExtremeEvent(availableExtremeEventsList); availableExtremeEventsList.Add(newEventData); } }
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); } }
/* * 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); }
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); }
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); }
public void SetRandomMinorEvent() { minorEvent = SimEventData.GetRandomMinorEventType(); }