示例#1
0
文件: Button.cs 项目: GarethIW/Fodder
        public void ActivateFunction(Dude d)
        {
            if (SoulButton==0 && _currentCDTime <= 0)
            {
                switch (Function)
                {
                    case "boost":
                        d.BoostTime = 5000;
                        _currentCDTime = _actualCDTime;
                        break;
                    case "shield":
                        d.ShieldTime = 10000;
                        _currentCDTime = _actualCDTime;
                        break;

                    default:
                        if (d.Weapon.GetType() == typeof(Weapons.Sword))
                        {
                            d.GiveWeapon(Function);
                            _currentCDTime = _actualCDTime;
                        }
                        break;
                }
            }

            if(SoulButton>0 && _currentCDTime >= _actualCDTime)
            {
                switch (Function)
                {
                    case "haste":
                        GameSession.Instance.ButtonController.HasteTime = 30000;
                        break;
                    case "meteors":
                        GameSession.Instance.SoulController.AirStrike(GameSession.Instance.Team1ClientType == GameClientType.Human ? 0 : 1);
                        break;
                    case "elite":
                        GameSession.Instance.SoulController.EliteSquad(GameSession.Instance.Team1ClientType == GameClientType.Human ? 0 : 1);
                        break;
                }

                if (GameSession.Instance.Team1ClientType == GameClientType.Human) GameSession.Instance.Team1SoulCount -= (int)_actualCDTime * SoulButton;
                if (GameSession.Instance.Team2ClientType == GameClientType.Human) GameSession.Instance.Team2SoulCount -= (int)_actualCDTime * SoulButton;
            }
        }
示例#2
0
        private void ActivateFunction(AIAction a, Dude d)
        {
            if (a.CurrentCooldown <= 0)
            {
                a.CurrentCooldown = a.MaxCooldown;

                switch (a.Function)
                {
                    case "boost":
                        d.BoostTime = 5000;
                        break;
                    case "shield":
                        d.ShieldTime = 10000;
                        break;
                    default:
                        d.GiveWeapon(a.Function);
                        break;
                }
            }
        }
示例#3
0
        private void PropogateShield(Dude d)
        {
            if (!d.Active) return;

            foreach (Dude t in Dudes)
            {
                if (!t.Active) continue;
                if (d.Team != t.Team) continue;

                if ((d.Position - t.Position).Length() <= 300)
                    t.IsShielded = true;
            }
        }
示例#4
0
        public void LoadContent(ContentManager content)
        {
            _texDude = content.Load<Texture2D>("dude");

            for (int i = 0; i < MAX_DUDES; i++)
                Dudes[i] = new Dude(_texDude);
        }
示例#5
0
        public Dude EnemyInRange(Dude owner, float range, bool checkLOS)
        {
            Dude returnDude = null;

            foreach (Dude d in Dudes)
            {
                if (!d.Active) continue;

                if (owner == d) continue;

                if (owner.Team == d.Team) continue;

                if (owner.Position.X > d.Position.X && owner.PathDirection == 1) continue;
                if (owner.Position.X < d.Position.X && owner.PathDirection == -1) continue;

                float distance = (owner.Position - d.Position).Length();

                if (distance > range) continue;

                if (checkLOS && distance>20)
                {
                    Vector2 testVect = owner.WeaponPosition;
                    float amount = 0f;

                    while ((testVect - d.HitPosition).Length() > 2f)
                    {
                        if (GameSession.Instance.Map.TryGetPath((int)testVect.X, (int)testVect.Y) - 10 < testVect.Y) break;

                        testVect = Vector2.Lerp(owner.WeaponPosition, d.HitPosition, amount);
                        amount += 0.01f;
                    }
                    if ((testVect - d.HitPosition).Length() <= 2f) returnDude = d;
                }
                else returnDude = d;

            }

            return returnDude;
        }
示例#6
0
 public void DudeClicked(Dude d)
 {
     foreach (Button b in Buttons)
         if (b.IsSelected) b.ActivateFunction(d);
 }