1 package cz.cuni.amis.pogamut.udk.bot.command;
2
3 import java.util.logging.Logger;
4
5 import cz.cuni.amis.pogamut.base3d.worldview.object.ILocated;
6 import cz.cuni.amis.pogamut.base3d.worldview.object.Rotation;
7 import cz.cuni.amis.pogamut.udk.bot.impl.UDKBot;
8 import cz.cuni.amis.pogamut.udk.communication.messages.gbcommands.Act;
9 import cz.cuni.amis.pogamut.udk.communication.messages.gbcommands.Pick;
10 import cz.cuni.amis.pogamut.udk.communication.messages.gbcommands.Respawn;
11 import cz.cuni.amis.pogamut.udk.communication.messages.gbcommands.Throw;
12 import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId;
13
14 /**
15 * Class providing Pogamut2 UT2004 bot action commands - throwing weapon,
16 * issuing combos, item interactions and other commands that didn't fit in other
17 * categories.
18 *
19 * @author Michal 'Knight' Bida
20 */
21 public class Action extends BotCommands {
22
23 /**
24 * Throws out bots current weapon (just if he is allowed to throw this kind
25 * of weapon out - some weapons cannot be thrown e.g. ShieldGun) and will
26 * change to best weapon available.
27 *
28 * (issues GB THROW command)
29 */
30 public void throwWeapon() {
31 agent.getAct().act(new Throw());
32 }
33
34 /**
35 * This function will kill the bot and force him to respawn. He will respawn
36 * on some randomly chosen starting point in the map.
37 *
38 * (issues GB RESPAWN command)
39 *
40 * @see respawn(ILocated)
41 * @see respawn(ILocated,Rotation)
42 */
43 public void respawn() {
44 agent.getAct().act(new Respawn());
45 }
46
47 /**
48 * This function will kill the bot and force him to respawn. He will respawn
49 * at the location supplied (if he is allowed to respawn there). Be carefull
50 * when supporting some object in the game that is ILocated, may kill other
51 * player if respawned at his positions.
52 *
53 * (issues GB RESPAWN command)
54 *
55 * @param location
56 * Bot will be respawned at this location (if he can). Be
57 * carefull may kill players this way. Usefull when wanted to
58 * specify NavPoint you want the bot to have respawned at.
59 *
60 * @see respawn()
61 * @see respawn(ILocated,Rotation)
62 *
63 */
64 public void respawn(ILocated location) {
65 Respawn respawn = new Respawn();
66
67 respawn.setStartLocation(location.getLocation());
68 agent.getAct().act(respawn);
69 }
70
71 /**
72 * This function will kill the bot and force him to respawn. He will respawn
73 * at the location specified (if he is allowed to respawn there). Be
74 * carefull when supporting some object in the game that is ILocated, may
75 * kill other player if respawned at his positions. He will be respawned
76 * with supplied rotation set.
77 *
78 * (issues GB RESPAWN command)
79 *
80 * @param location
81 * Location where the bot will be respawned.
82 * @param rotation
83 * Initial rotation of the bot.
84 *
85 * @see respawn()
86 * @see respawn(ILocated)
87 *
88 */
89 public void respawn(ILocated location, Rotation rotation) {
90 Respawn respawn = new Respawn();
91
92 respawn.setStartLocation(location.getLocation());
93 respawn.setStartRotation(rotation);
94 agent.getAct().act(respawn);
95 }
96
97 /**
98 * If the items are set to be picked up manualy, this command can be used to
99 * pick up the items. Note that the bot must be touching the item, when this
100 * command is issued to picked it up.
101 *
102 * To disable auto pickup (so the bots will pick items manually by this
103 * command) set in GameBots ini file found in UT_HOME/System directory
104 * variable bDisableAutoPickup to true (the variable should be in .RemoteBot
105 * section).
106 *
107 * @param id
108 * UnrealId of the item we want to pick up.
109 */
110 public void pick(UnrealId id) {
111 agent.getAct().act(new Pick().setId(id));
112 }
113
114 /**
115 * This command can be used to play some available bot animation. To see
116 * which animations are available, go to UnrealEd Actor Class browser,
117 * select Animations tab and open the .ukx file containing the animations of
118 * the model of the bot you are using in UT.
119 *
120 * Note that movement animations will always override animations issued by
121 * this command. The bot must stand still for the issued animation to
122 * finish.
123 *
124 * @param animName
125 * name of the animation we want to run
126 */
127 public void playAnimation(String animName) {
128 agent.getAct().act(new Act().setName(animName));
129 }
130
131 /**
132 * Constructor. Setups the command module based on given agent and logger.
133 *
134 * @param agent
135 * AbstractUT2004Bot we will send commands for
136 * @param log
137 * Logger to be used for logging runtime/debug info.
138 */
139 public Action(UDKBot agent, Logger log) {
140 super(agent, log);
141 }
142 }