Example #1
0
void EditorLevelChoice::ProcessEvents(SDL_Event const & event)
{
    if (event.type == SDL_QUIT) {
        SetDone();
    }

    if (event.type == SDL_KEYDOWN) {
        SDLKey key = event.key.keysym.sym;
        if (key == SDLK_ESCAPE) {
            SetNextAppState(AppStatePtr(new MainMenu));
            SetDone();
        } else if (key == SDLK_LEFT) {
        } else if (key == SDLK_RIGHT) {
        } else if (key == SDLK_UP) {
            m_level_list->SelectPrev();
        } else if (key == SDLK_DOWN) {
            m_level_list->SelectNext();
        } else if (key == SDLK_RETURN && m_level_list->HasSelection()) {
            if (m_level_list->SelectedId() == 0) {
                /*
                 * TODO: Before we open the editor, we should ask for level's name.
                 */
                std::string level_name = "new";
                EditLevel(level_name);
            } else {
                EditLevel(m_levels.at(m_level_list->SelectedId()));
            }
        }
    }
}
Example #2
0
void EditorLevelChoice::EditLevel(std::string level_name)
{
    std::cout << "Editing level: " << level_name << std::endl;
    LevelPtr level(new Level);
    level->LoadFromFile("data/" + level_name + ".lvl");
    level->LoadEntitiesFromFile("data/" + level_name + ".ents");
    AppStatePtr editorState(new Editor(level));
    SetNextAppState(editorState);
    SetDone();
}
void TimepixProducer::OnTerminate()
{	
	DEVID devId = pixelmanCtrl->mpxDevId[pixelmanCtrl->mpxCurrSel].deviceId;
	pixelmanCtrl->mpxCtrlAbortOperation(devId);
	pixelmanCtrl->m_commHistRunCtrl.AddString(_T("Terminated (I'll be back)"));
	//std::cout << "Terminate (press enter)" << std::endl;
    SetDone( true );
	PushCommand( TERMINATE );
	
}
void HistoryEventRotateCharacter::Run()
{
	Animation* animationDefault = CharacterAnimation::getInstance()->getAnimationDefault(_CharacterToRotate->getCurrentPlayerInfo(), _DirectionToRotate);
	_CharacterToRotate->stopAllActions();
	_CharacterToRotate->setAnchorPoint(Vec2(0.5f, 0.13f));
	_CharacterToRotate->runAction(Animate::create(animationDefault));
	_CharacterToRotate->setCurrentDirectionToShow(_DirectionToRotate);
	_CharacterToRotate->setAttackPowerToDisplay(_AttackPowerToShow);

	SetDone(true);
}
Example #5
0
void AudioRecorder::Stop()
{
	SetDone(true);

	StopCapture();

	if (m_hThreadCapture != NULL)
	{
		CloseHandle(m_hThreadCapture);
		m_hThreadCapture = NULL;
	}
}
void* muThread_URLGetter::Entry()
{
	try
	{
		// Get info server url
		GetInfoServerURL();

		// See which versions are available
		DownloadVersionInfo();

		// Finished
		SetDone(Updater_Done, wxT("Finished searching for latest version."));
	}
	catch( const muException& e )
	{
		SetDone(Updater_Fail, wxT("Exception: %s"), e.What().c_str());
	}
	catch(...)
	{
		SetDone(Updater_Fail, wxT("Unknown Exception!"));
	}
	return NULL;
}
Example #7
0
	virtual status_t Execute()
	{
		if (!fChannel) {
			SetDone(true);
			return B_NO_INIT;
		}

		RequestChannel requestChannel(fChannel);

		// create the server info request
		ServerInfoRequest request;
		request.serverInfo = fServerInfo;

		// send the request
		status_t error = requestChannel.SendRequest(&request);
		if (error != B_OK) {
			ERROR("ServerInfoSender: ERROR: Failed to send request: %s\n",
				strerror(error));
		}

		SetDone(true);
		return B_OK;
	}
void S3FileRequest::CompletionFailure(const char* failureStr)
{
    if (IsDone())
    {
        // We've already failed/ended, probably we're getting an outstanding async request result back which most likely failed
        // due to our canceling
        return;
    }
    if (failureStr)
    { 
        m_failureString = failureStr;
    }
    SetDone();
}
void S3FileRequest::Cancel()
{
    if (IsDone())
    {
        // Nothing to do
        return;
    }
    
    // Do the implementation specific action necessary for cancelling
    DoCancelAction();

    // TODO figure out if we need to notify S3 about this or just bail on our end
    m_cancelled = true;

    SetDone();
}
Example #10
0
	void StateGameMode::InitState(ALLEGRO_DISPLAY *display, Settings *settings, Map *currentMap, ImageLoader *imageLoader){
		
		SetImageLoader(imageLoader);
		SetDisplay(display);
		SetSettings(settings);
		SetId(EnumDLL::STATES::EDITORMODE);
		SetEventQueue(NULL);
		SetRedraw(true);
		SetDone(false);
		SetRunning(true);
		SetKeyPressReturnVal(EnumDLL::STATES::DEFAULT);
		SetFont(al_load_font("arial.ttf", 20, 0));
		SetTimer(al_create_timer(1.0/60));
		SetEventQueue(al_create_event_queue());
		SetStateDirection(EnumDLL::STATEDIRECTION::NA);


		al_register_event_source(GetEventQueue(), al_get_keyboard_event_source());
		al_register_event_source(GetEventQueue(), al_get_mouse_event_source());
		al_register_event_source(GetEventQueue(), al_get_display_event_source(GetDisplay()));
		al_register_event_source(GetEventQueue(), al_get_timer_event_source(GetTimer()));
		SetMouseCursorPos(0,0);
		SetRightMousePos(0,0);
		SetRightMouseDown(false);
		SetLeftMouseDown(false);
		SetPlayerSelected(false);
		SetMap(currentMap);


		
		player1_ = new Player(GetSettings(),GetMap());
		player1_->SetGravityY(-9.8);

		for(int i = 0; i < GetImageLoader()->GetImageSetDictionary().size(); i++)
		{
			if(GetImageLoader()->GetImageSetDictionary()[i]->GetImageSetId() == EnumDLL::IMAGESETS::PLAYERIMAGESET)
			{
				player1_->SetObjectImageColor(GetImageLoader()->GetImageSetDictionary()[i]->GetImageDictionary()[0]);
			}
		}



		SetChosenColor(al_map_rgb_f(1,1,1));
		al_start_timer(GetTimer());
	}
Example #11
0
void Menu::Input()
{
	SDL_Event event;

	while( SDL_PollEvent( &event ) )
	{
//////////// Mouse
		VerifyMouseOverButtons(event.button.x, event.button.y);

		switch( event.type ){
			case SDL_MOUSEBUTTONDOWN:
				switch( event.button.state ){
					case SDL_PRESSED:
						VerifyPressedButtons(event.button.x, event.button.y);
						break;
					default:
						break;
				}
				break;
//////////// Teclado
			case SDL_KEYDOWN:
				switch( event.key.keysym.sym ){
					case SDLK_1:
						ListManager::GetListManager()->GetMySfxList()->GetNode(SWORDSFX)->GetNodeData()->PlaySfx();
						break;
					case SDLK_2:
						if( Mix_PlayingMusic() == 1 && Mix_PausedMusic() == 0 )
							ListManager::GetListManager()->GetMyMusicList()->GetNode(MENUMUSIC)->GetNodeData()->PauseMusic();
						else
							ListManager::GetListManager()->GetMyMusicList()->GetNode(MENUMUSIC)->GetNodeData()->PlayMusic();
						break;
					default:
						break;
				}
				break;
//////////// Botão na janela
			case SDL_QUIT:
				SetDone(1);
				break;
		}
	}
}
Example #12
0
void Creditos::Input()
{
    SDL_Event event;

    while( SDL_PollEvent( &event ) )
    {
        switch( event.type ) {
        case SDL_MOUSEBUTTONDOWN:
            switch( event.button.state ) {
            case SDL_PRESSED:
                VerifyButtons(event.button.x, event.button.y);
                break;
            default:
                break;
            }
            break;
        case SDL_QUIT:
            SetDone(1);
            break;
        }
    }
}
Example #13
0
bool AudioRecorder::Start()
{
	Clear();

	if (!StartCapture())
		return false;

	SetDone(false);

	m_hThreadCapture = (HANDLE)::_beginthreadex(NULL, 0, &CaptureTheadProc, this, 0, NULL);
	if (m_hThreadCapture == NULL)
		return false;

	//HANDLE arWaits[1] = { m_hThreadCapture };
	//DWORD dwWaitResult = WaitForMultipleObjects(sizeof(arWaits) / sizeof(arWaits[0]), arWaits, FALSE, INFINITE);
	//if (dwWaitResult != WAIT_OBJECT_0)
	//{
	//	StopRecord();
	//	return false;
	//}

	return true;
}
Example #14
0
	void StateEditorMode::InitState(ALLEGRO_DISPLAY *display, Settings *settings, Map *currentMap, ImageLoader *imageLoader){
		
		SetImageLoader(imageLoader);
		SetDisplay(display);
		SetSettings(settings);
		SetId(EnumDLL::STATES::EDITORMODE);
		SetEventQueue(NULL);
		SetRedraw(true);
		SetDone(false);
		SetRunning(true);
		SetKeyPressReturnVal(EnumDLL::STATES::DEFAULT);
		SetFont(al_load_font("arial.ttf", 20, 0));
		SetTimer(al_create_timer(1.0/60));
		SetEventQueue(al_create_event_queue());
		SetStateDirection(EnumDLL::STATEDIRECTION::NA);


		al_register_event_source(GetEventQueue(), al_get_keyboard_event_source());
		al_register_event_source(GetEventQueue(), al_get_mouse_event_source());
		al_register_event_source(GetEventQueue(), al_get_display_event_source(GetDisplay()));
		al_register_event_source(GetEventQueue(), al_get_timer_event_source(GetTimer()));
		SetMouseCursorPos(0,0);
		SetRightMousePos(0,0);
		SetRightMouseDown(false);
		SetLeftMouseDown(false);
		SetPlayerSelected(false);
		SetMap(currentMap);



		editorOverLayController_ = new EditorOverLayController(settings, imageLoader);



		SetChosenColor(al_map_rgb_f(1,1,1));
		al_start_timer(GetTimer());
	}
Example #15
0
Creditos::Creditos():
    Scene(STATE_CREDITS)
{
    SetDone(0);
}
Example #16
0
//
// Input
//
void Game::Input()
{
	static int mouseMovX, pickupId;
	static float movSpeed;
	static bool wasPickup = false, needAKey = false;
	float LX, LY;
	static Uint32 lNeedKeyMsg = SDL_GetTicks();
	int i;

	movSpeed = 2.0f;

	LX = framework->GetAxisAWPositive(0, JOY_AXIS_LX);
	LY = framework->GetAxisAWPositive(0, JOY_AXIS_LY);

	if(framework->GetJButton(0, JOY_BTTN_B))
	{
		if(framework->JButtonState(0, JOY_BTTN_B)==1)
			player->SetWeapon(0);
	}

	if(framework->KeyPressed(SDLK_1, true))
		player->SetWeapon(1);
	if(framework->KeyPressed(SDLK_2, true))
		player->SetWeapon(2);

	if(framework->GetJButton(0, JOY_BTTN_BACK)||framework->KeyPressed(SDLK_ESCAPE))
	{
		if(framework->JButtonState(0, JOY_BTTN_BACK)==1||framework->KeyPressed(SDLK_ESCAPE))
			showExitConfirm = !showExitConfirm;
		else if(framework->JButtonState(0, JOY_BTTN_BACK)==0)
			showExitConfirm = false;
	}

	if(showExitConfirm)
	{
		if(framework->KeyPressed(SDLK_y)||framework->GetJButton(0, JOY_BTTN_Y))
			SetDone(true);
		else if(framework->KeyPressed(SDLK_n)||framework->GetJButton(0, JOY_BTTN_B))
			showExitConfirm = false;

		return;
	}

	if(framework->KeyPressed(SDLK_F1, true))
	{
		int i;
		char shotFilename[MAX_STR_LENGTH];
		for(i=0; i<MAX_SCREENSHOTS; i++)
		{
			sprintf(shotFilename, "screenshots/shot%d.bmp", i+1);

			if(!framework->FileExists(shotFilename))
			{
				SDL_SaveBMP(framework->GetScreen(), shotFilename);
				break;
			}
		}
	}

	if(framework->KeyPressed(SDLK_LSHIFT, false)||framework->GetJButton(0, JOY_BTTN_LB))
		movSpeed *= 2.0f, LX *= 2.0f, LY *= 2.0f;


	if(framework->KeyPressed(SDLK_LEFT, false)&&!framework->KeyPressed(SDLK_LALT, false))
		raycaster->Rotate(60);

	if(framework->KeyPressed(SDLK_RIGHT, false)&&!framework->KeyPressed(SDLK_LALT, false))
		raycaster->Rotate(-60);

	if(framework->GetAxis(0, JOY_AXIS_RX))
		raycaster->Rotate(framework->GetAxis(0, JOY_AXIS_RX)/200*-1.0);

	if(framework->KeyPressed(SDLK_UP, false) || framework->KeyPressed(SDLK_w, false))
		raycaster->MoveForward(movSpeed, &wasPickup, &pickupId);

	if(framework->GetAxis(0, JOY_AXIS_LY)<=-8000)
		raycaster->MoveForward(LY, &wasPickup, &pickupId);

	if(framework->GetHatCentered(0) == true && framework->GetHatWhich(0, 0) == SDL_HAT_UP||framework->GetHatCentered(0) == true && framework->GetHatWhich(0, 0)==SDL_HAT_LEFTUP||framework->GetHatCentered(0) == true && framework->GetHatWhich(0, 0)==SDL_HAT_RIGHTUP)
		raycaster->MoveForward(movSpeed, &wasPickup, &pickupId);

	REACT_ON_PICKING();

	if(framework->KeyPressed(SDLK_DOWN, false) || framework->KeyPressed(SDLK_s, false))
		raycaster->MoveBackward(movSpeed, &wasPickup, &pickupId);

	if(framework->GetHatCentered(0) == true && framework->GetHatWhich(0, 0) == SDL_HAT_DOWN||framework->GetHatCentered(0) == true && framework->GetHatWhich(0, 0)==SDL_HAT_LEFTDOWN||framework->GetHatCentered(0) == true && framework->GetHatWhich(0, 0)==SDL_HAT_RIGHTDOWN)
		raycaster->MoveBackward(movSpeed, &wasPickup, &pickupId);

	if(framework->GetAxis(0, JOY_AXIS_LY)>=8000)
		raycaster->MoveBackward(LY, &wasPickup, &pickupId);

	REACT_ON_PICKING();

	if(framework->KeyPressed(SDLK_a, false)||framework->KeyPressed(SDLK_LEFT, false)&&framework->KeyPressed(SDLK_LALT, false))
		raycaster->StepLeft(movSpeed / 2.0, &wasPickup, &pickupId);

	if(framework->GetHatCentered(0) == true && framework->GetHatWhich(0, 0) == SDL_HAT_LEFT||framework->GetHatCentered(0) == true && framework->GetHatWhich(0, 0) == SDL_HAT_LEFTUP||framework->GetHatCentered(0) == true && framework->GetHatWhich(0, 0)==SDL_HAT_LEFTDOWN)
		raycaster->StepLeft(movSpeed / 2.0f, &wasPickup, &pickupId);

	if(framework->GetAxis(0, JOY_AXIS_LX)<=-8000)
		raycaster->StepLeft(LX / 2.0f, &wasPickup, &pickupId);

	REACT_ON_PICKING();

	if(framework->KeyPressed(SDLK_d, false)||framework->KeyPressed(SDLK_RIGHT, false)&&framework->KeyPressed(SDLK_LALT, false))
		raycaster->StepRight(movSpeed / 2.0f, &wasPickup, &pickupId);

	if(framework->GetHatCentered(0) == true && framework->GetHatWhich(0, 0) == SDL_HAT_RIGHT||framework->GetHatCentered(0) == true && framework->GetHatWhich(0, 0)==SDL_HAT_RIGHTUP||framework->GetHatCentered(0) == true && framework->GetHatWhich(0, 0)==SDL_HAT_RIGHTDOWN)
		raycaster->StepRight(movSpeed / 2.0f, &wasPickup, &pickupId);

	if(framework->GetAxis(0, JOY_AXIS_LX)>=8000)
		raycaster->StepRight(LX / 2.0f, &wasPickup, &pickupId);

	REACT_ON_PICKING();

	needAKey = false;

	if(framework->KeyPressed(SDLK_SPACE, false)||framework->GetJButton(0, JOY_BTTN_X))
		raycaster->OpenDoor(player->HasKey(), &needAKey);

	if(needAKey && SDL_GetTicks() - lNeedKeyMsg > 2000)
	{
		AddMessage("You need a key to unlock this door!");
		lNeedKeyMsg = SDL_GetTicks();
	}

	if(framework->KeyPressed(SDLK_LCTRL, false) || framework->ButtonPressed(BUTTON_LEFT)||framework->GetJButton(0, JOY_BTTN_RB))
		Shoot();


	framework->GetMouseMovement(&mouseMovX, NULL);
	raycaster->Rotate((float)mouseMovX/10.0f*-1.0f*ROT_SPEED);
}
Example #17
0
void SimpleModal::SetExitCode(int Code)
{
	m_ExitCode=Code;
	SetDone();
}
Example #18
0
Menu::Menu():
Scene(STATE_MENU)
{
	SetDone(0);
}
void S3FileRequest::CompletionSuccess()
{
    SetCompleted();
    SetDone();
}
Example #20
0
void CItem::DoSomeWork(DWORD ticks)
{
	if (IsDone())
		return;

	StartPacman(true);

	DriveVisualUpdateDuringWork();

	DWORD start = GetTickCount();

	if (GetType() == IT_DRIVE || GetType() == IT_DIRECTORY)
	{
		if (!IsReadJobDone())
		{
			LONGLONG dirCount = 0;
			LONGLONG fileCount = 0;

			CList<FILEINFO, FILEINFO> files;


			CFileFindWDS finder;
			BOOL b = finder.FindFile(GetFindPattern());
			while (b)
			{
				DriveVisualUpdateDuringWork();

				b = finder.FindNextFile();
				if (finder.IsDots())
					continue;
				if (finder.IsDirectory())
				{
					dirCount++;
					AddDirectory(finder);
				}
				else
				{
					fileCount++;

					FILEINFO fi;
					fi.name = finder.GetFileName();
					fi.attributes = finder.GetAttributes();
					// Retrieve file size
					fi.length = finder.GetCompressedLength();
					finder.GetLastWriteTime(&fi.lastWriteTime);
					// (We don't use GetLastWriteTime(CTime&) here, because, if the file has
					// an invalid timestamp, that function would ASSERT and throw an Exception.)

					files.AddTail(fi);
				}
			}

			CItem *filesFolder = 0;
			if (dirCount > 0 && fileCount > 1)
			{
				filesFolder = new CItem(IT_FILESFOLDER, LoadString(IDS_FILES_ITEM));
				filesFolder->SetReadJobDone();
				AddChild(filesFolder);
			}
			else if (fileCount > 0)
			{
				filesFolder = this;
			}

			for (POSITION pos=files.GetHeadPosition(); pos != NULL; files.GetNext(pos))
			{
				const FILEINFO& fi = files.GetAt(pos);
				filesFolder->AddFile(fi);
			}

			if (filesFolder != NULL)
			{
				filesFolder->UpwardAddFiles(fileCount);
				if (dirCount > 0 && fileCount > 1)
					filesFolder->SetDone();
			}

			UpwardAddSubdirs(dirCount);
			SetReadJobDone();
			AddTicksWorked(GetTickCount() - start);
		}
		if (GetType() == IT_DRIVE)
			UpdateFreeSpaceItem();

		if (GetTickCount() - start > ticks)
		{
			StartPacman(false);
			return;
		}
	}
	if (GetType() == IT_DRIVE || GetType() == IT_DIRECTORY || GetType() == IT_MYCOMPUTER)
	{
		ASSERT(IsReadJobDone());
		if (IsDone())
		{
			StartPacman(false);
			return;
		}
		if (GetChildrenCount() == 0)
		{
			SetDone();
			StartPacman(false);
			return;
		}

		DWORD startChildren = GetTickCount();
		while (GetTickCount() - start < ticks)
		{
			DWORD minticks = UINT_MAX;
			CItem *minchild = NULL;
			for (int i=0; i < GetChildrenCount(); i++)
			{
				CItem *child = GetChild(i);
				if (child->IsDone())
					continue;
				if (child->GetTicksWorked() < minticks)
				{
					minticks = child->GetTicksWorked();
					minchild = child;
				}
			}
			if (minchild == NULL)
			{
				SetDone();
				break;
			}
			DWORD tickssofar = GetTickCount() - start;
			if (ticks > tickssofar)
				minchild->DoSomeWork(ticks - tickssofar);
		}
		AddTicksWorked(GetTickCount() - startChildren);
	}
	else
	{
		SetDone();
	}
	StartPacman(false);
}
Example #21
0
// Return: false if deleted
bool CItem::StartRefresh() 
{
	ASSERT(GetType() != IT_FREESPACE);
	ASSERT(GetType() != IT_UNKNOWN);

	m_ticksWorked = 0;

	// Special case IT_MYCOMPUTER
	if (GetType() == IT_MYCOMPUTER)
	{
		ZeroMemory(&m_lastChange, sizeof(m_lastChange));

		for (int i=0; i < GetChildrenCount(); i++)
			GetChild(i)->StartRefresh();

		return true;
	}
	ASSERT(GetType() == IT_FILE || GetType() == IT_DRIVE || GetType() == IT_DIRECTORY || GetType() == IT_FILESFOLDER);

	bool wasExpanded = IsVisible() && IsExpanded();
	int oldScrollPosition = 0;
	if (IsVisible())
		oldScrollPosition = GetScrollPosition();

	UncacheImage();

	// Upward clear data
	UpdateLastChange();

	UpwardSetUndone();

	UpwardAddReadJobs(-GetReadJobs());
	ASSERT(GetReadJobs() == 0);

	if (GetType() == IT_FILE)
		GetParent()->UpwardAddFiles(-1);
	else
		UpwardAddFiles(-GetFilesCount());
	ASSERT(GetFilesCount() == 0);

	if (GetType() == IT_DIRECTORY || GetType() == IT_DRIVE)
		UpwardAddSubdirs(-GetSubdirsCount());
	ASSERT(GetSubdirsCount() == 0);

	UpwardAddSize(-GetSize());
	ASSERT(GetSize() == 0);

	RemoveAllChildren();
	UpwardRecalcLastChange();

	// Special case IT_FILESFOLDER
	if (GetType() == IT_FILESFOLDER)
	{
		CFileFindWDS finder;
		BOOL b = finder.FindFile(GetFindPattern());
		while (b)
		{
			b = finder.FindNextFile();
			if (finder.IsDirectory())
				continue;

			FILEINFO fi;
			fi.name = finder.GetFileName();
			fi.attributes = finder.GetAttributes();
			// Retrieve file size
			fi.length = finder.GetCompressedLength();
			finder.GetLastWriteTime(&fi.lastWriteTime);

			AddFile(fi);
			UpwardAddFiles(1);
		}
		SetDone();

		if (wasExpanded)
			GetTreeListControl()->ExpandItem(this);
		return true;
	}
	ASSERT(GetType() == IT_FILE || GetType() == IT_DRIVE || GetType() == IT_DIRECTORY);

	// The item may have been deleted.
	bool deleted = false;
	if (GetType() == IT_DRIVE)
		deleted = !DriveExists(GetPath());
	else if (GetType() == IT_FILE)
		deleted = !FileExists(GetPath());
	else if (GetType() == IT_DIRECTORY)
		deleted = !FolderExists(GetPath());

	if (deleted)
	{
		if (GetParent() == NULL)
		{
			GetDocument()->UnlinkRoot();
		}
		else
		{
			GetParent()->UpwardRecalcLastChange();
			GetParent()->RemoveChild(GetParent()->FindChildIndex(this)); // --> delete this
		}
		return false;
	}

	// Case IT_FILE
	if (GetType() == IT_FILE)
	{
		CFileFindWDS finder;
		BOOL b = finder.FindFile(GetPath());
		if (b)
		{
			finder.FindNextFile();
			if (!finder.IsDirectory())
			{
				FILEINFO fi;
				fi.name = finder.GetFileName();
				fi.attributes = finder.GetAttributes();
				// Retrieve file size
				fi.length = finder.GetCompressedLength();
				finder.GetLastWriteTime(&fi.lastWriteTime);

				SetLastChange(fi.lastWriteTime);

				UpwardAddSize(fi.length);
				UpwardUpdateLastChange(GetLastChange());
				GetParent()->UpwardAddFiles(1);
			}
		}
		SetDone();
		return true;
	}

	ASSERT(GetType() == IT_DRIVE || GetType() == IT_DIRECTORY);

	if (GetType() == IT_DIRECTORY && !IsRootItem() && GetApp()->IsMountPoint(GetPath()) && !GetOptions()->IsFollowMountPoints())
		return true;

	if (GetType() == IT_DIRECTORY && !IsRootItem() && GetApp()->IsJunctionPoint(GetPath()) && !GetOptions()->IsFollowJunctionPoints())
		return true;

	// Initiate re-read
	SetReadJobDone(false);

	// Re-create <free space> and <unknown>
	if (GetType() == IT_DRIVE)
	{
		if (GetDocument()->OptionShowFreeSpace())
			CreateFreeSpaceItem();
		if (GetDocument()->OptionShowUnknown())
			CreateUnknownItem();
	}

	DoSomeWork(0);

	if (wasExpanded)
		GetTreeListControl()->ExpandItem(this);

	if (IsVisible())
		SetScrollPosition(oldScrollPosition);

	return true;
}