Ticket #2913: Hack_CCmpVisibilityScripted_IsActive_0.1.diff
File Hack_CCmpVisibilityScripted_IsActive_0.1.diff, 5.7 KB (added by , 9 years ago) |
---|
-
source/simulation2/Simulation2.cpp
40 40 #include "ps/Filesystem.h" 41 41 #include "ps/Loader.h" 42 42 #include "ps/Profile.h" 43 #include "ps/ProfileViewer.h" 43 44 #include "ps/Pyrogenesis.h" 44 45 #include "ps/XML/Xeromyces.h" 45 46 … … 458 459 459 460 if (m_EnableOOSLog) 460 461 DumpState(); 462 463 if (m_TurnNumber % 1 == 0) 464 g_ProfileViewer.SaveToFile(); 461 465 462 466 // Start computing AI for the next turn 463 467 CmpPtr<ICmpAIManager> cmpAIManager(m_SimContext, SYSTEM_ENTITY); -
source/simulation2/components/CCmpAIManager.cpp
890 890 // AI players can cheat and see through FoW/SoD, since that greatly simplifies 891 891 // their implementation. 892 892 // (TODO: maybe cleverer AIs should be able to optionally retain FoW/SoD) 893 CmpPtr<ICmpRangeManager> cmpRangeManager(GetSystemEntity());894 if (cmpRangeManager)895 cmpRangeManager->SetLosRevealAll(player, true);893 //CmpPtr<ICmpRangeManager> cmpRangeManager(GetSystemEntity()); 894 //if (cmpRangeManager) 895 // cmpRangeManager->SetLosRevealAll(player, true); 896 896 } 897 897 898 898 virtual void SetRNGSeed(uint32_t seed) -
source/simulation2/components/CCmpRangeManager.cpp
1544 1544 { 1545 1545 PROFILE("UpdateVisibilityData"); 1546 1546 1547 for (i32 n = 0; n < m_LosTilesPerSide*m_LosTilesPerSide; ++n)1548 1547 { 1549 if (m_DirtyVisibility[n] == 1 || m_GlobalVisibilityUpdate) 1548 float dirty = 0; 1549 float valid = 0; 1550 PROFILE("UpdateVisibilityData1"); 1551 for (i32 n = 0; n < m_LosTilesPerSide*m_LosTilesPerSide; ++n) 1550 1552 { 1551 for (std::set<entity_id_t>::iterator it = m_LosTiles[n].begin(); 1552 it != m_LosTiles[n].end(); 1553 ++it) 1553 if (m_DirtyVisibility[n] == 1) 1554 dirty++; 1555 else 1556 valid++; 1557 if (m_DirtyVisibility[n] == 1 || m_GlobalVisibilityUpdate) 1554 1558 { 1555 UpdateVisibility(*it); 1559 for (std::set<entity_id_t>::iterator it = m_LosTiles[n].begin(); 1560 it != m_LosTiles[n].end(); 1561 ++it) 1562 { 1563 UpdateVisibility(*it); 1564 } 1565 m_DirtyVisibility[n] = 0; 1556 1566 } 1557 m_DirtyVisibility[n] = 0;1558 1567 } 1568 std::cout << "dirty: " << 100/(valid+dirty)*dirty << "%" << std::endl; 1569 //std::cout << "dirty: " << dirty << " \t valid: " << valid << std::endl; 1559 1570 } 1571 1560 1572 1561 for (std::vector<entity_id_t>::iterator it = m_ModifiedEntities.begin(); it != m_ModifiedEntities.end(); ++it)1562 1573 { 1563 // Don't bother updating if we already did it in a global update 1564 if (!m_GlobalVisibilityUpdate) 1565 UpdateVisibility(*it); 1574 PROFILE("UpdateVisibilityData2"); 1575 for (std::vector<entity_id_t>::iterator it = m_ModifiedEntities.begin(); it != m_ModifiedEntities.end(); ++it) 1576 { 1577 // Don't bother updating if we already did it in a global update 1578 if (!m_GlobalVisibilityUpdate) 1579 UpdateVisibility(*it); 1580 } 1566 1581 } 1567 1582 m_ModifiedEntities.clear(); 1568 1583 -
source/simulation2/components/ICmpVisibility.cpp
28 28 class CCmpVisibilityScripted : public ICmpVisibility 29 29 { 30 30 public: 31 DEFAULT_SCRIPT_WRAPPER(VisibilityScripted) 31 DEFAULT_SCRIPT_WRAPPER_NO_CTOR(VisibilityScripted) 32 33 CCmpVisibilityScripted(ScriptInterface& scriptInterface, JS::HandleValue instance) : 34 m_Script(scriptInterface, instance), 35 m_IsActivated(false) 36 { } 37 38 virtual void Init(const CParamNode& paramNode) 39 { 40 m_Script.Init(paramNode, GetEntityId()); 41 m_IsActivated = m_Script.Call<bool>("IsActivated"); 42 } 32 43 33 44 virtual bool IsActivated() 34 45 { 35 return m_Script.Call<bool>("IsActivated"); 46 return m_IsActivated; 47 //return m_Script.Call<bool>("IsActivated"); 36 48 } 37 49 38 50 virtual ICmpRangeManager::ELosVisibility GetVisibility(player_id_t player, bool isVisible, bool isExplored) … … 62 74 { 63 75 return m_Script.Call<bool>("GetAlwaysVisible"); 64 76 } 77 private: 78 bool m_IsActivated; 65 79 }; 66 80 67 81 REGISTER_COMPONENT_SCRIPT_WRAPPER(VisibilityScripted) -
source/simulation2/system/Component.h
48 48 { \ 49 49 return CID_##cname; \ 50 50 } 51 52 #define DEFAULT_SCRIPT_WRAPPER(cname) \ 53 CCmp##cname(ScriptInterface& scriptInterface, JS::HandleValue instance) : m_Script(scriptInterface, instance) { } \ 54 virtual void Init(const CParamNode& paramNode) \ 55 { \ 56 m_Script.Init(paramNode, GetEntityId()); \ 57 } \ 58 DEFAULT_SCRIPT_WRAPPER_NO_CTOR(cname); 51 59 52 #define DEFAULT_SCRIPT_WRAPPER (cname) \60 #define DEFAULT_SCRIPT_WRAPPER_NO_CTOR(cname) \ 53 61 static void ClassInit(CComponentManager& UNUSED(componentManager)) { } \ 54 62 static IComponent* Allocate(ScriptInterface& scriptInterface, JS::HandleValue instance) \ 55 63 { \ … … 59 67 { \ 60 68 delete static_cast<CCmp##cname*> (cmp); \ 61 69 } \ 62 CCmp##cname(ScriptInterface& scriptInterface, JS::HandleValue instance) : m_Script(scriptInterface, instance) { } \63 70 static std::string GetSchema() \ 64 71 { \ 65 72 return "<a:component type='script-wrapper'/><empty/>"; \ 66 73 } \ 67 virtual void Init(const CParamNode& paramNode) \68 { \69 m_Script.Init(paramNode, GetEntityId()); \70 } \71 74 virtual void Deinit() \ 72 75 { \ 73 76 m_Script.Deinit(); \