void Start() { if (MultiplayerManager.instance.isServer) { networkUid = ProjectileUtil.nextProjectileID; ProjectileUtil.nextProjectileID++; ProjectileData projectileData = new ProjectileData(networkUid, 0, (int)EnumData.Projectiles.DispersedFireBallMirrorKnight, transform.position, 0); ServerSideGameManager.projectilesDic.Add(networkUid, projectileData); } }
public void Initialise(TileBasedProjectileUse pU) { this.pU = pU; if (MultiplayerManager.instance.isServer && isServerNetworked) { networkUid = nextProjectileID; nextProjectileID++; ProjectileData projectileData = new ProjectileData(networkUid, pU.actorUsing.ownerId, (int)pU.projectileTypeThrown, pU.liveProjectile.transform.position, (int)pU.tileMovementDirection); if (pU.actorUsing != null) { if (pU.actorUsing is Hero serverHero) { if (pU.projectileTypeThrown == EnumData.Projectiles.TidalWave) { serverHero.tidalWaveUsedCount--; } else if (pU.projectileTypeThrown == EnumData.Projectiles.FlamePillar) { serverHero.flamePillarUsedCount--; } } } ServerSideGameManager.projectilesDic.Add(networkUid, projectileData); if (pU.projectileTypeThrown == EnumData.Projectiles.TidalWave || pU.projectileTypeThrown == EnumData.Projectiles.BubbleShield || pU.projectileTypeThrown == EnumData.Projectiles.MightyWind || pU.projectileTypeThrown == EnumData.Projectiles.MightyWindMirrorKnight || pU.projectileTypeThrown == EnumData.Projectiles.FlamePillar) { chainIDLinkedTo = ++GridManager.chainIDGlobal; } } else { if (pU.projectileTypeThrown == EnumData.Projectiles.FireBall) { if (pU.actorUsing != null) { if (pU.actorUsing is Hero serverHero) { serverHero.fireballUsedCount--; } } } } if (frameLooper != null) { if (isDynamicTravellingSprites) { switch (pU.actorUsing.Facing) { case FaceDirection.Up: frameLooper.UpdateSpriteArr(dynamicProjectileTravelUpSprite); break; case FaceDirection.Down: frameLooper.UpdateSpriteArr(dynamicProjectileTravelDownSprite); break; case FaceDirection.Right: frameLooper.UpdateSpriteArr(dynamicProjectileTravelRightSprite); break; case FaceDirection.Left: frameLooper.UpdateSpriteArr(dynamicProjectileTravelLeftSprite); break; } frameLooper.PlayOneShotAnimation(); } else { switch (pU.actorUsing.Facing) { case FaceDirection.Up: frameLooper.SetStaticFrame(projectileTravelUpSprite); break; case FaceDirection.Down: frameLooper.SetStaticFrame(projectileTravelDownSprite); break; case FaceDirection.Right: frameLooper.SetStaticFrame(projectileTravelRightSprite); break; case FaceDirection.Left: frameLooper.SetStaticFrame(projectileTravelLeftSprite); break; } } } }