示例#1
0
 public void LoadArt(CardArt artData)
 {
     if (string.IsNullOrEmpty(artData.imageDir))
     {
         print("no dir");
         art.color = Color.clear;
     }
     else if (!File.Exists(Path.Combine(CardLoader.GetSavePath(""), artData.imageDir)))
     {
         print("dir doesn't exist");
         art.color = Color.clear;
     }
     else
     {
         LoadArt(CastleTools.LoadImage(Path.Combine(CardLoader.GetSavePath(""), artData.imageDir)));
         art.color = Color.white;
     }
     if (string.IsNullOrEmpty(artData.lightingDir))
     {
         print("no dir");
         lighting.color = Color.clear;
     }
     else if (!File.Exists(Path.Combine(CardLoader.GetSavePath(""), artData.lightingDir)))
     {
         print("dir doesn't exist");
         lighting.color = Color.clear;
     }
     else
     {
         LoadLighting(CastleTools.LoadImage(Path.Combine(CardLoader.GetSavePath(""), artData.lightingDir)));
         lighting.color = Color.white;
     }
     ApplyMask(artData.masked);
 }
示例#2
0
        static void CreateButton()
        {
            Object       prefabObject = AssetDatabase.LoadAssetAtPath <Object>("Assets/CastleFramework/Primitives/CastleButton.prefab");
            CastleButton castleButton = ((GameObject)PrefabUtility.InstantiatePrefab(prefabObject)).GetComponent <CastleButton>();
            string       basePath     = "Assets/Animations/Buttons/Button";
            string       _path        = CastleTools.FindNonConflictingDir(basePath, ".controller");

            AnimatorController control = AnimatorController.CreateAnimatorControllerAtPath(_path);
            AnimatorState      spawn   = AddState(control, "Spawn", false, false, true);
            AnimatorState      normal  = AddState(control, "Normal", true);

            AddExit(spawn, normal);
            AnimatorState enterHover = AddState(control, "EnterHover", false);

            AddParam(control, "EnterHover");
            AddTransition(normal, enterHover, "ExitHover");
            AnimatorState hover = AddState(control, "Hover");

            AddExit(enterHover, hover);
            AnimatorState exitHover = AddState(control, "ExitHover", false);

            AddParam(control, "ExitHover");
            AddTransition(hover, exitHover, "ExitHover");
            AddExit(exitHover, normal);
            AnimatorState tap     = AddState(control, "Tap", false, true);
            AnimatorState hold    = AddState(control, "Hold");
            AnimatorState release = AddState(control, "Release", false, true);

            AddExit(tap, hold);
            AddExit(release, normal);
            castleButton.anim.runtimeAnimatorController = control;
            Selection.activeGameObject = castleButton.gameObject;
        }
示例#3
0
        public override void Apply(CharacterData characterData)
        {
            Vector3 pivot = CastleTools.CenterOfVectors(characterData.vertexPos.modifiedPositions);

            for (int i = 0; i < 4; i++)
            {
                characterData.vertexPos.modifiedPositions[i] = CastleTools.RotatePointAroundPivot(characterData.vertexPos.modifiedPositions[i], pivot, Quaternion.Euler(0, 0, curve.Evaluate(characterData.Progress)));
            }
        }
示例#4
0
 public static void Drag(this CastleObject _object, float dragDelay = 10, bool instant = false)
 {
     if (instant)
     {
         _object.transform.position = CastleTools.Vec3RepZ(tapPosition, _object.transform.position.z);
     }
     else
     {
         _object.transform.position = Vector3.Lerp(_object.transform.position, CastleTools.Vec3RepZ(tapPosition, _object.transform.position.z), Time.deltaTime * dragDelay);
     }
 }
示例#5
0
 // Update is called once per frame
 void Update()
 {
     if (toggleObj.isOn)
     {
         fillImage.color = Color.Lerp(fillImage.color, CastleTools.Full(fillImage.color), Time.deltaTime * 15);
         textObj.color   = Color.Lerp(textObj.color, Color.white, Time.deltaTime * 15);
     }
     else
     {
         fillImage.color = Color.Lerp(fillImage.color, CastleTools.Clear(fillImage.color), Time.deltaTime * 15);
         textObj.color   = Color.Lerp(textObj.color, CastleTools.Full(fillImage.color), Time.deltaTime * 15);
     }
 }
示例#6
0
 public void EndTurn()
 {
     //SaveVision();
     if (selectedObject)
     {
         selectedObject.Unselect();
     }
     currentPlayer++;
     if (currentPlayer >= players.Length)
     {
         currentPlayer = 0;
     }
     //LoadVision();
     turnDisplay.text = "PLAYER " + CastleTools.NumberWords(currentPlayer + 1);
     endTurn.Dispatch();
 }
示例#7
0
    public void Init()
    {
        Texture2D artTex = null;

        artTex = CastleTools.LoadImage(GetArtPath());
        if (art == null || art.Length == 0)
        {
            art = new SpriteBounds[1]
            {
                new SpriteBounds(0, 0, artTex.width, artTex.height)
            };
        }
        for (int i = 0; i < art.Length; i++)
        {
            art[i].Init(artTex);
        }
    }
示例#8
0
 public static void Select(CastleObject _object, bool _override = false)
 {
     if (!selectedObject && !_object)
     {
         return;
     }
     if (_override)
     {
         if (selectedObject)
         {
             selectedObject.Release();
         }
         selectedObject = _object;
         selectedObject.Tap();
         return;
     }
     if (Input.GetMouseButtonDown(0))
     {
         selectedObject = _object;
         selectedObject.Tap();
     }
     else if (Input.GetMouseButton(0))
     {
         if (selectedObject)
         {
             if (CheckObject(selectedObject.coll))
             {
                 selectedObject.Hold();
             }
             else
             {
                 selectedObject.DragOff();
             }
         }
     }
     else if (Input.GetMouseButtonUp(0))
     {
         if (selectedObject)
         {
             selectedObject.Release();
             selectedObject = null;
         }
     }
     if (editingText)
     {
         if (Input.GetKeyDown(KeyCode.Return) || Input.GetMouseButtonDown(0))
         {
             editingText = false;
             focusedText = null;
         }
         foreach (KeyCode vKey in System.Enum.GetValues(typeof(KeyCode)))
         {
             if (Input.GetKeyDown(vKey))
             {
                 if (vKey == KeyCode.Backspace || vKey == KeyCode.Delete)
                 {
                     Debug.Log("delete");
                     focusedText.text = CastleTools.StripBack(focusedText.text, 1);
                 }
                 else if (vKey == KeyCode.Space)
                 {
                     focusedText.text += " ";
                 }
                 else if (CastleTools.ValidateText(vKey.ToString()))
                 {
                     focusedText.text += vKey.ToString();
                 }
             }
         }
     }
 }
示例#9
0
    // Updated OnPopulateMesh to user VertexHelper instead of mesh
    protected override void OnPopulateMesh(VertexHelper vh)
    {
        var pivot   = rectTransform.pivot;
        var outer   = -pivot.x * radius;
        var inner   = -pivot.x * radius - thickness;
        var corners = new Vector2[4];
        var rect    = rectTransform.rect;

        corners[0] = new Vector2(rect.xMin, rect.yMin);
        corners[1] = new Vector2(rect.xMax, rect.yMin);
        corners[2] = new Vector2(rect.xMin, rect.yMax);
        corners[3] = new Vector2(rect.xMax, rect.yMax);

        var degrees = 360f / segments;
        var fa      = (int)((segments + 1) * this.fillAmount);

        // Updated to new vertexhelper
        vh.Clear();
        if (radius <= 0)
        {
            return;
        }
        // Changed initial values so the first polygon is correct when circle isn't filled
        var x     = outer * Mathf.Cos(0);
        var y     = outer * Mathf.Sin(0);
        var prevX = new Vector2(x, y) + offset;

        // Changed initial values so the first polygon is correct when circle isn't filled
        x = inner * Mathf.Cos(0);
        y = inner * Mathf.Sin(0);
        var prevY = new Vector2(x, y) + offset;

        var ifInvert = invert ? 3 : 0;

        for (var i = 0; i < fa - 1 + ifInvert; i++)
        {
            // Changed so there isn't a stray polygon at the beginning of the arc
            var rad = Mathf.Deg2Rad * ((i + 1) * degrees);
            var c   = Mathf.Cos(rad);
            var s   = Mathf.Sin(rad);
            //float x = outer * c;
            //float y = inner * c;
            if (!invert)
            {
                pos[0] = prevX;
                pos[1] = new Vector2(outer * c, outer * s) + offset;

                if (fill)
                {
                    pos[2] = offset;
                    pos[3] = offset;
                }
                else
                {
                    pos[2] = new Vector2(inner * c, inner * s) + offset;
                    pos[3] = prevY;
                }

                // Set values for uiVertices
                for (var j = 0; j < 4; j++)
                {
                    uiVertices[j].color    = color;
                    uiVertices[j].position = pos[j];
                    uiVertices[j].uv0      = uvs[j];
                }

                // Get the current vertex count
                var vCount = vh.currentVertCount;

                // If filled, we only need to create one triangle
                vh.AddVert(uiVertices[0]);
                vh.AddVert(uiVertices[1]);
                vh.AddVert(uiVertices[2]);

                // Create triangle from added vertices
                vh.AddTriangle(vCount, vCount + 2, vCount + 1);

                // If not filled we need to add the 4th vertex and another triangle
                if (!fill)
                {
                    vh.AddVert(uiVertices[3]);
                    vh.AddTriangle(vCount, vCount + 3, vCount + 2);
                }

                prevX = pos[1];
                prevY = pos[2];

                // Removed so we can just use a single triangle when not filled
                //vh.AddUIVertexQuad(SetVbo(new[] { pos0, pos1, pos2, pos3 }, new[] { uv0, uv1, uv2, uv3 }));
            }
            else
            {
                if (i /*SEGMENTS*/ < step)
                {
                    pos[0] = prevX;
                    pos[1] = new Vector2(outer * c, outer * s);
                    var distVec = prevX - pos[1];
                    if (pos[0].x < rectTransform.rect.xMin)
                    {
                        if (distVec.x != 0)
                        {
                            distVec = distVec / distVec.x;
                        }
                        pos[0] = pos[1] + distVec * (rectTransform.rect.xMin - pos[1].x);
                    }
                    else if (pos[0].x > rectTransform.rect.xMax)
                    {
                        if (distVec.x != 0)
                        {
                            distVec = distVec / distVec.x;
                        }
                        pos[0] = pos[1] + distVec * (rectTransform.rect.xMax - pos[1].x);
                    }
                    else if (pos[0].y < rectTransform.rect.yMin)
                    {
                        if (distVec.y != 0)
                        {
                            distVec = distVec / distVec.y;
                        }
                        pos[0] = pos[1] + distVec * (rectTransform.rect.yMin - pos[1].y);
                    }
                    else if (pos[0].y > rectTransform.rect.yMax)
                    {
                        if (distVec.y != 0)
                        {
                            distVec = distVec / distVec.y;
                        }
                        pos[0] = pos[1] + distVec * (rectTransform.rect.yMax - pos[1].y);
                    }
                    distVec = pos[1] - prevX;
                    if (pos[1].x < rectTransform.rect.xMin)
                    {
                        if (distVec.x != 0)
                        {
                            distVec = distVec / distVec.x;
                        }
                        pos[1] = pos[0] + distVec * (rectTransform.rect.xMin - pos[0].x);
                    }
                    else if (pos[1].x > rectTransform.rect.xMax)
                    {
                        if (distVec.x != 0)
                        {
                            distVec = distVec / distVec.x;
                        }
                        pos[1] = pos[0] + distVec * (rectTransform.rect.xMax - pos[0].x);
                    }
                    else if (pos[1].y < rectTransform.rect.yMin)
                    {
                        if (distVec.y != 0)
                        {
                            distVec = distVec / distVec.y;
                        }
                        pos[1] = pos[0] + distVec * (rectTransform.rect.yMin - pos[0].y);
                    }
                    else if (pos[1].y > rectTransform.rect.yMax)
                    {
                        if (distVec.y != 0)
                        {
                            distVec = distVec / distVec.y;
                        }
                        pos[1] = pos[0] + distVec * (rectTransform.rect.yMax - pos[0].y);
                    }
                    if (VectorOutOfBounds(pos[0]) || VectorOutOfBounds(pos[1]))
                    {
                    }
                    else
                    {
                        pos[2] = CastleTools.CenterOfVectors(pos[0], pos[1]).ClosestVector(corners);
                        for (var j = 0; j < 3; j++)
                        {
                            uiVertices[j].color    = color;
                            uiVertices[j].position = pos[j];
                            uiVertices[j].uv0      = uvs[j];
                            if (j < 2)
                            {
                                uiVertices[j].position += (Vector3)offset;
                            }
                        }
                        var vCount = vh.currentVertCount;
                        // If filled, we only need to create one triangle
                        vh.AddVert(uiVertices[0]);
                        vh.AddVert(uiVertices[1]);
                        vh.AddVert(uiVertices[2]);

                        // Create triangle from added vertices
                        vh.AddTriangle(vCount, vCount + 2, vCount + 1);
                        if (prevY != pos[2] && !VectorOutOfBounds(prevX))
                        {
                            pos[0] = prevY;
                            pos[1] = prevX;

                            for (var j = 0; j < 3; j++)
                            {
                                uiVertices[j].color    = color;
                                uiVertices[j].position = pos[j];
                                uiVertices[j].uv0      = uvs[j];
                                if (j == 1 && i < (fa - 3))
                                {
                                    uiVertices[j].position += (Vector3)offset;
                                }
                            }
                            vCount = vh.currentVertCount;

                            // If filled, we only need to create one triangle
                            vh.AddVert(uiVertices[0]);
                            vh.AddVert(uiVertices[1]);
                            vh.AddVert(uiVertices[2]);

                            // Create triangle from added vertices
                            vh.AddTriangle(vCount, vCount + 2, vCount + 1);
                        }
                    }

                    prevX = new Vector2(outer * c, outer * s);
                    prevY = pos[2];
                }
            }
        }
    }