void ConvertLegoBlockInfo2LandscapeInfo(LegoBlockInfo[,] legoBlockMap) { for (int y = 0; y < LegoData.LANDSCAPE_MAP_HEIGHT; y++) { for (int x = 0; x < LegoData.LANDSCAPE_MAP_WIDTH; x++) { landscapeLegoMap_[x, y] = new LandscapeLegoInfo(legoBlockMap[x, y].legoColor); landscapeLegoMap_[x, y].height = legoBlockMap[x, y].height; if (x == 0 || y == 0) { if (x == 0 && y == 0) { continue; } else if (x == 0) { landscapeLegoMap_[x, y].north = landscapeLegoMap_[x, y - 1].myType_Detail_OverView; } else if (y == 0) { landscapeLegoMap_[x, y].west = landscapeLegoMap_[x - 1, y].myType_Detail_OverView; } } else { landscapeLegoMap_[x, y].west = landscapeLegoMap_[x - 1, y].myType_Detail_OverView; landscapeLegoMap_[x - 1, y].east = landscapeLegoMap_[x, y].myType_Detail_OverView; landscapeLegoMap_[x, y].north = landscapeLegoMap_[x, y - 1].myType_Detail_OverView; landscapeLegoMap_[x, y - 1].south = landscapeLegoMap_[x, y].myType_Detail_OverView; } } } }
LandscapeType_Details SetRoadDetails(LandscapeLegoInfo landscapeLegoMap) { if ((landscapeLegoMap.north == LandscapeType_OverView.Water && landscapeLegoMap.south == LandscapeType_OverView.Water) || (landscapeLegoMap.east == LandscapeType_OverView.Water && landscapeLegoMap.west == LandscapeType_OverView.Water))//南北か東西がWaterで挟まれているときBridgeと判定 { return(LandscapeType_Details.Bridge); } int Count = 0; if (landscapeLegoMap.north == LandscapeType_OverView.Road) { Count++; } if (landscapeLegoMap.south == LandscapeType_OverView.Road) { Count++; } if (landscapeLegoMap.east == LandscapeType_OverView.Road) { Count++; } if (landscapeLegoMap.west == LandscapeType_OverView.Road) { Count++; } if (Count == 1)//東西南北のRoadの数で種類を判定 { return(LandscapeType_Details.Road_Straight); } else if (Count == 2) { if ((landscapeLegoMap.north == LandscapeType_OverView.Road && landscapeLegoMap.south == LandscapeType_OverView.Road) || (landscapeLegoMap.east == LandscapeType_OverView.Road && landscapeLegoMap.west == LandscapeType_OverView.Road)) { return(LandscapeType_Details.Road_Straight); } else { return(LandscapeType_Details.Road_Curve); } } else if (Count == 3) { return(LandscapeType_Details.Road_Intersection_T); } else if (Count == 4) { return(LandscapeType_Details.Road_Intersection_X); } return(LandscapeType_Details.Space);//一つだけあるRoadはSpaceにしておく }
LandscapeType_Details SetNatureDetails(LandscapeLegoInfo landscapeLegoMap) { if (landscapeLegoMap.north != LandscapeType_OverView.Nature && landscapeLegoMap.south != LandscapeType_OverView.Nature && landscapeLegoMap.east != LandscapeType_OverView.Nature && landscapeLegoMap.west != LandscapeType_OverView.Nature) { return(LandscapeType_Details.Park); } else { return(LandscapeType_Details.Forest); } }
LandscapeType_Details SetWaterDetails(LandscapeLegoInfo landscapeLegoMap) { if (landscapeLegoMap.height >= 2)//高さが2以上あるなら噴水(Fountain) { return(LandscapeType_Details.Fountain); } int Count = 0; if (landscapeLegoMap.north == LandscapeType_OverView.Water) { Count++; } if (landscapeLegoMap.south == LandscapeType_OverView.Water) { Count++; } if (landscapeLegoMap.east == LandscapeType_OverView.Water) { Count++; } if (landscapeLegoMap.west == LandscapeType_OverView.Water) { Count++; } if (Count == 1)//東西南北のWaterの数で種類を判定 { return(LandscapeType_Details.River_Straight); } else if (Count == 2) { if ((landscapeLegoMap.north == LandscapeType_OverView.Water && landscapeLegoMap.south == LandscapeType_OverView.Water) || (landscapeLegoMap.east == LandscapeType_OverView.Water && landscapeLegoMap.west == LandscapeType_OverView.Water)) { return(LandscapeType_Details.River_Straight); } else { return(LandscapeType_Details.River_Curve); } } else if (Count == 3) { return(LandscapeType_Details.River_Intersection_T); } return(LandscapeType_Details.Space);//一つだけあるRoadはSpaceにしておく }
LandscapeType_Details SetBuildingDetails(LandscapeLegoInfo landscapeLegoMap) { if (landscapeLegoMap.height >= 2 && landscapeLegoMap.height < 5) { return(LandscapeType_Details.Shop); } else if (landscapeLegoMap.height == 5) { return(LandscapeType_Details.Skyscraper); } else { return(LandscapeType_Details.House); } }
LandscapeType_Details SetBuildingDetails(LandscapeLegoInfo landscapeLegoMap) { if (landscapeLegoMap.height >= 2 && landscapeLegoMap.height < 5)//高さが2~4のBuildingをShopと設定しておく { return(LandscapeType_Details.Shop); } else if (landscapeLegoMap.height == 5)//高さが5のBuildingはSkyscraper(摩天楼、高層ビル)としておく、Tokyotowerでもよい?いっぱい並んでいるとこわいので別枠? { return(LandscapeType_Details.Skyscraper); } else { return(LandscapeType_Details.House);//高さが1のときはHouseと設定しておく } }
LandscapeType_Details SetRoadDetails(LandscapeLegoInfo landscapeLegoMap) { if ((landscapeLegoMap.north == LandscapeType_OverView.Water && landscapeLegoMap.south == LandscapeType_OverView.Water) || (landscapeLegoMap.east == LandscapeType_OverView.Water && landscapeLegoMap.west == LandscapeType_OverView.Water)) { return(LandscapeType_Details.Bridge); } else if (landscapeLegoMap.north == LandscapeType_OverView.Road) { if (landscapeLegoMap.south == LandscapeType_OverView.Road) { if (landscapeLegoMap.east == LandscapeType_OverView.Road && landscapeLegoMap.west == LandscapeType_OverView.Road) { return(LandscapeType_Details.Road_Intersection_X);//n & s & e & w == 1 } else if (landscapeLegoMap.east == LandscapeType_OverView.Road || landscapeLegoMap.west == LandscapeType_OverView.Road) { return(LandscapeType_Details.Road_Intersection_T); //n & s & e == 1 or n & s & w == 1 } return(LandscapeType_Details.Road_Straight); //n & s == 1 } else if (landscapeLegoMap.east == LandscapeType_OverView.Road && landscapeLegoMap.west == LandscapeType_OverView.Road) { return(LandscapeType_Details.Road_Intersection_T);//n & e & w == 1 } else if (landscapeLegoMap.east == LandscapeType_OverView.Road || landscapeLegoMap.west == LandscapeType_OverView.Road) { return(LandscapeType_Details.Road_Curve); //n & e == 1 or n & w == 1 } return(LandscapeType_Details.Road_Straight); //n == 1 } else if (landscapeLegoMap.south == LandscapeType_OverView.Road) { if (landscapeLegoMap.east == LandscapeType_OverView.Road && landscapeLegoMap.west == LandscapeType_OverView.Road) { return(LandscapeType_Details.Road_Intersection_T);//s & e & w == 1 } else if (landscapeLegoMap.east == LandscapeType_OverView.Road || landscapeLegoMap.west == LandscapeType_OverView.Road) { return(LandscapeType_Details.Road_Curve); //s & e == 1 or s & w == 1 } return(LandscapeType_Details.Road_Straight); //s == 1 } else { return(LandscapeType_Details.Road_Straight); } }
LandscapeType_Details SetWaterDetails(LandscapeLegoInfo landscapeLegoMap) { if (landscapeLegoMap.north == LandscapeType_OverView.Water && landscapeLegoMap.height == 1) { if (landscapeLegoMap.south == LandscapeType_OverView.Water) { if (landscapeLegoMap.east == LandscapeType_OverView.Water || landscapeLegoMap.west == LandscapeType_OverView.Water) { return(LandscapeType_Details.River_Intersection_T); //n & s & e == 1 or n & s & w == 1 or n & s & e & w == 1 } return(LandscapeType_Details.River_Straight); //n & s == 1 } else if (landscapeLegoMap.east == LandscapeType_OverView.Water && landscapeLegoMap.west == LandscapeType_OverView.Water) { return(LandscapeType_Details.River_Intersection_T);//n & e & w == 1 } else if (landscapeLegoMap.east == LandscapeType_OverView.Water || landscapeLegoMap.west == LandscapeType_OverView.Water) { return(LandscapeType_Details.River_Curve); //n & e == 1 or n & w == 1 } return(LandscapeType_Details.River_Straight); //n == 1 } else if (landscapeLegoMap.south == LandscapeType_OverView.Water) { if (landscapeLegoMap.east == LandscapeType_OverView.Water && landscapeLegoMap.west == LandscapeType_OverView.Water) { return(LandscapeType_Details.River_Intersection_T);//s & e & w == 1 } else if (landscapeLegoMap.east == LandscapeType_OverView.Water || landscapeLegoMap.west == LandscapeType_OverView.Water) { return(LandscapeType_Details.River_Curve); //s & e == 1 or s & w == 1 } return(LandscapeType_Details.River_Straight); //s == 1 } /*else if ((landscapeLegoMap.north == LandscapeType_OverView.Water || landscapeLegoMap.south == LandscapeType_OverView.Water || landscapeLegoMap.east == LandscapeType_OverView.Water || landscapeLegoMap.west == LandscapeType_OverView.Water) && landscapeLegoMap.height == 2) || return LandscapeType_Details.Sea;*/ else if (landscapeLegoMap.height >= 2) { return(LandscapeType_Details.Fountain); } else { return(LandscapeType_Details.River_Straight);//e == 1 or e & w == 1 or w == 1 or 0 } }
LandscapeType_Details SetNatureDetails(LandscapeLegoInfo landscapeLegoMap) { int Count = 0; if (landscapeLegoMap.north == LandscapeType_OverView.Nature) { Count++; } if (landscapeLegoMap.south == LandscapeType_OverView.Nature) { Count++; } if (landscapeLegoMap.east == LandscapeType_OverView.Nature) { Count++; } if (landscapeLegoMap.west == LandscapeType_OverView.Nature) { Count++; } if (Count == 0)//東西南北のNatureの数で種類を判定 { return(LandscapeType_Details.Park); } else if (Count == 1) { return(LandscapeType_Details.StreetTree); } else if (Count == 2) { return(LandscapeType_Details.StreetTree); } else if (Count == 3) { return(LandscapeType_Details.Forest); } else { return(LandscapeType_Details.Forest); } }
Direction SetRoadDirection(LandscapeLegoInfo landscapeLegoMap) { if (landscapeLegoMap.north == LandscapeType_OverView.Road) { return(Direction.North); } else if (landscapeLegoMap.south == LandscapeType_OverView.Road) { return(Direction.South); } else if (landscapeLegoMap.east == LandscapeType_OverView.Road) { return(Direction.East); } else if (landscapeLegoMap.west == LandscapeType_OverView.Road) { return(Direction.West); } else { return(Direction.North); } }
Direction SetBuildingDirection(LandscapeLegoInfo landscapeLegoMap) { if (landscapeLegoMap.north == LandscapeType_OverView.Road)//北南西東の順に見ていき、Roadがあった方向を向きに設定 { return(Direction.North); } else if (landscapeLegoMap.south == LandscapeType_OverView.Road) { return(Direction.South); } else if (landscapeLegoMap.east == LandscapeType_OverView.Road) { return(Direction.East); } else if (landscapeLegoMap.west == LandscapeType_OverView.Road) { return(Direction.West); } else { return(Direction.North); } }
Direction SetRoadDirection(LandscapeLegoInfo landscapeLegoMap) { // □←ここ //□□□ Road_Intersection_Tの一本出てる方を向きにする if (landscapeLegoMap.detail == LandscapeType_Details.Road_Intersection_T) { if (landscapeLegoMap.south != LandscapeType_OverView.Road) { return(Direction.North); } else if (landscapeLegoMap.north != LandscapeType_OverView.Road) { return(Direction.South); } else if (landscapeLegoMap.west != LandscapeType_OverView.Road) { return(Direction.East); } else if (landscapeLegoMap.east != LandscapeType_OverView.Road) { return(Direction.West); } } // □←ここ //□□ 北・西Road_Curveの北部分の向きにする if (landscapeLegoMap.detail == LandscapeType_Details.Road_Curve) { if (landscapeLegoMap.north == LandscapeType_OverView.Road && landscapeLegoMap.east == LandscapeType_OverView.Road) { return(Direction.North); } else if (landscapeLegoMap.south == LandscapeType_OverView.Road && landscapeLegoMap.west == LandscapeType_OverView.Road) { return(Direction.South); } else if (landscapeLegoMap.east == LandscapeType_OverView.Road && landscapeLegoMap.south == LandscapeType_OverView.Road) { return(Direction.East); } else if (landscapeLegoMap.west == LandscapeType_OverView.Road && landscapeLegoMap.north == LandscapeType_OverView.Road) { return(Direction.West); } } //Road_Straight、その他 if (landscapeLegoMap.north == LandscapeType_OverView.Road) { return(Direction.North); } else if (landscapeLegoMap.south == LandscapeType_OverView.Road) { return(Direction.South); } else if (landscapeLegoMap.east == LandscapeType_OverView.Road) { return(Direction.East); } else if (landscapeLegoMap.west == LandscapeType_OverView.Road) { return(Direction.West); } else { return(Direction.North); } }