diff src/util.c @ 8:0836fb919dfa

First entry of Paradise Server 2.9 patch 10 Beta
author darius
date Sat, 06 Dec 1997 04:37:05 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/util.c	Sat Dec 06 04:37:05 1997 +0000
@@ -0,0 +1,123 @@
+/*--------------------------------------------------------------------------
+NETREK II -- Paradise
+
+Permission to use, copy, modify, and distribute this software and its
+documentation, or any derivative works thereof, for any NON-COMMERCIAL
+purpose and without fee is hereby granted, provided that this copyright
+notice appear in all copies.  No representations are made about the
+suitability of this software for any purpose.  This software is provided
+"as is" without express or implied warranty.
+
+    Xtrek Copyright 1986                            Chris Guthrie
+    Netrek (Xtrek II) Copyright 1989                Kevin P. Smith
+                                                    Scott Silvey
+    Paradise II (Netrek II) Copyright 1993          Larry Denys
+                                                    Kurt Olsen
+                                                    Brandon Gillespie
+--------------------------------------------------------------------------*/
+
+
+#include "config.h"
+
+#include <stdio.h>
+#include <math.h>
+#include <signal.h>
+#include <sys/time.h>
+#include "defs.h"
+#include "struct.h"
+#include "data.h"
+#include "shmem.h"
+
+struct player *me;
+struct ship *myship;
+struct stats *mystats;
+
+
+
+/*----------------------------VISIBLE FUNCTIONS---------------------------*/
+
+/*-------------------------------ANGDIST----------------------------------*/
+/*
+ * This function provides the proper angular distance between two angles. The
+ * angles are expressed as numbers from 0-255.
+ */
+
+int
+angdist(x, y)
+  unsigned char x, y;
+{
+  register unsigned char res;	/* temp var */
+
+  res = x - y;			/* get abs value of difference */
+  if (res > 128)		/* if more than 180 degrees */
+    return (256 - (int) res);	/* then choose to go other way around */
+  return ((int) res);		/* else its just the difference */
+}
+
+/*-------------------------------------------------------------------------*/
+
+
+/*
+ * this function checks to see if an occurrence is temporally spaced from the
+ * previous one.  This is useful in preventing the client from firing torps
+ * and missiles too quickly and to limit detting to a reasonable frequency
+ * (detting too fast burns fuel and increases wtemp without any benefit).
+ */
+
+int
+temporally_spaced(lasttime, gap)
+  struct timeval *lasttime;
+  int gap;			/* microseconds */
+{
+  struct timeval curtp;
+
+  gettimeofday(&curtp, (struct timezone *) 0);
+  if ((curtp.tv_sec == lasttime->tv_sec &&
+       curtp.tv_usec < lasttime->tv_usec + gap)
+      || (curtp.tv_sec == lasttime->tv_sec + 1 &&
+	  curtp.tv_usec + 1000000 < lasttime->tv_usec + gap))
+    return 0;
+
+  lasttime->tv_sec = curtp.tv_sec;
+  lasttime->tv_usec = curtp.tv_usec;
+  return 1;
+}
+
+/*
+ */
+
+int
+check_fire_warp()
+{
+  if (configvals->fireduringwarp || !(me->p_flags & PFWARP))
+    return 1;
+
+  warning("Can not fire while in warp.");
+
+  return 0;
+}
+
+int
+check_fire_warpprep()
+{
+  if (configvals->fireduringwarpprep || !me->p_warptime)
+    return 1;
+
+  warning("Can not fire while preparing for warp.");
+
+  return 0;
+}
+
+int
+check_fire_docked()
+{
+  if (configvals->firewhiledocked || !(me->p_flags & PFDOCK))
+    return 1;
+
+  warning("It is unsafe to use weapons while docked.");
+
+  return 0;
+}
+
+
+/*-------END OF FILE--------*/