示例#1
0
文件: Mob.cs 项目: geosohal/Mmo
        public void CheckCollisions(float elapsedSeconds, SendParameters sp, MmoPeer serverPeer)
        {
            if (mobItem.Disposed)
            {
                return;
            }

            float radius = GlobalVars.swarmShipRadius;

            if ((type == BotType.Swarm) || type == BotType.FastSwarm)
            {
                radius = GlobalVars.swarmShipRadius;
            }
            else if (type == BotType.Mother)
            {
                radius = GlobalVars.motherShipRadius;
            }
            float radiusSq = radius * radius;

            foreach (Item regionItem in mobItem.CurrentWorldRegion.myitems)
            {
                //  if (regionItem.Type == (byte)ItemType.Bullet)
                //       GlobalVars.log.InfoFormat("mob col check w " + regionItem.Id.ToString());
                if (CollisionHelper.CheckItemCollisionAgainstProjectile(mobItem, regionItem,
                                                                        ref this.hp, sp, (MmoActorOperationHandler)BotManager.serverPeer.CurrentOperationHandler, radiusSq, radius))
                {
                    // check if mob is dead
                    if (this.hp <= 0)
                    {
                        GlobalVars.log.InfoFormat("mob killed " + mobItem.Id);
                        DestroyMob();
                    }
                    else
                    {
                        if ((byte)regionItem.Type == (byte)ItemType.Bullet)
                        {
                            if (!regionItem.Owner.isBotMan)
                            {
                                ChangeToChaseState((MmoActor)regionItem.Owner);
                            }
                        }
                    }
                }
            }
        }
示例#2
0
        public static void InitializeManager(World world, SendParameters sp)
        {
            Sp               = sp;
            IsInitialized    = true;
            BotManager.world = world;
            DummyPeer dp          = new DummyPeer(SocketServer.Protocol.GpBinaryV162, "botmn");
            var       initRequest = new InitRequest(SocketServer.Protocol.GpBinaryV162, dp);

            serverPeer = new MmoPeer(initRequest);
            serverPeer.Initialize(initRequest);
            GlobalVars.log.InfoFormat("initializing bot man");
            timeTillMotherSpawn = 0;
            // enter world with delay, just seems safer
            timer          = new System.Timers.Timer();
            timer.Elapsed += new System.Timers.ElapsedEventHandler(EnterWorld);
            timer.Interval = 500; // 500ms
            timer.Enabled  = true;
        }