Skip to content

Commit

Permalink
PEGASUS: Import MMUtilities functions
Browse files Browse the repository at this point in the history
  • Loading branch information
Matthew Hoops committed Jun 15, 2011
1 parent 9aa9e6a commit 8d4e60d
Show file tree
Hide file tree
Showing 3 changed files with 108 additions and 1 deletion.
63 changes: 63 additions & 0 deletions engines/pegasus/MMShell/Utilities/MMUtilities.cpp
@@ -0,0 +1,63 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* Additional copyright for this file:
* Copyright (C) 1995-1997 Presto Studios
*
* 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.
*
*/

#include "common/random.h"
#include "common/util.h"

#include "pegasus/MMShell/Utilities/MMUtilities.h"

namespace Pegasus {

inline int32 Round(const int32 a, const int32 b) {
if (b < 0)
if (a < 0)
return -((a - (-b >> 1)) / -b);
else
return -((a + (-b >> 1)) / -b);
else
if (a < 0)
return (a - (b >> 1)) / b;
else
return (a + (b >> 1)) / b;
}

int32 LinearInterp(const int32 start1, const int32 stop1, const int32 current1, const int32 start2, const int32 stop2) {
if (start2 == stop2)
return start2;
else
return start2 + Round((current1 - start1) * (stop2 - start2), (stop1 - start1));
}

void ShuffleArray(int32 *arr, int32 count, Common::RandomSource &random) {
if (count > 1) {
for (int32 i = 1; i < count; ++i) {
int32 j = random.getRandomNumber(i);
if (j != i)
SWAP(arr[i], arr[j]);
}
}
}

} // End of namespace Pegasus
43 changes: 43 additions & 0 deletions engines/pegasus/MMShell/Utilities/MMUtilities.h
@@ -0,0 +1,43 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* Additional copyright for this file:
* Copyright (C) 1995-1997 Presto Studios
*
* 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.
*
*/

#ifndef PEGASUS_MMSHELL_UTILITIES_MMUTILITIES_H
#define PEGASUS_MMSHELL_UTILITIES_MMUTILITIES_H

#include "common/scummsys.h"

namespace Common {
class RandomSource;
}

namespace Pegasus {

int32 LinearInterp(const int32 start1, const int32 stop1, const int32 current1, const int32 start2, const int32 stop2);

void ShuffleArray(int32 *arr, int32 count, Common::RandomSource &random);

} // End of namespace Pegasus

#endif
3 changes: 2 additions & 1 deletion engines/pegasus/module.mk
Expand Up @@ -11,7 +11,8 @@ MODULE_OBJS = \
video.o \
Game_Shell/CItem.o \
MMShell/Sounds/MMSound.o \
MMShell/Utilities/MMResourceFile.o
MMShell/Utilities/MMResourceFile.o \
MMShell/Utilities/MMUtilities.o


# This module can be built as a plugin
Expand Down

0 comments on commit 8d4e60d

Please sign in to comment.