]> git.localhorst.tv Git - blank.git/blobdiff - src/shared/cli.cpp
less restrictive teleport command
[blank.git] / src / shared / cli.cpp
index cb46cfc264c289fcb73abb9b89caceaefd60af1e..bb4aa6de706e3259f25f374a9fdfe15d57808870 100644 (file)
@@ -63,19 +63,30 @@ CLI::Command::~Command() {
 }
 
 
+CLIContext::CLIContext(Player *p, Entity *e)
+: original_player(p)
+, effective_player(p)
+, original_entity(e)
+, effective_entity(e) {
+       if (!e && p) {
+               original_entity = effective_entity = &p->GetEntity();
+       }
+}
+
+
 void TeleportCommand::Execute(CLI &, CLIContext &ctx, TokenStreamReader &args) {
-       if (!ctx.HasPlayer()) {
-               ctx.Error("teleport needs player to operate on");
+       if (!ctx.HasEntity()) {
+               ctx.Error("teleport needs entity to operate on");
                return;
        }
 
        glm::vec3 pos(args.GetFloat(), args.GetFloat(), args.GetFloat());
-       EntityState state = ctx.GetPlayer().GetEntity().GetState();
+       EntityState state = ctx.GetEntity().GetState();
        state.pos = ExactLocation(pos).Sanitize();
-       ctx.GetPlayer().GetEntity().SetState(state);
+       ctx.GetEntity().SetState(state);
 
        stringstream msg;
-       msg << ctx.GetPlayer().Name() << " teleported to " << pos;
+       msg << ctx.GetEntity().Name() << " teleported to " << pos;
        ctx.Broadcast(msg.str());
 }