public void Initialize(int _index, int _level) { m_index = _index; if (_level > 0) { m_level = new OfficerLevel(xpRequirements_level[_level - 1], _level); } else { m_level = new OfficerLevel(0.0f, 0); } // add all possible keys to dictionaries foreach (Neighborhood neighborhood in GameObject.Find("City").GetComponent <City>().GetNeighborhoods()) { m_level_neighborhoods.Add(neighborhood, new OfficerLevel(0.0f, 0)); } foreach (types.CrimeType type in System.Enum.GetValues(typeof(types.CrimeType))) { m_level_crimeTypes.Add(type, new OfficerLevel(0.0f, 0)); } // head sprite m_sprite = headImages[m_index % (headImages.Length)]; }
void GainExperience(float _experience) { // add experience points m_level.xp += Clock.GetDeltaTime(); // add experience points toward neighborhood if (m_level_neighborhoods.ContainsKey(GetCurrentCrime().GetNeighborhood())) { m_level_neighborhoods[GetCurrentCrime().GetNeighborhood()].xp += Clock.GetDeltaTime(); } else { m_level_neighborhoods.Add(GetCurrentCrime().GetNeighborhood(), new OfficerLevel(Clock.GetDeltaTime(), 0)); } // add experience points toward crime type if (m_level_crimeTypes.ContainsKey(GetCurrentCrime().GetCrimeType())) { m_level_crimeTypes[GetCurrentCrime().GetCrimeType()].xp += Clock.GetDeltaTime(); } else { m_level_crimeTypes.Add(GetCurrentCrime().GetCrimeType(), new OfficerLevel(Clock.GetDeltaTime(), 0)); } // check if level up for (int i = 0; i < xpRequirements_level.Length; i++) { // level up if (i > m_level.level) { if (m_level.xp >= xpRequirements_level[i]) { LevelUp(m_level); } } // level up crime type if (i < xpRequirements_crime.Length) { OfficerLevel ol = m_level_crimeTypes[GetCurrentCrime().GetCrimeType()]; if (i > ol.level) { if (ol.xp >= xpRequirements_crime[i]) { LevelUpCrime(ol); } } } // level up neighborhood if (i < xpRequirements_neighborhood.Length) { OfficerLevel ol = m_level_neighborhoods[GetCurrentCrime().GetNeighborhood()]; if (i > ol.level) { if (ol.xp >= xpRequirements_neighborhood[i]) { LevelUpNeighborhood(ol); } } } } }
void LevelUpNeighborhood(OfficerLevel _level) { LevelUpGeneral(_level); MonoBehaviour.print("Officer " + m_index + " levels up a neighborhood to level " + (_level.level + 1)); }
void LevelUpCrime(OfficerLevel _level) { LevelUpGeneral(_level); MonoBehaviour.print("Officer " + m_index + " levels up a crime to level " + (_level.level + 1)); }
void LevelUpGeneral(OfficerLevel _level) { _level.level++; }