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(); } }
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(); } }
public MoveShapeHub(MoveShape broadcaster) { _broadcaster = broadcaster; }