
1: /* $NetBSD: visual.c,v 1.6 2003/08/07 09:37:55 agc Exp $ */ 2: 3: /* 4: * Copyright (c) 1980, 1993 5: * The Regents of the University of California. All rights reserved. 6: * 7: * Redistribution and use in source and binary forms, with or without 8: * modification, are permitted provided that the following conditions 9: * are met: 10: * 1. Redistributions of source code must retain the above copyright 11: * notice, this list of conditions and the following disclaimer. 12: * 2. Redistributions in binary form must reproduce the above copyright 13: * notice, this list of conditions and the following disclaimer in the 14: * documentation and/or other materials provided with the distribution. 15: * 3. Neither the name of the University nor the names of its contributors 16: * may be used to endorse or promote products derived from this software 17: * without specific prior written permission. 18: * 19: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29: * SUCH DAMAGE. 30: */ 31: 32: #include <sys/cdefs.h> 33: #ifndef lint 34: #if 0 35: static char sccsid[] = "@(#)visual.c 8.1 (Berkeley) 5/31/93"; 36: #else 37: __RCSID("$NetBSD: visual.c,v 1.6 2003/08/07 09:37:55 agc Exp $"); 38: #endif 39: #endif /* not lint */ 40: 41: #include <stdio.h> 42: #include "trek.h" 43: #include "getpar.h" 44: 45: /* 46: ** VISUAL SCAN 47: ** 48: ** A visual scan is made in a particular direction of three sectors 49: ** in the general direction specified. This takes time, and 50: ** Klingons can attack you, so it should be done only when sensors 51: ** are out. 52: */ 53: 54: /* This struct[] has the delta x, delta y for particular directions */ 55: struct xy Visdelta[11] = 56: { 57: { -1, -1 }, 58: { -1, 0 }, 59: { -1, 1 }, 60: { 0, 1 }, 61: { 1, 1 }, 62: { 1, 0 }, 63: { 1, -1 }, 64: { 0, -1 }, 65: { -1, -1 }, 66: { -1, 0 }, 67: { -1, 1 } 68: }; 69: 70: /*ARGSUSED*/ 71: void 72: visual(z) 73: int z __attribute__((__unused__)); 74: { 75: int ix, iy; 76: int co; 77: struct xy *v; 78: 79: co = getintpar("direction"); 80: if (co < 0 || co > 360) 81: return; 82: co = (co + 22) / 45; 83: v = &Visdelta[co]; 84: ix = Ship.sectx + v->x; 85: iy = Ship.secty + v->y; 86: if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS) 87: co = '?'; 88: else 89: co = Sect[ix][iy]; 90: printf("%d,%d %c ", ix, iy, co); 91: v++; 92: ix = Ship.sectx + v->x; 93: iy = Ship.secty + v->y; 94: if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS) 95: co = '?'; 96: else 97: co = Sect[ix][iy]; 98: printf("%c ", co); 99: v++; 100: ix = Ship.sectx + v->x; 101: iy = Ship.secty + v->y; 102: if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS) 103: co = '?'; 104: else 105: co = Sect[ix][iy]; 106: printf("%c %d,%d\n", co, ix, iy); 107: Move.time = 0.05; 108: Move.free = 0; 109: }