void ComponentInventory::viewing() { //Si no ve obstacules se puede construir, si los ve no MapManager *aiAux = GameManager::getInstance()->getMapManager(); if(obstacles.empty()) { canBuild = true; } else { canBuild = false; } GraphicsEngine* graphicsEngine = GameManager::getInstance()->getGraphicsEngine(); node->setPosition(graphicsEngine->getMousePositionOnGround()); parent->position = graphicsEngine->getMousePositionOnGround(); if(aiAux->checkMap(aiAux->getFrame(parent->position).y,aiAux->getFrame(parent->position).x) == 'W' || parent->position.getSqrDistanceFrom(Vector2d(900,0)) < 122500) { canBuild = false; } //Si tiene parte estatica se pinta if(nodeStatic != NULL) { nodeStatic->setPosition(graphicsEngine->getMousePositionOnGround()); } //Mira a ver si se pulsa algun boton para destruir el actual inventory y que no puedan haber muchos a la vez EventManager *eventManager = GameManager::getInstance()->getEventManager(); if(eventManager->isKeyDown(KEY::KEY_KEY_1) || eventManager->isKeyDown(KEY::KEY_KEY_2) || eventManager->isKeyDown(KEY::KEY_KEY_3) || eventManager->isKeyDown(KEY::KEY_KEY_4) || eventManager->isKeyDown(KEY::KEY_KEY_5) || eventManager->isKeyDown(KEY::KEY_KEY_6) || eventManager->isKeyDown(KEY::KEY_KEY_7) || eventManager->isKeyDown(KEY::KEY_KEY_8) || eventManager->mouseState.rightButtonDown) { parent->kill(); } //Si se puede construir se le pone un color sino se le pone otro if(canBuild) { color = DebugColor::GREEN; } else { color = DebugColor::RED; } node->setColor(color); if(nodeStatic != NULL) { nodeStatic->setColor(color); } //Si pulsas el raton se mira que no estes encima del inventario y si se puede construir manda //un mensaje al jugador para ver si tiene dinero suficiente y se destruye el objeto if(GameManager::getInstance()->getEventManager()->mouseState.leftButtonDown) { GameManager::getInstance()->getEventManager()->mouseState.leftButtonDown = false; if(canBuild) { Message message; message.type = Message::TRY_BUY; message.value = price; message.gameObject = parent; GameManager::getInstance()->getGameObjectManager()->getMainPlayer()->broadcastMessage(message); } else { GameManager::getInstance()->getGraphicsEngine()->setWarningMessage(GameConstants::CANT_BUILD_MESSAGE); } } }
void ComponentInventory::create() { GameObject* element = NULL; MapManager *aiAux = GameManager::getInstance()->getMapManager(); Vector2d pos = aiAux->getFrame(parent->position); pos = Vector2d(pos.y,pos.x); if(aiAux->checkMap(pos.x,pos.y) != 'W') { switch (parent->getName()) { case GameObject::N_INVENTORY_TURRET_PROJECTILE: //Crea un objeto para empezar a construirse if(GameManager::getInstance()->getNetworkEngine()->isStarted()) { GameManager::getInstance()->getNetworkEngine()->messageCreateSkill(GameObject::N_BUILDING_TURRET_PROJECTILE,parent->position); } else { element = GameManager::getInstance()->getGameObjectManager()->createBuildingTurret(parent->position); } delete node; node = NULL; delete nodeStatic; nodeStatic = NULL; break; case GameObject::N_INVENTORY_MINE: //Crea un objeto para empezar a construirse if(GameManager::getInstance()->getNetworkEngine()->isStarted()) { GameManager::getInstance()->getNetworkEngine()->messageCreateSkill(GameObject::N_BUILDING_MINE,parent->position); } else { element = GameManager::getInstance()->getGameObjectManager()->createBuildingMine(parent->position); } break; case GameObject::N_MINE2: //Crea un objeto para empezar a construirse if(GameManager::getInstance()->getNetworkEngine()->isStarted()) { GameManager::getInstance()->getNetworkEngine()->messageCreateSkill(GameObject::N_MINE2,parent->position); } else { element = GameManager::getInstance()->getGameObjectManager()->createBuildingMine2(parent->position); } break; case GameObject::N_MINE3: //Crea un objeto para empezar a construirse if(GameManager::getInstance()->getNetworkEngine()->isStarted()) { GameManager::getInstance()->getNetworkEngine()->messageCreateSkill(GameObject::N_MINE3,parent->position); } else { element = GameManager::getInstance()->getGameObjectManager()->createBuildingMine3(parent->position); } break; case GameObject::N_INVENTORY_TURRET_BULLET: //Crea un objeto para empezar a construirse if(GameManager::getInstance()->getNetworkEngine()->isStarted()) { GameManager::getInstance()->getNetworkEngine()->messageCreateSkill(GameObject::N_BUILDING_TURRET_BULLET,parent->position); } else { element = GameManager::getInstance()->getGameObjectManager()->createBuildingTurret2(parent->position); } delete node; node = NULL; delete nodeStatic; nodeStatic = NULL; break; case GameObject::N_INVENTORY_TURRET_2_CANON: //Crea un objeto para empezar a construirse if(GameManager::getInstance()->getNetworkEngine()->isStarted()) { GameManager::getInstance()->getNetworkEngine()->messageCreateSkill(GameObject::N_BUILDING_TURRET_2_CANON,parent->position); } else { element = GameManager::getInstance()->getGameObjectManager()->createBuildingTurret2Canon(parent->position); } delete node; node = NULL; delete nodeStatic; nodeStatic = NULL; break; case GameObject::N_INVENTORY_TURRET_BIG_CANON: //Crea un objeto para empezar a construirse if(GameManager::getInstance()->getNetworkEngine()->isStarted()) { GameManager::getInstance()->getNetworkEngine()->messageCreateSkill(GameObject::N_BUILDING_TURRET_BIG_CANON,parent->position); } else { element = GameManager::getInstance()->getGameObjectManager()->createBuildingTurretBigCanon(parent->position); } delete node; node = NULL; delete nodeStatic; nodeStatic = NULL; break; case GameObject::N_INVENTORY_TURRET_1_CANON: //Crea un objeto para empezar a construirse if(GameManager::getInstance()->getNetworkEngine()->isStarted()) { GameManager::getInstance()->getNetworkEngine()->messageCreateSkill(GameObject::N_BUILDING_TURRET_1_CANON,parent->position); } else { element = GameManager::getInstance()->getGameObjectManager()->createBuildingTurret1Canon(parent->position); } delete node; node = NULL; delete nodeStatic; nodeStatic = NULL; break; case GameObject::N_INVENTORY_TURRET_GUN: //Crea un objeto para empezar a construirse if(GameManager::getInstance()->getNetworkEngine()->isStarted()) { GameManager::getInstance()->getNetworkEngine()->messageCreateSkill(GameObject::N_BUILDING_TURRET_GUN,parent->position); } else { element = GameManager::getInstance()->getGameObjectManager()->createBuildingTurretGun(parent->position); } delete node; node = NULL; delete nodeStatic; nodeStatic = NULL; break; } if(element != NULL) { element->setPosition(parent->position.x,parent->position.y); element->rotation = parent->rotation; } } parent->kill(); }