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; } }
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); } }