note
	description: "p_mobj.h"
	license: "[
				Copyright (C) 1993-1996 by id Software, Inc.
				Copyright (C) 2005-2014 Simon Howard
				Copyright (C) 2021 Ilgiz Mustafin
		
				This program is free software; you can redistribute it and/or modify
				it under the terms of the GNU General Public License as published by
				the Free Software Foundation; either version 2 of the License, or
				(at your option) any later version.
		
				This program is distributed in the hope that it will be useful,
				but WITHOUT ANY WARRANTY; without even the implied warranty of
				MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
				GNU General Public License for more details.
		
				You should have received a copy of the GNU General Public License along
				with this program; if not, write to the Free Software Foundation, Inc.,
				51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
	]"

class 
	MOBJ_T

inherit
	DEGENMOBJ_T

	WITH_THINKER

create 
	make

feature 

	make
		do
			make_thinker
		end
	
feature -- Movement direction, movement generation (zig-zagging)

	movedir: INTEGER_32 assign set_movedir
			-- 0-7

	set_movedir (a_movedir: like movedir)
		do
			movedir := a_movedir
		end

	movecount: INTEGER_32 assign set_movecount
			-- when 0, select a new dir

	set_movecount (a_movecount: like movecount)
		do
			movecount := a_movecount
		end
	
feature 

	target: detachable MOBJ_T assign set_target
			-- Thing being chased/attacked (or NULL),
			-- also the originator for missiles.

	set_target (a_target: like target)
		do
			target := a_target
		end

	angle: ANGLE_T assign set_angle
			-- orientation

	set_angle (a_angle: like angle)
		do
			angle := a_angle
		end

	spawnpoint: detachable MAPTHING_T assign set_spawnpoint
			-- For nightmare respawn

	set_spawnpoint (a_spawnpoint: like spawnpoint)
		do
			spawnpoint := a_spawnpoint
		ensure
				spawnpoint = a_spawnpoint
		end

	tics: INTEGER_32 assign set_tics
			-- state tic counter

	set_tics (a_tics: like tics)
		do
			tics := a_tics
		end

	flags: INTEGER_32 assign set_flags

	set_flags (a_flags: like flags)
		do
			flags := a_flags
		end

	player: detachable PLAYER_T assign set_player
			-- Additional info record for player avatars only.
			-- Only valid if type == MT_PLAYER

	set_player (a_player: like player)
		do
			player := a_player
		end

	health: INTEGER_32 assign set_health

	set_health (a_health: like health)
		do
			health := a_health
		end

	type: INTEGER_32 assign set_type

	set_type (a_type: like type)
		do
			type := a_type
		end

	info: detachable MOBJINFO_T assign set_info

	set_info (a_info: like info)
		do
			info := a_info
		end

	radius: FIXED_T assign set_radius

	set_radius (a_radius: like radius)
		do
			radius := a_radius
		end

	height: FIXED_T assign set_height

	set_height (a_height: like height)
		do
			height := a_height
		end

	reactiontime: INTEGER_32 assign set_reactiontime
			-- Reaction time: if non 0, don't attack yet
			-- Used by player to freeze a bit after teleporting

	set_reactiontime (a_reactiontime: like reactiontime)
		do
			reactiontime := a_reactiontime
		end

	lastlook: INTEGER_32 assign set_lastlook
			-- Player number last looked for

	set_lastlook (a_lastlook: like lastlook)
		do
			lastlook := a_lastlook
		end

	state: detachable STATE_T assign set_state

	set_state (a_state: like state)
		do
			state := a_state
		end

	sprite: INTEGER_32 assign set_sprite
			-- used to find patch_t and flip value

	set_sprite (a_sprite: like sprite)
		do
			sprite := a_sprite
		end

	frame: INTEGER_32 assign set_frame
			-- might be ORed with FF_FULLBRIGHT

	set_frame (a_frame: like frame)
		do
			frame := a_frame
		end

	floorz: FIXED_T assign set_floorz

	set_floorz (a_floorz: like floorz)
		do
			floorz := a_floorz
		end

	ceilingz: FIXED_T assign set_ceilingz

	set_ceilingz (a_ceilingz: like ceilingz)
		do
			ceilingz := a_ceilingz
		end

	subsector: detachable SUBSECTOR_T assign set_subsector

	set_subsector (a_subsector: like subsector)
		do
			subsector := a_subsector
		end
	
feature -- More list: links in sector (if needed)

	snext: detachable MOBJ_T assign set_snext

	set_snext (a_snext: like snext)
		do
			snext := a_snext
		end

	sprev: detachable MOBJ_T assign set_sprev

	set_sprev (a_sprev: like sprev)
		do
			sprev := a_sprev
		end
	
feature -- Interaction info, by BLOCKMAP
-- Link in blocks (if needed)

	bnext: detachable MOBJ_T assign set_bnext

	set_bnext (a_bnext: like bnext)
		do
			bnext := a_bnext
		end

	bprev: detachable MOBJ_T assign set_bprev

	set_bprev (a_bprev: like bprev)
		do
			bprev := a_bprev
		end
	
feature -- Momentums, used to update position

	momx: FIXED_T assign set_momx

	set_momx (a_momx: like momx)
		do
			momx := a_momx
		end

	momy: FIXED_T assign set_momy

	set_momy (a_momy: like momy)
		do
			momy := a_momy
		end

	momz: FIXED_T assign set_momz

	set_momz (a_momz: like momz)
		do
			momz := a_momz
		end
	
feature 

	threshold: INTEGER_32 assign set_threshold
			-- If >0, the target will be chased
			-- no matter what (even if shot)

	set_threshold (a_threshold: like threshold)
		do
			threshold := a_threshold
		end
	
end -- class MOBJ_T

Generated by ISE EiffelStudio