?? api.cpp
字號:
#define ALLEGRO_STATICLINK
#include <stdio.h>
#include <string.h>
#include <allegro.h>
#ifdef _WIN32
#include <winalleg.h>
#endif
#include "types.h"
#include "functions.h"
#include "entity.h"
void api_empty(void *owner)
{
return;
}
void api_scenario(void *owner)
{
THREAD *thread = (THREAD *) owner;
--thread->stackpointer;
int warpy = thread->stack[thread->stackpointer];
--thread->stackpointer;
int warpx = thread->stack[thread->stackpointer];
--thread->stackpointer;
SignalScenario((char *)(thread->ram + thread->stack[thread->stackpointer]),warpx,warpy);
}
void installmessage(void *owner)
{
THREAD *thread = (THREAD *) owner;
ENTITY *MASTER = (ENTITY *) thread->owner;
--thread->stackpointer;
MASTER->messageproc = thread->stack[thread->stackpointer];
}
void talk(void *owner)
{
int checker =0;
THREAD *thread = (THREAD *) owner;
ENTITY *MASTER = (ENTITY *) thread->owner;
for(checker=0;checker<MASTER->objectmax;++checker)
{
if(MASTER->baseobject[checker].operational!=0 && checker!=MASTER->enginehandle)
{
int r1x1 = MASTER->baseobject[checker].x - MASTER->baseobject[checker].sizex;
int r1x2 = MASTER->baseobject[checker].x + MASTER->baseobject[checker].sizex;
int r1y1 = MASTER->baseobject[checker].y - MASTER->baseobject[checker].sizey;
int r1y2 = MASTER->baseobject[checker].y + MASTER->baseobject[checker].sizey;
int r2x1,r2x2,r2y1,r2y2;
switch(MASTER->face)
{
case FACE_DOWN:
r2x1 = MASTER->x - MASTER->sizex;
r2x2 = MASTER->x + MASTER->sizex;
r2y1 = MASTER->y + MASTER->sizey;
r2y2 = MASTER->y + MASTER->sizey + MASTER->sizey;
break;
case FACE_UP:
r2x1 = MASTER->x - MASTER->sizex;
r2x2 = MASTER->x + MASTER->sizex;
r2y1 = MASTER->y - MASTER->sizey - MASTER->sizey;
r2y2 = MASTER->y - MASTER->sizey;
break;
case FACE_RIGHT:
r2x1 = MASTER->x + MASTER->sizex;
r2x2 = MASTER->x + MASTER->sizex + MASTER->sizex;
r2y1 = MASTER->y - MASTER->sizey;
r2y2 = MASTER->y + MASTER->sizey;
break;
case FACE_LEFT:
r2x1 = MASTER->x - MASTER->sizex - MASTER->sizex;
r2x2 = MASTER->x - MASTER->sizex;
r2y1 = MASTER->y - MASTER->sizey;
r2y2 = MASTER->y + MASTER->sizey;
break;
}
if(intersects(r1x1,r1x2,r1y1,r1y2,r2x1,r2x2,r2y1,r2y2))
{
SendObjectMessage(checker,MSG_TALK,MASTER->enginehandle);
return;
}
}
}
}
void say(void *owner)
{
THREAD *thread = (THREAD *)owner;
ENTITY *MASTER = (ENTITY *) thread->owner;
--thread->stackpointer;
CreateMessageBox((char *)(thread->ram + thread->stack[thread->stackpointer]),MASTER->enginehandle);
}
void playwav(void *owner)
{
THREAD *thread = (THREAD *)owner;
ENTITY *MASTER = (ENTITY *) thread->owner;
--thread->stackpointer;
char loader[512];
sprintf(loader,"objects/audio/%s",thread->ram + thread->stack[thread->stackpointer]);
MASTER->audio.play(loader);
}
void mutter(void *owner)
{
THREAD *thread = (THREAD *)owner;
ENTITY *MASTER = (ENTITY *) thread->owner;
--thread->stackpointer;
MASTER->mutterdelay = thread->stack[thread->stackpointer];
--thread->stackpointer;
MASTER->mutter = (char *)(thread->ram + thread->stack[thread->stackpointer]);
}
void killself(void *owner)
{
THREAD *thread = (THREAD *)owner;
ENTITY *MASTER = (ENTITY *) thread->owner;
MASTER->operational=0;
}
void getkey(void *owner)
{
THREAD *thread = (THREAD *)owner;
ENTITY *MASTER = (ENTITY *) thread->owner;
--thread->stackpointer;
thread->stack[thread->stackpointer]=key[thread->stack[thread->stackpointer]];
++thread->stackpointer;
}
void random(void *owner)
{
THREAD *thread = (THREAD *)owner;
ENTITY *MASTER = (ENTITY *) thread->owner;
--thread->stackpointer;
int high = thread->stack[thread->stackpointer];
--thread->stackpointer;
int low = thread->stack[thread->stackpointer];
thread->stack[thread->stackpointer]= low + (rand() % (high-low+1));
++thread->stackpointer;
}
void move(void *owner)
{
THREAD *thread = (THREAD *)owner;
ENTITY *MASTER = (ENTITY *) thread->owner;
thread->stackpointer-=2;
MASTER->Move(thread->stack[thread->stackpointer+1],thread->stack[thread->stackpointer]);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -