Bonjour,

Je suis sur l'elaboration de mon petit moteur 2D et je rencontre quelques soucis sur les timers. j'ai regardé les divers tuto sur le sujet mais je vois pas trop comment l'appliquer en sdl .net. Le site officiel propose un exemple mais avec l'architecture de mon moteur je ne vois pas comment l'implémenter.

J'ai une interface IGAMESTATE à laquelle j'hérie un GAMESTATE.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
    public sealed class GameStateManager
    {
        #region DECLARATION
 
        private static GameStateManager instance = new GameStateManager();
        IGameState _currentState;
        IGameState _nextState;
        bool _running;
 
        #endregion
 
 
        #region METHODES STATIQUES
        /// <summary>
        /// Evenements
        /// </summary>
        public static void Evenements()
        {
            instance.evenements();
        }
Ce code est utilisé dans mon main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
            GameStateManager.ChangeState(new Niveau());
            while (GameStateManager.Running)
            {
                GameStateManager.CheckState();
                GameStateManager.Evenements();
                GameStateManager.Actualisation();
                GameStateManager.Affichage();
                ScreenManager.Surface.Update();
            }
        }
et mon gamestate gere les niveau (pour le moment c'est un unique niveau codé en dur pour faire tourner l'ensemble de mes class / methodes)
Je l'utilise de cette façon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
        /// <summary>
        /// Gestion des evenements
        /// </summary>
        public void Evenements()
        {
            if (!Events.Poll())
            {
                return;
            }
            // On quitte le programme avec Echap
            KeyboardState _keyState = new KeyboardState();
            if (_keyState.IsKeyPressed(Key.Escape))
            {
                GameStateManager.Quit();
                return;
            }
            foreach (Entite entites in _entites)
            {
                entites.Evenement();
            }
            // Actions
            foreach (Entite entites in _entites)
            {
                Collision.MapSprite(_carte, entites);
            }
        }
Le problème c'est comment implémenter une gestion du temps? J'ai vu qu'il y avais une propriété dans events.fps (propriété en get / set) permettant de gerer les rafraichissements ainsi qu'un evenement evenets.ticks mais comment inserer ça dans mon moteur?

Auriez vous une idée? Merci