Пример #1
0
int main(int argc, char* argv[]) {

    clock_t tStart = clock();

    Grid* grid = Utils::fileToGrid(argv[1]);
    PathFinder pathFinder = PathFinder(grid);

    pathFinder.AStar(grid->getStartPosition(), grid->getGoalPosition());
    pathFinder.getInstructions();

    printf("Execution time: %.5f seconds\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);

    return 0;
}
Пример #2
0
GameState::GameState(StateStack& stateStack, Context context, States::ID id)
	:
	State(stateStack, context, id),
	mMap(context.textures, context.fonts, &mobManager, &m_light_manager, mMutex),
	mapSize(mMap.size.x, mMap.size.y),
	mView(sf::Rect<float>(0, 0, context.window->getSize().x, context.window->getSize().y)),
	mNormalRender(),
	mDiffuseRender(),
	mNormalTextures(),
	mShader(),
	mobManager(),
	mPlayer(context.textures, context.fonts, &mobManager.mobs, &m_projectile_manager, &mMap.tiles, &m_light_manager),
	mPlayerController(&mPlayer, &pathFinder, &mMap, &mobManager),
	mParticleSystem(),
	mLoadingThread(&gen::Map::Gen, &mMap),
	mFirstLoad(true),
	m_lost(false),
	m_win(false)
{
	mLoadingSprite.setTexture(*context.textures->getTexture(Textures::LoadingScreen));

	pathFinder = PathFinder(&mMap.tiles, mMap.size);
	mobManager = MobManager(*context.textures, &mMap.tiles, &pathFinder, &m_projectile_manager.m_spells, &m_projectile_manager.m_arrows);
	m_projectile_manager = ProjectileManager(&mobManager, &mParticleSystem);
	mobManager.ptr_spells = &m_projectile_manager.m_spells;
	mobManager.ptr_arrows = &m_projectile_manager.m_arrows;
	mPlayer.ptr_tree = &mobManager.m_tree;
	mPlayer.setPosition(-1280, -720);

	mCurrentType = gen::Cave;
	mMap.type = mCurrentType;
	mCurrentMapTexture = Textures::Cave_Sheet;
	mView.zoom(1.f);
	mView.setCenter(-mView.getSize().x, -mView.getSize().y);

	sf::Vector2u size = context.window->getSize();
	mNormalRender.create(size.x, size.y);
	mDiffuseRender.create(size.x, size.y);

	mShader.loadFromFile("resources/shaders/shader.frag", sf::Shader::Fragment);
	loadNormals();

	context.mouse->setState(gui::Mouse::Attack);

	mShader.setParameter("texture", sf::Shader::CurrentTexture);
	mShader.setParameter("normal", mNormalRender.getTexture());
	mShader.setParameter("Resolution", getContext().window->getSize().x,  getContext().window->getSize().y);
	mShader.setParameter("AmbientColor", .1f, .1f, .1f, 0.f);
}
Пример #3
0
    static bool HandleMmapTestArea(ChatHandler* handler, const char* args)
    {
        float radius = 40.0f;
        handler->ExtractFloat((char**)&args, radius);

        CellPair pair(Strawberry::ComputeCellPair(handler->GetSession()->GetPlayer()->GetPositionX(), handler->GetSession()->GetPlayer()->GetPositionY()));
        Cell cell(pair);
        cell.SetNoCreate();

        std::list<Creature*> creatureList;
        Creature* const creature = handler->getSelectedCreature();

        Strawberry::AnyUnitInObjectRangeCheck go_check(handler->GetSession()->GetPlayer(), radius);
        Strawberry::CreatureListSearcher<Strawberry::AnyUnitInObjectRangeCheck> go_search(creature, creatureList, go_check);
        TypeContainerVisitor<Strawberry::CreatureListSearcher<Strawberry::AnyUnitInObjectRangeCheck>, GridTypeMapContainer> go_visit(go_search);

        // Get Creatures
        cell.Visit(pair, go_visit, *(handler->GetSession()->GetPlayer()->GetMap()), *(handler->GetSession()->GetPlayer()), radius);

        if (!creatureList.empty())
        {
            handler->PSendSysMessage("Found %i Creatures.", creatureList.size());

            uint32 paths = 0;
            uint32 uStartTime = getMSTime();

            float gx,gy,gz;
            handler->GetSession()->GetPlayer()->GetPosition(gx,gy,gz);
            for (std::list<Creature*>::iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr)
            {
                PathFinder((*itr), gx, gy, gz);
                ++paths;
            }

            uint32 uPathLoadTime = getMSTimeDiff(uStartTime, getMSTime());
            handler->PSendSysMessage("Generated %i paths in %i ms", paths, uPathLoadTime);
        }
        else
            handler->PSendSysMessage("No creatures in %f yard range.", radius);

        return true;
    }