예제 #1
0
 public void ReqSceneObjInfoChange()
 {
     // Debug.Log("GameVariable.IsNeedSynchSceneInfo : "+GameVariable.IsNeedSynchSceneInfo.ToString());
     if (GameVariable.IsNeedSynchSceneInfo)
     {
         SprotoType.scene_get_objs_info_change.request req = new SprotoType.scene_get_objs_info_change.request();
         NetMsgDispatcher.GetInstance().SendMessage <Protocol.scene_get_objs_info_change>(req, OnAckSceneObjInfoChange);
     }
     else
     {
         Timer.Register(0.5f, () => ReqSceneObjInfoChange());
     }
 }
예제 #2
0
        public void OnAckSceneObjInfoChange(SprotoTypeBase result)
        {
            // Debug.Log("synch from net received OnAckSceneObjInfoChange:"+(result!=null).ToString());
            SprotoType.scene_get_objs_info_change.request req = new SprotoType.scene_get_objs_info_change.request();
            NetMsgDispatcher.GetInstance().SendMessage <Protocol.scene_get_objs_info_change>(req, OnAckSceneObjInfoChange);
            SprotoType.scene_get_objs_info_change.response ack = result as SprotoType.scene_get_objs_info_change.response;
            if (ack == null)
            {
                return;
            }
            int len = ack.obj_infos.Count;

            for (int i = 0; i < len; i++)
            {
                long   uid              = ack.obj_infos[i].scene_obj_uid;
                Entity scene_obj        = SceneMgr.Instance.GetSceneObject(uid);
                var    change_info_list = ack.obj_infos[i].info_list;
                int    info_len         = change_info_list.Count;
                // Debug.Log("uid : "+uid.ToString()+ " info_len:"+info_len.ToString());
                for (int info_index = 0; info_index < info_len; info_index++)
                {
                    var cur_change_info = change_info_list[info_index];
                    // Debug.Log("cur_change_info.key : "+cur_change_info.key.ToString()+" scene_obj:"+(scene_obj!=Entity.Null).ToString()+ " ContainsKey:"+changeFuncDic.ContainsKey((SceneInfoKey)cur_change_info.key).ToString()+" uid"+uid.ToString()+" value:"+cur_change_info.value.ToString());
                    if (cur_change_info.key == (int)SceneInfoKey.EnterScene)
                    {
                        if (scene_obj == Entity.Null)
                        {
                            SceneObjectType sceneObjType = (SceneObjectType)Enum.Parse(typeof(SceneObjectType), cur_change_info.value);
                            scene_obj = SceneMgr.Instance.AddSceneObject(uid, sceneObjType);
                        }
                    }
                    else if (cur_change_info.key == (int)SceneInfoKey.LeaveScene)
                    {
                        if (scene_obj != Entity.Null)
                        {
                            SceneMgr.Instance.RemoveSceneObject(uid);
                            scene_obj = Entity.Null;
                        }
                    }
                    else if (scene_obj != Entity.Null && changeFuncDic.ContainsKey((SceneInfoKey)cur_change_info.key))
                    {
                        changeFuncDic[(SceneInfoKey)cur_change_info.key](scene_obj, cur_change_info);
                    }
                }
            }
        }