示例#1
0
        void controllerBehavior_OnEnter(object sender, GameEventArgs e)
        {
            var beh = (InputBehavior)sender;

            _player2 = new Player2 {
                Position = Position + new Vector2(Size.X), CurrentLevel = CurrentLevel
            };

            if (!e.Level.Map.Collides(_player2.CollisionRect) && !e.Level.CollidesWith(_player2.CollisionRect, true).Any())
            {
                _player2.Health.ValueChanged += Health_ValueChanged;

                RemoveBehavior(beh);
                _player2.RemoveBehaviors(b => b is InputBehavior);
                _player2.AddBehavior(beh);
                e.Level.AddEntity(_player2);
                beh.OnEnter -= controllerBehavior_OnEnter;
                var oldHealth = Health.Quantity;

                LevelCollection.CloneWaypoints(this, _player2);

                if (Weapons != null)
                {
                    foreach (var weapon in Weapons)
                    {
                        _player2.AddWeapon(GameStateManager.WeaponFactory[weapon.GetType().Name]());
                    }
                }

                foreach (var ctn in Containers)
                {
                    _player2.Containers[ctn.Key].Quantity = ctn.Key == "Magic" ? ctn.Value.Quantity : ctn.Value.Quantity / 2;
                }

                Health.Quantity         /= 2;
                _player2.Health.Quantity = oldHealth - Health.Quantity;
                if (Health.Quantity <= 0)
                {
                    Health.Quantity = 1;
                }
                if (_player2.Health.Quantity <= 0)
                {
                    _player2.Health.Quantity = 1;
                }

                _controller2Behavior = null;
                _keyboardBehavior    = null;
            }
        }
示例#2
0
        void controllerBehavior_OnEnter(object sender, GameEventArgs e)
        {
            var beh = (InputBehavior)sender;
            //TODO: criar entidade e adicionar este behavior na próxima
            var p2 = new Player {
                Position = Position + new Vector2(Size.X), CurrentLevel = CurrentLevel
            };

            if (!e.Level.Map.Collides(p2.CollisionRect) && !e.Level.CollidesWith(p2.CollisionRect, true).Any())
            {
                RemoveBehavior(beh);
                p2.RemoveBehaviors(b => b is InputBehavior);
                p2.AddBehavior(beh);
                e.Level.AddEntity(p2);
                beh.OnEnter -= controllerBehavior_OnEnter;
                var oldHealth = Health.Quantity;
                Health.Quantity   /= 2;
                p2.Health.Quantity = oldHealth - Health.Quantity;
                LevelCollection.CloneWaypoints(this, p2);
            }
        }