123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- /**
- \brief Requester bank contains all registered type instances as singletons. Creating new instances outside of bank might be a bad idea (and a way to memory leakage)
- */
- class PPERequesterBank extends Managed
- {
- private static ref map<int,ref PPERequesterBase> m_Instances;
- private static bool m_Initialized = false;
-
- static int m_lastID = -1;
-
- static const int INVALID = -1;
- static const int REQ_INVENTORYBLUR = RegisterRequester(PPERequester_InventoryBlur);
- static const int REQ_CONTROLLERDISCONNECT = RegisterRequester(PPERequester_ControllerDisconnectBlur);
- static const int REQ_GLASSESSPORTBLACK = RegisterRequester(PPERequester_GlassesSportBlack);
- static const int REQ_GLASSESSPORTBLUE = RegisterRequester(PPERequester_GlassesSportBlue);
- static const int REQ_GLASSESSPORTGREEN = RegisterRequester(PPERequester_GlassesSportGreen);
- static const int REQ_GLASSESSPORTORANGE = RegisterRequester(PPERequester_GlassesSportOrange);
- static const int REQ_GLASSESAVIATOR = RegisterRequester(PPERequester_GlassesAviator);
- static const int REQ_GLASSESDESIGNER = RegisterRequester(PPERequester_GlassesDesignerBlack);
- static const int REQ_GLASSESTACTICAL = RegisterRequester(PPERequester_TacticalGoggles);
- static const int REQ_MOTOHELMETBLACK = RegisterRequester(PPERequester_MotoHelmetBlack);
- static const int REQ_GLASSESWELDING = RegisterRequester(PPERequester_WeldingMask);
- static const int REQ_CAMERANV = RegisterRequester(PPERequester_CameraNV);
- static const int REQ_CAMERAADS = RegisterRequester(PPERequester_CameraADS);
- static const int REQ_BLOODLOSS = RegisterRequester(PPERequester_BloodLoss);
- static const int REQ_DEATHEFFECTS = RegisterRequester(PPERequester_DeathDarkening);
- static const int REQ_UNCONEFFECTS = RegisterRequester(PPERequester_UnconEffects);
- static const int REQ_TUNELVISSION = RegisterRequester(PPERequester_TunnelVisionEffects);
- static const int REQ_BURLAPSACK = RegisterRequester(PPERequester_BurlapSackEffects);
- static const int REQ_INTROCHROMABB = RegisterRequester(PPERequester_IntroChromAbb);
- static const int REQ_FEVEREFFECTS = RegisterRequester(PPERequester_FeverEffects);
- static const int REQ_FLASHBANGEFFECTS = RegisterRequester(PPERequester_FlashbangEffects);
- static const int REQ_SHOCKHITEFFECTS = RegisterRequester(PPERequester_ShockHitReaction);
- static const int REQ_HEALTHHITEFFECTS = RegisterRequester(PPERequester_HealthHitReaction);
- static const int REQ_MENUEFFECTS = RegisterRequester(PPERequester_MenuEffects);
- static const int REQ_CONTROLLERBLUR = RegisterRequester(PPERequester_ControlsBlur);
- static const int REQ_SERVERBROWSEREFFECTS = RegisterRequester(PPERequester_ServerBrowserBlur);
- static const int REQ_TUTORIALEFFECTS = RegisterRequester(PPERequester_TutorialMenu);
- static const int REQ_CONTAMINATEDAREA = RegisterRequester(PPERequester_ContaminatedAreaTint);
- static const int REQ_SPOOKYAREA = RegisterRequester(PPERequester_SpookyAreaTint);
- static const int REQ_PAINBLUR = RegisterRequester(PPERequester_PainBlur);
- static const int REQ_UNDERGROUND = RegisterRequester(PPERUndergroundAcco);
- static const int REQ_DROWNING = RegisterRequester(PPERequester_Drowning);
- //static const int REQ_HMP_LVL3 = RegisterRequester(PPERequester_HeavyMetalPoisoning_3);
- static const int REQ_HMP_GHOST = RegisterRequester(PPERequester_HMPGhosts);
- static const int REQ_LATENCYBLUR = RegisterRequester(PPERequester_LatencyBlur);
- static const int REQ_FEEDBACKBLUR = RegisterRequester(PPERequester_FeedbackBlur);
-
- private static ref PPERequesterRegistrations m_Registrations; //more registrations to be placed here
-
- static void Init()
- {
- m_Registrations = new PPERequesterRegistrations;
-
- if (!m_Instances)
- m_Instances = new map<int,ref PPERequesterBase>;
-
- m_Initialized = true;
- }
-
- static void Cleanup()
- {
- if (m_Initialized)
- {
- delete m_Registrations;
- m_Instances.Clear();
- }
- }
-
- /**
- \brief Returns an instance (singleton) of a requester based on typename.
- \param type \p typename Typename of the requester.
- \return \p PPERequesterBase Requester singleton.
- \note Returns only already registered instances, does not register anything.
- */
- static PPERequesterBase GetRequester(typename type)
- {
- if (!type)
- {
- Error("Requested type is NULL!");
- return null;
- }
-
- PPERequesterBase temp;
- PPERequesterBase ret;
- for (int i = 0; i < m_Instances.Count(); i++)
- {
- temp = m_Instances.GetElement(i);
- if (temp.Type() == type)
- {
- Class.CastTo(ret,temp);
- break;
- }
- }
-
- if (!ret)
- {
- Debug.Log("'" + type.ToString() + "' not found in bank! Register first in 'RegisterRequester' method.");
- }
- return ret;
- }
-
- /**
- \brief Returns an instance (singleton) of a requester based on index.
- \param index \p int Index of the registered requester.
- \return \p PPERequesterBase Requester singleton.
- \note Returns only already registered instances, does not register anything.
- */
- static PPERequesterBase GetRequester(int index)
- {
- PPERequesterBase ret = m_Instances.Get(index);
-
- if (!ret)
- {
- Debug.Log("Requester idx '" + index + "' not found in bank! Register first in 'RegisterRequester' method.");
- }
- return ret;
- }
-
- /**
- \brief Returns an ID of a requester type.
- \param type \p typename Typename of the requester.
- \return \p int Requester ID.
- \note Returns '-1' if not found.
- */
- static int GetRequesterID(typename type)
- {
- int ret = -1;
- PPERequesterBase temp;
-
- for (int i = 0; i < m_Instances.Count(); i++)
- {
- temp = m_Instances.GetElement(i);
- if (temp.Type() == type)
- {
- ret = m_Instances.GetKey(i);
- }
- }
-
- if ( ret == -1 )
- {
- Debug.Log("Requester instance of the '" + type.ToString() + "' type not found in bank! Register first in 'RegisterRequester' method.");
- }
- return ret;
- }
-
- /**
- \brief Returns a typename from a requester ID.
- \param index \p int ID of the requester.
- \return \p typename Requester typename.
- */
- static typename GetRequesterTypename(int index)
- {
- typename ret;
- PPERequesterBase temp = m_Instances.Get(index);
- if ( !temp )
- {
- Debug.Log("No requester exists under idx '" + index + "' in bank! Register first in 'RegisterRequester' method.");
- }
- else
- {
- ret = temp.Type();
- }
-
- return ret;
- }
-
- /**
- \brief Registers new requester type.
- \note Performed only on game start. New requesters can be registered in 'PPERequesterRegistrations'
- */
- static int RegisterRequester(typename type)
- {
- if (!m_Instances)
- m_Instances = new map<int,ref PPERequesterBase>;
-
- if ( GetRequester(type) != null )
- {
- //Error("Trying to register an already existing requester type: " + type);
- Debug.Log("Trying to register an already existing requester type: " + type);
- return -1;
- }
-
- m_lastID++;
-
- PPERequesterBase req;
- req = PPERequesterBase.Cast(type.Spawn());
- req.SetRequesterIDX(m_lastID);
- m_Instances.Set(m_lastID,req);
-
- return m_lastID;
- }
-
- //! Verifies the instance
- static bool VerifyRequester(PPERequesterBase req)
- {
- if (!m_Initialized) //initial registrations are fair game
- {
- return true;
- }
-
- PPERequesterBase temp;
- for (int i = 0; i < m_Instances.Count(); i++)
- {
- temp = m_Instances.GetElement(i);
- if (temp == req)
- {
- return true;
- }
- }
-
- //Error("Requester instance " + req + " not valid! Please use registered instances from PPERequesterBank.");
- Debug.Log("Requester instance '" + req + "' not valid! Please use registered instances from PPERequesterBank.");
- return false;
- }
-
- /*static void DumpInstances()
- {
- Print("DumpInstances");
- for (int i = 0; i < m_Instances.Count(); i++)
- {
- Print(m_Instances.GetKey(i));
- Print(m_Instances.GetElement(i));
- }
- }*/
- }
- //! Mod this, if you wish to register custom requesters inside 'RegisterAdditionalRequesters' override
- class PPERequesterRegistrations extends Managed
- {
- void PPERequesterRegistrations()
- {
- RegisterAdditionalRequesters();
- }
-
- protected void RegisterAdditionalRequesters()
- {
- //PPERequesterBank.RegisterRequester(TestReq);
- }
- }
- /*modded class PPERequesterRegistrations extends Managed
- {
- override protected void RegisterAdditionalRequesters()
- {
- PPERequesterBank.RegisterRequester(TestReq2);
- }
- }*/
|