343Fermer345
FarewellLe 25/04/2009 à 00:21
Je sais pas comment dire, mais le C me fait un peu peur à un niveau. Mon code de tout de suite :
Choix du mode de l'outil courant
if (Key == KEY_MODE)
{
	if ((MenuResult = DrawMenu(&ModeMenu,DScreen)) == 1)
	{
		if ((MenuResult2 = DrawMenu(&ModeMenuLP,DScreen)) == 1)
		{
			if (MainData.Tool == TOOL_LINE) MainData.LineModePlane0 = A_NORMAL;
			if (MainData.Tool == TOOL_CIRCLE) MainData.CircleModePlane0 = A_NORMAL;
			if (MainData.Tool == TOOL_ELLIPSE) MainData.EllipseModePlane0 = A_NORMAL;
			if (MainData.Tool == TOOL_RECTANGLE) MainData.RectangleModePlane0 = A_NORMAL;
			if (MainData.Tool == TOOL_FRAME) MainData.FrameModePlane0 = A_NORMAL;
		}
		if (MenuResult2 == 2)
		{
			if (MainData.Tool == TOOL_LINE) MainData.LineModePlane0 = A_REVERSE;
			if (MainData.Tool == TOOL_CIRCLE) MainData.CircleModePlane0 = A_REVERSE;
			if (MainData.Tool == TOOL_ELLIPSE) MainData.EllipseModePlane0 = A_REVERSE;
			if (MainData.Tool == TOOL_RECTANGLE) MainData.RectangleModePlane0 = A_REVERSE;
			if (MainData.Tool == TOOL_FRAME) MainData.FrameModePlane0 = A_REVERSE;
		}
		if (MenuResult2 == 3)
		{
			if (MainData.Tool == TOOL_LINE) MainData.LineModePlane0 = A_XOR;
			if (MainData.Tool == TOOL_CIRCLE) MainData.CircleModePlane0 = A_XOR;
			if (MainData.Tool == TOOL_ELLIPSE) MainData.EllipseModePlane0 = A_XOR;
			if (MainData.Tool == TOOL_RECTANGLE) MainData.RectangleModePlane0 = A_XOR;
			if (MainData.Tool == TOOL_FRAME) MainData.FrameModePlane0 = A_XOR;
		}
	}
	if (MenuResult == 2)
	{
		if ((MenuResult2 = DrawMenu(&ModeMenuLP,DScreen)) == 1)
		{
			if (MainData.Tool == TOOL_LINE) MainData.LineModePlane1 = A_NORMAL;
			if (MainData.Tool == TOOL_CIRCLE) MainData.CircleModePlane1 = A_NORMAL;
			if (MainData.Tool == TOOL_ELLIPSE) MainData.EllipseModePlane1 = A_NORMAL;
			if (MainData.Tool == TOOL_RECTANGLE) MainData.RectangleModePlane1 = A_NORMAL;
			if (MainData.Tool == TOOL_FRAME) MainData.FrameModePlane1 = A_NORMAL;
		}
		if (MenuResult2 == 2)
		{
			if (MainData.Tool == TOOL_LINE) MainData.LineModePlane1 = A_REVERSE;
			if (MainData.Tool == TOOL_CIRCLE) MainData.CircleModePlane1 = A_REVERSE;
			if (MainData.Tool == TOOL_ELLIPSE) MainData.EllipseModePlane1 = A_REVERSE;
			if (MainData.Tool == TOOL_RECTANGLE) MainData.RectangleModePlane1 = A_REVERSE;
			if (MainData.Tool == TOOL_FRAME) MainData.FrameModePlane1 = A_REVERSE;
		}
		if (MenuResult2 == 3)
		{
			if (MainData.Tool == TOOL_LINE) MainData.LineModePlane1 = A_XOR;
			if (MainData.Tool == TOOL_CIRCLE) MainData.CircleModePlane1 = A_XOR;
			if (MainData.Tool == TOOL_ELLIPSE) MainData.EllipseModePlane1 = A_XOR;
			if (MainData.Tool == TOOL_RECTANGLE) MainData.RectangleModePlane1 = A_XOR;
			if (MainData.Tool == TOOL_FRAME) MainData.FrameModePlane1 = A_XOR;
		}
	}
	
}

En asm, je sais pas comment je me serais démerdé entre les structures de données et la valeur de retour du menu, mais je m'en serais certainement pas tiré avec un pavé very-like... J'ai dû très mal concevoir mon programme autour de ces données. En tout cas, l'avantage énorme, c'est qu'un tel pavé met 5 minutes à s'écrire. C'est réellement fou la différence avec l'assembleur à ce niveau !