mirror of
				https://github.com/SquidDev-CC/CC-Tweaked
				synced 2025-10-31 13:42:59 +00:00 
			
		
		
		
	Allow greyscale palettes on basic computers
This commit is contained in:
		| @@ -7,7 +7,6 @@ | |||||||
| package dan200.computercraft.client.gui; | package dan200.computercraft.client.gui; | ||||||
|  |  | ||||||
| import dan200.computercraft.core.terminal.TextBuffer; | import dan200.computercraft.core.terminal.TextBuffer; | ||||||
| import dan200.computercraft.shared.util.Colour; |  | ||||||
| import dan200.computercraft.shared.util.Palette; | import dan200.computercraft.shared.util.Palette; | ||||||
| import net.minecraft.client.renderer.GlStateManager; | import net.minecraft.client.renderer.GlStateManager; | ||||||
| import net.minecraft.client.renderer.Tessellator; | import net.minecraft.client.renderer.Tessellator; | ||||||
| @@ -17,6 +16,8 @@ import net.minecraft.client.renderer.vertex.DefaultVertexFormats; | |||||||
| import net.minecraft.util.ResourceLocation; | import net.minecraft.util.ResourceLocation; | ||||||
| import org.lwjgl.opengl.GL11; | import org.lwjgl.opengl.GL11; | ||||||
|  |  | ||||||
|  | import java.util.Arrays; | ||||||
|  |  | ||||||
| public class FixedWidthFontRenderer | public class FixedWidthFontRenderer | ||||||
| { | { | ||||||
|     public static ResourceLocation font = new ResourceLocation( "computercraft", "textures/gui/termFont.png" ); |     public static ResourceLocation font = new ResourceLocation( "computercraft", "textures/gui/termFont.png" ); | ||||||
| @@ -32,12 +33,21 @@ public class FixedWidthFontRenderer | |||||||
|         m_textureManager = textureManager; |         m_textureManager = textureManager; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private void drawChar( VertexBuffer renderer, double x, double y, int index, int color, Palette p ) |     private static void greyscaleify( float[] rgb ) | ||||||
|  |     { | ||||||
|  |         Arrays.fill(rgb, ( rgb[0] + rgb[1] + rgb[2] ) / 3.0f); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private void drawChar( VertexBuffer renderer, double x, double y, int index, int color, Palette p, boolean greyscale ) | ||||||
|     { |     { | ||||||
|         int column = index % 16; |         int column = index % 16; | ||||||
|         int row = index / 16; |         int row = index / 16; | ||||||
|  |  | ||||||
|         float[] colour = p.getColour( 15 - color ); |         float[] colour = p.getColour( 15 - color ); | ||||||
|  |         if(greyscale) | ||||||
|  |         { | ||||||
|  |             greyscaleify( colour ); | ||||||
|  |         } | ||||||
|         float r = colour[0]; |         float r = colour[0]; | ||||||
|         float g = colour[1]; |         float g = colour[1]; | ||||||
|         float b = colour[2]; |         float b = colour[2]; | ||||||
| @@ -50,9 +60,13 @@ public class FixedWidthFontRenderer | |||||||
|         renderer.pos( x + FONT_WIDTH, y + FONT_HEIGHT, 0.0 ).tex( (double) ((column + 1) * FONT_WIDTH) / 256.0, (double) ((row + 1) * FONT_HEIGHT) / 256.0 ).color( r, g, b, 1.0f ).endVertex(); |         renderer.pos( x + FONT_WIDTH, y + FONT_HEIGHT, 0.0 ).tex( (double) ((column + 1) * FONT_WIDTH) / 256.0, (double) ((row + 1) * FONT_HEIGHT) / 256.0 ).color( r, g, b, 1.0f ).endVertex(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private void drawQuad( VertexBuffer renderer, double x, double y, int color, double width, Palette p ) |     private void drawQuad( VertexBuffer renderer, double x, double y, int color, double width, Palette p, boolean greyscale ) | ||||||
|     { |     { | ||||||
|         float[] colour = p.getColour( 15 - color ); |         float[] colour = p.getColour( 15 - color ); | ||||||
|  |         if(greyscale) | ||||||
|  |         { | ||||||
|  |             greyscaleify( colour ); | ||||||
|  |         } | ||||||
|         float r = colour[0]; |         float r = colour[0]; | ||||||
|         float g = colour[1]; |         float g = colour[1]; | ||||||
|         float b = colour[2]; |         float b = colour[2]; | ||||||
| @@ -83,7 +97,7 @@ public class FixedWidthFontRenderer | |||||||
|             { |             { | ||||||
|                 colour1 = 15; |                 colour1 = 15; | ||||||
|             } |             } | ||||||
|             drawQuad( renderer, x - leftMarginSize, y, colour1, leftMarginSize, p ); |             drawQuad( renderer, x - leftMarginSize, y, colour1, leftMarginSize, p, greyScale ); | ||||||
|         } |         } | ||||||
|         if( rightMarginSize > 0.0 ) |         if( rightMarginSize > 0.0 ) | ||||||
|         { |         { | ||||||
| @@ -92,7 +106,7 @@ public class FixedWidthFontRenderer | |||||||
|             { |             { | ||||||
|                 colour2 = 15; |                 colour2 = 15; | ||||||
|             } |             } | ||||||
|             drawQuad( renderer, x + backgroundColour.length() * FONT_WIDTH, y, colour2, rightMarginSize, p ); |             drawQuad( renderer, x + backgroundColour.length() * FONT_WIDTH, y, colour2, rightMarginSize, p, greyScale ); | ||||||
|         } |         } | ||||||
|         for( int i = 0; i < backgroundColour.length(); i++ ) |         for( int i = 0; i < backgroundColour.length(); i++ ) | ||||||
|         { |         { | ||||||
| @@ -101,7 +115,7 @@ public class FixedWidthFontRenderer | |||||||
|             { |             { | ||||||
|                 colour = 15; |                 colour = 15; | ||||||
|             } |             } | ||||||
|             drawQuad( renderer, x + i * FONT_WIDTH, y, colour, FONT_WIDTH, p ); |             drawQuad( renderer, x + i * FONT_WIDTH, y, colour, FONT_WIDTH, p, greyScale ); | ||||||
|         } |         } | ||||||
|         GlStateManager.disableTexture2D(); |         GlStateManager.disableTexture2D(); | ||||||
|         tessellator.draw(); |         tessellator.draw(); | ||||||
| @@ -129,7 +143,7 @@ public class FixedWidthFontRenderer | |||||||
|             { |             { | ||||||
|                 index = (int)'?'; |                 index = (int)'?'; | ||||||
|             } |             } | ||||||
|             drawChar( renderer, x + i * FONT_WIDTH, y, index, colour, p ); |             drawChar( renderer, x + i * FONT_WIDTH, y, index, colour, p, greyScale ); | ||||||
|         } |         } | ||||||
|         tessellator.draw(); |         tessellator.draw(); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -337,12 +337,6 @@ public class TermAPI implements ILuaAPI | |||||||
|             case 20: |             case 20: | ||||||
|             { |             { | ||||||
|                 // setPaletteColour/setPaletteColor |                 // setPaletteColour/setPaletteColor | ||||||
|                 if( !m_environment.isColour() ) |  | ||||||
|                 { |  | ||||||
|                     // Make sure you can't circumvent greyscale terminals with this function. |  | ||||||
|                     throw new LuaException( "Colour not supported" ); |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 if(args.length >= 1 && args[0] instanceof HashMap) |                 if(args.length >= 1 && args[0] instanceof HashMap) | ||||||
|                 { |                 { | ||||||
|                     @SuppressWarnings( { "unchecked" } ) // There isn't really a nice way around this :( |                     @SuppressWarnings( { "unchecked" } ) // There isn't really a nice way around this :( | ||||||
| @@ -353,7 +347,7 @@ public class TermAPI implements ILuaAPI | |||||||
|  |  | ||||||
|                 if(args.length == 2 && args[0] instanceof Double && args[1] instanceof Double) |                 if(args.length == 2 && args[0] instanceof Double && args[1] instanceof Double) | ||||||
|                 { |                 { | ||||||
|                     int colour = 15 - parseColour( args, m_environment.isColour() ); |                     int colour = 15 - parseColour( args, true ); | ||||||
|                     int hex = ((Double)args[1]).intValue(); |                     int hex = ((Double)args[1]).intValue(); | ||||||
|                     float[] rgb = Palette.decodeRGB8( hex ); |                     float[] rgb = Palette.decodeRGB8( hex ); | ||||||
|                     setColour( m_terminal, colour, rgb[0], rgb[1], rgb[2] ); |                     setColour( m_terminal, colour, rgb[0], rgb[1], rgb[2] ); | ||||||
| @@ -362,7 +356,7 @@ public class TermAPI implements ILuaAPI | |||||||
|  |  | ||||||
|                 if(args.length >= 4 && args[0] instanceof Double && args[1] instanceof Double && args[2] instanceof Double && args[3] instanceof Double) |                 if(args.length >= 4 && args[0] instanceof Double && args[1] instanceof Double && args[2] instanceof Double && args[3] instanceof Double) | ||||||
|                 { |                 { | ||||||
|                     int colour = 15 - parseColour( args, m_environment.isColour() ); |                     int colour = 15 - parseColour( args, true ); | ||||||
|                     float r = ((Double)args[1]).floatValue(); |                     float r = ((Double)args[1]).floatValue(); | ||||||
|                     float g = ((Double)args[2]).floatValue(); |                     float g = ((Double)args[2]).floatValue(); | ||||||
|                     float b = ((Double)args[3]).floatValue(); |                     float b = ((Double)args[3]).floatValue(); | ||||||
|   | |||||||
| @@ -231,12 +231,6 @@ public class MonitorPeripheral implements IPeripheral | |||||||
|             { |             { | ||||||
|                 // setPaletteColour/setPaletteColor |                 // setPaletteColour/setPaletteColor | ||||||
|                 Terminal terminal = m_monitor.getTerminal().getTerminal(); |                 Terminal terminal = m_monitor.getTerminal().getTerminal(); | ||||||
|                 boolean isColour = m_monitor.getTerminal().isColour(); |  | ||||||
|  |  | ||||||
|                 if( !isColour ) |  | ||||||
|                 { |  | ||||||
|                     throw new LuaException( "Colour not supported" ); |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 if(args.length >= 1 && args[0] instanceof HashMap ) |                 if(args.length >= 1 && args[0] instanceof HashMap ) | ||||||
|                 { |                 { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Lignum
					Lignum