Пример #1
0
int goc_labelDrawer(GOC_StElement *elem, const char *tekst)
{
	char *line; // line do wypisania
	unsigned int d; // d³ugo¶æ do kopiowania dla linii do wypisania
	unsigned int p = 0; // przesuniêcie wzglêdem pocz±tku punktu pisania
	GOC_POSITION w = goc_elementGetWidth((GOC_HANDLER)elem);
	line = (char *)malloc(w+1);
	memset(line, 0, w+1);
	memset(line, ' ', w);
	if ( tekst )
		d = strlen(tekst) > w ? w : strlen(tekst);
	else
		d = w;
	switch ( elem->flag & COC_EFLAGA_G_JUSTIFY )
	{
		case GOC_EFLAGA_RIGHT:
			p = w - d;
			break;
		case GOC_EFLAGA_LEFT:
			p = 0;
			break;
		case GOC_EFLAGA_CENTER:
			p = w - d;
			p >>= 1;
			break;
	}
	if ( tekst )
		memcpy( line + p, tekst, d );
	goc_gotoxy( 
		goc_elementGetScreenX( (GOC_HANDLER)elem ),
		goc_elementGetScreenY( (GOC_HANDLER)elem ) );
	goc_textallcolor( elem->color );
	fputs( line, stdout );
	free(line);
	return GOC_ERR_OK;
}
Пример #2
0
static int hotkeyNextTurnDrops(
	GOC_HANDLER u, GOC_StMessage* msg)
{
	// TODO: Setting max and min landmass for forest/hills/land seperate
	GOC_BINFO("Turn: %3d", nBiomeTurn);
	if ( nBiomeTurn <= 0 )
	{
		// fill up with sea
		generateFillUp(6);
	}
	else if ( nBiomeTurn <= biome.lands )
	{
		int *allowed = malloc(sizeof(int)*1);
		allowed[0] = 6;
		generateLandMass(1, allowed, 1);
		free(allowed);
	}
	else if ( nBiomeTurn <= biome.lands + biome.trees )
	{
		int *allowed = malloc(sizeof(int)*1);
		allowed[0] = 1;
		generateLandMass(2, allowed, 1);
		free(allowed);
	}
	else if ( nBiomeTurn <= biome.lands + biome.trees + biome.hills )
	{
		int *allowed = malloc(sizeof(int)*1);
		allowed[0] = 1;
		generateLandMass(4, allowed, 1);
		free(allowed);
	}
	else if ( nBiomeTurn <= biome.lands + biome.trees + biome.hills + biome.desert )
	{
		int *allowed = malloc(sizeof(int)*1);
		allowed[0] = 1;
		generateLandMass(5, allowed, 1);
		free(allowed);
	}
	else if ( nBiomeTurn <= biome.lands + biome.trees + biome.hills + biome.desert + biome.swamp)
	{
		int *allowed = malloc(sizeof(int)*1);
		allowed[0] = 1;
		generateLandMass(7, allowed, 1);
		free(allowed);
	}
	else
	{
		GOC_INFO("This is the end");
		// I think it's the end
		return GOC_ERR_OK;
	}
	nBiomeTurn++;
	GOC_MSG_PAINT( msgPaint );
	goc_systemSendMsg(context->mapa, msgPaint);
	goc_gotoxy(0, 0);
	goc_textallcolor(GOC_WHITE);
	printf("%03d", nBiomeTurn);
	goc_gotoxy(0, 0);
	fflush(stdout);
	return GOC_ERR_OK;
}
Пример #3
0
int labelMoveDrawer(GOC_StElement *e, const char *tekst)
{
	if ( wait )
	{
		wait--;
		return GOC_ERR_OK;
	}
	wait = 1;

	if ( width != goc_elementGetWidth( (GOC_HANDLER)e ) )
	{
		counter = 0;
		direction = 0;
		width = goc_elementGetWidth( (GOC_HANDLER)e );
	}

	goc_textallcolor(e->color);
	if ( width <= strlen( tekst ) )
	{
		char *tekstPisany = (char *)malloc(width+1);
		memset( tekstPisany, 0, width+1 );
		memcpy( tekstPisany, tekst, width );
		goc_saveXY();
		goc_gotoxy(
			goc_elementGetScreenX( (GOC_HANDLER)e ),
			goc_elementGetScreenY( (GOC_HANDLER)e ));
		puts(tekstPisany);
		goc_loadXY();
		return GOC_ERR_OK;
	}

	if ( direction )
	{
		if ( counter > 0 )
		{
			counter--;
			goc_saveXY();
			goc_gotoxy(
				goc_elementGetScreenX( (GOC_HANDLER)e ) + counter,
				goc_elementGetScreenY( (GOC_HANDLER)e ));
			printf("%s ", tekst);
			goc_loadXY();
		}
		else
		{
			direction = 0;
		}
	}
	else
	{
		if ( counter < width-strlen(tekst) )
		{
			counter++;
			goc_saveXY();
			goc_gotoxy(
				goc_elementGetScreenX( (GOC_HANDLER)e ) + counter - 1,
				goc_elementGetScreenY( (GOC_HANDLER)e ));
			printf(" %s", tekst);
			goc_loadXY();
		}
		else
		{
			direction = 1;
		}
	}
	return GOC_ERR_OK;
}