note
	description: "[
		The widget representing this port
		]"
	author: "Jimmy J. Johnson"

class
	PEARL_HARBOR_WIDGET

inherit

--	RED_PORT_WIDGET
--		undefine
--			paint
--		redefine
--			create_interface_objects,
--			initialize,
--			extend_widgets,
--			position_widgets,
--			build_land
--		end

	ISLAND_PORT_WIDGET
		redefine
			create_interface_objects,
			extend_widgets,
			set_fonts_and_colors,
			position_widgets,
			build_land,
			rotation_amount
		end

create
	make

feature {NONE} -- Initialization

	create_interface_objects
			-- Initialize attributes
		do
			oahu := oahu_imp
			kauai := kauai_imp
			molokai := molokai_imp
			maui := maui_imp
			hawaii := hawaii_imp
			lanai := lanai_imp
			niihau := niihau_imp
			create not_allowed_text.make_with_text ("(No British Allowed%Nexcept Victorious)")
			create reinforcements_text.make_with_text ("U.S. Reinforcements%Nand the Victorious")
				-- Make objects non-Void before calling Precursor,
				-- because a qualified call is made in an EV_xx class.
			Precursor {ISLAND_PORT_WIDGET}
--			Precursor {RED_PORT_WIDGET}
		end

	set_fonts_and_colors
			-- Set the default fonts for any text widgets and set
			-- the default colors for any contained widgets.
		do
			Precursor {ISLAND_PORT_WIDGET}
--			Precursor {RED_PORT_WIDGET}
			reinforcements_text.set_font (Subtext_font)
			not_allowed_text.set_font (Subtext_font)
			dot.show
			dot.set_foreground_color (Silver)
		end

	extend_widgets
			-- Put widgets into Current.  This cannot be done
			-- in `create_interface_object', because cannot call
			-- `extend' feature until all objects [in descendants]
			-- are also created.
		do
			Precursor {ISLAND_PORT_WIDGET}
--			Precursor {RED_PORT_WIDGET}
			extend (not_allowed_text)
			extend (reinforcements_text)
		end

	position_widgets
			-- Move Current and contained widgets to correct
			-- location and set their their sizes
		do
			Precursor {ISLAND_PORT_WIDGET}
--			Precursor {RED_PORT_WIDGET}
			center_widget_on_other (land, dot)
			center_widget_on_other (marker, dot)
			scale_widget (land, 0.13)
			rotate_widget (land, 13.0)
			translate_widget (land, 10, -10)
--			name_mt.center_on_dot (dot)
			translate_widget (name_mt, 3, -3)
			translate_widget (anchor, -2, -8)
			translate_widget (marker, 8, 5)
			translate_widget (not_allowed_text, 45, 118)
			translate_widget (reinforcements_text, 15, 85)
			center_on (670, 315)
		end

	build_land
			-- Add widgets to Current
		do
			Precursor {ISLAND_PORT_WIDGET}
			land.extend (oahu)
			land.extend (kauai)
			land.extend (molokai)
			land.extend (maui)
			land.extend (hawaii)
			land.extend (lanai)
			land.extend (niihau)
		end

	not_allowed_text: EV_MODEL_TEXT
			-- Extra text on some Red ports (e.g. "No British Allowed").

	reinforcements_text: EV_MODEL_TEXT
			-- Extra text about reinforcement placement

feature -- Status report

	is_red: BOOLEAN = True
			-- Does Current represent a red (i.e. major) port?

feature {NONE} -- Implementation

	oahu: EV_MODEL_POLYGON
	kauai: EV_MODEL_POLYGON
	molokai: EV_MODEL_POLYGON
	maui: EV_MODEL_POLYGON
	hawaii: EV_MODEL_POLYGON
	lanai: EV_MODEL_POLYGON
	niihau: EV_MODEL_POLYGON


feature {NONE} -- Implementation

	oahu_imp: EV_MODEL_POLYGON
			-- Make the polygon
		do
			create Result
				-- Points generated by Grabber application
			Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-2.6666666666666856, 2.2222222222222285))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-7.1111111111110858, 0.88888888888891415))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-10.222222222222285, -1.7777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-21.333333333333428, -4.4444444444444287))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-25.777777777777771, -4.4444444444444287))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-30.222222222222285, -3.5555555555555429))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-47.111111111111086, -1.7777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-51.5555555555556, -8.4444444444444287))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-52.888888888888914, -16.444444444444429))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-59.111111111111086, -23.111111111111086))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-61.777777777777771, -30.666666666666686))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-68.888888888888914, -36.444444444444429))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-72, -47.555555555555543))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-77.333333333333428, -53.7777777777778))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-80, -56.888888888888886))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-70.666666666666686, -58.666666666666686))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-62.222222222222285, -58.666666666666686))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-53.333333333333428, -58.666666666666686))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-44.888888888888914, -62.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-40, -72.444444444444429))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-36, -78.666666666666686))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-28.444444444444457, -82.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-20.888888888888914, -84))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-17.333333333333428, -81.7777777777778))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-13.777777777777771, -73.333333333333314))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-11.111111111111086, -69.333333333333314))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-9.7777777777777715, -63.111111111111086))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-5.7777777777777715, -59.111111111111086))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-4, -54.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-0.44444444444445708, -54.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (4.8888888888889142, -46.222222222222257))
			Result.extend_point (create {EV_COORDINATE}.make_precise (5.3333333333333144, -39.555555555555543))
			Result.extend_point (create {EV_COORDINATE}.make_precise (4, -36.444444444444429))
			Result.extend_point (create {EV_COORDINATE}.make_precise (7.5555555555555429, -33.777777777777771))
			Result.extend_point (create {EV_COORDINATE}.make_precise (11.111111111111086, -31.555555555555543))
			Result.extend_point (create {EV_COORDINATE}.make_precise (12, -35.111111111111086))
			Result.extend_point (create {EV_COORDINATE}.make_precise (16, -36))
			Result.extend_point (create {EV_COORDINATE}.make_precise (23.111111111111086, -33.333333333333343))
			Result.extend_point (create {EV_COORDINATE}.make_precise (20.888888888888914, -27.111111111111086))
			Result.extend_point (create {EV_COORDINATE}.make_precise (15.111111111111086, -26.666666666666686))
			Result.extend_point (create {EV_COORDINATE}.make_precise (18.222222222222229, -24))
			Result.extend_point (create {EV_COORDINATE}.make_precise (22.666666666666572, -21.333333333333343))
			Result.extend_point (create {EV_COORDINATE}.make_precise (25.777777777777715, -21.333333333333343))
			Result.extend_point (create {EV_COORDINATE}.make_precise (28.888888888888914, -16.888888888888886))
			Result.extend_point (create {EV_COORDINATE}.make_precise (28.888888888888914, -13.333333333333343))
			Result.extend_point (create {EV_COORDINATE}.make_precise (37.333333333333314, -3.5555555555555429))
			Result.extend_point (create {EV_COORDINATE}.make_precise (33.333333333333314, 0.44444444444445708))
			Result.extend_point (create {EV_COORDINATE}.make_precise (28.4444444444444, 4.8888888888889142))
			Result.extend_point (create {EV_COORDINATE}.make_precise (26.666666666666572, 2.2222222222222285))
			Result.extend_point (create {EV_COORDINATE}.make_precise (17.777777777777715, 2.2222222222222285))
			Result.extend_point (create {EV_COORDINATE}.make_precise (12.888888888888914, 4.8888888888889142))
			Result.extend_point (create {EV_COORDINATE}.make_precise (8.8888888888889142, 3.5555555555555713))
			Result.extend_point (create {EV_COORDINATE}.make_precise (5.3333333333333144, 0.44444444444445708))
			Result.extend_point (create {EV_COORDINATE}.make_precise (2.6666666666665719, 2.6666666666666572))
		end

	kauai_imp: EV_MODEL_POLYGON
			-- Make the polygon
		do
			create Result
				-- Points generated by Grabber application
			Result.extend_point (create {EV_COORDINATE}.make_precise (-311.11111111111109, -186.66666666666663))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-300.44444444444446, -180.88888888888886))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-300.44444444444446, -184))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-293.77777777777783, -186.2222222222222))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-287.55555555555554, -183.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-282.66666666666669, -184.88888888888886))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-275.55555555555554, -182.2222222222222))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-272, -180.88888888888886))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-263.55555555555554, -171.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-262.66666666666669, -160.44444444444443))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-265.77777777777777, -155.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-266.66666666666669, -150.2222222222222))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-269.33333333333337, -149.77777777777777))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-268.88888888888891, -132))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-272.88888888888891, -131.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-270.22222222222229, -128.44444444444443))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-276, -126.22222222222221))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-280.44444444444446, -119.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-289.77777777777783, -113.77777777777776))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-302.22222222222223, -117.33333333333331))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-316.88888888888891, -119.99999999999999))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-318.66666666666669, -116.88888888888889))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-323.11111111111109, -120.44444444444443))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-329.33333333333331, -129.77777777777777))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-337.77777777777777, -130.66666666666669))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-348.88888888888891, -135.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-349.33333333333331, -138.66666666666666))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-352.44444444444446, -140.88888888888889))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-352.88888888888891, -151.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-351.11111111111109, -154.66666666666666))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-346.66666666666669, -163.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-343.11111111111109, -171.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-335.55555555555554, -174.2222222222222))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-332.44444444444446, -171.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-328.88888888888891, -174.2222222222222))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-324.44444444444446, -179.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-320, -178.66666666666663))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-318.66666666666669, -182.66666666666663))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-316.44444444444446, -185.77777777777777))
		end

	molokai_imp: EV_MODEL_POLYGON
			-- Make the polygon
		do
			create Result
				-- Points generated by Grabber application
			Result.extend_point (create {EV_COORDINATE}.make_precise (109.33333333333326, 12))
			Result.extend_point (create {EV_COORDINATE}.make_precise (121.77777777777771, 12))
			Result.extend_point (create {EV_COORDINATE}.make_precise (139.11111111111109, 14.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (158.66666666666652, 15.555555555555571))
			Result.extend_point (create {EV_COORDINATE}.make_precise (172.44444444444434, 24))
			Result.extend_point (create {EV_COORDINATE}.make_precise (182.66666666666652, 23.555555555555571))
			Result.extend_point (create {EV_COORDINATE}.make_precise (188.44444444444434, 20.888888888888914))
			Result.extend_point (create {EV_COORDINATE}.make_precise (202.22222222222206, 20.888888888888914))
			Result.extend_point (create {EV_COORDINATE}.make_precise (204, 25.333333333333314))
			Result.extend_point (create {EV_COORDINATE}.make_precise (207.11111111111109, 24.888888888888914))
			Result.extend_point (create {EV_COORDINATE}.make_precise (207.11111111111109, 28.444444444444457))
			Result.extend_point (create {EV_COORDINATE}.make_precise (202.66666666666652, 36.888888888888914))
			Result.extend_point (create {EV_COORDINATE}.make_precise (200, 39.111111111111086))
			Result.extend_point (create {EV_COORDINATE}.make_precise (192, 44.444444444444457))
			Result.extend_point (create {EV_COORDINATE}.make_precise (184.88888888888891, 48))
			Result.extend_point (create {EV_COORDINATE}.make_precise (176.88888888888891, 49.777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (162.66666666666652, 45.777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (148.88888888888891, 40.888888888888914))
			Result.extend_point (create {EV_COORDINATE}.make_precise (136.44444444444434, 39.111111111111086))
			Result.extend_point (create {EV_COORDINATE}.make_precise (121.33333333333326, 39.111111111111086))
			Result.extend_point (create {EV_COORDINATE}.make_precise (108, 40.888888888888914))
			Result.extend_point (create {EV_COORDINATE}.make_precise (101.33333333333326, 37.777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (95.555555555555543, 37.777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (92.888888888888914, 34.666666666666657))
			Result.extend_point (create {EV_COORDINATE}.make_precise (96.444444444444343, 28.888888888888914))
			Result.extend_point (create {EV_COORDINATE}.make_precise (96.444444444444343, 24.444444444444457))
			Result.extend_point (create {EV_COORDINATE}.make_precise (104, 21.777777777777743))
			Result.extend_point (create {EV_COORDINATE}.make_precise (107.55555555555554, 17.333333333333314))
		end

	maui_imp: EV_MODEL_POLYGON
			-- Make the polygon
		do
			create Result
				-- Points generated by Grabber application
			Result.extend_point (create {EV_COORDINATE}.make_precise (222.66666666666652, 49.777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (231.99999999999989, 49.777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (237.33333333333326, 52))
			Result.extend_point (create {EV_COORDINATE}.make_precise (243.11111111111109, 56.444444444444457))
			Result.extend_point (create {EV_COORDINATE}.make_precise (246.22222222222217, 64.444444444444457))
			Result.extend_point (create {EV_COORDINATE}.make_precise (247.11111111111109, 71.555555555555486))
			Result.extend_point (create {EV_COORDINATE}.make_precise (253.33333333333326, 75.111111111111086))
			Result.extend_point (create {EV_COORDINATE}.make_precise (263.55555555555554, 72))
			Result.extend_point (create {EV_COORDINATE}.make_precise (267.55555555555554, 66.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (272.88888888888891, 66.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (274.22222222222217, 63.555555555555486))
			Result.extend_point (create {EV_COORDINATE}.make_precise (282.66666666666652, 65.333333333333314))
			Result.extend_point (create {EV_COORDINATE}.make_precise (283.99999999999989, 63.555555555555486))
			Result.extend_point (create {EV_COORDINATE}.make_precise (289.77777777777771, 66.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (297.77777777777771, 68.888888888888914))
			Result.extend_point (create {EV_COORDINATE}.make_precise (295.99999999999989, 74.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (311.99999999999989, 81.333333333333314))
			Result.extend_point (create {EV_COORDINATE}.make_precise (315.99999999999989, 86.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (331.11111111111109, 89.777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (335.55555555555554, 93.777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (342.66666666666652, 97.333333333333314))
			Result.extend_point (create {EV_COORDINATE}.make_precise (341.33333333333326, 106.66666666666663))
			Result.extend_point (create {EV_COORDINATE}.make_precise (337.33333333333326, 115.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (331.55555555555554, 120.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (329.33333333333326, 124.4444444444444))
			Result.extend_point (create {EV_COORDINATE}.make_precise (322.22222222222217, 125.33333333333331))
			Result.extend_point (create {EV_COORDINATE}.make_precise (315.99999999999989, 129.33333333333331))
			Result.extend_point (create {EV_COORDINATE}.make_precise (307.55555555555554, 131.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (302.22222222222217, 129.77777777777771))
			Result.extend_point (create {EV_COORDINATE}.make_precise (287.99999999999989, 136.4444444444444))
			Result.extend_point (create {EV_COORDINATE}.make_precise (284.88888888888891, 132))
			Result.extend_point (create {EV_COORDINATE}.make_precise (284.88888888888891, 138.66666666666657))
			Result.extend_point (create {EV_COORDINATE}.make_precise (274.22222222222217, 137.77777777777771))
			Result.extend_point (create {EV_COORDINATE}.make_precise (263.11111111111109, 139.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (259.11111111111109, 136.4444444444444))
			Result.extend_point (create {EV_COORDINATE}.make_precise (255.99999999999989, 130.22222222222223))
			Result.extend_point (create {EV_COORDINATE}.make_precise (253.33333333333326, 124.4444444444444))
			Result.extend_point (create {EV_COORDINATE}.make_precise (253.33333333333326, 108.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (247.99999999999989, 103.55555555555549))
			Result.extend_point (create {EV_COORDINATE}.make_precise (247.11111111111109, 98.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (244.88888888888891, 95.111111111111086))
			Result.extend_point (create {EV_COORDINATE}.make_precise (241.77777777777771, 99.555555555555486))
			Result.extend_point (create {EV_COORDINATE}.make_precise (232.44444444444423, 99.111111111111086))
			Result.extend_point (create {EV_COORDINATE}.make_precise (221.77777777777771, 93.333333333333314))
			Result.extend_point (create {EV_COORDINATE}.make_precise (216, 84.444444444444457))
			Result.extend_point (create {EV_COORDINATE}.make_precise (213.33333333333326, 78.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (210.66666666666652, 72))
			Result.extend_point (create {EV_COORDINATE}.make_precise (212.44444444444434, 58.666666666666629))
			Result.extend_point (create {EV_COORDINATE}.make_precise (216.44444444444434, 51.111111111111086))
		end

	hawaii_imp: EV_MODEL_POLYGON
			-- Make the polygon
		do
			create Result
				-- Points generated by Grabber application
			Result.extend_point (create {EV_COORDINATE}.make_precise (357.77777777777771, 200))
			Result.extend_point (create {EV_COORDINATE}.make_precise (366.22222222222217, 198.22222222222223))
			Result.extend_point (create {EV_COORDINATE}.make_precise (379.55555555555554, 202.22222222222223))
			Result.extend_point (create {EV_COORDINATE}.make_precise (384.44444444444423, 206.22222222222223))
			Result.extend_point (create {EV_COORDINATE}.make_precise (389.77777777777771, 211.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (399.11111111111109, 214.66666666666657))
			Result.extend_point (create {EV_COORDINATE}.make_precise (406.22222222222217, 222.66666666666657))
			Result.extend_point (create {EV_COORDINATE}.make_precise (413.77777777777771, 225.33333333333331))
			Result.extend_point (create {EV_COORDINATE}.make_precise (420.44444444444423, 224))
			Result.extend_point (create {EV_COORDINATE}.make_precise (425.33333333333326, 226.22222222222223))
			Result.extend_point (create {EV_COORDINATE}.make_precise (444.44444444444423, 234.66666666666657))
			Result.extend_point (create {EV_COORDINATE}.make_precise (467.99999999999989, 246.66666666666657))
			Result.extend_point (create {EV_COORDINATE}.make_precise (490.22222222222217, 262.22222222222223))
			Result.extend_point (create {EV_COORDINATE}.make_precise (498.66666666666652, 272.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (503.99999999999989, 276.4444444444444))
			Result.extend_point (create {EV_COORDINATE}.make_precise (505.77777777777771, 284.4444444444444))
			Result.extend_point (create {EV_COORDINATE}.make_precise (501.33333333333326, 288.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (503.55555555555554, 297.33333333333326))
			Result.extend_point (create {EV_COORDINATE}.make_precise (505.77777777777771, 303.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (512.44444444444423, 300.44444444444434))
			Result.extend_point (create {EV_COORDINATE}.make_precise (515.55555555555554, 301.33333333333326))
			Result.extend_point (create {EV_COORDINATE}.make_precise (519.55555555555554, 300.44444444444434))
			Result.extend_point (create {EV_COORDINATE}.make_precise (524.44444444444423, 311.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (523.11111111111109, 319.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (529.33333333333326, 323.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (529.77777777777771, 328))
			Result.extend_point (create {EV_COORDINATE}.make_precise (538.66666666666652, 334.66666666666652))
			Result.extend_point (create {EV_COORDINATE}.make_precise (550.66666666666652, 340))
			Result.extend_point (create {EV_COORDINATE}.make_precise (554.22222222222217, 345.33333333333326))
			Result.extend_point (create {EV_COORDINATE}.make_precise (551.55555555555554, 353.77777777777771))
			Result.extend_point (create {EV_COORDINATE}.make_precise (545.33333333333326, 360))
			Result.extend_point (create {EV_COORDINATE}.make_precise (537.33333333333326, 367.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (532.88888888888891, 370.22222222222206))
			Result.extend_point (create {EV_COORDINATE}.make_precise (527.55555555555554, 373.33333333333326))
			Result.extend_point (create {EV_COORDINATE}.make_precise (525.33333333333326, 376))
			Result.extend_point (create {EV_COORDINATE}.make_precise (517.33333333333326, 381.33333333333326))
			Result.extend_point (create {EV_COORDINATE}.make_precise (507.11111111111109, 384.44444444444434))
			Result.extend_point (create {EV_COORDINATE}.make_precise (503.11111111111109, 388))
			Result.extend_point (create {EV_COORDINATE}.make_precise (496.88888888888891, 390.22222222222206))
			Result.extend_point (create {EV_COORDINATE}.make_precise (490.66666666666652, 390.22222222222206))
			Result.extend_point (create {EV_COORDINATE}.make_precise (483.99999999999989, 396))
			Result.extend_point (create {EV_COORDINATE}.make_precise (478.66666666666652, 396))
			Result.extend_point (create {EV_COORDINATE}.make_precise (475.99999999999989, 393.33333333333326))
			Result.extend_point (create {EV_COORDINATE}.make_precise (468.44444444444423, 393.33333333333326))
			Result.extend_point (create {EV_COORDINATE}.make_precise (462.22222222222217, 396))
			Result.extend_point (create {EV_COORDINATE}.make_precise (453.77777777777771, 400))
			Result.extend_point (create {EV_COORDINATE}.make_precise (447.55555555555554, 405.33333333333326))
			Result.extend_point (create {EV_COORDINATE}.make_precise (442.66666666666652, 403.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (440.88888888888891, 409.77777777777771))
			Result.extend_point (create {EV_COORDINATE}.make_precise (439.55555555555554, 416))
			Result.extend_point (create {EV_COORDINATE}.make_precise (432.88888888888891, 417.33333333333326))
			Result.extend_point (create {EV_COORDINATE}.make_precise (422.22222222222217, 423.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (417.77777777777771, 431.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (416.44444444444423, 439.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (412.44444444444423, 443.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (411.99999999999989, 450.66666666666652))
			Result.extend_point (create {EV_COORDINATE}.make_precise (406.22222222222217, 452))
			Result.extend_point (create {EV_COORDINATE}.make_precise (403.55555555555554, 456.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (396.88888888888891, 462.22222222222206))
			Result.extend_point (create {EV_COORDINATE}.make_precise (390.66666666666652, 456.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (387.11111111111109, 452))
			Result.extend_point (create {EV_COORDINATE}.make_precise (379.55555555555554, 452))
			Result.extend_point (create {EV_COORDINATE}.make_precise (377.77777777777771, 448.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (373.33333333333326, 444.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (361.33333333333326, 440.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (356.88888888888891, 434.66666666666652))
			Result.extend_point (create {EV_COORDINATE}.make_precise (352.88888888888891, 421.77777777777771))
			Result.extend_point (create {EV_COORDINATE}.make_precise (353.77777777777771, 404))
			Result.extend_point (create {EV_COORDINATE}.make_precise (355.99999999999989, 392.44444444444434))
			Result.extend_point (create {EV_COORDINATE}.make_precise (356.44444444444423, 375.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (354.22222222222217, 366.66666666666652))
			Result.extend_point (create {EV_COORDINATE}.make_precise (350.22222222222217, 355.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (349.77777777777771, 348.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (346.22222222222217, 349.77777777777771))
			Result.extend_point (create {EV_COORDINATE}.make_precise (343.99999999999989, 337.77777777777771))
			Result.extend_point (create {EV_COORDINATE}.make_precise (340.88888888888891, 325.77777777777771))
			Result.extend_point (create {EV_COORDINATE}.make_precise (330.22222222222217, 318.22222222222206))
			Result.extend_point (create {EV_COORDINATE}.make_precise (327.55555555555554, 309.33333333333326))
			Result.extend_point (create {EV_COORDINATE}.make_precise (325.77777777777771, 301.77777777777771))
			Result.extend_point (create {EV_COORDINATE}.make_precise (327.55555555555554, 300))
			Result.extend_point (create {EV_COORDINATE}.make_precise (327.55555555555554, 295.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (330.22222222222217, 293.33333333333326))
			Result.extend_point (create {EV_COORDINATE}.make_precise (329.77777777777771, 291.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (336.88888888888891, 287.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (337.77777777777771, 281.77777777777771))
			Result.extend_point (create {EV_COORDINATE}.make_precise (347.55555555555554, 279.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (350.66666666666652, 277.33333333333331))
			Result.extend_point (create {EV_COORDINATE}.make_precise (353.77777777777771, 277.77777777777771))
			Result.extend_point (create {EV_COORDINATE}.make_precise (354.66666666666652, 274.22222222222223))
			Result.extend_point (create {EV_COORDINATE}.make_precise (352.44444444444423, 272))
			Result.extend_point (create {EV_COORDINATE}.make_precise (355.11111111111109, 268))
			Result.extend_point (create {EV_COORDINATE}.make_precise (359.11111111111109, 268.4444444444444))
			Result.extend_point (create {EV_COORDINATE}.make_precise (355.55555555555554, 264.4444444444444))
			Result.extend_point (create {EV_COORDINATE}.make_precise (359.99999999999989, 260.4444444444444))
			Result.extend_point (create {EV_COORDINATE}.make_precise (361.77777777777771, 256.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (368.44444444444423, 254.66666666666657))
			Result.extend_point (create {EV_COORDINATE}.make_precise (367.55555555555554, 245.77777777777771))
			Result.extend_point (create {EV_COORDINATE}.make_precise (365.77777777777771, 242.22222222222223))
			Result.extend_point (create {EV_COORDINATE}.make_precise (363.11111111111109, 235.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (358.22222222222217, 231.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (355.99999999999989, 224))
			Result.extend_point (create {EV_COORDINATE}.make_precise (355.11111111111109, 211.55555555555554))
			Result.extend_point (create {EV_COORDINATE}.make_precise (354.66666666666652, 204.4444444444444))
		end

	lanai_imp: EV_MODEL_POLYGON
			-- Make the polygon
		do
			create Result
				-- Points generated by Grabber application
			Result.extend_point (create {EV_COORDINATE}.make_precise (144.44444444444434, 72.888888888888914))
			Result.extend_point (create {EV_COORDINATE}.make_precise (149.33333333333326, 68.888888888888914))
			Result.extend_point (create {EV_COORDINATE}.make_precise (158.66666666666652, 68))
			Result.extend_point (create {EV_COORDINATE}.make_precise (173.33333333333326, 69.777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (181.77777777777771, 76.888888888888914))
			Result.extend_point (create {EV_COORDINATE}.make_precise (182.22222222222206, 81.777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (190.66666666666652, 87.111111111111086))
			Result.extend_point (create {EV_COORDINATE}.make_precise (191.55555555555554, 93.777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (188.88888888888891, 97.777777777777715))
			Result.extend_point (create {EV_COORDINATE}.make_precise (186.66666666666652, 103.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (180.88888888888891, 104.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (176.44444444444434, 108.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (170.66666666666652, 108.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (163.11111111111109, 108.88888888888891))
			Result.extend_point (create {EV_COORDINATE}.make_precise (157.77777777777771, 104.44444444444446))
			Result.extend_point (create {EV_COORDINATE}.make_precise (155.55555555555554, 98.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (156.88888888888891, 91.555555555555486))
			Result.extend_point (create {EV_COORDINATE}.make_precise (154.66666666666652, 91.555555555555486))
			Result.extend_point (create {EV_COORDINATE}.make_precise (154.22222222222206, 87.111111111111086))
			Result.extend_point (create {EV_COORDINATE}.make_precise (146.66666666666652, 86.222222222222229))
			Result.extend_point (create {EV_COORDINATE}.make_precise (142.66666666666652, 80.888888888888914))
		end

	niihau_imp: EV_MODEL_POLYGON
			-- Make the polygon
		do
			create Result
				-- Points generated by Grabber application
			Result.extend_point (create {EV_COORDINATE}.make_precise (-409.77777777777777, -141.33333333333331))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-402.66666666666663, -140))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-399.11111111111109, -135.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-402.66666666666663, -132.88888888888889))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-405.77777777777777, -126.66666666666666))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-402.22222222222217, -119.99999999999999))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-408, -115.99999999999999))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-408.88888888888886, -113.33333333333331))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-411.55555555555554, -115.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-419.11111111111109, -113.33333333333331))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-421.33333333333331, -107.99999999999999))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-424.88888888888886, -102.66666666666666))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-424, -95.999999999999986))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-429.77777777777777, -96.444444444444429))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-436.4444444444444, -101.33333333333331))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-437.33333333333331, -108.88888888888889))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-435.11111111111109, -112.44444444444443))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-434.22222222222217, -119.11111111111109))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-430.22222222222217, -121.33333333333331))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-427.55555555555554, -126.22222222222221))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-420.88888888888886, -127.99999999999999))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-412.88888888888886, -132))
			Result.extend_point (create {EV_COORDINATE}.make_precise (-412.4444444444444, -137.77777777777777))
		end

feature {NONE} -- Implementation

	rotation_amount: REAL_64 = -60.0
			-- Make the arrow point north-east

invariant

	correct_location: attached target_imp implies port = game.pearl_harbor

end
