229 lines
5.7 KiB
Plaintext
229 lines
5.7 KiB
Plaintext
note
|
|
description: "[
|
|
Used to hold a BOARD_VIEW in the VITP vitp.program.
|
|
]"
|
|
author: "Jimmy J. Johnson"
|
|
|
|
class
|
|
BOARD_TOOL
|
|
|
|
inherit
|
|
|
|
VITP_TOOL
|
|
redefine
|
|
create_interface_objects,
|
|
initialize,
|
|
build_tool_bar,
|
|
add_actions,
|
|
-- initialize_interface,
|
|
-- set_actions,
|
|
set_target,
|
|
draw,
|
|
set_button_states
|
|
end
|
|
|
|
GAME_CONSTANTS
|
|
undefine
|
|
default_create,
|
|
copy
|
|
end
|
|
|
|
create
|
|
make
|
|
|
|
feature {NONE} -- Initialization
|
|
|
|
create_interface_objects
|
|
-- Create objects to be used by `Current' in `initialize'
|
|
-- Implemented by descendants to create attached objects
|
|
-- in order to adhere to void-safety due to the implementation
|
|
-- bridge pattern.
|
|
do
|
|
print ("BOARD_TOOL.create_interface_objects %N")
|
|
Precursor {VITP_TOOL}
|
|
print ("BOARD_TOOL.create_interface_objects before creating board_view %N")
|
|
create board_view.make (vitp)
|
|
print ("BOARD_TOOL.create_interface_objects after creating board_view %N")
|
|
create repair_button
|
|
create flip_raiders_button
|
|
create commit_button
|
|
create sop_button
|
|
repair_button.set_pixmap (create {EV_PIXMAP}.make_with_pixel_buffer (Icon_tool_color_buffer))
|
|
repair_button.set_tooltip ("Repair Units")
|
|
flip_raiders_button.set_pixmap (create {EV_PIXMAP}.make_with_pixel_buffer (Icon_reset_diagram_color_buffer))
|
|
flip_raiders_button.set_tooltip ("Flip Raiders")
|
|
commit_button.set_pixmap (create {EV_PIXMAP}.make_with_pixel_buffer (Icon_client_link_buffer))
|
|
commit_button.set_tooltip ("Commit and Advance")
|
|
sop_button.set_text ("SOP Button fix me")
|
|
print ("%T end BOARD_TOOL.create_interface_objects %N")
|
|
end
|
|
|
|
initialize
|
|
-- Build the interface for this window
|
|
do
|
|
Precursor {VITP_TOOL}
|
|
split_manager.extend (board_view)
|
|
set_minimum_width (1000)
|
|
end
|
|
|
|
build_tool_bar
|
|
-- Set up the user tool bar for this tool
|
|
local
|
|
vs: EV_VERTICAL_SEPARATOR
|
|
do
|
|
Precursor
|
|
-- tool_bar.extend (create {EV_VERTICAL_SEPARATOR})
|
|
-- tool_bar.extend (repair_button)
|
|
-- tool_bar.extend (flip_raiders_button)
|
|
tool_bar.extend (sop_button)
|
|
-- Separator between two buttons
|
|
create vs
|
|
tool_bar.extend (vs)
|
|
tool_bar.disable_item_expand (vs)
|
|
vs.set_minimum_width (20)
|
|
-- Add button
|
|
tool_bar.extend (commit_button)
|
|
tool_bar.disable_item_expand (commit_button)
|
|
create vs
|
|
tool_bar.extend (vs)
|
|
tool_bar.disable_item_expand (vs)
|
|
vs.set_minimum_width (20)
|
|
end
|
|
|
|
add_actions
|
|
-- Associate actions with the buttons
|
|
do
|
|
Precursor {VITP_TOOL}
|
|
commit_button.select_actions.extend (agent on_commit)
|
|
sop_button.select_actions.extend (agent on_execute)
|
|
end
|
|
|
|
feature -- Access
|
|
|
|
board_view: BOARD_VIEW
|
|
-- Handle to the view corresponding to the first view created by the
|
|
-- `view_manager' in `initialize'.
|
|
-- Convinience feature.
|
|
|
|
focused_view: VITP_CELL_VIEW
|
|
-- The view that currently has the focus
|
|
do
|
|
Result := board_view
|
|
-- if japanese_chart_view.has_focus then
|
|
-- Result := japanese_chart_view
|
|
-- else
|
|
-- Result := board_view
|
|
-- end
|
|
end
|
|
|
|
feature -- Element change
|
|
|
|
set_target (a_game: like vitp)
|
|
-- Change the value of `target' and add it to the `target_set' (the set
|
|
-- of objects contained in this view. The old target is removed from
|
|
-- the set.
|
|
-- This feature can be used as a pattern if a descendant wants to give
|
|
-- special treatment to a single target.
|
|
do
|
|
Precursor {VITP_TOOL} (a_game)
|
|
board_view.set_target (a_game)
|
|
end
|
|
|
|
feature -- Basic operations
|
|
|
|
draw
|
|
-- Redraw the tool
|
|
do
|
|
Precursor {VITP_TOOL}
|
|
-- board_view.draw
|
|
set_button_states
|
|
end
|
|
|
|
on_commit
|
|
-- Action to be performed when the `commit_button' is pressed
|
|
do
|
|
-- vitp.advance
|
|
-- board_view.on_advanced
|
|
vitp.sequence_of_play.forth
|
|
draw_views (vitp)
|
|
end
|
|
|
|
on_execute
|
|
-- Perform the any action associated with the current step
|
|
-- in the sequence of play.
|
|
local
|
|
sop: VITP_SEQUENCE_OF_PLAY
|
|
do
|
|
sop := vitp.sequence_of_play
|
|
sop.execute_step_actions
|
|
draw_views (vitp)
|
|
end
|
|
|
|
feature {NONE} -- implementation
|
|
|
|
set_button_states
|
|
-- Enable or disable the buttons depending on the
|
|
-- state of the view
|
|
do
|
|
Precursor {VITP_TOOL}
|
|
set_added_buttons_states
|
|
end
|
|
|
|
set_added_buttons_states
|
|
-- Enable or disable the buttons that this tool
|
|
-- added to the tool bar.
|
|
local
|
|
sop: VITP_SEQUENCE_OF_PLAY
|
|
s: GAME_STEP
|
|
c: FONT_AND_COLOR_CONSTANTS
|
|
do
|
|
if is_view_empty then
|
|
repair_button.disable_sensitive
|
|
flip_raiders_button.disable_sensitive
|
|
commit_button.disable_sensitive
|
|
else
|
|
sop := vitp.sequence_of_play
|
|
if not sop.is_off then
|
|
sop_button.set_text (sop.full_name)
|
|
create c
|
|
if sop.is_japanese_player then
|
|
sop_button.set_background_color (c.Japanese_unit_color)
|
|
sop_button.set_foreground_color (c.black)
|
|
elseif sop.is_allied_player then
|
|
sop_button.set_background_color (c.us_unit_color)
|
|
sop_button.set_foreground_color (c.white)
|
|
end
|
|
if sop.is_step_executable then
|
|
sop_button.enable_sensitive
|
|
else
|
|
sop_button.disable_sensitive
|
|
end
|
|
if sop.is_step_completed then
|
|
commit_button.enable_sensitive
|
|
else
|
|
commit_button.disable_sensitive
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
feature {NONE} -- Implementation
|
|
|
|
sop_button: EV_BUTTON
|
|
-- Button showing the current game step in the Sequence
|
|
-- of play. The background color corresponds to the active
|
|
-- player (red for Japanese and blue for Allied). This
|
|
-- button is active when the `vitp'.`sequence_of_play'
|
|
-- indicates that automatic actions are executable.
|
|
|
|
repair_button: EV_TOOL_BAR_BUTTON
|
|
-- Button to mark units for repair
|
|
|
|
flip_raiders_button: EV_TOOL_BAR_BUTTON
|
|
-- Button to flip from patroller to raider or back
|
|
|
|
commit_button: EV_BUTTON --EV_TOOL_BAR_BUTTON
|
|
-- Button for player to indicate he is finished with the step
|
|
|
|
end
|