1*79af1000Sguenther /* $OpenBSD: extern.c,v 1.9 2016/08/27 02:02:44 guenther Exp $ */ 2df930be7Sderaadt /* $NetBSD: extern.c,v 1.3 1995/04/22 10:08:49 cgd Exp $ */ 3df930be7Sderaadt 4df930be7Sderaadt /* 5df930be7Sderaadt * Copyright (c) 1980, 1993 6df930be7Sderaadt * The Regents of the University of California. All rights reserved. 7df930be7Sderaadt * 8df930be7Sderaadt * Redistribution and use in source and binary forms, with or without 9df930be7Sderaadt * modification, are permitted provided that the following conditions 10df930be7Sderaadt * are met: 11df930be7Sderaadt * 1. Redistributions of source code must retain the above copyright 12df930be7Sderaadt * notice, this list of conditions and the following disclaimer. 13df930be7Sderaadt * 2. Redistributions in binary form must reproduce the above copyright 14df930be7Sderaadt * notice, this list of conditions and the following disclaimer in the 15df930be7Sderaadt * documentation and/or other materials provided with the distribution. 167a09557bSmillert * 3. Neither the name of the University nor the names of its contributors 17df930be7Sderaadt * may be used to endorse or promote products derived from this software 18df930be7Sderaadt * without specific prior written permission. 19df930be7Sderaadt * 20df930be7Sderaadt * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21df930be7Sderaadt * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22df930be7Sderaadt * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23df930be7Sderaadt * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24df930be7Sderaadt * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25df930be7Sderaadt * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26df930be7Sderaadt * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27df930be7Sderaadt * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28df930be7Sderaadt * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29df930be7Sderaadt * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30df930be7Sderaadt * SUCH DAMAGE. 31df930be7Sderaadt */ 32df930be7Sderaadt 33*79af1000Sguenther #include <sys/time.h> 34df930be7Sderaadt #include "robots.h" 35df930be7Sderaadt 36df930be7Sderaadt bool Dead; /* Player is now dead */ 37df930be7Sderaadt bool Full_clear = TRUE; /* Lots of junk for init_field to clear */ 38df930be7Sderaadt bool Jump = FALSE; /* Jump while running, counting, or waiting */ 39df930be7Sderaadt bool Newscore; /* There was a new score added */ 40df930be7Sderaadt #ifdef FANCY 41df930be7Sderaadt bool Pattern_roll = FALSE; /* Auto play for YHBJNLUK pattern */ 42df930be7Sderaadt #endif 43df930be7Sderaadt bool Real_time = FALSE; /* Play in real time? */ 44df930be7Sderaadt bool Running = FALSE; /* Currently in the middle of a run */ 45df930be7Sderaadt #ifdef FANCY 46df930be7Sderaadt bool Stand_still = FALSE; /* Auto play for standing still pattern */ 47df930be7Sderaadt #endif 48df930be7Sderaadt bool Teleport = FALSE; /* Teleport automatically when player must */ 49df930be7Sderaadt bool Waiting; /* Player is waiting for end */ 50df930be7Sderaadt bool Was_bonus = FALSE; /* Was a bonus last level */ 51df930be7Sderaadt 52df930be7Sderaadt char Cnt_move; /* Command which has preceded the count */ 53d648d61bSpjanzen char Field[Y_FIELDSIZE][X_FIELDSIZE]; /* the playing field itself */ 54df930be7Sderaadt char *Next_move; /* Next move to be used in the pattern */ 55df930be7Sderaadt char *Move_list = "YHBJNLUK";/* List of moves in the pattern */ 56df930be7Sderaadt char Run_ch; /* Character for the direction we are running */ 57df930be7Sderaadt 58df930be7Sderaadt int Count = 0; /* Command count */ 59df930be7Sderaadt int Level; /* Current level */ 60df930be7Sderaadt int Num_robots; /* Number of robots left */ 61df930be7Sderaadt int Num_scores; /* Number of scores posted */ 62df930be7Sderaadt int Score; /* Current score */ 63df930be7Sderaadt int Start_level = 1; /* Level on which to start */ 64df930be7Sderaadt int Wait_bonus; /* bonus for waiting */ 65df930be7Sderaadt 66e5f400f5Srzalamena struct timespec tv; /* how long to wait; could be an option */ 674c144bbcSpjanzen 68df930be7Sderaadt COORD Max; /* Max area robots take up */ 69df930be7Sderaadt COORD Min; /* Min area robots take up */ 70df930be7Sderaadt COORD My_pos; /* Player's current position */ 71df930be7Sderaadt COORD Robots[MAXROBOTS]; /* Robots' current positions */ 72