Example #1
0
 private void release_object(object sender, EventArgs e)
 {
     mousePositions[1] = Cursor.Position;
     if (moving)
     {
         var cmd = new MoveShape(this, mousePositions[0], mousePositions[1]);
         DrawingInstance.Instance.Commands.Push(cmd);
         cmd.Execute();
     }
     else if (resizing)
     {
         var cmd = new ResizeShape(this, mousePositions[0], mousePositions[1], resizeMode);
         DrawingInstance.Instance.Commands.Push(cmd);
         cmd.Execute();
     }
 }
Example #2
0
        void DisplayRangeIndicator()
        {
            if (selectedMove != null && !selectedMove.IsLaunched())
            {
                bool isSelfOnly = ((int)PokemonRelation.Self ^ (int)selectedMove.info.AllowedTargets) == 0;

                if (isSelfOnly)
                {
                    return;
                }

                if (lastSelectedMove != selectedMove.name && lastSelectedMove != "")
                {
                    DestroyRangeIndicator();
                    //return;
                }

                MoveShape shape = Attackdex.move[selectedMove.name].Shape;

                if (rangeIndicator.childCount == 0)
                {
                    Object obj = null;
                    lastSelectedMove = selectedMove.name;

                    if (shape == MoveShape.Point)
                    {
                        obj = (Object)ri_disk;
                    }
                    else if (shape == MoveShape.Cone)
                    {
                        obj = (Object)ri_cone;
                    }

                    if (obj != null)
                    {
                        GameObject ri = (GameObject)GameObject.Instantiate((Object)obj, rangeIndicator.position, rangeIndicator.rotation);
                        ri.transform.parent = rangeIndicator;
                        foreach (SpriteRenderer child in ri.GetComponentsInChildren <SpriteRenderer>())
                        {
                            child.gameObject.layer = LayerMask.NameToLayer("Terrain");
                        }

                        if (shape == MoveShape.Cone)
                        {
                            ri.transform.position += rangeIndicator.forward * body_radius;
                        }

                        SpriteRenderer sprRend = (SpriteRenderer)ri.GetComponentInChildren(typeof(SpriteRenderer));
                        float          factor  = (shape == MoveShape.Cone ? 1f : 0.5f);               // Only the visual of the cone represents the radius of the attack, the other images (like the disk) represents the diameter.
                        float          offset  = (shape == MoveShape.Point || shape == MoveShape.Projectile ? body_radius * 100f : 0f);

                        float spriteHeight = sprRend.sprite.textureRect.height * factor;
                        float range        = Attackdex.move[selectedMove.name].Range + offset;

                        float ratio = range / spriteHeight;
                        ri.transform.localScale = new Vector3(ratio, 1f, ratio);
                    }
                }

                if (rangeIndicator.childCount > 0)
                {
                    if (shape == MoveShape.Cone && controller.myCam != null)
                    {
                        Ray ray = controller.myCam.ScreenPointToRay(Input.mousePosition);

                        float rayDistance = 0f;
                        groundPlane.Raycast(ray, out rayDistance);
                        Vector3 target = ray.GetPoint(rayDistance);
                        target = new Vector3(target.x, rangeIndicator.transform.position.y, target.z);
                        rangeIndicator.transform.LookAt(target);
                    }
                }
            }
            else
            {
                DestroyRangeIndicator();
            }
        }
Example #3
0
 public MoveShapeHub(MoveShape broadcaster)
 {
     _broadcaster = broadcaster;
 }