Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- class Player:
- od::AutoIndex<od::Object2d, Player>
- {
- public:
- void step(Context& ctx, float dt);
- void draw(Context& ctx) const;
- };
- void Player::step(Context& ctx, float dt)
- {
- }
- void Player::draw(Context& ctx) const
- {
- auto& view = ctx<od::View>();
- ctx<SpriteManager>().setCurrent("player");
- od::drawSprite("ui", 0, view.x(), view.y());
- }
- int main()
- {
- using namespace od;
- Window win(640, 480, "Blbl");
- View view(0, 0, 320, 240, 0, 0, 640, 480); // zoom x2
- InstanceContext<Object2d> ic;
- od::instanceCreate<Player>(64, 64);
- /// @todo systeme de multi contextes (genre pour integration mini game)
- /// @todo chargement/dechargement automatisé
- /// @todo loading capable de charger au bon endroit la ressource (fichier, mémoire...)
- // Packs
- // Peuvent être chargés depuis des fichiers de configuration .xml, .json, ou autres formats...
- // Chaque ressource est associé a un identifiant std::string associé lui même a un id unsigned
- // Il est possible d'obtenir un id unsigned a partir d'un std::string
- // ou une enum (les noms de ressources sont ordonnés au chargement) pour ne pas du tout passer par std::string
- // -SpritePack : permet l'acces a un sprite depuis une map<unsigned, Sprite>
- // -SoundPack : de meme avec Sound
- // -ShaderPack : de meme avec Sound
- // Managers
- // Un manager est un regroupement de packs, un contexte de ressources donc
- // Il permet de même d'acceder a son contenu depuis un identifiant std::string
- // -SpriteManager : Contiens une map<std::string, SpritePack>
- // -SoundManager : map<std::string, SoundPack>
- // -ShaderManager : map<std::string, ShaderPack>
- // SpritePack = Pack<TextureGroup>
- // SpriteManager = Manager<Pack<TextureGroup>>
- // ...
- SpriteManager sprites;
- sprites.load("assets/sprites/player.xml");
- sprites.load("assets/sprites/monsters.xml");
- Manager<Sound> sounds;
- sounds.load("assets/sounds.xml");
- Manager<Shader> shaders;
- shaders.load("assets/shaders.xml");
- Context ctx;
- ctx.insert< View >(view);
- ctx.insert< SpriteManager >(sprites);
- ctx.insert< SoundManager >(sounds);
- ctx.insert< ShaderManager >(shaders);
- while(win.open())
- {
- win.ioHandle();
- if(keyPressed(vk_escape))
- break;
- drawClear();
- win.updateView(view);
- ic.update(ctx, deltaTime());
- ic.render(ctx);
- win.screenRefresh();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment