libkdegames/kgame
KGamePropertyBase Class Reference
#include <kgameproperty.h>

Detailed Description
Base class of KGameProperty.The KGamePropertyBase class is the base class of KGameProperty. See KGameProperty for further information.
Definition at line 43 of file kgameproperty.h.
Public Types | |
| enum | PropertyDataIds { IdGroup = 1, IdUserId = 2, IdAsyncInput = 3, IdTurn = 4, IdName = 5, IdGameStatus = 6, IdMaxPlayer = 7, IdMinPlayer = 8, IdGrabInput = 16, IdReleaseInput = 17, IdCommand, IdUser = 256, IdAutomatic = 0x7000 } |
| enum | PropertyCommandIds { CmdLock = 1, CmdAt = 51, CmdResize = 52, CmdFill = 53, CmdSort = 54, CmdInsert = 61, CmdAppend = 62, CmdRemove = 63, CmdClear = 64 } |
| enum | PropertyPolicy { PolicyUndefined = 0, PolicyClean = 1, PolicyDirty = 2, PolicyLocal = 3 } |
Public Member Functions | |
| KGamePropertyBase (int id, KGamePropertyHandler *owner) | |
| KGamePropertyBase (int id, KGame *parent) | |
| KGamePropertyBase (int id, KPlayer *parent) | |
| KGamePropertyBase () | |
| virtual | ~KGamePropertyBase () |
| void | setPolicy (PropertyPolicy p) |
| PropertyPolicy | policy () const |
| void | setEmittingSignal (bool p) |
| bool | isEmittingSignal () const |
| void | setOptimized (bool p) |
| bool | isOptimized () const |
| bool | isDirty () const |
| bool | isLocked () const |
| bool | lock () |
| bool | unlock (bool force=false) |
| virtual void | load (QDataStream &s)=0 |
| virtual void | save (QDataStream &s)=0 |
| virtual void | command (QDataStream &stream, int msgid, bool isSender=false) |
| int | id () const |
| virtual const type_info * | typeinfo () |
| int | registerData (int id, KGamePropertyHandler *owner, PropertyPolicy p, const QString &name=0) |
| int | registerData (int id, KGamePropertyHandler *owner, const QString &name=0) |
| int | registerData (int id, KGame *owner, const QString &name=0) |
| int | registerData (int id, KPlayer *owner, const QString &name=0) |
| int | registerData (KGamePropertyHandler *owner, PropertyPolicy p=PolicyUndefined, const QString &name=0) |
| void | unregisterData () |
Protected Member Functions | |
| void | setLock (bool l) |
| void | setDirty (bool d) |
| bool | sendProperty () |
| bool | sendProperty (const QByteArray &b) |
| void | emitSignal () |
Protected Attributes | |
| KGamePropertyHandler * | mOwner |
| union KGamePropertyBase::Flags | mFlags |
Friends | |
| class | KGamePropertyHandler |
Classes | |
| union | Flags |
Member Enumeration Documentation
- Enumerator:
-
IdGroup IdUserId IdAsyncInput IdTurn IdName IdGameStatus IdMaxPlayer IdMinPlayer IdGrabInput IdReleaseInput IdCommand IdUser IdAutomatic
Definition at line 46 of file kgameproperty.h.
The policy of the property.
This can be PolicyClean (setValue uses send), PolicyDirty (setValue uses changeValue) or PolicyLocal (setValue uses setLocal).
A "clean" policy means that the property is always the same on every client. This is achieved by calling send which actually changes the value only when the message from the MessageServer is received.
A "dirty" policy means that as soon as setValue is called the property is changed immediately. And additionally sent over network. This can sometimes lead to bugs as the other clients do not immediately have the same value. For more information see changeValue.
PolicyLocal means that a KGameProperty behaves like ever "normal" variable. Whenever setValue is called (e.g. using "=") the value of the property is changes immediately without sending it over network. You might want to use this if you are sure that all clients set the property at the same time.
Definition at line 110 of file kgameproperty.h.
Constructor & Destructor Documentation
| KGamePropertyBase::KGamePropertyBase | ( | int | id, | |
| KGamePropertyHandler * | owner | |||
| ) |
Constructs a KGamePropertyBase object and calls registerData.
- Parameters:
-
id The id of this property. MUST be UNIQUE! Used to send and receive changes in the property of the playere automatically via network. owner The owner of the object. Must be a KGamePropertyHandler which manages the changes made to this object, i.e. which will send the new data
Definition at line 41 of file kgameproperty.cpp.
| KGamePropertyBase::KGamePropertyBase | ( | int | id, | |
| KGame * | parent | |||
| ) |
Definition at line 29 of file kgameproperty.cpp.
| KGamePropertyBase::KGamePropertyBase | ( | int | id, | |
| KPlayer * | parent | |||
| ) |
Definition at line 35 of file kgameproperty.cpp.
| KGamePropertyBase::KGamePropertyBase | ( | ) |
Creates a KGamePropertyBase object without an owner.
Remember to call registerData!
Definition at line 47 of file kgameproperty.cpp.
| KGamePropertyBase::~KGamePropertyBase | ( | ) | [virtual] |
Definition at line 52 of file kgameproperty.cpp.
Member Function Documentation
| void KGamePropertyBase::setPolicy | ( | PropertyPolicy | p | ) | [inline] |
Changes the consistency policy of a property.
The PropertyPolicy is one of PolicyClean (defaulz), PolicyDirty or PolicyLocal.
It is up to you to decide how you want to work.
Definition at line 146 of file kgameproperty.h.
| PropertyPolicy KGamePropertyBase::policy | ( | ) | const [inline] |
| void KGamePropertyBase::setEmittingSignal | ( | bool | p | ) | [inline] |
Sets this property to emit a signal on value changed.
As the properties do not inherit QObject for optimization this signal is emitted via the KPlayer or KGame object
Definition at line 158 of file kgameproperty.h.
| bool KGamePropertyBase::isEmittingSignal | ( | ) | const [inline] |
See also setEmittingSignal.
- Returns:
- Whether this property emits a signal on value change
Definition at line 164 of file kgameproperty.h.
| void KGamePropertyBase::setOptimized | ( | bool | p | ) | [inline] |
Sets this property to try to optimize signal and network handling by not sending it out when the property value is not changed.
Definition at line 170 of file kgameproperty.h.
| bool KGamePropertyBase::isOptimized | ( | ) | const [inline] |
See also setOptimize.
- Returns:
- Whether the property optimizes access (signals,network traffic)
Definition at line 176 of file kgameproperty.h.
| bool KGamePropertyBase::isDirty | ( | ) | const [inline] |
- Returns:
- Whether this property is "dirty".
See also setDirty
Definition at line 181 of file kgameproperty.h.
| bool KGamePropertyBase::isLocked | ( | ) | const [inline] |
A locked property can only be changed by the player who has set the lock.
See also setLocked
- Returns:
- Whether this property is currently locked.
Definition at line 188 of file kgameproperty.h.
| bool KGamePropertyBase::lock | ( | ) |
A locked property can only be changed by the player who has set the lock.
You can only call this if isLocked is false. A message is sent over network so that the property is locked for all players except you.
- Returns:
- returns false if the property can not be locked, i.e. it is already locked
Definition at line 149 of file kgameproperty.cpp.
| bool KGamePropertyBase::unlock | ( | bool | force = false |
) |
A locked property can only be changed by the player who has set the lock.
You can only call this if isLocked is false. A message is sent over network so that the property is locked for all players except you.
- Returns:
- returns false if the property can not be locked, i.e. it is already locked
Definition at line 158 of file kgameproperty.cpp.
| virtual void KGamePropertyBase::load | ( | QDataStream & | s | ) | [pure virtual] |
This will read the value of this property from the stream.
You MUST overwrite this method in order to use this class
- Parameters:
-
s The stream to read from
Implemented in KGameProperty< type >, KGamePropertyArray< type >, and KGamePropertyList< type >.
| virtual void KGamePropertyBase::save | ( | QDataStream & | s | ) | [pure virtual] |
Write the value into a stream.
MUST be overwritten
Implemented in KGameProperty< type >, KGamePropertyArray< type >, and KGamePropertyList< type >.
| void KGamePropertyBase::command | ( | QDataStream & | stream, | |
| int | msgid, | |||
| bool | isSender = false | |||
| ) | [virtual] |
send a command to advanced properties like arrays
- Parameters:
-
stream The stream containing the data of the comand msgid The ID of the command - see PropertyCommandIds isSender whether this client is also the sender of the command
Reimplemented in KGamePropertyArray< type >, and KGamePropertyList< type >.
Definition at line 192 of file kgameproperty.cpp.
| int KGamePropertyBase::id | ( | ) | const [inline] |
| virtual const type_info* KGamePropertyBase::typeinfo | ( | ) | [inline, virtual] |
- Returns:
- a type_info of the data this property contains.
This is used e.g. by KGameDebugDialog
Reimplemented in KGameProperty< type >.
Definition at line 245 of file kgameproperty.h.
| int KGamePropertyBase::registerData | ( | int | id, | |
| KGamePropertyHandler * | owner, | |||
| PropertyPolicy | p, | |||
| const QString & | name = 0 | |||
| ) |
You have to register a KGamePropertyBase before you can use it.
You MUST call this before you can use KGamePropertyBase!
- Parameters:
-
id the id of this KGamePropertyBase object. The id MUST be unique, i.e. you cannot have two properties with the same id for one player, although (currently) nothing prevents you from doing so. But you will get strange results! owner The owner of this data. This will send the data using KPropertyHandler::sendProperty whenever you call send p If not 0 you can set the policy of the property here name if not 0 you can assign a name to this property
Definition at line 88 of file kgameproperty.cpp.
| int KGamePropertyBase::registerData | ( | int | id, | |
| KGamePropertyHandler * | owner, | |||
| const QString & | name = 0 | |||
| ) |
This is an overloaded member function, provided for convenience.
It differs from the above function only in what argument(s) it accepts.
Definition at line 85 of file kgameproperty.cpp.
This is an overloaded member function, provided for convenience.
It differs from the above function only in what argument(s) it accepts.
Definition at line 76 of file kgameproperty.cpp.
This is an overloaded member function, provided for convenience.
It differs from the above function only in what argument(s) it accepts.
Definition at line 79 of file kgameproperty.cpp.
| int KGamePropertyBase::registerData | ( | KGamePropertyHandler * | owner, | |
| PropertyPolicy | p = PolicyUndefined, |
|||
| const QString & | name = 0 | |||
| ) |
This is an overloaded member function, provided for convenience.
It differs from the above function only in what argument(s) it accepts. In particular you can use this function to create properties which will have an automatic id assigned. The new id is returned.
Definition at line 82 of file kgameproperty.cpp.
| void KGamePropertyBase::unregisterData | ( | ) |
Definition at line 112 of file kgameproperty.cpp.
| void KGamePropertyBase::setLock | ( | bool | l | ) | [protected] |
A locked property can only be changed by the player who has set the lock.
You can only call this if isLocked is false. A message is sent over network so that the property is locked for all players except you. Usually you use lock and unlock to access this property
Definition at line 167 of file kgameproperty.cpp.
| void KGamePropertyBase::setDirty | ( | bool | d | ) | [inline, protected] |
Sets the "dirty" flag of the property.
If a property is "dirty" i.e. KGameProperty::setLocal has been called there is no guarantee that all clients share the same value. You have to ensure this yourself e.g. by calling KGameProperty::setLocal on every client. You can also ignore the dirty flag and continue working withe the property depending on your situation.
Definition at line 317 of file kgameproperty.h.
| bool KGamePropertyBase::sendProperty | ( | ) | [protected] |
Forward the data to the owner of this property which then sends it over network.
save is used to store the data into a stream so you have to make sure that function is working properly if you implement your own property!
Note: this sends the current property!
Might be obsolete - KGamePropertyArray still uses it. Is this a bug or correct?
Definition at line 121 of file kgameproperty.cpp.
| bool KGamePropertyBase::sendProperty | ( | const QByteArray & | b | ) | [protected] |
Forward the data to the owner of this property which then sends it over network.
save is used to store the data into a stream so you have to make sure that function is working properly if you implement your own property!
This function is used by send to send the data over network. This does not send the current value but the explicitly given value.
- Returns:
- TRUE if the message could be sent successfully, otherwise FALSE
Definition at line 135 of file kgameproperty.cpp.
| void KGamePropertyBase::emitSignal | ( | ) | [protected] |
Causes the parent object to emit a signal on value change.
Definition at line 182 of file kgameproperty.cpp.
Friends And Related Function Documentation
friend class KGamePropertyHandler [friend] |
Definition at line 376 of file kgameproperty.h.
Member Data Documentation
KGamePropertyHandler* KGamePropertyBase::mOwner [protected] |
Definition at line 353 of file kgameproperty.h.
union KGamePropertyBase::Flags KGamePropertyBase::mFlags [protected] |
The documentation for this class was generated from the following files:
KDE 4.0 API Reference