예제 #1
0
 void FarmCookieThread()
 {
     while (isPlaying)
     {
         lock (unprocessedCommand)
         {
             if (unprocessedCommand.Count > 0)
             {
                 System.DateTime sendTime;
                 currentGameState = GameSmooth.ExecuteCommands(unprocessedCommand, processedCommand, currentGameState, serverFps, out sendTime);
                 Sync(currentGameState, sendTime);
             }
         }
         Thread.Sleep(serverFps);
     }
 }
예제 #2
0
    void SyncServer(GameState serverState, System.DateTime sendTime)
    {
        GameState serverStatenoLag = GameSmooth.SmoothState(processedCommand, serverState, sendTime, Time.deltaTime);

        if (Mathf.Abs(serverStatenoLag.GetCookieNum() - currentGameState.GetCookieNum()) < serverStatenoLag.GetCookiePerSecond() * 2)
        {
            return;
        }

        /*if (Mathf.Abs(serverStatenoLag.GetCookieNum() - currentGameState.GetCookieNum()) < 10)
         * {
         *  return;
         * }*/
        if (Mathf.Abs(serverStatenoLag.GetFarms().Count - currentGameState.GetFarms().Count) < 3)
        {
            return;
        }
        currentGameState = serverStatenoLag;
        gameStateChanged.Invoke(currentGameState);
    }