コード例 #1
0
        public SfmlGraphicsSystem(GameSystemManager manager, GameStateHelper gameStateHelper, RenderWindow sfmlWindow, Tile[,] gameTiles)
        {
            LoadGlobals();

            SystemManager = manager;

            _gameStateHelper = gameStateHelper;
            _sfmlWindow      = sfmlWindow; //Don't create window here as we need the events to be in user input system
            _gameTiles       = gameTiles;
            worldXLength     = this._gameTiles.GetLength(0);
            worldYLength     = this._gameTiles.GetLength(1);

            _systemEntities = new List <Entity>();
            var fontPath = @"G:\Programming\CSConsoleRL\Oct172018Try\CSConsoleRL\CSConsoleRL\bin\Debug\Data\Fonts\arial.ttf";

            if (!File.Exists(fontPath))
            {
                fontPath = @"F:\Programming\CSConsoleRL\Data\Fonts\arial.ttf";
            }
            if (!File.Exists(fontPath))
            {
                fontPath = @"/home/jason/dev/CSConsoleRL/Data/Fonts/arial.ttf";
            }
            _gameFont = new Font(fontPath);

            LoadTextures();
        }
コード例 #2
0
    public override void UpdateState()
    {
        if (_loadingOp.isDone && !_isLoadFinish)
        {
            _isLoadFinish = true;
            string sceneName = string.Empty;
            sceneName = GameStateHelper.SetSceneName(GameStateManager.Instance.NextState);
            _nextOp   = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);

            sceneName = GameStateHelper.SetSceneName(GameStateManager.Instance.PreviousState);
            _prevOp   = SceneManager.UnloadSceneAsync(sceneName);
        }

        if (_nextOp != null && _prevOp != null && _isLoadFinish && !_isUnloadFinish)
        {
            if (_prevOp.isDone && _nextOp.isDone)
            {
                _loadingOp      = SceneManager.UnloadSceneAsync("Loading");
                _isUnloadFinish = true;
            }
        }

        if (_loadingOp.isDone && _isLoadFinish && _isUnloadFinish)
        {
            GameStateManager.Instance.ChangeState(GameStateManager.Instance.NextState);
        }
    }
コード例 #3
0
 // Token: 0x060019C9 RID: 6601 RVA: 0x0001143A File Offset: 0x0000F63A
 private void OnInputChangeEvent(GlobalEvents.InputChanged ev)
 {
     if (ev.Key == GameInputKey.ChangeTeam && ev.IsDown && GameStateHelper.CanChangeTeam())
     {
         GameState.Current.Actions.ChangeTeam();
     }
 }
コード例 #4
0
ファイル: MovementSystem.cs プロジェクト: cal900/CSConsoleRL
 public MovementSystem(GameSystemManager manager, Tile[,] gameTiles, GameStateHelper gameState)
 {
     SystemManager   = manager;
     _systemEntities = new List <Entity>();
     _gameTiles      = gameTiles;
     _tileDictionary = new TileTypeDictionary();
     _gameState      = gameState;
 }
コード例 #5
0
 public AiSystem(GameSystemManager _manager, Tile[,] _gameTiles, GameStateHelper gameStateHelper)
 {
     SystemManager    = _manager;
     _systemEntities  = new List <Entity>();
     this._gameTiles  = _gameTiles;
     _aiEnabled       = true;
     _gameStateHelper = gameStateHelper;
 }
コード例 #6
0
ファイル: AiStateMachine.cs プロジェクト: cal900/CSConsoleRL
        public IGameEvent GetCurrentStateResponse(Entity entity, GameStateHelper gameStateHelper)
        {
            EvaluateConditions(entity, gameStateHelper);

            var currentState = _states[CurrentState];

            return(currentState.GetAiStateResponse(gameStateHelper));
        }
コード例 #7
0
 // Token: 0x06000E71 RID: 3697 RVA: 0x000623C8 File Offset: 0x000605C8
 public void OnEnter()
 {
     GamePageManager.Instance.UnloadCurrentPage();
     GameStateHelper.RespawnLocalPlayerAtRandom();
     GameState.Current.PlayerState.SetState(PlayerStateId.Playing);
     global::EventHandler.Global.Fire(new GameEvents.PlayerIngame());
     global::EventHandler.Global.AddListener <GameEvents.PlayerDied>(new Action <GameEvents.PlayerDied>(this.OnPlayerKilled));
 }
コード例 #8
0
ファイル: RangedAttack.cs プロジェクト: cal900/CSConsoleRL
        public IGameEvent GetAiStateResponse(GameStateHelper gameStateHelper)
        {
            var map = gameStateHelper.GetVar <Tile[, ]>("GameTiles");
            var position = _entity.GetComponent <PositionComponent>();
            var mainChar = gameStateHelper.GetVar <Entity>("MainEntity");
            int horMovement = 0, verMovement = 0;
            int mainCharX = mainChar.GetComponent <PositionComponent>().ComponentXPositionOnMap;
            int mainCharY = mainChar.GetComponent <PositionComponent>().ComponentYPositionOnMap;

            //Call to A* Pathfinding to get path
            var path = PathfindingHelper.Instance.Path(map, new Vector2i(position.ComponentXPositionOnMap, position.ComponentYPositionOnMap),
                                                       new Vector2i(mainCharX, mainCharY));

            if (path != null)
            {
                if (path != null)
                {
                    _path = path;
                }
                //if (_path[1] != null) seekerAi.AnalyzedPath = path[1];

                // For debugging color in path and analyzed tiles
                // foreach (var tile in _path[1])
                //{
                //  var fadingColorEnt = new FadingColorEntity("yellow");
                //  fadingColorEnt.GetComponent<PositionComponent>().ComponentXPositionOnMap = tile.X;
                //  fadingColorEnt.GetComponent<PositionComponent>().ComponentYPositionOnMap = tile.Y;
                //  SystemManager.RegisterEntity(fadingColorEnt);
                //}
                //foreach (var tile in path)
                //{
                //  var fadingColorEnt = new FadingColorEntity("green");
                //  fadingColorEnt.GetComponent<PositionComponent>().ComponentXPositionOnMap = tile.X;
                //  fadingColorEnt.GetComponent<PositionComponent>().ComponentYPositionOnMap = tile.Y;
                //  SystemManager.RegisterEntity(fadingColorEnt);
                //}
            }

            //Move to desired location
            if (position.ComponentXPositionOnMap < mainCharX)
            {
                horMovement++;
            }
            else if (position.ComponentXPositionOnMap > mainCharX)
            {
                horMovement--;
            }
            if (position.ComponentYPositionOnMap < mainCharY)
            {
                verMovement++;
            }
            else if (position.ComponentYPositionOnMap > mainCharY)
            {
                verMovement--;
            }

            return(new MovementInputEvent(_entity.Id, horMovement, verMovement));
        }
コード例 #9
0
 // Token: 0x06001A31 RID: 6705 RVA: 0x000115ED File Offset: 0x0000F7ED
 public void Dispose()
 {
     if (!this.isDisposed)
     {
         this.isDisposed = true;
         AutoMonoBehaviour <UnityRuntime> .Instance.OnUpdate -= this.OnUpdate;
         GameStateHelper.ExitGameMode();
     }
 }
コード例 #10
0
ファイル: TargetingSystem.cs プロジェクト: cal900/CSConsoleRL
 public TargetingSystem(GameSystemManager manager, Tile[,] gameTiles, GameStateHelper gameStateHelper)
 {
     SystemManager    = manager;
     _systemEntities  = new List <Entity>();
     _targetedCoords  = new Vector2i(0, 0);
     _gameStateHelper = gameStateHelper;
     _gameTiles       = gameTiles;
     _tileDictionary  = new TileTypeDictionary();
     StopTargetingMode();
 }
コード例 #11
0
 // Token: 0x06001960 RID: 6496 RVA: 0x00087C8C File Offset: 0x00085E8C
 public void Dispose()
 {
     if (!this.isDisposed)
     {
         this.isDisposed = true;
         AutoMonoBehaviour <UnityRuntime> .Instance.OnUpdate -= this.OnUpdate;
         GameState.Current.PlayerData.SendJumpUpdate         -= base.Operations.SendJump;
         GameState.Current.PlayerData.SendMovementUpdate     -= base.Operations.SendUpdatePositionAndRotation;
         GameStateHelper.ExitGameMode();
     }
 }
コード例 #12
0
        public LogicHandler(ResourceManager resourceManager, InputHandler inputHandler)
        {
            _resourceManager              = resourceManager;
            _inputHandler                 = inputHandler;
            _playerLogicHandler           = new PlayerLogicHandler();
            _roamLogicHandler             = new RoamLogicHandler(resourceManager);
            _startAndExitMenuLogicHandler = new StartAndExitMenuLogicHandler(resourceManager, inputHandler);
            _transitionHandler            = new TransitionHandler(resourceManager, _playerLogicHandler, _roamLogicHandler, _startAndExitMenuLogicHandler);

            GameStateHelper.ChangeState(GameStates.Start);
        }
コード例 #13
0
 // Token: 0x06001A9C RID: 6812 RVA: 0x0008B318 File Offset: 0x00089518
 public bool SendChatMessage(string message, ChatContext context)
 {
     message = ChatMessageFilter.Cleanup(message);
     if (!string.IsNullOrEmpty(message) && !ChatMessageFilter.IsSpamming(message))
     {
         GameStateHelper.OnChatMessage(PlayerDataManager.Cmid, PlayerDataManager.Name, message, PlayerDataManager.AccessLevel, (byte)ChatManager.CurrentChatContext);
         this.Actions.ChatMessage(message, (byte)ChatManager.CurrentChatContext);
         return(true);
     }
     return(false);
 }
コード例 #14
0
        protected bool MeleeSeek1ToPatrol1(Entity entity, GameStateHelper gameStateHelper)
        {
            return(true);

            _counter--;
            if (_counter <= 0)
            {
                return(true);
            }

            return(false);
        }
コード例 #15
0
        protected bool Patrol1ToMeleeSeek1(Entity entity, GameStateHelper gameStateHelper)
        {
            return(false);

            _counter++;
            if (_counter >= 5)
            {
                return(true);
            }

            return(false);
        }
コード例 #16
0
 // Token: 0x060019C8 RID: 6600 RVA: 0x00088F94 File Offset: 0x00087194
 public void Dispose()
 {
     if (!this.isDisposed)
     {
         this.isDisposed = true;
         AutoMonoBehaviour <UnityRuntime> .Instance.OnUpdate -= this.OnUpdate;
         GameState.Current.PlayerData.SendJumpUpdate         -= base.Operations.SendJump;
         GameState.Current.PlayerData.SendMovementUpdate     -= base.Operations.SendUpdatePositionAndRotation;
         global::EventHandler.Global.RemoveListener <GlobalEvents.InputChanged>(new Action <GlobalEvents.InputChanged>(this.OnInputChangeEvent));
         GameStateHelper.ExitGameMode();
     }
 }
コード例 #17
0
        public UserInputSystem(GameSystemManager _manager, RenderWindow sfmlWindow, GameStateHelper gameStateHelper)
        {
            SystemManager   = _manager;
            _systemEntities = new List <Entity>();

            _sfmlWindow              = sfmlWindow;
            _sfmlWindow.KeyPressed  += SfmlWindow_KeyPressed;
            _sfmlWindow.KeyReleased += SfmlWindow_KeyReleased;

            _gameStateHelper = gameStateHelper;

            _inputs = new Queue <Keyboard.Key>();
        }
コード例 #18
0
        private void ExecuteStateTransition()
        {
            var transition = _transition as StateTransition;

            if (transition == null) // do we fade in here? no not necessariliy, this should never happen though
            {
                return;
            }

            // state transition only has the state we are going to.
            // this state is pretty much guaranteed to not be roam unless coming from exit menu resume or maybe from chat?
            // don't have to set transitioning to false since it will be handled elsewhere
            GameStateHelper.ChangeState(transition.DestinationState);
        }
コード例 #19
0
ファイル: AiStateMachine.cs プロジェクト: cal900/CSConsoleRL
        private void EvaluateConditions(Entity entity, GameStateHelper gameStateHelper)
        {
            List <AiStateMachineNode> nodes = GetAllNodesForCurrentState();

            foreach (var node in nodes)
            {
                if (node.Condition(entity, gameStateHelper))
                {
                    CurrentState = node.PostState;
                    GameLogger.Instance().LogDebug($"Switching entity ${entity.Id} from state {node.PreState} to {node.PostState}");
                    return;
                }
            }
        }
コード例 #20
0
 // Token: 0x06000EA5 RID: 3749 RVA: 0x00062B1C File Offset: 0x00060D1C
 public void OnUpdate()
 {
     GameStateHelper.UpdateMatchTime();
     if (Input.GetKeyDown(KeyCode.L) && !GameData.Instance.HUDChatIsTyping)
     {
         if (GamePageManager.IsCurrentPage(IngamePageType.None))
         {
             GamePageManager.Instance.LoadPage(IngamePageType.PausedWaiting);
         }
         else
         {
             GamePageManager.Instance.UnloadCurrentPage();
         }
     }
 }
コード例 #21
0
        private void LaunchGame()
        {
            var username = IsMF ? _ConfigManager.MFUsername : Environment.UserName;
            var originalAppScreensPath = PathHelper.GetOriginalAppScreensPathByUsername(username);

            if (GameStateHelper.HasUnknownRunningGame(new List <string> {
                _ConfigManager.MFPath,
                _ConfigManager.GFPath,
            }))
            {
                UtilHelper.ShowAlertDialog(new AlertDialogInterfaceModel {
                    Content = "有未知激战2客户端正在运行"
                });
                return;
            }

            if (!IOHelper.IsDirectoryLnk(originalAppScreensPath))
            {
                if (!IOHelper.IsDirectoryEmpty(originalAppScreensPath))
                {
                    var content = "创建截图文件夹快捷方式时遇到问题。\r\n\r\n截图文件夹:\r\n";
                    content += originalAppScreensPath;
                    content += "\r\n已有截图,需要对其进行迁移。\r\n\r\n请确认其截图属于美服还是国服,然后从下面选择。";

                    UtilHelper.ShowConfirmDialog(new ConfirmDialogInterfaceModel
                    {
                        Title             = "正在启动" + (IsMF ? "美服" : "国服"),
                        Content           = content,
                        ConfirmButtonText = "国服",
                        CancelButtonText  = "美服",
                        ShowClose         = true,
                        ConfirmCallback   = () =>
                        {
                            MoveScreensAndLaunch(originalAppScreensPath, _ConfigManager.GFPath);
                        },
                        CancelCallback = () =>
                        {
                            MoveScreensAndLaunch(originalAppScreensPath, _ConfigManager.MFPath);
                        },
                    });

                    return;
                }
            }

            DoLaunchGame();
        }
コード例 #22
0
 // Token: 0x06001A2F RID: 6703 RVA: 0x00089B88 File Offset: 0x00087D88
 public TrainingRoom()
 {
     GameState.Current.MatchState.RegisterState(GameStateId.PregameLoadout, new PregameLoadoutState(GameState.Current.MatchState));
     GameState.Current.MatchState.RegisterState(GameStateId.MatchRunning, new OfflineMatchState(GameState.Current.MatchState));
     GameState.Current.PlayerState.RegisterState(PlayerStateId.Playing, new PlayerPlayingState(GameState.Current.PlayerState));
     GameState.Current.PlayerState.RegisterState(PlayerStateId.Killed, new PlayerKilledOfflineState(GameState.Current.PlayerState));
     GameState.Current.PlayerState.RegisterState(PlayerStateId.Paused, new PlayerPausedState(GameState.Current.PlayerState));
     GameState.Current.PlayerState.RegisterState(PlayerStateId.Overview, new PlayerOverviewState(GameState.Current.PlayerState));
     GameState.Current.Actions.KillPlayer = delegate()
     {
         if (GameState.Current.IsInGame)
         {
             GameState.Current.PlayerKilled(0, PlayerDataManager.Cmid, (UberstrikeItemClass)0, (BodyPart)0, Vector3.zero);
         }
     };
     GameState.Current.Actions.ExplosionHitDamage = delegate(int targetCmid, ushort damage, Vector3 force, byte slot, byte distance)
     {
         GameStateHelper.PlayerHit(targetCmid, damage, BodyPart.Body, force);
         if (GameState.Current.PlayerData.Health <= 0)
         {
             GameState.Current.PlayerData.Set(PlayerStates.Dead, true);
             GameState.Current.PlayerKilled(targetCmid, targetCmid, Singleton <WeaponController> .Instance.GetCurrentWeapon().View.ItemClass, BodyPart.Body, force);
         }
     };
     GameState.Current.Actions.JoinTeam = delegate(TeamID team)
     {
         GameActorInfo gameActorInfo = new GameActorInfo
         {
             Cmid      = PlayerDataManager.Cmid,
             SkinColor = PlayerDataManager.SkinColor
         };
         GameState.Current.PlayerData.Player           = gameActorInfo;
         GameState.Current.Players[gameActorInfo.Cmid] = gameActorInfo;
         GameState.Current.InstantiateAvatar(gameActorInfo);
         GameState.Current.MatchState.SetState(GameStateId.MatchRunning);
         UnityRuntime.StartRoutine(this.ShowTrainingGameMessages());
     };
     TabScreenPanelGUI.SortPlayersByRank = new Action <IEnumerable <GameActorInfo> >(GameStateHelper.SortDeathMatchPlayers);
     AutoMonoBehaviour <UnityRuntime> .Instance.OnUpdate += this.OnUpdate;
     GameStateHelper.EnterGameMode();
     GameState.Current.MatchState.SetState(GameStateId.PregameLoadout);
 }
コード例 #23
0
        public IGameEvent GetAiStateResponse(GameStateHelper gameStateHelper)
        {
            var map = gameStateHelper.GetVar <Tile[, ]>("GameTiles");
            var position = _entity.GetComponent <PositionComponent>();
            var currentPatrolPoint = _patrolPoints[_patrolPointIndex];
            int horMovement = 0, verMovement = 0;

            // Have we reached the current patrol point? Then move on to the next one
            if (position.ComponentXPositionOnMap == currentPatrolPoint.X &&
                position.ComponentYPositionOnMap == currentPatrolPoint.Y)
            {
                IncrPatrolPointIndex();
                currentPatrolPoint = _patrolPoints[_patrolPointIndex];
            }

            // Call to A* Pathfinding to get path
            var path = PathfindingHelper.Instance.Path(map, new Vector2i(position.ComponentXPositionOnMap, position.ComponentYPositionOnMap),
                                                       new Vector2i(currentPatrolPoint.X, currentPatrolPoint.Y));
            var nextPos = path[0];

            // Move to desired location
            if (position.ComponentXPositionOnMap < nextPos.X)
            {
                horMovement++;
            }
            else if (position.ComponentXPositionOnMap > nextPos.X)
            {
                horMovement--;
            }
            if (position.ComponentYPositionOnMap < nextPos.Y)
            {
                verMovement++;
            }
            else if (position.ComponentYPositionOnMap > nextPos.Y)
            {
                verMovement--;
            }

            return(new MovementInputEvent(_entity.Id, horMovement, verMovement));
        }
コード例 #24
0
 public void UpdateGameLogic()
 {
     if (_transitionHandler.Transitioning)
     {
         _transitionHandler.ContinueTransition();
     }
     else if (GameStateHelper.CurrentState == GameStates.Start)
     {
         GameStateHelper.ChangeState(GameStates.StartMenu);
     }
     else if (GameStateHelper.CurrentState == GameStates.StartMenu || GameStateHelper.CurrentState == GameStates.ExitMenu)
     {
         _startAndExitMenuLogicHandler.UpdateGameLogic();
     }
     else if (GameStateHelper.CurrentState == GameStates.Roam)
     {
         _roamLogicHandler.UpdateLogic();
     }
     else if (GameStateHelper.CurrentState == GameStates.Chat)
     {
     }
 }
コード例 #25
0
    // Token: 0x06001A3E RID: 6718 RVA: 0x0008A1DC File Offset: 0x000883DC
    public TryInShopRoom()
    {
        GameState.Current.MatchState.RegisterState(GameStateId.MatchRunning, new OfflineMatchState(GameState.Current.MatchState));
        GameState.Current.PlayerState.RegisterState(PlayerStateId.Playing, new PlayerPlayingState(GameState.Current.PlayerState));
        GameState.Current.PlayerState.RegisterState(PlayerStateId.Paused, new PlayerPausedState(GameState.Current.PlayerState));
        GameState.Current.Actions.DirectHitDamage = delegate(int targetCmid, ushort damage, BodyPart part, Vector3 force, byte slot, byte bullets)
        {
            GameState.Current.Player.MoveController.ApplyForce(force, CharacterMoveController.ForceType.Additive);
        };
        AutoMonoBehaviour <UnityRuntime> .Instance.OnUpdate += this.OnUpdate;
        GameStateHelper.EnterGameMode();
        GameActorInfo gameActorInfo = new GameActorInfo
        {
            Cmid      = PlayerDataManager.Cmid,
            SkinColor = PlayerDataManager.SkinColor
        };

        GameState.Current.PlayerData.Player           = gameActorInfo;
        GameState.Current.Players[gameActorInfo.Cmid] = gameActorInfo;
        GameState.Current.InstantiateAvatar(gameActorInfo);
        MenuPageManager.Instance.UnloadCurrentPage();
        GameState.Current.MatchState.SetState(GameStateId.MatchRunning);
    }
コード例 #26
0
 // Token: 0x06000E6E RID: 3694 RVA: 0x0000A7EA File Offset: 0x000089EA
 public void OnUpdate()
 {
     GameStateHelper.UpdateMatchTime();
 }
コード例 #27
0
 protected override void OnStartRunning()
 {
     _helper = new GameStateHelper(EntityManager, Entities);
     // _animationHandler = new CompletableHandlersGroup<AnimationComponent, GravityAnimationMarker>(EntityManager, Entities);
     // _animationHandler.OnCompleted += OnAnimationCompleted;
 }
コード例 #28
0
ファイル: GameStateSystem.cs プロジェクト: cal900/CSConsoleRL
 public GameStateSystem(GameSystemManager manager, GameStateHelper gameStateHelper)
 {
     SystemManager    = manager;
     _gameStateHelper = gameStateHelper;
     _systemEntities  = new List <Entity>();
 }
コード例 #29
0
        private void ExecuteRoamTransition()
        {
            var transition = _transition as RoamTransition;

            if (transition == null)
            {
                return;
            }

            if (transition.DestinationRegion == _roamLogicHandler.CurrentPlayerRegion && GameStateHelper.CurrentState == GameStates.Roam)
            {
                _roamLogicHandler.UpdatePlayerPositionWithTransition(transition);
                return;
            }

            var adjacentRegions = RegionLayout.RegionInfo[transition.DestinationRegion].AdjacentRegions;
            //var adjacentRegions = RegionMapper.GetAdjacentRegions(transition.DestinationRegion); // this is going to become regions to load
            var currentlyLoadedRegions = new List <RegionNames>(_roamLogicHandler.Regions.Keys.ToList()); // this is going to become regions to unload?

            List <RegionNames> regionsToLoad   = new List <RegionNames>();
            List <RegionNames> regionsToUnload = new List <RegionNames>();

            // load the destination region if it isn't already loaded (this will happen sometimes when loading files)
            if (!currentlyLoadedRegions.Contains(transition.DestinationRegion))
            {
                regionsToLoad.Add(transition.DestinationRegion);
            }

            // load everything this is adjacent to the region we are going to but isn't currently loaded
            foreach (var region in adjacentRegions)
            {
                if (!currentlyLoadedRegions.Contains(region))
                {
                    regionsToLoad.Add(region);
                }
            }

            // unload everything that is current loaded but no adjacent to the region we are currently going to
            foreach (var region in currentlyLoadedRegions)
            {
                if (!adjacentRegions.Contains(region))
                {
                    regionsToUnload.Add(region);
                }
            }

            _resourceManager.RequestRegionLoadUnload(regionsToLoad, regionsToUnload);

            // we can wait on load if we are loading new regions and fading
            if (transition.Fade)
            {
                _waitOnLoad = true;
            }

            _roamLogicHandler.UpdatePlayerPositionWithTransition(transition);

            if (GameStateHelper.CurrentState != GameStates.Roam)
            {
                GameStateHelper.ChangeState(GameStates.Roam);
            }
        }
コード例 #30
0
 // Token: 0x060019EF RID: 6639 RVA: 0x0001101D File Offset: 0x0000F21D
 protected override void OnChatMessage(int cmid, string name, string message, MemberAccessLevel accessLevel, byte context)
 {
     GameStateHelper.OnChatMessage(cmid, name, message, accessLevel, context);
 }