示例#1
0
        private Ellipse BuildEllipseFromComponent(CanvasComponent component)
        {
            // Constructing ellipse from saved component details
            Ellipse ellipse = new Ellipse();

            ellipse.Stroke          = new SolidColorBrush(component.stroke);
            ellipse.StrokeThickness = component.strokeThickness;

            ellipse.Width  = component.a * 2.0;
            ellipse.Height = component.b * 2.0;

            RotateTransform rotateTransform = new RotateTransform();

            rotateTransform.Angle   = component.rotAngle * 180 / Math.PI;
            rotateTransform.CenterX = component.a;
            rotateTransform.CenterY = component.b;

            TranslateTransform translateTransform = new TranslateTransform();

            translateTransform.X = component.center.X - component.a;
            translateTransform.Y = component.center.Y - component.b;

            TransformGroup transformGroup = new TransformGroup();

            transformGroup.Children.Add(rotateTransform);
            transformGroup.Children.Add(translateTransform);
            ellipse.RenderTransform = transformGroup;

            component.shape = ellipse;

            return(ellipse);
        }
示例#2
0
    public void Cache(WorldContext worldContext)
    {
        h0nckerAnimationComponents = worldContext.GetComponentsContainer <H0nckerAnimationComponent>();

        vfxPoolComponent = worldContext.Get <VFXPoolComponent>(0);

        cameraComponent = worldContext.Get <CameraComponent>(0);

        canvasComponent = worldContext.Get <CanvasComponent>(0);

        antagonistComponent = worldContext.Get <AntagonistComponent>(0);
    }
    public void Cache(WorldContext worldContext)
    {
        antagonistComponents = worldContext.GetComponentsContainer <AntagonistComponent>();

        gameStateComponent = worldContext.Get <GameStateComponent>(0);

        vfxPoolComponent = worldContext.Get <VFXPoolComponent>(0);

        cameraComponent = worldContext.Get <CameraComponent>(0);

        canvasComponent = worldContext.Get <CanvasComponent>(0);
    }
示例#4
0
        private void DrawEllipse(InkAnalysisInkDrawing shape)
        {
            // Part of loading back the shapes, not working at the moment
            CanvasComponent ellipse = shapeHelper.BuildEllipse(shape);

            RemoveStrokes(shape);
            ellipse.shape.Stroke          = new SolidColorBrush(currentBrush.Color);
            ellipse.stroke                = new SolidColorBrush(currentBrush.Color).Color;
            ellipse.shape.StrokeThickness = currentBrush.Size.Width;
            ellipse.strokeThickness       = currentBrush.Size.Width;

            components.Add(ellipse);
            AddShapeToCanvas?.Invoke(ellipse.shape);
        }
示例#5
0
        private void DrawPolygon(InkAnalysisInkDrawing shape)
        {
            // Part of loading back the shapes, not working at the moment
            CanvasComponent polygon = shapeHelper.BuildPolygon(shape);

            RemoveStrokes(shape);
            polygon.shape.Stroke          = new SolidColorBrush(currentBrush.Color);
            polygon.stroke                = new SolidColorBrush(currentBrush.Color).Color;
            polygon.shape.StrokeThickness = currentBrush.Size.Width;
            polygon.strokeThickness       = currentBrush.Size.Width;

            components.Add(polygon);
            AddShapeToCanvas?.Invoke(polygon.shape);
        }
示例#6
0
        private Polygon BuildPolygonFromComponent(CanvasComponent component)
        {
            // Constructing polygon from saved component details
            Polygon polygon = new Polygon();

            polygon.Stroke          = new SolidColorBrush(component.stroke);
            polygon.StrokeThickness = component.strokeThickness;

            foreach (var point in component.points)
            {
                polygon.Points.Add(point);
            }
            component.shape = polygon;

            return(polygon);
        }
示例#7
0
        internal CanvasComponent BuildPolygon(InkAnalysisInkDrawing shape)
        {
            // From ink analysis result, constuct polygon
            CanvasComponent component = new CanvasComponent(CanvasComponent.ComponentType.Polygon);

            var     points  = shape.Points;
            Polygon polygon = new Polygon();

            foreach (var point in points)
            {
                polygon.Points.Add(point);
                // Save polygin information in component for use when erasing and saving
                component.points.Add(point);
            }
            component.shape = polygon;

            return(component);
        }
示例#8
0
 public void Pay(float payment)
 {
     CardName = (int)(payment / 500 + 2);
     if (PlayerData.money >= payment)
     {
         PlayerData.money -= payment;
         PlayerData.IsCardBought[CardName - 1] = true;
         Login.UpdatePurchaseCardAndMoney(CardName - 1, PlayerData.money);
         BuyCards();
     }
     else
     {
         foreach (Transform card in CardsCanvas.transform)
         {
             card.gameObject.SetActive(true);
             if (card.gameObject.name.Contains(CardName.ToString()))
             {
                 foreach (Transform component in card.transform)
                 {
                     if (component.gameObject.name == "Canvas")
                     {
                         component.gameObject.SetActive(true);
                         foreach (Transform CanvasComponent in component.transform)
                         {
                             if (CanvasComponent.gameObject.name == "LevelRequiredText")
                             {
                                 CanvasComponent.gameObject.SetActive(true);
                                 CanvasComponent.GetComponent <Text>().text = "not enough money";
                             }
                             if (CanvasComponent.gameObject.name == "BuyCard")
                             {
                                 CanvasComponent.gameObject.SetActive(false);
                             }
                         }
                     }
                     if (component.gameObject.name == "LevelRequired")
                     {
                         component.gameObject.SetActive(false);
                     }
                 }
             }
         }
     }
 }
示例#9
0
        internal CanvasComponent BuildEllipse(InkAnalysisInkDrawing shape)
        {
            // From the ink analysis result, construct ellipse
            CanvasComponent component = new CanvasComponent(CanvasComponent.ComponentType.Ellipse);

            var     points  = shape.Points;
            Ellipse ellipse = new Ellipse();

            ellipse.Width = Math.Sqrt((points[0].X - points[2].X) * (points[0].X - points[2].X) +
                                      (points[0].Y - points[2].Y) * (points[0].Y - points[2].Y));
            ellipse.Height = Math.Sqrt((points[1].X - points[3].X) * (points[1].X - points[3].X) +
                                       (points[1].Y - points[3].Y) * (points[1].Y - points[3].Y));

            var             rotAngle        = Math.Atan2(points[2].Y - points[0].Y, points[2].X - points[0].X);
            RotateTransform rotateTransform = new RotateTransform();

            rotateTransform.Angle   = rotAngle * 180 / Math.PI;
            rotateTransform.CenterX = ellipse.Width / 2.0;
            rotateTransform.CenterY = ellipse.Height / 2.0;

            TranslateTransform translateTransform = new TranslateTransform();

            translateTransform.X = shape.Center.X - ellipse.Width / 2.0;
            translateTransform.Y = shape.Center.Y - ellipse.Height / 2.0;

            TransformGroup transformGroup = new TransformGroup();

            transformGroup.Children.Add(rotateTransform);
            transformGroup.Children.Add(translateTransform);
            ellipse.RenderTransform = transformGroup;

            // Save ellipse information in component for use when erasing and saving
            component.a        = ellipse.Width / 2.0;
            component.b        = ellipse.Height / 2.0;
            component.rotAngle = rotAngle;

            var point = new Point(shape.Center.X, shape.Center.Y);

            component.center = point;

            component.shape = ellipse;

            return(component);
        }
示例#10
0
        public SkiUiScene(Action invalidateSurface, Func <Node, CameraComponent, Action, SkiUiComponent> createUiComponent)
        {
            _invalidateSurface = invalidateSurface;

            _canvasComponent = new CanvasComponent();
            _cameraGroup     = _canvasComponent.CreateCameraGroup();
            _camera          = _scene.RootNode
                               .CreateChild()
                               .AddComponent(new CameraComponent(_cameraGroup, 0));
            _scene.RootNode.AddComponent(_canvasComponent);

            UiComponent = _scene.RootNode
                          .CreateChild()
                          .AddComponent(createUiComponent(_scene.RootNode, _camera, InvalidateSurface))
                          .AddToCamera(_camera);

            _scene.Start();
            InvalidateSurface();
        }
示例#11
0
        internal bool ShouldDelete(Point start, Point finish, CanvasComponent component)
        {
            bool startValue  = true;
            bool finishValue = true;

            switch (component.type)
            {
            case CanvasComponent.ComponentType.Ellipse:
                startValue  = PointInEllipse(start, component.a, component.b, component.center, component.rotAngle);
                finishValue = PointInEllipse(finish, component.a, component.b, component.center, component.rotAngle);
                break;

            case CanvasComponent.ComponentType.Polygon:
                startValue  = PointInPolygon(start, component.points);
                finishValue = PointInPolygon(finish, component.points);
                break;

            default:
                break;
            }

            return(startValue ^ finishValue); // xor means line started outside, ended inside (vice versa)
        }
示例#12
0
 public CardState(CanvasComponent canvas)
 {
     this.Canvas = canvas;
     this.Init();
 }
示例#13
0
 public void BuyCards()
 {
     foreach (Transform a in doorCanvas.transform)
     {
         a.gameObject.SetActive(false);
         if (a.gameObject.name == "return")
         {
             a.gameObject.SetActive(true);
         }
     }
     background.SetActive(false);
     CardsCanvas.SetActive(true);
     money.GetComponent <Text>().text = PlayerData.money + " coins";
     level.GetComponent <Text>().text = "level " + PlayerData.Level;
     for (int i = 2; i < 10; i++)
     {
         if (PlayerData.Level >= i + 1)
         {
             if (PlayerData.IsCardBought[i] == true)
             {
                 foreach (Transform card in CardsCanvas.transform)
                 {
                     card.gameObject.SetActive(true);
                     if (card.gameObject.name.Contains((i + 1).ToString()))
                     {
                         foreach (Transform component in card.transform)
                         {
                             if (component.gameObject.name == "Canvas")
                             {
                                 component.gameObject.SetActive(true);
                                 foreach (Transform CanvasComponent in component.transform)
                                 {
                                     if (CanvasComponent.gameObject.name == "LevelRequiredText")
                                     {
                                         CanvasComponent.gameObject.SetActive(true);
                                         CanvasComponent.GetComponent <Text>().text = "Sold";
                                     }
                                     if (CanvasComponent.gameObject.name == "BuyCard")
                                     {
                                         CanvasComponent.gameObject.SetActive(false);
                                     }
                                 }
                             }
                             if (component.gameObject.name == "LevelRequired")
                             {
                                 component.gameObject.SetActive(false);
                             }
                         }
                     }
                 }
             }
             else
             {
                 foreach (Transform card in CardsCanvas.transform)
                 {
                     card.gameObject.SetActive(true);
                     if (card.gameObject.name.Contains((i + 1).ToString()))
                     {
                         foreach (Transform component in card.transform)
                         {
                             if (component.gameObject.name == "Canvas")
                             {
                                 component.gameObject.SetActive(true);
                                 foreach (Transform CanvasComponent in component.transform)
                                 {
                                     if (CanvasComponent.gameObject.name == "LevelRequiredText")
                                     {
                                         CanvasComponent.gameObject.SetActive(false);
                                     }
                                     if (CanvasComponent.gameObject.name == "BuyCard")
                                     {
                                         CanvasComponent.gameObject.SetActive(true);
                                     }
                                 }
                             }
                             if (component.gameObject.name == "LevelRequired")
                             {
                                 component.gameObject.SetActive(false);
                             }
                         }
                     }
                 }
             }
         }
         else
         {
             foreach (Transform card in CardsCanvas.transform)
             {
                 card.gameObject.SetActive(true);
                 if (card.gameObject.name.Contains((i + 1).ToString()))
                 {
                     foreach (Transform component in card.transform)
                     {
                         component.gameObject.SetActive(false);
                         if (component.gameObject.name == "Canvas")
                         {
                             component.gameObject.SetActive(true);
                             foreach (Transform CanvasComponent in component.transform)
                             {
                                 CanvasComponent.gameObject.SetActive(false);
                                 if (CanvasComponent.gameObject.name == "LevelRequiredText")
                                 {
                                     CanvasComponent.gameObject.SetActive(true);
                                 }
                             }
                         }
                         if (component.gameObject.name == "LevelRequired")
                         {
                             component.gameObject.SetActive(true);
                         }
                     }
                 }
             }
         }
     }
 }
示例#14
0
 internal CameraGroup(CanvasComponent canvasComponent)
 {
     CanvasComponent = canvasComponent;
 }
示例#15
0
        //public void Focus(bool prompt = false)
        //{
        //    this.Component.Canvas.JSRuntime.InvokeVoidAsync("setFocus", this.Component.GetTextID(), prompt);
        //}

        public async Task KeyDown(int key, CanvasComponent canvas, bool shiftKey)
        {
            if (!this.Editing)
            {
                return;
            }

            if (key == 37) // arrow left
            {
                this.Card.SelectionBehavior.MoveLeft();
                await this.Card.SelectionBehavior.ExtentCaret(canvas);

                return;
            }

            if (key == 39) // arrow right
            {
                this.Card.SelectionBehavior.MoveRight();
                await this.Card.SelectionBehavior.ExtentCaret(canvas);

                return;
            }

            if (key == 8 || key == 46) // backspace - delete
            {
                if (this.Card.SelectionBehavior.CorrectedBase == this.Card.SelectionBehavior.CorrectedExtent)
                {
                    if (key == 46)
                    {
                        this.Value = this.Value.Remove(this.Card.SelectionBehavior.CorrectedExtent, 1);
                    }
                    else if (this.Card.SelectionBehavior.BaseOffset > 0)
                    {
                        this.Value = this.Value.Remove(this.Card.SelectionBehavior.CorrectedExtent - 1, 1);
                        this.Card.SelectionBehavior.MoveLeft();
                        await this.Card.SelectionBehavior.ExtentCaret(canvas);
                    }
                }
                else
                {
                    this.Value = this.Value.Remove(this.Card.SelectionBehavior.CorrectedBase, this.Card.SelectionBehavior.CorrectedExtent - this.Card.SelectionBehavior.CorrectedBase);

                    this.Card.SelectionBehavior.ExtentOffset = this.Card.SelectionBehavior.CorrectedBase;
                    await this.Card.SelectionBehavior.ExtentCaret(canvas);
                }

                return;
            }

            //if (this.Selection != StringSelection.Empty)
            //    this.Value = this.Selection.RemoveFrom(this.Value);

            if ((key < 48 || key > 122) && key != 32)
            {
                return;
            }

            if (!shiftKey && key != 32 && key <= 90)
            {
                key += 32;
            }

            this.Value = this.Value.Insert(this.Card.SelectionBehavior.ExtentOffset, ((char)key).ToString());

            this.Card.SelectionBehavior.ExtentOffset += 1;
            this.Card.SelectionBehavior.BaseOffset    = this.Card.SelectionBehavior.ExtentOffset;
            await this.Card.SelectionBehavior.ExtentCaret(canvas);
        }
示例#16
0
        public MainPage()
        {
            InitializeComponent();

            _scene.Start();

            // Canvas components
            _canvasComponent1 = _scene.RootNode.AddComponent(new CanvasComponent());
            _canvasComponent2 = _scene.RootNode.AddComponent(new CanvasComponent());

            // Camera groups
            _cameraGroup1 = _canvasComponent1.CreateCameraGroup();
            _cameraGroup2 = _canvasComponent2.CreateCameraGroup();

            // Cameras
            _camera1 = _scene.RootNode
                       .CreateChild()
                       .AddComponent(new CameraComponent(_cameraGroup1, 0));

            _camera2 = _scene.RootNode
                       .CreateChild(new SKPoint(50, 200), 0, (float)Math.PI / 8, new SKPoint(3, 3))
                       .AddComponent(new CameraComponent(_cameraGroup2, 0));

            // Scribble
            _scene.RootNode
            .CreateChild()
            .AddComponent(
                new DrawableComponent(
                    (canvas, camera) =>
            {
                using (
                    var touchPathStroke = new SKPaint
                {
                    IsAntialias = true,
                    Style = SKPaintStyle.Stroke,
                    Color = SKColors.Purple,
                    StrokeWidth = 1
                }
                    )
                {
                    foreach (var touchPath in _temporaryPaths)
                    {
                        canvas.DrawPath(touchPath.Value, touchPathStroke);
                    }
                    foreach (var touchPath in _paths)
                    {
                        canvas.DrawPath(touchPath, touchPathStroke);
                    }
                }
            }
                    )
                )
            .AddToCamera(_camera1)
            .AddToCamera(_camera2);

            //Sprites
            var zeroSprite   = CreateTileSprite(_scene.RootNode, new InitialNodeTransform());
            var secondSprite = CreateTileSprite(
                zeroSprite.Node,
                new InitialNodeTransform(new SKPoint(50, 0), 0, (float)Math.PI / 2, new SKPoint(2, 2))
                );
            var thirdSprite = CreateTileSprite(
                secondSprite.Node,
                new InitialNodeTransform(new SKPoint(50, 0), 0, (float)Math.PI / 2, new SKPoint(2, 2))
                );

            var fourthSprite = CreateTileSprite(
                thirdSprite.Node,
                new InitialNodeTransform(new SKPoint(50, 0), 0, (float)Math.PI / 2, new SKPoint(2, 2))
                );
        }
示例#17
0
    /// <summary>
    /// Refreshes a component on the canvas.
    /// </summary>
    /// <param name="component">The canvas component to refresh.<param>
    public static void RefreshCanvasComponent(CanvasComponent component)
    {
        string componentIdentifier;

        switch (component) {
            case CanvasComponent.Achievements:
                componentIdentifier = "achievements";
                break;

            case CanvasComponent.ActivityFeed:
                componentIdentifier = "activityFeed";
                break;

            case CanvasComponent.Inventory:
                componentIdentifier = "inventory";
                break;

            case CanvasComponent.Leaderboard:
                componentIdentifier = "leaderboard";
                break;

            default:
                Debug.LogError("Attempting to update an unknown canvas component");
                return;
        }

        drWWW.ExternalCall("DR.UI.refresh", componentIdentifier);
    }