summaryrefslogtreecommitdiff
path: root/src/lockedarray.h
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2010-02-19 22:38:59 +0100
committerThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2010-02-19 23:37:36 +0100
commit363527d0f95963ba3f4a6d25c8eabc1bb3ad4efe (patch)
tree117ce95d3587f913a64b71fe4dcdee716b8aea7e /src/lockedarray.h
parent432d16435774cafd630e287321e882f3e8510d16 (diff)
downloadmana-client-363527d0f95963ba3f4a6d25c8eabc1bb3ad4efe.tar.gz
mana-client-363527d0f95963ba3f4a6d25c8eabc1bb3ad4efe.tar.bz2
mana-client-363527d0f95963ba3f4a6d25c8eabc1bb3ad4efe.tar.xz
mana-client-363527d0f95963ba3f4a6d25c8eabc1bb3ad4efe.zip
Fixed a crash when trying to switch servers
Ownership of the charInfo global variable wasn't well defined. It was being locked, unlocked and generally modified from a lot of places, and somewhere in this mess it ended up crashing when switching servers. Now the CharHandler instances, for eAthena and manaserv respectively, own this list of characters. A new class, Net::Character wraps up the slot index in combination with the player dummy. The list is passed on to the CharSelectDialog each time it changes. Both related and unrelated cleanups were made as well. Reviewed-by: Jared Adams
Diffstat (limited to 'src/lockedarray.h')
-rw-r--r--src/lockedarray.h131
1 files changed, 0 insertions, 131 deletions
diff --git a/src/lockedarray.h b/src/lockedarray.h
deleted file mode 100644
index 2190684f..00000000
--- a/src/lockedarray.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * The Mana World
- * Copyright (C) 2004-2010 The Mana World Development Team
- *
- * This file is part of The Mana World.
- *
- * 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
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef LOCKEDARRAY_H
-#define LOCKEDARRAY_H
-
-#include <algorithm>
-
-/**
- * A _very_ basic array class that allows simple iteration and jumps, keeping
- * its currently selected entry and providing a mechanism to lock this
- * position. Anyone can unlock it though, so its your job to use it the right
- * way ;)
- */
-
-template<class T>
-class LockedArray
-{
- public:
- LockedArray(unsigned int size);
- ~LockedArray();
-
- void lock() { mLocked = true; };
- void unlock() { mLocked = false; };
-
- bool isLocked() const { return mLocked; };
-
- T getEntry() const { return mData[mCurEntry]; };
- void setEntry(T entry) { mData[mCurEntry] = entry; mFilled = true; };
-
- void next();
- void prev();
- void select(unsigned int pos);
- unsigned int getPos() const { return mCurEntry; }
-
- unsigned int getSize() const { return mSize; };
-
- /**
- * Clears the array without changing size or data type
- */
- void clear();
-
- protected:
- unsigned int mSize;
-
- T* mData;
-
- unsigned int mCurEntry;
- bool mLocked;
-
- bool mFilled;
-};
-
-template<class T>
-LockedArray<T>::LockedArray(unsigned int size):
- mSize(size), mData(new T[size]), mCurEntry(0), mLocked(false),
- mFilled(false)
-{
- std::fill_n(mData, mSize, (T)0);
-}
-
-template<class T>
-LockedArray<T>::~LockedArray()
-{
- delete [] mData;
-}
-
-template<class T>
-void LockedArray<T>::next()
-{
- if (mLocked)
- return;
-
- if (++mCurEntry == mSize)
- mCurEntry = 0;
-}
-
-template<class T>
-void LockedArray<T>::prev()
-{
- if (mLocked)
- return;
-
- mCurEntry = mCurEntry ? (--mCurEntry) : (mSize - 1);
-}
-
-template<class T>
-void LockedArray<T>::select(unsigned int pos)
-{
- if (mLocked)
- return;
-
- mCurEntry = pos;
- if (mCurEntry >= mSize)
- mCurEntry = 0;
-}
-
-template<class T>
-void LockedArray<T>::clear()
-{
- if (!mFilled) return;
-
- delete [] mData;
-
- mData = new T[mSize];
-
- std::fill_n(mData, mSize, (T)0);
-
- mCurEntry = 0;
-
- mLocked = false;
-}
-#endif