Esempio n. 1
0
 public void Update()
 {
     this._curInterval += Time.deltaTime;
     this._curTime     += Time.deltaTime;
     if (this._curTime >= this._data.Dur)
     {
         this.DoCallbacks();
         GameObject.Destroy(this);
     }
     else
     {
         if (this._curInterval >= this._data.Interval)
         {
             this._curInterval = 0;
             var swarm = new GameObject();
             this._data.Swarm.Add(swarm);
             var renderer = swarm.AddComponent <SpriteRenderer>();
             renderer.sprite          = this._data.Sprite;
             swarm.transform.position = RandomPositionOffset.RandomOffset(
                 this._data.Target,
                 this._data.MaxOffset);
             renderer.sortingLayerName = SortingLayers.PARTICLES;
             renderer.sortingOrder--;
             var raycastData = new SRaycastMoveData();
             raycastData.Epsilon = 0.05f;
             raycastData.Handle  = swarm;
             raycastData.Speed   = 8f;
             raycastData.Target  = RandomPositionOffset.RandomOffset(
                 this._data.Target,
                 0.3f);
             var raycast = swarm.AddComponent <SRaycastMove>();
             raycast.Init(raycastData);
         }
     }
 }
Esempio n. 2
0
        public void Init(GameObject source, CChar character)
        {
            this._handle = source;
            var sourceTile = character.Tile;
            var landTile   = character.Tile.GetRandomNearbyTile(5);
            var pos        = RandomPositionOffset.RandomOffset(landTile.Center, CombatGUIParams.DEFAULT_OFFSET);
            var data       = new SRaycastMoveData();

            data.Epsilon = FatalityParams.DEFAULT_EPSILON;
            data.Handle  = source;
            data.Speed   = FatalityParams.FIGHTING_SPEED;
            data.Target  = pos;
            var move = source.AddComponent <SRaycastMove>();

            RotateTranslateUtil.Instance.RandomRotate(source);
            move.AddCallback(this.SetDeadLayer);
            move.Init(data);
            source.transform.SetParent(landTile.Handle.transform);
        }
Esempio n. 3
0
        private void DisplayDodge(CChar target, MHit hit)
        {
            var dodge    = target.GameHandle.AddComponent <SBoomerang>();
            var dodgeTgt = ListUtil <CTile> .GetRandomElement(target.Tile.GetAdjacent());

            var position = Vector3.Lerp(target.GameHandle.transform.position, dodgeTgt.Model.Center, CombatGUIParams.DODGE_LERP);

            position = RandomPositionOffset.RandomOffset(position, CombatGUIParams.DEFAULT_OFFSET);
            dodge.AddCallback(hit.CallbackHandler);
            dodge.Init(target.GameHandle, position, CombatGUIParams.DODGE_SPEED);
            var data = new HitDisplayData();

            data.Color    = CombatGUIParams.WHITE;
            data.Hit      = hit;
            data.Priority = ViewParams.DODGE_PRIORITY;
            data.Text     = "Dodge";
            data.Target   = target.GameHandle;
            data.YOffset  = CombatGUIParams.FLOAT_OFFSET;
            data.Hit.AddDataDisplay(data);
        }
Esempio n. 4
0
        private void ProcessHead(object o)
        {
            foreach (var hit in this._data.FatalHits)
            {
                if (hit.Data.Target.Current != null &&
                    hit.Data.Target.Current.GetType().Equals(typeof(CChar)))
                {
                    var tgt = this._data.Target.Current as CChar;
                    if (tgt.Proxy.Type == ECharType.Humanoid)
                    {
                        VCharUtil.Instance.ProcessDeadChar(tgt);

                        var body = tgt.SubComponents[SortingLayers.CHAR_MAIN];
                        var data = new EvSplatterData();
                        data.DmgPercent = 1;
                        data.Fatality   = true;
                        data.Target     = body;
                        new EvSplatter(data);

                        var head    = tgt.SubComponents[SortingLayers.CHAR_HEAD];
                        var tgtTile = tgt.Tile;
                        var tgtPos  = RandomPositionOffset.RandomOffset(
                            tgtTile.Handle.transform.position,
                            FatalityParams.SLASH_HEAD_OFFSET);
                        head.transform.SetParent(tgtTile.Handle.transform);

                        var spinData = new SRotationData();
                        spinData.Speed  = (float)(FatalityParams.SLASH_ROTATION_SPEED * RNG.Instance.NextDouble());
                        spinData.Target = head;
                        var spinRight = RNG.Instance.RandomNegOrPos();
                        if (spinRight > 0)
                        {
                            spinData.SpinRight = true;
                        }
                        var spin = head.AddComponent <SRotation>();
                        spin.Init(spinData);

                        var raycastData = new SRaycastMoveData();
                        raycastData.Epsilon = FatalityParams.DEFAULT_EPSILON;
                        raycastData.Handle  = head;
                        raycastData.Speed   = FatalityParams.SLASH_RAYCAST_SPEED;
                        raycastData.Target  = tgtPos;
                        var raycast = head.AddComponent <SRaycastMove>();
                        this.AttachBlood(head, tgt.GameHandle);

                        raycast.AddCallback(this.AddBloodPool);
                        raycast.AddCallback(spin.Done);

                        var callbackDelay = head.AddComponent <SDelayCallback>();
                        callbackDelay.AddCallback(this.CallbackHandler);
                        callbackDelay.AddCallback(hit.CallbackHandler);
                        callbackDelay.Init(FatalityParams.DEFAULT_DUR);

                        raycast.Init(raycastData);
                    }
                    else
                    {
                        VHitController.Instance.ProcessDefenderHit(hit);
                    }
                }
            }
        }