note
	description: "[
		Class incapsulating each {SEA_AREA} in VITP and responsible for
		the creation of those attributes.  Decomposed into this class
		so that {VITP_GAME} would not be such a large file.
		
		These attributes are used as pseudo-constants.  I elected
		not to use once features becasue the order of calls to 
		once featues may not work for persistence.
		]"
	author: "Jimmy J. Johnson"
	date: "$Date$"
	revision: "$Revision$"

deferred class
	SEA_AREA_ATTRIBUTES

feature -- Access

	game: VITP_GAME
			-- The game in which this item belongs.
		deferred
		end

feature -- Access (sea areas)

	Aleutian_islands: ALEUTIAN_ISLANDS attribute create Result.make (game) end
	Bay_of_bengal: BAY_OF_BENGAL attribute create Result.make (game) end
	Central_pacific_ocean: CENTRAL_PACIFIC_OCEAN attribute create Result.make (game) end
	Coral_Sea: CORAL_SEA attribute create Result.make (game) end
	Hawaiian_islands: HAWAIIAN_ISLANDS attribute create Result.make (game) end
	Indian_ocean: INDIAN_OCEAN attribute create Result.make (game) end
	Indonesia: INDONESIA attribute create Result.make (game) end
	Japanese_islands: JAPANESE_ISLANDS attribute create Result.make (game) end
	Marianas_islands: MARIANAS_ISLANDS attribute create Result.make (game) end
	Marshall_islands: MARSHALL_ISLANDS attribute create Result.make (game) end
	North_pacific_ocean: NORTH_PACIFIC_OCEAN attribute create Result.make (game) end
	South_pacific_ocean: SOUTH_PACIFIC_OCEAN attribute create Result.make (game) end
	US_mandate: US_MANDATE attribute create Result.make (game) end

feature -- Access (groups)

	sea_areas: VITP_TABLE [SEA_AREA]
			-- Convenience feature containing all the sea areas on the board
		attribute
			create Result.make (13)
			Result.extend (Aleutian_islands, Aleutian_islands.name)
			Result.extend (Bay_of_bengal, Bay_of_bengal.name)
			Result.extend (Central_pacific_ocean, Central_pacific_ocean.name)
			Result.extend (Coral_sea, Coral_sea.name)
			Result.extend (Hawaiian_islands, Hawaiian_islands.name)
			Result.extend (Indian_ocean, Indian_ocean.name)
			Result.extend (Indonesia, Indonesia.name)
			Result.extend (Japanese_islands, Japanese_islands.name)
			Result.extend (Marianas_islands, Marianas_islands.name)
			Result.extend (Marshall_islands, Marshall_islands.name)
			Result.extend (North_pacific_ocean, North_pacific_ocean.name)
			Result.extend (South_pacific_ocean, South_pacific_ocean.name)
			Result.extend (US_mandate, US_mandate.name)
		end

	contested_areas: LINKED_SET [SEA_AREA]
			-- Sea areas that contain both Japanese and Allied units
		local
			s: SEA_AREA
		do
			create Result.make
			from Sea_areas.start
			until Sea_areas.after
			loop
				s := Sea_areas.item_for_iteration
				if s.is_contested then
					Result.extend (s)
				end
				Sea_areas.forth
			end
		end

end
