CGDoom/cgdoom/d_think.h

99 lines
2.3 KiB
C++

// 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.
//
// DESCRIPTION:
// MapObj data. Map Objects or mobjs are actors, entities,
// thinker, take-your-pick... anything that moves, acts, or
// suffers state changes of more or less violent nature.
//
//-----------------------------------------------------------------------------
#ifndef __D_THINK__
#define __D_THINK__
#ifdef __GNUG__
#pragma interface
#endif
//
// Experimental stuff.
// To compile this as "ANSI C with classes"
// we will need to handle the various
// action functions cleanly.
//
//typedef void (*actionf_v)( );
//typedef void (*actionf_p1)( void* );
/*typedef void (*actionf_p2)( void*, void* );
// think_t function; commented out from the thinker_t typedef...
typedef union
{
actionf_p1 acp1;
actionf_v acv;
actionf_p2 acp2;
} actionf_t;*/
//Whoever came up with this shit needs to be shot
//typedef void (*actionf_t)( void* );
//typedef void (*actionf_t)( void*, void* );
/* ___Explanation of the above___
*
*
* typedef void (*actionf_t) (arg1, arg2);
*
* Creates the actionf_t typedef as a synonym for the unwieldy
* "Pointer to a function returning void and taking two arguments, arg1 and arg2"
*
* In order to call the function, do:
* actionf_t (arg1,arg2);
*
*/
//Same for this shit
/*// Historically, "think_t" is yet another
// function pointer to a routine to handle
// an actor.
typedef actionf_t think_t;*/
// Doubly linked list of actors.
typedef struct thinker_s
{
struct thinker_s* prev;
struct thinker_s* next;
// actionf_t function;
int function;
void* target;
} thinker_t;
#endif
//-----------------------------------------------------------------------------
//
// $Log:$
//
//-----------------------------------------------------------------------------