96 lines
1.9 KiB
Plaintext
96 lines
1.9 KiB
Plaintext
note
|
|
description: "[
|
|
Root class for all entities in the VITP game.
|
|
]"
|
|
author: "Jimmy J. Johnson"
|
|
|
|
deferred class
|
|
VITP_ITEM
|
|
|
|
inherit
|
|
|
|
IDENTIFIED
|
|
|
|
HASHABLE
|
|
undefine
|
|
copy,
|
|
is_equal
|
|
end
|
|
|
|
feature {NONE} -- Initialization
|
|
|
|
make (a_game: like game)
|
|
-- Initialize Current
|
|
do
|
|
game := a_game
|
|
nationality := {NATIONALITY_CONSTANTS}.nobody
|
|
end
|
|
|
|
feature -- Access
|
|
|
|
game: VITP_GAME
|
|
-- The game in which this item belongs.
|
|
|
|
name: STRING_8
|
|
-- The displayed name for this widget
|
|
deferred
|
|
end
|
|
|
|
nationality: like game.japanese
|
|
-- Nation to which this game piece belongs
|
|
|
|
hash_code: INTEGER
|
|
-- Code based on `name' and the `uuid' of the `vitp' game.
|
|
-- See `make'.
|
|
do
|
|
-- Result := (vitp.uuid.out + name).hash_code
|
|
Result := object_id
|
|
end
|
|
|
|
feature -- Element change
|
|
|
|
set_nationality (a_nationality: like nationality)
|
|
-- Change the `nationality' of Current.
|
|
do
|
|
nationality := a_nationality
|
|
end
|
|
|
|
feature -- Status report
|
|
|
|
is_japanese: BOOLEAN
|
|
-- Is the location controled by the japanese?
|
|
do
|
|
Result := nationality = game.japanese
|
|
end
|
|
|
|
is_allied: BOOLEAN
|
|
-- Is the entity controled by the allies?
|
|
do
|
|
Result := game.is_allied_nationality (nationality)
|
|
end
|
|
|
|
is_uncontrolled: BOOLEAN
|
|
-- Is the entity uncontroled?
|
|
do
|
|
Result := not (is_allied or is_japanese)
|
|
end
|
|
|
|
feature -- Query
|
|
|
|
-- is_equal (other: like Current): BOOLEAN
|
|
-- -- Is `other' attached to an object considered
|
|
-- -- equal to current object?
|
|
-- -- There should only be one widget for each named VITP_ITEM, so
|
|
-- -- this and descendant can use the `name' to determine equality.
|
|
-- do
|
|
-- Result := vitp = other.vitp and name ~ other.name
|
|
-- end
|
|
|
|
is_opposed (other: VITP_ITEM): BOOLEAN
|
|
-- Is Current and other on different sides (e.g. Allies or Japanese)?
|
|
do
|
|
Result := (is_allied and not other.is_allied) or (not is_allied and other.is_allied)
|
|
end
|
|
|
|
end
|