前回までの状況はこちら。
最新ソースはこちら(gitHub)
https://github.com/takishita2nd/HokkaidoWar
さて、前回で隣接都市とのリンクを作成しましたが、
1つ問題がありまして、
それは離島とのリンクです。
今のままではマスの隣接関係でリンクを確認しているので、マスが離れている離島との隣接関係がありません。
具体的には、
- 奥尻ー江差
- 礼文ー稚内
- 礼文ー利尻
- 礼文ー利尻富士
- 利尻富士ー稚内
この隣接関係を作成しなければ行けません。
※ちなみに、天売島、焼尻島は羽幌に属しています。
今回はUp(),Down(),Left(),Right()処理に例外を入れることで対応します。
マップそのものが変わってしまうと、ここの処理も修正しなければ鳴りませんが、他に有効な手段が思いつかないので、仕方がありません。
class Map
{
public Map Up {
get {
var field = Singleton.GetFieldMap();
if(_x == 18 && _y == 0)
{
return field.GetMap(23, 0);
}
else if(_x == 23 && _y == 0)
{
return field.GetMap(18, 0);
}
else if (_x == 20 && _y == 1)
{
return field.GetMap(18, 0);
}
else
{
return field.GetMap(_x, _y - 1);
}
}
}
public Map Down
{
get
{
var field = Singleton.GetFieldMap();
if(_x == 18 && _y == 0)
{
return field.GetMap(19, 1);
}
else
{
return field.GetMap(_x, _y + 1);
}
}
}
public Map Left
{
get
{
var field = Singleton.GetFieldMap();
if (_x == 2 && _y == 29)
{
return field.GetMap(0, 29);
}
else if(_x == 19 && _y == 1)
{
return field.GetMap(18, 0);
}
else if (_x == 23 && _y == 0)
{
return field.GetMap(20, 1);
}
else
{
return field.GetMap(_x - 1, _y);
}
}
}
public Map Right
{
get
{
var field = Singleton.GetFieldMap();
if (_x == 0 && _y == 29)
{
return field.GetMap(2, 29);
}
else if(_x == 18 && _y == 0)
{
return field.GetMap(20, 1);
}
else if (_x == 20 && _y == 1)
{
return field.GetMap(23, 0);
}
else
{
return field.GetMap(_x + 1, _y);
}
}
}
こんな感じで離島とのリンク関係を強引に作りました。