public void SetMyTeamSkillIcon(cmd_player_skill_state data) { int nUID = (int)data.uOperator; int nRevliveTime = (int)data.nCoolTime / 1000; if (!LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable.ContainsKey(nUID)) { return; } TeamRightInfo teamItem = LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable[nUID] as TeamRightInfo; m_wndView.SetMyTeamSkillIcon(nRevliveTime, teamItem.nSlotId, ref teamItem.bFirstLearnSkill); }
private void SetXpSkillFireEffect(cmd_creature_ShowPromptUI data) { int nUID = (int)data.uid; if (!LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable.ContainsKey(nUID)) { return; } TeamRightInfo TeammateViewItem = LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable[nUID] as TeamRightInfo; if (data.nType > 0) { m_wndView.SetXpSkillFireEffect(TeammateViewItem.nSlotId); } else { m_wndView.DestoryXpSkillFireEffect(TeammateViewItem.nSlotId); } }
public void InitMyTeamRightToShow(IntPtr ptrParam, int nPtrLen) { IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nPtrLen); cmd_count nCountdata = helper.get <cmd_count>(); int nMySlotID = 0; int nOtherSlotID = 0; int nMainPlayerCamp = EntityFactory.MainHeroView.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_CAMP); for (int i = 0; i < nCountdata.nCount; ++i) { cmd_entity_camp_palyer_uidinfo data = helper.get <cmd_entity_camp_palyer_uidinfo>(); if (data.nCamp == nMainPlayerCamp) { TeamRightInfo teamRightInfo = new TeamRightInfo(); teamRightInfo.nSlotId = nMySlotID; LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable[(int)data.uUID] = teamRightInfo; LogicDataCenter.teamRightWndDataManager.MyTeamEntityIdTable[nMySlotID] = (int)data.uUID; int nLevelID = LogicDataCenter.recordTableDataManager.getHeroLvAcordPDBID(data.uPDBID); m_wndView.SetMyTeamItemViewShow(nMySlotID, data.nHeroID, nLevelID); bool bIsAI = data.nIsAI > 0 ? true : false; m_wndView.SetMyTeamAICommandBtn(bIsAI, teamRightInfo.nSlotId); nMySlotID++; } else { TeamRightInfo teamRightInfo = new TeamRightInfo(); teamRightInfo.nSlotId = nOtherSlotID; LogicDataCenter.teamRightWndDataManager.OtherTeamUIDTable[(int)data.uUID] = teamRightInfo; int nLevelID = LogicDataCenter.recordTableDataManager.getHeroLvAcordPDBID(data.uPDBID); m_wndView.SetOtherTeamItemViewShow(nOtherSlotID, data.nHeroID, nLevelID); nOtherSlotID++; } } }
public void SetData() { int nMainPlayerCamp = LogicDataCenter.recordTableDataManager.GetMainPlayerCamp(); int nHalfPlayerNum = LogicDataCenter.recordTableDataManager.GetHalfPlayerCount(); Dictionary <ulong, WarRecordTableDataManager.WarPersonInfo> dicPersonInfo = LogicDataCenter.recordTableDataManager.recordInfoArry; if (dicPersonInfo == null || dicPersonInfo.Count <= 0) { return; } defaultTeammateItem.gameObject.SetActive(false); foreach (KeyValuePair <ulong, WarRecordTableDataManager.WarPersonInfo> kvp in dicPersonInfo) { DataCenter.WarRecordTableDataManager.WarPersonInfo personInfo = kvp.Value; int nEntityUID = personInfo.nID; if (nEntityUID <= 0) { // 若一开始没有uid的话,就先只是设置下英雄图片 等以后服务器完善再改 SetTeamSlotHeroIcon(personInfo, nMainPlayerCamp, nHalfPlayerNum); continue; } if (LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable.ContainsKey(nEntityUID)) { continue; } if (LogicDataCenter.teamRightWndDataManager.OtherTeamUIDTable.ContainsKey(nEntityUID)) { continue; } if (personInfo.nCamp == nMainPlayerCamp) { int nSlotId = LogicDataCenter.recordTableDataManager.getIndexAcordPDBID(personInfo.uPDBID); int nLevelID = LogicDataCenter.recordTableDataManager.getHeroLvAcordPDBID(personInfo.uPDBID); TeammateViewItem teammateItem = GameObject.Instantiate <TeammateViewItem>(defaultTeammateItem); teammateItem.gameObject.SetActive(true); teammateItem.helpMeImage.gameObject.SetActive(false); teammateItem.transform.SetParent(defaultTeammateItem.transform.parent, false); m_dicMyTeam.Add(nSlotId, teammateItem); Debug.LogWarningFormat("BattleWarTeammateWndView:SetData:{0},{1}", nSlotId, personInfo.uPDBID); TeamRightInfo teamRightInfo = new TeamRightInfo(); teamRightInfo.nSlotId = nSlotId; LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable[nEntityUID] = teamRightInfo; LogicDataCenter.teamRightWndDataManager.MyTeamEntityIdTable[nSlotId] = nEntityUID; SetMyTeamItemViewShow(nSlotId, personInfo.nHeroId, nLevelID); } } int nTeamPlayerNum = LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable.Count + LogicDataCenter.teamRightWndDataManager.OtherTeamUIDTable.Count; int nTotalPlayerNum = dicPersonInfo.Count; if (nTeamPlayerNum == nTotalPlayerNum && nTotalPlayerNum > 0) { // 所有的玩家信息初始化完成 LogicDataCenter.recordTableDataManager.m_bUpdateTeamInfo = false; } if (nTeamPlayerNum > nTotalPlayerNum) { Debug.LogError("nTeamPlayerNum >= nTotalPlayerNum please to check"); } }
//数值属性回调函数 public void ResponseEntityNumPropEvent(EntityNumPropEventArgs e) { if (m_wndView == null) { return; } EntityView ev = e.objev; int nUID = e.data.nEntityID; bool isMyCamp = (ev.CampFlag == SPELL.CampFlag.CampFlag_Friend || ev.CampFlag == SPELL.CampFlag.CampFlag_Self); if (!isMyCamp) { return; } TeamRightInfo TeammateViewItem = LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable[nUID] as TeamRightInfo; if (TeammateViewItem == null) { return; } int nSlotId = TeammateViewItem.nSlotId; switch (e.data.nPropID) { case (int)ENTITY_PROPERTY.PROPERTY_HP: case (int)ENTITY_PROPERTY.PROPERTY_MAX_HP: { int nMaxHP = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MAX_HP); int nHP = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_HP); if (isMyCamp) { m_wndView.SetMyTeamHPChange(nMaxHP, nHP, nSlotId); } } break; case (int)ENTITY_PROPERTY.PROPERTY_MP: case (int)ENTITY_PROPERTY.PROPERTY_MAX_MP: { int nMaxMP = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MAX_MP); int nMP = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MP); if (isMyCamp) { m_wndView.SetMyTeamMPChange(nMaxMP, nMP, nSlotId); } } break; case (int)ENTITY_PROPERTY.PROPERTY_LEVEL: { int nlevel = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_LEVEL); Debug.LogWarning("Lv update," + ev.createinfo.szName + ":" + ev.createinfo.nLevel + "," + nlevel); if (isMyCamp) { m_wndView.SetMyTeamLevelChange(nlevel, nSlotId); } } break; default: break; } }
private void OnAICommand() { int targetID = 0; if (raycast.targetID > 0) { EntityView evTarget = EntityFactory.getEntityViewByID(raycast.targetID); EntityView evMainHeroView = EntityFactory.MainHeroView; if (evTarget != null && evTarget.IsValid) { if (evTarget.CampFlag == CampFlag.CampFlag_Friend && evTarget.Type == ENTITY_TYPE.TYPE_PLAYER_ROLE) { // 1.发送服务器要(1)控制或(2)解除或 暂时没有该功能//(3)移交targetID的友方英雄单位 if (evTarget.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_AI_SCHEME_ID) > 0) { targetID = raycast.targetID; if (!LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable.ContainsKey(targetID)) { return; } TeamRightInfo teamRightInfo = LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable[targetID] as TeamRightInfo; int groundLightEffectID = 0; const int helpmeSignLightEffectID = 13; const int dangerSignLightEffectID = 12; if (LogicDataCenter.teamRightWndDataManager.BIsJoinFollow[teamRightInfo.nSlotId]) { cmd_war_ai_command_break_follow data = new cmd_war_ai_command_break_follow(); data.uidTarget = targetID; EntityEventHelper.Instance.SendCommand <cmd_war_ai_command_break_follow>(EntityFactory.MainHeroID, EntityLogicDef.ENTITY_CMD_AI_COMMAND_BREAK_FOLLOW, ref data); groundLightEffectID = dangerSignLightEffectID; } else { cmd_war_ai_command_follow data = new cmd_war_ai_command_follow(); data.uidTarget = targetID; EntityEventHelper.Instance.SendCommand <cmd_war_ai_command_follow>(EntityFactory.MainHeroID, EntityLogicDef.ENTITY_CMD_AI_COMMAND_FOLLOW, ref data); groundLightEffectID = helpmeSignLightEffectID; } LogicDataCenter.teamRightWndDataManager.BIsJoinFollow[teamRightInfo.nSlotId] = !LogicDataCenter.teamRightWndDataManager.BIsJoinFollow[teamRightInfo.nSlotId]; // 添加地面光效 Vector3 pos = new Vector3(); if (MouseRaycastToGround(ref pos)) { int LayerMaskOnPos = (1 << LayerMask.NameToLayer(Config.LayerDefault) | 1 << LayerMask.NameToLayer(Config.LayerBuilding)); Ray PointToGroundRay = new Ray(pos + new Vector3(0, 0.5f, 0), new Vector3(0, -1, 0)); RaycastHit projectInfo; Physics.Raycast(PointToGroundRay, out projectInfo, 100, LayerMaskOnPos); pos = projectInfo.point; LightEffectParam param = new LightEffectParam(); param.nSrcEntityID = evMainHeroView.ID; param.sourcePos = pos; param.targetPos = pos; LightingEffectManager lem = evMainHeroView.LightingEffectManager; if (lem != null && lem) { lem.AddLighting(groundLightEffectID, param); } } } } } } }
// 更新玩家的TeamRight界面显示 public void UpdateTeamRightViewToShow() { int nMainPlayerCamp = LogicDataCenter.recordTableDataManager.GetMainPlayerCamp(); int nHalfPlayerNum = LogicDataCenter.recordTableDataManager.GetHalfPlayerCount(); Dictionary <ulong, WarRecordTableDataManager.WarPersonInfo> dicPersonInfo = LogicDataCenter.recordTableDataManager.recordInfoArry; if (dicPersonInfo == null || dicPersonInfo.Count <= 0) { return; } foreach (KeyValuePair <ulong, WarRecordTableDataManager.WarPersonInfo> kvp in dicPersonInfo) { DataCenter.WarRecordTableDataManager.WarPersonInfo personInfo = kvp.Value; int nEntityUID = personInfo.nID; if (nEntityUID <= 0) { // 若一开始没有uid的话,就先只是设置下英雄图片 等以后服务器完善再改 SetTeamSlotHeroIcon(personInfo, nMainPlayerCamp, nHalfPlayerNum); continue; } if (LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable.ContainsKey(nEntityUID)) { continue; } if (LogicDataCenter.teamRightWndDataManager.OtherTeamUIDTable.ContainsKey(nEntityUID)) { continue; } if (personInfo.nCamp == nMainPlayerCamp) { TeamRightInfo teamRightInfo = new TeamRightInfo(); int nSlotId = LogicDataCenter.recordTableDataManager.getIndexAcordPDBID(personInfo.uPDBID); int nLevelID = LogicDataCenter.recordTableDataManager.getHeroLvAcordPDBID(personInfo.uPDBID); teamRightInfo.nSlotId = nSlotId; LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable[nEntityUID] = teamRightInfo; LogicDataCenter.teamRightWndDataManager.MyTeamEntityIdTable[nSlotId] = nEntityUID; m_wndView.SetMyTeamItemViewShow(nSlotId, personInfo.nHeroId, nLevelID); m_wndView.SetMyTeamAICommandBtn(personInfo.bIsAI, nSlotId); } else { TeamRightInfo teamRightInfo = new TeamRightInfo(); int nSlotId = nHalfPlayerNum * 2 - LogicDataCenter.recordTableDataManager.getIndexAcordPDBID(personInfo.uPDBID) - 1; teamRightInfo.nSlotId = nSlotId; LogicDataCenter.teamRightWndDataManager.OtherTeamUIDTable[nEntityUID] = teamRightInfo; int nLevelID = LogicDataCenter.recordTableDataManager.getHeroLvAcordPDBID(personInfo.uPDBID); m_wndView.SetOtherTeamItemViewShow(nSlotId, personInfo.nHeroId, nLevelID); } } int nTeamPlayerNum = LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable.Count + LogicDataCenter.teamRightWndDataManager.OtherTeamUIDTable.Count; int nTotalPlayerNum = dicPersonInfo.Count; if (nTeamPlayerNum == nTotalPlayerNum && nTotalPlayerNum > 0) { // 所有的玩家信息初始化完成 LogicDataCenter.recordTableDataManager.m_bUpdateTeamInfo = false; } if (nTeamPlayerNum > nTotalPlayerNum) { Debug.LogError("nTeamPlayerNum >= nTotalPlayerNum please to check"); } }
//数值属性回调函数 public void ResponseEntityNumPropEvent(EntityNumPropEventArgs e) { //int nMyCamp = EntityFactory.MainHeroView.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_CAMP); if (m_wndView == null) { return; } EntityView ev = e.objev; int nUID = e.data.nEntityID; bool isMyCamp = (ev.CampFlag == SPELL.CampFlag.CampFlag_Friend || ev.CampFlag == SPELL.CampFlag.CampFlag_Self); TeamRightInfo teamRightInfo = null; if (isMyCamp) { teamRightInfo = LogicDataCenter.teamRightWndDataManager.MyTeamUIDTable[nUID] as TeamRightInfo; } else { teamRightInfo = LogicDataCenter.teamRightWndDataManager.OtherTeamUIDTable[nUID] as TeamRightInfo; } if (teamRightInfo == null) { return; } int nSlotId = teamRightInfo.nSlotId; switch (e.data.nPropID) { case (int)ENTITY_PROPERTY.PROPERTY_HP: case (int)ENTITY_PROPERTY.PROPERTY_MAX_HP: { int nMaxHP = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MAX_HP); int nHP = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_HP); if (isMyCamp) { m_wndView.SetMyTeamHPChange(nMaxHP, nHP, nSlotId); } } break; case (int)ENTITY_PROPERTY.PROPERTY_MP: case (int)ENTITY_PROPERTY.PROPERTY_MAX_MP: { int nMaxMP = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MAX_MP); int nMP = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MP); if (isMyCamp) { m_wndView.SetMyTeamMPChange(nMaxMP, nMP, nSlotId); } } break; case (int)ENTITY_PROPERTY.PROPERTY_LEVEL: { Debug.LogWarning("Lv update," + ev.createinfo.szName + ":" + ev.createinfo.nLevel); int nlevel = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_LEVEL); if (isMyCamp) { m_wndView.SetMyTeamLevelChange(nlevel, nSlotId); } else { m_wndView.SetOtherTeamLevelChagne(nlevel, nSlotId); } } break; case (int)ENTITY_PROPERTY.PROPERTY_AI_SCHEME_ID: { bool bIsAI = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_AI_SCHEME_ID) > 0 ? true : false; if (isMyCamp) { m_wndView.SetMyTeamAICommandBtn(bIsAI, nSlotId); } } break; default: break; } }