19928/jj_vitp/Interface/commands/reposition_command.e
Jocelyn Fiat 6dde6425c2 init
2024-06-17 09:09:33 +02:00

97 lines
1.8 KiB
Plaintext

note
description: "[
A {VITP_COMMAND} that changes the `position' of a unit.
]"
author: "Jimmy J. Johnson"
class
REPOSITION_COMMAND
inherit
VITP_COMMAND
redefine
-- default_create,
text,
execute,
undo
end
create
-- default_create,
make
feature {NONE} -- Initialization
-- default_create
-- -- Create an instance
-- do
-- Precursor {VITP_COMMAND}
-- unit := Default_ship
-- create old_position.set_xy (0, 0)
-- create position.set_xy (0, 0)
-- end
make (a_unit: like unit; a_position: like position)
-- Initialize a command that can reposition `a_unit' to `a_position'
require
unit_exists: a_unit /= Void
location_exists: a_position /= Void
do
default_create
unit := a_unit
-- unit.set_position (a_position)
create old_position.set_xy (0, 0)
create position.set_xy (a_position.longitude, a_position.latitude)
end
feature -- Access
text: STRING
-- Description of the command
do
Result := "COMMAND: Reposition -- "+ unit.name + " from " + old_position.out
Result := Result + " to " + position.out
end
unit: ATTACK_UNIT
-- The unit to be moved
position: VITP_POSITION
-- The position to which `unit' is to be moved
old_position: VITP_POSITION
-- The position from which `unit' was moved
feature -- Basic operations
execute
-- Perform the action
local
i: INTEGER
do
Precursor {VITP_COMMAND}
old_position := unit.position
if unit.is_task_force then
from i := 1
until i > unit.task_force.count
loop
unit.task_force.i_th (i).set_position (position)
i := i + 1
end
else
unit.set_position (position)
end
end
undo
-- Reverse the effects of executing the command
do
Precursor {VITP_COMMAND}
unit.set_position (old_position)
end
feature -- Status report
end