QUEUE.H
上传用户:abcdshs
上传日期:2007-01-07
资源大小:1858k
文件大小:2k
源码类别:

游戏

开发平台:

Visual C++

  1. // (C) Copyright 1996 by Anthony J. Carin.  All Rights Reserved.
  2. #ifndef QUEUE_H
  3. #define QUEUE_H
  4. enum queuetype
  5. {
  6.     NONE            = 0x0000,
  7.     ANTAGONIST      = 0x0001,
  8.     HANDHELD        = 0x0002,
  9.     BASEOBJECT      = 0x0004,
  10.     LANDSCAPE       = 0x0008,
  11.     GATEWAY         = 0x0010,
  12.     DUDEHOLDER      = 0x0020,
  13.     WEAPONHOLDER    = 0x0040,
  14.     TELEPORTER      = 0x0080
  15. };
  16. class qentry
  17. {
  18. public:
  19. friend class drawqueue;
  20.              qentry() { Next = Prev = 0; m_type = NONE; }
  21. virtual     ~qentry() { detach(); }
  22. virtual void draw() = 0;
  23. virtual queuetype type()   { return m_type; }
  24.         void detach();
  25.         char IsANTAGONIST()     { return (char)(m_type == ANTAGONIST); }
  26.         char IsHANDHELD()       { return (char)(m_type == HANDHELD  ); } 
  27.         char IsBASEOBJECT()     { return (char)(m_type == BASEOBJECT); }
  28.         char IsLANDSCAPE()      { return (char)(m_type == LANDSCAPE ); }
  29.         char IsGATEWAY()        { return (char)(m_type == GATEWAY   ); }
  30.         char IsDUDEHOLDER()     { return (char)(m_type == DUDEHOLDER); }
  31.         char IsWEAPONHOLDER()   { return (char)(m_type == WEAPONHOLDER); }
  32.         char IsTELEPORTER()     { return (char)(m_type == TELEPORTER); }
  33. protected:
  34. queuetype    m_type;
  35. qentry      *Next;
  36. qentry      *Prev;
  37. };
  38. class drawqueue
  39. {
  40. public:
  41. friend qentry;
  42.             drawqueue() { First = searchpos = mdead = 0; }
  43.            ~drawqueue() { purge(); }
  44. void        run();
  45. void        add(qentry *q);
  46. void       *first(short qtype);
  47. void       *next(short qtype);
  48. void        purge(queuetype p = NONE);
  49. void        KillLater(qentry *dead) { mdead = dead; }
  50. private:
  51. qentry     *First;
  52. qentry     *searchpos;
  53. qentry     *mdead;
  54. };
  55. #endif