From 69974712808f014fd8e8d59023510176b4e3a657 Mon Sep 17 00:00:00 2001 From: Lignum Date: Fri, 5 May 2017 18:12:33 +0200 Subject: [PATCH] Add palette functions to monitor peripheral --- .../computercraft/core/apis/TermAPI.java | 6 +-- .../peripheral/monitor/MonitorPeripheral.java | 54 ++++++++++++++++++- .../computercraft/shared/util/Palette.java | 10 ---- 3 files changed, 56 insertions(+), 14 deletions(-) diff --git a/src/main/java/dan200/computercraft/core/apis/TermAPI.java b/src/main/java/dan200/computercraft/core/apis/TermAPI.java index 7ace08bc3..8a655c9a0 100644 --- a/src/main/java/dan200/computercraft/core/apis/TermAPI.java +++ b/src/main/java/dan200/computercraft/core/apis/TermAPI.java @@ -279,12 +279,12 @@ public class TermAPI implements ILuaAPI case 20: { // setColour/setColor - if ( args.length < 4 || !(args[0] instanceof Double) || !(args[1] instanceof Double) || !(args[2] instanceof Double) || !(args[3] instanceof Double) ) // toil and trouble + if( args.length < 4 || !(args[0] instanceof Double) || !(args[1] instanceof Double) || !(args[2] instanceof Double) || !(args[3] instanceof Double) ) // toil and trouble { throw new LuaException( "Expected number, number, number, number" ); } - if ( !m_environment.isColour() ) + if( !m_environment.isColour() ) { // Make sure you can't circumvent greyscale terminals with this function. throw new LuaException( "Colour not supported" ); @@ -320,7 +320,7 @@ public class TermAPI implements ILuaAPI { if ( m_terminal.getPalette() != null ) { - return ArrayUtils.toObject( m_terminal.getPalette().getColour64( colour ) ); + return ArrayUtils.toObject( m_terminal.getPalette().getColour( colour ) ); } } return null; diff --git a/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorPeripheral.java b/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorPeripheral.java index 366794271..21a48ec38 100644 --- a/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorPeripheral.java +++ b/src/main/java/dan200/computercraft/shared/peripheral/monitor/MonitorPeripheral.java @@ -11,6 +11,8 @@ import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.core.terminal.Terminal; +import dan200.computercraft.shared.util.Palette; +import org.apache.commons.lang3.ArrayUtils; public class MonitorPeripheral implements IPeripheral { @@ -52,7 +54,11 @@ public class MonitorPeripheral implements IPeripheral "getTextColor", "getBackgroundColour", "getBackgroundColor", - "blit" + "blit", + "setColour", + "setColor", + "getColour", + "getColor" }; } @@ -218,6 +224,52 @@ public class MonitorPeripheral implements IPeripheral terminal.setCursorPos( terminal.getCursorX() + text.length(), terminal.getCursorY() ); return null; } + case 20: + case 21: + { + // setColour/setColor + Terminal terminal = m_monitor.getTerminal().getTerminal(); + Palette palette = terminal.getPalette(); + + // setColour/setColor + if( args.length < 4 || !(args[0] instanceof Double) || !(args[1] instanceof Double) || !(args[2] instanceof Double) || !(args[3] instanceof Double) ) + { + throw new LuaException( "Expected number, number, number, number" ); + } + + boolean isColour = m_monitor.getTerminal().isColour(); + + if( !isColour ) + { + throw new LuaException( "Colour not supported" ); + } + + int colour = 15 - dan200.computercraft.core.apis.TermAPI.parseColour( args, true ); + float r = ((Double)args[1]).floatValue(); + float g = ((Double)args[2]).floatValue(); + float b = ((Double)args[3]).floatValue(); + + if( palette != null ) + { + palette.setColour( colour, r, g, b ); + } + return null; + } + case 22: + case 23: + { + // getColour/getColor + Terminal terminal = m_monitor.getTerminal().getTerminal(); + Palette palette = terminal.getPalette(); + + int colour = 15 - dan200.computercraft.core.apis.TermAPI.parseColour( args, m_monitor.getTerminal().isColour() ); + + if( palette != null ) + { + return ArrayUtils.toObject( palette.getColour( colour ) ); + } + return null; + } } return null; } diff --git a/src/main/java/dan200/computercraft/shared/util/Palette.java b/src/main/java/dan200/computercraft/shared/util/Palette.java index 80952091f..3d40d6af8 100644 --- a/src/main/java/dan200/computercraft/shared/util/Palette.java +++ b/src/main/java/dan200/computercraft/shared/util/Palette.java @@ -70,16 +70,6 @@ public class Palette return null; } - public double[] getColour64( int i ) - { - if( i >= 0 && i < colours.length ) - { - PaletteColour c = colours[ i ]; - return new double[] { (double)c.m_r, (double)c.m_g, (double)c.m_b }; - } - return null; - } - public void resetColour( int i ) { if(i >= 0 && i < colours.length )