Exemplo n.º 1
0
 public static void SpawnItemCommand(SpawnItemCommand spawnItemCommand)
 {
     using (Packet packet = new Packet((int)ClientPackets.playerSpawnItemCommand))
     {
         packet.Write(spawnItemCommand.spawnCell);
         packet.Write(spawnItemCommand.direction);
         packet.Write(spawnItemCommand.spawnItemType);
         packet.Write(spawnItemCommand.sequenceNumber);
         SendTCPData(packet);
     }
 }
        public static void PlayerSpawnItemCommand(int fromClient, Packet packet)
        {
            Vector3Int spawnCell      = packet.ReadVector3Int();
            int        direction      = packet.ReadInt();
            int        spawnItemType  = packet.ReadInt();
            int        sequenceNumber = packet.ReadInt();

            SpawnItemCommand spawnItemCommand = new SpawnItemCommand(sequenceNumber, direction, spawnItemType, spawnCell);

            Server.clients[fromClient].serverMasterController.AccumulateSpawnItemCommandsToBePlayedOnServerFromClient(spawnItemCommand);
        }
Exemplo n.º 3
0
        public void SpawnServerProjectiles()
        {
            if (itemToCast.usableItemType == EnumData.UsableItemTypes.TidalWave)
            {
                SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, GridManager.instance.grid.WorldToCell(actorTransform.position));
                ClientSend.SpawnItemCommand(spawnItemCommand);
                isFiringServerProjectiles = true;
                onCompletedMotionToPoint  = () => { isFiringServerProjectiles = false; onCompletedMotionToPoint = null; };
            }
            else if (itemToCast.usableItemType == EnumData.UsableItemTypes.BubbleShield)
            {
                if (bubbleShieldAttackReady)
                {
                    waitingActionForBubbleShieldItemMove.ReInitialiseTimerToBegin(GameConfig.bubbleShieldItemMoveAttackRateTickRate);

                    SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, GridManager.instance.grid.WorldToCell(actorTransform.position));
                    ClientSend.SpawnItemCommand(spawnItemCommand);

                    isFiringServerProjectiles = true;
                    onCompletedMotionToPoint  = () => { isFiringServerProjectiles = false; onCompletedMotionToPoint = null; };
                }
            }
            else if (itemToCast.usableItemType == EnumData.UsableItemTypes.MightyWind)
            {
                if (IsHeroAbleToFireProjectiles())
                {
                    SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, GridManager.instance.grid.WorldToCell(actorTransform.position));
                    ClientSend.SpawnItemCommand(spawnItemCommand);

                    isFiringServerProjectiles = true;
                    onCompletedMotionToPoint  = () => { isFiringServerProjectiles = false; onCompletedMotionToPoint = null; };
                }
            }
            else if (itemToCast.usableItemType == EnumData.UsableItemTypes.FlamePillar)
            {
                if (IsHeroAbleToFireProjectiles())
                {
                    SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, GridManager.instance.grid.WorldToCell(actorTransform.position));
                    ClientSend.SpawnItemCommand(spawnItemCommand);
                    isFiringServerProjectiles = true;
                    onCompletedMotionToPoint  = () => { isFiringServerProjectiles = false; onCompletedMotionToPoint = null; };
                }
            }
        }
Exemplo n.º 4
0
 public void SpawnItem()
 {
     if (itemToCast.usableItemType == EnumData.UsableItemTypes.Minion)
     {
         Vector3Int cellToCheckFor = GridManager.instance.grid.WorldToCell(actorTransform.position + GridManager.instance.GetFacingDirectionOffsetVector3(Facing));
         if (!GridManager.instance.IsCellBlockedForSpawnObjectPlacementAtPos(cellToCheckFor) && !GridManager.instance.HasTileAtCellPoint(cellToCheckFor, EnumData.GameObjectEnums.BoulderAppearing, EnumData.GameObjectEnums.BoulderDisappearing))
         {
             //send command to server of placement
             SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, cellToCheckFor);
             ClientSend.SpawnItemCommand(spawnItemCommand);
         }
     }
     else if (itemToCast.usableItemType == EnumData.UsableItemTypes.PermamnentBlock)
     {
         Vector3Int cellToCheckFor = GridManager.instance.grid.WorldToCell(actorTransform.position + GridManager.instance.GetFacingDirectionOffsetVector3(Facing));
         if (!GridManager.instance.IsCellBlockedForSpawnObjectPlacementAtPos(cellToCheckFor) && !GridManager.instance.HasTileAtCellPoint(cellToCheckFor, EnumData.GameObjectEnums.BoulderAppearing, EnumData.GameObjectEnums.BoulderDisappearing))
         {
             //send command to server of placement
             SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, cellToCheckFor);
             ClientSend.SpawnItemCommand(spawnItemCommand);
         }
     }
     else if (itemToCast.usableItemType == EnumData.UsableItemTypes.CereberausHead)
     {
         Vector3Int cellToCheckFor = GridManager.instance.grid.WorldToCell(actorTransform.position + GridManager.instance.GetFacingDirectionOffsetVector3(Facing));
         if (!GridManager.instance.IsCellBlockedForSpawnObjectPlacementAtPos(cellToCheckFor) && !GridManager.instance.HasTileAtCellPoint(cellToCheckFor, EnumData.GameObjectEnums.BoulderAppearing, EnumData.GameObjectEnums.BoulderDisappearing))
         {
             //send command to server of placement
             SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, cellToCheckFor);
             ClientSend.SpawnItemCommand(spawnItemCommand);
         }
     }
     else if (itemToCast.usableItemType == EnumData.UsableItemTypes.Boulder)
     {
         Vector3Int cellToCheckFor = GridManager.instance.grid.WorldToCell(actorTransform.position + GridManager.instance.GetFacingDirectionOffsetVector3(Facing));
         if (!GridManager.instance.IsCellBlockedForSpawnObjectPlacementAtPos(cellToCheckFor) && !GridManager.instance.HasTileAtCellPoint(cellToCheckFor, EnumData.TileType.NoBoulder) && !GridManager.instance.HasTileAtCellPoint(cellToCheckFor, EnumData.GameObjectEnums.BoulderAppearing))
         {
             //send command to server of placement
             SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, cellToCheckFor);
             ClientSend.SpawnItemCommand(spawnItemCommand);
         }
     }
     else if (itemToCast.usableItemType == EnumData.UsableItemTypes.ArrowDirectional)
     {
         Vector3Int cellToCheckFor = GridManager.instance.grid.WorldToCell(actorTransform.position + GridManager.instance.GetFacingDirectionOffsetVector3(Facing));
         if (!GridManager.instance.IsCellBlockedForSpawnObjectPlacementAtPos(cellToCheckFor) && !GridManager.instance.HasTileAtCellPoint(cellToCheckFor, EnumData.GameObjectEnums.BoulderAppearing))
         {
             //send command to server of placement
             SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, cellToCheckFor);
             ClientSend.SpawnItemCommand(spawnItemCommand);
         }
     }
     else if (itemToCast.usableItemType == EnumData.UsableItemTypes.MirrorItem)
     {
         Vector3Int cellToCheckFor = GridManager.instance.grid.WorldToCell(actorTransform.position + GridManager.instance.GetFacingDirectionOffsetVector3(Facing));
         if (!GridManager.instance.IsCellBlockedForSpawnObjectPlacementAtPos(cellToCheckFor) && !GridManager.instance.HasTileAtCellPoint(cellToCheckFor, EnumData.GameObjectEnums.BoulderAppearing))
         {
             //send command to server of placement
             SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, cellToCheckFor);
             ClientSend.SpawnItemCommand(spawnItemCommand);
         }
     }
     else if (itemToCast.usableItemType == EnumData.UsableItemTypes.GorgonGlass)
     {
         Vector3Int cellToCheckFor = GridManager.instance.grid.WorldToCell(actorTransform.position + GridManager.instance.GetFacingDirectionOffsetVector3(Facing));
         if (!GridManager.instance.IsCellBlockedForSpawnObjectPlacementAtPos(cellToCheckFor) && !GridManager.instance.HasTileAtCellPoint(cellToCheckFor, EnumData.GameObjectEnums.BoulderAppearing))
         {
             //send command to server of placement
             SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, cellToCheckFor);
             ClientSend.SpawnItemCommand(spawnItemCommand);
         }
     }
     else if (itemToCast.usableItemType == EnumData.UsableItemTypes.Pitfall)
     {
         Vector3Int cellToCheck = GridManager.instance.grid.WorldToCell(actorTransform.position + 2 * GridManager.instance.GetFacingDirectionOffsetVector3(Facing));
         if (GridManager.instance.HasTileAtCellPoint(cellToCheck, EnumData.TileType.Normal))
         {
             SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, Vector3Int.zero);
             ClientSend.SpawnItemCommand(spawnItemCommand);
         }
     }
     else if (itemToCast.usableItemType == EnumData.UsableItemTypes.Earthquake)
     {
         SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, Vector3Int.zero);
         ClientSend.SpawnItemCommand(spawnItemCommand);
     }
     else if (itemToCast.usableItemType == EnumData.UsableItemTypes.Tornado)
     {
         Vector3Int cellToCheck = GridManager.instance.grid.WorldToCell(actorTransform.position + GridManager.instance.GetFacingDirectionOffsetVector3(Facing));
         if (!GridManager.instance.IsCellBlockedForSpawnObjectPlacementAtPos(cellToCheck))
         {
             SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, Vector3Int.zero);
             ClientSend.SpawnItemCommand(spawnItemCommand);
         }
     }
     else if (itemToCast.usableItemType == EnumData.UsableItemTypes.Portal)
     {
         Vector3Int cellToCheck = GridManager.instance.grid.WorldToCell(actorTransform.position + GridManager.instance.GetFacingDirectionOffsetVector3(Facing));
         if (!GridManager.instance.IsCellBlockedForSpawnObjectPlacementAtPos(cellToCheck))
         {
             SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, Vector3Int.zero);
             ClientSend.SpawnItemCommand(spawnItemCommand);
         }
     }
     else if (itemToCast.usableItemType == EnumData.UsableItemTypes.AeloianMight)
     {
         SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, Vector3Int.zero);
         ClientSend.SpawnItemCommand(spawnItemCommand);
     }
     else if (itemToCast.usableItemType == EnumData.UsableItemTypes.QuickSand)
     {
         SpawnItemCommand spawnItemCommand = new SpawnItemCommand(GetLocalSequenceNo(), (int)Facing, (int)itemToCast.usableItemType, Vector3Int.zero);
         ClientSend.SpawnItemCommand(spawnItemCommand);
     }
 }