/// <summary> /// 是否是正确的位置序列,包括1.是否合法,2.是否可连接,3.是否同一颜色<br> /// 这里为了保证方法的划分,没有使用全部的大循环做,可能会浪费一点性能。<br> /// 战斗内目前最长的链接为9,这个数量级理论上不会对性能造成太大消耗。 /// </summary> /// <param name="actionArray"> </param> /// <param name="battlingHeroArr"> /// @return </param> public static bool isRightActionArr(int[] actionArray, HeroPoint[] battlingHeroArr) { bool _rightAction = true; if (actionArray.Length < BattleConstants.HERO_LEAST_POINT) { return false; } _rightAction = isRightPointArr(actionArray); if (_rightAction) { _rightAction = isConnectAbleArray(actionArray); } if (_rightAction) { _rightAction = isSameColors(actionArray, battlingHeroArr); } return _rightAction; }
/// <summary> /// 点序列是否全部是同一颜色,并且非空 /// </summary> /// <param name="indexArray"> </param> /// <param name="battlePoint"> /// @return </param> public static bool isSameColors(int[] indexArray, HeroPoint[] battlePoint) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final int _length = indexArray.length; int _length = indexArray.Length; bool _sameColor = true; HeroColor _color = null; for (int _index = 0; _index < _length; _index++) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final int _realIndex = indexArray[_index]; int _realIndex = indexArray[_index]; HeroColor _curColor = battlePoint[_realIndex].Color; if (_curColor == null) // 如果取出的颜色是空,直接返回错误 { _sameColor = false; } else { if (_color == null) { _color = _curColor; } _sameColor = _curColor == _color; } if (!_sameColor) { break; } } return _sameColor; }