├── .gitignore ├── Blank_ChromaLink.chroma ├── Blank_Headset.chroma ├── Blank_Keyboard.chroma ├── Blank_Keypad.chroma ├── Blank_Mouse.chroma ├── Blank_Mousepad.chroma ├── ChromaLinkEffects.js ├── ChromaSDKImpl.js ├── Colors.html ├── EnvironmentSnow_Keyboard.chroma ├── FadeInOutGray_ChromaLink.chroma ├── FadeInOutGray_Headset.chroma ├── FadeInOutGray_Keyboard.chroma ├── FadeInOutGray_Keypad.chroma ├── FadeInOutGray_Mouse.chroma ├── FadeInOutGray_Mousepad.chroma ├── FireEffect_ChromaLink.chroma ├── FireEffect_Headset.chroma ├── FireEffect_Keyboard.chroma ├── FireEffect_Keypad.chroma ├── FireEffect_Mouse.chroma ├── FireEffect_Mousepad.chroma ├── HeadsetEffects.js ├── KeyboardEffects.js ├── KeypadEffects.js ├── LICENSE ├── LayerSample.html ├── ModalDlg.css ├── MouseEffects.js ├── MousematEffects.js ├── PlayAnimationSample.html ├── README.md ├── Random_ChromaLink.chroma ├── Random_Headset.chroma ├── Random_Keyboard.chroma ├── Random_Keypad.chroma ├── Random_Mouse.chroma ├── Random_Mousepad.chroma ├── RazerChromaSDKSampleApplication.html ├── RazerGreen_ChromaLink.chroma ├── RazerGreen_Headset.chroma ├── RazerGreen_Keyboard.chroma ├── RazerGreen_Keypad.chroma ├── RazerGreen_Mouse.chroma ├── RazerGreen_Mousepad.chroma ├── RingGray_ChromaLink.chroma ├── RingGray_Headset.chroma ├── RingGray_Keyboard.chroma ├── RingGray_Keypad.chroma ├── RingGray_Mouse.chroma ├── RingGray_Mousepad.chroma ├── ScriptInstallServer.cmd ├── ScriptStartServer.cmd ├── ServerNode.js ├── TabbedDlg.css ├── Template.html ├── Template.js ├── Wave_ChromaLink.chroma ├── Wave_Headset.chroma ├── Wave_Keyboard.chroma ├── Wave_Keypad.chroma ├── Wave_Mouse.chroma ├── Wave_Mousepad.chroma ├── favicon.ico ├── images ├── image_1.png ├── image_2.png ├── image_3.png ├── image_4.png └── image_5.png ├── index.html ├── jquery-3.3.1.min.js └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | package-lock.json 3 | -------------------------------------------------------------------------------- /Blank_ChromaLink.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/Blank_ChromaLink.chroma -------------------------------------------------------------------------------- /Blank_Headset.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/Blank_Headset.chroma -------------------------------------------------------------------------------- /Blank_Keyboard.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/Blank_Keyboard.chroma -------------------------------------------------------------------------------- /Blank_Keypad.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/Blank_Keypad.chroma -------------------------------------------------------------------------------- /Blank_Mouse.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/Blank_Mouse.chroma -------------------------------------------------------------------------------- /Blank_Mousepad.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/Blank_Mousepad.chroma -------------------------------------------------------------------------------- /ChromaLinkEffects.js: -------------------------------------------------------------------------------- 1 | // JavaScript source code 2 | 3 | function ChromaLinkEffects() { 4 | this.loadingFrames = false; 5 | this.loadingFrame1; 6 | this.loadingFrame2; 7 | this.loadingFrame3; 8 | this.loadingFrame4; 9 | this.loadingFrame5; 10 | 11 | this.alertFrames = false; 12 | this.positiveAlert; 13 | this.negativeAlert; 14 | this.noAlert; 15 | 16 | this.damageFrames = false; 17 | this.damageOn; 18 | this.damageOff; 19 | } 20 | 21 | ChromaLinkEffects.prototype = { 22 | createLoadingAnimation: function () { 23 | chromaSDK.createChromaLinkEffect("CHROMA_NONE"); 24 | 25 | sleep(500); 26 | 27 | var color = new Array(5); 28 | for (i = 0; i < 5; i++) color[i] = 0; 29 | 30 | for (i = 0; i < 5; i++) { 31 | color[i] = 0xa5ff; 32 | 33 | chromaSDK.createChromaLinkEffect("CHROMA_CUSTOM", color); 34 | 35 | sleep(50); 36 | } 37 | }, 38 | createHealthAmmoMana: function (type, value){ 39 | var steps = Math.ceil(value / 100.0 * 5); 40 | 41 | var data = new Array(5); 42 | for (i = 0; i < 5; i++) { 43 | data[i] = 0; 44 | } 45 | 46 | if (type == 1) { // Health 47 | var green = (value / 100.0) * 0xff; 48 | var red = 0xff - ((value / 100.0) * 0xff); 49 | var color = (green) << 8 | red; 50 | 51 | for (i = 0; i < steps; i++) { 52 | data[0] = color; 53 | } 54 | } else if (type == 2) { // Ammo 55 | for (i = 1; i < steps; i++) { 56 | data[i] = 0xffff; 57 | } 58 | } 59 | 60 | chromaSDK.createChromaLinkEffect("CHROMA_CUSTOM", data); 61 | }, 62 | createAlerts: function(type) { 63 | 64 | if (this.alertFrames == false) { 65 | this.positiveAlert = chromaSDK.preCreateChromaLinkEffect("CHROMA_STATIC", 0xff00); 66 | this.negativeAlert = chromaSDK.preCreateChromaLinkEffect("CHROMA_STATIC", 0xff); 67 | this.noAlert = chromaSDK.preCreateChromaLinkEffect("CHROMA_NONE"); 68 | this.alertFrames = true; 69 | } 70 | 71 | if (type == 1) { 72 | chromaSDK.setEffect(this.noAlert); 73 | 74 | sleep(200); 75 | 76 | chromaSDK.setEffect(this.positiveAlert); 77 | 78 | sleep(200); 79 | 80 | chromaSDK.setEffect(this.noAlert); 81 | 82 | sleep(200); 83 | 84 | chromaSDK.setEffect(this.positiveAlert); 85 | 86 | sleep(200); 87 | 88 | chromaSDK.setEffect(this.noAlert); 89 | 90 | sleep(200); 91 | 92 | chromaSDK.setEffect(this.positiveAlert); 93 | 94 | sleep(200); 95 | 96 | chromaSDK.setEffect(this.noAlert); 97 | 98 | 99 | } else if (type == 0) { 100 | 101 | chromaSDK.setEffect(this.noAlert); 102 | 103 | sleep(200); 104 | 105 | chromaSDK.setEffect(this.negativeAlert); 106 | 107 | sleep(200); 108 | 109 | chromaSDK.setEffect(this.noAlert); 110 | 111 | sleep(200); 112 | 113 | chromaSDK.setEffect(this.negativeAlert); 114 | 115 | sleep(200); 116 | 117 | chromaSDK.setEffect(this.noAlert); 118 | 119 | sleep(200); 120 | 121 | chromaSDK.setEffect(this.negativeAlert); 122 | 123 | sleep(200); 124 | 125 | chromaSDK.setEffect(this.noAlert); 126 | } 127 | }, 128 | createDamageTaken: function () { 129 | if (this.damageFrames == false) { 130 | this.damageOn = chromaSDK.preCreateChromaLinkEffect("CHROMA_STATIC", 0xff); 131 | 132 | this.damageOff = chromaSDK.preCreateChromaLinkEffect("CHROMA_NONE"); 133 | this.damageFrames = true; 134 | } 135 | 136 | chromaSDK.setEffect(this.damageOn); 137 | 138 | sleep(50); 139 | 140 | chromaSDK.setEffect(this.damageOff); 141 | }, 142 | free: function() { 143 | if (this.loadingFrames == true) { 144 | chromaSDK.deleteEffect(this.loadingFrame1); 145 | chromaSDK.deleteEffect(this.loadingFrame2); 146 | chromaSDK.deleteEffect(this.loadingFrame3); 147 | chromaSDK.deleteEffect(this.loadingFrame4); 148 | chromaSDK.deleteEffect(this.loadingFrame5); 149 | this.loadingFrames = false; 150 | } 151 | 152 | if (this.alertFrames == true) { 153 | chromaSDK.deleteEffect(this.positiveAlert); 154 | chromaSDK.deleteEffect(this.negativeAlert); 155 | chromaSDK.deleteEffect(this.noAlert); 156 | this.alertFrames = false; 157 | } 158 | 159 | if (this.damageFrames == true) { 160 | chromaSDK.deleteEffect(this.damageOn); 161 | chromaSDK.deleteEffect(this.damageOff); 162 | this.damageFrames = false; 163 | } 164 | } 165 | } 166 | -------------------------------------------------------------------------------- /Colors.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /EnvironmentSnow_Keyboard.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/EnvironmentSnow_Keyboard.chroma -------------------------------------------------------------------------------- /FadeInOutGray_ChromaLink.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/FadeInOutGray_ChromaLink.chroma -------------------------------------------------------------------------------- /FadeInOutGray_Headset.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/FadeInOutGray_Headset.chroma -------------------------------------------------------------------------------- /FadeInOutGray_Keyboard.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/FadeInOutGray_Keyboard.chroma -------------------------------------------------------------------------------- /FadeInOutGray_Keypad.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/FadeInOutGray_Keypad.chroma -------------------------------------------------------------------------------- /FadeInOutGray_Mouse.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/FadeInOutGray_Mouse.chroma -------------------------------------------------------------------------------- /FadeInOutGray_Mousepad.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/FadeInOutGray_Mousepad.chroma -------------------------------------------------------------------------------- /FireEffect_ChromaLink.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/FireEffect_ChromaLink.chroma -------------------------------------------------------------------------------- /FireEffect_Headset.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/FireEffect_Headset.chroma -------------------------------------------------------------------------------- /FireEffect_Keyboard.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/FireEffect_Keyboard.chroma -------------------------------------------------------------------------------- /FireEffect_Keypad.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/FireEffect_Keypad.chroma -------------------------------------------------------------------------------- /FireEffect_Mouse.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/FireEffect_Mouse.chroma -------------------------------------------------------------------------------- /FireEffect_Mousepad.chroma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/razerofficial/HTML5ChromaSDK/ec61d7a1924a6facc0e136a84a00b8b87f7ce4ba/FireEffect_Mousepad.chroma -------------------------------------------------------------------------------- /HeadsetEffects.js: -------------------------------------------------------------------------------- 1 | // JavaScript source code 2 | 3 | function HeadsetEffects() { 4 | this.alertFrames = false; 5 | this.positiveAlert; 6 | this.negativeAlert; 7 | this.noAlert; 8 | 9 | this.damageFrames = false; 10 | this.damageOn; 11 | this.damageOff; 12 | } 13 | 14 | HeadsetEffects.prototype = { 15 | createHealthAmmoMana: function(type, value) { 16 | var data; 17 | if (type == 1) { // Health 18 | var green = (value / 100.0) * 0xff; 19 | var red = 0xff - ((value / 100.0) * 0xff); 20 | var color = (green) << 8 | red; 21 | 22 | for (i = 0; i < 5; i++) { 23 | data = color; 24 | } 25 | } 26 | 27 | chromaSDK.createHeadsetEffect("CHROMA_STATIC", data); 28 | }, 29 | createAlerts: function(type) { 30 | if (this.alertFrames == false) { 31 | this.positiveAlert = chromaSDK.preCreateHeadsetEffect("CHROMA_STATIC", 0xff00); 32 | this.negativeAlert = chromaSDK.preCreateHeadsetEffect("CHROMA_STATIC", 0xff); 33 | this.noAlert = chromaSDK.preCreateHeadsetEffect("CHROMA_NONE"); 34 | this.alertFrames = true; 35 | } 36 | 37 | if (type == 1) { 38 | chromaSDK.setEffect(this.noAlert); 39 | 40 | sleep(200); 41 | 42 | chromaSDK.setEffect(this.positiveAlert); 43 | 44 | sleep(200); 45 | 46 | chromaSDK.setEffect(this.noAlert); 47 | 48 | sleep(200); 49 | 50 | chromaSDK.setEffect(this.positiveAlert); 51 | 52 | sleep(200); 53 | 54 | chromaSDK.setEffect(this.noAlert); 55 | 56 | sleep(200); 57 | 58 | chromaSDK.setEffect(this.positiveAlert); 59 | 60 | sleep(200); 61 | 62 | chromaSDK.setEffect(this.noAlert); 63 | 64 | 65 | } else if (type == 0) { 66 | 67 | chromaSDK.setEffect(this.noAlert); 68 | 69 | sleep(200); 70 | 71 | chromaSDK.setEffect(this.negativeAlert); 72 | 73 | sleep(200); 74 | 75 | chromaSDK.setEffect(this.noAlert); 76 | 77 | sleep(200); 78 | 79 | chromaSDK.setEffect(this.negativeAlert); 80 | 81 | sleep(200); 82 | 83 | chromaSDK.setEffect(this.noAlert); 84 | 85 | sleep(200); 86 | 87 | chromaSDK.setEffect(this.negativeAlert); 88 | 89 | sleep(200); 90 | 91 | chromaSDK.setEffect(this.noAlert); 92 | } 93 | }, 94 | createDamageTaken: function(){ 95 | 96 | if (this.damageFrames == false) { 97 | this.damageOn = chromaSDK.preCreateHeadsetEffect("CHROMA_STATIC", 0xff); 98 | 99 | this.damageOff = chromaSDK.preCreateHeadsetEffect("CHROMA_NONE"); 100 | this.damageFrames = true; 101 | } 102 | 103 | chromaSDK.setEffect(this.damageOn); 104 | 105 | sleep(50); 106 | 107 | chromaSDK.setEffect(this.damageOff); 108 | }, 109 | free: function(){ 110 | if (this.loadingFrames == true) { 111 | chromaSDK.deleteEffect(this.loadingFrame1); 112 | chromaSDK.deleteEffect(this.loadingFrame2); 113 | chromaSDK.deleteEffect(this.loadingFrame3); 114 | chromaSDK.deleteEffect(this.loadingFrame4); 115 | chromaSDK.deleteEffect(this.loadingFrame5); 116 | chromaSDK.deleteEffect(this.loadingFrame6); 117 | chromaSDK.deleteEffect(this.loadingFrame7); 118 | chromaSDK.deleteEffect(this.loadingFrame8); 119 | chromaSDK.deleteEffect(this.loadingFrame9); 120 | chromaSDK.deleteEffect(this.loadingFrame10); 121 | chromaSDK.deleteEffect(this.loadingFrame11); 122 | chromaSDK.deleteEffect(this.loadingFrame12); 123 | this.loadingFrames = false; 124 | } 125 | 126 | if (this.alertFrames == true) { 127 | chromaSDK.deleteEffect(this.positiveAlert); 128 | chromaSDK.deleteEffect(this.negativeAlert); 129 | chromaSDK.deleteEffect(this.noAlert); 130 | this.alertFrames = false; 131 | } 132 | 133 | if (this.damageFrames == true) { 134 | chromaSDK.deleteEffect(this.damageOn); 135 | chromaSDK.deleteEffect(this.damageOff); 136 | this.damageFrames = false; 137 | } 138 | } 139 | } 140 | 141 | -------------------------------------------------------------------------------- /KeyboardEffects.js: -------------------------------------------------------------------------------- 1 | // JavaScript source code 2 | 3 | function KeyboardEffects() { 4 | this.loadingFrames = false; 5 | this.loadingFrame1; 6 | this.loadingFrame2; 7 | this.loadingFrame3; 8 | this.loadingFrame4; 9 | this.loadingFrame5; 10 | this.loadingFrame6; 11 | this.loadingFrame7; 12 | this.loadingFrame8; 13 | 14 | this.alertFrames = false; 15 | this.positiveAlert; 16 | this.negativeAlert; 17 | this.noAlert; 18 | 19 | this.damageFrames = false; 20 | this.damageOn; 21 | this.damageOff; 22 | } 23 | 24 | var timerId = 0; 25 | var blink = 0; 26 | function onKeyboadTimer(keyCode) { 27 | var color = new Array(6); 28 | for (r = 0; r < 6; r++) { 29 | color[r] = new Array(22); 30 | for (c = 0; c < 22; c++) { 31 | color[r][c] = 0; 32 | } 33 | } 34 | 35 | var key = new Array(6); 36 | for (r = 0; r < 6; r++) { 37 | key[r] = new Array(22); 38 | for (c = 0; c < 22; c++) { 39 | key[r][c] = 0; 40 | } 41 | } 42 | 43 | if (blink == 0) { 44 | if (keyCode == '87') { 45 | key[2][3] = 0; 46 | key[3][2] = 0; 47 | key[3][3] = 0; 48 | key[3][4] = 0; 49 | } else if (keyCode == '65') { 50 | key[2][3] = 0x01000000 | 0xffffff; 51 | key[3][2] = 0; 52 | key[3][3] = 0; 53 | key[3][4] = 0; 54 | } else if (keyCode == '83') { 55 | key[2][3] = 0x01000000 | 0xffffff; 56 | key[3][2] = 0x01000000 | 0xffffff; 57 | key[3][3] = 0; 58 | key[3][4] = 0; 59 | } else if (keyCode == '68') { 60 | key[2][3] = 0x01000000 | 0xffffff; 61 | key[3][2] = 0x01000000 | 0xffffff; 62 | key[3][3] = 0x01000000 | 0xffffff; 63 | key[3][4] = 0; 64 | } 65 | blink = 1; 66 | } else if (blink == 1) { 67 | if (keyCode == '87') { 68 | key[2][3] = 0x01000000 | 0xffffff; 69 | } else if (keyCode == '65') { 70 | key[2][3] = 0x01000000 | 0xffffff; 71 | key[3][2] = 0x01000000 | 0xffffff; 72 | } else if (keyCode == '83') { 73 | key[2][3] = 0x01000000 | 0xffffff; 74 | key[3][2] = 0x01000000 | 0xffffff; 75 | key[3][3] = 0x01000000 | 0xffffff; 76 | } else if (keyCode == '68') { 77 | key[2][3] = 0x01000000 | 0xffffff; 78 | key[3][2] = 0x01000000 | 0xffffff; 79 | key[3][3] = 0x01000000 | 0xffffff; 80 | key[3][4] = 0x01000000 | 0xffffff; 81 | } 82 | blink = 0; 83 | } 84 | 85 | var data = { 'color': color, 'key': key }; 86 | 87 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", data); 88 | } 89 | 90 | KeyboardEffects.prototype = { 91 | createLoadingAnimation: function () { 92 | if (this.loadingFrames == false) { 93 | this.loadingFrame1 = chromaSDK.preCreateKeyboardEffect("CHROMA_NONE"); 94 | 95 | var data = new Array(6); 96 | for (r = 0; r < 6; r++) { 97 | data[r] = new Array(22); 98 | 99 | for (c = 0; c < 22; c++) { 100 | if (c < 3) { 101 | data[r][c] = 0x00a5ff; // orange 102 | } else { 103 | data[r][c] = 0; // black 104 | } 105 | } 106 | } 107 | 108 | this.loadingFrame2 = chromaSDK.preCreateKeyboardEffect("CHROMA_CUSTOM", data); 109 | 110 | for (r = 0; r < 6; r++) { 111 | data[r] = new Array(22); 112 | 113 | for (c = 0; c < 22; c++) { 114 | if (c < 6) { 115 | data[r][c] = 0x00a5ff; // orange 116 | } else { 117 | data[r][c] = 0; // black 118 | } 119 | } 120 | } 121 | 122 | this.loadingFrame3 = chromaSDK.preCreateKeyboardEffect("CHROMA_CUSTOM", data); 123 | 124 | for (r = 0; r < 6; r++) { 125 | data[r] = new Array(22); 126 | 127 | for (c = 0; c < 22; c++) { 128 | if (c < 9) { 129 | data[r][c] = 0x00a5ff; // orange 130 | } else { 131 | data[r][c] = 0; // black 132 | } 133 | } 134 | } 135 | 136 | this.loadingFrame4 = chromaSDK.preCreateKeyboardEffect("CHROMA_CUSTOM", data); 137 | 138 | for (r = 0; r < 6; r++) { 139 | data[r] = new Array(22); 140 | 141 | for (c = 0; c < 22; c++) { 142 | if (c < 12) { 143 | data[r][c] = 0x00a5ff; // orange 144 | } else { 145 | data[r][c] = 0; // black 146 | } 147 | } 148 | } 149 | 150 | this.loadingFrame5 = chromaSDK.preCreateKeyboardEffect("CHROMA_CUSTOM", data); 151 | 152 | for (r = 0; r < 6; r++) { 153 | data[r] = new Array(22); 154 | 155 | for (c = 0; c < 22; c++) { 156 | if (c < 15) { 157 | data[r][c] = 0x00a5ff; // orange 158 | } else { 159 | data[r][c] = 0; // black 160 | } 161 | } 162 | } 163 | 164 | this.loadingFrame6 = chromaSDK.preCreateKeyboardEffect("CHROMA_CUSTOM", data); 165 | 166 | for (r = 0; r < 6; r++) { 167 | data[r] = new Array(22); 168 | 169 | for (c = 0; c < 22; c++) { 170 | if (c < 18) { 171 | data[r][c] = 0x00a5ff; // orange 172 | } else { 173 | data[r][c] = 0; // black 174 | } 175 | } 176 | } 177 | 178 | this.loadingFrame7 = chromaSDK.preCreateKeyboardEffect("CHROMA_CUSTOM", data); 179 | 180 | var color = 0x00a5ff; 181 | 182 | this.loadingFrame8 = chromaSDK.preCreateKeyboardEffect("CHROMA_STATIC", color); 183 | 184 | this.loadingFrames = true; 185 | } 186 | 187 | chromaSDK.setEffect(this.loadingFrame1); 188 | 189 | sleep(500); 190 | 191 | chromaSDK.setEffect(this.loadingFrame2); 192 | 193 | sleep(100); 194 | 195 | chromaSDK.setEffect(this.loadingFrame3); 196 | 197 | sleep(100); 198 | 199 | chromaSDK.setEffect(this.loadingFrame4); 200 | 201 | sleep(100); 202 | 203 | chromaSDK.setEffect(this.loadingFrame5); 204 | 205 | sleep(100); 206 | 207 | chromaSDK.setEffect(this.loadingFrame6); 208 | 209 | sleep(100); 210 | 211 | chromaSDK.setEffect(this.loadingFrame7); 212 | 213 | sleep(100); 214 | 215 | chromaSDK.setEffect(this.loadingFrame8); 216 | }, 217 | createTutorial: function (keyCode) { 218 | var color = new Array(6); 219 | for (r = 0; r < 6; r++) { 220 | color[r] = new Array(22); 221 | for (c = 0; c < 22; c++) { 222 | color[r][c] = 0; 223 | } 224 | } 225 | 226 | var key = new Array(6); 227 | for (r = 0; r < 6; r++) { 228 | key[r] = new Array(22); 229 | for (c = 0; c < 22; c++) { 230 | key[r][c] = 0; 231 | } 232 | } 233 | 234 | if (keyCode != '0') { 235 | if (keyCode == '87') { 236 | key[2][3] = 0x01000000 | 0xffffff; 237 | } else if (keyCode == '65') { 238 | key[2][3] = 0x01000000 | 0xffffff; 239 | key[3][2] = 0x01000000 | 0xffffff; 240 | } else if (keyCode == '83') { 241 | key[2][3] = 0x01000000 | 0xffffff; 242 | key[3][2] = 0x01000000 | 0xffffff; 243 | key[3][3] = 0x01000000 | 0xffffff; 244 | } else if (keyCode == '68') { 245 | key[2][3] = 0x01000000 | 0xffffff; 246 | key[3][2] = 0x01000000 | 0xffffff; 247 | key[3][3] = 0x01000000 | 0xffffff; 248 | key[3][4] = 0x01000000 | 0xffffff; 249 | } 250 | 251 | clearInterval(timerId); 252 | timerId = setInterval(onKeyboadTimer, 500, keyCode); 253 | } else { 254 | clearInterval(timerId); 255 | timerId = 0; 256 | 257 | for (r = 0; r < 6; r++) { 258 | for (c = 0; c < 22; c++) { 259 | color[r][c] = 0; 260 | } 261 | } 262 | 263 | for (r = 0; r < 6; r++) { 264 | for (c = 0; c < 22; c++) { 265 | key[r][c] = 0; 266 | } 267 | } 268 | 269 | key[2][3] = 0x01000000 | 0xffffff; 270 | key[3][2] = 0x01000000 | 0xffffff; 271 | key[3][3] = 0x01000000 | 0xffffff; 272 | key[3][4] = 0x01000000 | 0xffffff; 273 | } 274 | 275 | var data = { 'color': color, 'key': key }; 276 | 277 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", data); 278 | }, 279 | createActiveKeys: function () { 280 | var key = new Array(6); 281 | for (r = 0; r < 6; r++) { 282 | key[r] = new Array(22); 283 | for (c = 0; c < 22; c++) { 284 | if ((r == 0) && (c == 1)) { // Esc 285 | key[r][c] = 0x01000000 | 0xff00; 286 | } else if ((r == 2) && (c == 3)) { // W 287 | key[r][c] = 0x01000000 | 0xff00; 288 | } else if ((r == 3) && (c == 2)) { // A 289 | key[r][c] = 0x01000000 | 0xff00; 290 | } else if ((r == 3) && (c == 3)) { // S 291 | key[r][c] = 0x01000000 | 0xff00; 292 | } else if ((r == 3) && (c == 4)) { // D 293 | key[r][c] = 0x01000000 | 0xff00; 294 | } else if ((r == 4) && (c == 1)) { // Left Shift 295 | key[r][c] = 0x01000000 | 0xff00; 296 | } else if ((r == 5) && (c == 1)) { 297 | key[r][c] = 0x01000000 | 0xff00; // Left Ctrl 298 | } else if ((r == 4) && (c == 16)) { // Up arrow 299 | key[r][c] = 0x01000000 | 0xff00; 300 | } else if ((r == 5) && (c == 15)) { // Left Arrow 301 | key[r][c] = 0x01000000 | 0xff00; 302 | } else if ((r == 5) && (c == 16)) { 303 | key[r][c] = 0x01000000 | 0xff00; // Down arrow 304 | } else if ((r == 5) && (c == 17)) { 305 | key[r][c] = 0x01000000 | 0xff00; // Right arrow 306 | } else { 307 | key[r][c] = 0; 308 | } 309 | } 310 | } 311 | 312 | var color = new Array(6); 313 | for (r = 0; r < 6; r++) { 314 | color[r] = new Array(22); 315 | for (c = 0; c < 22; c++) { 316 | if (r == 0) { 317 | color[r][c] = 0xa5ff; 318 | } else { 319 | color[r][c] = 0; 320 | } 321 | } 322 | } 323 | 324 | color[0][20] = 0; 325 | 326 | var frame = { "color": color, "key": key }; 327 | 328 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", frame); 329 | 330 | sleep(50); 331 | 332 | for (c = 0; c < 22; c++) { 333 | if (c != 20) { 334 | color[0][c] = ((0xa5 * 0.3) << 8) | (0xff * 0.3); 335 | color[1][c] = 0xa5ff; 336 | } 337 | } 338 | 339 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", frame); 340 | 341 | sleep(50); 342 | 343 | for (c = 0; c < 22; c++) { 344 | if (c != 20) { 345 | color[0][c] = ((0xa5 * 0.1) << 8) | (0xff * 0.1); 346 | color[1][c] = ((0xa5 * 0.3) << 8) | (0xff * 0.3); 347 | color[2][c] = 0xa5ff; 348 | } 349 | } 350 | 351 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", frame); 352 | 353 | sleep(50); 354 | 355 | for (c = 0; c < 22; c++) { 356 | if (c != 20) { 357 | color[0][c] = 0; 358 | color[1][c] = ((0xa5 * 0.1) << 8) | (0xff * 0.1); 359 | color[2][c] = ((0xa5 * 0.3) << 8) | (0xff * 0.3); 360 | color[3][c] = 0xa5ff; 361 | } 362 | } 363 | 364 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", frame); 365 | 366 | sleep(50); 367 | 368 | for (c = 0; c < 22; c++) { 369 | if (c != 20) { 370 | color[0][c] = 0; 371 | color[1][c] = 0; 372 | color[2][c] = ((0xa5 * 0.1) << 8) | (0xff * 0.1); 373 | color[3][c] = ((0xa5 * 0.3) << 8) | (0xff * 0.3); 374 | color[4][c] = 0xa5ff; 375 | } 376 | } 377 | 378 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", frame); 379 | 380 | sleep(50); 381 | 382 | for (c = 0; c < 22; c++) { 383 | if (c != 20) { 384 | color[0][c] = 0; 385 | color[1][c] = 0; 386 | color[2][c] = 0; 387 | color[3][c] = ((0xa5 * 0.1) << 8) | (0xff * 0.1); 388 | color[4][c] = ((0xa5 * 0.3) << 8) | (0xff * 0.3); 389 | color[5][c] = 0xa5ff; 390 | } 391 | } 392 | 393 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", frame); 394 | 395 | sleep(50); 396 | 397 | for (c = 0; c < 22; c++) { 398 | if (c != 20) { 399 | color[0][c] = 0; 400 | color[1][c] = 0; 401 | color[2][c] = 0; 402 | color[3][c] = 0; 403 | color[4][c] = ((0xa5 * 0.1) << 8) | (0xff * 0.1); 404 | color[5][c] = ((0xa5 * 0.3) << 8) | (0xff * 0.3); 405 | } 406 | } 407 | 408 | color[0][20] = 0xa5ff; 409 | 410 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", frame); 411 | 412 | sleep(50); 413 | 414 | for (c = 0; c < 22; c++) { 415 | if (c != 20) { 416 | color[0][c] = 0; 417 | color[1][c] = 0; 418 | color[2][c] = 0; 419 | color[3][c] = 0; 420 | color[4][c] = 0; 421 | color[5][c] = ((0xa5 * 0.1) << 8) | (0xff * 0.1); 422 | } 423 | } 424 | 425 | color[0][20] = ((0xa5 * 0.3) << 8) | (0xff * 0.3); 426 | 427 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", frame); 428 | 429 | sleep(50); 430 | 431 | for (c = 0; c < 22; c++) { 432 | if (c != 20) { 433 | color[0][c] = 0; 434 | color[1][c] = 0; 435 | color[2][c] = 0; 436 | color[3][c] = 0; 437 | color[4][c] = 0; 438 | color[5][c] = 0; 439 | } 440 | } 441 | 442 | color[0][20] = ((0xa5 * 0.1) << 8) | (0xff * 0.1); 443 | 444 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", frame); 445 | 446 | sleep(50); 447 | 448 | color[0][20] = 0; 449 | 450 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", frame); 451 | }, 452 | createHealthAmmoMana: function (type, value) { 453 | var key = new Array(6); 454 | for (r = 0; r < 6; r++) { 455 | key[r] = new Array(22); 456 | for (c = 0; c < 22; c++) { 457 | key[r][c] = 0; 458 | } 459 | } 460 | 461 | if (type == 1) { 462 | for (c = 3; c < (3 + (12 * (value / 100.0))) ; c++) { 463 | var green = (value / 100.0) * 0xff; 464 | var red = 0xff - ((value / 100.0) * 0xff); 465 | var color = (green) << 8 | red; 466 | 467 | key[0][c] = 0x01000000 | color; 468 | } 469 | } else if (type == 2) { 470 | for (c = 2; c < (2 + (10 * (value / 100.0))) ; c++) { 471 | key[1][c] = 0x01000000 | 0xffff; 472 | } 473 | } 474 | 475 | var color = new Array(6); 476 | for (r = 0; r < 6; r++) { 477 | color[r] = new Array(22); 478 | for (c = 0; c < 22; c++) { 479 | color[r][c] = 0; 480 | } 481 | } 482 | 483 | var data = { "color": color, "key": key }; 484 | 485 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", data); 486 | }, 487 | createAlerts: function (type) { 488 | 489 | if (this.alertFrames == false) { 490 | this.positiveAlert = chromaSDK.preCreateKeyboardEffect("CHROMA_STATIC", 0xff00); 491 | this.negativeAlert = chromaSDK.preCreateKeyboardEffect("CHROMA_STATIC", 0xff); 492 | this.noAlert = chromaSDK.preCreateKeyboardEffect("CHROMA_NONE"); 493 | this.alertFrames = true; 494 | } 495 | 496 | if (type == 1) { 497 | chromaSDK.setEffect(this.noAlert); 498 | 499 | sleep(200); 500 | 501 | chromaSDK.setEffect(this.positiveAlert); 502 | 503 | sleep(200); 504 | 505 | chromaSDK.setEffect(this.noAlert); 506 | 507 | sleep(200); 508 | 509 | chromaSDK.setEffect(this.positiveAlert); 510 | 511 | sleep(200); 512 | 513 | chromaSDK.setEffect(this.noAlert); 514 | 515 | sleep(200); 516 | 517 | chromaSDK.setEffect(this.positiveAlert); 518 | 519 | sleep(200); 520 | 521 | chromaSDK.setEffect(this.noAlert); 522 | 523 | 524 | } else if (type == 0) { 525 | 526 | chromaSDK.setEffect(this.noAlert); 527 | 528 | sleep(200); 529 | 530 | chromaSDK.setEffect(this.negativeAlert); 531 | 532 | sleep(200); 533 | 534 | chromaSDK.setEffect(this.noAlert); 535 | 536 | sleep(200); 537 | 538 | chromaSDK.setEffect(this.negativeAlert); 539 | 540 | sleep(200); 541 | 542 | chromaSDK.setEffect(this.noAlert); 543 | 544 | sleep(200); 545 | 546 | chromaSDK.setEffect(this.negativeAlert); 547 | 548 | sleep(200); 549 | 550 | chromaSDK.setEffect(this.noAlert); 551 | } 552 | }, 553 | createCooldownTimer: function (value) { 554 | var steps = Math.ceil(18 * (value / 100.0)); 555 | 556 | var rowIndex = [2, 2, 3, 4, 4, 4, 3, 2, 3, 2, 2, 3, 4, 4, 4, 3, 2, 3]; 557 | var colIndex = [19, 20, 20, 20, 19, 18, 18, 18, 19, 19, 20, 20, 20, 19, 18, 18, 18, 19]; 558 | var colors = [0x017d7d7d, 0x017d7d7d, 0x017d7d7d, 0x017d7d7d, 0x017d7d7d, 0x017d7d7d, 0x017d7d7d, 0x017d7d7d, 0x017d7d7d, 0x0100ffff, 0x0100ffff, 0x0100ffff, 0x0100ffff, 0x0100ffff, 0x0100ffff, 0x0100ffff, 0x0100ffff, 0x0100ffff] 559 | 560 | var key = new Array(6); 561 | for (r = 0; r < 6; r++) { 562 | key[r] = new Array(22); 563 | for (c = 0; c < 22; c++) { 564 | key[r][c] = 0; 565 | } 566 | } 567 | 568 | for (i = 0; i < steps; i++) { 569 | key[rowIndex[i]][colIndex[i]] = colors[i]; 570 | } 571 | 572 | var color = new Array(6); 573 | for (r = 0; r < 6; r++) { 574 | color[r] = new Array(22); 575 | for (c = 0; c < 22; c++) { 576 | color[r][c] = 0; 577 | } 578 | } 579 | 580 | var data = { "color": color, "key": key }; 581 | 582 | chromaSDK.createKeyboardEffect("CHROMA_CUSTOM_KEY", data); 583 | }, 584 | createDamagaTaken: function () { 585 | 586 | if (this.damageFrames == false) { 587 | this.damageOn = chromaSDK.preCreateKeyboardEffect("CHROMA_STATIC", 0xff); 588 | 589 | this.damageOff = chromaSDK.preCreateKeyboardEffect("CHROMA_NONE"); 590 | this.damageFrames = true; 591 | } 592 | 593 | chromaSDK.setEffect(this.damageOn); 594 | 595 | sleep(50); 596 | 597 | chromaSDK.setEffect(this.damageOff); 598 | }, 599 | free: function () { 600 | if (this.loadingFrames == true) { 601 | 602 | var effectIds = JSON.stringify({ 603 | "id": [ 604 | this.loadingFrame1, 605 | this.loadingFrame2, 606 | this.loadingFrame3, 607 | this.loadingFrame4, 608 | this.loadingFrame5, 609 | this.loadingFrame6, 610 | this.loadingFrame7, 611 | this.loadingFrame8 612 | ] 613 | }); 614 | chromaSDK.deleteEffectGroup(effectIds); 615 | 616 | //chromaSDK.deleteEffect(this.loadingFrame1); 617 | //chromaSDK.deleteEffect(this.loadingFrame2); 618 | //chromaSDK.deleteEffect(this.loadingFrame3); 619 | //chromaSDK.deleteEffect(this.loadingFrame4); 620 | //chromaSDK.deleteEffect(this.loadingFrame5); 621 | //chromaSDK.deleteEffect(this.loadingFrame6); 622 | //chromaSDK.deleteEffect(this.loadingFrame7); 623 | //chromaSDK.deleteEffect(this.loadingFrame8); 624 | this.loadingFrames = false; 625 | } 626 | 627 | if (this.alertFrames == true) { 628 | chromaSDK.deleteEffect(this.positiveAlert); 629 | chromaSDK.deleteEffect(this.negativeAlert); 630 | chromaSDK.deleteEffect(this.noAlert); 631 | this.alertFrames = false; 632 | } 633 | 634 | if (this.damageFrames == true) { 635 | chromaSDK.deleteEffect(this.damageOn); 636 | chromaSDK.deleteEffect(this.damageOff); 637 | this.damageFrames = false; 638 | } 639 | } 640 | } 641 | -------------------------------------------------------------------------------- /KeypadEffects.js: -------------------------------------------------------------------------------- 1 | // JavaScript source code 2 | function KeypadEffects () { 3 | this.loadingFrames = false; 4 | this.loadingFrame1; 5 | this.loadingFrame2; 6 | this.loadingFrame3; 7 | this.loadingFrame4; 8 | this.loadingFrame5; 9 | this.loadingFrame6; 10 | 11 | this.alertFrames = false; 12 | this.positiveAlert; 13 | this.negativeAlert; 14 | this.noAlert; 15 | 16 | this.damageFrames = false; 17 | this.damageOn; 18 | this.damageOff; 19 | } 20 | 21 | var timerId; 22 | var blink = 0; 23 | function onKeypadTimer(keyCode) { 24 | var color = new Array(4); 25 | for (r = 0; r < 4; r++) { 26 | color[r] = new Array(5); 27 | for (c = 0; c < 5; c++) { 28 | color[r][c] = 0; 29 | } 30 | } 31 | 32 | if (blink == 0) { 33 | if (keyCode == '87') { 34 | color[1][2] = 0; 35 | color[2][1] = 0; 36 | color[2][2] = 0; 37 | color[2][3] = 0; 38 | } else if (keyCode == '65') { 39 | color[1][2] = 0xffffff; 40 | color[2][1] = 0; 41 | color[2][2] = 0; 42 | color[2][3] = 0; 43 | } else if (keyCode == '83') { 44 | color[1][2] = 0xffffff; 45 | color[2][1] = 0xffffff; 46 | color[2][2] = 0; 47 | color[2][3] = 0; 48 | } else if (keyCode == '68') { 49 | color[1][2] = 0xffffff; 50 | color[2][1] = 0xffffff; 51 | color[2][2] = 0xffffff; 52 | color[2][3] = 0; 53 | } 54 | blink = 1; 55 | } else if (blink == 1) { 56 | if (keyCode == '87') { 57 | color[1][2] = 0x01000000 | 0xffffff; 58 | } else if (keyCode == '65') { 59 | color[1][2] = 0x01000000 | 0xffffff; 60 | color[2][1] = 0x01000000 | 0xffffff; 61 | } else if (keyCode == '83') { 62 | color[1][2] = 0x01000000 | 0xffffff; 63 | color[2][1] = 0x01000000 | 0xffffff; 64 | color[2][2] = 0x01000000 | 0xffffff; 65 | } else if (keyCode == '68') { 66 | color[1][2] = 0x01000000 | 0xffffff; 67 | color[2][1] = 0x01000000 | 0xffffff; 68 | color[2][2] = 0x01000000 | 0xffffff; 69 | color[2][3] = 0x01000000 | 0xffffff; 70 | } 71 | blink = 0; 72 | } 73 | 74 | chromaSDK.createKeypadEffect("CHROMA_CUSTOM", color); 75 | } 76 | 77 | KeypadEffects.prototype = { 78 | createLoadingAnimation: function () { 79 | var data = new Array(4); 80 | for (r = 0; r < 4; r++) { 81 | data[r] = new Array(5); 82 | 83 | for (c = 0; c < 5; c++) { 84 | data[r][c] = 0; 85 | } 86 | } 87 | 88 | chromaSDK.createKeypadEffect("CHROMA_NONE"); 89 | 90 | sleep(500); 91 | 92 | for (c = 0; c < 5; c++) { 93 | 94 | for (r = 0; r < 4; r++) { 95 | data[r][c] = 0xa5ff; 96 | } 97 | 98 | sleep(100); 99 | 100 | chromaSDK.createKeypadEffect("CHROMA_CUSTOM", data); 101 | } 102 | }, 103 | createTutorial: function (keyCode) { 104 | var color = new Array(4); 105 | for (r = 0; r < 4; r++) { 106 | color[r] = new Array(5); 107 | for (c = 0; c < 5; c++) { 108 | color[r][c] = 0; 109 | } 110 | } 111 | 112 | if (keyCode != '0') { 113 | 114 | if (keyCode == '87') { 115 | color[1][2] = 0xffffff; 116 | } else if (keyCode == '65') { 117 | color[1][2] = 0xffffff; 118 | color[2][1] = 0xffffff; 119 | } else if (keyCode == '83') { 120 | color[1][2] = 0xffffff; 121 | color[2][1] = 0xffffff; 122 | color[2][2] = 0xffffff; 123 | } else if (keyCode == '68') { 124 | color[1][2] = 0xffffff; 125 | color[2][1] = 0xffffff; 126 | color[2][2] = 0xffffff; 127 | color[2][3] = 0xffffff; 128 | } 129 | 130 | clearInterval(timerId); 131 | timerId = setInterval(onKeypadTimer, 500, keyCode); 132 | } else { 133 | clearInterval(timerId); 134 | timerId = 0; 135 | 136 | var color = new Array(4); 137 | for (r = 0; r < 4; r++) { 138 | color[r] = new Array(5); 139 | for (c = 0; c < 5; c++) { 140 | color[r][c] = 0; 141 | } 142 | } 143 | 144 | color[1][2] = 0xffffff; 145 | color[2][1] = 0xffffff; 146 | color[2][2] = 0xffffff; 147 | color[2][3] = 0xffffff; 148 | } 149 | 150 | chromaSDK.createKeypadEffect("CHROMA_CUSTOM", color); 151 | }, 152 | createActiveKeys: function() { 153 | var color = new Array(4); 154 | for (r = 0; r < 4; r++) { 155 | color[r] = new Array(5); 156 | for (c = 0; c < 5; c++) { 157 | color[r][c] = 0; 158 | } 159 | } 160 | 161 | color[1][2] = 0xff00; 162 | color[2][1] = 0xff00; 163 | color[2][2] = 0xff00; 164 | color[2][3] = 0xff00; 165 | 166 | chromaSDK.createKeypadEffect("CHROMA_CUSTOM", color); 167 | 168 | sleep(50); 169 | 170 | for (c = 0; c < 5; c++) { 171 | color[0][c] = 0xa5ff; 172 | } 173 | 174 | color[1][2] = 0xff00; 175 | color[2][1] = 0xff00; 176 | color[2][2] = 0xff00; 177 | color[2][3] = 0xff00; 178 | 179 | chromaSDK.createKeypadEffect("CHROMA_CUSTOM", color); 180 | 181 | sleep(50); 182 | 183 | for (c = 0; c < 5; c++) { 184 | color[0][c] = ((0xa5 * 0.3) << 8) | (0xff * 0.3); 185 | color[1][c] = 0xa5ff; 186 | } 187 | 188 | color[1][2] = 0xff00; 189 | color[2][1] = 0xff00; 190 | color[2][2] = 0xff00; 191 | color[2][3] = 0xff00; 192 | 193 | chromaSDK.createKeypadEffect("CHROMA_CUSTOM", color); 194 | 195 | sleep(50); 196 | 197 | for (c = 0; c < 5; c++) { 198 | color[0][c] = ((0xa5 * 0.1) << 8) | (0xff * 0.1); 199 | color[1][c] = ((0xa5 * 0.3) << 8) | (0xff * 0.3); 200 | color[2][c] = 0xa5ff; 201 | } 202 | 203 | color[1][2] = 0xff00; 204 | color[2][1] = 0xff00; 205 | color[2][2] = 0xff00; 206 | color[2][3] = 0xff00; 207 | 208 | chromaSDK.createKeypadEffect("CHROMA_CUSTOM", color); 209 | 210 | sleep(50); 211 | 212 | for (c = 0; c < 5; c++) { 213 | color[0][c] = 0; 214 | color[1][c] = ((0xa5 * 0.1) << 8) | (0xff * 0.1); 215 | color[2][c] = ((0xa5 * 0.3) << 8) | (0xff * 0.3); 216 | color[3][c] = 0xa5ff; 217 | } 218 | 219 | color[1][2] = 0xff00; 220 | color[2][1] = 0xff00; 221 | color[2][2] = 0xff00; 222 | color[2][3] = 0xff00; 223 | 224 | chromaSDK.createKeypadEffect("CHROMA_CUSTOM", color); 225 | 226 | sleep(50); 227 | 228 | for (c = 0; c < 5; c++) { 229 | color[0][c] = 0; 230 | color[1][c] = 0; 231 | color[2][c] = ((0xa5 * 0.1) << 8) | (0xff * 0.1); 232 | color[3][c] = ((0xa5 * 0.3) << 8) | (0xff * 0.3); 233 | } 234 | 235 | color[1][2] = 0xff00; 236 | color[2][1] = 0xff00; 237 | color[2][2] = 0xff00; 238 | color[2][3] = 0xff00; 239 | 240 | chromaSDK.createKeypadEffect("CHROMA_CUSTOM", color); 241 | 242 | sleep(50); 243 | 244 | for (c = 0; c < 5; c++) { 245 | color[0][c] = 0; 246 | color[1][c] = 0; 247 | color[2][c] = 0; 248 | color[3][c] = ((0xa5 * 0.1) << 8) | (0xff * 0.1); 249 | } 250 | 251 | color[1][2] = 0xff00; 252 | color[2][1] = 0xff00; 253 | color[2][2] = 0xff00; 254 | color[2][3] = 0xff00; 255 | 256 | chromaSDK.createKeypadEffect("CHROMA_CUSTOM", color); 257 | 258 | sleep(50); 259 | 260 | for (c = 0; c < 5; c++) { 261 | color[0][c] = 0; 262 | color[1][c] = 0; 263 | color[2][c] = 0; 264 | color[3][c] = 0; 265 | } 266 | 267 | color[1][2] = 0xff00; 268 | color[2][1] = 0xff00; 269 | color[2][2] = 0xff00; 270 | color[2][3] = 0xff00; 271 | 272 | chromaSDK.createKeypadEffect("CHROMA_CUSTOM", color); 273 | }, 274 | createHealthAmmoMana: function(type, value) { 275 | var data = new Array(4); 276 | for (r = 0; r < 4; r++) { 277 | data[r] = new Array(5); 278 | for (c = 0; c < 5; c++) { 279 | data[r][c] = 0; 280 | } 281 | } 282 | 283 | if (type == 1) { 284 | for (c = 0; c < (5 * (value / 100.0)) ; c++) { 285 | var green = (value / 100.0) * 0xff; 286 | var red = 0xff - ((value / 100.0) * 0xff); 287 | var color = (green) << 8 | red; 288 | 289 | data[0][c] = color; 290 | } 291 | } else if (type == 2) { 292 | for (c = 0; c < (5 * (value / 100.0)) ; c++) { 293 | data[3][c] = 0xffff; 294 | } 295 | } 296 | 297 | chromaSDK.createKeypadEffect("CHROMA_CUSTOM", data); 298 | }, 299 | createAlerts: function(type) { 300 | 301 | if (this.alertFrames == false) { 302 | this.positiveAlert = chromaSDK.preCreateKeypadEffect("CHROMA_STATIC", 0xff00); 303 | this.negativeAlert = chromaSDK.preCreateKeypadEffect("CHROMA_STATIC", 0xff); 304 | this.noAlert = chromaSDK.preCreateKeypadEffect("CHROMA_NONE"); 305 | this.alertFrames = true; 306 | } 307 | 308 | if (type == 1) { 309 | chromaSDK.setEffect(this.noAlert); 310 | 311 | sleep(200); 312 | 313 | chromaSDK.setEffect(this.positiveAlert); 314 | 315 | sleep(200); 316 | 317 | chromaSDK.setEffect(this.noAlert); 318 | 319 | sleep(200); 320 | 321 | chromaSDK.setEffect(this.positiveAlert); 322 | 323 | sleep(200); 324 | 325 | chromaSDK.setEffect(this.noAlert); 326 | 327 | sleep(200); 328 | 329 | chromaSDK.setEffect(this.positiveAlert); 330 | 331 | sleep(200); 332 | 333 | chromaSDK.setEffect(this.noAlert); 334 | 335 | 336 | } else if (type == 0) { 337 | 338 | chromaSDK.setEffect(this.noAlert); 339 | 340 | sleep(200); 341 | 342 | chromaSDK.setEffect(this.negativeAlert); 343 | 344 | sleep(200); 345 | 346 | chromaSDK.setEffect(this.noAlert); 347 | 348 | sleep(200); 349 | 350 | chromaSDK.setEffect(this.negativeAlert); 351 | 352 | sleep(200); 353 | 354 | chromaSDK.setEffect(this.noAlert); 355 | 356 | sleep(200); 357 | 358 | chromaSDK.setEffect(this.negativeAlert); 359 | 360 | sleep(200); 361 | 362 | chromaSDK.setEffect(this.noAlert); 363 | } 364 | }, 365 | createCooldownTimer: function(value) { 366 | var steps = Math.ceil(14 * (value / 100.0)); 367 | 368 | var rowIndex = [0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 2, 1]; 369 | var colIndex = [0, 1, 2, 3, 4, 4, 4, 4, 3, 2, 1, 0, 0, 0]; 370 | 371 | var color= new Array(4); 372 | for (r = 0; r < 4; r++) { 373 | color[r] = new Array(5); 374 | for (c = 0; c < 5; c++) { 375 | color[r][c] = 0; 376 | } 377 | } 378 | 379 | for (i = 0; i < steps; i++) { 380 | color[rowIndex[i]][colIndex[i]] = 0xffff; 381 | } 382 | 383 | chromaSDK.createKeypadEffect("CHROMA_CUSTOM", color); 384 | }, 385 | createDamagaTaken: function() { 386 | if (this.damageFrames == false) { 387 | this.damageOn = chromaSDK.preCreateKeypadEffect("CHROMA_STATIC", 0xff); 388 | 389 | this.damageOff = chromaSDK.preCreateKeypadEffect("CHROMA_NONE"); 390 | this.damageFrames = true; 391 | } 392 | 393 | chromaSDK.setEffect(this.damageOn); 394 | 395 | sleep(50); 396 | 397 | chromaSDK.setEffect(this.damageOff); 398 | }, 399 | free: function(){ 400 | if (this.loadingFrames == true) { 401 | chromaSDK.deleteEffect(this.loadingFrame1); 402 | chromaSDK.deleteEffect(this.loadingFrame2); 403 | chromaSDK.deleteEffect(this.loadingFrame3); 404 | chromaSDK.deleteEffect(this.loadingFrame4); 405 | chromaSDK.deleteEffect(this.loadingFrame5); 406 | chromaSDK.deleteEffect(this.loadingFrame6); 407 | this.loadingFrames = false; 408 | } 409 | 410 | if (this.alertFrames == true) { 411 | chromaSDK.deleteEffect(this.positiveAlert); 412 | chromaSDK.deleteEffect(this.negativeAlert); 413 | chromaSDK.deleteEffect(this.noAlert); 414 | this.alertFrames = false; 415 | } 416 | 417 | if (this.damageFrames == true) { 418 | chromaSDK.deleteEffect(this.damageOn); 419 | chromaSDK.deleteEffect(this.damageOff); 420 | this.damageFrames = false; 421 | } 422 | } 423 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Razer, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LayerSample.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 26 | 27 | 323 | 324 | 325 | 326 | 327 |55 | Access-Control-Allow-Origin: https://chromasdk.io:54236/* 56 |57 | 58 |  59 | 60 | 61 | **Node.JS** (Optional) The sample project can be hosted in `Node.js` 62 | 63 | 1 Install `Node.js` 64 | 65 | 2 Open a terminal in the project folder 66 | 67 | 3 Install `Node.js` dependencies 68 | 69 | ``` 70 | npm install 71 | ``` 72 | 73 | 4 Start the server 74 | 75 | ``` 76 | node ServerNode.js 77 | ``` 78 | 79 | 5 Browse the `Node.js` server and pick one of the samples at [http://localhost:1337/](http://localhost:1337/) 80 | 81 | **Hosted** 82 | 83 | 1 Upload the project files to an online website 84 | 85 | 2 Browse `PlayAnimationSample.html` 86 | 87 |  88 | 89 | 3 Browse `RazerChromaSDKSampleApplication.html` 90 | 91 |  92 | 93 | 4 Browse 'LayerSample.html' 94 | 95 |  96 | 97 | 98 | ## Assets 99 | 100 | This library supports the `Chroma` animation exports from [UE4](https://github.com/RazerOfficial/UE4ChromaSDK), [Unity](https://github.com/RazerOfficial/UnityNativeChromaSDK/), and [GameMaker](https://github.com/RazerOfficial/GameMakerChromaExtension). 101 | 102 | **Import Animation From Unity** 103 | 104 |
*Tested in IE 11
259 |