/// <summary> /// 範囲の描画 /// </summary> /// <param name="bmt"></param> /// <param name="tileSet"></param> private static void DrawRangeTile(BattleMapTile bmt, HashSet <BattleMapTile> tileSet, Action <BattleMapTile, int> iconInstaller) { BattleMapTileJointInfo jointInfo = bmt.JointInfo; foreach (MapTileJointPositionType jointPositionType in Enum.GetValues(typeof(MapTileJointPositionType))) { BattleMapTile jointTile = jointInfo.GetJointTile(jointPositionType); bool isDraw = false; // はじっこは描写 if (jointTile == null) { isDraw = true; } else { // 移動可能タイルに存在しない場合は描写 if (tileSet.Contains(jointTile) == false) { isDraw = true; } } // 描写 if (isDraw == true) { iconInstaller(bmt, (int)jointPositionType * 60); } } }
/// <summary> /// 接続情報を作成 /// </summary> /// <param name="tiles"></param> /// <param name="patList"></param> /// <returns></returns> private BattleMapTileJointInfo CreateJointInfo(BattleMapTile[,] tiles, List <BattleMapTilePointAndType> patList) { BattleMapTileJointInfo jointInfo = new BattleMapTileJointInfo(); foreach (BattleMapTilePointAndType pat in patList) { switch (pat.Position) { case MapTileJointPositionType.TOP_RIGHT: jointInfo.TopRight = tiles[pat.X, pat.Y]; break; case MapTileJointPositionType.RIGHT: jointInfo.Right = tiles[pat.X, pat.Y]; break; case MapTileJointPositionType.BOTTOM_RIGHT: jointInfo.BottomRight = tiles[pat.X, pat.Y]; break; case MapTileJointPositionType.BOTTOM_LEFT: jointInfo.BottomLeft = tiles[pat.X, pat.Y]; break; case MapTileJointPositionType.LEFT: jointInfo.Left = tiles[pat.X, pat.Y]; break; case MapTileJointPositionType.TOP_LEFT: jointInfo.TopLeft = tiles[pat.X, pat.Y]; break; } } return(jointInfo); }