// Token: 0x06002339 RID: 9017 RVA: 0x0040E770 File Offset: 0x0040C970 public FlyingObject addFlyingObject(FOKind kind, Vector3 begin, Transform end, float ms, Vector3 offset, Transform scaleRoot = null, ChaseType CurveType = ChaseType.CurveA, GameObject particle = null) { FlyingObject flyingObject = null; List <FlyingObject> list = this.freeList[(int)kind]; if (list.Count > 0) { flyingObject = list[list.Count - 1]; list.RemoveAt(list.Count - 1); } if (kind == FOKind.LightBall) { scaleRoot = null; } if (flyingObject != null) { if (flyingObject.SourceObj != null) { flyingObject.SourceObj.SetActive(true); } else if (particle != null) { particle.transform.position = Vector3.zero; particle.transform.parent = this.renderRoot; flyingObject.SourceObj = particle; } flyingObject.AddFlyingObject(begin, end, ms, offset, scaleRoot, CurveType); this.workingList.Add(flyingObject); } return(flyingObject); }
// Token: 0x0600239D RID: 9117 RVA: 0x00412BE0 File Offset: 0x00410DE0 public override void FireRange(ArmyGroup targetGroup, FlyingObjectManager mgr, FOKind kind, float ms, ushort skillID, byte param = 0) { if (this.Target.GroupKind != EGroupKind.CastleGate && param > 0 && param <= 4) { int currentSoldierCount = this.Target.CurrentSoldierCount; for (int i = 0; i < 5; i++) { Vector3 begin = this.towerFirePoint[(int)(param - 1)] + this.towerFireOffset[i]; int num = (i < currentSoldierCount) ? i : (currentSoldierCount - 1); mgr.addFlyingObject(kind, begin, this.Target.soldiers[num].transform, ms, new Vector3(0f, 1f, 0f), null, ChaseType.Straight, null); } } }
// Token: 0x06002337 RID: 9015 RVA: 0x0040E584 File Offset: 0x0040C784 private void initFlyingObject(FOKind foKind, ushort objKind, string filename, int count, int ambient) { if (count <= 0) { return; } GameObject gameObject = null; AssetBundle assetBundle = null; if (objKind == 0) { if (filename != string.Empty) { this.StringInstance.Length = 0; this.StringInstance.AppendFormat("Role/{0}", filename); assetBundle = AssetManager.GetAssetBundle(this.StringInstance.ToString(), 0L); gameObject = (assetBundle.mainAsset as GameObject); MeshRenderer component = gameObject.GetComponent <MeshRenderer>(); component.material = SheetAnimInfo.GetMaterial(ESheetMeshTexKind.WAR_BLUE); component.renderer.lightmapIndex = ambient; MeshFilter component2 = gameObject.GetComponent <MeshFilter>(); } } else { gameObject = this.particleMgr.SpawnWithoutManager(objKind); } List <FlyingObject> list = this.freeList[(int)foKind]; for (int i = 0; i < count; i++) { GameObject gameObject2 = null; if (gameObject != null) { gameObject2 = (UnityEngine.Object.Instantiate(gameObject) as GameObject); gameObject2.transform.position = Vector3.zero; gameObject2.transform.parent = this.renderRoot; gameObject2.SetActive(false); } list.Add(new FlyingObject { SourceObj = gameObject2, foKind = foKind }); } this.bundleList[(int)foKind] = assetBundle; }
// Token: 0x060022B3 RID: 8883 RVA: 0x0040A27C File Offset: 0x0040847C public virtual void FireRange(ArmyGroup targetGroup, FlyingObjectManager mgr, FOKind kind, float ms, ushort skillID, byte param = 0) { ushort num = this.heroSoldierFO; if (skillID <= 7 && this.soldiers != null && !this.bNpcMode) { for (int i = 0; i < this.CurrentSoldierCount; i++) { Soldier soldier = this.soldiers[i]; if (targetGroup.GroupKind != EGroupKind.CastleGate) { Transform end = (soldier.Target == null) ? targetGroup.groupRoot : soldier.Target.transform; mgr.addFlyingObject(kind, soldier.RangeFirePoint, end, ms, new Vector3(0f, 1f, 0f), null, ChaseType.CurveA, null); } else { float y = UnityEngine.Random.Range(5f, 10f); Vector3 vector = new Vector3(-3f, y, soldier.transform.position.z - 15f) + this.GetRandVector3(2f); mgr.addFlyingObject(kind, soldier.RangeFirePoint, this.Target.groupRoot, ms, vector, null, ChaseType.CurveA, null); if (soldier.hitParticleCount < 2) { soldier.hitParticlePos[(int)soldier.hitParticleCount] = this.Target.groupRoot.position + vector; Soldier soldier2 = soldier; soldier2.hitParticleCount += 1; } } } } if (this.heroSoldier != null) { Soldier soldier3 = this.heroSoldier; Transform modelTrans = ((Lord)this.heroSoldier).modelTrans; bool flag = !this.bAttackMode && this.hasLord; if (targetGroup.GroupKind != EGroupKind.CastleGate) { if (skillID <= 7 && this.heroSoldierFO != 0 && this.GroupKind != EGroupKind.Catapults && !flag) { Transform end2 = (soldier3.Target == null) ? targetGroup.groupRoot : soldier3.Target.transform; mgr.addFlyingObject((FOKind)(this.heroSoldierFO - 1), soldier3.RangeFirePoint, end2, ms, new Vector3(0f, 1f, 0f), modelTrans, ChaseType.CurveA, null); } else if (skillID > 7 && this.heroSoldierSkillFO != 0) { Transform end3 = (soldier3.Target == null) ? targetGroup.groupRoot : soldier3.Target.transform; Skill recordByKey = DataManager.Instance.SkillTable.GetRecordByKey(skillID); GameObject gameObject = this.particleManager.Spawn(this.heroSoldierSkillFO, null, Vector3.zero, 1f, true, false); if (gameObject != null) { ChaseType curveType = (recordByKey.FlyType != 1) ? ChaseType.Straight : ChaseType.CurveA; mgr.addFlyingObject(FOKind.FreeParticle, soldier3.RangeFirePoint, end3, ms, new Vector3(0f, 1f, 0f), modelTrans, curveType, gameObject); } } } else if (skillID <= 7 && this.heroSoldierFO != 0) { float y2 = UnityEngine.Random.Range(5f, 10f); Vector3 vector2 = new Vector3(-3f, y2, soldier3.transform.position.z - 15f); mgr.addFlyingObject((FOKind)(this.heroSoldierFO - 1), soldier3.RangeFirePoint, this.Target.groupRoot, ms, vector2, modelTrans, ChaseType.CurveA, null); if (soldier3.hitParticleCount < 2) { soldier3.hitParticlePos[(int)soldier3.hitParticleCount] = this.Target.groupRoot.position + vector2; Soldier soldier4 = soldier3; soldier4.hitParticleCount += 1; } } else if (skillID > 7 && this.heroSoldierSkillFO != 0) { float y3 = UnityEngine.Random.Range(5f, 10f); Vector3 b = new Vector3(-3f, y3, soldier3.transform.position.z - 15f); Skill recordByKey2 = DataManager.Instance.SkillTable.GetRecordByKey(skillID); GameObject gameObject2 = this.particleManager.Spawn(this.heroSoldierSkillFO, null, Vector3.zero, 1f, true, false); if (gameObject2 != null) { ChaseType curveType2 = (recordByKey2.FlyType != 1) ? ChaseType.Straight : ChaseType.CurveA; mgr.addFlyingObject(FOKind.FreeParticle, soldier3.RangeFirePoint, this.Target.groupRoot, ms, new Vector3(0f, 1f, 0f), modelTrans, curveType2, gameObject2); } if (soldier3.hitParticleCount < 2) { soldier3.hitParticlePos[(int)soldier3.hitParticleCount] = this.Target.groupRoot.position + b; Soldier soldier5 = soldier3; soldier5.hitParticleCount += 1; } } } }