Ejemplo n.º 1
0
    private async void ActorOnUsedAct(object sender, UsedActEventArgs e)
    {
        await Task.Factory.StartNew(() =>
        {
            var actor = GetActorFromEventSender(sender);

            var actorHexNode  = actor.Node as HexNode;
            var targetHexNode = e.TargetNode as HexNode;

            // Визуализируем удар.
            var actorViewModel = ActorViewModels.Single(x => x.Actor == actor);

            var actEffect = e.TacticalAct.Stats.Effect;
            switch (actEffect)
            {
            case TacticalActEffectType.Damage:
                ProcessDamage(e.TargetNode, e.TacticalAct, actor, actorViewModel);
                break;

            case TacticalActEffectType.Heal:
                ProcessHeal(actorViewModel);
                break;

            case TacticalActEffectType.Undefined:
            default:
                throw new InvalidOperationException($"Неизвестный тип воздействия {actEffect}.");
            }
        }, CancellationToken.None, TaskCreationOptions.None, _taskScheduler);
    }
Ejemplo n.º 2
0
    private void CreateBullet(IActor actor, IGraphNode targetNode)
    {
        var actorViewModel = ActorViewModels.Single(x => x.Actor == actor);

        var targetActorViewModel        = ActorViewModels.SingleOrDefault(x => x.Actor.Node == targetNode);
        var targetStaticObjectViewModel = _staticObjectViewModels.SingleOrDefault(x => x.StaticObject.Node == targetNode);
        var canBeHitViewModel           = (ICanBeHitSectorObject)targetActorViewModel ?? targetStaticObjectViewModel;

        var bulletTracer = Instantiate(GunShootTracer, transform);

        bulletTracer.FromPosition   = actorViewModel.transform.position;
        bulletTracer.TargetPosition = canBeHitViewModel.Position;
    }
Ejemplo n.º 3
0
    private void Actor_DepositMined(object sender, MineDepositEventArgs e)
    {
        var actor = GetActorFromEventSender(sender);

        var depositViewModel = _staticObjectViewModels.Single(x => x.StaticObject == e.Deposit);
        var actorViewModel   = ActorViewModels.Single(x => x.Actor == actor);

        actorViewModel.GraphicRoot.ProcessMine(depositViewModel.transform.position);

        var propContainer = e.Deposit.GetModule <IPropContainer>();

        if (e.Result is SuccessMineDepositResult)
        {
            ShowFoundPropsModalOrNotFound(actor, propContainer);
        }
    }