Пример #1
0
CFMOD::CFMOD()
{
    FirstSample=0;
    svol=50;
    fmusic=0;
    Log=new CLog("fmod.log");
//    Cab=new CCab("snd.dlz",NFCOMP_BEST);
    InitializeSound();
    LoadCabSamples();
}
Пример #2
0
void InitializeGame(uint size_x, uint size_y, bool reset_date, bool reset_settings)
{
	/* Make sure there isn't any window that can influence anything
	 * related to the new game we're about to start/load. */
	UnInitWindowSystem();

	AllocateMap(size_x, size_y);

	_pause_mode = PM_UNPAUSED;
	_fast_forward = 0;
	_tick_counter = 0;
	_cur_tileloop_tile = 0;
	_thd.redsq = INVALID_TILE;
	if (reset_settings) MakeNewgameSettingsLive();

	if (reset_date) {
		SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1), 0);
		InitializeOldNames();
	}

	PoolBase::Clean(PT_NORMAL);

	ResetPersistentNewGRFData();

	InitializeSound();
	InitializeMusic();

	InitializeVehicles();

	InitNewsItemStructs();
	InitializeLandscape();
	InitializeRailGui();
	InitializeRoadGui();
	InitializeAirportGui();
	InitializeDockGui();
	InitializeObjectGui();
	InitializeAIGui();
	InitializeTrees();
	InitializeIndustries();
	InitializeObjects();
	InitializeBuildingCounts();

	InitializeNPF();

	InitializeCompanies();
	AI::Initialize();
	Game::Initialize();
	InitializeCheats();

	InitTextEffects();
#ifdef ENABLE_NETWORK
	NetworkInitChatMessage();
#endif /* ENABLE_NETWORK */
	InitializeAnimatedTiles();

	InitializeEconomy();

	ResetObjectToPlace();

	GamelogReset();
	GamelogStartAction(GLAT_START);
	GamelogRevision();
	GamelogMode();
	GamelogGRFAddList(_grfconfig);
	GamelogStopAction();
}
Пример #3
0
int CALLBACK WinMain(HINSTANCE instance, HINSTANCE previousInstance, LPSTR commandLine, int showCode)
{
	WNDCLASS window = {};

	ResizeDibSection(backBuffer, 1280, 720);

	window.style = CS_HREDRAW | CS_VREDRAW;
	window.lpfnWndProc = MainWindowCallback;
	window.hInstance = instance;
	//window.hIcon;
	window.lpszClassName = "Handmade Hero Take 1";
	DefineControllerFuntions();

	if (RegisterClass(&window))
	{
		HWND handle = CreateWindowEx(0, window.lpszClassName,
			"Handmade Hero", WS_VISIBLE | WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
			CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, instance, 0);

		if (handle)
		{
			int samplesPerSecond = 48000;
			int blueOffset = 0,
					greenOffset = 0;
			uint32 runningSampleIndex = 0;
			int hertz = 256;
			int squareWavePeriod = samplesPerSecond / hertz;
			int halfPeriod = squareWavePeriod / 2;
			int bytesPerSample = sizeof(int16) * 2;
			int audioBufferSize = samplesPerSecond * bytesPerSample;
			int16 toneVolume = 6000;

			InitializeSound(handle, samplesPerSecond, audioBufferSize);
			audioBuffer->Play(0, 0, 0);

			MSG message;
			BOOL messageResult;
			while (isRunning) {

				// GetMessageA blocks. PeekMessage does not
				while (PeekMessage(&message, 0, 0, 0, PM_REMOVE)) {

					if (message.message == WM_QUIT) {
						isRunning = false;
					}

					TranslateMessage(&message);
					DispatchMessage(&message);
				}

				for (DWORD controllerIndex = 0; controllerIndex < XUSER_MAX_COUNT; controllerIndex++) {
					XINPUT_STATE controllerState;
					if (XInputGetState(controllerIndex, &controllerState) == ERROR_SUCCESS) {
						// The controller is plugged in
						XINPUT_GAMEPAD *pad = &controllerState.Gamepad;

						if (pad->wButtons & XINPUT_GAMEPAD_DPAD_UP)
						{
							greenOffset++;
						}
						if (pad->wButtons & XINPUT_GAMEPAD_DPAD_DOWN)
						{
							greenOffset--;
						}
						if (pad->wButtons & XINPUT_GAMEPAD_DPAD_LEFT)
						{
							blueOffset -= 2;
						}
						if ((pad->wButtons & XINPUT_GAMEPAD_DPAD_RIGHT) || pad->sThumbLX < 0)
						{
							blueOffset++;
						}
						bool leftShoulderPressed = (pad->wButtons & XINPUT_GAMEPAD_LEFT_SHOULDER);
						bool rightShoulderPressed = (pad->wButtons & XINPUT_GAMEPAD_RIGHT_SHOULDER);
						bool aButtonPressed = (pad->wButtons & XINPUT_GAMEPAD_A);
						bool bButtonPressed = (pad->wButtons & XINPUT_GAMEPAD_B);
						bool xButtonPressed = (pad->wButtons & XINPUT_GAMEPAD_X);
						bool yButtonPressed = (pad->wButtons & XINPUT_GAMEPAD_Y);

					}
					else {
						// Controller not available.
					}

					XINPUT_VIBRATION goodVibrations;
					goodVibrations.wLeftMotorSpeed = 6000;
					goodVibrations.wRightMotorSpeed = 6000;
					XInputSetState(0, &goodVibrations);

				}

				renderGradient(backBuffer, blueOffset++, greenOffset);

				// DirectSound output test
				DWORD playCursor;
				DWORD writeCurser;
				if(SUCCEEDED(audioBuffer->GetCurrentPosition(&playCursor, &writeCurser)))
				{
					DWORD byteToLock = runningSampleIndex * bytesPerSample % samplesPerSecond;
					int32 bytesToWrite;
					if(byteToLock > playCursor)
					{
						bytesToWrite = (audioBufferSize - byteToLock);
						bytesToWrite += playCursor;
					}
					else{
						bytesToWrite = playCursor - byteToLock;
					}

					VOID *region1;
					DWORD region1Size;
					VOID *region2;
					DWORD region2Size;


					HRESULT  response = audioBuffer->Lock(byteToLock, bytesToWrite, &region1, &region1Size, &region2, &region2Size, 0);
					if(SUCCEEDED(response))
					{
						int16 *sampleOutput = (int16 *)region1;
						DWORD region1SampleCount = region1Size / bytesPerSample;
						for (int32 sampleIndex = 0; sampleIndex < region1SampleCount; sampleIndex++)
						{
							int16 sampleValue = ((runningSampleIndex++ > halfPeriod) % 2) ? toneVolume : -toneVolume;
							*sampleOutput++ = sampleValue;
							*sampleOutput++ = sampleValue;
						}

						DWORD region2SampleCount = region2Size / bytesPerSample;
						for (int32 sampleIndex = 0; sampleIndex < region2SampleCount; sampleIndex++)
						{
							int16 sampleValue = ((runningSampleIndex++ > halfPeriod) % 2) ? toneVolume : -toneVolume;
							*sampleOutput++ = sampleValue;
							*sampleOutput++ = sampleValue;
						}

						audioBuffer->Unlock(region1, region1Size, region2, region2Size);
					}
				}

				HDC deviceContext = GetDC(handle);
				window_dimensions updateScreen = GetWindowDimensions(handle);
				DisplayBufferInWindow(deviceContext, updateScreen, backBuffer);
				ReleaseDC(handle, deviceContext);
			}
		}
	}

	return 0;
}