跳到主要内容

game_server.entity_sync

简介

基于engine和发布/订阅机制实现的实体数据同步功能

组件接口

FEntitySync.gs

基于发布/订阅机制实现的实体对象数据同步组件

函数原型函数作用
string new_sync_id(string name)申请一个同步频道
void stop_sync(string sync_id)停止同步频道(所有参与者退出)
bool join_sync(string sync_id, function func)加入同步频道
void quit_sync(string sync_id)退出已参加的同步频道
void quit_all_sync()从已参与的所有同步频道中退出
void sync_raise(string sync_id, string event, ...)发布数据同步事件!
bool sync_flush(string sync_id, mixed wait_time = -1)等待频道消息执行完

样例

object create_hero()
{
map hero_dbase = {};
return EntityFactory.create_entity(1, hero_dbase);
}

public void test()
{
int i;
object ob1 = create_hero();
object ob2 = create_hero();

string sync_id = ob1=>new_sync_id("NAME");

ob2=>join_sync(sync_id, (: on_event_sync_id1 :));
for (i = 1 upto 10)
ob1=>sync_raise(sync_id, "event_id", i);

ob1=>stop_sync(sync_id);
for (i = 11 upto 20)
ob1=>sync_raise(sync_id, "event_id", i);

string sync_id2 = ob1=>new_sync_id("NAME2");
ob2=>join_sync(sync_id2, (: on_event_sync_id2 :));
for (i = 1 upto 10)
ob1=>sync_raise(sync_id2, "event_id2", i);

ob2=>quit_sync(sync_id2);

for (i = 11 upto 20)
ob1=>sync_raise(sync_id2, "event_id2", i);
}

void on_event_sync_id1(string sync_id, string event, object raiser, ...)
{
printf("event1: %O", $<);
}

void on_event_sync_id2(string sync_id, string event, object raiser, ...)
{
printf("event2: %O", $<);
}