LCOV - code coverage report
Current view: top level - src - game.h (source / functions) Hit Total Coverage
Test: report Lines: 38 45 84.4 %
Date: 2015-07-11 18:23:49 Functions: 11 14 78.6 %

          Line data    Source code
       1             : /*
       2             : Minetest
       3             : Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
       4             : 
       5             : This program is free software; you can redistribute it and/or modify
       6             : it under the terms of the GNU Lesser General Public License as published by
       7             : the Free Software Foundation; either version 2.1 of the License, or
       8             : (at your option) any later version.
       9             : 
      10             : This program is distributed in the hope that it will be useful,
      11             : but WITHOUT ANY WARRANTY; without even the implied warranty of
      12             : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      13             : GNU Lesser General Public License for more details.
      14             : 
      15             : You should have received a copy of the GNU Lesser General Public License along
      16             : with this program; if not, write to the Free Software Foundation, Inc.,
      17             : 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
      18             : */
      19             : 
      20             : #ifndef GAME_HEADER
      21             : #define GAME_HEADER
      22             : 
      23             : #include "irrlichttypes_extrabloated.h"
      24             : #include <string>
      25             : #include "keycode.h"
      26             : #include <list>
      27             : 
      28           4 : class KeyList : protected std::list<KeyPress>
      29             : {
      30             :         typedef std::list<KeyPress> super;
      31             :         typedef super::iterator iterator;
      32             :         typedef super::const_iterator const_iterator;
      33             : 
      34       62989 :         virtual const_iterator find(const KeyPress &key) const
      35             :         {
      36       62989 :                 const_iterator f(begin());
      37       62989 :                 const_iterator e(end());
      38             : 
      39      328165 :                 while (f != e) {
      40      134197 :                         if (*f == key)
      41        1609 :                                 return f;
      42             : 
      43      132588 :                         ++f;
      44             :                 }
      45             : 
      46       61380 :                 return e;
      47             :         }
      48             : 
      49         255 :         virtual iterator find(const KeyPress &key)
      50             :         {
      51         255 :                 iterator f(begin());
      52         255 :                 iterator e(end());
      53             : 
      54         509 :                 while (f != e) {
      55         352 :                         if (*f == key)
      56         225 :                                 return f;
      57             : 
      58         127 :                         ++f;
      59             :                 }
      60             : 
      61          30 :                 return e;
      62             :         }
      63             : 
      64             : public:
      65          44 :         void clear()
      66             :         {
      67          44 :                 super::clear();
      68          44 :         }
      69             : 
      70         230 :         void set(const KeyPress &key)
      71             :         {
      72         230 :                 if (find(key) == end())
      73          30 :                         push_back(key);
      74         230 :         }
      75             : 
      76          25 :         void unset(const KeyPress &key)
      77             :         {
      78          25 :                 iterator p(find(key));
      79             : 
      80          25 :                 if (p != end())
      81          25 :                         erase(p);
      82          25 :         }
      83             : 
      84           0 :         void toggle(const KeyPress &key)
      85             :         {
      86           0 :                 iterator p(this->find(key));
      87             : 
      88           0 :                 if (p != end())
      89           0 :                         erase(p);
      90             :                 else
      91           0 :                         push_back(key);
      92           0 :         }
      93             : 
      94       62989 :         bool operator[](const KeyPress &key) const
      95             :         {
      96       62989 :                 return find(key) != end();
      97             :         }
      98             : };
      99             : 
     100             : class InputHandler
     101             : {
     102             : public:
     103           1 :         InputHandler()
     104           1 :         {
     105           1 :         }
     106           1 :         virtual ~InputHandler()
     107           1 :         {
     108           1 :         }
     109             : 
     110             :         virtual bool isKeyDown(const KeyPress &keyCode) = 0;
     111             :         virtual bool wasKeyDown(const KeyPress &keyCode) = 0;
     112             : 
     113             :         virtual v2s32 getMousePos() = 0;
     114             :         virtual void setMousePos(s32 x, s32 y) = 0;
     115             : 
     116             :         virtual bool getLeftState() = 0;
     117             :         virtual bool getRightState() = 0;
     118             : 
     119             :         virtual bool getLeftClicked() = 0;
     120             :         virtual bool getRightClicked() = 0;
     121             :         virtual void resetLeftClicked() = 0;
     122             :         virtual void resetRightClicked() = 0;
     123             : 
     124             :         virtual bool getLeftReleased() = 0;
     125             :         virtual bool getRightReleased() = 0;
     126             :         virtual void resetLeftReleased() = 0;
     127             :         virtual void resetRightReleased() = 0;
     128             : 
     129             :         virtual s32 getMouseWheel() = 0;
     130             : 
     131        1166 :         virtual void step(float dtime) {}
     132             : 
     133           0 :         virtual void clear() {}
     134             : };
     135             : 
     136             : class ChatBackend;  /* to avoid having to include chat.h */
     137             : struct SubgameSpec;
     138             : 
     139             : void the_game(bool *kill,
     140             :                 bool random_input,
     141             :                 InputHandler *input,
     142             :                 IrrlichtDevice *device,
     143             :                 const std::string &map_dir,
     144             :                 const std::string &playername,
     145             :                 const std::string &password,
     146             :                 const std::string &address, // If "", local server is used
     147             :                 u16 port,
     148             :                 std::string &error_message,
     149             :                 ChatBackend &chat_backend,
     150             :                 const SubgameSpec &gamespec, // Used for local game
     151             :                 bool simple_singleplayer_mode);
     152             : 
     153             : #endif
     154             : 

Generated by: LCOV version 1.11