81 lines
1.5 KiB
Plaintext
81 lines
1.5 KiB
Plaintext
note
|
|
description: "[
|
|
Top container class of the classes that decompose the numourous
|
|
VITP widgets into more managable groups.
|
|
This class keeps track of widgets, allowing a {VITP_WIDGET}
|
|
to add/remove a widget to/from its world.
|
|
]"
|
|
author: "Jimmy J. Johnson"
|
|
date: "5/15/24"
|
|
copyright: "Copyright (c) 2024, Jimmy J. Johnson"
|
|
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
|
|
|
|
class
|
|
WIDGET_FACTORY
|
|
|
|
create
|
|
make
|
|
|
|
feature {NONE} -- Initialization
|
|
|
|
make (a_game: like game)
|
|
-- Create an instance
|
|
do
|
|
print ("WIDGET_FACTORY.make %N")
|
|
game := a_game
|
|
make_widgets
|
|
extend_widgets
|
|
pair_widgets
|
|
fill_widgets
|
|
print ("%T end WIDGET_FACTORY.make %N")
|
|
end
|
|
|
|
make_widgets
|
|
-- Create widgets for the corresponding game item
|
|
do
|
|
create widgets.make (100)
|
|
end
|
|
|
|
feature -- Access
|
|
|
|
game: VITP_GAME
|
|
-- The game for which the widgets are created
|
|
|
|
widgets: VITP_WIDGET_TABLE [VITP_WIDGET, VITP_ITEM]
|
|
-- Container to keep track of all widgets
|
|
|
|
feature -- Element change
|
|
|
|
set_game (a_game: like game)
|
|
-- Associate `a_game' with Current.
|
|
do
|
|
game := a_game
|
|
-- Add widgets to the table only once, because
|
|
-- the widgets don't change
|
|
if widgets.is_empty then
|
|
extend_widgets
|
|
end
|
|
pair_widgets
|
|
fill_widgets
|
|
end
|
|
|
|
feature -- Basic operations
|
|
|
|
extend_widgets
|
|
-- Put each widget into a list.
|
|
do
|
|
end
|
|
|
|
pair_widgets
|
|
-- Associate each widget with a unit
|
|
do
|
|
end
|
|
|
|
fill_widgets
|
|
-- Called by `set_target' to place each item into
|
|
-- its associated widget.
|
|
do
|
|
end
|
|
|
|
end
|