/*==LICENSE==* CyanWorlds.com Engine - MMOG client, server and tools Copyright (C) 2011 Cyan Worlds, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . You can contact Cyan Worlds, Inc. by email legal@cyan.com or by snail mail at: Cyan Worlds, Inc. 14617 N Newport Hwy Mead, WA 99021 *==LICENSE==*/ ////////////////////////////////////////////////////////////////////// // // pyVaultPlayerNode - a wrapper class to provide interface to the RelVaultNode // ////////////////////////////////////////////////////////////////////// #include "pyVaultPlayerNode.h" #ifndef BUILDING_PYPLASMA #include "pyVault.h" #endif #include "../pfPython/pyAgeInfoStruct.h" #include "../pfPython/pyVaultAgeLinkNode.h" #include "../pfPython/pyVaultPlayerInfoNode.h" #include "../pfPython/pyVaultPlayerInfoListNode.h" #include "../pfPython/pyVaultFolderNode.h" #include "../pfPython/pyVaultChronicleNode.h" #include "../pfPython/pyVaultSDLNode.h" #include "../pfPython/pyAgeLinkStruct.h" #include "../plVault/plVault.h" //============================================================================ static PyObject * GetPlayerVaultFolder (unsigned folderType) { PyObject * result = nil; if (RelVaultNode * rvnPlr = VaultGetPlayerNodeIncRef()) { if (RelVaultNode * rvnFldr = rvnPlr->GetChildFolderNodeIncRef(folderType, 1)) { result = pyVaultFolderNode::New(rvnFldr); rvnFldr->DecRef(); } rvnPlr->DecRef(); } return result; } pyVaultPlayerNode::pyVaultPlayerNode(RelVaultNode *nfsNode) : pyVaultNode(nfsNode) { } //create from the Python side pyVaultPlayerNode::pyVaultPlayerNode() : pyVaultNode(nil) // may not create player nodes from python { } //================================================================== // class RelVaultNode : public plVaultNode // PyObject *pyVaultPlayerNode::GetInbox() { if (PyObject * result = GetPlayerVaultFolder(plVault::kInboxFolder)) return result; PYTHON_RETURN_NONE; } PyObject *pyVaultPlayerNode::GetAvatarOutfitFolder() { if (PyObject * result = GetPlayerVaultFolder(plVault::kAvatarOutfitFolder)) return result; PYTHON_RETURN_NONE; } PyObject *pyVaultPlayerNode::GetAvatarClosetFolder() { if (PyObject * result = GetPlayerVaultFolder(plVault::kAvatarClosetFolder)) return result; PYTHON_RETURN_NONE; } PyObject *pyVaultPlayerNode::GetChronicleFolder() { if (PyObject * result = GetPlayerVaultFolder(plVault::kChronicleFolder)) return result; PYTHON_RETURN_NONE; } PyObject *pyVaultPlayerNode::GetAgeJournalsFolder() { if (PyObject * result = GetPlayerVaultFolder(plVault::kAgeJournalsFolder)) return result; PYTHON_RETURN_NONE; } PyObject *pyVaultPlayerNode::GetIgnoreListFolder() { if (PyObject * result = GetPlayerVaultFolder(plVault::kIgnoreListFolder)) return result; PYTHON_RETURN_NONE; } PyObject *pyVaultPlayerNode::GetBuddyListFolder() { if (PyObject * result = GetPlayerVaultFolder(plVault::kBuddyListFolder)) return result; PYTHON_RETURN_NONE; } PyObject *pyVaultPlayerNode::GetPeopleIKnowAboutFolder() { if (PyObject * result = GetPlayerVaultFolder(plVault::kPeopleIKnowAboutFolder)) return result; PYTHON_RETURN_NONE; } PyObject *pyVaultPlayerNode::GetAgesICanVisitFolder() { if (PyObject * result = GetPlayerVaultFolder(plVault::kAgesICanVisitFolder)) return result; PYTHON_RETURN_NONE; } PyObject *pyVaultPlayerNode::GetAgesIOwnFolder() { if (PyObject * result = GetPlayerVaultFolder(plVault::kAgesIOwnFolder)) return result; PYTHON_RETURN_NONE; } PyObject *pyVaultPlayerNode::GetPlayerInfo() { if (RelVaultNode * rvn = VaultGetPlayerInfoNodeIncRef()) { PyObject * result = pyVaultPlayerInfoNode::New(rvn); rvn->DecRef(); return result; } PYTHON_RETURN_NONE; } PyObject *pyVaultPlayerNode::GetLinkToMyNeighborhood() { plAgeLinkStruct * link = NEW(plAgeLinkStruct); if (VaultGetLinkToMyNeighborhood(link)) { PyObject * result = pyAgeLinkStruct::New(link); return result; } DEL(link); PYTHON_RETURN_NONE; } PyObject *pyVaultPlayerNode::GetLinkToCity() { plAgeLinkStruct * link = NEW(plAgeLinkStruct); if (VaultGetLinkToCity(link)) { PyObject * result = pyAgeLinkStruct::New(link); return result; } DEL(link); PYTHON_RETURN_NONE; } PyObject *pyVaultPlayerNode::GetOwnedAgeLink(const pyAgeInfoStruct *info) { plAgeLinkStruct link; if (VaultGetOwnedAgeLink(info->GetAgeInfo(), &link)) return pyAgeLinkStruct::New(&link); PYTHON_RETURN_NONE; } void pyVaultPlayerNode::RemoveOwnedAgeLink(const char* ageFilename) { plAgeInfoStruct info; info.SetAgeFilename(ageFilename); VaultUnregisterOwnedAgeAndWait(&info); } PyObject *pyVaultPlayerNode::GetVisitAgeLink(const pyAgeInfoStruct *info) { if (RelVaultNode * rvn = VaultGetVisitAgeLinkIncRef(info->GetAgeInfo())) { PyObject * result = pyVaultAgeLinkNode::New(rvn); rvn->DecRef(); return result; } PYTHON_RETURN_NONE; } void pyVaultPlayerNode::RemoveVisitAgeLink(const char *guidstr) { Uuid uuid; GuidFromString(guidstr, &uuid); plAgeInfoStruct info; info.SetAgeInstanceGuid(&plUUID(uuid)); VaultUnregisterOwnedAgeAndWait(&info); } PyObject *pyVaultPlayerNode::FindChronicleEntry(const char *entryName) { wchar wStr[MAX_PATH]; StrToUnicode(wStr, entryName, arrsize(wStr)); if (RelVaultNode * rvn = VaultFindChronicleEntryIncRef(wStr)) { PyObject * result = pyVaultChronicleNode::New(rvn); rvn->DecRef(); return result; } PYTHON_RETURN_NONE; } void pyVaultPlayerNode::SetPlayerName(const char *value) { hsAssert(false, "python may not change a player's name this way"); } std::string pyVaultPlayerNode::GetPlayerName() { if (!fNode) return ""; VaultPlayerNode player(fNode); char ansiStr[MAX_PATH]; StrToAnsi(ansiStr, player.playerName, arrsize(ansiStr)); return ansiStr; } void pyVaultPlayerNode::SetAvatarShapeName(const char *value) { hsAssert(false, "python may not change a player's avatar this way"); } std::string pyVaultPlayerNode::GetAvatarShapeName() { if (!fNode) return ""; VaultPlayerNode player(fNode); char ansiStr[MAX_PATH]; StrToAnsi(ansiStr, player.avatarShapeName, arrsize(ansiStr)); return ansiStr; } void pyVaultPlayerNode::SetDisabled(bool value) { hsAssert(false, "python may not change a player's disable state this way"); } bool pyVaultPlayerNode::IsDisabled() { if (!fNode) return false; VaultPlayerNode player(fNode); return player.disabled; } void pyVaultPlayerNode::SetOnlineTime(UInt32 value) { hsAssert(false, "python may not change a player's online time this way"); } UInt32 pyVaultPlayerNode::GetOnlineTime() { if (!fNode) return 0; VaultPlayerNode player(fNode); return player.onlineTime; } void pyVaultPlayerNode::SetExplorer (bool b) { if (!fNode) return; VaultPlayerNode player(fNode); player.SetExplorer(b); } hsBool pyVaultPlayerNode::IsExplorer () { if (!fNode) return false; VaultPlayerNode player(fNode); return player.explorer; }