2 Star 0 Fork 0

SadLava/Arrow3

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
output.cpp 4.11 KB
一键复制 编辑 原始数据 按行查看 历史
SadLava 提交于 2022-05-08 17:08 . first update
/* 显示提示信息 */
enum DBT_STYLE {
DBT_STRESS=1,//强调模式,黑背景,淡入淡出字体显示
DBT_OBO=2,//One by one,一个接着一个输出,无淡入淡出,与DBT_STRESS不兼容,不能用
DBT_BKIMG=4,//有背景,淡入淡出,与DBT_STRESS不兼容,不成熟(不能用)
DBT_WAIT=8//会停下等待玩家继续,兼容其他样式
};
//参数为:
//消息列表、单句话展示时间、样式,DBT_BKING蒙版透明度
inline void drawBeginningTexts( vector<string> texts,int wtime=1000,int style=DBT_STRESS)
{
//兼容检测
if(style&DBT_STRESS&&(style&DBT_OBO || style&DBT_BKIMG)) return;
//处理
setbkcolor( BLACK );
PIMAGE img = newimage( getwidth(), getheight() );
ege_enable_aa( 1, img );
ege_gentexture( 1, img );
if(style&DBT_STRESS) {
setcolor( WHITE, img );
}
if(style&DBT_BKIMG) {
setcolor(WHITE);
getimage(img,0,0,getwidth(),getheight());
}
for ( string t : texts ) {
if(style&DBT_STRESS) {
settarget( img );
setfont( getwidth( img ) / strlen( t.c_str() ), 0, "微软雅黑", img );
xyprintf( getwidth( img ) / 2 - textwidth( t.c_str() ) / 2, getheight( img ) / 2 - textheight( t.c_str() ) / 2, t.c_str() );
settarget( NULL );
for ( int i = 0; i < 255; i += 10 ) {
ege_setalpha( i, img );
ege_puttexture( img, 0, 0, getwidth(), getheight() );
delay_fps( 60 );
cleardevice();
if ( ::GetAsyncKeyState( 'Z' ) ) {
return;
}
}
if(style&DBT_WAIT) {
while(!::GetAsyncKeyState( 'Z' ));
api_sleep(100);
} else {
api_sleep( wtime );
}
for ( int i = 255; i > 0; i -= 10 ) {
ege_setalpha( i, img );
ege_puttexture( img, 0, 0, getwidth(), getheight() );
delay_fps( 60 );
cleardevice();
if ( ::GetAsyncKeyState( 'Z' ) ) {
return;
}
}
cleardevice( img );
}
if(style&DBT_BKIMG) {
setfont( getwidth() / strlen(t.c_str()), 0, "微软雅黑");
for ( int i = 255; i > 0; i -= 10 ) {
ege_setalpha( 255, img );
ege_puttexture( img, 0, 0, getwidth(), getheight() );
xyprintf( getwidth() / 2 - textwidth( t.c_str() ) / 2, getheight() / 2 - textheight( t.c_str() ) / 2, t.c_str() );
ege_setalpha( i, img );
ege_puttexture( img, 0, 0, getwidth(), getheight() );
delay_fps( 60 );
cleardevice();
if ( ::GetAsyncKeyState( 'Z' ) ) {
return;
}
}
if(style&DBT_WAIT) {
while(!::GetAsyncKeyState( 'Z' ));
api_sleep(100);
} else {
api_sleep( wtime );
}
for ( int i = 0; i < 255; i += 10 ) {
ege_setalpha( 255, img );
ege_puttexture( img, 0, 0, getwidth(), getheight() );
xyprintf( getwidth() / 2 - textwidth( t.c_str() ) / 2, getheight() / 2 - textheight( t.c_str() ) / 2, t.c_str() );
ege_setalpha( i, img );
ege_puttexture( img, 0, 0, getwidth(), getheight() );
delay_fps( 60 );
cleardevice();
if ( ::GetAsyncKeyState( 'Z' ) ) {
return;
}
}
}
}
}
//消息系统
class InfoLS
{
public:
string text;
int life;
color_t color;
InfoLS() {
text="";
life=120;
color=hsl2rgb( random( 360 ), 1, 0.5 );
}
};
vector<InfoLS> infoList;//消息列表
inline InfoLS buildIFLS(string text)
{
InfoLS ils;
ils.text=text;
return ils;
}//迅速生成基本的InfoLS
inline void addInfo(string text)
{
infoList.push_back(buildIFLS(text));
return;
}//迅速插入新消息
inline void showTarget()
{
char tc[100];
string info;
addInfo("本关目标");
if(s_target.len!=0) {
itoa(s_target.len,tc,10);
info="飞行";
info+=tc;
info+="km";
addInfo(info);
}
if(s_target.falls!=0) {
itoa(s_target.falls,tc,10);
info="击落敌机";
info+=tc;
info+="架";
addInfo(info);
}
}
inline void runInfoList()
{
vector<InfoLS> sil;
for( InfoLS& ils : infoList) {
ils.life--;
if(ils.life>0) {
sil.push_back(ils);
}
}
infoList=sil;
sil.clear();
return;
}
inline void drawInfoList(int fontsize=getwidth()/24)
{
setfont(fontsize,0,"微软雅黑");
if(infoList.size()+1>getheight()/fontsize/4*3) infoList.erase(infoList.begin());
int id=0;
for(InfoLS ils:infoList) {
setcolor(ils.color);
outtextxy(getwidth()/4*3,getheight()/4+id*fontsize,ils.text.c_str());
id++;
}
return;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/sadlava/arrow3.git
git@gitee.com:sadlava/arrow3.git
sadlava
arrow3
Arrow3
master

搜索帮助