svn-id: r10335
This commit is contained in:
Torbjörn Andersson 2003-09-20 13:11:15 +00:00
parent b03c634390
commit c704c30575

View File

@ -17,10 +17,7 @@
* $Header$
*/
#include <stdio.h>
#include "stdafx.h"
//#include "src\driver96.h"
#include "console.h"
#include "debug.h"
#include "defs.h"
@ -34,20 +31,16 @@
_event_unit event_list[MAX_events];
void Init_event_system(void) { //Tony4Dec96
uint32 j;
for (j = 0; j < MAX_events; j++) {
for (int j = 0; j < MAX_events; j++) {
//denotes free slot
event_list[j].id = 0;
}
}
uint32 CountEvents(void) {
uint32 j;
uint32 count = 0;
for (j = 0; j < MAX_events; j++) {
for (int j = 0; j < MAX_events; j++) {
if (event_list[j].id)
count++;
}
@ -56,9 +49,11 @@ uint32 CountEvents(void) {
}
int32 FN_request_speech(int32 *params) { //Tony13Nov96
//change current script - must be followed by a TERMINATE script
// change current script - must be followed by a TERMINATE script
// directive
//param 0 id of target to catch the event and startup speech servicing
// params: 0 id of target to catch the event and startup speech
// servicing
uint32 j = 0;
@ -79,6 +74,7 @@ int32 FN_request_speech(int32 *params) { //Tony13Nov96
//id of person to stop
event_list[j].id = params[0];
//full script id to interact with - megas run their own 7th script
event_list[j].interact_id = (params[0] * 65536) + 6;
@ -111,6 +107,7 @@ void Set_player_action_event(uint32 id, uint32 interact_id) { //Tony4Dec96
//id of person to stop
event_list[j].id = id;
//full script id of action script number 2
event_list[j].interact_id = (interact_id * 65536) + 2;
}
@ -123,8 +120,7 @@ int32 FN_set_player_action_event(int32 *params) { //Tony10Feb97
// note - this routine used CUR_PLAYER_ID as the target
// params
// 0 id to interact with
// params: 0 id to interact with
uint32 j = 0;
@ -147,6 +143,7 @@ int32 FN_set_player_action_event(int32 *params) { //Tony10Feb97
// id of person to stop
event_list[j].id = CUR_PLAYER_ID;
// full script id of action script number 2
event_list[j].interact_id = (params[0] * 65536) + 2;
@ -157,9 +154,8 @@ int32 FN_send_event(int32 *params) { //Tony28Feb97
// we want to intercept the player character and have him interact
// with an object - from script
// params
// 0 id to recieve event
// 1 script to run
// params: 0 id to recieve event
// 1 script to run
uint32 j = 0;
@ -184,6 +180,7 @@ int32 FN_send_event(int32 *params) { //Tony28Feb97
// id of person to stop
event_list[j].id = params[0];
//full script id
event_list[j].interact_id = params[1];
@ -195,11 +192,9 @@ int32 FN_check_event_waiting(int32 *params) { //Tony4Dec96
// no params
uint32 j;
RESULT = 0;
for (j = 0; j < MAX_events; j++) {
for (int j = 0; j < MAX_events; j++) {
if (event_list[j].id == ID) {
RESULT = 1;
break;
@ -215,9 +210,7 @@ int32 FN_check_event_waiting(int32 *params) { //Tony4Dec96
int32 FN_check_for_event(int32 *params) { // James (04mar97)
// no params
uint32 j;
for (j = 0; j < MAX_events; j++) {
for (int j = 0; j < MAX_events; j++) {
if (event_list[j].id == ID) {
// start the event
// run 3rd script of target object on level 1
@ -242,17 +235,18 @@ int32 FN_pause_for_event(int32 *params) { // James (04mar97)
// 1 number of game-cycles to pause
Object_logic *ob_logic = (Object_logic *)params[0];
uint32 j;
// first, check for an event
for (j = 0; j < MAX_events; j++) {
for (int j = 0; j < MAX_events; j++) {
if (event_list[j].id == ID) {
// reset the 'looping' flag
ob_logic->looping = 0;
// start the event
// run 3rd script of target object on level 1
LLogic.Logic_one(event_list[j].interact_id);
// clear the event slot
event_list[j].id = 0;
return IR_TERMINATE;
@ -272,11 +266,13 @@ int32 FN_pause_for_event(int32 *params) { // James (04mar97)
if (ob_logic->pause) {
// decrement the pause count
ob_logic->pause--;
// drop out of script, but call this again next cycle
return IR_REPEAT;
} else {
// pause count is zerp
ob_logic->looping = 0;
// continue script
return IR_CONT;
}
@ -285,11 +281,10 @@ int32 FN_pause_for_event(int32 *params) { // James (04mar97)
uint32 Check_event_waiting(void) { //Tony4Dec96
// returns yes/no
uint32 j;
for (j = 0; j < MAX_events; j++)
for (int j = 0; j < MAX_events; j++) {
if (event_list[j].id == ID)
return 1;
}
return 0;
}
@ -298,14 +293,13 @@ int32 FN_clear_event(int32 *params) { //Tony11Mar97
// no params
// no return vaule
uint32 j;
for (j = 0; j < MAX_events; j++)
for (int j = 0; j < MAX_events; j++) {
if (event_list[j].id == ID) {
//clear the slot
event_list[j].id = 0;
return IR_CONT;
}
}
return IR_CONT;
}
@ -314,28 +308,27 @@ void Start_event(void) { //Tony4Dec96
// call this from stuff like fn_walk
// you must follow with a return IR_TERMINATE
uint32 j;
for (j = 0; j < MAX_events; j++)
for (int j = 0; j < MAX_events; j++) {
if (event_list[j].id == ID) {
// run 3rd script of target object on level 1
LLogic.Logic_one( event_list[j].interact_id);
//clear the slot
event_list[j].id = 0;
return;
}
}
// oh dear - stop the system
Con_fatal_error("Start_event can't find event for id %d", ID);
}
int32 FN_start_event(int32 *params) { //Tony4Dec96
uint32 j;
for (j = 0; j < MAX_events; j++)
for (int j = 0; j < MAX_events; j++)
if (event_list[j].id == ID) {
// run 3rd script of target object on level 1
LLogic.Logic_one(event_list[j].interact_id);
// clear the slot
event_list[j].id = 0;
return IR_TERMINATE;
@ -347,11 +340,10 @@ int32 FN_start_event(int32 *params) { //Tony4Dec96
}
void Kill_all_ids_events(uint32 id) { //Tony18Dec96
uint32 j;
for (j = 0; j < MAX_events; j++)
for (int j = 0; j < MAX_events; j++) {
if (event_list[j].id == id) {
// clear the slot
event_list[j].id = 0;
}
}
}