@startuml
title ブロック確保時の経路生成シーケンス
hide footbox

ブロック運搬ルール導出 -> 走行体 : 走行体座標取得
	activate 走行体
	ブロック運搬ルール導出 <-- 走行体
	deactivate 走行体

ブロック運搬ルール導出 -> フィールド : 運搬元ポリゴンブロック置き場取得(走行体座標)　
	activate フィールド
	loop 全ブロック
	フィールド -> ポリゴンブロック置き場 : 運搬が必要なブロック置き場を取得
		activate ポリゴンブロック置き場
		alt ブロックが載っている場合
		ポリゴンブロック置き場 -> ブロック : 色取得
			activate ブロック
			ポリゴンブロック置き場 <-- ブロック
			deactivate ブロック
		end
		フィールド <-- ポリゴンブロック置き場 
		deactivate ポリゴンブロック置き場
	end
ブロック運搬ルール導出  <-- フィールド 
deactivate フィールド

ブロック運搬ルール導出 -> フィールド : 始点ウェイポイント取得（走行体座標）
	activate フィールド
	フィールド -> ライン : 最短距離のライン取得(走行体座標)
		activate ライン
		フィールド <-- ライン : 
		deactivate ライン
	ブロック運搬ルール導出 <-- フィールド
	deactivate フィールド

ブロック運搬ルール導出 -> フィールド : 終点ウェイポイント取得（運搬元ポリゴンブロック置き場, 走行体座標）
	activate フィールド
	フィールド -> ライン : 運搬元ポリゴンブロック置き場に接するライン取得
		activate ライン
		フィールド <-- ライン : 
		deactivate ライン
	ブロック運搬ルール導出 <-- フィールド
	deactivate フィールド


ブロック運搬ルール導出 -> フィールド : 始点ウェイポイントから運搬先ブロック置き場への経路取得
	activate フィールド
	フィールド -> ダイクストラ法 : 最短経路算出(始点ウェイポイント, 終点ウェイポイント)
		activate ダイクストラ法	
		note right : ダイクストラ法に関わるシーケンスは割愛
		フィールド <-- ダイクストラ法
		deactivate ダイクストラ法
	ブロック運搬ルール導出 <-- フィールド 
	deactivate フィールド


...（省略）運搬元ポリゴンブロック置き場から運搬先ブロック置き場への経路を生成...

ブロック運搬ルール導出 -> ブロック運搬コマンド : <<ブロック運搬コマンド作成>>

ブロック運搬ルール導出 -> ブロック運搬ルール : ブロック運搬コマンド追加


@enduml