// $Id: ZKing.h 2088 2008-11-23 20:26:46Z matevz $ // Copyright (C) 1999-2008, Matevz Tadel. All rights reserved. // This file is part of GLED, released under GNU General Public License version 2. // For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/. #ifndef GledCore_ZKing_H #define GledCore_ZKing_H #include #include #include class ZQueen; class ZKing : public ZHashList, public MIR_Priest { MAC_RNR_FRIENDS(ZKing); friend class Saturn; public: enum LightType_e { LT_Undef, LT_Moon, LT_Sun, LT_Fire }; private: void _init(); protected: ZLink mSaturnInfo; // X{gS} L{} Saturn that shines for this King ID_t mMinID; // X{g} ValOut(-range=>[0,MAX_ID,1,0], -width=>10, -join=>1) ID_t mMaxID; // X{g} ValOut(-range=>[0,MAX_ID,1,0], -width=>10) ID_t mMaxUsedID; // LightType_e mLightType; // X{g} UChar_t mMapNoneTo; // X{gS} 7 PhonyEnum(-type=>ZMirFilter::Result_e, -names=>[R_Allow,R_Deny], -width=>8) virtual void BlessMIR(ZMIR& mir); public: ZKing(const Text_t* n="ZKing", const Text_t* t=0) : ZHashList(n,t), mMinID(0), mMaxID(0), mMaxUsedID(0) { _init(); } ZKing(ID_t min, ID_t max, const Text_t* n="ZKing", const Text_t* t=0) : ZHashList(n,t), mMinID(min), mMaxID(max), mMaxUsedID(min-1) { _init(); } virtual ~ZKing(); virtual void AdEnlightenment(); virtual void Enthrone(ZQueen* queen); void StarToQueen(ZComet* comet, ID_t span); ZComet* MakeComet(); // Dependency of Queens //void AddDependency(ZQueen* target, ZQueen* new_dep); // X{E} C{2} //void RemoveDependency(ZQueen* target, ZQueen* dep); // X{E} C{2} // The following ones are internal. // Should upgrade p7: Ctx{#q}; q ~ do not export to ContextMethodList void reflect_queen(ZQueen* queen_to_mirror, SaturnInfo* moon); // X{E} C{2q} void activate_queen(ZQueen* queen); // X{E} C{1q} void unreflect_queen(ZQueen* queen_to_leave, SaturnInfo* moon); // X{E} C{2q} void receive_eunuch(); // X{E} // A more general queen mirroring infrastructure; server push // void reflect_queen_to_saturn(ZQueen* queen_to_mirror, SaturnInfo* moon); // X{E} C{2} // void reflect_queen_to_all(ZQueen* queen); // X{E} C{1} // void reflect_queen_to_list(ZQueen* queen, ZList* list); // X{E} C{2} #include "ZKing.h7" ClassDef(ZKing, 1); // Ruler of top-level object-spaces }; // endclass ZKing #endif