Beispiel #1
0
        void link_Died(Mob deadGuy)
        {
            Pause();
            List <Locateable> oldMap = new List <Locateable>();

            foreach (Locateable loc in link.Map)
            {
                oldMap.Add(loc);
            }
            int          r      = rand.Next(0, oldMap.Count);
            Vector       newPos = new Vector(oldMap[r].Position.X, oldMap[r].Position.Y);
            DialogResult dr     = MessageBox.Show(deadGuy.Name + " has just died!");

            if (dr == DialogResult.OK)
            {
                link = new Mob("link", newPos, animations["linkNone"],
                               animations["linkMove"], animations["linkMelee"], null,
                               MobType.Human, newPos, 500, 10, 5, 5, 300);
                link.Sense(oldMap);
                Sword sw = new Sword("long sword", new Vector(0, 0), null, 10);
                link.Inventory.Add(sw);
                link.EquippedWeapon    = sw;
                link.MeleeCombatEnded += m_MeleeCombatEnded;
                link.Died             += link_Died;
                Play();
            }
        }
Beispiel #2
0
        void tmr_Tick(object sender, EventArgs e)
        {
            CheckProjectileCollisions();
            RemoveDeadGuys();// remove dead mobs before they sense/react to anything...
            RemoveDeadProjectiles();
            CheckForLoot();
            foreach (Mob m in monsters)
            {
                List <Locateable> thingsICanSee = FindAllLocateablesInRadius(m);
                m.Sense(thingsICanSee);
                List <Mob> mobsICanSee = FindAllMobsInRadius(m);
                m.Sense(mobsICanSee);
                MobAction act = m.React(1.0);
            }
            List <Locateable> thingsLinkCanSee = FindAllLocateablesInRadius(link);

            link.Sense(thingsLinkCanSee);
            List <Mob> mobsLinkCanSee = FindAllMobsInRadius(link);

            link.Sense(mobsLinkCanSee);
            MobAction actLink = link.React(1.0);

            foreach (Projectile proj in projectiles)
            {
                proj.Move(1.0);
            }

            GameInfo gi = new GameInfo();

            gi.Link        = link;
            gi.Monsters    = link.Contacts;
            gi.Map         = link.Map;
            gi.Projectiles = projectiles;
            gi.Msg         = obituary;

            if (Update != null)
            {   // Notify the Form that the Game status has changed...
                Update(gi);
            }
            obituary = "";// clear out the obituary for the next round of deaths to come
        }