Elaztek Developer Hub
Blamite Game Engine - blam!  00423.10.27.24.0533.blamite
The core library for the Blamite Game Engine.
drop.hpp
Go to the documentation of this file.
1 #include "../console.h"
2 
3 #include <OGRE/OgreItem.h>
4 
9 
11 {
18  {
19  public:
21  {
22  name = "drop";
23  description = "drops the named tag e.g. objects/vehicles/banshee/banshee.vehicle";
24  aliases = {"spawn", "summon", "create", "drop_safe"};
25 
27  }
28 
29  BlamResult Execute(std::vector<std::string> arguments)
30  {
31  if (arguments.size() == 0)
32  {
33  return BlamResult::Error_Command_WrongArgumentCount;
34  }
35 
36  std::string tag_path = arguments.at(0);
38 
39  if (!tag)
40  {
41  Blam::Logger::LogEventForce("couldn't load tag '" + tag_path + "' to place", WSV_ERROR);
42  Blam::Logger::LogEventForce("tag '" + tag_path + "' does not exist");
43  return BlamResult::Success_OK;
44  }
45 
47 
48  if (!world_state)
49  {
50  Blam::Logger::LogEventForce("cannot place: world state not ready", WSV_ERROR);
51  return BlamResult::Success_OK;
52  }
53 
54  BlamWorldObject_Tag* object = new BlamWorldObject_Tag(tag, world_state);
55 
56  if (object->ValidateTagData())
57  {
58  world_state->AddObject(object);
59  object->SetPosition(Blam::Rendering::GetMousePosition3D());
60  Blam::Logger::LogEventForce("placed '" + tag_path + "'");
61  }
62  else
63  {
64  delete object;
66 
67  if (tag_class)
68  {
69  Blam::Logger::LogEventForce("don't know how to place tags of type '" + tag_class->class_name_long + "'", BlamLogLevel::Error);
70  }
71  else
72  {
73  Blam::Logger::LogEventForce("don't know how to place tags of type '" + tag->tag_class + "'", BlamLogLevel::Error);
74  Blam::Logger::LogEventForce("tried to lookup tag class with short name '" + tag->tag_class + "', but result was nullptr", BlamLogLevel::Error);
75  }
76  }
77 
78  return BlamResult::Success_OK;
79  }
80  };
81 }
Blam::World::GetWorldState
BLAM BlamWorldState * GetWorldState()
Retrieves the current world state.
Definition: world.cpp:40
object
Definition: object.h:25
BlamWorldState::AddObject
void AddObject(BlamWorldObject *object)
Definition: BlamWorldState.cpp:85
BlamConsoleCommand::description
std::string description
An optional description of the command. Shown when using the classify command.
Definition: console.h:36
Blam::Rendering::GetMousePosition3D
BLAM BlamVector3 GetMousePosition3D()
Definition: ogre.cpp:599
logger.h
BlamConsoleCommand
Class used to represent a console command.
Definition: console.h:33
Blam::Content::Tags::GetTagClass
BLAM_EXT_API BlamTagClass * GetTagClass(std::string id)
Retrieves a tag class that matches the given string.
Definition: tagclass.cpp:66
Blam::Resources::Console::DropCommand::DropCommand
DropCommand()
Definition: drop.hpp:20
rendering.h
BlamWorldObject_Tag
Class representing a tag-based world object.
Definition: world_objects.h:223
Blam::Resources::Console::DropCommand
Class for the drop command.
Definition: drop.hpp:17
BlamTagClass::class_name_long
std::string class_name_long
The longer class name. Typically shown alongside short name for user-friendliness.
Definition: tags.h:196
BlamConsoleCommand::name
std::string name
The name of the console command.
Definition: console.h:35
Blam::Resources::Console::DropCommand::Execute
BlamResult Execute(std::vector< std::string > arguments)
Called upon command execution.
Definition: drop.hpp:29
Blam::Content::Tags::GetTagData
BLAM BlamTagData * GetTagData(std::string tag_path)
Retrieves information for a given tag.
Definition: tags.cpp:80
BlamConsoleCommand::type
BlamCommandType type
The type of command this is. See #Blam::Resources::Console::BlamCommandType for more information.
Definition: console.h:40
Blam::Logger::LogEventForce
BLAM void LogEventForce(std::string message)
Forcibly logs a message to the log and/or console.
Definition: aliases.cpp:262
tagclass.h
tags.h
BlamConsoleCommand::aliases
std::vector< std::string > aliases
A list of aliases for the command. Executing any of these instead of the command name will behave the...
Definition: console.h:38
BlamTagData
Class used to contain and access tag data.
Definition: tags.h:124
Blam::Resources::Console
Namespace for things relating to the debug console.
Definition: abort.hpp:5
BlamWorldState
Class representing a world state.
Definition: world_objects.h:540
BlamTagClass
Class representing a tag class.
Definition: tags.h:193
BlamCommandType::Builtin
@ Builtin
A command that is hard-coded into the engine.
BlamTagData::tag_class
std::string tag_class
The tag's short class name.
Definition: tags.h:144