private void Actor_PropTransferPerformed(object?sender, EventArgs e) { var serviceScope = ((LivGame)_game).ServiceProvider; var animationBlockerService = serviceScope.GetRequiredService <IAnimationBlockerService>(); var soundEffect = _personSoundStorage.GetActivitySound(PersonActivityEffectType.Transit); var stateEngine = new ActorCommonActionMoveEngine( _graphicsRoot.RootSprite, animationBlockerService, soundEffect?.CreateInstance()); AddStateEngine(stateEngine); }
private void PersonEquipmentModule_EquipmentChanged(object?sender, EquipmentChangedEventArgs e) { var serviceScope = ((LivGame)_game).ServiceProvider; var animationBlockerService = serviceScope.GetRequiredService <IAnimationBlockerService>(); var equipment = e.Equipment; var soundSoundEffect = SelectEquipEffect(equipment); var stateEngine = new ActorCommonActionMoveEngine(_graphicsRoot.RootSprite, animationBlockerService, soundSoundEffect?.CreateInstance()); AddStateEngine(stateEngine); }
private void Actor_UsedProp(object?sender, UsedPropEventArgs e) { var serviceScope = ((LivGame)_game).ServiceProvider; var animationBlockerService = serviceScope.GetRequiredService <IAnimationBlockerService>(); var visualizationContentStorage = serviceScope.GetRequiredService <IGameObjectVisualizationContentStorage>(); var consumableType = e.UsedProp.Scheme.Sid switch { "med-kit" or "gall-gland" => ConsumeEffectType.Heal, "water-bottle" or "vege-milk" => ConsumeEffectType.Drink, "packed-food" or "raw-meat" or "evil-pumpkin" => ConsumeEffectType.Eat, _ => ConsumeEffectType.UseCommon }; var soundEffect = _personSoundStorage.GetConsumePropSound(consumableType); var stateEngine = new ActorCommonActionMoveEngine(_graphicsRoot.RootSprite, animationBlockerService, soundEffect?.CreateInstance()); AddStateEngine(stateEngine); var hexSize = MapMetrics.UnitSize / 2; var actorNode = (HexNode)(Actor.Node); var playerActorWorldCoords = HexHelper.ConvertToWorld(actorNode.OffsetCoords.X, actorNode.OffsetCoords.Y); var actorPosition = new Vector2( (float)(playerActorWorldCoords[0] * hexSize * Math.Sqrt(3)), playerActorWorldCoords[1] * hexSize * 2 / 2 ); const int START_EFFECT_Y = 24; var consumeEffect = new ConsumingEffect( visualizationContentStorage, actorPosition - (Vector2.UnitY * START_EFFECT_Y), this, consumableType ); _sectorViewModelContext.EffectManager.VisualEffects.Add(consumeEffect); }