public void ProcessNpcCommInSync(object incomingData) { string scenetype = EB.Dot.String("scenetype", incomingData, ""); IDictionary npcs = EB.Dot.Object(scenetype + ".npc_list", incomingData, null); SceneLogic scenelogic = MainLandLogic.GetInstance(); if (scenelogic == null) { return; } if (npcs == null) { return; } foreach (DictionaryEntry entry in npcs) { if (entry.Value == null)//Player leave { continue; } string locator = entry.Key.ToString(); if (m_ManagedNpcs.ContainsKey(locator)) { continue; } IDictionary datatmp = entry.Value as IDictionary; NpcCommIn(locator, datatmp, scenelogic.CurrentSceneName, scenetype); } }
private object OnAttackBoss(params object[] objs) { SceneEntity targetSceneEntity = SceneLogic.GetInstance().MainHero.property.target; bool isBoss = targetSceneEntity != null && targetSceneEntity.heroSetting != null && targetSceneEntity.heroSetting.HeroType == KHeroObjectType.hotMonster && targetSceneEntity.heroSetting.MonsterGrade == KMonsterGrade.mgQuestBoss; if (isBoss) { Enemy.SetActive(true); } else { Enemy.SetActive(false); return(null); } float cellBoold = (float)targetSceneEntity.MaxHp / 7; float toRate = ((float)targetSceneEntity.Hp / cellBoold) + 1f; if (curEnemySceneEntity != targetSceneEntity) { enemyBlood.ClearRate(toRate, base.EnemyBloodCountLabel); } curEnemySceneEntity = targetSceneEntity; enemyBlood.Set(toRate, base.EnemyBloodCountLabel); base.EnemyBloodValueLabel.text = targetSceneEntity.Hp.ToString() + "/" + targetSceneEntity.MaxHp.ToString(); base.EnemyNameLabel.text = targetSceneEntity.heroSetting.Name; base.EnemyLevelLabel.text = targetSceneEntity.heroSetting.Level.ToString(); return(null); }
public void BeginShowNpc() { m_IsCanShow = true; m_CurrentSceneID = GetSceneId(); ClearNotCurrentSceneNpc(); m_CurrentSceneLogic = MainLandLogic.GetInstance(); }
public void NpcLeave(string locator, SceneLogic currentlogic) { m_ManagedNpcs.Remove(locator); if (currentlogic != null) { currentlogic.DeleteNpc(locator); } m_GroupCellManager.ObjectLeave(locator); //如果是世界boss,删除之后需要立马生成下一个 if (locator.Equals("EnemySpawns_11")) { long id = 0; string scenetype = SceneLogicManager.getSceneType(); DataLookupsCache.Instance.SearchDataByID(scenetype + ".id", out id); string curLayout = "Layout50102"; DataLookupsCache.Instance.SearchDataByID("mainlands.lastWeekBossLayoutId", out curLayout); Hashtable data = Johny.HashtablePool.Claim(); data["role"] = "w_boss"; data["sid"] = id; data["bossLayoutId"] = curLayout; NpcCommIn("EnemySpawns_11", data, MainLandLogic.GetInstance().CurrentSceneName, "mainlands"); } }
public object OnSetMainHero(params object[] objs) { SetSceneLight(); sceneCamera.SetTarget(SceneLogic.GetInstance().MainHero); IsLock = false; return(null); }
bool SelectAim() { List <SceneEntity> entitys = SceneLogic.GetInstance().GetAllSceneObject(KHeroObjectType.hotMonster); float distance = MaxEnemyDistance; SceneEntity aim = Owner.property.target; if (aim != null && (aim.property.isDeaded || aim.property.activeAction.isDead || aim.property.heroObjType == KHeroObjectType.hotMonster)) { aim = null; } if (null == aim) { Vector3 selfPosition = Owner.Position; foreach (SceneEntity entity in entitys) { if (entity.property.isDeaded || (null != entity.property.activeAction && entity.property.activeAction.isDead)) { continue; } float dis = Vector3.Distance(entity.transform.position, selfPosition); if (dis < distance) { aim = entity; distance = dis; } } if (null != aim) { Owner.property.target = aim; EventDispatcher.GameWorld.DispatchEvent(ControllerCommand.CHANGE_TARGET); } } return(null != aim); }
public override void Update() { if (null != SceneLogic.GetInstance().MainHero&& Input.GetKeyDown(KeyCode.Space)) { SkillLogic.GetInstance().OnSkill((ushort)SceneLogic.GetInstance().MainHero.heroSetting.RushSkill); } }
private void SyncPlayerBaseInfo(KProtoBuf buf) { S2C_SYNC_PLAYER_BASE_INFO respond = buf as S2C_SYNC_PLAYER_BASE_INFO; MajorPlayer majorPlayer = PlayerManager.GetInstance().MajorPlayer; majorPlayer.PlayerID = respond.uPlayerID; majorPlayer.LastSaveTime = respond.nLastSaveTime; majorPlayer.LastLoginTime = respond.nLastLoginTime; majorPlayer.TotalGameTime = respond.nTotalGameTime; majorPlayer.CreateTime = respond.nCreateTime; majorPlayer.Gender = (KGender)respond.byGender; majorPlayer.CanRename = respond.byCanRename; majorPlayer.AccountName = respond.szAccountName; majorPlayer.PlayerName = respond.szPlayerName; majorPlayer.ServerTime = respond.nServerTime; majorPlayer.ClubID = respond.uClubID; majorPlayer.Job = (ushort)respond.byHeroJob; majorPlayer.GroupID = respond.nGroupID; SkillLogic.GetInstance().DefaultSkill(); SceneLogic.GetInstance().InitScene(); KGender gender = EnumUtils.GetEnumIns <KGender>(respond.byGender); majorPlayer.gender = gender; EventDispatcher.GameWorld.Dispath(ControllerCommand.CHANGE_HEAD, respond.byGender); PreLoad.GetInstance().OnLoadMajorPlayer(); }
//设置点击目标 private void SetClickSceneObject(SceneEntity so) { if (so != null && clickTarget != so) { CancelClickSceneObject(true); if (so is SceneEntity && SceneLogic.GetInstance().MainHero != so) { SceneLogic.GetInstance().MainHero.property.target = so as SceneEntity; EventDispatcher.GameWorld.DispatchEvent(ControllerCommand.CHANGE_TARGET); } clickTarget = so; if (clickTarget is SceneEntity) { SceneEntity _hero = clickTarget as SceneEntity; if (_hero.property.isDeaded) { return; } skillTarget = _hero; if (skillTarget.HeroType == KHeroObjectType.hotPlayer) { EventDispatcher.GameWorld.Dispath(ControllerCommand.SHOW_PLAYER_PANEL, skillTarget); } else if (skillTarget.HeroType == KHeroObjectType.hotMonster) { EventDispatcher.GameWorld.Dispath(ControllerCommand.SHOW_MONSTER_PANEL, skillTarget); } else if (skillTarget.HeroType == KHeroObjectType.hotNpc) { //EventDispatcher.GameWorld.Dispath(ControllerCommand.OPEN_NPC_PANEL, skillTarget.Id); } } } }
private void ChangeShowPlayer() { if (null != entity) { entity.gameObject.SetActive(false); } if (modelDict.TryGetValue(curJob, out entity)) { entity.gameObject.SetActive(true); } else { KHeroSetting heroSetting = KConfigFileManager.GetInstance().heroSetting.getData("" + curJob); entity = SceneLogic.GetInstance().CreateSceneObject((uint)curJob, KSceneObjectType.sotHero, heroSetting.HeroType, KDoodadType.dddInvalid, new Vector3(0, -0.7f, -1), 1); entity.heroSetting = heroSetting; entity.Init(); entity.AnimCmp.pause = true; entity.transform.rotation = new Quaternion(0, 180, 0, 0); entity.transform.localScale = new Vector3(0.78f, 0.78f, 0.78f); SceneLogic.GetInstance().RemoveSceneObjInfor(1); //SetLayer(entity.gameObject,LayerMask.NameToLayer("2D")); modelDict[curJob] = entity; } resetPose = false; entity.AnimCmp.CrossFadeAnimation(poseAction); }
public IEnumerator SwitchScene(Type sceneType) { if (!sceneType.IsSubclassOf(typeof(SceneLogic))) { yield break; } if (m_curScene != null) { yield return(m_curScene.BeforeExit()); yield return(m_curScene.OnExit()); } var scene = (SceneLogic)Activator.CreateInstance(sceneType); m_curState = SceneMgrState.Loading; yield return(scene.LoadScene()); yield return(scene.BeforeEnter()); yield return(scene.OnEnter()); m_curScene = scene; m_curState = SceneMgrState.Normal; }
public SceneMgr() { m_curState = SceneMgrState.Normal; var curSceneName = SceneManager.GetActiveScene().name; m_curScene = SceneLogic.InstantiateSceneLogicByName(curSceneName); }
protected override void PreInit() { base.PreInit(); minMapRender = FindUIObject <Renderer>("minmap"); mainHeroPointer = FindUIObject <Transform>("mainHero"); blissButtonEffect = GameObject.Find("effect_ui_NewSmallMapUI_yuanquan"); mainHeroSprite = mainHeroPointer.GetComponentInChildren <UISprite>(); enemyDC = GetDrawCall(enemy); npcDC = GetDrawCall(npc); teammateDC = GetDrawCall(teammate); enemyDC.gameObject.SetActive(false); npcDC.gameObject.SetActive(false); teammateDC.gameObject.SetActive(false); enemy.gameObject.SetActive(false); npc.gameObject.SetActive(false); teammate.gameObject.SetActive(false); loadMap(SceneLogic.GetInstance().mapId); base.delayBad.gameObject.SetActive(false); base.delayNormal.gameObject.SetActive(false); }
private object UpdateAttribute(params object[] objs) { MajorPlayer player = PlayerManager.GetInstance().MajorPlayer; PlayerHeroData hero = player.HeroData as PlayerHeroData; if (hero == null) { return(null); } nicknameTxt.text = player.PlayerName; careerTxt.text = GetJobName(player.uJob); spouseTxt.text = player.spouseName;; levelTxt.text = player.level.ToString(); factionTxt.text = player.factionName; hp1Txt.text = SceneLogic.GetInstance().MainHero.Hp + "/" + hero[KAttributeType.atMaxHP]; mp1Txt.text = SceneLogic.GetInstance().MainHero.Mp + "/" + hero[KAttributeType.atMaxMP]; attack1Txt.text = hero[KAttributeType.atAttack].ToString(); defend1Txt.text = hero[KAttributeType.atDefence].ToString(); crite1Txt.text = hero[KAttributeType.atCritHurt].ToString(); attackSpeed1Txt.text = hero[KAttributeType.atAttackSpeed].ToString(); hpSp.fillAmount = SceneLogic.GetInstance().MainHero.Hp / Math.Max(hero[KAttributeType.atMaxHP], 1); mpSp.fillAmount = SceneLogic.GetInstance().MainHero.Mp / Math.Max(hero[KAttributeType.atMaxMP], 1); if (detailView != null) { detailView.UpdateAttribute(); } return(null); }
/// <summary> /// 解决 多人场景进战斗 后出来 前后两次的sceneid一样导致旧的managedplayers没有清理干净 /// </summary> public void StopShowPlayerForGoToCombat() { m_IsCanShow = false; Clear(); NpcManager.Instance.StopShowNpcForGoToCombat(); m_CurrentSceneLogic = null; }
public void OnSyncQuestValue(int questID, int valueIndex, int newValue) { KMissionLoaclInfo localInfo = baseInfoList[questID.ToString()]; MissionInfo vo = GetMissionByID(questID); vo.condition = localInfo.Condition.Replace("V" + valueIndex, newValue.ToString()); vo.curConditionNums[valueIndex] = newValue; if (CheckMissionFinish(vo)) { vo.curStatus = MissionInfo.MisssionStatus.Finish; vo.tips = GetMissionLocalInfoByID(vo.id).QuestName + "<FFA200>(可提交)<->"; UpdateCurrentMissionList(vo); SceneLogic.GetInstance().MainHero.property.CmdAutoAttack = false; if (vo.nPlotID == 0 && vo.type == (int)MissionInfo.MissionType.MainMission) { EventDispatcher.GameWorld.Dispath(ControllerCommand.CONTINUE_MISSION); } if (vo.subType == (int)MissionInfo.MissionSubType.Monster || vo.subType == (int)MissionInfo.MissionSubType.Collect) { PlayEffect("effect_ui_renwu_wanchengmubiao"); } } else { vo.curStatus = MissionInfo.MisssionStatus.BeenAccepted; vo.tips = GetMissionLocalInfoByID(vo.id).QuestName + "<FF0000>(进行中)<->"; UpdateCurrentMissionList(vo); } }
public override void DoUpdate() { if (ticker.IsEnable()) { List <int> [] skillList = new List <int> [5]; skillList[1] = new List <int>(); skillList[1].Add(5); skillList[1].Add(6); skillList[1].Add(14); skillList[1].Add(13); skillList[2] = new List <int>(); skillList[2].Add(17); skillList[2].Add(20); skillList[2].Add(16); skillList[2].Add(18); skillList[3] = new List <int>(); skillList[3].Add(22); skillList[3].Add(25); skillList[3].Add(21); skillList[3].Add(23); skillList[4] = new List <int>(); if (null != SceneLogic.GetInstance().MainHero) { Vector3 pos = SceneLogic.GetInstance().MainHero.Position; skillIndex++; skillIndex %= 4; int skillId = skillList[Owner.property.Id][skillIndex]; Owner.Action.PlayFightAnimation(SceneLogic.GetInstance().MainHero, (uint)skillId, SceneLogic.GetInstance().MainHero.Position); } } }
public override void DoUpdate() { if (PathUtil.NPC_ID != -1) { if (NpcLogic.GetInstance().CheckNpcNearby(PathUtil.NPC_ID)) { if (PathUtil.bAutoAttack) { SceneLogic.GetInstance().MainHero.property.CmdAutoAttack = true; } else { EventDispatcher.GameWorld.Dispath(ControllerCommand.OPEN_NPC_PANEL_BYID, PathUtil.NPC_ID); } PathUtil.bAutoAttack = false; PathUtil.NPC_ID = -1; } } ViewManager.GetInstance().AutoCloseNpcPanel(); CollectObjComponent[] collectObjs = SceneLogic.GetInstance().GetAllCollectObj(); foreach (CollectObjComponent coc in collectObjs) { if (CollectObjLogic.GetInstance().CheckNeedCollectID(coc.Owner.collectInfo.nID) && coc.CheckNearBy(coc.Owner.collectInfo.nCanCollectDistance)) { EventDispatcher.GameWorld.Dispath(ControllerCommand.OPEN_COLLECT_PANEL, coc.Owner.collectInfo.nID, coc.Owner.property.Id); break; } } }
private void OnSyncEquips(KProtoBuf buf) { S2C_SYNC_EQUIPS respond = buf as S2C_SYNC_EQUIPS; SceneEntity hero = SceneLogic.GetInstance().GetSceneObject(respond.uHeroID); hero.DispatchEvent(ControllerCommand.EQUIP_CHANGE, respond.equips); }
public object OnUpdateMiniMap(params object[] objs) { if (null != SceneLogic.GetInstance().MainHero) { SetPosition(SceneLogic.GetInstance().MainHero.transform); } return(null); }
public void BeginShowPlayer() { m_IsCanShow = true; m_CurrentSceneID = GetSceneId(); ClearNotCurrentScenePlayer(); NpcManager.Instance.BeginShowNpc(); m_CurrentSceneLogic = MainLandLogic.GetInstance(); }
public void Initialize() { if (displacementType != DisplacementType.final) { //Busca la lógica de la escena SceneLogic logic = FindObjectOfType <SceneLogic>(); //Si según la lógica, aún quedan piezas por poner, ejecuta la lógica para ponerlas if (logic.roadLongitudeRemaining > 0) { //Le reduce una pieza al indicador del logic logic.roadLongitudeRemaining -= roadLength; /// ///A continuación se inicia un proceso mediante el cual se instancia una pieza aleatoria, calculandola a través de un valor complejo /// //Mediante este indice se generará una instancia posteriormente, cambiando este valor int indiceInstancia = 0; //Antes de crear un valor aleatorio para elegir la pieza, hay que establecer quan alto puede ser ese valor int maxRandomValue = 0; for (int i = 0; i < instanceChanceMultipler.Length; i++) { maxRandomValue += instanceChanceMultipler[i]; } //Se crea un valor aleatorio entre 0 y el porcentaje máximo designado a cada pieza int randomValue = Random.Range(0, maxRandomValue); //Este valor simplemente almacena el recorrido del array por los porcentajes int lastValueChecked = 0; //Comparamos si el valor aleatorio coincide con el porcentaje asignado a alguna pieza for (int i = 0; i < instanceChanceMultipler.Length; i++) { if ((randomValue < instanceChanceMultipler[i] + lastValueChecked) && (randomValue >= lastValueChecked)) { indiceInstancia = i; } lastValueChecked += instanceChanceMultipler[i]; } //Se procede a instanciar la pieza GameObject instance = Instantiate(roadInstanceType[indiceInstancia], instancePoint.position, instancePoint.rotation); nextPiece = instance; instance.GetComponent <CarreteraSpawnBehaviour>().Initialize(); } //Por el contrario, si no quedan piezas por poner en la carretera, esta se cierra else { GameObject instance = Instantiate(roadFinish, instancePoint.position, instancePoint.rotation); nextPiece = instance; } } }
//移动到场景对象 private void MoveToSceneObject(SceneEntity so) { CancelPosition(); if (Vector3.Distance(SceneLogic.GetInstance().MainHero.PositionFoot(), so.transform.position) > 0.5f) { SceneLogic.GetInstance().ClearAutoMoveAcrossMap(); SceneLogic.GetInstance().MainHero.DispatchEvent(ControllerCommand.MOVE_TO_DES, so.transform.position); } }
public override void ProcessNode() { UIStack.Instance.ExitStack(true); //传送到目标地址 Vector3 from_pos = new Vector3(25.0f, 0.0f, 45.0f); Vector3 to_pos = new Vector3(0.0f, 0.0f, 0.0f);//0,0,0 目标场景会自动设置为初始位置 SceneLogic.Transfer(scene, from_pos, 90.0f, transfer_scene, to_pos, 90.0f); }
public void MergeNpc(string scenetype, IDictionary scenedata) { if (scenedata == null) { EB.Debug.LogWarning("MergeNpc SceneData is null"); return; } IDictionary npcdata = EB.Dot.Object("npc_list", scenedata, null); if (npcdata == null) { EB.Debug.LogWarning("MergeNpc npc_list is null"); return; } if (m_ManagedNpcs == null) { return; } //m_ManagedNpcs have scenedata didnt must be clear SceneLogic scenelogic = MainLandLogic.GetInstance(); if (scenelogic == null) { return; } List <string> npc_to_remove = new List <string>(); foreach (KeyValuePair <string, NpcDelegate> kv in m_ManagedNpcs) { if (!npcdata.Contains(kv.Key)) { npc_to_remove.Add(kv.Key.ToString()); } } for (int i = 0; i < npc_to_remove.Count; i++) { NpcLeave(npc_to_remove[i], scenelogic); } //scenedata have m_ManagedNpcs didnt must be clear long sceneid = EB.Dot.Long("id", scenedata, 0); foreach (DictionaryEntry de in npcdata) { string locator = de.Key.ToString(); if (!m_ManagedNpcs.ContainsKey(locator)) { if (!(de.Value is IDictionary)) { continue; } IDictionary datatmp = de.Value as IDictionary; datatmp.Add("sid", sceneid); NpcCommIn(locator, datatmp, scenelogic.CurrentSceneName, scenetype); } } }
//取消鼠标点击目标 public void CancelClickSceneObject(bool isSkillTarget) { if (isSkillTarget == true) { CancelClickSkillObject(); } clickTarget = null; SceneLogic.GetInstance().MainHero.property.target = null; EventDispatcher.GameWorld.DispatchEvent(ControllerCommand.CHANGE_TARGET); }
private object OnChangeHpMP(params object[] objs) { if (null != HeroHP && null != HeroMP) { SceneEntity hero = SceneLogic.GetInstance().MainHero; HeroHP.SetRate(1f - (float)hero.Hp / (float)hero.MaxHp); HeroMP.SetRate(1f - (float)hero.Mp / (float)hero.MaxMp); } return(null); }
private void InitCoreManager() { RegisterLog(); DontDestroyOnLoad(this.gameObject); log.Debug("Start game application..."); GameWorld.GetInstance(); LoggerView.GetInstance(); CameraLayerManager.GetInstance(); AssetLoader.GetInstance(); ViewCameraManager.GetInstance().Init(); LayerManager.GetInstance().Init(); RemoteCallLogic.GetInstance(); NGUIManager.GetInstance(); LoginController.GetInstance(); SceneLogic.GetInstance(); PlayerController.GetInstance(); BagLogic.GetInstance(); NpcLogic.GetInstance(); TimeManager.GetInstance(); ViewManager.GetInstance(); gameObject.AddComponent("CronJob"); LoadResource(); //ActiveRush.InitFx(); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_skill_badao03_xuanfengzhan_g2")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_skill_badao01_lipihuashantexiao")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_skill_badao03_xuanfengzhan")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_skill_badao03_xuanfengzhan_mingzhong2")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_skill_badao04_yuanyuewandao_mingzhong")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_skill_badao04_yuanyuewandao_mingzhong_g")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_skill_badao04_yuanyuewandao_wuqifeixing")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_skill_badao04_yuanyuewandao")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_skill_badao02_nuzhanbahuang_gongji")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_skill_daobin_06_nuhou_shifa")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_skill_daobin_05_zhenfei")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_skill_daobin_04_chongfeng")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_skill_daobin_04_chongfeng_mingzhong")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_guaiwusiwang2")); AssetLoader.GetInstance().PreLoad(URLUtil.GetEffectPath("effect_levelup")); AssetLoader.GetInstance().Load(URLUtil.GetEffectPath("effect_guangquan_yellow"), PLAYER_SEL_LoadComplete, AssetType.BUNDLER); AssetLoader.GetInstance().Load(URLUtil.GetEffectPath("effect_guangquan2_red"), NPC_SEL_LoadComplete, AssetType.BUNDLER); PreLoad.GetInstance().OnEnterScene(); SelecterManager.GetInstance(); }
public bool CheckNearBy(int allowDis) { float dis = Vector3.Distance(Owner.Position, SceneLogic.GetInstance().MainHero.Position); if (dis <= allowDis) { return(true); } return(false); }
public static void Goto(int mapID, Vector3 desPos) { if ((uint)mapID == SceneLogic.GetInstance().mapId) { SceneLogic.GetInstance().MainHero.DispatchEvent(ControllerCommand.MOVE_TO_DES, desPos, true); } else { SceneLogic.GetInstance().MoveAcrossMap((uint)mapID, desPos); } }