123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- // Emacs style mode select -*- C++ -*-
- //-----------------------------------------------------------------------------
- //
- // $Id:$
- //
- // Copyright (C) 1993-1996 by id Software, Inc.
- //
- // This source is available for distribution and/or modification
- // only under the terms of the DOOM Source Code License as
- // published by id Software. All rights reserved.
- //
- // The source is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
- // for more details.
- //
- // $Log:$
- //
- // DESCRIPTION:
- // Cheat sequence checking.
- //
- //-----------------------------------------------------------------------------
- static const char
- rcsid[] = "$Id: m_cheat.c,v 1.1 1997/02/03 21:24:34 b1 Exp $";
- #include "m_cheat.h"
- //
- // CHEAT SEQUENCE PACKAGE
- //
- static int firsttime = 1;
- static unsigned char cheat_xlate_table[256];
- //
- // Called in st_stuff module, which handles the input.
- // Returns a 1 if the cheat was successful, 0 if failed.
- //
- int
- cht_CheckCheat
- ( cheatseq_t* cht,
- char key )
- {
- int i;
- int rc = 0;
- if (firsttime)
- {
- firsttime = 0;
- for (i=0;i<256;i++) cheat_xlate_table[i] = SCRAMBLE(i);
- }
- if (!cht->p)
- cht->p = cht->sequence; // initialize if first time
- if (*cht->p == 0)
- *(cht->p++) = key;
- else if
- (cheat_xlate_table[(unsigned char)key] == *cht->p) cht->p++;
- else
- cht->p = cht->sequence;
- if (*cht->p == 1)
- cht->p++;
- else if (*cht->p == 0xff) // end of sequence character
- {
- cht->p = cht->sequence;
- rc = 1;
- }
- return rc;
- }
- void
- cht_GetParam
- ( cheatseq_t* cht,
- char* buffer )
- {
- unsigned char *p, c;
- p = cht->sequence;
- while (*(p++) != 1);
-
- do
- {
- c = *p;
- *(buffer++) = c;
- *(p++) = 0;
- }
- while (c && *p!=0xff );
- if (*p==0xff)
- *buffer = 0;
- }
|