Пример #1
0
    private Request <GameUpdateInfo> GetGameStateRequest()
    {
        var result  = new GameUpdateInfo();
        var request = new Request <GameUpdateInfo>();

        request.Type = "update";
        request.Data = result;

        result.Joinable = playerHandler.GetAvailablePlayerSlots().Count > 0;
        result.Players  = playerHandler
                          .GetPlayers()
                          .Select(MapPlayerInfo)
                          .ToList();

        result.DaysPassed = gameState.daysPassed;
        result.Started    = result.DaysPassed > -1;

        var phase = gameState.GetCurrentPhase();

        if (phase == null)
        {
            return(request);
        }

        result.PhaseName = phase.Name;
        var subPhase = phase.GetCurrentSubPhase();

        if (subPhase == null)
        {
            return(request);
        }

        result.SubPhase.Name      = subPhase.Name;
        result.SubPhase.EnterTime = subPhase.EnterTime;
        result.SubPhase.ExitTime  = subPhase.ExitTime;
        result.SubPhase.HasEnded  = subPhase.HasEnded;
        result.SubPhase.IsActive  = subPhase.IsActive;

        if (subPhase is TimeBasedSubPhase time)
        {
            result.SubPhase.Timer    = time.Timer;
            result.SubPhase.Duration = time.Duration;
        }
        else if (subPhase is ConditionTimeBasedSubPhase conditionTime)
        {
            result.SubPhase.Timer    = conditionTime.Timer;
            result.SubPhase.Duration = conditionTime.Duration;
        }

        return(request);
    }
Пример #2
0
 public GameContext(GameUpdateInfo gameState, int revision)
 {
     this.gameState = gameState;
     this.revision  = revision;
 }