Пример #1
0
        private void StartGame()
        {
            var playerModel = new PlayerStateModel(RobotName);

            _model.StartGame(new GameStateModel(), playerModel);
            UpdateField();
        }
Пример #2
0
 public GameStateModel()
 {
     GlobalFlags = new List <GameFlag> ();
     Scenes      = new List <SceneModel> ();
     PlayerState = new PlayerStateModel();
     NPCs        = new List <NPCStateModel>();
     Scene       = new SceneModel();
 }
Пример #3
0
        private void CreateStates(GameStateModel gameModel, PlayerStateModel playerModel)
        {
            var gameState = _stateMapper.Map(gameModel);

            _controller.CreateGameState(gameState);
            _controller.CreatePlayerState(playerModel.Number, playerModel.Name);
            var state = _controller.GetGameState();
        }
Пример #4
0
 void OnGameStateUpdate()
 {
     //Will change for multi player games.
     Opponent = CurrentGameState.GetInstance().Players.Where(player => player.Key != CurrentPlayerState.Instance.PlayerId).First().Value;
     if (ScoreBoard != null)
     {
         ScoreBoard.GetComponentsInChildren <TextMesh>()[0].text = Opponent.Health.ToString();
     }
 }
Пример #5
0
    private void Init()
    {
        stateModel = GetComponent <PlayerStatePresenter>().StateModel;
        inventory  = GetComponent <SimplePlayerInventoryPresenter>();
        Mediator.Sigton.PlayerInteract = this;

        playerInteractBehavior[PlayerInteractionType.Collect] = PlayerCollectBehavior;
        playerInteractBehavior[PlayerInteractionType.Dialog]  = PlayerDialogBehavior;
    }
 private void Init()
 {
     stateModel = GetComponent <PlayerStatePresenter>().StateModel;
     inventory  = GetComponent <SimplePlayerInventoryPresenter>();
     playerInteractBehavior.Add("NPC", () =>
     {
         print("start dialog");
     });
 }
Пример #7
0
        public void PlayerStateRefresh(int tableId)
        {
            var playerState = new PlayerStateModel();

            foreach (var user in Users.Where(e => e.TableId == tableId))
            {
                playerState.Players.Add(new GamePlayer
                {
                    Username   = user.Name,
                    IsPlaying  = user.InGame,
                    IsReady    = user.IsReady,
                    SeatNumber = user.SeatNumber,
                    GameMoney  = user.Balance
                });

                if (Games.FirstOrDefault(e => e.TableId == tableId) != null &&
                    Games.First(e => e.TableId == tableId).Players.Select(e => e.Name).Contains(user.Name))
                {
                    playerState.Players.Last().ActionState = Games.First(e => e.TableId == tableId).Players
                                                             .First(e => e.Name == user.Name).ActionState;
                }
            }

            playerState.CommunityCards = Games.FirstOrDefault(e => e.TableId == tableId)?.TableCards;

            playerState.GameInProgress = playerState.CommunityCards != null;

            playerState.Pots = Games.FirstOrDefault(e => e.TableId == tableId)?.Winnings;

            if (Games.FirstOrDefault(e => e.TableId == tableId) != null)
            {
                playerState.SmallBlind = Games.First(e => e.TableId == tableId).SmallBlind;
            }

            if (Games.FirstOrDefault(e => e.TableId == tableId)?.RaiseAmount > 0)
            {
                playerState.RaiseAmount = Games.First(e => e.TableId == tableId).RaiseAmount;
            }

            var gamePlayers = Games.FirstOrDefault(e => e.TableId == tableId)?.Players;

            if (gamePlayers == null)
            {
                Clients.Group(tableId.ToString()).SendAsync("ReceiveStateRefresh", playerState);
            }
            else
            {
                foreach (var user in Users.Where(e => e.TableId == tableId))
                {
                    playerState.HandCards = gamePlayers.FirstOrDefault(e => e.Name == user.Name)?.HandCards;
                    Clients.Client(user.ConnectionId).SendAsync("ReceiveStateRefresh", playerState);
                }
            }
        }
    void AddState(float deltaTime)
    {
        PlayerStateModel tempPlayerState = new PlayerStateModel(_player.gameObject.transform.position,
                                                                _player.PlayerSprite.transform.rotation,
                                                                _player.RopeOrigin.transform.rotation,
                                                                _player.WallHookSprite.transform.position,
                                                                _player.RopeLineRenderer,
                                                                deltaTime);

        _playerPlayback.AddPlayerState(tempPlayerState);
    }
Пример #9
0
        // Use this for initialization
        void Start()
        {
            playerState = FindObjectOfType<PlayerStateModel>();

            if (playerState == null)
                return;

            playerState.OnDataLoadedEvent += GotPlayerStateData;

            if (playerState.ready){
                UpdateViewByData();
            }
        }
Пример #10
0
 public void StartGame(GameStateModel gameModel, PlayerStateModel playerModel)
 {
     CreateStates(gameModel, playerModel);
 }
    IEnumerator PlayGhostPlayback()
    {
        int  previousPositionCount          = _ghostPlayer.RopeLineRenderer.positionCount;
        bool RemoveLastLineRendererPosition = false;

        _tempPlayerState = _playerReplayModel.GetNextState();
        timePassedTotal  = timePassedTotal + _timePassed;
        _timePassed      = 0.0f;

        tempPlayerDeltaTime = tempPlayerDeltaTime + _tempPlayerState.DeltaTime;

        _lerpFromPosition                  = _ghostPlayer.transform.position;
        _lerpFromRotation                  = _ghostPlayer.GhostPlayerSprite.transform.rotation;
        _lerpFromShoulderRotation          = _ghostPlayer.RopeOrigin.transform.rotation;
        _lerpFromWallHookPosition          = _ghostPlayer.WallHookSprite.transform.position;
        _lerpFromLineRendererPositionCount = _ghostPlayer.RopeLineRenderer.positionCount;
        _lerpFromLineRendererPositions     = new Vector3[_lerpFromLineRendererPositionCount];
        _ghostPlayer.RopeLineRenderer.GetPositions(_lerpFromLineRendererPositions);
        _ghostPlayer.RopeLineRenderer.positionCount = _tempPlayerState.RopeLineRendererPositions.Length;

        _ghostPlayer.RopeLineRenderer.SetPositions(_tempPlayerState.RopeLineRendererPositions);

        if (_ghostPlayer.RopeLineRenderer.positionCount > 1)
        {
            _ghostPlayer.RopeLineRenderer.enabled = true;
            Vector3 lineDirection = _ghostPlayer.RopeLineRenderer.GetPosition(_ghostPlayer.RopeLineRenderer.positionCount - 2) - transform.position;
            Vector3 shipDirection = (_ghostPlayer.GhostPlayerSprite.transform.right + _ghostPlayer.GhostPlayerSprite.transform.position) - _ghostPlayer.GhostPlayerSprite.transform.position;
            // Debug.Log("SHIP DIRECTION: " + PlayerSprite.transform.eulerAngles);
            float RopeAngle = Vector3.SignedAngle(shipDirection, lineDirection, Vector3.back);
            float ShipAngle = Vector3.SignedAngle(shipDirection, Vector3.right, Vector3.back);

            _ghostPlayer.GrappleArmEndPS.Play();
            _ghostPlayer.WallHookSpritePS.Play();
            _ghostPlayer.ElectrodeBackPS.Play();
            _ghostPlayer.ElectrodeFrontPS.Play();

            if (RopeAngle > 0)
            {
                _ghostPlayer.LowerLightningPlanes.SetActive(true);
                _ghostPlayer.UpperLightningPlanes.SetActive(false);
            }
            else
            {
                _ghostPlayer.LowerLightningPlanes.SetActive(false);
                _ghostPlayer.UpperLightningPlanes.SetActive(true);
            }
        }
        else
        {
            _ghostPlayer.GrappleArmEndPS.Stop();
            _ghostPlayer.WallHookSpritePS.Stop();
            _ghostPlayer.ElectrodeBackPS.Stop();
            _ghostPlayer.ElectrodeFrontPS.Stop();
            _ghostPlayer.LowerLightningPlanes.SetActive(false);
            _ghostPlayer.UpperLightningPlanes.SetActive(false);
        }

        //Handle lerp points for firing, bending around a corner, swinging back from a corner, and coming back to the origin
        if (previousPositionCount == 0 && _tempPlayerState.RopeLineRendererPositions.Length > 1)
        {
            _lerpFromLineRendererPositions = new Vector3[] { _ghostPlayer.RopeOrigin.transform.position, _ghostPlayer.RopeOrigin.transform.position };
        }
        else if (_tempPlayerState.RopeLineRendererPositions.Length > _lerpFromLineRendererPositionCount)
        {
            _lerpFromLineRendererPositions[_lerpFromLineRendererPositions.Length - 2] = _tempPlayerState.RopeLineRendererPositions[_tempPlayerState.RopeLineRendererPositions.Length - 2];
            _lerpFromLineRendererPositions[_lerpFromLineRendererPositions.Length - 1] = _ghostPlayer.RopeOrigin.transform.position;
        }
        else if (_tempPlayerState.RopeLineRendererPositions.Length < _lerpFromLineRendererPositionCount)
        {
            if (_lerpFromLineRendererPositionCount > 2 && _tempPlayerState.RopeLineRendererPositions.Length > 2)
            {
                List <Vector3> tempLineRendererPositions = new List <Vector3>();

                _ghostPlayer.RopeLineRenderer.positionCount = _lerpFromLineRendererPositionCount;
                tempLineRendererPositions = _tempPlayerState.RopeLineRendererPositions.ToList();
                tempLineRendererPositions.Insert(tempLineRendererPositions.Count, tempLineRendererPositions[tempLineRendererPositions.Count - 2]);
                tempLineRendererPositions.RemoveAt(tempLineRendererPositions.Count - 1);
                tempLineRendererPositions.Insert(tempLineRendererPositions.Count - 1, _lerpFromLineRendererPositions[_lerpFromLineRendererPositions.Length - 2]);
                _tempPlayerState.RopeLineRendererPositions = tempLineRendererPositions.ToArray();
                _tempPlayerState.WallHookPosition          = tempLineRendererPositions[0];
                RemoveLastLineRendererPosition             = true;
            }
            else if (_lerpFromLineRendererPositionCount > 1)
            {
                _ghostPlayer.RopeLineRenderer.enabled = false;
            }
        }

        while (Time.time - _startTime < tempPlayerDeltaTime)
        {
            float percentageComplete = _timePassed / _tempPlayerState.DeltaTime;
            _ghostPlayer.transform.position = Vector3.Lerp(_lerpFromPosition, _tempPlayerState.BodyPosition, percentageComplete);
            _ghostPlayer.GhostPlayerSprite.transform.rotation = Quaternion.Lerp(_lerpFromRotation, _tempPlayerState.BodyRotation, percentageComplete);
            _ghostPlayer.RopeOrigin.transform.rotation        = Quaternion.Lerp(_lerpFromShoulderRotation, _tempPlayerState.ShoulderRotation, percentageComplete);
            _ghostPlayer.WallHookSprite.transform.position    = Vector3.Lerp(_lerpFromWallHookPosition, _tempPlayerState.WallHookPosition, percentageComplete);

            // lerp last 2 values of lineRenderer, lerp the first value toward the WallHookSprite
            if (_tempPlayerState.RopeLineRendererPositions.Length > 1)
            {
                _ghostPlayer.RopeLineRenderer.SetPosition(_tempPlayerState.RopeLineRendererPositions.Length - 1,
                                                          Vector3.Lerp(_lerpFromLineRendererPositions[_lerpFromLineRendererPositions.Length - 1],
                                                                       _tempPlayerState.RopeLineRendererPositions[_tempPlayerState.RopeLineRendererPositions.Length - 1],
                                                                       percentageComplete));

                _ghostPlayer.RopeLineRenderer.SetPosition(_tempPlayerState.RopeLineRendererPositions.Length - 2,
                                                          Vector3.Lerp(_lerpFromLineRendererPositions[_lerpFromLineRendererPositions.Length - 2],
                                                                       _tempPlayerState.RopeLineRendererPositions[_tempPlayerState.RopeLineRendererPositions.Length - 2],
                                                                       percentageComplete));

                if (_lerpFromLineRendererPositions[_lerpFromLineRendererPositions.Length - 2] != _ghostPlayer.RopeOrigin.transform.position)
                {
                    Quaternion grappleShoulderRotation = Quaternion.LookRotation(_lerpFromLineRendererPositions[_lerpFromLineRendererPositions.Length - 2] - _ghostPlayer.RopeOrigin.transform.position, Vector3.back);
                    grappleShoulderRotation.x         = 0.0f;
                    grappleShoulderRotation.y         = 0.0f;
                    _tempPlayerState.ShoulderRotation = grappleShoulderRotation;
                }

                if (_tempPlayerState.RopeLineRendererPositions.Length > 2)
                {
                    _ghostPlayer.RopeLineRenderer.SetPosition(0, Vector3.Lerp(_lerpFromWallHookPosition, _tempPlayerState.WallHookPosition, percentageComplete));
                }
            }

            _timePassed = _timePassed + Time.deltaTime;
            yield return(new WaitForEndOfFrame());
        }

        _ghostPlayer.transform.position = _tempPlayerState.BodyPosition;
        _ghostPlayer.GhostPlayerSprite.transform.rotation = _tempPlayerState.BodyRotation;
        _ghostPlayer.WallHookSprite.transform.position    = _tempPlayerState.WallHookPosition;

        if (_tempPlayerState.RopeLineRendererPositions.Length > 1)
        {
            _ghostPlayer.RopeLineRenderer.SetPosition(_ghostPlayer.RopeLineRenderer.positionCount - 1,
                                                      _tempPlayerState.RopeLineRendererPositions[_tempPlayerState.RopeLineRendererPositions.Length - 1]);
            _ghostPlayer.RopeLineRenderer.SetPosition(_ghostPlayer.RopeLineRenderer.positionCount - 2,
                                                      _tempPlayerState.RopeLineRendererPositions[_tempPlayerState.RopeLineRendererPositions.Length - 2]);
            Vector3 shouldNotBeZero = _ghostPlayer.RopeLineRenderer.GetPosition(_ghostPlayer.RopeLineRenderer.positionCount - 2) - _tempPlayerState.RopeLineRendererPositions[_tempPlayerState.RopeLineRendererPositions.Length - 1];
            if (shouldNotBeZero != Vector3.zero)
            {
                Quaternion grappleShoulderRotation = Quaternion.LookRotation(_ghostPlayer.RopeLineRenderer.GetPosition(_ghostPlayer.RopeLineRenderer.positionCount - 2) - _tempPlayerState.RopeLineRendererPositions[_tempPlayerState.RopeLineRendererPositions.Length - 1], Vector3.back);
                grappleShoulderRotation.x         = 0.0f;
                grappleShoulderRotation.y         = 0.0f;
                _tempPlayerState.ShoulderRotation = grappleShoulderRotation;
            }

            if (_tempPlayerState.RopeLineRendererPositions.Length > 2)
            {
                _ghostPlayer.RopeLineRenderer.SetPosition(0, _tempPlayerState.WallHookPosition);
            }
        }

        if (RemoveLastLineRendererPosition)
        {
            _ghostPlayer.RopeLineRenderer.positionCount = _ghostPlayer.RopeLineRenderer.positionCount - 1;
            _ghostPlayer.RopeLineRenderer.SetPosition(_ghostPlayer.RopeLineRenderer.positionCount - 1, _ghostPlayer.RopeOrigin.transform.position);
            RemoveLastLineRendererPosition = false;
        }

        if (_playerReplayModel.HasStates)
        {
            yield return(PlayGhostPlayback());
        }
        else
        {
            yield return(null);
        }
    }