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.
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
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(); }
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)
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(); } }
Je l'utilise de cette façon :
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?
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); } }
Auriez vous une idée? Merci![]()
Partager