示例#1
0
        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);
                }
            }
        }
示例#2
0
        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");
        }
示例#3
0
        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");
        }
示例#4
0
        //------------------------------------------------------------------------------
        // 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");
        }
示例#5
0
        private void OnPlayerExplore(object sender, GameEventArgs e)
        {
            WorldEvent worldEvent = CurrentZone.EventTable.GenerateObject(e.Get <Hero>());

            RaiseGameEvent(worldEvent.EventType, this, worldEvent);
        }
示例#6
0
        private void OnWorldZoneDiscovery(object sender, GameEventArgs e)
        {
            WorldEvent worldEvent = e.Get <WorldEvent>();

            NextZoneName = worldEvent.Name;
        }
示例#7
0
 private void OnSetWorldZone(object sender, GameEventArgs e)
 {
     SetZone(e.Get <string>());
 }
示例#8
0
        //------------------------------------------------------------------------------
        // Private Functions:
        //------------------------------------------------------------------------------

        private void OnAddWorldEventText(object sender, GameEventArgs e)
        {
            worldEventsText.Add(e.Get <string>());
        }