Пример #1
0
static void OnSplashPaint(WindowControl * Sender, LKSurface& Surface) {
    if(!SplashBitmap) {
        SplashBitmap = LoadSplash(_T("LKSTART"));
    }
    DrawSplash(Surface, SplashBitmap);
}
Пример #2
0
void CRenderWorld::LoadImages(){ //load images
  InitBackground();
  LoadBackground(); 
  LoadSplash();

  //Numbers
  Load(N_0, "0");
  Load(N_1, "1");
  Load(N_2, "2");
  Load(N_3, "3");
  Load(N_4, "4");
  Load(N_5, "5");
  Load(N_6, "6");
  Load(N_7, "7");
  Load(N_8, "8");
  Load(N_9, "9");
  Load(N_10, "10");
  
  //Load sprites
  Load(CURSOR, "cursor");
  Load(CURSOR_HAND, "cursor_hand");
  Load(START, "start");
  Load(START_HOVER, "hoverStart");
  Load(ENDTURN, "endTurn");
  Load(ENDTURNHOVER, "endTurnHover");
  Load(ATTACKACTIVE, "attackActive");
  Load(ATTACK, "attack");
  Load(ATTACKHOVER, "attackHover");
  Load(WAIT, "wait");
  Load(WAITHOVER, "waitHover");
  Load(WAITACTIVE, "waitActive");
  Load(CAPTURE, "capture");
  Load(CAPTUREHOVER, "capHover");
  Load(CAPTUREACTIVE, "capActive");
  Load(INFO, "info");
  Load(INFOHOVER, "infoHover");
  Load(SIDE1, "side1");
  Load(SIDE2, "side2");
  Load(WIN1, "win1");
  Load(WIN2, "win2");
  Load(CROSSHAIR, "crosshair");

  //attack animation
  Load(ATTACK0, "attack0");
  Load(ATTACK1, "attack1");
  Load(ATTACK2, "attack2");
  Load(ATTACK3, "attack3");

  //Blood Crystle
  Load(BLOODCRYSTLE0, "bCrystle0");
  Load(BLOODCRYSTLE1, "bCrystle1");
  Load(BLOODCRYSTLE2, "bCrystle2");
  Load(BLOODCRYSTLE3, "bCrystle3");
  Load(BLOODCRYSTLE4, "bCrystle4");
  
  //infoPane
  Load(INFOPANE, "infoPane");
  Load(HEALTH_ICON, "health");
  Load(DEFENSE_ICON, "defense");
  Load(MOVE_ICON, "move");
  Load(ATTACK_ICON, "attack");

  Load(TITLE_NAME, "title");
  Load(BLOOD, "blood");

  //Arrow
  Load(DOWNA, "downA");
  Load(DOWNBUTT, "downButt");
  Load(HORZ, "horz");
  Load(LEFTA, "leftA");
  Load(LEFTBUTT, "leftButt");
  Load(LEFTUP, "leftUp");
  Load(RIGHTA, "rightA");
  Load(RIGHTBUTT, "rightButt");
  Load(RIGHTDOWN, "rightDown");
  Load(RIGHTUP, "rightUp");
  Load(UPA, "upA");
  Load(UPBUTT, "upButt");
  Load(VERT, "vert");

  //blue soldier
  Load(BSIDLE0, "BSidle0");
  Load(BSIDLE1, "BSidle1");
  Load(BSIDLE2, "BSidle2");
  Load(BSIDLE3, "BSidle3");

  Load(BSRIGHT0, "BSright0");
  Load(BSRIGHT1, "BSright1");
  Load(BSRIGHT2, "BSright2");
  Load(BSRIGHT3, "BSright3");

  Load(BSLEFT0, "BSleft0");
  Load(BSLEFT1, "BSleft1");
  Load(BSLEFT2, "BSleft2");
  Load(BSLEFT3, "BSleft3");

  Load(BSUP0, "BSup0");
  Load(BSUP1, "BSup1");
  Load(BSUP2, "BSup2");
  Load(BSUP3, "BSup3");

  Load(BSDOWN0, "BSdown0");
  Load(BSDOWN1, "BSdown1");
  Load(BSDOWN2, "BSdown2");
  Load(BSDOWN3, "BSdown3");

  Load(BSMOVED0, "BSmoved0");
  Load(BSMOVED1, "BSmoved1");
  Load(BSMOVED2, "BSmoved2");
  Load(BSMOVED3, "BSmoved3");

  //blue heavy soldier
  Load(BHIDLE0, "BHidle0");
  Load(BHIDLE1, "BHidle1");
  Load(BHIDLE2, "BHidle0");
  Load(BHIDLE3, "BHidle1");

  Load(BHRIGHT0, "BHright0");
  Load(BHRIGHT1, "BHright1");
  Load(BHRIGHT2, "BHright2");
  Load(BHRIGHT3, "BHright3");

  Load(BHLEFT0, "BHleft0");
  Load(BHLEFT1, "BHleft1");
  Load(BHLEFT2, "BHleft2");
  Load(BHLEFT3, "BHleft3");

  Load(BHUP0, "BHup0");
  Load(BHUP1, "BHup1");
  Load(BHUP2, "BHup2");
  Load(BHUP3, "BHup3");

  Load(BHDOWN0, "BHdown0");
  Load(BHDOWN1, "BHdown1");
  Load(BHDOWN2, "BHdown2");
  Load(BHDOWN3, "BHdown3");

  Load(BHMOVED0, "BHmoved0");
  Load(BHMOVED1, "BHmoved1");
  Load(BHMOVED2, "BHmoved0");
  Load(BHMOVED3, "BHmoved1");

  //blue tank
  Load(BTIDLE0, "BTidle0");
  Load(BTIDLE1, "BTidle1");
  Load(BTIDLE2, "BTidle2");
  Load(BTIDLE3, "BTidle1");

  Load(BTRIGHT0, "BTright0");
  Load(BTRIGHT1, "BTright1");
  Load(BTRIGHT2, "BTright2");
  Load(BTRIGHT3, "BTright1");

  Load(BTLEFT0, "BTleft0");
  Load(BTLEFT1, "BTleft1");
  Load(BTLEFT2, "BTleft2");
  Load(BTLEFT3, "BTleft1");

  Load(BTUP0, "BTup0");
  Load(BTUP1, "BTup1");
  Load(BTUP2, "BTup2");
  Load(BTUP3, "BTup1");

  Load(BTDOWN0, "BTdown0");
  Load(BTDOWN1, "BTdown1");
  Load(BTDOWN2, "BTdown2");
  Load(BTDOWN3, "BTdown1");

  Load(BTMOVED0, "BTmoved0");
  Load(BTMOVED1, "BTmoved1");
  Load(BTMOVED2, "BTmoved2");
  Load(BTMOVED3, "BTmoved1");
  
  //red soldier
  Load(RSIDLE0, "RSidle0");
  Load(RSIDLE1, "RSidle1");
  Load(RSIDLE2, "RSidle2");
  Load(RSIDLE3, "RSidle3");

  Load(RSRIGHT0, "RSright0");
  Load(RSRIGHT1, "RSright1");
  Load(RSRIGHT2, "RSright2");
  Load(RSRIGHT3, "RSright3");

  Load(RSLEFT0, "RSleft0");
  Load(RSLEFT1, "RSleft1");
  Load(RSLEFT2, "RSleft2");
  Load(RSLEFT3, "RSleft3");

  Load(RSUP0, "RSup0");
  Load(RSUP1, "RSup1");
  Load(RSUP2, "RSup2");
  Load(RSUP3, "RSup3");

  Load(RSDOWN0, "RSdown0");
  Load(RSDOWN1, "RSdown1");
  Load(RSDOWN2, "RSdown2");
  Load(RSDOWN3, "RSdown3");

  Load(RSMOVED0, "RSmoved0");
  Load(RSMOVED1, "RSmoved1");
  Load(RSMOVED2, "RSmoved2");
  Load(RSMOVED3, "RSmoved3");

  //red heavy soldier
  Load(RHIDLE0, "RHidle0");
  Load(RHIDLE1, "RHidle1");
  Load(RHIDLE2, "RHidle0");
  Load(RHIDLE3, "RHidle1");

  Load(RHRIGHT0, "RHright0");
  Load(RHRIGHT1, "RHright1");
  Load(RHRIGHT2, "RHright2");
  Load(RHRIGHT3, "RHright3");

  Load(RHLEFT0, "RHleft0");
  Load(RHLEFT1, "RHleft1");
  Load(RHLEFT2, "RHleft2");
  Load(RHLEFT3, "RHleft3");

  Load(RHUP0, "RHup0");
  Load(RHUP1, "RHup1");
  Load(RHUP2, "RHup2");
  Load(RHUP3, "RHup3");

  Load(RHDOWN0, "RHdown0");
  Load(RHDOWN1, "RHdown1");
  Load(RHDOWN2, "RHdown2");
  Load(RHDOWN3, "RHdown3");

  Load(RHMOVED0, "RHmoved0");
  Load(RHMOVED1, "RHmoved1");
  Load(RHMOVED2, "RHmoved0");
  Load(RHMOVED3, "RHmoved1");

  //red tank
  Load(RTIDLE0, "RTidle0");
  Load(RTIDLE1, "RTidle1");
  Load(RTIDLE2, "RTidle2");
  Load(RTIDLE3, "RTidle1");

  Load(RTRIGHT0, "RTright0");
  Load(RTRIGHT1, "RTright1");
  Load(RTRIGHT2, "RTright2");
  Load(RTRIGHT3, "RTright1");

  Load(RTLEFT0, "RTleft0");
  Load(RTLEFT1, "RTleft1");
  Load(RTLEFT2, "RTleft2");
  Load(RTLEFT3, "RTleft1");

  Load(RTUP0, "RTup0");
  Load(RTUP1, "RTup1");
  Load(RTUP2, "RTup2");
  Load(RTUP3, "RTup1");

  Load(RTDOWN0, "RTdown0");
  Load(RTDOWN1, "RTdown1");
  Load(RTDOWN2, "RTdown2");
  Load(RTDOWN3, "RTdown1");

  Load(RTMOVED0, "RTmoved0");
  Load(RTMOVED1, "RTmoved1");
  Load(RTMOVED2, "RTmoved2");
  Load(RTMOVED3, "RTmoved1");

  //map tiles
  Load(RED_BASE, "redBase"); 
  Load(BLUE_BASE, "blueBase");
  Load(GRASS0, "grass0"); 
  Load(GRASS1, "grass1");
  Load(MOUNTAIN0, "mountain0");
  Load(MOUNTAIN1, "mountain1");
  Load(MOUNTAIN2, "mountain2");
  Load(MOUNTAIN3, "mountain3");
  Load(MOUNTAIN4, "mountain4");
  Load(MOUNTAIN5, "mountain5");
  Load(RIVER0, "river0");
  Load(RIVER1, "river1");
  Load(RIVER2, "river2");
  Load(ROAD0, "road0");
  Load(ROAD1, "road1");
  Load(ROAD2, "road2");
  Load(ROAD3, "road3");
  Load(ROAD4, "road4");
  Load(ROAD5, "road5");
  Load(ROAD6, "road6");
  Load(ROAD7, "road7");
  Load(ROAD8, "road8");
  Load(ROAD9, "road9");
  Load(ROAD10, "road10");
  Load(TREE0, "tree0");
  Load(TREE1, "tree1");
  Load(WALLPAPER, "greyWallpaper");
  //RED MAP TILES
  Load(RED_BASE_R, "redBase_r");
  Load(BLUE_BASE_R, "blueBase_r");
  Load(GRASS0_R, "grass0_r");
  Load(GRASS1_R, "grass1_r");
  Load(MOUNTAIN0_R, "mountain0_r");
  Load(MOUNTAIN1_R, "mountain1_r");
  Load(MOUNTAIN2_R, "mountain2_r");
  Load(MOUNTAIN3_R, "mountain3_r");
  Load(MOUNTAIN4_R, "mountain4_r");
  Load(MOUNTAIN5_R, "mountain5_r");
  Load(ROAD0_R, "road0_r");
  Load(ROAD1_R, "road1_r");
  Load(ROAD2_R, "road2_r");
  Load(ROAD3_R, "road3_r");
  Load(ROAD4_R, "road4_r");
  Load(ROAD5_R, "road5_r");
  Load(ROAD6_R, "road6_r");
  Load(ROAD7_R, "road7_r");
  Load(ROAD8_R, "road8_r");
  Load(ROAD9_R, "road9_r");
  Load(ROAD10_R, "road10_r");
  Load(TREE0_R, "tree0_r");
  Load(TREE1_R, "tree1_r");
  Load(WALLPAPER_R, "redWallpaper");
  //BLUE MAP TILES
  Load(RED_BASE_B, "redBase_b");
  Load(BLUE_BASE_B, "blueBase_b");
  Load(GRASS0_B, "grass0_b");
  Load(GRASS1_B, "grass1_b");
  Load(MOUNTAIN0_B, "mountain0_b");
  Load(MOUNTAIN1_B, "mountain1_b");
  Load(MOUNTAIN2_B, "mountain2_b");
  Load(MOUNTAIN3_B, "mountain3_b");
  Load(MOUNTAIN4_B, "mountain4_b");
  Load(MOUNTAIN5_B, "mountain5_b");
  Load(ROAD0_B, "road0_b");
  Load(ROAD1_B, "road1_b");
  Load(ROAD2_B, "road2_b");
  Load(ROAD3_B, "road3_b");
  Load(ROAD4_B, "road4_b");
  Load(ROAD5_B, "road5_b");
  Load(ROAD6_B, "road6_b");
  Load(ROAD7_B, "road7_b");
  Load(ROAD8_B, "road8_b");
  Load(ROAD9_B, "road9_b");
  Load(ROAD10_B, "road10_b");
  Load(TREE0_B, "tree0_b");
  Load(TREE1_B, "tree1_b");
  Load(WALLPAPER_B, "blueWallpaper");
  
  Load(EX0, "ex0");
  Load(EX1, "ex1");
  Load(EX2, "ex2");
  Load(EX3, "ex3");
  Load(EX4, "ex4");
  Load(EX5, "ex5");
  Load(EX6, "ex6");
  Load(EX7, "ex7");
  Load(EX8, "ex8");
  Load(EX9, "ex9");
  Load(EX10, "ex10");
  Load(EX11, "ex11");
  Load(EX12, "ex12");
  Load(EX13, "ex13");
  Load(EX14, "ex14");
  Load(EX15, "ex15");
  Load(EX16, "ex16");
  Load(EX17, "ex17");
  Load(EX18, "ex18");
  Load(EX19, "ex19");
  Load(EX20, "ex20");
  Load(EX21, "ex21");
  Load(EX22, "ex22");
  Load(EX23, "ex23");
} //LoadImages
Пример #3
0
//
// Called by LKDrawLook8000, this is what happens when we change mapspace mode, advancing through types.
// We paint infopages, nearest, tri, etc.etc.
// Normally there is plenty of cpu available because the map is not even calculated.
// This is why we bring to the Draw thread, in the nearest pages case, also calculations.
//
void MapWindow::DrawMapSpace(HDC hdc,  RECT rc ) {

  HFONT oldfont;
  HBRUSH hB;

  TextInBoxMode_t TextDisplayMode = {0};
  TCHAR Buffer[LKSIZEBUFFERLARGE*2];
#ifdef DRAWLKSTATUS
  bool dodrawlkstatus=false;
#endif

  static POINT p[10];

  if (MapSpaceMode==MSM_WELCOME) {
	if (INVERTCOLORS)
		hB=LKBrush_Petrol;
	  else
		hB=LKBrush_Mlight;
  } else {
	if (INVERTCOLORS)
	  hB=LKBrush_Mdark;
	else
	  hB=LKBrush_Mlight;

  }
  oldfont = (HFONT)SelectObject(hdc, LKINFOFONT); // save font

  if (MapSpaceMode!=MSM_WELCOME) FillRect(hdc,&rc, hB); 

  if (DoInit[MDI_DRAWMAPSPACE]) {
	p[0].x=0; p[0].y=rc.bottom-BottomSize-NIBLSCALE(2); p[1].x=rc.right-1; p[1].y=p[0].y;
	p[2].x=0; p[2].y=0; p[3].x=rc.right-1; p[3].y=0; // 091230 right-1
	p[4].x=0; p[4].y=0; p[5].x=0; p[5].y=rc.bottom-BottomSize-NIBLSCALE(2);
	p[6].x=rc.right-1; p[6].y=0; p[7].x=rc.right-1; p[7].y=rc.bottom-BottomSize-NIBLSCALE(2); // 091230 right-1

//	p[8].x=0; p[8].y=rc.bottom-BottomSize-NIBLSCALE(2); p[9].x=rc.right; p[9].y=p[8].y;

/*
StartupStore(_T("DOINIT DRAWMAPSPACE 21=%d=%d 22=%d=%d 23=%d=%d 24=%d=%d 31=%d=%d 32=%d=%d\n"),
ConfIP[LKMODE_WP][0],ConfIP21,
ConfIP[LKMODE_WP][1],ConfIP22,
ConfIP[LKMODE_WP][2],ConfIP23,
ConfIP[LKMODE_WP][3],ConfIP24,
ConfIP[LKMODE_NAV][0],ConfIP31,
ConfIP[LKMODE_NAV][1],ConfIP32);
*/

	if (MapSpaceMode==MSM_WELCOME) LoadSplash(hdc,_T("LKPROFILE"));
	DoInit[MDI_DRAWMAPSPACE]=false; 
  }

  // Paint borders in green, but only in nearest pages and welcome
  if (MapSpaceMode==MSM_WELCOME || (!IsMultiMap() && MapSpaceMode!=MSM_MAP) )
  {
	  if (INVERTCOLORS) {
		_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[2], p[3], RGB_GREEN, rc);
		_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[4], p[5], RGB_GREEN, rc);
		_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[6], p[7], RGB_GREEN, rc);
		_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[0], p[1], RGB_GREEN, rc);
	  } else {
		_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[2], p[3], RGB_DARKGREEN, rc);
		_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[4], p[5], RGB_DARKGREEN, rc);
		_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[6], p[7], RGB_DARKGREEN, rc);
		_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[0], p[1], RGB_DARKGREEN, rc);
	  }
  }


#ifdef DRAWLKSTATUS 
  if (LKevent==LKEVENT_NEWRUN) dodrawlkstatus=true;
#endif

  // We are entering mapspacemodes with no initial check on configured subpages.
  // Thus we need to ensure that the page is really available, or find the first valid.
  // However, this will prevent direct customkey access to pages!
  // Instead, we do it when we call next page from InfoPageChange
  // if (!ConfIP[ModeIndex][CURTYPE]) NextModeType();
  switch (MapSpaceMode) {
	case MSM_WELCOME:
#if (1)
		if (!DrawInfo.NAVWarning) { 
		static double firsttime=DrawInfo.Time;
		// delayed automatic exit from welcome mode
		if ( DrawInfo.Time > (firsttime+1.0) ) {
			SetModeType(LKMODE_MAP,MP_MOVING);
			LKevent=LKEVENT_NONE;
			if (EnableSoundModes) LKSound(_T("LK_BEEP1.WAV"));
			RefreshMap();
			break;
		}
		}
#endif
		if(GlobalModelType==MODELTYPE_PNA_MINIMAP)
		{
			SetModeType(LKMODE_MAP,MP_MOVING);
			LKevent=LKEVENT_NONE;
			break;
		}

		DrawWelcome8000(hdc, rc);
		break;
	case MSM_MAPTRK:
		SetSideviewPage(IM_HEADING);
		LKDrawMultimap_Asp(hdc,rc);
		break;
	case MSM_MAPWPT:
		#if 0
		// If there is no destination, force jump to the map
		if (GetOvertargetIndex()<0) {
			SetModeType(LKMODE_MAP,MP_MOVING);
			LKevent=LKEVENT_NONE;
			break;
		}
		#endif
		SetSideviewPage(IM_NEXT_WP);
		LKDrawMultimap_Asp(hdc,rc);
		break;
	case MSM_MAPASP:
		SetSideviewPage(IM_NEAR_AS);
		LKDrawMultimap_Asp(hdc,rc);
		break;
	case MSM_MAPRADAR:
		LKDrawMultimap_Radar(hdc,rc);
		break;
	case MSM_VISUALGLIDE:
		SetSideviewPage(IM_VISUALGLIDE);
		LKDrawMultimap_Asp(hdc,rc);
		break;
	case MSM_MAPTEST:
		LKDrawMultimap_Test(hdc,rc);
		break;
	case MSM_LANDABLE:
	case MSM_NEARTPS:
	case MSM_AIRPORTS:
		DrawNearest(hdc, rc);
		break;
	case MSM_AIRSPACES:
		DrawAspNearest(hdc, rc);
		break;
	case MSM_COMMON:
	case MSM_RECENT:
		DrawCommon(hdc, rc);
		break;
	case MSM_MAP:
		break;
	case MSM_INFO_THERMAL:
	case MSM_INFO_CRUISE:
	case MSM_INFO_TASK:
	case MSM_INFO_AUX:
	case MSM_INFO_TRI:
	case MSM_INFO_HSI:
	case MSM_INFO_TRF:
	case MSM_INFO_TARGET:
	case MSM_INFO_CONTEST:
		DrawInfoPage(hdc,rc, false);
		break;
	case MSM_TRAFFIC:
		DrawTraffic(hdc,rc);
		break;
	case MSM_THERMALS:
		DrawThermalHistory(hdc,rc);
		break;

  default:
    memset((void*)&TextDisplayMode, 0, sizeof(TextDisplayMode));
    TextDisplayMode.Color = RGB_WHITE;
    TextDisplayMode.NoSetFont = 1; 
    TextDisplayMode.AlligneCenter = 1;
    SelectObject(hdc, LK8TargetFont);
    _stprintf(Buffer,TEXT("MapSpaceMode=%d"),MapSpaceMode);
    TextInBox(hdc, &rc, Buffer, (rc.right-rc.left)/2, NIBLSCALE(50) , 0, &TextDisplayMode, false);
    break;
  }
#ifdef DRAWLKSTATUS
  // no need to clear dodrawlkstatus, it is already reset at each run
  if (dodrawlkstatus) DrawLKStatus(hdc, rc);
#endif
  SelectObject(hdc, oldfont); 
}
Пример #4
0
static void OnSplashPaint(WindowControl * Sender, HDC hDC){

 TCHAR srcfile[MAX_PATH];
 TCHAR fprefix[20];

 if (RUN_MODE==RUN_SHUTDOWN) return;

 if (RUN_MODE==RUN_WELCOME) 
	_tcscpy(fprefix,_T("LKSTART"));
 else
	_tcscpy(fprefix,_T("LKPROFILE"));

 LoadSplash(hDC,fprefix);

  if (RUN_MODE==RUN_WELCOME) {
	TCHAR mes[100];
	int pos=0;
	switch (ScreenSize) {
		case ss800x480:
			pos=12;
			break;
		case ss400x240:
			pos=12;
			break;
		case ss480x272:
			if (ScreenSizeX==854)
				pos=14;
			else
				pos=11;
			break;
		case ss640x480:
			pos=12;
			break;
		case ss320x240:
			pos=12;
			break;
		case ss896x672:
			pos=14;
			break;
		// --------- portrait -------------
		case ss240x320:
			pos=17;
			break;
		case ss480x640:
			pos=17;
			break;
		case ss272x480:
			pos=18;
			break;
		case ss240x400:
			pos=16;
			break;
		case ss480x800:
			pos=18;
			break;
		default:
			pos=11;
			break;
	}
	if (fullresetasked) {
		_stprintf(mes,_T("*** %s ***"),gettext(_T("_@M1757_")));
		RawWrite(hDC,mes,pos,1, RGB_DARKWHITE,WTMODE_NORMAL);
	} else {
#ifndef LKCOMPETITION
		_stprintf(mes,_T("Version %S.%S (%S)"),LKVERSION,LKRELEASE,__DATE__);
#else
		_stprintf(mes,_T("V%S.%S COMPETITION"),LKVERSION,LKRELEASE,__DATE__);
#endif
		RawWrite(hDC,mes,pos,1, RGB_DARKWHITE,WTMODE_NORMAL);
	}
  }

  if (RUN_MODE!=RUN_WELCOME) {

	// FillRect(hDC,&ScreenSizeR, LKBrush_Black); // REMOVE 

	TCHAR mes[100];
#ifndef LKCOMPETITION
	_stprintf(mes,_T("%S v%S.%S - %s"),LKFORK,LKVERSION,LKRELEASE,gettext(_T("_@M2054_")));
#else
	_stprintf(mes,_T("%SC v%S.%S - %s"),LKFORK,LKVERSION,LKRELEASE,gettext(_T("_@M2054_")));
#endif
	RawWrite(hDC,mes,1,1, RGB_LIGHTGREY,WTMODE_NORMAL);

	unsigned long freeram = CheckFreeRam()/1024;
	TCHAR buffer[MAX_PATH];
	LocalPath(buffer);
	unsigned long freestorage = FindFreeSpace(buffer);
	_stprintf(mes,_T("free ram %.1ldM  storage %.1ldM"), freeram/1024,freestorage/1024);
	RawWrite(hDC,mes,3,0, RGB_LIGHTGREY,WTMODE_NORMAL);

	if ( ScreenSize != ss320x240 && ScreenLandscape )
	RawWrite(hDC,_T("_______________________"),2,2, RGB_LIGHTGREY,WTMODE_NORMAL);

	if (fullresetasked) {
		_stprintf(mes,_T("%s"),gettext(_T("_@M1757_")));	// LK8000 PROFILES RESET
		RawWrite(hDC,mes,5,2, RGB_ICEWHITE, WTMODE_OUTLINED);
		_stprintf(mes,_T("%s"),gettext(_T("_@M1759_")));	// SELECTED IN SYSTEM
		RawWrite(hDC,mes,6,2, RGB_ICEWHITE, WTMODE_OUTLINED);
	} else {
		_stprintf(mes,_T("%s"),PilotName_Config);
		RawWrite(hDC,mes,4,2, RGB_ICEWHITE, WTMODE_OUTLINED);

		_stprintf(mes,_T("%s"),AircraftRego_Config);
		RawWrite(hDC,mes,5,2, RGB_AMBER, WTMODE_OUTLINED);

		_stprintf(mes,_T("%s"),AircraftType_Config);
		RawWrite(hDC,mes,6,2, RGB_AMBER, WTMODE_OUTLINED);

    LKASSERT(szPolarFile[0]);
		extern void LK_wsplitpath(const WCHAR* path, WCHAR* drv, WCHAR* dir, WCHAR* name, WCHAR* ext);
		LK_wsplitpath(szPolarFile, (WCHAR*) NULL, (WCHAR*) NULL, srcfile, (WCHAR*) NULL);

		_stprintf(mes,_T("%s %s"),gettext(_T("_@M528_")),srcfile);  // polar file
		RawWrite(hDC,mes,7,2, RGB_AMBER, WTMODE_OUTLINED);

    LKASSERT(startProfileFile[0]);
		LK_wsplitpath(startProfileFile, (WCHAR*) NULL, (WCHAR*) NULL, srcfile, (WCHAR*) NULL);
		_stprintf(mes,_T("%s: %s"),MsgToken(1746),srcfile);  
		RawWrite(hDC,mes,11,1, RGB_ICEWHITE, WTMODE_NORMAL);
	}


	// RawWrite(hDC,_T("_______________________"),8,2, RGB_LIGHTGREY,WTMODE_NORMAL); // REMOVE FOR THE 3.0

	return;
  }

}
Пример #5
0
static void OnSplashPaint(WindowControl * Sender, LKSurface& Surface) {

    TCHAR srcfile[MAX_PATH];

    if (RUN_MODE == RUN_SHUTDOWN) return;

    if(RUN_MODE == RUN_WELCOME) {
        if(!StartBitmap) {
            StartBitmap = LoadSplash(_T("LKSTART"));
        }
        if(StartBitmap) {
            DrawSplash(Surface, StartBitmap);
        }
    } else {
        if(!ProfileBitmap) {
            ProfileBitmap = LoadSplash(_T("LKPROFILE"));
        }
        if(ProfileBitmap) {
            DrawSplash(Surface, ProfileBitmap);
        }
    }

    if (RUN_MODE == RUN_WELCOME) {
        TCHAR mes[100];
        int pos = 0;
        switch (ScreenSize) {
            case ss480x272:
                if (ScreenSizeX == 854)
                    pos = 14;
                else
#ifdef __linux__
                    pos = 12;
#else
                    pos = 11;
#endif
                break;
                // --------- portrait -------------
            case ss240x320:
#ifdef __linux__
                pos = 19;
#else
                pos = 17;
#endif
                break;
            default:
                // customized definition
                if (ScreenLandscape) {
                    switch (ScreenGeometry) {
                        case SCREEN_GEOMETRY_43:
                            pos = 12;
                            break;
                        case SCREEN_GEOMETRY_53:
                            pos = 12;
                            break;
                        case SCREEN_GEOMETRY_169:
                            pos = 11;
                            break;
                        default:
                            pos = 11;
                            break;
                    }
                } else {
                    // Portrait
                    // try to get a rule for text position...
                    switch (ScreenGeometry) {
                        case SCREEN_GEOMETRY_43:
#ifdef __linux__
                            pos = 18;
#else
                            pos = 17;
#endif
                            break;
                        case SCREEN_GEOMETRY_53:
                            pos = 20;
                            break;
                        case SCREEN_GEOMETRY_169:
#ifdef __linux__
                            pos = 22;
#else
                            pos = 20;
#endif
                            break;
                        default:
                            pos = 21;
                            break;
                    }

                }
                break;
        }
        if (FullResetAsked) {
            _stprintf(mes, _T("*** %s ***"), MsgToken(1757));
            RawWrite(Surface, mes, pos, 1, RGBDARKWHITE, WTMODE_NORMAL);
        } else {
#ifndef LKCOMPETITION
            _stprintf(mes, _T("Version %s.%s (%s)"), _T(LKVERSION), _T(LKRELEASE), _T(__DATE__));
#else
            _stprintf(mes, _T("V%s.%s (%s) COMPETITION"), _T(LKVERSION), _T(LKRELEASE), _T(__DATE__));
#endif
            RawWrite(Surface, mes, pos, 1, RGBDARKWHITE, WTMODE_NORMAL);
#ifdef KOBO
            if(IsKoboOTGKernel()) {
                RawWrite(Surface, _T("- USB host kernel -"), pos+1, 1, RGBDARKWHITE, WTMODE_NORMAL);
            }
#endif
        }
    }

    if (RUN_MODE != RUN_WELCOME) {

        // FillRect(hDC,&ScreenSizeR, LKBrush_Black); // REMOVE

        TCHAR mes[100];
#ifndef LKCOMPETITION
        _stprintf(mes, _T("%s v%s.%s - %s"), _T(LKFORK), _T(LKVERSION), _T(LKRELEASE), MsgToken(2054));
#else
        _stprintf(mes, _T("%sC v%s.%s - %s"), _T(LKFORK), _T(LKVERSION), _T(LKRELEASE), MsgToken(2054));
#endif
        #ifdef DITHER
        RawWrite(Surface, mes, 1, 1, RGBLIGHTGREY, WTMODE_OUTLINED);
        #else
        RawWrite(Surface, mes, 1, 1, RGBLIGHTGREY, WTMODE_NORMAL);
        #endif

        size_t freeram = CheckFreeRam() / 1024;
        TCHAR buffer[MAX_PATH];
        LocalPath(buffer);
        size_t freestorage = FindFreeSpace(buffer);
        _stprintf(mes, _T("free ram %.1uM  storage %.1uM"), (unsigned int) freeram / 1024, (unsigned int) freestorage / 1024);
        #ifdef DITHER
        RawWrite(Surface, mes, 3, 0, RGBLIGHTGREY, WTMODE_OUTLINED);
        #else
        RawWrite(Surface, mes, 3, 0, RGBLIGHTGREY, WTMODE_NORMAL);
        #endif

        if (ScreenSize != ss320x240 && ScreenLandscape)
            RawWrite(Surface, _T("_______________________"), 2, 2, RGBLIGHTGREY, WTMODE_NORMAL);

        if (FullResetAsked) {
            _stprintf(mes, _T("%s"), MsgToken(1757)); // LK8000 PROFILES RESET
            RawWrite(Surface, mes, 5, 2, RGBICEWHITE, WTMODE_OUTLINED);
            _stprintf(mes, _T("%s"), MsgToken(1759)); // SELECTED IN SYSTEM
            RawWrite(Surface, mes, 6, 2, RGBICEWHITE, WTMODE_OUTLINED);
        } else {
            _stprintf(mes, _T("%s"), PilotName_Config);
            RawWrite(Surface, mes, 4, 2, RGBICEWHITE, WTMODE_OUTLINED);

            _stprintf(mes, _T("%s"), AircraftRego_Config);
            RawWrite(Surface, mes, 5, 2, RGBAMBER, WTMODE_OUTLINED);

            _stprintf(mes, _T("%s"), AircraftType_Config);
            RawWrite(Surface, mes, 6, 2, RGBAMBER, WTMODE_OUTLINED);

            LKASSERT(szPolarFile[0]);
            extern void LK_tsplitpath(const TCHAR* path, TCHAR* drv, TCHAR* dir, TCHAR* name, TCHAR * ext);
            LK_tsplitpath(szPolarFile, (TCHAR*) NULL, (TCHAR*) NULL, srcfile, (TCHAR*) NULL);

            _stprintf(mes, _T("%s %s"), MsgToken(528), srcfile); // polar file
            RawWrite(Surface, mes, 7, 2, RGBAMBER, WTMODE_OUTLINED);

            LKASSERT(startProfileFile[0]);
            LK_tsplitpath(startProfileFile, (TCHAR*) NULL, (TCHAR*) NULL, srcfile, (TCHAR*) NULL);
            _stprintf(mes, _T("%s: %s"), MsgToken(1746), srcfile);
            RawWrite(Surface, mes, 11, 1, RGBICEWHITE, WTMODE_NORMAL);
        }


        // RawWrite(hDC,_T("_______________________"),8,2, RGB_LIGHTGREY,WTMODE_NORMAL); // REMOVE FOR THE 3.0

        return;
    }

}
Пример #6
0
//
// Called by LKDrawLook8000, this is what happens when we change mapspace mode, advancing through types.
// We paint infopages, nearest, tri, etc.etc.
// Normally there is plenty of cpu available because the map is not even calculated.
// This is why we bring to the Draw thread, in the nearest pages case, also calculations.
//
void MapWindow::DrawMapSpace(LKSurface& Surface,  const RECT& rc) {

  BrushReference hB;

  TextInBoxMode_t TextDisplayMode = {0};
  TCHAR Buffer[LKSIZEBUFFERLARGE*2];
#ifdef DRAWLKSTATUS
  bool dodrawlkstatus=false;
#endif


#ifndef DITHER
  if (MapSpaceMode==MSM_WELCOME) {
	if (INVERTCOLORS)
		hB=LKBrush_Petrol;
	  else
		hB=LKBrush_Mlight;
  } else {
	if (INVERTCOLORS)
	  hB=LKBrush_Mdark;
	else
	  hB=LKBrush_Mlight;

  }
#else
  if (INVERTCOLORS)
      hB=LKBrush_Black;
  else
      hB=LKBrush_White;
#endif

  const auto oldfont = Surface.SelectObject(LKINFOFONT); // save font
  if (MapSpaceMode==MSM_WELCOME) {
      LKBitmap WelcomeBitmap = LoadSplash(_T("LKPROFILE"));
      if(WelcomeBitmap) {
          DrawSplash(Surface, WelcomeBitmap);
      }
  } else {
      Surface.FillRect(&rc, hB);
  }

  // Paint borders in green, but only in nearest pages and welcome, and not in DITHER mode
  // In case we want it in dithered mode, some changes are ready to be used.
  #ifndef DITHER
  if (MapSpaceMode==MSM_WELCOME || (!IsMultiMap() && MapSpaceMode!=MSM_MAP) )
  {
     #ifdef DITHER
     LKPen BorderPen(PEN_SOLID, ScreenThinSize, INVERTCOLORS?RGB_WHITE:RGB_BLACK);
     #else
     LKPen BorderPen(PEN_SOLID, ScreenThinSize, INVERTCOLORS?RGB_GREEN:RGB_DARKGREEN);
     #endif
     auto OldPen = Surface.SelectObject(BorderPen);
     auto OldBrush = Surface.SelectObject(LK_HOLLOW_BRUSH);

     Surface.Rectangle(rc.left, rc.top, rc.right, rc.bottom - BottomSize);

     Surface.SelectObject(OldPen);
     Surface.SelectObject(OldBrush);
  }
  #endif


#ifdef DRAWLKSTATUS
  if (LKevent==LKEVENT_NEWRUN) dodrawlkstatus=true;
#endif

  // We are entering mapspacemodes with no initial check on configured subpages.
  // Thus we need to ensure that the page is really available, or find the first valid.
  // However, this will prevent direct customkey access to pages!
  // Instead, we do it when we call next page from InfoPageChange
  // if (!ConfIP[ModeIndex][CURTYPE]) NextModeType();
  switch (MapSpaceMode) {
	case MSM_WELCOME:
#if 0
		SetModeType(LKMODE_MAP,MP_MOVING);
		RefreshMap();
		break;
#endif
#if (1)
		if (!DrawInfo.NAVWarning) {
		static double firsttime=DrawInfo.Time;
		// delayed automatic exit from welcome mode
		if ( DrawInfo.Time > (firsttime+3.0) ) {
			SetModeType(LKMODE_MAP,MP_MOVING);
			LKevent=LKEVENT_NONE;
			LKSound(_T("LK_BEEP1.WAV"));
			RefreshMap();
			break;
		}
		}
#endif
		if(GlobalModelType==MODELTYPE_PNA_MINIMAP)
		{
			SetModeType(LKMODE_MAP,MP_MOVING);
			LKevent=LKEVENT_NONE;
			break;
		}

		DrawWelcome8000(Surface, rc);
		break;
	case MSM_MAPTRK:
		SetSideviewPage(IM_HEADING);
		LKDrawMultimap_Asp(Surface,rc);
		break;
	case MSM_MAPWPT:
		#if 0
		// If there is no destination, force jump to the map
		if (GetOvertargetIndex()<0) {
			SetModeType(LKMODE_MAP,MP_MOVING);
			LKevent=LKEVENT_NONE;
			break;
		}
		#endif
		SetSideviewPage(IM_NEXT_WP);
		LKDrawMultimap_Asp(Surface,rc);
		break;
	case MSM_MAPASP:
		SetSideviewPage(IM_NEAR_AS);
		LKDrawMultimap_Asp(Surface,rc);
		break;
	case MSM_MAPRADAR:
		LKDrawMultimap_Radar(Surface,rc);
		break;
	case MSM_VISUALGLIDE:
		SetSideviewPage(IM_VISUALGLIDE);
		LKDrawMultimap_Asp(Surface,rc);
		break;
	case MSM_MAPTEST:
		LKDrawMultimap_Test(Surface,rc);
		break;
	case MSM_LANDABLE:
	case MSM_NEARTPS:
	case MSM_AIRPORTS:
	case MSM_COMMON:
	case MSM_RECENT:
	case MSM_AIRSPACES:
	case MSM_THERMALS:
	case MSM_TRAFFIC:
		DrawNearest(Surface, rc);
		break;
	case MSM_MAP:
		break;
	case MSM_INFO_THERMAL:
	case MSM_INFO_CRUISE:
	case MSM_INFO_TASK:
	case MSM_INFO_AUX:
	case MSM_INFO_TRI:
	case MSM_INFO_HSI:
	case MSM_INFO_TRF:
	case MSM_INFO_TARGET:
	case MSM_INFO_CONTEST:
		DrawInfoPage(Surface,rc, false);
		break;

  default:
    memset((void*)&TextDisplayMode, 0, sizeof(TextDisplayMode));
    TextDisplayMode.Color = RGB_WHITE;
    TextDisplayMode.NoSetFont = 1;
    TextDisplayMode.AlligneCenter = 1;
    Surface.SelectObject(LK8TargetFont);
    _stprintf(Buffer,TEXT("MapSpaceMode=%d"),MapSpaceMode);
    TextInBox(Surface, &rc, Buffer, (rc.right+rc.left)/2, NIBLSCALE(50) , &TextDisplayMode, false);
    break;
  }
#ifdef DRAWLKSTATUS
  // no need to clear dodrawlkstatus, it is already reset at each run
  if (dodrawlkstatus) DrawLKStatus(hdc, rc);
#endif
  Surface.SelectObject(oldfont);
}