public void SetTextEnteringMode(TextEnteringMode mode) { _textEnteringMode = mode; }
void OnGUI() { float SPACING = 20; GUILayout.BeginHorizontal(); GUILayout.Space(4); GUILayout.Label((_textEnteringMode == TextEnteringMode.AnimName) ? "\"" + _animNameTempString + "\"" : "\"" + _animName + "\"", (_textEnteringMode == TextEnteringMode.AnimName) ? _textStyleFocused : _textStyle); GUILayout.Space(SPACING); GUILayout.Label("SIZE: " + _pixelDimensionsString, (_textEnteringMode == TextEnteringMode.PixelDimensions) ? _textStyleFocused : _textStyle); GUILayout.Space(SPACING); GUILayout.Label("HITBOX: " + _hitboxString, (_textEnteringMode == TextEnteringMode.Hitbox) ? _textStyleFocused : (_showingHitbox) ? _textStyleRed : _textStyle); GUILayout.Space(SPACING * 5); GUILayout.Label("TIME: " + _currentFrameTimeString + ((_textEnteringMode == TextEnteringMode.CurrentFrameTime) ? "" : "s"), (_textEnteringMode == TextEnteringMode.CurrentFrameTime) ? _textStyleFocused : _textStyle); GUILayout.Space(SPACING * 3); GUILayout.Label(_loopTypeString, _textStyle); GUILayout.Space(SPACING * 3); GUILayout.Label(_onionSkinString, _textStyle); GUILayout.Space(SPACING * 3); GUILayout.Label(_mirroringString, _textStyle); GUILayout.EndHorizontal(); if(Input.GetKey(KeyCode.T)) { Vector2 pos = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y); // gotta flip the y-position; float width = _textStyleFocused.CalcSize(new GUIContent(_gridIndexString)).x; GUI.TextField(new Rect(pos.x - 2, pos.y - 26, width, 20), _gridIndexString, _textStyleFocused); } if(_textEnteringMode == TextEnteringMode.LoadAnimation) { GUI.SetNextControlName("LoadAnim"); float width = _textStyleFocused.CalcSize(new GUIContent(_loadAnimString)).x; _loadAnimString = GUI.TextField(new Rect(30, 30, width, 20), _loadAnimString, _textStyleFocused); GUI.FocusControl("LoadAnim"); if(Event.current.keyCode == KeyCode.Tab) { _textEnteringMode = TextEnteringMode.None; } else if(Event.current.keyCode == KeyCode.Return) { if(_loadAnimString.Length > 0) LoadAnimationString(_loadAnimString); _textEnteringMode = TextEnteringMode.None; } } else if(_textEnteringMode == TextEnteringMode.PaletteColor) { GUI.SetNextControlName("PaletteColor"); float width = _textStyleFocused.CalcSize(new GUIContent(_paletteColorString)).x; _paletteColorString = _paletteColorString.Replace(System.Environment.NewLine, "*"); _paletteColorString = _paletteColorString.Replace(" ", string.Empty); _paletteColorString = _paletteColorString.Replace("\t", string.Empty); _paletteColorString = GUI.TextField(new Rect(_paletteInputScreenPosition.x - 2, _paletteInputScreenPosition.y - 26, width, 20), _paletteColorString, _textStyleFocused); GUI.FocusControl("PaletteColor"); if(Event.current.keyCode == KeyCode.Tab) { _textEnteringMode = TextEnteringMode.None; } else if(Event.current.keyCode == KeyCode.Return) { if(_paletteColorString == "x all" || _paletteColorString == "xall") { _palette.ClearAllColors(); _textEnteringMode = TextEnteringMode.None; return; } else if(_paletteColorString == "x") { AddNewCommand(new DeletePaletteColorCommand(_palette.PaletteColorEditIndex)); _palette.RefreshPaletteTextureColors(); _textEnteringMode = TextEnteringMode.None; return; } bool firstColor = true; bool replaceAllInstances = false; if(_paletteColorString.Length > 0 && _paletteColorString[0] == '=') { _paletteColorString = _paletteColorString.Substring(1); replaceAllInstances = true; } List<Color32> colorsToAdd = new List<Color32>(); string[] colors = _paletteColorString.Split('*'); for(int i = 0; i < colors.Length; i++) { string[] vals = colors[i].Split(','); if(vals.Length == 3 || vals.Length == 4) { byte r = 0; bool rSet = byte.TryParse(vals[0], out r); byte g = 0; bool gSet = byte.TryParse(vals[1], out g); byte b = 0; bool bSet = byte.TryParse(vals[2], out b); byte a = 0; bool aSet = false; if(vals.Length == 4) aSet = byte.TryParse(vals[3], out a); if(vals.Length == 3 && rSet && gSet && bSet) colorsToAdd.Add(new Color32(r, g, b, 255)); else if(vals.Length == 4 && rSet && gSet && bSet && aSet) colorsToAdd.Add(new Color32(r, g, b, a)); } } int currentIndex = _palette.PaletteColorEditIndex; foreach(Color32 color in colorsToAdd) { if(currentIndex > _palette.GetNumPaletteColors() - 1) break; if(firstColor) { // set swatch to the new color SetCurrentColor(color); firstColor = false; } if(replaceAllInstances) { Color32 oldColor = _palette.GetColor(currentIndex); AddNewCommand(new ReplaceColorCommand(oldColor, color)); replaceAllInstances = false; } AddNewCommand(new SetPaletteColorCommand(color, currentIndex)); currentIndex++; } _palette.RefreshPaletteTextureColors(); _textEnteringMode = TextEnteringMode.None; } } }
void Update() { // ------------------------------------------------- // UNDO // ------------------------------------------------- if(GetModifierKey() && Input.GetKeyDown(KeyCode.Z) && !GetIsEditingPixels()) UndoLastCommand(); // ------------------------------------------------- // REDO // ------------------------------------------------- if(GetModifierKey() && Input.GetKeyDown(KeyCode.Y) && !GetIsEditingPixels()) RedoLastCommand(); // ------------------------------------------------- // TOGGLE SHOWING HITBOX // ------------------------------------------------- if(Input.GetKeyDown(KeyCode.H) && _textEnteringMode == TextEnteringMode.None) { _showingHitbox = !_showingHitbox; _canvas.RefreshHitbox(); } // ------------------------------------------------- // LOADING ANIMATIONS // ------------------------------------------------- if(GetModifierKey() && Input.GetKeyDown(KeyCode.O) && !GetIsEditingPixels()) { _loadAnimString = "***PASTE ANIM DATA***"; _textEnteringMode = TextEnteringMode.LoadAnimation; } // ------------------------------------------------- // SWITCHING TOOLS // ------------------------------------------------- if(_textEnteringMode == TextEnteringMode.None) { if(Input.GetKeyDown(KeyCode.B)) SetToolMode(ToolMode.Brush); else if(Input.GetKeyDown(KeyCode.E)) SetToolMode(ToolMode.Eraser); else if(Input.GetKeyDown(KeyCode.G)) SetToolMode(ToolMode.Bucket); else if(Input.GetKeyDown(KeyCode.F)) SetToolMode(ToolMode.Dropper); } // ------------------------------------------------- // CANVAS // ------------------------------------------------- if(GetModifierKey() && Input.GetKeyDown(KeyCode.N) && !GetIsEditingPixels() && _textEnteringMode == TextEnteringMode.None) { NewCanvas(); } _canvas.UpdateCanvas(); _swatch.UpdateSwatch(); _palette.UpdatePalette(); _framePreview.UpdateFramePreview(); _patternViewer.UpdatePatternViewer(); // ------------------------------------------------- // COPYING FRAMES // ------------------------------------------------- if(GetModifierKey() && Input.GetKeyDown(KeyCode.C) && !GetIsEditingPixels()) { _canvas.GetPixels(CurrentFrame).CopyTo(_copiedPixels, 0); _canvas.DirtyPixels = true; PlayCopyEffect(); } // ------------------------------------------------- // PASTING FRAMES // ------------------------------------------------- if(GetModifierKey() && Input.GetKeyDown(KeyCode.V) && !GetIsEditingPixels()) { PlayPasteEffect(); } // ------------------------------------------------- // SAVING DATA // ------------------------------------------------- if(GetModifierKey() && Input.GetKeyDown(KeyCode.S)) { ClipboardHelper.clipBoard = GetAnimData(); Debug.Log("clipboard: " + ClipboardHelper.clipBoard); ShowConsoleText(ClipboardHelper.clipBoard); } // ------------------------------------------------- // CONSOLE TEXT // ------------------------------------------------- if(_isShowingConsoleText && (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1))) { _consoleTextWrap.SetText(""); _isShowingConsoleText = false; } // ------------------------------------------------- // TEXT INPUT // ------------------------------------------------- if(_textEnteringMode == TextEnteringMode.None) { if(Input.GetKeyDown(KeyCode.Return)) { _textEnteringMode = TextEnteringMode.CurrentFrameTime; _firstChar = true; } } else { HandleInputString(Input.inputString); // ------------------------------------------------------------------------------------- // ENTERING ANIM NAME // ------------------------------------------------------------------------------------- if(_textEnteringMode == TextEnteringMode.AnimName) { if(Input.GetKeyDown(KeyCode.Return)) { if(_animNameTempString != "") { AddNewCommand(new SetAnimNameCommand(_animNameTempString)); _textEnteringMode = TextEnteringMode.None; } } else if(Input.GetKeyDown(KeyCode.Tab)) { if(GetModifierKey()) { // edit frame time _textEnteringMode = TextEnteringMode.CurrentFrameTime; } else { // edit dimensions _textEnteringMode = TextEnteringMode.PixelDimensions; } _animNameTempString = _animName; _firstChar = true; } } // ------------------------------------------------------------------------------------- // ENTERING PIXEL DIMENSTIONS // ------------------------------------------------------------------------------------- else if(_textEnteringMode == TextEnteringMode.PixelDimensions) { if(Input.GetKeyDown(KeyCode.Return)) { string[] vals = _pixelDimensionsString.Split(','); if(vals.Length == 2) { int pw = 0; int.TryParse(vals[0], out pw); int ph = 0; int.TryParse(vals[1], out ph); if((pw != 0 && ph != 0) && !(pw == _canvas.pixelWidth && ph == _canvas.pixelHeight) && (pw <= MAX_CANVAS_WIDTH && ph <= MAX_CANVAS_HEIGHT)) { _canvas.pixelWidth = pw; _canvas.pixelHeight = ph; NewCanvas(); } _pixelDimensionsString = _canvas.pixelWidth.ToString() + "," + _canvas.pixelHeight.ToString(); _textEnteringMode = TextEnteringMode.None; } } else if(Input.GetKeyDown(KeyCode.Tab)) { if(GetModifierKey()) { // edit anim name _textEnteringMode = TextEnteringMode.AnimName; } else { // edit hitbox _textEnteringMode = TextEnteringMode.Hitbox; } _pixelDimensionsString = _canvas.pixelWidth.ToString() + "," + _canvas.pixelHeight.ToString(); _firstChar = true; } } // ------------------------------------------------------------------------------------- // ENTERING HITBOX // ------------------------------------------------------------------------------------- else if(_textEnteringMode == TextEnteringMode.Hitbox) { if(Input.GetKeyDown(KeyCode.Return)) { string[] vals = _hitboxString.Split(','); if(vals.Length == 4) { int left = -1; int.TryParse(vals[0], out left); int bottom = -1; int.TryParse(vals[1], out bottom); int width = -1; int.TryParse(vals[2], out width); int height = -1; int.TryParse(vals[3], out height); if(left >= 0 && bottom >= 0 && width > 0 && height > 0 && width <= _canvas.pixelWidth && height <= _canvas.pixelHeight && left + width <= _canvas.pixelWidth && bottom + height <= _canvas.pixelHeight) { _hitbox = new PixelRect(left, bottom, width, height); _canvas.RefreshHitbox(); } RefreshHitboxString(); _textEnteringMode = TextEnteringMode.None; } } else if(Input.GetKeyDown(KeyCode.Tab)) { if(GetModifierKey()) { // edit dimensions _textEnteringMode = TextEnteringMode.PixelDimensions; } else { // edit frame time _textEnteringMode = TextEnteringMode.CurrentFrameTime; } RefreshHitboxString(); _firstChar = true; } } // ------------------------------------------------------------------------------------- // ENTERING CURRENT FRAME TIME // ------------------------------------------------------------------------------------- else if(_textEnteringMode == TextEnteringMode.CurrentFrameTime) { if(Input.GetKeyDown(KeyCode.Return)) { float time = 0.0f; bool valid = float.TryParse(_currentFrameTimeString, out time); if(valid && time > 0.0f) { AddNewCommand(new SetCurrentFrameTimeCommand(time)); _textEnteringMode = TextEnteringMode.None; } else { _currentFrameTimeString = _framePreview.GetCurrentFrameTime().ToString(); _textEnteringMode = TextEnteringMode.None; } } else if(Input.GetKeyDown(KeyCode.Tab)) { if(GetModifierKey()) { // edit hitbox _textEnteringMode = TextEnteringMode.Hitbox; } else { // edit anim name _textEnteringMode = TextEnteringMode.AnimName; } _currentFrameTimeString = _framePreview.GetCurrentFrameTime().ToString(); _firstChar = true; } } } }