private void OnWorldMonster(object sender, GameEventArgs e) { WorldEvent worldEvent = e.Get <WorldEvent>(); Monster monster; // Create specific monster(s) if (worldEvent.Name != "Wandering Monster") { foreach (string name in worldEvent.EventData) { monster = monsterFactory.Create(name, worldEvent.Hero); RaiseGameEvent(GameEvents.SetMonster, this, monster); } } // Create monster using monster table else { // Select random number of monsters int groupSize = random.Next(minMonsterGroupSize, maxMonsterGroupSize + 1); for (int i = 0; i < groupSize; ++i) { monster = CurrentZone.MonsterTable.GenerateObject( worldEvent.Hero, monsterFactory); RaiseGameEvent(GameEvents.SetMonster, this, monster); } } }
private void OnSetMonster(object sender, GameEventArgs e) { Monster monster = e.Get <Monster>(); MonsterList.Add(monster); RaiseGameEvent(GameEvents.AddWorldEventText, this, monster.Name + ", a level " + monster.Stats.Level + " " + monster.Race + ", appeared!"); OnPropertyChange("Monster"); }
private void OnMonsterSelected(object sender, GameEventArgs e) { int targetIndex = e.Get <int>(); if (targetIndex >= 0 && targetIndex < MonsterList.Count) { selectedMonsterIndex = targetIndex; } // Force UI update for monster OnPropertyChange("Monster"); }
//------------------------------------------------------------------------------ // Private Functions: //------------------------------------------------------------------------------ #region eventHandlers private void OnHeroAttack(object sender, GameEventArgs e) { Monster monster = MonsterList[selectedMonsterIndex]; string damageDealtString = monster.Damage(e.Get <List <DamageArgs> >()); RaiseGameEvent(GameEvents.AddWorldEventText, this, "You attack the " + monster.Race + ". " + damageDealtString); ExecuteMonsterActions(); // Force UI update for monster OnPropertyChange("Monster"); }
private void OnPlayerExplore(object sender, GameEventArgs e) { WorldEvent worldEvent = CurrentZone.EventTable.GenerateObject(e.Get <Hero>()); RaiseGameEvent(worldEvent.EventType, this, worldEvent); }
private void OnWorldZoneDiscovery(object sender, GameEventArgs e) { WorldEvent worldEvent = e.Get <WorldEvent>(); NextZoneName = worldEvent.Name; }
private void OnSetWorldZone(object sender, GameEventArgs e) { SetZone(e.Get <string>()); }
//------------------------------------------------------------------------------ // Private Functions: //------------------------------------------------------------------------------ private void OnAddWorldEventText(object sender, GameEventArgs e) { worldEventsText.Add(e.Get <string>()); }