private void ProcessSlime(object o) { var script = o as SAttackerJolt; var slimeSprite = CharSpriteLoader.Instance.GetFatalitySprite(SLIME); var slime = new GameObject(); var renderer = slime.AddComponent <SpriteRenderer>(); renderer.sprite = slimeSprite; renderer.sortingLayerName = SortingLayers.PARTICLES; var position = script.Action.Data.Target.Handle.transform.position; position.y += 10; slime.transform.position = position; slime.transform.SetParent(script.Action.Data.Target.Handle.transform); slime.transform.localScale = new Vector3(3, 3, 3); var move = slime.AddComponent <SRaycastMoveThenDelete>(); var data = new SRaycastMoveData(); data.Handle = slime; data.Speed = 3.5f; data.Target = script.Action.Data.Target.Handle.transform.position; move.AddCallback(this.ProcessEnd); move.AddObjectToList(script); move.Init(data); }
private GameObject GetDeleteRay(MAction a, Vector3 tgt, Callback callback, GameObject bullet, float speed) { var data = new SRaycastMoveData(); data.Epsilon = CombatGUIParams.DEFAULT_EPSILON; data.Handle = bullet; data.Speed = speed; data.Target = tgt; var script = bullet.AddComponent <SBulletThenDelete>(); script.Action = a; script.Init(data); script.AddCallback(callback); return(bullet); }
private GameObject GetDeleteBullet(MHit hit, Callback callback, GameObject bullet, float speed) { var data = new SRaycastMoveData(); data.Epsilon = CombatGUIParams.DEFAULT_EPSILON; data.Handle = bullet; data.Speed = speed; data.Target = hit.Data.Target.Handle.transform.position; var script = bullet.AddComponent <SBulletThenDelete>(); script.Action = hit.Data.Action; script.Init(data); script.AddCallback(callback); return(bullet); }
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); }
private void InitCharge(MAction a) { VCharUtil.Instance.AssignPlusLayer(a.Data.Source); var bob = a.Data.Source.GameHandle.GetComponent <SBob>(); if (bob != null) { GameObject.Destroy(bob); } var data = new SRaycastMoveData(); data.Epsilon = 0.15f; data.Handle = a.Data.Source.GameHandle; data.Speed = 3f; data.Target = a.Data.Target.Handle.transform.position; var script = a.Data.Source.GameHandle.AddComponent <SRaycastMove>(); script.Init(data); script.AddObjectToList(a); script.AddCallback(this.ChargeDone); }
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); } } } }