summaryrefslogtreecommitdiff
path: root/src/d_mode.c
diff options
context:
space:
mode:
authorSimon Howard2008-09-10 23:01:59 +0000
committerSimon Howard2008-09-10 23:01:59 +0000
commit77518973bb9e163896c811336be11abd7346a360 (patch)
treea677c290d699b4e07cecd32d4a7ab1714ee1a731 /src/d_mode.c
parentcf42188fb493250133fd15fccb61faaf0444a03a (diff)
downloadchocolate-doom-77518973bb9e163896c811336be11abd7346a360.tar.gz
chocolate-doom-77518973bb9e163896c811336be11abd7346a360.tar.bz2
chocolate-doom-77518973bb9e163896c811336be11abd7346a360.zip
Add missing d_mode.[ch].
Subversion-branch: /branches/raven-branch Subversion-revision: 1220
Diffstat (limited to 'src/d_mode.c')
-rw-r--r--src/d_mode.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/d_mode.c b/src/d_mode.c
new file mode 100644
index 00000000..51e3e345
--- /dev/null
+++ b/src/d_mode.c
@@ -0,0 +1,91 @@
+// Emacs style mode select -*- C++ -*-
+//-----------------------------------------------------------------------------
+//
+// Copyright(C) 2005 Simon Howard
+//
+// 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., 59 Temple Place - Suite 330, Boston, MA
+// 02111-1307, USA.
+//
+// Common code shared between the client and server
+//
+
+
+#include "doomtype.h"
+#include "d_mode.h"
+
+// Table of valid game modes
+
+static struct {
+ GameMission_t mission;
+ GameMode_t mode;
+} valid_modes[] = {
+ { doom, shareware },
+ { doom, registered },
+ { doom, retail },
+ { doom2, commercial },
+ { pack_tnt, commercial },
+ { pack_plut, commercial },
+ { heretic, shareware },
+ { heretic, registered },
+ { hexen, commercial },
+};
+
+// Check that a gamemode+gamemission received over the network is valid.
+
+boolean D_ValidGameMode(GameMission_t mission, GameMode_t mode)
+{
+ int i;
+
+ for (i=0; i<arrlen(valid_modes); ++i)
+ {
+ if (valid_modes[i].mode == mode && valid_modes[i].mission == mission)
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+// Table of valid versions
+
+static struct {
+ GameMission_t mission;
+ GameVersion_t version;
+} valid_versions[] = {
+ { doom, exe_doom_1_9 },
+ { doom, exe_ultimate },
+ { doom, exe_chex },
+ { doom, exe_final },
+ { heretic, exe_heretic_1_3 },
+ { hexen, exe_hexen_1_1 },
+};
+
+boolean D_ValidGameVersion(GameMission_t mission, GameVersion_t version)
+{
+ int i;
+
+ for (i=0; i<arrlen(valid_versions); ++i)
+ {
+ if (valid_versions[i].mission == mission
+ && valid_versions[i].version == version)
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+