游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2728|回复: 0

《古月》 NextFlow示例升级,fosExitNotClear/fosReturn应用

[复制链接]

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2006-1-3 17:42:00 | 显示全部楼层 |阅读模式
#include<hgl/hgl.h>
#include<hgl/FlowObject.H>
#include<hgl/Font.H>
#include<hgl/opengl.h>

using namespace hgl;
Font *fnt;

class SecondObject:public FlowObject                                //第二个流程对象
{
    void OnClick(int,int,unsigned __int32)
    {
        fos=fosReturn;                                              //设定当前状态为返回上一次调用fosExitNotClear的类
    }
public:

    SecondObject()
    {
        OnMouseLeftDown=OnClick;
    }

    void Draw()
    {
        ClearScreen();

        fnt->DrawString(0, 0,L"Second Flow Object!");
        fnt->DrawString(0,32,L"Click Mouse return!");
    }
};

class FirstObject:public FlowObject                                 //第一个流程对象
{
    void MouseProc(int,int,unsigned __int32)
    {
        fos=fosExitNotClear;                    //设定当前流程需要退出
        NextObject=new SecondObject;            //设定下一个流程对象
                                                //之后对象控制器会自动清除当前对象,并将指定的对象做为新的当前对象
    }

public:

    FirstObject()
    {
        fnt=LoadFont(L"impact.ttf",32,32);

        OnMouseLeftDown=MouseProc;
    }

    ~FirstObject()
    {
        delete fnt;
    }

    void ObjectReturn(FlowObject *obj)
    {
        //这里的obj为之前new出来的NextObject,这个函数在NextObject被delete前调用,一般用来回传参数
        fos=fosOK;
        NextObject=NULL;
    }

    void Draw()
    {
        ClearScreen();

        fnt->DrawString(0, 0,L"First Flow Object!");
        fnt->DrawString(0,32,L"Click Mouse Left!");
    }
};

void GameMain(char *)
{
    SystemInitInfo sii;

    sii.info.ProjectName        =L"关闭当前流程,到下一流程对象";        //工程名称
    sii.info.ProjectCode        =L"NextFlow";         //工程代码(一般使用英文名称)

    sii.graphics.Width  =640;                       //游戏画面宽
    sii.graphics.Height =480;                       //游戏画面高

    sii.graphics.fs.Width       =640;               //全屏宽度/窗口宽度
    sii.graphics.fs.Height      =480;               //全屏高度/窗口高度

    if(Application->Init(&sii)==false)              //初始化工程
        return;

    Application->flow.SetStart(new FirstObject);     //设定起始流程

    Application->Run();                             //开始运行程序
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-12-4 16:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表