2006-01-19 Al Riddoch <alriddoch@zepler.org>
* aiclient/ClientAccount.cpp, aiclient/ClientAccount.h,
aiclient/ClientConnection.cpp, aiclient/ClientConnection.h,
aiclient/client.cpp, aiclient/client.h, client/BaseClient.cpp,
client/BaseClient.h, client/CharacterClient.cpp,
client/CharacterClient.h, client/ClientConnection.cpp,
client/ClientConnection.h, client/CreatorClient.cpp,
client/CreatorClient.h, client/ObserverClient.cpp,
client/ObserverClient.h, client/Py_CreatorClient.cpp,
client/Py_CreatorClient.h, client/client.cpp,
client/define_world.cpp, client/define_world.h, common/Add.h,
common/Affect.h, common/AtlasFileLoader.cpp,
common/AtlasFileLoader.h, common/Attack.h, common/BaseEntity.cpp,
common/BaseEntity.h, common/BaseWorld.cpp, common/BaseWorld.h,
common/Burn.h, common/Chop.h, common/Connect.h, common/CustomOp.cpp,
common/CustomOp.h, common/CustomOp_impl.h, common/Cut.h,
common/Database.cpp, common/Database.h, common/Delve.h, common/Dig.h,
common/Eat.h, common/FormattedXMLWriter.cpp,
common/FormattedXMLWriter.h, common/Generic.h, common/Load.h,
common/Monitor.h, common/Mow.h, common/Nourish.h,
common/OOGThing.cpp, common/OOGThing.h, common/Property.cpp,
common/Property.h, common/Property_impl.h, common/Save.h,
common/Setup.h, common/Tick.h, common/Unseen.h, common/Update.h,
common/Use.h, common/Wield.h, common/accountbase.cpp,
common/accountbase.h, common/const.cpp, common/const.h,
common/custom.cpp, common/debug.h, common/globals.cpp,
common/globals.h, common/id.cpp, common/id.h, common/inheritance.cpp,
common/inheritance.h, common/inheritance_impl.h, common/log.cpp,
common/log.h, common/newid.cpp, common/nls.h, common/op_switch.h,
common/operations.cpp, common/operations.h, common/random.h,
common/refno.h, common/serialno.cpp, common/serialno.h,
common/system.cpp, common/system.h, common/terrain_utils.cpp,
common/terrain_utils.h, common/type_utils.h, common/types.h,
common/utility.cpp, common/utility.h, modules/DateTime.cpp,
modules/DateTime.h, modules/Location.cpp, modules/Location.h,
modules/WorldTime.cpp, modules/WorldTime.h, physics/BBox.cpp,
physics/BBox.h, physics/Collision.cpp, physics/Collision.h,
physics/Quaternion.cpp, physics/Quaternion.h, physics/Vector3D.cpp,
physics/Vector3D.h, physics/VectorPol.h, rulesets/Area.cpp,
rulesets/Area.h, rulesets/AreaProperty.cpp, rulesets/AreaProperty.h,
rulesets/ArithmeticScript.cpp, rulesets/ArithmeticScript.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/CalendarProperty.cpp, rulesets/CalendarProperty.h,
rulesets/Character.cpp, rulesets/Character.h, rulesets/Combat.cpp,
rulesets/Combat.h, rulesets/Container.cpp, rulesets/Container.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/EntityProperties.cpp,
rulesets/Entity_getLocation.h, rulesets/Fell.cpp, rulesets/Fell.h,
rulesets/Food.cpp, rulesets/Food.h, rulesets/Line.cpp,
rulesets/Line.h, rulesets/LineProperty.cpp, rulesets/LineProperty.h,
rulesets/MemEntity.cpp, rulesets/MemEntity.h, rulesets/MemMap.cpp,
rulesets/MemMap.h, rulesets/MemMap_methods.h,
rulesets/MindFactory.cpp, rulesets/MindFactory.h, rulesets/Missile.h,
rulesets/Motion.cpp, rulesets/Motion.h, rulesets/Movement.cpp,
rulesets/Movement.h, rulesets/Pedestrian.cpp, rulesets/Pedestrian.h,
rulesets/Plant.cpp, rulesets/Plant.h, rulesets/Py_BBox.cpp,
rulesets/Py_BBox.h, rulesets/Py_EntityWrapper.h,
rulesets/Py_Location.cpp, rulesets/Py_Location.h,
rulesets/Py_Map.cpp, rulesets/Py_Map.h, rulesets/Py_Mind.cpp,
rulesets/Py_Mind.h, rulesets/Py_Object.cpp, rulesets/Py_Object.h,
rulesets/Py_Operation.cpp, rulesets/Py_Operation.h,
rulesets/Py_Oplist.cpp, rulesets/Py_Oplist.h, rulesets/Py_Optime.cpp,
rulesets/Py_Optime.h, rulesets/Py_Point3D.cpp, rulesets/Py_Point3D.h,
rulesets/Py_Property.cpp, rulesets/Py_Property.h,
rulesets/Py_Quaternion.cpp, rulesets/Py_Quaternion.h,
rulesets/Py_RootEntity.cpp, rulesets/Py_RootEntity.h,
rulesets/Py_Statistics.cpp, rulesets/Py_Statistics.h,
rulesets/Py_Task.cpp, rulesets/Py_Task.h, rulesets/Py_Thing.cpp,
rulesets/Py_Thing.h, rulesets/Py_Vector3D.cpp,
rulesets/Py_Vector3D.h, rulesets/Py_World.cpp, rulesets/Py_World.h,
rulesets/Py_WorldTime.cpp, rulesets/Py_WorldTime.h,
rulesets/PythonArithmeticScript.cpp,
rulesets/PythonArithmeticScript.h, rulesets/PythonMindScript.cpp,
rulesets/PythonMindScript.h, rulesets/PythonScript.cpp,
rulesets/PythonScript.h, rulesets/PythonThingScript.cpp,
rulesets/PythonThingScript.h, rulesets/PythonWrapper.cpp,
rulesets/PythonWrapper.h, rulesets/Python_API.cpp,
rulesets/Python_API.h, rulesets/Python_Script_Utils.h,
rulesets/Script.cpp, rulesets/Script.h, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Statistics.cpp, rulesets/Statistics.h,
rulesets/StatisticsProperty.cpp, rulesets/StatisticsProperty.h,
rulesets/Structure.cpp, rulesets/Structure.h, rulesets/Task.cpp,
rulesets/Task.h, rulesets/TaskScript.cpp, rulesets/TaskScript.h,
rulesets/TerrainProperty.cpp, rulesets/TerrainProperty.h,
rulesets/Thing.cpp, rulesets/Thing.h, rulesets/ThingFactory.cpp,
rulesets/ThingFactory.h, rulesets/World.cpp, rulesets/World.h,
rulesets/attributes.h, server/Account.cpp, server/Account.h,
server/Admin.cpp, server/Admin.h, server/ArithmeticFactory.cpp,
server/ArithmeticFactory.h, server/CommClient.cpp,
server/CommClient.h, server/CommIdleSocket.cpp,
server/CommIdleSocket.h, server/CommListener.cpp,
server/CommListener.h, server/CommLocalClient.cpp,
server/CommLocalClient.h, server/CommMDNSPublisher.cpp,
server/CommMDNSPublisher.h, server/CommMaster.cpp,
server/CommMaster.h, server/CommMetaClient.cpp,
server/CommMetaClient.h, server/CommPSQLSocket.cpp,
server/CommPSQLSocket.h, server/CommPeer.cpp,
server/CommPeer.h, server/CommPeerListener.cpp,
server/CommPeerListener.h, server/CommRemoteClient.cpp,
server/CommRemoteClient.h, server/CommServer.cpp,
server/CommServer.h, server/CommSlaveClient.cpp,
server/CommSlaveClient.h, server/CommSlaveListener.cpp,
server/CommSlaveListener.h, server/CommSocket.cpp,
server/CommSocket.h, server/CommUnixListener.cpp,
server/CommUnixListener.h, server/Connection.cpp,
server/Connection.h, server/Connection_methods.h,
server/EntityFactory.cpp, server/EntityFactory.h,
server/ExternalMind.cpp, server/ExternalMind.h,
server/Idle.cpp, server/Idle.h, server/Lobby.cpp, server/Lobby.h,
server/Master.cpp, server/Master.h, server/Peer.cpp, server/Peer.h,
server/Persistance.cpp, server/Persistance.h,
server/PersistantThingFactory.cpp, server/PersistantThingFactory.h,
server/PersistantThingFactory_impl.h, server/Persistor.cpp,
server/Persistor.h, server/Persistor_impl.h,
server/Player.cpp, server/Player.h, server/Restoration.cpp,
server/Restoration.h, server/Restorer.cpp, server/Restorer.h,
server/Restorer_impl.h, server/ScriptFactory.cpp,
server/ScriptFactory.h, server/ServerRouting.cpp,
server/ServerRouting.h, server/ServerRouting_methods.h,
server/SlaveClientConnection.cpp, server/SlaveClientConnection.h,
server/TaskFactory.cpp, server/TaskFactory.h,
server/TrustedConnection.cpp, server/TrustedConnection.h,
server/WorldRouter.cpp, server/WorldRouter.h,
server/server.cpp, server/server.h, server/slave.cpp,
tests/Areatest.cpp, tests/BaseEntitytest.cpp,
tests/Charactertest.cpp, tests/Containertest.cpp,
tests/Creatortest.cpp, tests/EntityExerciser.h,
tests/EntityFactorytest.cpp, tests/Entitytest.cpp,
tests/Foodtest.cpp, tests/IGEntityExerciser.h,
tests/Linetest.cpp, tests/Locationtest.cpp, tests/OOGThingtest.cpp,
tests/Planttest.cpp, tests/Propertytest.cpp, tests/Stackabletest.cpp,
tests/Structuretest.cpp, tests/Tasktest.cpp, tests/TestWorld.h,
tests/Thingtest.cpp, tests/WorldTimetest.cpp, tests/Worldtest.cpp,
tests/allOperations.h, tests/collisiontest.cpp, tests/consttest.cpp,
tests/distancetest.cpp, tests/emergencetest.cpp,
tests/inheritancetest.cpp, tests/logtest.cpp, tests/randomtest.cpp,
tests/systemtest.cpp, tests/transformtest.cpp,
tests/type_utilstest.cpp, tests/utilitytest.cpp,
tools/AdminClient.cpp, tools/AdminClient.h, tools/cyaddrules.cpp,
tools/cycmd.cpp, tools/cyconfig.cpp, tools/cyconvertrules.cpp,
tools/cyctrl.cpp, tools/cydbload.cpp, tools/cydumprules.cpp,
tools/cyisoload.cpp, tools/cyloadrules.cpp, tools/cypasswd.cpp,
tools/cywatchdog.cpp: Replace the copyright and license statements
with new versions that include disclaimer of warranty, and
permit distribution under later versions of the GPL.
2006-01-19 02:17:06 +00:00
|
|
|
// Cyphesis Online RPG Server and AI Engine
|
2005-08-27 14:52:12 +00:00
|
|
|
// Copyright (C) 2000-2005 Alistair Riddoch
|
2006-01-19 Al Riddoch <alriddoch@zepler.org>
* aiclient/ClientAccount.cpp, aiclient/ClientAccount.h,
aiclient/ClientConnection.cpp, aiclient/ClientConnection.h,
aiclient/client.cpp, aiclient/client.h, client/BaseClient.cpp,
client/BaseClient.h, client/CharacterClient.cpp,
client/CharacterClient.h, client/ClientConnection.cpp,
client/ClientConnection.h, client/CreatorClient.cpp,
client/CreatorClient.h, client/ObserverClient.cpp,
client/ObserverClient.h, client/Py_CreatorClient.cpp,
client/Py_CreatorClient.h, client/client.cpp,
client/define_world.cpp, client/define_world.h, common/Add.h,
common/Affect.h, common/AtlasFileLoader.cpp,
common/AtlasFileLoader.h, common/Attack.h, common/BaseEntity.cpp,
common/BaseEntity.h, common/BaseWorld.cpp, common/BaseWorld.h,
common/Burn.h, common/Chop.h, common/Connect.h, common/CustomOp.cpp,
common/CustomOp.h, common/CustomOp_impl.h, common/Cut.h,
common/Database.cpp, common/Database.h, common/Delve.h, common/Dig.h,
common/Eat.h, common/FormattedXMLWriter.cpp,
common/FormattedXMLWriter.h, common/Generic.h, common/Load.h,
common/Monitor.h, common/Mow.h, common/Nourish.h,
common/OOGThing.cpp, common/OOGThing.h, common/Property.cpp,
common/Property.h, common/Property_impl.h, common/Save.h,
common/Setup.h, common/Tick.h, common/Unseen.h, common/Update.h,
common/Use.h, common/Wield.h, common/accountbase.cpp,
common/accountbase.h, common/const.cpp, common/const.h,
common/custom.cpp, common/debug.h, common/globals.cpp,
common/globals.h, common/id.cpp, common/id.h, common/inheritance.cpp,
common/inheritance.h, common/inheritance_impl.h, common/log.cpp,
common/log.h, common/newid.cpp, common/nls.h, common/op_switch.h,
common/operations.cpp, common/operations.h, common/random.h,
common/refno.h, common/serialno.cpp, common/serialno.h,
common/system.cpp, common/system.h, common/terrain_utils.cpp,
common/terrain_utils.h, common/type_utils.h, common/types.h,
common/utility.cpp, common/utility.h, modules/DateTime.cpp,
modules/DateTime.h, modules/Location.cpp, modules/Location.h,
modules/WorldTime.cpp, modules/WorldTime.h, physics/BBox.cpp,
physics/BBox.h, physics/Collision.cpp, physics/Collision.h,
physics/Quaternion.cpp, physics/Quaternion.h, physics/Vector3D.cpp,
physics/Vector3D.h, physics/VectorPol.h, rulesets/Area.cpp,
rulesets/Area.h, rulesets/AreaProperty.cpp, rulesets/AreaProperty.h,
rulesets/ArithmeticScript.cpp, rulesets/ArithmeticScript.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/CalendarProperty.cpp, rulesets/CalendarProperty.h,
rulesets/Character.cpp, rulesets/Character.h, rulesets/Combat.cpp,
rulesets/Combat.h, rulesets/Container.cpp, rulesets/Container.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/EntityProperties.cpp,
rulesets/Entity_getLocation.h, rulesets/Fell.cpp, rulesets/Fell.h,
rulesets/Food.cpp, rulesets/Food.h, rulesets/Line.cpp,
rulesets/Line.h, rulesets/LineProperty.cpp, rulesets/LineProperty.h,
rulesets/MemEntity.cpp, rulesets/MemEntity.h, rulesets/MemMap.cpp,
rulesets/MemMap.h, rulesets/MemMap_methods.h,
rulesets/MindFactory.cpp, rulesets/MindFactory.h, rulesets/Missile.h,
rulesets/Motion.cpp, rulesets/Motion.h, rulesets/Movement.cpp,
rulesets/Movement.h, rulesets/Pedestrian.cpp, rulesets/Pedestrian.h,
rulesets/Plant.cpp, rulesets/Plant.h, rulesets/Py_BBox.cpp,
rulesets/Py_BBox.h, rulesets/Py_EntityWrapper.h,
rulesets/Py_Location.cpp, rulesets/Py_Location.h,
rulesets/Py_Map.cpp, rulesets/Py_Map.h, rulesets/Py_Mind.cpp,
rulesets/Py_Mind.h, rulesets/Py_Object.cpp, rulesets/Py_Object.h,
rulesets/Py_Operation.cpp, rulesets/Py_Operation.h,
rulesets/Py_Oplist.cpp, rulesets/Py_Oplist.h, rulesets/Py_Optime.cpp,
rulesets/Py_Optime.h, rulesets/Py_Point3D.cpp, rulesets/Py_Point3D.h,
rulesets/Py_Property.cpp, rulesets/Py_Property.h,
rulesets/Py_Quaternion.cpp, rulesets/Py_Quaternion.h,
rulesets/Py_RootEntity.cpp, rulesets/Py_RootEntity.h,
rulesets/Py_Statistics.cpp, rulesets/Py_Statistics.h,
rulesets/Py_Task.cpp, rulesets/Py_Task.h, rulesets/Py_Thing.cpp,
rulesets/Py_Thing.h, rulesets/Py_Vector3D.cpp,
rulesets/Py_Vector3D.h, rulesets/Py_World.cpp, rulesets/Py_World.h,
rulesets/Py_WorldTime.cpp, rulesets/Py_WorldTime.h,
rulesets/PythonArithmeticScript.cpp,
rulesets/PythonArithmeticScript.h, rulesets/PythonMindScript.cpp,
rulesets/PythonMindScript.h, rulesets/PythonScript.cpp,
rulesets/PythonScript.h, rulesets/PythonThingScript.cpp,
rulesets/PythonThingScript.h, rulesets/PythonWrapper.cpp,
rulesets/PythonWrapper.h, rulesets/Python_API.cpp,
rulesets/Python_API.h, rulesets/Python_Script_Utils.h,
rulesets/Script.cpp, rulesets/Script.h, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Statistics.cpp, rulesets/Statistics.h,
rulesets/StatisticsProperty.cpp, rulesets/StatisticsProperty.h,
rulesets/Structure.cpp, rulesets/Structure.h, rulesets/Task.cpp,
rulesets/Task.h, rulesets/TaskScript.cpp, rulesets/TaskScript.h,
rulesets/TerrainProperty.cpp, rulesets/TerrainProperty.h,
rulesets/Thing.cpp, rulesets/Thing.h, rulesets/ThingFactory.cpp,
rulesets/ThingFactory.h, rulesets/World.cpp, rulesets/World.h,
rulesets/attributes.h, server/Account.cpp, server/Account.h,
server/Admin.cpp, server/Admin.h, server/ArithmeticFactory.cpp,
server/ArithmeticFactory.h, server/CommClient.cpp,
server/CommClient.h, server/CommIdleSocket.cpp,
server/CommIdleSocket.h, server/CommListener.cpp,
server/CommListener.h, server/CommLocalClient.cpp,
server/CommLocalClient.h, server/CommMDNSPublisher.cpp,
server/CommMDNSPublisher.h, server/CommMaster.cpp,
server/CommMaster.h, server/CommMetaClient.cpp,
server/CommMetaClient.h, server/CommPSQLSocket.cpp,
server/CommPSQLSocket.h, server/CommPeer.cpp,
server/CommPeer.h, server/CommPeerListener.cpp,
server/CommPeerListener.h, server/CommRemoteClient.cpp,
server/CommRemoteClient.h, server/CommServer.cpp,
server/CommServer.h, server/CommSlaveClient.cpp,
server/CommSlaveClient.h, server/CommSlaveListener.cpp,
server/CommSlaveListener.h, server/CommSocket.cpp,
server/CommSocket.h, server/CommUnixListener.cpp,
server/CommUnixListener.h, server/Connection.cpp,
server/Connection.h, server/Connection_methods.h,
server/EntityFactory.cpp, server/EntityFactory.h,
server/ExternalMind.cpp, server/ExternalMind.h,
server/Idle.cpp, server/Idle.h, server/Lobby.cpp, server/Lobby.h,
server/Master.cpp, server/Master.h, server/Peer.cpp, server/Peer.h,
server/Persistance.cpp, server/Persistance.h,
server/PersistantThingFactory.cpp, server/PersistantThingFactory.h,
server/PersistantThingFactory_impl.h, server/Persistor.cpp,
server/Persistor.h, server/Persistor_impl.h,
server/Player.cpp, server/Player.h, server/Restoration.cpp,
server/Restoration.h, server/Restorer.cpp, server/Restorer.h,
server/Restorer_impl.h, server/ScriptFactory.cpp,
server/ScriptFactory.h, server/ServerRouting.cpp,
server/ServerRouting.h, server/ServerRouting_methods.h,
server/SlaveClientConnection.cpp, server/SlaveClientConnection.h,
server/TaskFactory.cpp, server/TaskFactory.h,
server/TrustedConnection.cpp, server/TrustedConnection.h,
server/WorldRouter.cpp, server/WorldRouter.h,
server/server.cpp, server/server.h, server/slave.cpp,
tests/Areatest.cpp, tests/BaseEntitytest.cpp,
tests/Charactertest.cpp, tests/Containertest.cpp,
tests/Creatortest.cpp, tests/EntityExerciser.h,
tests/EntityFactorytest.cpp, tests/Entitytest.cpp,
tests/Foodtest.cpp, tests/IGEntityExerciser.h,
tests/Linetest.cpp, tests/Locationtest.cpp, tests/OOGThingtest.cpp,
tests/Planttest.cpp, tests/Propertytest.cpp, tests/Stackabletest.cpp,
tests/Structuretest.cpp, tests/Tasktest.cpp, tests/TestWorld.h,
tests/Thingtest.cpp, tests/WorldTimetest.cpp, tests/Worldtest.cpp,
tests/allOperations.h, tests/collisiontest.cpp, tests/consttest.cpp,
tests/distancetest.cpp, tests/emergencetest.cpp,
tests/inheritancetest.cpp, tests/logtest.cpp, tests/randomtest.cpp,
tests/systemtest.cpp, tests/transformtest.cpp,
tests/type_utilstest.cpp, tests/utilitytest.cpp,
tools/AdminClient.cpp, tools/AdminClient.h, tools/cyaddrules.cpp,
tools/cycmd.cpp, tools/cyconfig.cpp, tools/cyconvertrules.cpp,
tools/cyctrl.cpp, tools/cydbload.cpp, tools/cydumprules.cpp,
tools/cyisoload.cpp, tools/cyloadrules.cpp, tools/cypasswd.cpp,
tools/cywatchdog.cpp: Replace the copyright and license statements
with new versions that include disclaimer of warranty, and
permit distribution under later versions of the GPL.
2006-01-19 02:17:06 +00:00
|
|
|
//
|
|
|
|
|
// 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 2 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, write to the Free Software Foundation,
|
|
|
|
|
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
2001-01-26 16:38:23 +00:00
|
|
|
|
2008-09-12 14:02:52 +00:00
|
|
|
// $Id$
|
2006-10-26 00:48:00 +00:00
|
|
|
|
2000-08-19 16:44:19 +00:00
|
|
|
#include "Account.h"
|
2002-07-14 21:04:50 +00:00
|
|
|
|
2001-04-10 19:05:14 +00:00
|
|
|
#include "Connection_methods.h"
|
* server/server.cpp, server/CommClient.h, server/Account.h,
server/Account.cpp, rulesets/Entity.h, rulesets/Entity.cpp,
rulesets/Character.h, rulesets/Character.cpp, rulesets/BaseMind.h,
rulesets/BaseMind.cpp, common/types.h, common/operations.h,
common/op_switch.h, common/BaseEntity.h, common/BaseEntity.cpp:
Added support for imaginary operations used in a similar way
to emoting.
* server/WorldTime.h: Added update method so underlying DataTime
can be updated.
* server/ServerRouting.h, server/Lobby.h, server/Lobby.cpp
server/ServerRouting.cpp, server/Connection.h,
server/Connection.cpp, server/Account.h, server/Account.cpp: Added
a lobby object which handles lobby chat. Essentially it stores
a list of accounts and allows operations to be sent or broadcast
to other accounts.
* rulesets/Py_WorldTime.cpp: Added python is_now() method because
using comparison does not appear to work.
* rulesets/BaseMind.cpp: Added updating of minds WorldTime each
time an operation is received.
* modules/DateTime.h: Added operator << so DateTime can be sent
to cout.
* common/types.h: Added types for storing accounts in Lobby.
Al Riddoch <alriddoch@zepler.org>
2001-05-29 11:16:09 +00:00
|
|
|
#include "ServerRouting.h"
|
|
|
|
|
#include "Lobby.h"
|
* client/client.cpp,
client/ObserverClient.cpp, client/ObserverClient.h,
client/ClientConnection.cpp, client/ClientConnection.h,
client/define_world.cpp, client define_world.h:
Started re-coding of python client code in C++.
* common/accountbase.h:
Database class used for simply accessing accounts.
* common/OOGThing.cpp, common/OOGThing.h, server/Account.h,
server/Routing.h:
Moved OOGThing class into common as it is not server specific.
* common/BaseWorld.cpp, common/BaseWorld.h,
server/WorldRouter.cpp, server/WorldRouter.h,
rulesets/Entity.h, rulesets/Py_World.cpp,
rulesets/PythonThingScript.cpp, rulesets/Python_API.h,
rulesets/Thing.cpp, rulesets/Thing.h:
Added base class for WorldRouter so that code that previously
used WorldRouter now used the interface defined by this
new class. This means that the code in rulesets no longer
has dependencies on code in server, so can be used in the client.
* server/ExternalMind.cpp, server/ExternalMind.h,
rulesets/Character.h, rulesets/Creator.cpp,
server/Account.cpp:
Moved ExternalMind class into server as it is server specific,
so that there is no dependancy on server in rulesets.
* server/Persistance.cpp. server/Persistance.h,
server/Admin.cpp, server/ServerRouting.cpp, server/server.cpp:
Moved high level server specific persistance class into
server, so there is no dependency on server in common.
* common/database.cpp, common/database.h, server/Admin.cpp,
tools/cydbload.cpp, tools/cyisoload.cpp, tools/cypasswd.cpp:
Increases efficiency of some interfaces by passing Object::MapType
instead of MapType, when the value must be a map.
* modules/WorldTime.cpp, modules/WorldTime.h,
rulesets/Py_WorldTime.cpp, rulesets/Python_API.cpp:
Brought the version of WorldTime in modules up to date, as this is
the version now used.
* rulesets/Character.cpp, server/WorldRouter.cpp, rulesets/Thing.cpp,
server/Admin.cpp:
Made world objects dictionary private.
* rulesets/EntityFactory.cpp, rulesets/EntityFactory.h:
Change newThing parameters so entity factory does not need to
know about WorldRouter.
* server/Lobby.cpp: Added support for people and rooms attributes
of OOG room class.
Al Riddoch <alriddoch@zepler.org>
2001-08-13 17:22:27 +00:00
|
|
|
#include "ExternalMind.h"
|
2009-03-24 03:08:45 +00:00
|
|
|
#include "Persistence.h"
|
2010-08-05 03:03:21 +05:30
|
|
|
#include "TeleportAuthenticator.h"
|
2000-08-19 16:44:19 +00:00
|
|
|
|
2003-03-07 00:22:12 +00:00
|
|
|
#include "rulesets/Character.h"
|
2002-07-14 21:04:50 +00:00
|
|
|
|
2005-11-12 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, common/BaseWorld.cpp, common/id.cpp,
common/id.h, rulesets/MemMap.cpp, server/Account.cpp,
server/Admin.cpp, server/Connection.cpp, server/Persistance.cpp,
server/Restoration.cpp, server/WorldRouter.cpp, server/server.cpp:
Add intgerId() function to convert ID strings to integers, and
check the conversion went okay.
2005-11-12 00:18:47 +00:00
|
|
|
#include "common/id.h"
|
2003-03-07 00:22:12 +00:00
|
|
|
#include "common/log.h"
|
2005-11-12 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, common/BaseWorld.cpp, common/id.cpp,
common/id.h, rulesets/MemMap.cpp, server/Account.cpp,
server/Admin.cpp, server/Connection.cpp, server/Persistance.cpp,
server/Restoration.cpp, server/WorldRouter.cpp, server/server.cpp:
Add intgerId() function to convert ID strings to integers, and
check the conversion went okay.
2005-11-12 00:18:47 +00:00
|
|
|
#include "common/const.h"
|
2003-03-07 00:22:12 +00:00
|
|
|
#include "common/debug.h"
|
2005-11-12 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, common/BaseWorld.cpp, common/id.cpp,
common/id.h, rulesets/MemMap.cpp, server/Account.cpp,
server/Admin.cpp, server/Connection.cpp, server/Persistance.cpp,
server/Restoration.cpp, server/WorldRouter.cpp, server/server.cpp:
Add intgerId() function to convert ID strings to integers, and
check the conversion went okay.
2005-11-12 00:18:47 +00:00
|
|
|
#include "common/serialno.h"
|
2005-11-11 Al Riddoch <alriddoch@zepler.org>
* common/types.h, server/Persistance.h, common/BaseWorld.h,
common/BaseWorld.cpp, server/WorldRouter.cpp:
Switch core world map to reference by integer ID rather than string.
Add version of getEntity() which converts from string to integer
automatically.
* rulesets/Character.cpp, rulesets/Thing.cpp, rulesets/World.cpp,
server/EntityFactory.cpp,
Use getEntity() when looking up an entity, so that conversion of
ID from string to integer is automatic.
* rulesets/BaseMind.cpp, rulesets/MemMap.cpp, rulesets/MemMap.h:
Switch to using integer IDs in MemMap's core mapping.
* server/Account.cpp, server/Account.h: Switch a few function
parameters to use integer ID values, making the code cleaner.
* server/Account.cpp, server/Admin.cpp, server/Persistance.cpp:
Handle string ID to integer conversions as required.
2005-11-11 02:04:56 +00:00
|
|
|
#include "common/compose.hpp"
|
2002-07-14 21:04:50 +00:00
|
|
|
|
2003-07-25 22:38:37 +00:00
|
|
|
#include <wfmath/atlasconv.h>
|
|
|
|
|
|
2005-08-27 14:52:12 +00:00
|
|
|
#include <Atlas/Objects/Operation.h>
|
|
|
|
|
#include <Atlas/Objects/Anonymous.h>
|
2002-07-14 21:04:50 +00:00
|
|
|
|
2006-06-26 16:49:25 +00:00
|
|
|
#include <sigc++/adaptors/bind.h>
|
|
|
|
|
#include <sigc++/functors/mem_fun.h>
|
2002-08-11 20:27:45 +00:00
|
|
|
|
2004-12-03 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h,
client/CharacterClient.cpp, client/CharacterClient.h,
client/ClientConnection.cpp, client/ClientConnection.h,
client/CreatorClient.cpp, client/CreatorClient.h,
client/Py_CreatorClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/BaseWorld.h, common/custom.cpp,
common/inheritance.cpp, common/inheritance.h,
common/inheritance_impl.h, common/op_switch.h, common/type_utils.h,
common/types.h, common/utility.cpp, common/utility.h,
modules/Location.cpp, rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h, rulesets/Creator.cpp,
rulesets/Creator.h, rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/EntityProperties.cpp, rulesets/Entity_getLocation.h,
rulesets/Food.cpp, rulesets/Food.h, rulesets/MemMap.cpp,
rulesets/MemMap.h, rulesets/Missile.h, rulesets/Pedestrian.cpp,
rulesets/Plant.cpp, rulesets/Plant.h, rulesets/Py_Mind.cpp,
rulesets/Py_Object.cpp, rulesets/Py_Operation.cpp,
rulesets/Py_Operation.h, rulesets/Py_Thing.cpp,
rulesets/PythonMindScript.h, rulesets/PythonScript.h,
rulesets/PythonThingScript.h, rulesets/Python_API.cpp,
rulesets/Script.cpp, rulesets/Script.h, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Thing.cpp, rulesets/Thing.h,
rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h server/Admin.cpp, server/Admin.h,
server/CommClient.cpp, server/Connection.cpp, server/Connection.h,
server/EntityFactory.cpp, server/EntityFactory.h, server/Lobby.cpp,
server/Lobby.h, server/Persistance.cpp, server/Persistance.h,
server/Persistor.cpp, server/Player.cpp, server/Player.h,
server/ServerRouting.cpp, server/ServerRouting.h,
server/TrustedConnection.cpp, server/TrustedConnection.h,
server/WorldRouter.cpp, server/WorldRouter.h, tests/Areatest.cpp,
tests/Charactertest.cpp, tests/Creatortest.cpp,
tests/EntityExerciser.h, tests/Entitytest.cpp, tests/Foodtest.cpp,
tests/IGEntityExerciser.h, tests/Linetest.cpp, tests/Planttest.cpp,
tests/Stackabletest.cpp, tests/Structuretest.cpp, tests/Thingtest.cpp,
tests/Worldtest.cpp, tests/allOperations.h, tests/inheritancetest.cpp,
tests/utilitytest.cpp, tools/cycmd.cpp:
Modify the entity interface so that all Operation methods
take references to RootOperation, as its cleaner, and requires
less nasty casts. Clean up operations in headers generally.
2004-12-03 14:49:13 +00:00
|
|
|
using Atlas::Message::Element;
|
|
|
|
|
using Atlas::Message::MapType;
|
|
|
|
|
using Atlas::Message::ListType;
|
2005-08-27 14:52:12 +00:00
|
|
|
using Atlas::Objects::Root;
|
2004-12-03 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h,
client/CharacterClient.cpp, client/CharacterClient.h,
client/ClientConnection.cpp, client/ClientConnection.h,
client/CreatorClient.cpp, client/CreatorClient.h,
client/Py_CreatorClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/BaseWorld.h, common/custom.cpp,
common/inheritance.cpp, common/inheritance.h,
common/inheritance_impl.h, common/op_switch.h, common/type_utils.h,
common/types.h, common/utility.cpp, common/utility.h,
modules/Location.cpp, rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h, rulesets/Creator.cpp,
rulesets/Creator.h, rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/EntityProperties.cpp, rulesets/Entity_getLocation.h,
rulesets/Food.cpp, rulesets/Food.h, rulesets/MemMap.cpp,
rulesets/MemMap.h, rulesets/Missile.h, rulesets/Pedestrian.cpp,
rulesets/Plant.cpp, rulesets/Plant.h, rulesets/Py_Mind.cpp,
rulesets/Py_Object.cpp, rulesets/Py_Operation.cpp,
rulesets/Py_Operation.h, rulesets/Py_Thing.cpp,
rulesets/PythonMindScript.h, rulesets/PythonScript.h,
rulesets/PythonThingScript.h, rulesets/Python_API.cpp,
rulesets/Script.cpp, rulesets/Script.h, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Thing.cpp, rulesets/Thing.h,
rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h server/Admin.cpp, server/Admin.h,
server/CommClient.cpp, server/Connection.cpp, server/Connection.h,
server/EntityFactory.cpp, server/EntityFactory.h, server/Lobby.cpp,
server/Lobby.h, server/Persistance.cpp, server/Persistance.h,
server/Persistor.cpp, server/Player.cpp, server/Player.h,
server/ServerRouting.cpp, server/ServerRouting.h,
server/TrustedConnection.cpp, server/TrustedConnection.h,
server/WorldRouter.cpp, server/WorldRouter.h, tests/Areatest.cpp,
tests/Charactertest.cpp, tests/Creatortest.cpp,
tests/EntityExerciser.h, tests/Entitytest.cpp, tests/Foodtest.cpp,
tests/IGEntityExerciser.h, tests/Linetest.cpp, tests/Planttest.cpp,
tests/Stackabletest.cpp, tests/Structuretest.cpp, tests/Thingtest.cpp,
tests/Worldtest.cpp, tests/allOperations.h, tests/inheritancetest.cpp,
tests/utilitytest.cpp, tools/cycmd.cpp:
Modify the entity interface so that all Operation methods
take references to RootOperation, as its cleaner, and requires
less nasty casts. Clean up operations in headers generally.
2004-12-03 14:49:13 +00:00
|
|
|
using Atlas::Objects::Operation::Set;
|
|
|
|
|
using Atlas::Objects::Operation::Info;
|
|
|
|
|
using Atlas::Objects::Operation::Sight;
|
|
|
|
|
using Atlas::Objects::Operation::Sound;
|
|
|
|
|
using Atlas::Objects::Operation::Create;
|
2005-08-27 14:52:12 +00:00
|
|
|
using Atlas::Objects::Entity::Anonymous;
|
|
|
|
|
using Atlas::Objects::Entity::RootEntity;
|
|
|
|
|
|
|
|
|
|
using Atlas::Objects::smart_dynamic_cast;
|
2004-12-03 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h,
client/CharacterClient.cpp, client/CharacterClient.h,
client/ClientConnection.cpp, client/ClientConnection.h,
client/CreatorClient.cpp, client/CreatorClient.h,
client/Py_CreatorClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/BaseWorld.h, common/custom.cpp,
common/inheritance.cpp, common/inheritance.h,
common/inheritance_impl.h, common/op_switch.h, common/type_utils.h,
common/types.h, common/utility.cpp, common/utility.h,
modules/Location.cpp, rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h, rulesets/Creator.cpp,
rulesets/Creator.h, rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/EntityProperties.cpp, rulesets/Entity_getLocation.h,
rulesets/Food.cpp, rulesets/Food.h, rulesets/MemMap.cpp,
rulesets/MemMap.h, rulesets/Missile.h, rulesets/Pedestrian.cpp,
rulesets/Plant.cpp, rulesets/Plant.h, rulesets/Py_Mind.cpp,
rulesets/Py_Object.cpp, rulesets/Py_Operation.cpp,
rulesets/Py_Operation.h, rulesets/Py_Thing.cpp,
rulesets/PythonMindScript.h, rulesets/PythonScript.h,
rulesets/PythonThingScript.h, rulesets/Python_API.cpp,
rulesets/Script.cpp, rulesets/Script.h, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Thing.cpp, rulesets/Thing.h,
rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h server/Admin.cpp, server/Admin.h,
server/CommClient.cpp, server/Connection.cpp, server/Connection.h,
server/EntityFactory.cpp, server/EntityFactory.h, server/Lobby.cpp,
server/Lobby.h, server/Persistance.cpp, server/Persistance.h,
server/Persistor.cpp, server/Player.cpp, server/Player.h,
server/ServerRouting.cpp, server/ServerRouting.h,
server/TrustedConnection.cpp, server/TrustedConnection.h,
server/WorldRouter.cpp, server/WorldRouter.h, tests/Areatest.cpp,
tests/Charactertest.cpp, tests/Creatortest.cpp,
tests/EntityExerciser.h, tests/Entitytest.cpp, tests/Foodtest.cpp,
tests/IGEntityExerciser.h, tests/Linetest.cpp, tests/Planttest.cpp,
tests/Stackabletest.cpp, tests/Structuretest.cpp, tests/Thingtest.cpp,
tests/Worldtest.cpp, tests/allOperations.h, tests/inheritancetest.cpp,
tests/utilitytest.cpp, tools/cycmd.cpp:
Modify the entity interface so that all Operation methods
take references to RootOperation, as its cleaner, and requires
less nasty casts. Clean up operations in headers generally.
2004-12-03 14:49:13 +00:00
|
|
|
|
2001-02-04 07:08:07 +00:00
|
|
|
static const bool debug_flag = false;
|
2000-08-19 16:44:19 +00:00
|
|
|
|
2006-12-26 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h,
client/ClientConnection.cpp, common/AtlasFileLoader.cpp,
common/AtlasFileLoader.h, common/BaseEntity.cpp, common/BaseEntity.h,
common/Property.h, common/accountbase.cpp, common/accountbase.h,
rulesets/ActivePropertyFactory.h,
rulesets/ActivePropertyFactory_impl.h, rulesets/Area.cpp,
rulesets/Area.h, rulesets/AreaProperty.cpp, rulesets/AreaProperty.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h, server/Account.cpp,
server/Admin.cpp, server/Admin.h, server/ArithmeticFactory.h,
tests/Makefile.am, tools/AdminClient.cpp, tools/AdminClient.h,
tools/cycmd.cpp: Add inline documentation.
* rulesets/ActivePropertyFactory.h: Use handler function pointer
typedef for readability.
* rulesets/AreaProperty.cpp, rulesets/AreaProperty.h: Fix PropertyBase
overriding by adding const to the right methods.
2006-12-26 14:30:42 +00:00
|
|
|
/// \brief Account constructor
|
|
|
|
|
///
|
|
|
|
|
/// @param conn Network Connection creating this Account
|
|
|
|
|
/// @param uname Username for this account
|
|
|
|
|
/// @param passwd Password for this account
|
|
|
|
|
/// @param id String identifier for this account
|
|
|
|
|
/// @param intId Integer identifier for this account
|
2008-01-26 Al Riddoch <alriddoch@googlemail.com>
* common/BaseEntity.cpp, common/BaseEntity.h: Remove the code that
handle ID, and just inherit from Identified.
* client/CharacterClient.cpp, client/CreatorClient.cpp,
common/OOGThing.cpp, rulesets/BaseMind.cpp, rulesets/Character.cpp,
rulesets/Creator.cpp, rulesets/Entity.cpp,
rulesets/LocatedEntity.cpp, rulesets/MemEntity.cpp,
rulesets/Plant.cpp, rulesets/Stackable.cpp, rulesets/Structure.cpp,
rulesets/Thing.cpp, rulesets/World.cpp, server/Account.cpp,
server/Admin.cpp, server/ExternalMind.cpp, server/Lobby.cpp,
server/Peer.cpp, server/Player.cpp, server/ServerRouting.cpp,
server/SlaveClientConnection.cpp: Add calls to the virtually
inherited Identified constructor as required.
2008-01-26 17:43:20 +00:00
|
|
|
Account::Account(Connection * conn,
|
|
|
|
|
const std::string & uname,
|
|
|
|
|
const std::string & passwd,
|
|
|
|
|
const std::string & id,
|
|
|
|
|
long intId) :
|
2010-12-13 14:15:54 +00:00
|
|
|
ConnectedRouter(id, intId, conn),
|
|
|
|
|
m_username(uname), m_password(passwd)
|
2001-04-10 19:05:14 +00:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Account::~Account()
|
|
|
|
|
{
|
2002-07-27 Al Riddoch <alriddoch@zepler.org>
* tools/cyloadrules.cpp, server/server.cpp,
aiclient/ClientConnection.cpp, client/ClientConnection.cpp,
common/inheritance.h: Use const iterators and references
whenever possible.
* client/CommClient.cpp, client/CreatorClient.cpp,
client/ObserverClient.cpp, client/Py_CreatorClient.cpp,
common/BaseEntity.cpp, common/BaseEntity.h,
common/types.h, rulesets/Area.cpp, rulesets/BaseMind.cpp,
rulesets/Character.cpp, rulesets/Entity.cpp,
rulesets/Food.cpp, rulesets/Line.cpp,
rulesets/MemMap.cpp, rulesets/Pedestrian.cpp,
rulesets/Plant.cpp, rulesets/Py_Mind.cpp,
rulesets/Py_Object.cpp, rulesets/Py_Thing.cpp,
rulesets/Python_API.cpp, rulesets/Stackable.cpp,
rulesets/Thing.cpp, rulesets/World.cpp,
server/Account.cpp, server/Admin.cpp, server/CommClient.cpp,
server/CommServer.cpp, server/Connection.cpp,
server/EntityFactory.cpp, server/Lobby.cpp,
server/Persistance.cpp, server/Player.cpp,
server/ServerRouting.cpp, server/WorldRouter.cpp:
Switch to using Fragment as name for Atlas::Message::Object,
to avoid name clashes on Object.
* common/BaseEntity.h: Make BaseEntity inherit from SigC::Object,
so signals and callbacks can be used, and add destroyed
signal.
* common/accountbase.h, physics/BBox.h, physics/Quaternion.h,
physics/Vector3D.h, rulesets/MemMap_methods.h,
rulesets/Movement.cpp, rulesets/Plant.h,
rulesets/Py_Operation.cpp, rulesets/PythonMindScript.cpp,
rulesets/PythonThingScript.cpp, rulesets/Script.cpp,
common/inheritance.cpp: Cleaned up Atlas::Message::Object
use, and excessive use of "using ...".
* rulesets/Movement.h, rulesets/Pedestrian.h:
Use forward declarations rather than including Move.h
* server/Account.cpp, server/Account.h, server/Connection.cpp,
server/Connection.h: Use destroyed signal to ensure references
to in game entities are removed when those entities are
destroyed. Ensure Connection is only destroyed once.
2002-07-28 13:34:58 +00:00
|
|
|
}
|
|
|
|
|
|
2006-12-26 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h,
client/ClientConnection.cpp, common/AtlasFileLoader.cpp,
common/AtlasFileLoader.h, common/BaseEntity.cpp, common/BaseEntity.h,
common/Property.h, common/accountbase.cpp, common/accountbase.h,
rulesets/ActivePropertyFactory.h,
rulesets/ActivePropertyFactory_impl.h, rulesets/Area.cpp,
rulesets/Area.h, rulesets/AreaProperty.cpp, rulesets/AreaProperty.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h, server/Account.cpp,
server/Admin.cpp, server/Admin.h, server/ArithmeticFactory.h,
tests/Makefile.am, tools/AdminClient.cpp, tools/AdminClient.h,
tools/cycmd.cpp: Add inline documentation.
* rulesets/ActivePropertyFactory.h: Use handler function pointer
typedef for readability.
* rulesets/AreaProperty.cpp, rulesets/AreaProperty.h: Fix PropertyBase
overriding by adding const to the right methods.
2006-12-26 14:30:42 +00:00
|
|
|
/// \brief Called when the Character has been removed from the world.
|
|
|
|
|
///
|
|
|
|
|
/// @param id Integer identifier of the Character destroyed.
|
2005-11-11 Al Riddoch <alriddoch@zepler.org>
* common/types.h, server/Persistance.h, common/BaseWorld.h,
common/BaseWorld.cpp, server/WorldRouter.cpp:
Switch core world map to reference by integer ID rather than string.
Add version of getEntity() which converts from string to integer
automatically.
* rulesets/Character.cpp, rulesets/Thing.cpp, rulesets/World.cpp,
server/EntityFactory.cpp,
Use getEntity() when looking up an entity, so that conversion of
ID from string to integer is automatic.
* rulesets/BaseMind.cpp, rulesets/MemMap.cpp, rulesets/MemMap.h:
Switch to using integer IDs in MemMap's core mapping.
* server/Account.cpp, server/Account.h: Switch a few function
parameters to use integer ID values, making the code cleaner.
* server/Account.cpp, server/Admin.cpp, server/Persistance.cpp:
Handle string ID to integer conversions as required.
2005-11-11 02:04:56 +00:00
|
|
|
void Account::characterDestroyed(long id)
|
2002-07-27 Al Riddoch <alriddoch@zepler.org>
* tools/cyloadrules.cpp, server/server.cpp,
aiclient/ClientConnection.cpp, client/ClientConnection.cpp,
common/inheritance.h: Use const iterators and references
whenever possible.
* client/CommClient.cpp, client/CreatorClient.cpp,
client/ObserverClient.cpp, client/Py_CreatorClient.cpp,
common/BaseEntity.cpp, common/BaseEntity.h,
common/types.h, rulesets/Area.cpp, rulesets/BaseMind.cpp,
rulesets/Character.cpp, rulesets/Entity.cpp,
rulesets/Food.cpp, rulesets/Line.cpp,
rulesets/MemMap.cpp, rulesets/Pedestrian.cpp,
rulesets/Plant.cpp, rulesets/Py_Mind.cpp,
rulesets/Py_Object.cpp, rulesets/Py_Thing.cpp,
rulesets/Python_API.cpp, rulesets/Stackable.cpp,
rulesets/Thing.cpp, rulesets/World.cpp,
server/Account.cpp, server/Admin.cpp, server/CommClient.cpp,
server/CommServer.cpp, server/Connection.cpp,
server/EntityFactory.cpp, server/Lobby.cpp,
server/Persistance.cpp, server/Player.cpp,
server/ServerRouting.cpp, server/WorldRouter.cpp:
Switch to using Fragment as name for Atlas::Message::Object,
to avoid name clashes on Object.
* common/BaseEntity.h: Make BaseEntity inherit from SigC::Object,
so signals and callbacks can be used, and add destroyed
signal.
* common/accountbase.h, physics/BBox.h, physics/Quaternion.h,
physics/Vector3D.h, rulesets/MemMap_methods.h,
rulesets/Movement.cpp, rulesets/Plant.h,
rulesets/Py_Operation.cpp, rulesets/PythonMindScript.cpp,
rulesets/PythonThingScript.cpp, rulesets/Script.cpp,
common/inheritance.cpp: Cleaned up Atlas::Message::Object
use, and excessive use of "using ...".
* rulesets/Movement.h, rulesets/Pedestrian.h:
Use forward declarations rather than including Move.h
* server/Account.cpp, server/Account.h, server/Connection.cpp,
server/Connection.h: Use destroyed signal to ensure references
to in game entities are removed when those entities are
destroyed. Ensure Connection is only destroyed once.
2002-07-28 13:34:58 +00:00
|
|
|
{
|
2003-05-04 18:31:38 +00:00
|
|
|
m_charactersDict.erase(id);
|
2004-05-07 16:02:28 +00:00
|
|
|
if (consts::enable_persistence) {
|
2009-03-24 03:08:45 +00:00
|
|
|
Persistence::instance()->delCharacter(String::compose("%1", id));
|
2004-05-07 16:02:28 +00:00
|
|
|
}
|
2001-04-10 19:05:14 +00:00
|
|
|
}
|
|
|
|
|
|
2010-08-15 03:33:12 +05:30
|
|
|
/// \brief Connect an existing character to this account
|
|
|
|
|
///
|
|
|
|
|
/// \brief chr The character to connect to this account
|
|
|
|
|
/// \return Returns 0 on success and -1 on failure.
|
2010-08-05 16:59:49 +05:30
|
|
|
int Account::connectCharacter(Entity *chr)
|
2010-08-05 03:01:41 +05:30
|
|
|
{
|
|
|
|
|
Character * character = dynamic_cast<Character *>(chr);
|
|
|
|
|
if (character != 0) {
|
|
|
|
|
m_connection->connectAvatar(character);
|
|
|
|
|
// Only genuinely playable characters should go in here. Otherwise
|
|
|
|
|
// if a normal entity gets into the account, and connection, it
|
|
|
|
|
// starts getting hard to tell whether or not they exist.
|
|
|
|
|
m_charactersDict[chr->getIntId()] = chr;
|
|
|
|
|
chr->destroyed.connect(sigc::bind(sigc::mem_fun(this, &Account::characterDestroyed), chr->getIntId()));
|
|
|
|
|
m_connection->addEntity(chr);
|
|
|
|
|
if (consts::enable_persistence) {
|
|
|
|
|
Persistence::instance()->addCharacter(*this, *chr);
|
|
|
|
|
}
|
2010-08-05 16:59:49 +05:30
|
|
|
return 0;
|
2010-08-05 03:01:41 +05:30
|
|
|
}
|
2010-08-05 16:59:49 +05:30
|
|
|
return -1;
|
2010-08-05 03:01:41 +05:30
|
|
|
}
|
|
|
|
|
|
2006-12-26 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h,
client/ClientConnection.cpp, common/AtlasFileLoader.cpp,
common/AtlasFileLoader.h, common/BaseEntity.cpp, common/BaseEntity.h,
common/Property.h, common/accountbase.cpp, common/accountbase.h,
rulesets/ActivePropertyFactory.h,
rulesets/ActivePropertyFactory_impl.h, rulesets/Area.cpp,
rulesets/Area.h, rulesets/AreaProperty.cpp, rulesets/AreaProperty.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h, server/Account.cpp,
server/Admin.cpp, server/Admin.h, server/ArithmeticFactory.h,
tests/Makefile.am, tools/AdminClient.cpp, tools/AdminClient.h,
tools/cycmd.cpp: Add inline documentation.
* rulesets/ActivePropertyFactory.h: Use handler function pointer
typedef for readability.
* rulesets/AreaProperty.cpp, rulesets/AreaProperty.h: Fix PropertyBase
overriding by adding const to the right methods.
2006-12-26 14:30:42 +00:00
|
|
|
/// \brief Add a Character to those that belong to this Account
|
|
|
|
|
///
|
2008-09-12 14:02:52 +00:00
|
|
|
/// @param chr Character object to be adddded
|
2003-01-05 19:55:52 +00:00
|
|
|
void Account::addCharacter(Entity * chr)
|
|
|
|
|
{
|
|
|
|
|
Character * pchar = dynamic_cast<Character *>(chr);
|
|
|
|
|
if (pchar == 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
2005-11-11 Al Riddoch <alriddoch@zepler.org>
* common/types.h, server/Persistance.h, common/BaseWorld.h,
common/BaseWorld.cpp, server/WorldRouter.cpp:
Switch core world map to reference by integer ID rather than string.
Add version of getEntity() which converts from string to integer
automatically.
* rulesets/Character.cpp, rulesets/Thing.cpp, rulesets/World.cpp,
server/EntityFactory.cpp,
Use getEntity() when looking up an entity, so that conversion of
ID from string to integer is automatic.
* rulesets/BaseMind.cpp, rulesets/MemMap.cpp, rulesets/MemMap.h:
Switch to using integer IDs in MemMap's core mapping.
* server/Account.cpp, server/Account.h: Switch a few function
parameters to use integer ID values, making the code cleaner.
* server/Account.cpp, server/Admin.cpp, server/Persistance.cpp:
Handle string ID to integer conversions as required.
2005-11-11 02:04:56 +00:00
|
|
|
m_charactersDict[chr->getIntId()] = chr;
|
2006-02-18 Al Riddoch <alriddoch@zepler.org>
* common/BaseEntity.h, common/BaseWorld.h, common/Property.h,
modules/Location.h, rulesets/Entity.cpp, rulesets/Entity.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/Connection.cpp, server/Connection.h,
server/Persistor.cpp, server/Persistor.h, server/Persistor_impl.h,
tools/cycmd.cpp: Update usage of sigc++ to the native 2.0 API
rather than the deprecated compatability API. Eleminate the
manual disconnection code for deleted objects, as this is now
handled automatically by sigc::trackable.
2006-02-18 21:56:43 +00:00
|
|
|
chr->destroyed.connect(sigc::bind(sigc::mem_fun(this, &Account::characterDestroyed), chr->getIntId()));
|
2003-01-05 19:55:52 +00:00
|
|
|
}
|
|
|
|
|
|
2006-12-26 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h,
client/ClientConnection.cpp, common/AtlasFileLoader.cpp,
common/AtlasFileLoader.h, common/BaseEntity.cpp, common/BaseEntity.h,
common/Property.h, common/accountbase.cpp, common/accountbase.h,
rulesets/ActivePropertyFactory.h,
rulesets/ActivePropertyFactory_impl.h, rulesets/Area.cpp,
rulesets/Area.h, rulesets/AreaProperty.cpp, rulesets/AreaProperty.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h, server/Account.cpp,
server/Admin.cpp, server/Admin.h, server/ArithmeticFactory.h,
tests/Makefile.am, tools/AdminClient.cpp, tools/AdminClient.h,
tools/cycmd.cpp: Add inline documentation.
* rulesets/ActivePropertyFactory.h: Use handler function pointer
typedef for readability.
* rulesets/AreaProperty.cpp, rulesets/AreaProperty.h: Fix PropertyBase
overriding by adding const to the right methods.
2006-12-26 14:30:42 +00:00
|
|
|
/// \brief Create a new Character and add it to this Account
|
|
|
|
|
///
|
|
|
|
|
/// @param typestr The type name of the Character to be created
|
|
|
|
|
/// @param ent Atlas description of the Character to be created
|
2003-09-17 01:22:53 +00:00
|
|
|
Entity * Account::addNewCharacter(const std::string & typestr,
|
2009-12-30 15:11:46 +00:00
|
|
|
const RootEntity & ent,
|
2010-12-03 22:06:03 +00:00
|
|
|
const Root & arg)
|
2000-12-12 13:10:17 +00:00
|
|
|
{
|
2009-11-18 17:49:34 +00:00
|
|
|
if (m_connection == 0) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
2003-05-04 18:31:38 +00:00
|
|
|
BaseWorld & world = m_connection->m_server.m_world;
|
2002-01-14 19:10:16 +00:00
|
|
|
debug(std::cout << "Account::Add_character" << std::endl << std::flush;);
|
2009-12-30 15:11:46 +00:00
|
|
|
Entity * chr;
|
|
|
|
|
Element spawn;
|
2009-12-30 15:23:42 +00:00
|
|
|
if (arg->copyAttr("spawn_name", spawn) == 0 && spawn.isString()) {
|
|
|
|
|
chr = world.spawnNewEntity(spawn.String(), typestr, ent);
|
2009-12-30 15:11:46 +00:00
|
|
|
} else {
|
|
|
|
|
chr = world.addNewEntity(typestr, ent);
|
|
|
|
|
}
|
2003-09-17 01:22:53 +00:00
|
|
|
if (chr == 0) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
2002-01-14 19:10:16 +00:00
|
|
|
debug(std::cout << "Added" << std::endl << std::flush;);
|
2004-06-20 22:58:18 +00:00
|
|
|
assert(chr->m_location.isValid());
|
2003-05-03 19:52:41 +00:00
|
|
|
debug(std::cout << "Location set to: " << chr->m_location << std::endl << std::flush;);
|
2010-11-26 22:36:23 +00:00
|
|
|
connectCharacter(chr);
|
2001-06-09 18:46:27 +00:00
|
|
|
|
2007-11-28 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/CharacterClient.cpp,
client/CharacterClient.h, client/CreatorClient.cpp,
client/CreatorClient.h, rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/MindFactory.cpp, rulesets/MindFactory.h, rulesets/Thing.cpp,
rulesets/World.cpp, server/Account.cpp, server/Connection.cpp,
server/EntityFactory.cpp, server/Persistor.cpp,
server/Persistor_impl.h, server/Restorer_impl.h,
server/WorldRouter.cpp: Remove the hard name attribute, now that
most entities don't set it.
2007-11-28 20:22:42 +00:00
|
|
|
logEvent(TAKE_CHAR, String::compose("%1 %2 %3 Created character (%4) "
|
|
|
|
|
"by account %5",
|
2007-07-29 Al Riddoch <alriddoch@zepler.org>
* common/log.cpp, common/log.h: Switch to taking a C++ string reference
rather than a char *, as it is not really an optimisation, and it
makes the code simpler to read and write.
* client/BaseClient.cpp, client/ClientConnection.cpp,
common/AtlasFileLoader.cpp, common/BaseEntity.cpp,
common/Database.cpp, common/globals.cpp, common/id.cpp,
common/inheritance.cpp, common/log.cpp, common/log.h,
rulesets/Character.cpp, rulesets/Creator.cpp, rulesets/Entity.cpp,
rulesets/MemMap.cpp, rulesets/Motion.cpp, rulesets/Pedestrian.cpp,
rulesets/Py_Object.cpp, rulesets/Py_RootEntity.cpp,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Python_API.cpp, rulesets/Thing.cpp, server/Account.cpp,
server/Admin.cpp, server/ArithmeticFactory.cpp,
server/CommClient.cpp, server/CommListener.cpp,
server/CommMDNSPublisher.cpp, server/CommServer.cpp,
server/Connection.cpp, server/EntityFactory.cpp,
server/Persistance.cpp, server/Restoration.cpp,
server/ScriptFactory.cpp, server/TaskFactory.cpp,
server/WorldRouter.cpp, server/server.cpp: Convert over to using
new API correctly.
* data/mason.xml: Add biomass and transient to fircone, making its
script obsolete:
2007-07-29 03:33:33 +00:00
|
|
|
m_connection->getId(),
|
|
|
|
|
getId(),
|
|
|
|
|
chr->getId(),
|
|
|
|
|
chr->getType(),
|
2007-07-29 Al Riddoch <alriddoch@zepler.org>
* common/log.cpp, common/log.h, common/BaseEntity.cpp,
common/BaseEntity.h: Switch to taking a C++ string reference rather
than a char *, for the rest of the logging and error related
calls.
* common/Database.cpp, common/log.cpp, common/log.h,
rulesets/PythonMindScript.cpp, server/Account.cpp,
server/Admin.cpp, server/Connection.cpp, server/Player.cpp,
tools/cyisoload.cpp: Convert over to using the new API correctly.
2007-07-29 12:22:58 +00:00
|
|
|
m_username));
|
2005-12-30 22:33:11 +00:00
|
|
|
|
2001-04-17 10:14:20 +00:00
|
|
|
return chr;
|
2000-12-12 13:10:17 +00:00
|
|
|
}
|
|
|
|
|
|
2006-12-26 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h,
client/ClientConnection.cpp, common/AtlasFileLoader.cpp,
common/AtlasFileLoader.h, common/BaseEntity.cpp, common/BaseEntity.h,
common/Property.h, common/accountbase.cpp, common/accountbase.h,
rulesets/ActivePropertyFactory.h,
rulesets/ActivePropertyFactory_impl.h, rulesets/Area.cpp,
rulesets/Area.h, rulesets/AreaProperty.cpp, rulesets/AreaProperty.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h, server/Account.cpp,
server/Admin.cpp, server/Admin.h, server/ArithmeticFactory.h,
tests/Makefile.am, tools/AdminClient.cpp, tools/AdminClient.h,
tools/cycmd.cpp: Add inline documentation.
* rulesets/ActivePropertyFactory.h: Use handler function pointer
typedef for readability.
* rulesets/AreaProperty.cpp, rulesets/AreaProperty.h: Fix PropertyBase
overriding by adding const to the right methods.
2006-12-26 14:30:42 +00:00
|
|
|
void Account::LogoutOperation(const Operation & op, OpVector & res)
|
2000-08-19 16:44:19 +00:00
|
|
|
{
|
2005-04-05 17:25:12 +00:00
|
|
|
if (m_connection == 0) {
|
2007-07-29 Al Riddoch <alriddoch@zepler.org>
* common/log.cpp, common/log.h, common/BaseEntity.cpp,
common/BaseEntity.h: Switch to taking a C++ string reference rather
than a char *, for the rest of the logging and error related
calls.
* common/Database.cpp, common/log.cpp, common/log.h,
rulesets/PythonMindScript.cpp, server/Account.cpp,
server/Admin.cpp, server/Connection.cpp, server/Player.cpp,
tools/cyisoload.cpp: Convert over to using the new API correctly.
2007-07-29 12:22:58 +00:00
|
|
|
log(ERROR, "Account::LogoutOperation on account that doesn't seem to "
|
|
|
|
|
"be connected.");
|
2005-04-05 17:25:12 +00:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2004-01-22 03:03:07 +00:00
|
|
|
Info info;
|
2005-08-27 14:52:12 +00:00
|
|
|
info->setArgs1(op);
|
2006-06-05 12:57:29 +00:00
|
|
|
if (!op->isDefaultSerialno()) {
|
|
|
|
|
info->setRefno(op->getSerialno());
|
|
|
|
|
}
|
2005-08-27 14:52:12 +00:00
|
|
|
info->setFrom(getId());
|
|
|
|
|
info->setTo(getId());
|
2003-05-04 18:31:38 +00:00
|
|
|
m_connection->send(info);
|
2004-11-24 01:19:31 +00:00
|
|
|
m_connection->disconnect();
|
2000-08-19 16:44:19 +00:00
|
|
|
}
|
|
|
|
|
|
2002-01-02 Al Riddoch <alriddoch@zepler.org>
* common/Database.h: Declaration for register relations.
* server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/Connection.cpp, server/Player.cpp,
server/Player.h, server/ServerRouting.cpp,
server/ServerRouting.h: Properlly separate username and id from
account, and use the database code to assign numerical ids to
account objects. Eliminate extraneous member variables in account.
* server/CommClient.cpp, server/CommServer.cpp,
server/CommServer.h, server/server.cpp:
Eliminate storing server name string twice.
2003-01-02 08:52:56 +00:00
|
|
|
const char * Account::getType() const
|
|
|
|
|
{
|
|
|
|
|
return "account";
|
|
|
|
|
}
|
|
|
|
|
|
2009-12-01 17:40:21 +00:00
|
|
|
void Account::store() const
|
|
|
|
|
{
|
|
|
|
|
if (database_flag) {
|
|
|
|
|
Persistence::instance()->putAccount(*this);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2004-08-24 Al Riddoch <alriddoch@zepler.org>
* client/Py_CreatorClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, modules/Location.cpp, modules/Location.h,
rulesets/Area.cpp, rulesets/Area.h, rulesets/Character.cpp,
rulesets/Character.h, rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/Line.cpp, rulesets/Line.h, rulesets/MemMap.cpp,
rulesets/Pedestrian.cpp, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/Py_Mind.cpp, rulesets/Py_Object.cpp, rulesets/Py_Thing.cpp,
rulesets/Python_API.cpp, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Thing.cpp, rulesets/World.cpp,
rulesets/World.h, server/Account.cpp, server/Account.h,
server/Admin.cpp, server/Connection.cpp, server/Lobby.cpp,
server/Lobby.h, server/Player.cpp, server/Player.h,
server/ServerRouting.cpp, server/ServerRouting.h,
tests/Areatest.cpp, tests/Entitytest.cpp, tests/Foodtest.cpp,
tests/Linetest.cpp, tests/Planttest.cpp, tests/Stackabletest.cpp,
tests/Structuretest.cpp, tests/Thingtest.cpp, tests/Worldtest.cpp:
Replace addToObject() with addToMessage() throughout.
* server/Account.cpp, server/Lobby.cpp: Use BaseEntity::addToMessage().
* server/Player.cpp: Make adding character types attribute to Message
more efficient.
2004-08-24 21:05:06 +00:00
|
|
|
void Account::addToMessage(MapType & omap) const
|
2000-08-19 16:44:19 +00:00
|
|
|
{
|
2003-05-04 18:31:38 +00:00
|
|
|
omap["username"] = m_username;
|
|
|
|
|
omap["name"] = m_username;
|
|
|
|
|
if (!m_password.empty()) {
|
|
|
|
|
omap["password"] = m_password;
|
2000-08-19 16:44:19 +00:00
|
|
|
}
|
2004-08-07 Al Riddoch <alriddoch@zepler.org>
* common/BaseEntity.cpp, common/BaseEntity.h, common/BaseWorld.h,
common/Database.cpp, common/Database.h, common/FormattedXMLWriter.cpp,
common/FormattedXMLWriter.h, common/accountbase.cpp,
common/accountbase.h, common/custom.cpp, common/inheritance.cpp,
common/inheritance.h, common/operations.h, common/type_utils.h,
common/utility.cpp, common/utility.h, modules/Location.cpp,
modules/Location.h, rulesets/Area.cpp, rulesets/Area.h,
rulesets/BaseMind.cpp, rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/Entity_getLocation.h, rulesets/Food.cpp, rulesets/Line.cpp,
rulesets/Line.h, rulesets/MemMap.cpp, rulesets/MemMap.h,
rulesets/Pedestrian.cpp, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/Py_Mind.cpp, rulesets/Py_Object.cpp, rulesets/Py_Object.h,
rulesets/Py_Operation.cpp, rulesets/Py_Thing.cpp,
rulesets/Python_API.cpp, rulesets/Stackable.cpp, rulesets/Stackable.h,
rulesets/Thing.cpp, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/CommClient.h,
server/CommListener.cpp, server/CommListener.h,
server/CommLocalClient.cpp, server/CommLocalClient.h,
server/CommMetaClient.h, server/CommPSQLSocket.h,
server/CommRemoteClient.cpp, server/CommRemoteClient.h,
server/CommServer.cpp, server/CommServer.h, server/CommSocket.cpp,
server/CommSocket.h, server/CommUnixListener.cpp,
server/CommUnixListener.h, server/Connection.cpp,
server/Connection.h, server/EntityFactory.cpp,
server/EntityFactory.h, server/Lobby.cpp, server/Lobby.h,
server/Persistance.cpp, server/Persistance.h,
server/PersistantThingFactory.h, server/Persistor.cpp,
server/Player.cpp, server/Player.h, server/Restorer.h,
server/Restorer_impl.h, server/ServerRouting.cpp,
server/ServerRouting.h, server/TrustedConnection.cpp,
server/TrustedConnection.h, server/WorldRouter.cpp,
server/WorldRouter.h: Convert code to using Atlas Message
typedefs as found in Atlas-C++ 0.6 to aid conversion later.
2004-08-16 14:26:47 +00:00
|
|
|
omap["parents"] = ListType(1,getType());
|
2009-12-29 19:11:57 +00:00
|
|
|
if (m_connection != 0) {
|
|
|
|
|
BaseWorld & world = m_connection->m_server.m_world;
|
|
|
|
|
ListType spawn_list;
|
|
|
|
|
if (world.getSpawnList(spawn_list) == 0) {
|
|
|
|
|
omap["spawns"] = spawn_list;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ListType char_list;
|
2004-11-06 Al Riddoch <alriddoch@zepler.org>
* aiclient/ClientConnection.cpp, client/BaseClient.cpp,
client/CharacterClient.cpp, client/ClientConnection.cpp,
common/Database.cpp, common/FormattedXMLWriter.cpp,
common/inheritance.cpp, common/refno.h, common/terrain_utils.cpp,
common/type_utils.h, common/utility.cpp, modules/WorldTime.cpp,
modules/WorldTime.h, physics/Collision.cpp, rulesets/Area.cpp,
rulesets/BaseMind.cpp, rulesets/Character.cpp, rulesets/Entity.cpp,
rulesets/Line.cpp, rulesets/MemMap.cpp, rulesets/MemMap_methods.h,
rulesets/Movement.cpp, rulesets/Plant.cpp, rulesets/Py_Map.cpp,
rulesets/Py_Object.cpp, rulesets/Py_Operation.cpp,
rulesets/Py_Oplist.cpp, rulesets/PythonMindScript.cpp,
rulesets/PythonThingScript.cpp, rulesets/Python_API.cpp,
rulesets/Stackable.cpp, rulesets/TerrainProperty.cpp,
rulesets/Thing.cpp, rulesets/World.cpp, server/Account.cpp,
server/CommClient.cpp, server/CommServer.cpp, server/Connection.cpp,
server/EntityFactory.cpp, server/Lobby.cpp, server/Persistance.cpp,
server/Player.cpp, server/Restoration.cpp, server/ServerRouting.cpp,
server/WorldRouter.cpp, tests/EntityExerciser.h,
tests/IGEntityExerciser.h, tests/inheritancetest.cpp,
tools/cycmd.cpp, tools/cyconvertrules.cpp, tools/cydbload.cpp,
tools/cyloadrules.cpp:
Tweak for loops to avoid creating a temporary iterator each
iteration.
* tests/type_utilstest.cpp: New test for function which does
list conversions.
2004-11-06 20:36:03 +00:00
|
|
|
EntityDict::const_iterator I = m_charactersDict.begin();
|
|
|
|
|
EntityDict::const_iterator Iend = m_charactersDict.end();
|
|
|
|
|
for (; I != Iend; ++I) {
|
2009-12-29 19:11:57 +00:00
|
|
|
char_list.push_back(I->first);
|
2000-12-12 13:10:17 +00:00
|
|
|
}
|
2009-12-29 19:11:57 +00:00
|
|
|
omap["characters"] = char_list;
|
2008-01-28 Al Riddoch <alriddoch@googlemail.com>
* client/BaseClient.cpp, common/BaseEntity.cpp, common/BaseEntity.h,
common/Identified.cpp, common/Identified.h, common/Makefile.am,
common/OOGThing.cpp, common/OOGThing.h, common/OperationRouter.cpp,
common/OperationRouter.h, rulesets/Character.h, rulesets/Entity.h,
rulesets/LocatedEntity.cpp, rulesets/LocatedEntity.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/CommClient.cpp, server/CommClient.h, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/ExternalProperty.cpp, server/ExternalProperty.h,
server/Lobby.cpp, server/Lobby.h, server/Master.cpp, server/Master.h,
server/Peer.cpp, server/Peer.h, server/ServerRouting.cpp,
server/ServerRouting.h, server/SlaveClientConnection.cpp,
server/SlaveClientConnection.h: Factor out the more pointless base
classes, in favor of simple interface. Move destroyed signal to
Entity, which is the only place it is needed.
2008-01-28 23:48:30 +00:00
|
|
|
omap["objtype"] = "obj";
|
|
|
|
|
omap["id"] = getId();
|
2000-08-19 16:44:19 +00:00
|
|
|
}
|
|
|
|
|
|
2005-08-27 14:52:12 +00:00
|
|
|
void Account::addToEntity(const Atlas::Objects::Entity::RootEntity & ent) const
|
|
|
|
|
{
|
|
|
|
|
ent->setAttr("username", m_username);
|
|
|
|
|
ent->setName(m_username);
|
|
|
|
|
if (!m_password.empty()) {
|
|
|
|
|
ent->setAttr("password", m_password);
|
|
|
|
|
}
|
|
|
|
|
ent->setParents(std::list<std::string>(1,getType()));
|
2009-12-29 19:11:57 +00:00
|
|
|
if (m_connection != 0) {
|
|
|
|
|
BaseWorld & world = m_connection->m_server.m_world;
|
|
|
|
|
ListType spawn_list;
|
|
|
|
|
if (world.getSpawnList(spawn_list) == 0) {
|
|
|
|
|
ent->setAttr("spawns", spawn_list);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ListType char_list;
|
2005-08-27 14:52:12 +00:00
|
|
|
EntityDict::const_iterator I = m_charactersDict.begin();
|
|
|
|
|
EntityDict::const_iterator Iend = m_charactersDict.end();
|
|
|
|
|
for (; I != Iend; ++I) {
|
2009-12-29 19:11:57 +00:00
|
|
|
char_list.push_back(I->second->getId());
|
2005-08-27 14:52:12 +00:00
|
|
|
}
|
2009-12-29 19:11:57 +00:00
|
|
|
ent->setAttr("characters", char_list);
|
2008-01-28 Al Riddoch <alriddoch@googlemail.com>
* client/BaseClient.cpp, common/BaseEntity.cpp, common/BaseEntity.h,
common/Identified.cpp, common/Identified.h, common/Makefile.am,
common/OOGThing.cpp, common/OOGThing.h, common/OperationRouter.cpp,
common/OperationRouter.h, rulesets/Character.h, rulesets/Entity.h,
rulesets/LocatedEntity.cpp, rulesets/LocatedEntity.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/CommClient.cpp, server/CommClient.h, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/ExternalProperty.cpp, server/ExternalProperty.h,
server/Lobby.cpp, server/Lobby.h, server/Master.cpp, server/Master.h,
server/Peer.cpp, server/Peer.h, server/ServerRouting.cpp,
server/ServerRouting.h, server/SlaveClientConnection.cpp,
server/SlaveClientConnection.h: Factor out the more pointless base
classes, in favor of simple interface. Move destroyed signal to
Entity, which is the only place it is needed.
2008-01-28 23:48:30 +00:00
|
|
|
ent->setObjtype("obj");
|
|
|
|
|
ent->setId(getId());
|
2005-08-27 14:52:12 +00:00
|
|
|
}
|
|
|
|
|
|
2008-01-12 18:08:03 +00:00
|
|
|
void Account::operation(const Operation & op, OpVector & res)
|
|
|
|
|
{
|
|
|
|
|
const OpNo op_no = op->getClassNo();
|
|
|
|
|
switch (op_no) {
|
2008-01-12 Al Riddoch <alriddoch@googlemail.com>
* common/BaseEntity.cpp, common/custom.cpp, common/inheritance.cpp,
common/inheritance.h, common/op_switch.h, common/types.h,
rulesets/Character.cpp, rulesets/Creator.cpp,
rulesets/PythonThingScript.cpp, server/Account.cpp,
server/Connection.cpp, server/ExternalMind.cpp,
tests/OOGThingtest.cpp, tests/inheritancetest.cpp:
Remove a set of pointless definitions, and use the originals
throughout the code.
2008-01-12 22:41:10 +00:00
|
|
|
case Atlas::Objects::Operation::CREATE_NO:
|
2008-01-12 18:08:03 +00:00
|
|
|
CreateOperation(op, res);
|
|
|
|
|
break;
|
2008-01-12 Al Riddoch <alriddoch@googlemail.com>
* common/BaseEntity.cpp, common/custom.cpp, common/inheritance.cpp,
common/inheritance.h, common/op_switch.h, common/types.h,
rulesets/Character.cpp, rulesets/Creator.cpp,
rulesets/PythonThingScript.cpp, server/Account.cpp,
server/Connection.cpp, server/ExternalMind.cpp,
tests/OOGThingtest.cpp, tests/inheritancetest.cpp:
Remove a set of pointless definitions, and use the originals
throughout the code.
2008-01-12 22:41:10 +00:00
|
|
|
case Atlas::Objects::Operation::GET_NO:
|
2008-01-12 18:08:03 +00:00
|
|
|
GetOperation(op, res);
|
|
|
|
|
break;
|
2008-01-12 Al Riddoch <alriddoch@googlemail.com>
* common/BaseEntity.cpp, common/custom.cpp, common/inheritance.cpp,
common/inheritance.h, common/op_switch.h, common/types.h,
rulesets/Character.cpp, rulesets/Creator.cpp,
rulesets/PythonThingScript.cpp, server/Account.cpp,
server/Connection.cpp, server/ExternalMind.cpp,
tests/OOGThingtest.cpp, tests/inheritancetest.cpp:
Remove a set of pointless definitions, and use the originals
throughout the code.
2008-01-12 22:41:10 +00:00
|
|
|
case Atlas::Objects::Operation::IMAGINARY_NO:
|
2008-01-12 18:08:03 +00:00
|
|
|
ImaginaryOperation(op, res);
|
|
|
|
|
break;
|
2008-01-12 Al Riddoch <alriddoch@googlemail.com>
* common/BaseEntity.cpp, common/custom.cpp, common/inheritance.cpp,
common/inheritance.h, common/op_switch.h, common/types.h,
rulesets/Character.cpp, rulesets/Creator.cpp,
rulesets/PythonThingScript.cpp, server/Account.cpp,
server/Connection.cpp, server/ExternalMind.cpp,
tests/OOGThingtest.cpp, tests/inheritancetest.cpp:
Remove a set of pointless definitions, and use the originals
throughout the code.
2008-01-12 22:41:10 +00:00
|
|
|
case Atlas::Objects::Operation::LOGOUT_NO:
|
2008-01-12 18:08:03 +00:00
|
|
|
LogoutOperation(op, res);
|
|
|
|
|
break;
|
2008-01-12 Al Riddoch <alriddoch@googlemail.com>
* common/BaseEntity.cpp, common/custom.cpp, common/inheritance.cpp,
common/inheritance.h, common/op_switch.h, common/types.h,
rulesets/Character.cpp, rulesets/Creator.cpp,
rulesets/PythonThingScript.cpp, server/Account.cpp,
server/Connection.cpp, server/ExternalMind.cpp,
tests/OOGThingtest.cpp, tests/inheritancetest.cpp:
Remove a set of pointless definitions, and use the originals
throughout the code.
2008-01-12 22:41:10 +00:00
|
|
|
case Atlas::Objects::Operation::LOOK_NO:
|
2008-01-12 18:08:03 +00:00
|
|
|
LookOperation(op, res);
|
|
|
|
|
break;
|
2008-01-12 Al Riddoch <alriddoch@googlemail.com>
* common/BaseEntity.cpp, common/custom.cpp, common/inheritance.cpp,
common/inheritance.h, common/op_switch.h, common/types.h,
rulesets/Character.cpp, rulesets/Creator.cpp,
rulesets/PythonThingScript.cpp, server/Account.cpp,
server/Connection.cpp, server/ExternalMind.cpp,
tests/OOGThingtest.cpp, tests/inheritancetest.cpp:
Remove a set of pointless definitions, and use the originals
throughout the code.
2008-01-12 22:41:10 +00:00
|
|
|
case Atlas::Objects::Operation::SET_NO:
|
2008-01-12 18:08:03 +00:00
|
|
|
SetOperation(op, res);
|
|
|
|
|
break;
|
2008-01-12 Al Riddoch <alriddoch@googlemail.com>
* common/BaseEntity.cpp, common/custom.cpp, common/inheritance.cpp,
common/inheritance.h, common/op_switch.h, common/types.h,
rulesets/Character.cpp, rulesets/Creator.cpp,
rulesets/PythonThingScript.cpp, server/Account.cpp,
server/Connection.cpp, server/ExternalMind.cpp,
tests/OOGThingtest.cpp, tests/inheritancetest.cpp:
Remove a set of pointless definitions, and use the originals
throughout the code.
2008-01-12 22:41:10 +00:00
|
|
|
case Atlas::Objects::Operation::TALK_NO:
|
2008-01-12 18:08:03 +00:00
|
|
|
TalkOperation(op, res);
|
|
|
|
|
break;
|
|
|
|
|
case OP_INVALID:
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
OtherOperation(op, res);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2004-12-06 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h, client/CreatorClient.cpp,
client/CreatorClient.h, common/BaseEntity.cpp, common/BaseEntity.h,
common/BaseWorld.h, common/OOGThing.cpp, common/OOGThing.h,
common/op_switch.h, common/refno.h, common/types.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h, rulesets/Character.cpp,
rulesets/Character.h, rulesets/Creator.cpp, rulesets/Creator.h,
rulesets/Entity.cpp, rulesets/Entity.h, rulesets/Food.cpp,
rulesets/Food.h, rulesets/MemMap.cpp, rulesets/Plant.cpp,
rulesets/Plant.h, rulesets/Py_Map.cpp, rulesets/PythonMindScript.cpp,
rulesets/PythonThingScript.cpp, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Thing.cpp, rulesets/Thing.h,
rulesets/World.cpp, rulesets/World.h, server/Account.cpp,
server/Account.h, server/Admin.cpp, server/Admin.h,
server/CommClient.cpp, server/Connection.cpp, server/Connection.h,
server/Connection_methods.h, server/ExternalMind.cpp,
server/ExternalMind.h, server/Lobby.cpp, server/Lobby.h,
server/Player.cpp, server/Player.h, server/WorldRouter.cpp,
server/WorldRouter.h, tests/Creatortest.cpp, tests/Worldtest.cpp:
Add a new Operation typedef to clean up headers, and get round
limitation in doxygen.
2004-12-06 16:35:44 +00:00
|
|
|
void Account::CreateOperation(const Operation & op, OpVector & res)
|
2000-08-19 16:44:19 +00:00
|
|
|
{
|
2005-08-27 14:52:12 +00:00
|
|
|
const std::vector<Root> & args = op->getArgs();
|
|
|
|
|
if (args.empty()) {
|
2004-09-03 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/CharacterClient.h,
client/CommClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/OOGThing.cpp,
common/OOGThing.h, common/op_switch.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Food.cpp, rulesets/Food.h,
rulesets/Missile.h, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Stackable.cpp, rulesets/Stackable.h, rulesets/Thing.cpp,
rulesets/Thing.h, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/Lobby.cpp, server/Lobby.h, server/Player.cpp,
server/Player.h, server/WorldRouter.cpp:
Re-work basic op dispatch mechanism so result is passed by
a reference argument rather than returning by value.
2004-09-03 00:33:19 +00:00
|
|
|
return;
|
2003-03-16 Al Riddoch <alriddoch@zepler.org>
* common/globals.cpp, common/globals.h: Add global variable for
the local state directory.
* server/Account.cpp, server/Admin.cpp, server/Admin.h,
server/Player.cpp: Tighten up some operation checking and add Create
handler to Admin in preparation for handling creation of new OOG
things.
* server/CommLocalClient.cpp, server/CommLocalClient.h,
server/CommRemoteClient.cpp, server/CommRemoteClient.h,
server/CommUnixListener.cpp, server/CommUnixListener.h,
server/CommClient.cpp, server/CommClient.h,
server/CommListener.cpp, server/Connection.cpp,
server/Connection.h, server/server.cpp:
Create new listener and connection classes using unix sockets
to allow local trusted connections.
* client/ClientConnection.cpp, client/ClientConnection.h,
client/CommClient.h, client/CreatorClient.cpp,
client/ObserverClient.cpp: Add capability to connect over
unix socket.
2003-03-16 21:26:06 +00:00
|
|
|
}
|
|
|
|
|
|
2010-12-03 22:06:03 +00:00
|
|
|
const Root & arg = args.front();
|
2010-12-05 18:47:04 +00:00
|
|
|
if (!arg->hasAttrFlag(Atlas::Objects::PARENTS_FLAG) ||
|
|
|
|
|
arg->getParents().empty()) {
|
|
|
|
|
error(op, "Object to be created has no type", res, getId());
|
2006-01-10 21:58:04 +00:00
|
|
|
return;
|
|
|
|
|
}
|
2010-12-05 18:47:04 +00:00
|
|
|
const std::string & type_str = arg->getParents().front();
|
2006-01-10 21:58:04 +00:00
|
|
|
|
2010-12-06 00:02:21 +00:00
|
|
|
createObject(type_str, arg, op, res);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Account::createObject(const std::string & type_str,
|
|
|
|
|
const Root & arg,
|
|
|
|
|
const Operation & op,
|
|
|
|
|
OpVector & res)
|
|
|
|
|
{
|
2006-01-10 21:58:04 +00:00
|
|
|
if (characterError(op, arg, res)) {
|
2004-09-03 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/CharacterClient.h,
client/CommClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/OOGThing.cpp,
common/OOGThing.h, common/op_switch.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Food.cpp, rulesets/Food.h,
rulesets/Missile.h, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Stackable.cpp, rulesets/Stackable.h, rulesets/Thing.cpp,
rulesets/Thing.h, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/Lobby.cpp, server/Lobby.h, server/Player.cpp,
server/Player.h, server/WorldRouter.cpp:
Re-work basic op dispatch mechanism so result is passed by
a reference argument rather than returning by value.
2004-09-03 00:33:19 +00:00
|
|
|
return;
|
2000-08-19 16:44:19 +00:00
|
|
|
}
|
2006-01-10 21:58:04 +00:00
|
|
|
|
2010-12-05 18:47:04 +00:00
|
|
|
debug( std::cout << "Account creating a " << type_str << " object"
|
2001-11-08 00:49:16 +00:00
|
|
|
<< std::endl << std::flush; );
|
2000-08-21 11:31:18 +00:00
|
|
|
|
2007-01-27 15:07:54 +00:00
|
|
|
Anonymous new_character;
|
2010-12-05 18:47:04 +00:00
|
|
|
new_character->setParents(std::list<std::string>(1, type_str));
|
2007-01-27 15:07:54 +00:00
|
|
|
new_character->setAttr("status", 0.024);
|
2011-12-16 13:12:58 +00:00
|
|
|
new_character->setAttr("mind", MapType());
|
2007-01-27 15:07:54 +00:00
|
|
|
if (!arg->isDefaultName()) {
|
|
|
|
|
new_character->setName(arg->getName());
|
|
|
|
|
}
|
|
|
|
|
|
2010-12-05 18:47:04 +00:00
|
|
|
Entity * entity = addNewCharacter(type_str, new_character, arg);
|
2003-09-17 01:22:53 +00:00
|
|
|
|
2006-08-07 17:58:23 +00:00
|
|
|
if (entity == 0) {
|
2004-11-16 01:09:57 +00:00
|
|
|
error(op, "Character creation failed", res, getId());
|
2004-09-03 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/CharacterClient.h,
client/CommClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/OOGThing.cpp,
common/OOGThing.h, common/op_switch.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Food.cpp, rulesets/Food.h,
rulesets/Missile.h, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Stackable.cpp, rulesets/Stackable.h, rulesets/Thing.cpp,
rulesets/Thing.h, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/Lobby.cpp, server/Lobby.h, server/Player.cpp,
server/Player.h, server/WorldRouter.cpp:
Re-work basic op dispatch mechanism so result is passed by
a reference argument rather than returning by value.
2004-09-03 00:33:19 +00:00
|
|
|
return;
|
2003-09-17 01:22:53 +00:00
|
|
|
}
|
2003-03-16 Al Riddoch <alriddoch@zepler.org>
* common/globals.cpp, common/globals.h: Add global variable for
the local state directory.
* server/Account.cpp, server/Admin.cpp, server/Admin.h,
server/Player.cpp: Tighten up some operation checking and add Create
handler to Admin in preparation for handling creation of new OOG
things.
* server/CommLocalClient.cpp, server/CommLocalClient.h,
server/CommRemoteClient.cpp, server/CommRemoteClient.h,
server/CommUnixListener.cpp, server/CommUnixListener.h,
server/CommClient.cpp, server/CommClient.h,
server/CommListener.cpp, server/Connection.cpp,
server/Connection.h, server/server.cpp:
Create new listener and connection classes using unix sockets
to allow local trusted connections.
* client/ClientConnection.cpp, client/ClientConnection.h,
client/CommClient.h, client/CreatorClient.cpp,
client/ObserverClient.cpp: Add capability to connect over
unix socket.
2003-03-16 21:26:06 +00:00
|
|
|
|
2006-08-07 17:58:23 +00:00
|
|
|
Character * character = dynamic_cast<Character *>(entity);
|
|
|
|
|
if (character != 0) {
|
|
|
|
|
// Inform the client that it has successfully subscribed
|
|
|
|
|
Info info;
|
|
|
|
|
Anonymous info_arg;
|
|
|
|
|
entity->addToEntity(info_arg);
|
|
|
|
|
info->setArgs1(info_arg);
|
|
|
|
|
res.push_back(info);
|
|
|
|
|
}
|
2006-06-01 10:26:34 +00:00
|
|
|
|
2006-08-07 17:47:43 +00:00
|
|
|
// Inform the client of the newly created character
|
2006-06-01 10:26:34 +00:00
|
|
|
Sight sight;
|
|
|
|
|
sight->setTo(getId());
|
|
|
|
|
Anonymous sight_arg;
|
|
|
|
|
addToEntity(sight_arg);
|
|
|
|
|
sight->setArgs1(sight_arg);
|
|
|
|
|
res.push_back(sight);
|
2000-08-19 16:44:19 +00:00
|
|
|
}
|
* server/server.cpp, server/CommClient.h, server/Account.h,
server/Account.cpp, rulesets/Entity.h, rulesets/Entity.cpp,
rulesets/Character.h, rulesets/Character.cpp, rulesets/BaseMind.h,
rulesets/BaseMind.cpp, common/types.h, common/operations.h,
common/op_switch.h, common/BaseEntity.h, common/BaseEntity.cpp:
Added support for imaginary operations used in a similar way
to emoting.
* server/WorldTime.h: Added update method so underlying DataTime
can be updated.
* server/ServerRouting.h, server/Lobby.h, server/Lobby.cpp
server/ServerRouting.cpp, server/Connection.h,
server/Connection.cpp, server/Account.h, server/Account.cpp: Added
a lobby object which handles lobby chat. Essentially it stores
a list of accounts and allows operations to be sent or broadcast
to other accounts.
* rulesets/Py_WorldTime.cpp: Added python is_now() method because
using comparison does not appear to work.
* rulesets/BaseMind.cpp: Added updating of minds WorldTime each
time an operation is received.
* modules/DateTime.h: Added operator << so DateTime can be sent
to cout.
* common/types.h: Added types for storing accounts in Lobby.
Al Riddoch <alriddoch@zepler.org>
2001-05-29 11:16:09 +00:00
|
|
|
|
2009-06-16 15:25:46 +01:00
|
|
|
int Account::filterTasks(const ListType & tasks,
|
|
|
|
|
const RootEntity & filtered_arg) const
|
|
|
|
|
{
|
|
|
|
|
ListType filtered_tasks;
|
|
|
|
|
ListType::const_iterator I = tasks.begin();
|
|
|
|
|
ListType::const_iterator Iend = tasks.end();
|
|
|
|
|
for (; I != Iend; ++I) {
|
|
|
|
|
if (!I->isMap()) {
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
const MapType & task = I->asMap();
|
|
|
|
|
MapType filtered_task;
|
|
|
|
|
MapType::const_iterator J = task.find("name");
|
|
|
|
|
MapType::const_iterator Jend = task.end();
|
|
|
|
|
if (J == Jend || !J->second.isString()) {
|
|
|
|
|
log(ERROR, "Task has no name");
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
const std::string & task_name = J->second.asString();
|
|
|
|
|
filtered_task["name"] = task_name;
|
|
|
|
|
// FIXME Use the typeinfo to check which attributes can be changed.
|
|
|
|
|
for (J = task.begin(); J != Jend; ++J) {
|
|
|
|
|
if (J->first == "name") {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
filtered_task[J->first] = J->second;
|
|
|
|
|
}
|
|
|
|
|
filtered_tasks.push_back(filtered_task);
|
|
|
|
|
}
|
|
|
|
|
filtered_arg->setAttr("tasks", filtered_tasks);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2004-12-06 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h, client/CreatorClient.cpp,
client/CreatorClient.h, common/BaseEntity.cpp, common/BaseEntity.h,
common/BaseWorld.h, common/OOGThing.cpp, common/OOGThing.h,
common/op_switch.h, common/refno.h, common/types.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h, rulesets/Character.cpp,
rulesets/Character.h, rulesets/Creator.cpp, rulesets/Creator.h,
rulesets/Entity.cpp, rulesets/Entity.h, rulesets/Food.cpp,
rulesets/Food.h, rulesets/MemMap.cpp, rulesets/Plant.cpp,
rulesets/Plant.h, rulesets/Py_Map.cpp, rulesets/PythonMindScript.cpp,
rulesets/PythonThingScript.cpp, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Thing.cpp, rulesets/Thing.h,
rulesets/World.cpp, rulesets/World.h, server/Account.cpp,
server/Account.h, server/Admin.cpp, server/Admin.h,
server/CommClient.cpp, server/Connection.cpp, server/Connection.h,
server/Connection_methods.h, server/ExternalMind.cpp,
server/ExternalMind.h, server/Lobby.cpp, server/Lobby.h,
server/Player.cpp, server/Player.h, server/WorldRouter.cpp,
server/WorldRouter.h, tests/Creatortest.cpp, tests/Worldtest.cpp:
Add a new Operation typedef to clean up headers, and get round
limitation in doxygen.
2004-12-06 16:35:44 +00:00
|
|
|
void Account::SetOperation(const Operation & op, OpVector & res)
|
2004-05-26 18:28:38 +00:00
|
|
|
{
|
2004-06-15 16:06:38 +00:00
|
|
|
debug(std::cout << "Account::Operation(set)" << std::endl << std::flush;);
|
2005-08-27 14:52:12 +00:00
|
|
|
const std::vector<Root> & args = op->getArgs();
|
|
|
|
|
if (args.empty()) {
|
2004-09-03 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/CharacterClient.h,
client/CommClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/OOGThing.cpp,
common/OOGThing.h, common/op_switch.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Food.cpp, rulesets/Food.h,
rulesets/Missile.h, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Stackable.cpp, rulesets/Stackable.h, rulesets/Thing.cpp,
rulesets/Thing.h, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/Lobby.cpp, server/Lobby.h, server/Player.cpp,
server/Player.h, server/WorldRouter.cpp:
Re-work basic op dispatch mechanism so result is passed by
a reference argument rather than returning by value.
2004-09-03 00:33:19 +00:00
|
|
|
return;
|
2004-05-26 18:28:38 +00:00
|
|
|
}
|
|
|
|
|
|
2005-08-27 14:52:12 +00:00
|
|
|
const Root & arg = args.front();
|
2004-05-26 18:28:38 +00:00
|
|
|
|
2005-08-27 14:52:12 +00:00
|
|
|
if (!arg->hasAttrFlag(Atlas::Objects::ID_FLAG)) {
|
2004-11-16 01:09:57 +00:00
|
|
|
error(op, "Set character has no ID", res, getId());
|
2004-09-03 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/CharacterClient.h,
client/CommClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/OOGThing.cpp,
common/OOGThing.h, common/op_switch.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Food.cpp, rulesets/Food.h,
rulesets/Missile.h, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Stackable.cpp, rulesets/Stackable.h, rulesets/Thing.cpp,
rulesets/Thing.h, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/Lobby.cpp, server/Lobby.h, server/Player.cpp,
server/Player.h, server/WorldRouter.cpp:
Re-work basic op dispatch mechanism so result is passed by
a reference argument rather than returning by value.
2004-09-03 00:33:19 +00:00
|
|
|
return;
|
2004-05-26 18:28:38 +00:00
|
|
|
}
|
|
|
|
|
|
2005-08-27 14:52:12 +00:00
|
|
|
const std::string & id = arg->getId();
|
2005-11-11 Al Riddoch <alriddoch@zepler.org>
* common/types.h, server/Persistance.h, common/BaseWorld.h,
common/BaseWorld.cpp, server/WorldRouter.cpp:
Switch core world map to reference by integer ID rather than string.
Add version of getEntity() which converts from string to integer
automatically.
* rulesets/Character.cpp, rulesets/Thing.cpp, rulesets/World.cpp,
server/EntityFactory.cpp,
Use getEntity() when looking up an entity, so that conversion of
ID from string to integer is automatic.
* rulesets/BaseMind.cpp, rulesets/MemMap.cpp, rulesets/MemMap.h:
Switch to using integer IDs in MemMap's core mapping.
* server/Account.cpp, server/Account.h: Switch a few function
parameters to use integer ID values, making the code cleaner.
* server/Account.cpp, server/Admin.cpp, server/Persistance.cpp:
Handle string ID to integer conversions as required.
2005-11-11 02:04:56 +00:00
|
|
|
|
2005-11-12 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, common/BaseWorld.cpp, common/id.cpp,
common/id.h, rulesets/MemMap.cpp, server/Account.cpp,
server/Admin.cpp, server/Connection.cpp, server/Persistance.cpp,
server/Restoration.cpp, server/WorldRouter.cpp, server/server.cpp:
Add intgerId() function to convert ID strings to integers, and
check the conversion went okay.
2005-11-12 00:18:47 +00:00
|
|
|
long intId = integerId(id);
|
2005-11-11 Al Riddoch <alriddoch@zepler.org>
* common/types.h, server/Persistance.h, common/BaseWorld.h,
common/BaseWorld.cpp, server/WorldRouter.cpp:
Switch core world map to reference by integer ID rather than string.
Add version of getEntity() which converts from string to integer
automatically.
* rulesets/Character.cpp, rulesets/Thing.cpp, rulesets/World.cpp,
server/EntityFactory.cpp,
Use getEntity() when looking up an entity, so that conversion of
ID from string to integer is automatic.
* rulesets/BaseMind.cpp, rulesets/MemMap.cpp, rulesets/MemMap.h:
Switch to using integer IDs in MemMap's core mapping.
* server/Account.cpp, server/Account.h: Switch a few function
parameters to use integer ID values, making the code cleaner.
* server/Account.cpp, server/Admin.cpp, server/Persistance.cpp:
Handle string ID to integer conversions as required.
2005-11-11 02:04:56 +00:00
|
|
|
|
|
|
|
|
EntityDict::const_iterator J = m_charactersDict.find(intId);
|
2004-05-26 18:28:38 +00:00
|
|
|
if (J == m_charactersDict.end()) {
|
2006-01-26 03:45:03 +00:00
|
|
|
// Client has sent a Set op for an object that is not
|
|
|
|
|
// one of our characters.
|
|
|
|
|
return error(op, "Permission denied.", res, getId());
|
2004-05-26 18:28:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Entity * e = J->second;
|
2005-08-27 14:52:12 +00:00
|
|
|
Anonymous new_arg;
|
|
|
|
|
bool argument_valid = false;
|
|
|
|
|
Element guise;
|
2005-08-30 23:53:34 +00:00
|
|
|
if (arg->copyAttr("guise", guise) == 0) {
|
2004-06-15 16:06:38 +00:00
|
|
|
debug(std::cout << "Got attempt to change characters guise"
|
|
|
|
|
<< std::endl << std::flush;);
|
2004-05-26 18:28:38 +00:00
|
|
|
// Apply change to character in-game
|
2005-08-27 14:52:12 +00:00
|
|
|
new_arg->setAttr("guise", guise);
|
|
|
|
|
argument_valid = true;
|
2004-05-26 18:28:38 +00:00
|
|
|
}
|
2005-08-27 14:52:12 +00:00
|
|
|
Element height;
|
2005-08-30 23:53:34 +00:00
|
|
|
if (arg->copyAttr("height", height) == 0 && (height.isNum())) {
|
2004-06-15 16:06:38 +00:00
|
|
|
debug(std::cout << "Got attempt to change characters height"
|
|
|
|
|
<< std::endl << std::flush;);
|
2005-09-28 Al Riddoch <alriddoch@zepler.org>
* modules/Location.cpp, modules/Location.h:
Add const accessors for location data, in preparation for
adding cached collision data which must be updated every
time data is modified.
* physics/Collision.cpp, rulesets/Character.cpp, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/MemMap.cpp, rulesets/Movement.cpp,
rulesets/Pedestrian.cpp, rulesets/Plant.cpp,
rulesets/Py_Location.cpp, rulesets/Thing.cpp, rulesets/World.cpp,
server/Account.cpp, server/EntityFactory.cpp, server/Persistor.cpp,
server/Persistor_impl.h, server/Restorer_impl.h,
server/WorldRouter.cpp, tests/Locationtest.cpp:
Use the const accessors whenver reading data from Location.
2005-09-28 23:02:50 +00:00
|
|
|
const BBox & bbox = e->m_location.bBox();
|
2004-05-26 18:28:38 +00:00
|
|
|
if (bbox.isValid()) {
|
|
|
|
|
float old_height = bbox.highCorner().z() - bbox.lowCorner().z();
|
2005-08-27 14:52:12 +00:00
|
|
|
float scale = height.asNum() / old_height;
|
2004-05-26 18:28:38 +00:00
|
|
|
BBox newBox(WFMath::Point<3>(bbox.lowCorner().x() * scale,
|
|
|
|
|
bbox.lowCorner().y() * scale,
|
|
|
|
|
bbox.lowCorner().z() * scale),
|
|
|
|
|
WFMath::Point<3>(bbox.highCorner().x() * scale,
|
|
|
|
|
bbox.highCorner().y() * scale,
|
|
|
|
|
bbox.highCorner().z() * scale));
|
2005-08-27 14:52:12 +00:00
|
|
|
new_arg->setAttr("bbox", newBox.toAtlas());
|
|
|
|
|
argument_valid = true;
|
2004-05-26 18:28:38 +00:00
|
|
|
}
|
|
|
|
|
}
|
2009-06-16 13:43:50 +01:00
|
|
|
Element tasks;
|
2009-06-16 15:25:46 +01:00
|
|
|
if (arg->copyAttr("tasks", tasks) == 0 && (tasks.isList())) {
|
2009-06-16 13:43:50 +01:00
|
|
|
log(NOTICE, "Got as yet unsupported task modification from client");
|
2009-06-16 15:25:46 +01:00
|
|
|
if (filterTasks(tasks.asList(), new_arg) == 0) {
|
|
|
|
|
argument_valid = true;
|
|
|
|
|
}
|
2009-06-16 13:43:50 +01:00
|
|
|
}
|
2004-09-03 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/CharacterClient.h,
client/CommClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/OOGThing.cpp,
common/OOGThing.h, common/op_switch.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Food.cpp, rulesets/Food.h,
rulesets/Missile.h, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Stackable.cpp, rulesets/Stackable.h, rulesets/Thing.cpp,
rulesets/Thing.h, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/Lobby.cpp, server/Lobby.h, server/Player.cpp,
server/Player.h, server/WorldRouter.cpp:
Re-work basic op dispatch mechanism so result is passed by
a reference argument rather than returning by value.
2004-09-03 00:33:19 +00:00
|
|
|
|
2005-08-27 14:52:12 +00:00
|
|
|
if (argument_valid) {
|
2004-06-15 16:06:38 +00:00
|
|
|
debug(std::cout << "Passing character mods in-game"
|
|
|
|
|
<< std::endl << std::flush;);
|
2005-08-27 14:52:12 +00:00
|
|
|
Set s;
|
2004-05-26 18:28:38 +00:00
|
|
|
s->setTo(id);
|
2005-08-27 14:52:12 +00:00
|
|
|
new_arg->setId(id);
|
|
|
|
|
s->setArgs1(new_arg);
|
2009-11-18 17:49:34 +00:00
|
|
|
if (m_connection != 0) {
|
|
|
|
|
m_connection->m_server.m_world.message(s, *e);
|
|
|
|
|
}
|
2004-05-26 18:28:38 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2004-12-06 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h, client/CreatorClient.cpp,
client/CreatorClient.h, common/BaseEntity.cpp, common/BaseEntity.h,
common/BaseWorld.h, common/OOGThing.cpp, common/OOGThing.h,
common/op_switch.h, common/refno.h, common/types.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h, rulesets/Character.cpp,
rulesets/Character.h, rulesets/Creator.cpp, rulesets/Creator.h,
rulesets/Entity.cpp, rulesets/Entity.h, rulesets/Food.cpp,
rulesets/Food.h, rulesets/MemMap.cpp, rulesets/Plant.cpp,
rulesets/Plant.h, rulesets/Py_Map.cpp, rulesets/PythonMindScript.cpp,
rulesets/PythonThingScript.cpp, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Thing.cpp, rulesets/Thing.h,
rulesets/World.cpp, rulesets/World.h, server/Account.cpp,
server/Account.h, server/Admin.cpp, server/Admin.h,
server/CommClient.cpp, server/Connection.cpp, server/Connection.h,
server/Connection_methods.h, server/ExternalMind.cpp,
server/ExternalMind.h, server/Lobby.cpp, server/Lobby.h,
server/Player.cpp, server/Player.h, server/WorldRouter.cpp,
server/WorldRouter.h, tests/Creatortest.cpp, tests/Worldtest.cpp:
Add a new Operation typedef to clean up headers, and get round
limitation in doxygen.
2004-12-06 16:35:44 +00:00
|
|
|
void Account::ImaginaryOperation(const Operation & op, OpVector & res)
|
* server/server.cpp, server/CommClient.h, server/Account.h,
server/Account.cpp, rulesets/Entity.h, rulesets/Entity.cpp,
rulesets/Character.h, rulesets/Character.cpp, rulesets/BaseMind.h,
rulesets/BaseMind.cpp, common/types.h, common/operations.h,
common/op_switch.h, common/BaseEntity.h, common/BaseEntity.cpp:
Added support for imaginary operations used in a similar way
to emoting.
* server/WorldTime.h: Added update method so underlying DataTime
can be updated.
* server/ServerRouting.h, server/Lobby.h, server/Lobby.cpp
server/ServerRouting.cpp, server/Connection.h,
server/Connection.cpp, server/Account.h, server/Account.cpp: Added
a lobby object which handles lobby chat. Essentially it stores
a list of accounts and allows operations to be sent or broadcast
to other accounts.
* rulesets/Py_WorldTime.cpp: Added python is_now() method because
using comparison does not appear to work.
* rulesets/BaseMind.cpp: Added updating of minds WorldTime each
time an operation is received.
* modules/DateTime.h: Added operator << so DateTime can be sent
to cout.
* common/types.h: Added types for storing accounts in Lobby.
Al Riddoch <alriddoch@zepler.org>
2001-05-29 11:16:09 +00:00
|
|
|
{
|
2005-08-27 14:52:12 +00:00
|
|
|
const std::vector<Root> & args = op->getArgs();
|
|
|
|
|
if (args.empty()) {
|
2004-09-03 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/CharacterClient.h,
client/CommClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/OOGThing.cpp,
common/OOGThing.h, common/op_switch.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Food.cpp, rulesets/Food.h,
rulesets/Missile.h, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Stackable.cpp, rulesets/Stackable.h, rulesets/Thing.cpp,
rulesets/Thing.h, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/Lobby.cpp, server/Lobby.h, server/Player.cpp,
server/Player.h, server/WorldRouter.cpp:
Re-work basic op dispatch mechanism so result is passed by
a reference argument rather than returning by value.
2004-09-03 00:33:19 +00:00
|
|
|
return;
|
2001-10-10 16:38:40 +00:00
|
|
|
}
|
2003-03-16 Al Riddoch <alriddoch@zepler.org>
* common/globals.cpp, common/globals.h: Add global variable for
the local state directory.
* server/Account.cpp, server/Admin.cpp, server/Admin.h,
server/Player.cpp: Tighten up some operation checking and add Create
handler to Admin in preparation for handling creation of new OOG
things.
* server/CommLocalClient.cpp, server/CommLocalClient.h,
server/CommRemoteClient.cpp, server/CommRemoteClient.h,
server/CommUnixListener.cpp, server/CommUnixListener.h,
server/CommClient.cpp, server/CommClient.h,
server/CommListener.cpp, server/Connection.cpp,
server/Connection.h, server/server.cpp:
Create new listener and connection classes using unix sockets
to allow local trusted connections.
* client/ClientConnection.cpp, client/ClientConnection.h,
client/CommClient.h, client/CreatorClient.cpp,
client/ObserverClient.cpp: Add capability to connect over
unix socket.
2003-03-16 21:26:06 +00:00
|
|
|
|
2004-01-22 03:03:07 +00:00
|
|
|
Sight s;
|
2005-08-27 14:52:12 +00:00
|
|
|
s->setArgs1(op);
|
|
|
|
|
s->setFrom(getId());
|
2006-06-05 12:57:29 +00:00
|
|
|
// FIXME Remove this - broadcasting
|
|
|
|
|
if (!op->isDefaultSerialno()) {
|
|
|
|
|
s->setRefno(op->getSerialno());
|
|
|
|
|
}
|
2005-08-27 14:52:12 +00:00
|
|
|
RootEntity arg = smart_dynamic_cast<RootEntity>(args.front());
|
2005-08-29 03:34:24 +00:00
|
|
|
|
|
|
|
|
if (!arg.isValid()) {
|
|
|
|
|
error(op, "Imaginary arg is malformed", res, getId());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2005-08-27 14:52:12 +00:00
|
|
|
if (arg->hasAttrFlag(Atlas::Objects::Entity::LOC_FLAG)) {
|
|
|
|
|
s->setTo(arg->getLoc());
|
2003-03-16 Al Riddoch <alriddoch@zepler.org>
* common/globals.cpp, common/globals.h: Add global variable for
the local state directory.
* server/Account.cpp, server/Admin.cpp, server/Admin.h,
server/Player.cpp: Tighten up some operation checking and add Create
handler to Admin in preparation for handling creation of new OOG
things.
* server/CommLocalClient.cpp, server/CommLocalClient.h,
server/CommRemoteClient.cpp, server/CommRemoteClient.h,
server/CommUnixListener.cpp, server/CommUnixListener.h,
server/CommClient.cpp, server/CommClient.h,
server/CommListener.cpp, server/Connection.cpp,
server/Connection.h, server/server.cpp:
Create new listener and connection classes using unix sockets
to allow local trusted connections.
* client/ClientConnection.cpp, client/ClientConnection.h,
client/CommClient.h, client/CreatorClient.cpp,
client/ObserverClient.cpp: Add capability to connect over
unix socket.
2003-03-16 21:26:06 +00:00
|
|
|
} else {
|
2005-08-27 14:52:12 +00:00
|
|
|
s->setTo(op->getTo());
|
2003-03-16 Al Riddoch <alriddoch@zepler.org>
* common/globals.cpp, common/globals.h: Add global variable for
the local state directory.
* server/Account.cpp, server/Admin.cpp, server/Admin.h,
server/Player.cpp: Tighten up some operation checking and add Create
handler to Admin in preparation for handling creation of new OOG
things.
* server/CommLocalClient.cpp, server/CommLocalClient.h,
server/CommRemoteClient.cpp, server/CommRemoteClient.h,
server/CommUnixListener.cpp, server/CommUnixListener.h,
server/CommClient.cpp, server/CommClient.h,
server/CommListener.cpp, server/Connection.cpp,
server/Connection.h, server/server.cpp:
Create new listener and connection classes using unix sockets
to allow local trusted connections.
* client/ClientConnection.cpp, client/ClientConnection.h,
client/CommClient.h, client/CreatorClient.cpp,
client/ObserverClient.cpp: Add capability to connect over
unix socket.
2003-03-16 21:26:06 +00:00
|
|
|
}
|
2009-11-18 17:49:34 +00:00
|
|
|
if (m_connection != 0) {
|
|
|
|
|
m_connection->m_server.m_lobby.operation(s, res);
|
|
|
|
|
}
|
* server/server.cpp, server/CommClient.h, server/Account.h,
server/Account.cpp, rulesets/Entity.h, rulesets/Entity.cpp,
rulesets/Character.h, rulesets/Character.cpp, rulesets/BaseMind.h,
rulesets/BaseMind.cpp, common/types.h, common/operations.h,
common/op_switch.h, common/BaseEntity.h, common/BaseEntity.cpp:
Added support for imaginary operations used in a similar way
to emoting.
* server/WorldTime.h: Added update method so underlying DataTime
can be updated.
* server/ServerRouting.h, server/Lobby.h, server/Lobby.cpp
server/ServerRouting.cpp, server/Connection.h,
server/Connection.cpp, server/Account.h, server/Account.cpp: Added
a lobby object which handles lobby chat. Essentially it stores
a list of accounts and allows operations to be sent or broadcast
to other accounts.
* rulesets/Py_WorldTime.cpp: Added python is_now() method because
using comparison does not appear to work.
* rulesets/BaseMind.cpp: Added updating of minds WorldTime each
time an operation is received.
* modules/DateTime.h: Added operator << so DateTime can be sent
to cout.
* common/types.h: Added types for storing accounts in Lobby.
Al Riddoch <alriddoch@zepler.org>
2001-05-29 11:16:09 +00:00
|
|
|
}
|
|
|
|
|
|
2004-12-06 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h, client/CreatorClient.cpp,
client/CreatorClient.h, common/BaseEntity.cpp, common/BaseEntity.h,
common/BaseWorld.h, common/OOGThing.cpp, common/OOGThing.h,
common/op_switch.h, common/refno.h, common/types.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h, rulesets/Character.cpp,
rulesets/Character.h, rulesets/Creator.cpp, rulesets/Creator.h,
rulesets/Entity.cpp, rulesets/Entity.h, rulesets/Food.cpp,
rulesets/Food.h, rulesets/MemMap.cpp, rulesets/Plant.cpp,
rulesets/Plant.h, rulesets/Py_Map.cpp, rulesets/PythonMindScript.cpp,
rulesets/PythonThingScript.cpp, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Thing.cpp, rulesets/Thing.h,
rulesets/World.cpp, rulesets/World.h, server/Account.cpp,
server/Account.h, server/Admin.cpp, server/Admin.h,
server/CommClient.cpp, server/Connection.cpp, server/Connection.h,
server/Connection_methods.h, server/ExternalMind.cpp,
server/ExternalMind.h, server/Lobby.cpp, server/Lobby.h,
server/Player.cpp, server/Player.h, server/WorldRouter.cpp,
server/WorldRouter.h, tests/Creatortest.cpp, tests/Worldtest.cpp:
Add a new Operation typedef to clean up headers, and get round
limitation in doxygen.
2004-12-06 16:35:44 +00:00
|
|
|
void Account::TalkOperation(const Operation & op, OpVector & res)
|
* server/server.cpp, server/CommClient.h, server/Account.h,
server/Account.cpp, rulesets/Entity.h, rulesets/Entity.cpp,
rulesets/Character.h, rulesets/Character.cpp, rulesets/BaseMind.h,
rulesets/BaseMind.cpp, common/types.h, common/operations.h,
common/op_switch.h, common/BaseEntity.h, common/BaseEntity.cpp:
Added support for imaginary operations used in a similar way
to emoting.
* server/WorldTime.h: Added update method so underlying DataTime
can be updated.
* server/ServerRouting.h, server/Lobby.h, server/Lobby.cpp
server/ServerRouting.cpp, server/Connection.h,
server/Connection.cpp, server/Account.h, server/Account.cpp: Added
a lobby object which handles lobby chat. Essentially it stores
a list of accounts and allows operations to be sent or broadcast
to other accounts.
* rulesets/Py_WorldTime.cpp: Added python is_now() method because
using comparison does not appear to work.
* rulesets/BaseMind.cpp: Added updating of minds WorldTime each
time an operation is received.
* modules/DateTime.h: Added operator << so DateTime can be sent
to cout.
* common/types.h: Added types for storing accounts in Lobby.
Al Riddoch <alriddoch@zepler.org>
2001-05-29 11:16:09 +00:00
|
|
|
{
|
2005-08-27 14:52:12 +00:00
|
|
|
const std::vector<Root> & args = op->getArgs();
|
|
|
|
|
if (args.empty()) {
|
2006-07-09 00:04:37 +00:00
|
|
|
error(op, "Talk has no args", res, getId());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RootEntity arg = smart_dynamic_cast<RootEntity>(args.front());
|
|
|
|
|
|
|
|
|
|
if (!arg.isValid()) {
|
|
|
|
|
error(op, "Talk arg is malformed", res, getId());
|
2004-09-03 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/CharacterClient.h,
client/CommClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/OOGThing.cpp,
common/OOGThing.h, common/op_switch.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Food.cpp, rulesets/Food.h,
rulesets/Missile.h, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Stackable.cpp, rulesets/Stackable.h, rulesets/Thing.cpp,
rulesets/Thing.h, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/Lobby.cpp, server/Lobby.h, server/Player.cpp,
server/Player.h, server/WorldRouter.cpp:
Re-work basic op dispatch mechanism so result is passed by
a reference argument rather than returning by value.
2004-09-03 00:33:19 +00:00
|
|
|
return;
|
2001-10-10 16:38:40 +00:00
|
|
|
}
|
2003-03-16 Al Riddoch <alriddoch@zepler.org>
* common/globals.cpp, common/globals.h: Add global variable for
the local state directory.
* server/Account.cpp, server/Admin.cpp, server/Admin.h,
server/Player.cpp: Tighten up some operation checking and add Create
handler to Admin in preparation for handling creation of new OOG
things.
* server/CommLocalClient.cpp, server/CommLocalClient.h,
server/CommRemoteClient.cpp, server/CommRemoteClient.h,
server/CommUnixListener.cpp, server/CommUnixListener.h,
server/CommClient.cpp, server/CommClient.h,
server/CommListener.cpp, server/Connection.cpp,
server/Connection.h, server/server.cpp:
Create new listener and connection classes using unix sockets
to allow local trusted connections.
* client/ClientConnection.cpp, client/ClientConnection.h,
client/CommClient.h, client/CreatorClient.cpp,
client/ObserverClient.cpp: Add capability to connect over
unix socket.
2003-03-16 21:26:06 +00:00
|
|
|
|
2004-01-22 03:03:07 +00:00
|
|
|
Sound s;
|
2005-08-27 14:52:12 +00:00
|
|
|
s->setArgs1(op);
|
|
|
|
|
s->setFrom(getId());
|
2006-06-05 12:57:29 +00:00
|
|
|
// FIXME Remove this - broadcasting
|
|
|
|
|
if (!op->isDefaultSerialno()) {
|
|
|
|
|
s->setRefno(op->getSerialno());
|
|
|
|
|
}
|
2005-08-29 03:34:24 +00:00
|
|
|
|
2005-08-27 14:52:12 +00:00
|
|
|
if (arg->hasAttrFlag(Atlas::Objects::Entity::LOC_FLAG)) {
|
|
|
|
|
s->setTo(arg->getLoc());
|
2003-03-16 Al Riddoch <alriddoch@zepler.org>
* common/globals.cpp, common/globals.h: Add global variable for
the local state directory.
* server/Account.cpp, server/Admin.cpp, server/Admin.h,
server/Player.cpp: Tighten up some operation checking and add Create
handler to Admin in preparation for handling creation of new OOG
things.
* server/CommLocalClient.cpp, server/CommLocalClient.h,
server/CommRemoteClient.cpp, server/CommRemoteClient.h,
server/CommUnixListener.cpp, server/CommUnixListener.h,
server/CommClient.cpp, server/CommClient.h,
server/CommListener.cpp, server/Connection.cpp,
server/Connection.h, server/server.cpp:
Create new listener and connection classes using unix sockets
to allow local trusted connections.
* client/ClientConnection.cpp, client/ClientConnection.h,
client/CommClient.h, client/CreatorClient.cpp,
client/ObserverClient.cpp: Add capability to connect over
unix socket.
2003-03-16 21:26:06 +00:00
|
|
|
} else {
|
2005-08-27 14:52:12 +00:00
|
|
|
s->setTo(op->getTo());
|
2003-03-16 Al Riddoch <alriddoch@zepler.org>
* common/globals.cpp, common/globals.h: Add global variable for
the local state directory.
* server/Account.cpp, server/Admin.cpp, server/Admin.h,
server/Player.cpp: Tighten up some operation checking and add Create
handler to Admin in preparation for handling creation of new OOG
things.
* server/CommLocalClient.cpp, server/CommLocalClient.h,
server/CommRemoteClient.cpp, server/CommRemoteClient.h,
server/CommUnixListener.cpp, server/CommUnixListener.h,
server/CommClient.cpp, server/CommClient.h,
server/CommListener.cpp, server/Connection.cpp,
server/Connection.h, server/server.cpp:
Create new listener and connection classes using unix sockets
to allow local trusted connections.
* client/ClientConnection.cpp, client/ClientConnection.h,
client/CommClient.h, client/CreatorClient.cpp,
client/ObserverClient.cpp: Add capability to connect over
unix socket.
2003-03-16 21:26:06 +00:00
|
|
|
}
|
2009-11-18 17:49:34 +00:00
|
|
|
if (m_connection != 0) {
|
|
|
|
|
m_connection->m_server.m_lobby.operation(s, res);
|
|
|
|
|
}
|
* server/server.cpp, server/CommClient.h, server/Account.h,
server/Account.cpp, rulesets/Entity.h, rulesets/Entity.cpp,
rulesets/Character.h, rulesets/Character.cpp, rulesets/BaseMind.h,
rulesets/BaseMind.cpp, common/types.h, common/operations.h,
common/op_switch.h, common/BaseEntity.h, common/BaseEntity.cpp:
Added support for imaginary operations used in a similar way
to emoting.
* server/WorldTime.h: Added update method so underlying DataTime
can be updated.
* server/ServerRouting.h, server/Lobby.h, server/Lobby.cpp
server/ServerRouting.cpp, server/Connection.h,
server/Connection.cpp, server/Account.h, server/Account.cpp: Added
a lobby object which handles lobby chat. Essentially it stores
a list of accounts and allows operations to be sent or broadcast
to other accounts.
* rulesets/Py_WorldTime.cpp: Added python is_now() method because
using comparison does not appear to work.
* rulesets/BaseMind.cpp: Added updating of minds WorldTime each
time an operation is received.
* modules/DateTime.h: Added operator << so DateTime can be sent
to cout.
* common/types.h: Added types for storing accounts in Lobby.
Al Riddoch <alriddoch@zepler.org>
2001-05-29 11:16:09 +00:00
|
|
|
}
|
2001-06-16 17:03:11 +00:00
|
|
|
|
2004-12-06 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h, client/CreatorClient.cpp,
client/CreatorClient.h, common/BaseEntity.cpp, common/BaseEntity.h,
common/BaseWorld.h, common/OOGThing.cpp, common/OOGThing.h,
common/op_switch.h, common/refno.h, common/types.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h, rulesets/Character.cpp,
rulesets/Character.h, rulesets/Creator.cpp, rulesets/Creator.h,
rulesets/Entity.cpp, rulesets/Entity.h, rulesets/Food.cpp,
rulesets/Food.h, rulesets/MemMap.cpp, rulesets/Plant.cpp,
rulesets/Plant.h, rulesets/Py_Map.cpp, rulesets/PythonMindScript.cpp,
rulesets/PythonThingScript.cpp, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Thing.cpp, rulesets/Thing.h,
rulesets/World.cpp, rulesets/World.h, server/Account.cpp,
server/Account.h, server/Admin.cpp, server/Admin.h,
server/CommClient.cpp, server/Connection.cpp, server/Connection.h,
server/Connection_methods.h, server/ExternalMind.cpp,
server/ExternalMind.h, server/Lobby.cpp, server/Lobby.h,
server/Player.cpp, server/Player.h, server/WorldRouter.cpp,
server/WorldRouter.h, tests/Creatortest.cpp, tests/Worldtest.cpp:
Add a new Operation typedef to clean up headers, and get round
limitation in doxygen.
2004-12-06 16:35:44 +00:00
|
|
|
void Account::LookOperation(const Operation & op, OpVector & res)
|
2001-06-16 17:03:11 +00:00
|
|
|
{
|
2009-11-18 17:49:34 +00:00
|
|
|
if (m_connection == 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
2005-08-27 14:52:12 +00:00
|
|
|
const std::vector<Root> & args = op->getArgs();
|
2001-11-26 12:12:55 +00:00
|
|
|
if (args.empty()) {
|
2005-08-27 14:52:12 +00:00
|
|
|
Sight s;
|
2003-08-07 23:03:26 +00:00
|
|
|
s->setTo(getId());
|
2005-08-27 14:52:12 +00:00
|
|
|
Anonymous sight_arg;
|
|
|
|
|
m_connection->m_server.m_lobby.addToEntity(sight_arg);
|
|
|
|
|
s->setArgs1(sight_arg);
|
2004-09-03 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/CharacterClient.h,
client/CommClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/OOGThing.cpp,
common/OOGThing.h, common/op_switch.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Food.cpp, rulesets/Food.h,
rulesets/Missile.h, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Stackable.cpp, rulesets/Stackable.h, rulesets/Thing.cpp,
rulesets/Thing.h, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/Lobby.cpp, server/Lobby.h, server/Player.cpp,
server/Player.h, server/WorldRouter.cpp:
Re-work basic op dispatch mechanism so result is passed by
a reference argument rather than returning by value.
2004-09-03 00:33:19 +00:00
|
|
|
res.push_back(s);
|
|
|
|
|
return;
|
2001-08-02 14:27:06 +00:00
|
|
|
}
|
2005-08-27 14:52:12 +00:00
|
|
|
const Root & arg = args.front();
|
|
|
|
|
if (!arg->hasAttrFlag(Atlas::Objects::ID_FLAG)) {
|
2004-11-16 01:09:57 +00:00
|
|
|
error(op, "No target for look", res, getId());
|
2004-09-03 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/CharacterClient.h,
client/CommClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/OOGThing.cpp,
common/OOGThing.h, common/op_switch.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Food.cpp, rulesets/Food.h,
rulesets/Missile.h, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Stackable.cpp, rulesets/Stackable.h, rulesets/Thing.cpp,
rulesets/Thing.h, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/Lobby.cpp, server/Lobby.h, server/Player.cpp,
server/Player.h, server/WorldRouter.cpp:
Re-work basic op dispatch mechanism so result is passed by
a reference argument rather than returning by value.
2004-09-03 00:33:19 +00:00
|
|
|
return;
|
2001-11-26 12:12:55 +00:00
|
|
|
}
|
2005-08-27 14:52:12 +00:00
|
|
|
const std::string & to = arg->getId();
|
2005-11-11 Al Riddoch <alriddoch@zepler.org>
* common/types.h, server/Persistance.h, common/BaseWorld.h,
common/BaseWorld.cpp, server/WorldRouter.cpp:
Switch core world map to reference by integer ID rather than string.
Add version of getEntity() which converts from string to integer
automatically.
* rulesets/Character.cpp, rulesets/Thing.cpp, rulesets/World.cpp,
server/EntityFactory.cpp,
Use getEntity() when looking up an entity, so that conversion of
ID from string to integer is automatic.
* rulesets/BaseMind.cpp, rulesets/MemMap.cpp, rulesets/MemMap.h:
Switch to using integer IDs in MemMap's core mapping.
* server/Account.cpp, server/Account.h: Switch a few function
parameters to use integer ID values, making the code cleaner.
* server/Account.cpp, server/Admin.cpp, server/Persistance.cpp:
Handle string ID to integer conversions as required.
2005-11-11 02:04:56 +00:00
|
|
|
|
2005-11-12 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, common/BaseWorld.cpp, common/id.cpp,
common/id.h, rulesets/MemMap.cpp, server/Account.cpp,
server/Admin.cpp, server/Connection.cpp, server/Persistance.cpp,
server/Restoration.cpp, server/WorldRouter.cpp, server/server.cpp:
Add intgerId() function to convert ID strings to integers, and
check the conversion went okay.
2005-11-12 00:18:47 +00:00
|
|
|
long intId = integerId(to);
|
2005-11-11 Al Riddoch <alriddoch@zepler.org>
* common/types.h, server/Persistance.h, common/BaseWorld.h,
common/BaseWorld.cpp, server/WorldRouter.cpp:
Switch core world map to reference by integer ID rather than string.
Add version of getEntity() which converts from string to integer
automatically.
* rulesets/Character.cpp, rulesets/Thing.cpp, rulesets/World.cpp,
server/EntityFactory.cpp,
Use getEntity() when looking up an entity, so that conversion of
ID from string to integer is automatic.
* rulesets/BaseMind.cpp, rulesets/MemMap.cpp, rulesets/MemMap.h:
Switch to using integer IDs in MemMap's core mapping.
* server/Account.cpp, server/Account.h: Switch a few function
parameters to use integer ID values, making the code cleaner.
* server/Account.cpp, server/Admin.cpp, server/Persistance.cpp:
Handle string ID to integer conversions as required.
2005-11-11 02:04:56 +00:00
|
|
|
|
2010-08-15 03:33:12 +05:30
|
|
|
// Check for a possess key attached to the argument of the Look op. If
|
|
|
|
|
// we have one, this is a request to transfer a character to this account.
|
|
|
|
|
// Authenticate the requested character with the possess key found and if
|
|
|
|
|
// successful, add the character to this account.
|
2010-08-11 16:38:09 +05:30
|
|
|
Element key;
|
|
|
|
|
if (arg->copyAttr("possess_key", key) == 0 && key.isString()) {
|
|
|
|
|
const std::string & key_str = key.String();
|
|
|
|
|
Entity *character;
|
|
|
|
|
character = TeleportAuthenticator::instance()->authenticateTeleport(to, key_str);
|
|
|
|
|
if (character) {
|
|
|
|
|
if (connectCharacter(character) == 0) {
|
|
|
|
|
TeleportAuthenticator::instance()->removeTeleport(to);
|
2010-11-30 21:38:29 +00:00
|
|
|
logEvent(POSSESS_CHAR,
|
|
|
|
|
String::compose("%1 %2 %3 Claimed character (%4) "
|
|
|
|
|
"by account %5",
|
|
|
|
|
m_connection->getId(),
|
|
|
|
|
getId(),
|
|
|
|
|
character->getId(),
|
|
|
|
|
character->getType(),
|
|
|
|
|
m_username));
|
2010-08-05 03:03:21 +05:30
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2010-08-11 16:38:09 +05:30
|
|
|
|
2005-11-11 Al Riddoch <alriddoch@zepler.org>
* common/types.h, server/Persistance.h, common/BaseWorld.h,
common/BaseWorld.cpp, server/WorldRouter.cpp:
Switch core world map to reference by integer ID rather than string.
Add version of getEntity() which converts from string to integer
automatically.
* rulesets/Character.cpp, rulesets/Thing.cpp, rulesets/World.cpp,
server/EntityFactory.cpp,
Use getEntity() when looking up an entity, so that conversion of
ID from string to integer is automatic.
* rulesets/BaseMind.cpp, rulesets/MemMap.cpp, rulesets/MemMap.h:
Switch to using integer IDs in MemMap's core mapping.
* server/Account.cpp, server/Account.h: Switch a few function
parameters to use integer ID values, making the code cleaner.
* server/Account.cpp, server/Admin.cpp, server/Persistance.cpp:
Handle string ID to integer conversions as required.
2005-11-11 02:04:56 +00:00
|
|
|
EntityDict::const_iterator J = m_charactersDict.find(intId);
|
2003-05-04 18:31:38 +00:00
|
|
|
if (J != m_charactersDict.end()) {
|
2005-08-27 14:52:12 +00:00
|
|
|
Sight s;
|
2003-08-07 23:03:26 +00:00
|
|
|
s->setTo(getId());
|
2005-08-27 14:52:12 +00:00
|
|
|
Anonymous sight_arg;
|
|
|
|
|
J->second->addToEntity(sight_arg);
|
|
|
|
|
s->setArgs1(sight_arg);
|
2004-09-03 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/CharacterClient.h,
client/CommClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/OOGThing.cpp,
common/OOGThing.h, common/op_switch.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Food.cpp, rulesets/Food.h,
rulesets/Missile.h, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Stackable.cpp, rulesets/Stackable.h, rulesets/Thing.cpp,
rulesets/Thing.h, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/Lobby.cpp, server/Lobby.h, server/Player.cpp,
server/Player.h, server/WorldRouter.cpp:
Re-work basic op dispatch mechanism so result is passed by
a reference argument rather than returning by value.
2004-09-03 00:33:19 +00:00
|
|
|
res.push_back(s);
|
|
|
|
|
return;
|
2001-06-16 23:05:08 +00:00
|
|
|
}
|
2003-05-04 18:31:38 +00:00
|
|
|
const AccountDict & accounts = m_connection->m_server.m_lobby.getAccounts();
|
2002-03-08 14:58:40 +00:00
|
|
|
AccountDict::const_iterator K = accounts.find(to);
|
2001-11-26 12:12:55 +00:00
|
|
|
if (K != accounts.end()) {
|
2005-08-27 14:52:12 +00:00
|
|
|
Sight s;
|
2003-08-07 23:03:26 +00:00
|
|
|
s->setTo(getId());
|
2005-08-27 14:52:12 +00:00
|
|
|
Anonymous sight_arg;
|
|
|
|
|
K->second->addToEntity(sight_arg);
|
|
|
|
|
s->setArgs1(sight_arg);
|
2004-09-03 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/CharacterClient.h,
client/CommClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/OOGThing.cpp,
common/OOGThing.h, common/op_switch.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Food.cpp, rulesets/Food.h,
rulesets/Missile.h, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Stackable.cpp, rulesets/Stackable.h, rulesets/Thing.cpp,
rulesets/Thing.h, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/Lobby.cpp, server/Lobby.h, server/Player.cpp,
server/Player.h, server/WorldRouter.cpp:
Re-work basic op dispatch mechanism so result is passed by
a reference argument rather than returning by value.
2004-09-03 00:33:19 +00:00
|
|
|
res.push_back(s);
|
|
|
|
|
return;
|
2001-08-02 14:27:06 +00:00
|
|
|
}
|
2004-11-16 01:09:57 +00:00
|
|
|
error(op, "Unknown look target", res, getId());
|
2001-06-16 17:03:11 +00:00
|
|
|
}
|
2008-01-17 18:54:04 +00:00
|
|
|
|
|
|
|
|
void Account::GetOperation(const Operation & op, OpVector & res)
|
|
|
|
|
{
|
|
|
|
|
}
|
2008-01-28 Al Riddoch <alriddoch@googlemail.com>
* client/BaseClient.cpp, common/BaseEntity.cpp, common/BaseEntity.h,
common/Identified.cpp, common/Identified.h, common/Makefile.am,
common/OOGThing.cpp, common/OOGThing.h, common/OperationRouter.cpp,
common/OperationRouter.h, rulesets/Character.h, rulesets/Entity.h,
rulesets/LocatedEntity.cpp, rulesets/LocatedEntity.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/CommClient.cpp, server/CommClient.h, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/ExternalProperty.cpp, server/ExternalProperty.h,
server/Lobby.cpp, server/Lobby.h, server/Master.cpp, server/Master.h,
server/Peer.cpp, server/Peer.h, server/ServerRouting.cpp,
server/ServerRouting.h, server/SlaveClientConnection.cpp,
server/SlaveClientConnection.h: Factor out the more pointless base
classes, in favor of simple interface. Move destroyed signal to
Entity, which is the only place it is needed.
2008-01-28 23:48:30 +00:00
|
|
|
|
|
|
|
|
void Account::OtherOperation(const Operation & op, OpVector & res)
|
|
|
|
|
{
|
|
|
|
|
error(op, "Unknown operation", res);
|
|
|
|
|
}
|