⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 api.cpp

📁 一个RPG术语查询器
💻 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 + -