コード例 #1
0
 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);
     }
 }
コード例 #2
0
        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;
                    }
                }
            }
        }