public void OnButtonTeleportClick() { Teleport teleport = Teleport.GetTeleport(out int index, out bool isOneSide); if (teleport != null && ActionPoint.CurrentValue > 0) { isSkillsEnabled[6] = false; Refresh(); RPCInt_Vector3 teleportPosition = new RPCInt_Vector3(); teleportPosition.valueInt = isOneSide ? teleport.mapIndexOtherSide : teleport.mapIndexOneSide; teleportPosition.valueVector3 = teleport.GetPosition(index, isOneSide); SkillLibrary.Instance.CastSkill(GameSystem.CurrentOperator.property.index, 102, GameSystem.Index, JsonUtility.ToJson(teleportPosition)); } }
private void CastSkillRPC(int operatorIndex, int skillIndex, int skillLevel, object parameter, PhotonMessageInfo info) { m_CurrentOperator = GameSystem.Instance.GetOperatorByIndex(operatorIndex); if (skillIndex == 2) { #region SKILL 2 移动 施放 阶段2 string json = (string)parameter; RPCListVector3 path = JsonUtility.FromJson <RPCListVector3>(json); Vector2Int coordinate = MapManager.Instance.PositionToCoordinate(m_CurrentOperator.property.currentMapIndex, path.value[0]); MapManager.Instance.SetWalkable(m_CurrentOperator.property.currentMapIndex, coordinate.x, coordinate.y); coordinate = MapManager.Instance.PositionToCoordinate(m_CurrentOperator.property.currentMapIndex, path.value[path.value.Count - 1]); MapManager.Instance.SetNotWalkable(m_CurrentOperator.property.currentMapIndex, coordinate.x, coordinate.y); StartCoroutine(Skill2(path.value)); #endregion } else if (skillIndex == 7) { #region SKILL 7 钝击 施放 ClearMarks(); int[] coordinate = (int[])parameter; Instantiate(prefabEffectSkill7, MapManager.Instance.CoordinateToPosition(m_CurrentOperator.property.currentMapIndex, coordinate[0], coordinate[1]), Quaternion.identity); Operator target = GameSystem.Instance.GetOperatorByCoordinate(m_CurrentOperator.property.currentMapIndex, coordinate[0], coordinate[1]); if (target != null) { target.property.currentHealth = Mathf.Clamp(target.property.currentHealth - skillLevel, 0, target.property.maxHealth); } ButtonsOperator.Instance.Refresh(); ButtonsSkill.Instance.isAnimationsPlaying[1] = false; ButtonsSkill.Instance.Refresh(); #endregion } else if (skillIndex == 100) { #region SKILL 100 技能等级提升 int value = (int)parameter; ++m_CurrentOperator.property.currentSkillLevel[value]; --m_CurrentOperator.property.skillPoint; ButtonsSkill.Instance.isSkillsEnabled[4] = true; ButtonsSkill.Instance.Cancel(); #endregion } else if (skillIndex == 101) { #region SKILL 101 据点争夺 int playerIndex = (int)parameter; StrongholdPoint.Instance.AddStrongholdPoint(playerIndex); if (GameSystem.Index == playerIndex) { ActionPoint.Instance.ChangeActionPoint(true, -1); } #endregion } else if (skillIndex == 102) { #region SKILL 102 传送 string json = (string)parameter; RPCInt_Vector3 teleportPosition = JsonUtility.FromJson <RPCInt_Vector3>(json); m_CurrentOperator.property.currentMapIndex = teleportPosition.valueInt; m_CurrentOperator.transform.position = teleportPosition.valueVector3; if (GameSystem.Index == skillLevel) { ActionPoint.Instance.ChangeActionPoint(true, -1); } #endregion } }