BVB Source Codes

CRYENGINE Show FlowOnlineStatsNodes.cpp Source code

Return Download CRYENGINE: download FlowOnlineStatsNodes.cpp Source code - Download CRYENGINE Source code - Type:.cpp
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #include "StdAfx.h"
  4. #include "IPlayerProfiles.h"
  5.  
  6. #include <CryFlowGraph/IFlowBaseNode.h>
  7.  
  8. class CFlowNode_ProfileAttribute : public CFlowBaseNode<eNCT_Singleton>
  9. {
  10. private:
  11.         enum EInputPorts
  12.         {
  13.                 eIP_Name = 0,
  14.                 eIP_Get,
  15.                 eIP_Set,
  16.         };
  17.  
  18.         enum EOutputPorts
  19.         {
  20.                 eOP_Value = 0,
  21.                 eOP_Error,
  22.         };
  23.  
  24. public:
  25.         CFlowNode_ProfileAttribute(SActivationInfo* pActInfo)
  26.         {
  27.  
  28.         }
  29.  
  30.         virtual void GetConfiguration(SFlowNodeConfig& config)
  31.         {
  32.                 static const SInputPortConfig in_config[] = {
  33.                         InputPortConfig<string>("Name", _HELP("Name of the attribute as provided in the XMLs")),
  34.                         InputPortConfig_Void("Get",     _HELP("Retrieve the current value, outputted in 'Val'")),
  35.                         InputPortConfig_AnyType("Set",  _HELP("Set a new value for the attribute, input the value in this port")),
  36.                         { 0 }
  37.                 };
  38.                 static const SOutputPortConfig out_config[] = {
  39.                         OutputPortConfig_AnyType("Val"),
  40.                         OutputPortConfig_Void("Error"),
  41.                         { 0 }
  42.                 };
  43.  
  44.                 config.sDescription = _HELP("Set or Get profile attributes. \n the available attributes can be found in \\Libs\\Config\\Profiles\\default\\attributes.xml and \\Scripts\\Network\\OnlineAttributes.xml. \n The online attributes require OnlineAttributes to be loaded first - see PlayerProfile:OnlineAttributes");
  45.                 config.pInputPorts = in_config;
  46.                 config.pOutputPorts = out_config;
  47.                 config.SetCategory(EFLN_APPROVED);
  48.         }
  49.  
  50.         virtual void ProcessEvent(EFlowEvent event, SActivationInfo* pActInfo)
  51.         {
  52.                 switch (event)
  53.                 {
  54.                 case eFE_Activate:
  55.                         {
  56.                                 if (IsPortActive(pActInfo, eIP_Get))
  57.                                 {
  58.                                         IPlayerProfile* pProfile = NULL;
  59.                                         if (IPlayerProfileManager* pProfileMan = gEnv->pGameFramework->GetIPlayerProfileManager())
  60.                                         {
  61.                                                 const char* user = pProfileMan->GetCurrentUser();
  62.                                                 pProfile = pProfileMan->GetCurrentProfile(user);
  63.                                                 TFlowInputData data;
  64.                                                 if (!pProfile || pProfile->GetAttribute(GetPortString(pActInfo, eIP_Name), data))
  65.                                                 {
  66.                                                         ActivateOutput(pActInfo, eOP_Value, data);
  67.                                                 }
  68.                                                 else
  69.                                                 {
  70.                                                         ActivateOutput(pActInfo, eOP_Error, 1);
  71.                                                 }
  72.                                         }
  73.                                 }
  74.  
  75.                                 if (IsPortActive(pActInfo, eIP_Set))
  76.                                 {
  77.                                         IPlayerProfile* pProfile = NULL;
  78.                                         if (IPlayerProfileManager* pProfileMan = gEnv->pGameFramework->GetIPlayerProfileManager())
  79.                                         {
  80.                                                 const char* user = pProfileMan->GetCurrentUser();
  81.                                                 pProfile = pProfileMan->GetCurrentProfile(user);
  82.                                                 if (!pProfile || !pProfile->SetAttribute(GetPortString(pActInfo, eIP_Name), GetPortAny(pActInfo, eIP_Set)))
  83.                                                 {
  84.                                                         ActivateOutput(pActInfo, eOP_Error, 1);
  85.                                                 }
  86.                                         }
  87.                                 }
  88.                         }
  89.                         break;
  90.                 }
  91.         }
  92.  
  93.         virtual void GetMemoryUsage(ICrySizer* s) const
  94.         {
  95.                 s->Add(*this);
  96.         }
  97. };
  98.  
  99. class CFlowNode_OnlineAttributes : public CFlowBaseNode<eNCT_Singleton>
  100. {
  101. private:
  102.         enum EInputPorts
  103.         {
  104.                 eIP_Load = 0,
  105.                 eIP_Save,
  106.         };
  107.  
  108.         enum EOutputPorts
  109.         {
  110.                 eOP_Done = 0,
  111.         };
  112.  
  113. public:
  114.         CFlowNode_OnlineAttributes(SActivationInfo* pActInfo)
  115.         {
  116.  
  117.         }
  118.  
  119.         virtual void GetConfiguration(SFlowNodeConfig& config)
  120.         {
  121.                 static const SInputPortConfig in_config[] = {
  122.                         InputPortConfig_Void("Load"),
  123.                         InputPortConfig_Void("Save"),
  124.                         { 0 }
  125.                 };
  126.                 static const SOutputPortConfig out_config[] = {
  127.                         OutputPortConfig_AnyType("Done", _HELP("Outputs when request was done, doesnt inform whether attributes are loaded or saved successfully")),
  128.                         { 0 }
  129.                 };
  130.  
  131.                 config.sDescription = _HELP("This Loads or Saves the online attributes, use the ProfileAttributes to set values for them. Load needs to be called before you are able to edit them");
  132.                 config.pInputPorts = in_config;
  133.                 config.pOutputPorts = out_config;
  134.                 config.SetCategory(EFLN_APPROVED);
  135.         }
  136.         virtual void ProcessEvent(EFlowEvent event, SActivationInfo* pActInfo)
  137.         {
  138.                 switch (event)
  139.                 {
  140.                 case eFE_Activate:
  141.                         {
  142.                                 if (IsPortActive(pActInfo, eIP_Load) || IsPortActive(pActInfo, eIP_Save))
  143.                                 {
  144.                                         IPlayerProfile* pProfile = NULL;
  145.                                         if (IPlayerProfileManager* pProfileMan = gEnv->pGameFramework->GetIPlayerProfileManager())
  146.                                         {
  147.                                                 const char* user = pProfileMan->GetCurrentUser();
  148.                                                 pProfile = pProfileMan->GetCurrentProfile(user);
  149.  
  150.                                                 if (!pProfile)
  151.                                                         break;
  152.  
  153.                                                 if (IsPortActive(pActInfo, eIP_Save))
  154.                                                 {
  155.                                                         pProfileMan->SaveOnlineAttributes(pProfile);
  156.                                                 }
  157.                                                 else
  158.                                                 {
  159.                                                         pProfileMan->LoadOnlineAttributes(pProfile);
  160.                                                 }
  161.  
  162.                                                 ActivateOutput(pActInfo, eOP_Done, 1);
  163.                                         }
  164.                                 }
  165.                         }
  166.                         break;
  167.                 }
  168.         }
  169.  
  170.         virtual void GetMemoryUsage(ICrySizer* s) const
  171.         {
  172.                 s->Add(*this);
  173.         }
  174. };
  175.  
  176. REGISTER_FLOW_NODE("PlayerProfile:ProfileAttribute", CFlowNode_ProfileAttribute);
  177. REGISTER_FLOW_NODE("PlayerProfile:OnlineAttributes", CFlowNode_OnlineAttributes);
  178.  
downloadFlowOnlineStatsNodes.cpp Source code - Download CRYENGINE Source code
Related Source Codes/Software:
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top