饭中淹的避难所~~~~~

偶尔来避难的地方~

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  94 随笔 :: 0 文章 :: 257 评论 :: 0 Trackbacks


enum EUISCRIPTDATATYPE
{
 EUSDT_INT,
 EUSDT_UINT,
 EUSDT_FLOAT,
 EUSDT_DOUBLE,
 EUSDT_STRING,
 EUSDT_POINTER,
 EUSDT_SCRIPTMETHOD,
 EUSDT_SCRIPTINSTANCE,
};

class IUIScriptInstance;
class IUIScriptMethod;

class IUIScriptValue
{
public:
 virtual ~IUIScriptValue() {}
 virtual void Release() = 0;
 virtual EUISCRIPTDATATYPE GetType() const = 0;

 virtual IUIScriptValue * Clone() = 0;
 virtual long ToInt() const = 0;
 virtual unsigned long ToUInt() const = 0;
 virtual const wchar_t * ToString() const = 0;
 virtual float ToFloat() const = 0;
 virtual double ToDouble() const = 0;
 virtual void * ToPointer() const = 0;
 virtual IUIScriptInstance * ToScriptInstance() const = 0;
 virtual IUIScriptMethod * ToScriptMethod() const = 0;

 virtual void SetValue( IUIScriptValue * pValue ) = 0;
 virtual void SetPointer( void * pVal ) = 0;
 virtual void SetInt( long lVal ) = 0;
 virtual void SetUInt( unsigned long ulVal ) = 0;
 virtual void SetString( const wchar_t * pszVal ) = 0;
 virtual void SetFloat( float fVal ) = 0;
 virtual void SetDouble( double dVal ) = 0;
 virtual void SetScriptInstance( IUIScriptInstance * pInstance ) = 0;
 virtual void SetScriptMethod( IUIScriptMethod * pMethod ) = 0;
};


class IUIScriptMethod
{
public:
 virtual ~IUIScriptMethod() {}
 virtual void Release() = 0;
 virtual IUIScriptInstance * GetOwner() const = 0;
 virtual IUIScriptValue * CallWithParams( IUIScriptValue ** pParams, int iParamCount ) = 0;
 virtual IUIScriptValue * Call() = 0;
};

class IUIScriptInstance
{
public:
 virtual ~IUIScriptInstance() {}
 virtual void Release() = 0;
 virtual IUIScriptMethod * GetMethod( const wchar_t * pszMethodName ) = 0;
 virtual IUIScriptValue * GetVariableValue( const wchar_t * pszVariableName ) = 0;
 virtual void SetVariableValue( const wchar_t * pszVariableName, IUIScriptValue * pValue ) = 0;
};

class IUIScriptContext : public IUIContext
{
public:
 virtual ~IUIScriptContext() {}
 virtual IUIScriptInstance * GetScriptInstance( const wchar_t * pszPath ) = 0;
 virtual IUIScriptValue * ValueFromValue( IUIScriptValue * pValue ) = 0;
 virtual IUIScriptValue * ValueFromPointer( void * pVal ) = 0;
 virtual IUIScriptValue * ValueFromInt( long lVal ) = 0;
 virtual IUIScriptValue * ValueFromUInt( unsigned long ulVal ) = 0;
 virtual IUIScriptValue * ValueFromString( const wchar_t * pszVal ) = 0;
 virtual IUIScriptValue * ValueFromFloat( float fVal ) = 0;
 virtual IUIScriptValue * ValueFromDouble( double dVal ) = 0;
 virtual IUIScriptValue * ValueFromScriptInstance( IUIScriptInstance * pInstance ) = 0;
 virtual IUIScriptValue * ValueFromScriptMethod( IUIScriptMethod * pMethod ) = 0;
};

posted on 2010-04-28 16:29 饭中淹 阅读(2083) 评论(8)  编辑 收藏 引用 所属分类: 游戏客户端

评论

# re: 用于UI系统中的脚本接口 2010-04-28 18:08 ccsdu2009
UI使用xml配置比较好吧  回复  更多评论
  

# re: 用于UI系统中的脚本接口 2010-04-28 19:37 饭中淹
@ccsdu2009
是的。
但是这个是脚本系统接口,用来处理UI事件的。实现UI和主程序之间的粘合。
  回复  更多评论
  

# re: 用于UI系统中的脚本接口[未登录] 2010-04-28 23:57 chentan
这么多指针, 管理得过来?  回复  更多评论
  

# re: 用于UI系统中的脚本接口 2010-04-29 01:47 陈梓瀚(vczh)
怎么我只看到了Create函数,没有看到Destroy函数?  回复  更多评论
  

# re: 用于UI系统中的脚本接口 2010-04-29 08:29 ccsdu2009
@陈梓瀚(vczh)
析构的时候应该统一处理吧  回复  更多评论
  

# re: 用于UI系统中的脚本接口 2010-04-29 10:32 http://www.cppblog.com/cexer
既是脚本,为何不见 IDispatch ?  回复  更多评论
  

# re: 用于UI系统中的脚本接口 2010-04-29 12:14 陈梓瀚(vczh)
@http://www.cppblog.com/cexer
脚本才没IDispatch这种自虐的东西呢  回复  更多评论
  

# re: 用于UI系统中的脚本接口 2012-03-02 15:47 ruf
看不懂神马意思?

怎么对lua之类的脚本系统提供接口。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理