Example #1
0
    public void ShowDiceModifications()
    {
        Selection.ActiveShip.GenerateDiceModifications(DiceModificationTiming);
        List <GenericAction> diceModifications = Selection.ActiveShip.GetDiceModificationsGenerated();

        Combat.DiceModifications.ShowDiceModificationButtons(diceModifications);

        Roster.HighlightPlayer(Selection.ActiveShip.Owner.PlayerNo);
        Phases.CurrentSubPhase.IsReadyForCommands = true;

        if (diceModifications.Count > 0 || IsVital)
        {
            if (diceModifications.Any(m => m.IsForced))
            {
                Combat.DiceModifications.HideOkButton();
            }
            IsVital = true;
            Selection.ActiveShip.Owner.UseDiceModifications(DiceModificationTiming);
        }
        else
        {
            Combat.DiceModifications.HideAllButtons();
            ReplaysManager.ExecuteWithDelay(Combat.DiceModifications.ConfirmDiceResults);
        }
    }
    public void UseDiceModification(string diceModificationName)
    {
        Tooltips.EndTooltip();

        if (AvailableDiceModifications.ContainsKey(diceModificationName))
        {
            GenericAction diceModification = AvailableDiceModifications[diceModificationName];

            Selection.ActiveShip.AddAlreadyUsedDiceModification(diceModification);

            diceModification.ActionEffect(
                delegate {
                Combat.CurrentDiceRoll.MarkAsModifiedBy(diceModification.HostShip.Owner.PlayerNo);
                Combat.DiceModifications.RefreshButtonsList();
                ReplaysManager.ExecuteWithDelay(Combat.DiceModifications.AskPlayerToContinue);
            }
                );
        }
        else if (diceModificationName == "OK")
        {
            HideAllButtons();
            ReplaysManager.ExecuteWithDelay(ConfirmDiceResults);
        }
        else
        {
            Messages.ShowError("ERROR: Dice Modification is not found: " + diceModificationName);
        }
    }
Example #3
0
    public static void ConfirmDiceResultsClient()
    {
        Phases.CurrentSubPhase.IsReadyForCommands = false;

        switch (AttackStep)
        {
        case CombatStep.Attack:
            if (Combat.Attacker.CallTryConfirmDiceResults())
            {
                ReplaysManager.ExecuteWithDelay(ConfirmAttackDiceResults);
            }
            break;

        case CombatStep.Defence:
            if (Combat.Defender.CallTryConfirmDiceResults())
            {
                ReplaysManager.ExecuteWithDelay(ConfirmDefenceDiceResults);
            }
            break;

        case CombatStep.CompareResults:
            ReplaysManager.ExecuteWithDelay(CompareResultsAndDealDamage);
            break;
        }
    }
Example #4
0
    public static void SyncDiceResults(List <DieSide> sides)
    {
        Phases.CurrentSubPhase.IsReadyForCommands = false;

        bool wasFixed = false;

        for (int i = 0; i < DiceRoll.CurrentDiceRoll.DiceList.Count; i++)
        {
            Die die = DiceRoll.CurrentDiceRoll.DiceList[i];

            if (die.Model == null)
            {
                die.ShowWithoutRoll();
            }

            if (die.Side != sides[i])
            {
                die.SetSide(sides[i]);
                die.SetModelSide(sides[i]);

                wasFixed = true;
            }
        }

        if (wasFixed)
        {
            DiceRoll.CurrentDiceRoll.OrganizeDicePositions();
        }

        ReplaysManager.ExecuteWithDelay(CurrentDiceRoll.ExecuteCallback);
    }
Example #5
0
        private static void SelectShipThatCanAttack(Action callback)
        {
            foreach (var shipHolder in Roster.GetPlayer(Phases.CurrentPhasePlayer).Ships)
            {
                if (shipHolder.Value.State.Initiative == Phases.CurrentSubPhase.RequiredPilotSkill)
                {
                    if (!shipHolder.Value.IsAttackPerformed)
                    {
                        Selection.ChangeActiveShip("ShipId:" + shipHolder.Value.ShipId);
                        Console.Write(Selection.ThisShip.PilotInfo.PilotName + "(" + Selection.ThisShip.ShipId + ") is selected as attacker", LogTypes.AI);
                        break;
                    }
                }
            }

            if (Selection.ThisShip != null)
            {
                ReplaysManager.RecordCommand(CombatSubPhase.GenerateCombatActicationCommand(Selection.ThisShip.ShipId));
                Selection.ThisShip.CallCombatActivation(callback);
            }
            else
            {
                callback();
            }
        }
Example #6
0
    public static void SyncDiceResults(List <DieSide> sides)
    {
        bool wasFixed = false;

        for (int i = 0; i < DiceRoll.CurrentDiceRoll.DiceList.Count; i++)
        {
            Die die = DiceRoll.CurrentDiceRoll.DiceList[i];

            if (die.Model == null)
            {
                die.ShowWithoutRoll();
            }

            if (die.Side != sides[i])
            {
                die.TrySetSide(sides[i]);
                die.SetModelSide(sides[i]);

                wasFixed = true;
            }
        }

        if (wasFixed)
        {
            DiceRoll.CurrentDiceRoll.OrganizeDicePositions();
        }
        else
        {
            DiceRoll.CurrentDiceRoll.UpdateDiceCompareHelperPrediction();
        }

        ReplaysManager.ExecuteWithDelay(CurrentDiceRoll.ExecuteCallback);
    }
Example #7
0
    public static void StartNetworkGame()
    {
        GameController.Initialize();
        ReplaysManager.TryInitialize(ReplaysMode.Write);

        GameMode.CurrentGameMode = new NetworkGame();
        SwitchToBattleScene();
    }
Example #8
0
        public static void StartNetworkGame()
        {
            GameController.Initialize();
            ReplaysManager.Initialize(ReplaysMode.Write);

            Console.Write("Network game is started", LogTypes.GameCommands, true, "aqua");

            Network.StartNetworkGame();
        }
    public static void SendCommand(GameCommand command)
    {
        Console.Write($"Command is received: {command.GetType().ToString().Replace("GameCommands.","")}", isBold: true, color: "cyan");
        CommandsReceived.Add(command);

        if (ReplaysManager.Mode == ReplaysMode.Write)
        {
            ReplaysManager.RecordCommand(command);
        }
    }
Example #10
0
    // 0.3.2 UI

    public void CreateMatch()
    {
        string roomName = GameObject.Find("UI/Panels/CreateMatchPanel/Panel/Name").GetComponentInChildren <InputField>().text;
        string password = GameObject.Find("UI/Panels/CreateMatchPanel/Panel/Password").GetComponentInChildren <InputField>().text;

        GameController.Initialize();
        ReplaysManager.Initialize(ReplaysMode.Write);
        Console.Write("Network game is prepared", LogTypes.GameCommands, true, "aqua");

        Network.CreateMatch(roomName, password);
    }
Example #11
0
 public override void Execute()
 {
     Phases.CurrentSubPhase.IsReadyForCommands = false;
     ReplaysManager.ExecuteWithDelay(
         delegate {
         Console.Write("Critical damage card is confirmed");
         InformCrit.ConfirmCrit();
     },
         3
         );
 }
Example #12
0
    // 0.3.2 UI

    public void CreateMatch()
    {
        string roomName = GameObject.Find("UI/Panels/CreateMatchPanel/Panel/Name").GetComponentInChildren <InputField>().text;
        string password = GameObject.Find("UI/Panels/CreateMatchPanel/Panel/Password").GetComponentInChildren <InputField>().text;

        GameController.Initialize();
        ReplaysManager.TryInitialize(ReplaysMode.Write);

        Network.CreateMatch(roomName, password);

        ChangePanel("WaitingForOpponentsPanel");
    }
Example #13
0
    public static void StartBattle(ReplaysMode mode = ReplaysMode.Write)
    {
        GameController.Initialize();
        if (ReplaysManager.TryInitialize(mode))
        {
            if (mode == ReplaysMode.Read)
            {
                MainMenu.CurrentMainMenu.InitializeSquadBuilder("Replay");
            }

            Global.StartLocalGame();
        }
    }
Example #14
0
    public static void SendCommand(GameCommand command)
    {
        Console.Write("Command is received: " + command.Type, LogTypes.GameCommands, false, "aqua");

        CommandsReceived.Add(command);

        if (ReplaysManager.Mode == ReplaysMode.Write)
        {
            ReplaysManager.RecordCommand(command);
        }

        command.TryExecute();
    }
Example #15
0
    public static void StartBattle(ReplaysMode mode = ReplaysMode.Write)
    {
        GameController.Initialize();
        ReplaysManager.Initialize(mode);

        if (mode == ReplaysMode.Read)
        {
            MainMenu.CurrentMainMenu.InitializeSquadBuilder("Replay");
        }

        Console.Write("Game is started", LogTypes.GameCommands, true, "aqua");
        SquadBuilder.StartLocalGame();
    }
Example #16
0
    IEnumerator UploadCustomReport(string stackTrace)
    {
        JSONObject jsonData = new JSONObject();

        jsonData.AddField("rowKey", Guid.NewGuid().ToString());
        jsonData.AddField("partitionKey", "CrashReport");
        jsonData.AddField("playerName", Options.NickName);
        jsonData.AddField("description", "No description");
        jsonData.AddField("p1pilot", (Selection.ThisShip != null) ? Selection.ThisShip.PilotInfo.PilotName : "None");
        jsonData.AddField("p2pilot", (Selection.AnotherShip != null) ? Selection.AnotherShip.PilotInfo.PilotName : "None");
        jsonData.AddField("stackTrace", stackTrace.Replace("\n", "NEWLINE"));
        jsonData.AddField("trigger", (Triggers.CurrentTrigger != null) ? Triggers.CurrentTrigger.Name : "None");
        jsonData.AddField("subphase", (Phases.CurrentSubPhase != null) ? Phases.CurrentSubPhase.GetType().ToString() : "None");
        jsonData.AddField("scene", UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
        jsonData.AddField("version", Global.CurrentVersion);

        try
        {
            jsonData.AddField("p1squad", SquadBuilder.SquadLists[0].SavedConfiguration.ToString().Replace("\"", "\\\""));
            jsonData.AddField("p2squad", SquadBuilder.SquadLists[1].SavedConfiguration.ToString().Replace("\"", "\\\""));
        }
        catch (Exception)
        {
            jsonData.AddField("p1squad", "None");
            jsonData.AddField("p2squad", "None");
        }

        if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name == "Battle")
        {
            jsonData.AddField("replay", ReplaysManager.GetReplayContent().Replace("\"", "\\\""));
        }
        else
        {
            jsonData.AddField("replay", "None");
        }

        var request = new UnityWebRequest("https://flycasualdataserver.azurewebsites.net/api/crashreports/create", "POST");

        Debug.Log(jsonData.ToString());
        byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonData.ToString());
        request.uploadHandler   = (UploadHandler) new UploadHandlerRaw(bodyRaw);
        request.downloadHandler = (DownloadHandler) new DownloadHandlerBuffer();
        request.SetRequestHeader("Content-Type", "application/json");
        yield return(request.SendWebRequest());

        Debug.Log("Status Code: " + request.responseCode);
    }
Example #17
0
    public static void UseDiceModification(string diceModificationName)
    {
        Phases.CurrentSubPhase.IsReadyForCommands = false;

        Tooltips.EndTooltip();

        GameObject DiceModificationButton = GameObject.Find("UI/CombatDiceResultsPanel").transform.Find("DiceModificationsPanel").Find("Button" + diceModificationName).gameObject;

        DiceModificationButton.GetComponent <Button>().interactable = false;

        GenericAction diceModification = AvailableDecisions[diceModificationName];

        switch (diceModification.DiceModificationTiming)
        {
        case DiceModificationTimingType.Normal:
        case DiceModificationTimingType.AfterRolled:
            Selection.ActiveShip = (AttackStep == CombatStep.Attack) ? Attacker : Defender;
            break;

        case DiceModificationTimingType.Opposite:
            Selection.ActiveShip = (AttackStep == CombatStep.Attack) ? Defender : Attacker;
            break;

        case DiceModificationTimingType.CompareResults:
            Selection.ActiveShip = Attacker;
            break;

        default:
            break;
        }

        Selection.ActiveShip.AddAlreadyUsedDiceModification(diceModification);

        diceModification.ActionEffect(delegate {
            if (!Combat.CurrentDiceRoll.ModifiedBy.Contains(diceModification.HostShip.Owner.PlayerNo))
            {
                Combat.CurrentDiceRoll.ModifiedBy.Add(diceModification.HostShip.Owner.PlayerNo);
            }
            ReplaysManager.ExecuteWithDelay(delegate {
                //make sure UI/CombatDiceResultsPanel is available again
                GameObject.Find("UI").transform.Find("CombatDiceResultsPanel").gameObject.SetActive(true);
                ReGenerateListOfButtons(diceModification.DiceModificationTiming);
            });
        });
    }
Example #18
0
        public static void GenerateSwerveCommand(int shipId, string maneuverCode)
        {
            JSONObject parameters = new JSONObject();

            parameters.AddField("id", shipId.ToString());
            parameters.AddField("maneuver", maneuverCode);
            GameCommand command = new HotacSwerveCommand(
                GameCommandTypes.HotacSwerve,
                typeof(SubPhases.ActivationSubPhase),
                parameters.ToString()
                );

            ReplaysManager.RecordCommand(command);

            parameters = new JSONObject();
            parameters.AddField("id", shipId.ToString());
            command = new AssignManeuverCommand(
                GameCommandTypes.ActivateAndMove,
                typeof(SubPhases.ActivationSubPhase),
                parameters.ToString()
                );

            ReplaysManager.RecordCommand(command);
        }
Example #19
0
 public override void Execute()
 {
     Phases.CurrentSubPhase.IsReadyForCommands = false;
     ReplaysManager.ExecuteWithDelay(InformCrit.ConfirmCrit, 3);
 }