aboutsummaryrefslogtreecommitdiff
path: root/src/player.cpp
Commit message (Expand)AuthorAge
...
* Revert old 4BS/s walk speed for nowPerttu Ahola2012-03-15
* Faster player movement and smaller collision boxPerttu Ahola2012-03-10
* Players stay in environment even when dead, damage flash and fall damage fixesKahrl2012-02-05
* Fix craftresult_is_preview flood in log and remove unnecessary debug outputKahrl2012-01-25
* Inventory menu (with dragging) improved. Crafting is now handled via a IACTIO...Kahrl2012-01-22
* The huge item definition and item namespace unification patch (itemdef), see ...Kahrl2012-01-12
* Move ServerRemotePlayer to a separate filePerttu Ahola2011-12-02
* Make players be again visible from a long distancePerttu Ahola2011-12-02
* Players are more like objects + related stuffPerttu Ahola2011-12-01
* Player-is-SAO WIPPerttu Ahola2011-12-01
* Proper player inventory and hp modification tracking and sending accordinglyPerttu Ahola2011-11-29
* CraftItem rework and Lua interfaceKahrl2011-11-29
* Player movement speed and node access distance checkingPerttu Ahola2011-11-29
* Clean mapnode.h and fix other files accordinglyPerttu Ahola2011-11-29
* GameDef compilesPerttu Ahola2011-11-29
* Create framework for getting rid of global definitions of node/tool/item/what...Perttu Ahola2011-11-29
* Move ContentFeatures to mapnode_contentfeatures.{h,cpp} and clean stuffPerttu Ahola2011-11-29
* Scripting WIP: dynamic object stuffPerttu Ahola2011-11-29
* ServerRemotePlayer implements ServerActiveObjectPerttu Ahola2011-11-29
* Better player damage prevention when falling on unloaded blocks, not involvin...Perttu Ahola2011-10-16
* Fix some "Conditional jump or move depends on uninitialised value(s)" valgrin...Perttu Ahola2011-10-15
* Header file tweaking; mainly for speedPerttu Ahola2011-10-12
* Pause in unloaded territory instead of collideJacobF2011-09-06
* Keep track of player itemGiuseppe Bilotta2011-08-11
* Fixing ladders againMark Holmquist2011-08-01
* Fixed a few problems in the ladder update, and changed the speed to account f...Mark Holmquist2011-08-01
* Ladders implemented!Mark Holmquist2011-08-01
* Fixed handling of inventory in creative mode (normal inventory is not trashed...Perttu Ahola2011-07-30
* extended content-type rangePerttu Ahola2011-07-23
* improved player fall damage detectionPerttu Ahola2011-06-26
* hopefully fixed the privilege problemsPerttu Ahola2011-05-29
* player passwords and privileges in world/auth.txtPerttu Ahola2011-05-29
* Added 'shout' player privilegeCiaran Gultnieks2011-05-23
* All textures are are now searched first from the directory specified by the t...Perttu Ahola2011-05-21
* Passwords - password entry at main menu, stored and checked by serverCiaran Gultnieks2011-05-20
* Fixed two compiler warningsPerttu Ahola2011-05-16
* Privileges to/from string conversion functions standalone, not static membersCiaran Gultnieks2011-05-16
* Allow "all" to be specified in player config file for privilegesCiaran Gultnieks2011-05-16
* Improved server commands and added player permissions.Ciaran Gultnieks2011-05-16
* Code refactoring; split half of main.cpp to game.cpp.Perttu Ahola2011-04-23
* set client to not show hp if server doesn't support itPerttu Ahola2011-04-21
* Some work-in-progress in hp and mobs and a frightening amount of random fixes.Perttu Ahola2011-04-21
* Fixed some problems with crafting and inventoryPerttu Ahola2011-04-11
* mainly work on object scripting apiPerttu Ahola2011-02-23
* Temporary commit; lots of test code and stuffPerttu Ahola2011-02-21
* sneaking bug fixingPerttu Ahola2011-02-14
* disabled jumping in sneak mode if far away from the edge because it can drop ...Perttu Ahola2011-02-14
* fixed bug in sneakingPerttu Ahola2011-02-14
* added sneaking/crouching and changelogPerttu Ahola2011-02-14
* bug-fixin'Perttu Ahola2011-02-08
return *ptr; } bool operator!=(T *t) { return ptr != t; } bool operator==(T *t) { return ptr == t; } T & operator[](unsigned int i) { return ptr[i]; } private: void drop() { assert((*refcount) > 0); (*refcount)--; if(*refcount == 0) { delete refcount; if(ptr != NULL) delete ptr; } } T *ptr; int *refcount; }; template <typename T> class Buffer { public: Buffer() { m_size = 0; data = NULL; } Buffer(unsigned int size) { m_size = size; if(size != 0) data = new T[size]; else data = NULL; } Buffer(const Buffer &buffer) { m_size = buffer.m_size; if(m_size != 0) { data = new T[buffer.m_size]; memcpy(data, buffer.data, buffer.m_size); } else data = NULL; } Buffer(const T *t, unsigned int size) { m_size = size; if(size != 0) { data = new T[size]; memcpy(data, t, size); } else data = NULL; } ~Buffer() { drop(); } Buffer& operator=(const Buffer &buffer) { if(this == &buffer) return *this; drop(); m_size = buffer.m_size; if(m_size != 0) { data = new T[buffer.m_size]; memcpy(data, buffer.data, buffer.m_size); } else data = NULL; return *this; } T & operator[](unsigned int i) const { return data[i]; } T * operator*() const { return data; } unsigned int getSize() const { return m_size; } private: void drop() { if(data) delete[] data; } T *data; unsigned int m_size; }; template <typename T> class SharedBuffer { public: SharedBuffer() { m_size = 0; data = NULL; refcount = new unsigned int; (*refcount) = 1; } SharedBuffer(unsigned int size) { m_size = size; if(m_size != 0) data = new T[m_size]; else data = NULL; refcount = new unsigned int; memset(data,0,sizeof(T)*m_size); (*refcount) = 1; } SharedBuffer(const SharedBuffer &buffer) { //std::cout<<"SharedBuffer(const SharedBuffer &buffer)"<<std::endl; m_size = buffer.m_size; data = buffer.data; refcount = buffer.refcount; (*refcount)++; } SharedBuffer & operator=(const SharedBuffer & buffer) { //std::cout<<"SharedBuffer & operator=(const SharedBuffer & buffer)"<<std::endl; if(this == &buffer) return *this; drop(); m_size = buffer.m_size; data = buffer.data; refcount = buffer.refcount; (*refcount)++; return *this; } /* Copies whole buffer */ SharedBuffer(const T *t, unsigned int size) { m_size = size; if(m_size != 0) { data = new T[m_size]; memcpy(data, t, m_size); } else data = NULL; refcount = new unsigned int; (*refcount) = 1; } /* Copies whole buffer */ SharedBuffer(const Buffer<T> &buffer) { m_size = buffer.getSize(); if(m_size != 0) { data = new T[m_size]; memcpy(data, *buffer, buffer.getSize()); } else data = NULL; refcount = new unsigned int; (*refcount) = 1; } ~SharedBuffer() { drop(); } T & operator[](unsigned int i) const { assert(i < m_size); return data[i]; } T * operator*() const { return data; } unsigned int getSize() const { return m_size; } operator Buffer<T>() const { return Buffer<T>(data, m_size); } private: void drop() { assert((*refcount) > 0); (*refcount)--; if(*refcount == 0) { if(data) delete[] data; delete refcount; } } T *data; unsigned int m_size; unsigned int *refcount; }; inline SharedBuffer<u8> SharedBufferFromString(const char *string) { SharedBuffer<u8> b((u8*)string, strlen(string)+1); return b; } #endif