Ejemplo n.º 1
0
Victory::Victory(float xPosition, float yPosition) : 
	WorldObject(AB_VICTORY, xPosition, yPosition),
	restartButton(Button(xPosition + AB_VICTORY_TEXT_OFFSET_X,
	yPosition + AB_VICTORY_TEXT_OFFSET_Y)),
	victoryText(HUDElement(xPosition + AB_VICTORY_MSG1_X, yPosition + AB_VICTORY_MSG1_Y)),
	teamText(HUDElement(xPosition + AB_VICTORY_MSG2_X, yPosition + AB_VICTORY_MSG2_Y)) {
		auto armyengine = ArmyEngine::getInstance();
		auto componentFactory = armyengine->getComponentFactory();
		//setup the shape component to represent the border of the 
		// victory screen
		auto shapeComponent = componentFactory.createShapeComponent(AB_VICTORY_SHAPE);
		this->getEntity()->addComponent(shapeComponent);

		//shape attributes
		shapeComponent->setAttribute_int(ATTRIBUTE_ENABLE, 0);
		shapeComponent->setAttribute_string(ATTRIBUTE_SHAPE_TYPE, SHAPETYPE_RECTANGLE);
		shapeComponent->setAttribute_float(ATTRIBUTE_WIDTH, 400.0);
		shapeComponent->setAttribute_float(ATTRIBUTE_HEIGHT, 400.0);
		COLOR_FILL_BLACK(shapeComponent);
		COLOR_OUTLINE_GREEN(shapeComponent);
		shapeComponent->update();

		//button parameters
		restartButton.hide();
		restartButton.setButtonText("Restart");
		restartButton.setSize(200, 100);
		restartButton.setButtonCallback((functionEventTemplate) [] (int ID, int eventIndex) {
			auto entityManager = EntityManager::getInstance();
			auto entity = entityManager->getEntityById(ID);
			sf::Event theEvent = *EventManager::getInstance()->getEvents()[eventIndex];
			auto mouseButton = theEvent.mouseButton.button;
			if (mouseButton == sf::Mouse::Button::Left) {
				auto world = World::getInstance();
				world->menu.hide();
				world->victory.hide();
				world->generateWorld();
				EntityManager::getInstance()->sortEntityList();

#ifdef LOGGING
				std::cout << "Restart Button Pressed" << std::endl;
#endif //LOGGING
			}
			return 0;
		});

		//set the Z-buffer of the text to show
		auto textComponent = restartButton.buttonHUDElement.getEntity()->getComponentByName(AB_HUD_TEXT);
		textComponent->setAttribute_float(ATTRIBUTE_ZBUFFER, 16.0);

		//change the text size for the restart button
		restartButton.buttonHUDElement.setTextSize(50);

		//text parameters
		victoryText.setSuccessString(AB_VICTORY_MSG1);
		victoryText.hide();
		teamText.setSuccessString("");
		teamText.hide();

}
Ejemplo n.º 2
0
int Utils::getActiveWeaponId(Player p) {
	DWORD activeWeapon = *(int*)(p.base + Offsets::activeWeapon);
	int index = activeWeapon & 0xFFF;
	index -= 1;
	Player weapon = getEntityById(index);

	if (weapon.base == NULL)
		return 0;

	int weaponId = *(int*)(weapon.base + Offsets::weaponId);

	return weaponId;
}
Ejemplo n.º 3
0
int main() {
	//preallocate the instance
	auto entityManager = EntityManager::getInstance();

	//lets create an entity to place in entity manager
	auto entity = std::shared_ptr<AbstractEntity> (new MainEntity("Drone", 0));
	entity->addComponent(std::shared_ptr<AbstractComponent> (new HealthComponent("Drone Health")));
	entity->addComponent(std::shared_ptr<AbstractComponent> (new HealthComponent("Drone Armor")));
	entityManager->addEntity(entity);

	entity = std::shared_ptr<AbstractEntity> (new MainEntity("Drone", 1));
	entity->addComponent(std::shared_ptr<AbstractComponent> (new HealthComponent("Drone Health")));
	entity->addComponent(std::shared_ptr<AbstractComponent> (new HealthComponent("Drone Armor")));
	entityManager->addEntity(entity);

	entity = std::shared_ptr<AbstractEntity> (new MainEntity("Base", 2));
	entity->addComponent(std::shared_ptr<AbstractComponent> (new HealthComponent("Drone Health")));
	entity->addComponent(std::shared_ptr<AbstractComponent> (new HealthComponent("Drone Armor")));
	entityManager->addEntity(entity);

	//getting entity by ID
	auto entity_0 = entityManager->getEntityById(0);
	std::cout << "Entity ID 0: " << entity_0->getName() << std::endl;

	//getting entity by Name
	auto entityList = entityManager->getEntitiesByName("Drone");
	std::cout << "list: entities by name 'Drone'" << std::endl;
	for (auto entity : entityList) {
		std::cout << "Name: " << entity->getName();
		std::cout << "( " << entity->getID() << " )" << std::endl;
	}

	//getting entity by Family
	entityList = entityManager->getEntitiesByFamily("Main");
	std::cout << "list: entities by family 'Main'" << std::endl;
	for (auto entity : entityList) {
		std::cout << "Name: " << entity->getName();
		std::cout << "( " << entity->getID() << " )" << std::endl;
	}

	//get all entities in an STL vector
	auto entityVec = entityManager->getAllEntities();
	std::cout << "list: all entities" << std::endl;
	for (auto entity : entityList) {
		std::cout << "Name: " << entity->getName();
		std::cout << "( " << entity->getID() << " )" << std::endl;
	}

	return 0;
}
Ejemplo n.º 4
0
int Utils::getClipCount(Player p) {
	if (!p.base)
		return -1;

	DWORD activeWeapon = *(int*)(p.base + Offsets::activeWeapon);

	if (!activeWeapon)
		return -1;

	int index = activeWeapon & 0xFFF;
	index -= 1;
	Player weapon = getEntityById(index);

	if (!weapon.base)
		return -1;

	int clip = *(int*)(weapon.base + Offsets::clip);
	
	if (clip >= 0 && clip <= 150)
		return clip;

	return -1;
}
Ejemplo n.º 5
0
Button::Button(float xPosition, float yPosition) :
	WorldObject(AB_BUTTON, xPosition, yPosition),
	buttonHUDElement(HUDElement(xPosition, yPosition, BUTTON_FONT_SIZE)),
	buttonText("Test message") {
		this->setButtonText(buttonText);

		//change the Z-Buffer of our button to display over the
		//  the button
		auto textComponent_HUD = this->buttonHUDElement.getEntity()->getComponentByName(AB_HUD_TEXT);
		textComponent_HUD->setAttribute_float(ATTRIBUTE_ZBUFFER, 4.0);
		textComponent_HUD->update();

		auto armyEngine = ArmyEngine::getInstance();

		auto entity = this->getEntity();

		auto componentFactory = armyEngine->getComponentFactory();
		auto shapeComponent = componentFactory.createShapeComponent(AB_BUTTON_SHAPE);
		entity->addComponent(shapeComponent);

		//shape attributes
		shapeComponent->setAttribute_int(ATTRIBUTE_ENABLE, 1);
		shapeComponent->setAttribute_string(ATTRIBUTE_SHAPE_TYPE, SHAPETYPE_RECTANGLE);
		shapeComponent->setAttribute_float(ATTRIBUTE_WIDTH, BUTTON_DEFAULT_WIDTH);
		shapeComponent->setAttribute_float(ATTRIBUTE_HEIGHT, BUTTON_DEFAULT_HEIGHT);
		shapeComponent->setAttribute_int(ATTRIBUTE_OUTLINE_COLOR_RED, 0);
		shapeComponent->setAttribute_int(ATTRIBUTE_OUTLINE_COLOR_BLUE, 255);
		shapeComponent->setAttribute_int(ATTRIBUTE_OUTLINE_COLOR_GREEN, 0);
		shapeComponent->setAttribute_int(ATTRIBUTE_OUTLINE_COLOR_ALPHA, 255);
		shapeComponent->setAttribute_float(ATTRIBUTE_OUTLINE_THICKNESS, BUTTON_DEFAULT_OUTLINE);
		shapeComponent->setAttribute_int(ATTRIBUTE_FILL_COLOR_RED, 0);
		shapeComponent->setAttribute_int(ATTRIBUTE_FILL_COLOR_BLUE, 128);
		shapeComponent->setAttribute_int(ATTRIBUTE_FILL_COLOR_GREEN, 128);
		shapeComponent->setAttribute_int(ATTRIBUTE_FILL_COLOR_ALPHA, 255);
		shapeComponent->setAttribute_float(ATTRIBUTE_OFFSET_X, 0.0);
		shapeComponent->setAttribute_float(ATTRIBUTE_OFFSET_Y, 0.0);
		shapeComponent->setAttribute_float(ATTRIBUTE_ZBUFFER, 12.0);
		shapeComponent->update();

		//collision component for mouse over focusing
		auto collisionComponent = componentFactory.createCollisionComponent(AB_BUTTON_COLLISION);
		entity->addComponent(collisionComponent);

		collisionComponent->setAttribute_int(ATTRIBUTE_ENABLE, 1);
		collisionComponent->setAttribute_string(ATTRIBUTE_COLLISION_BOUND_TYPE, COLLISION_BOUND_RECTANGLE);
		collisionComponent->setAttribute_float(ATTRIBUTE_WIDTH, BUTTON_DEFAULT_WIDTH);
		collisionComponent->setAttribute_float(ATTRIBUTE_HEIGHT, BUTTON_DEFAULT_HEIGHT);
		collisionComponent->setAttribute_string(ATTRIBUTE_COLLISION_TAG, AB_BUTTON);

		armyEngine->addCollisionCallback(collisionTagTuple(AB_BUTTON, AB_MOUSE),
			(functionCollisionTemplate) [] (collisionParamTuple paramTuple) {
				int entityID1, entityID2;
				std::string compName1, compName2;
				bool bRegistered;
				std::tie(entityID1, compName1, entityID2, compName2, bRegistered) = paramTuple;

				//grab the button entity
				auto buttonEntity = EntityManager::getInstance()->getEntityById(entityID1);

				auto shapeComponent = buttonEntity->getComponentByName(AB_BUTTON_SHAPE);
				auto inputComponent = buttonEntity->getComponentByName(AB_BUTTON_PRESSED);


				if (bRegistered) {
					//change the shape component to have new outline
					shapeComponent->setAttribute_int(ATTRIBUTE_FILL_COLOR_RED, 128);
					shapeComponent->setAttribute_int(ATTRIBUTE_FILL_COLOR_GREEN, 0);
					shapeComponent->setAttribute_int(ATTRIBUTE_FILL_COLOR_BLUE, 0);
					//enable input component
					inputComponent->setAttribute_int(ATTRIBUTE_ENABLE, 1);

				}
				else {
					shapeComponent->setAttribute_int(ATTRIBUTE_FILL_COLOR_RED, 0);
					shapeComponent->setAttribute_int(ATTRIBUTE_FILL_COLOR_GREEN, 128);
					shapeComponent->setAttribute_int(ATTRIBUTE_FILL_COLOR_BLUE, 128);
					//disable input component
					inputComponent->setAttribute_int(ATTRIBUTE_ENABLE, 0);

				}
				shapeComponent->update();

				return 0;
		});

		auto inputComponent_mousePressed = componentFactory.createInputComponent(AB_BUTTON_PRESSED);
		entity->addComponent(inputComponent_mousePressed);
		inputComponent_mousePressed->setAttribute_int(ATTRIBUTE_ENABLE, 0);
		inputComponent_mousePressed->setAttribute_string(ATTRIBUTE_INPUT_TYPE, INPUT_MOUSE_PRESSED);
		inputComponent_mousePressed->setAttribute_string(ATTRIBUTE_CALLBACK, AB_BUTTON_PRESSED);

		armyEngine->addInputCallback(AB_BUTTON_PRESSED, (functionEventTemplate) [] (int ID, int eventIndex) {
			auto entityManager = EntityManager::getInstance();
			auto entity = entityManager->getEntityById(ID);
			sf::Event theEvent = *EventManager::getInstance()->getEvents()[eventIndex];
			auto mouseButton = theEvent.mouseButton.button;
			if (mouseButton == sf::Mouse::Button::Left) {
				std::cout << "ERROR: callback hasn't been set" << std::endl;
				exit(0);
			}
			return 0;
		});

}