Esempio n. 1
0
    public void InitSpriteComponent(Color color)
    {
        ImSpriteComponent sc = new ImSpriteComponent("mainSpriteComponent", "whiteSquare.png");

        sc.sprite.color = color;

        Vector2 fromNodePosition   = ImConfig.PositionForNodePlacement(veinEndpoints.fromNodePlacement);
        Vector2 toNodePosition     = ImConfig.PositionForNodePlacement(veinEndpoints.toNodePlacement);
        Vector2 lowerNodePosition  = fromNodePosition.y <= toNodePosition.y ? fromNodePosition : toNodePosition;
        Vector2 higherNodePosition = toNodePosition.y >= fromNodePosition.y ? toNodePosition : fromNodePosition;

        float sRotation = 90 + 360 - Mathf.Rad2Deg * Mathf.Atan((higherNodePosition.y - lowerNodePosition.y) / (higherNodePosition.x - lowerNodePosition.x));

        if (Mathf.Sign(higherNodePosition.x - lowerNodePosition.x) == -1f)
        {
            sRotation += 180f;
        }

        sc.sprite.anchorY  = 0;
        sc.sprite.width    = 10f;
        sc.sprite.height   = Mathf.Sqrt(Mathf.Pow(toNodePosition.y - fromNodePosition.y, 2) + Mathf.Pow(toNodePosition.x - fromNodePosition.x, 2));
        sc.sprite.rotation = sRotation;

        AddComponent(sc);
    }
Esempio n. 2
0
    public ImNodeLayer()
    {
        for (int i = 0; i < (int)(NodePlacement.MAX - 1); i++)
        {
            ImNode  node = new ImNode((NodePlacement)(i + 1));
            Vector2 pos  = ImConfig.PositionForNodePlacement(node.nodePlacement);
            node.x = pos.x;
            node.y = pos.y;

            node.HealthComponent().SignalHealthChanged += NodeHealthChanged;
            entities.Add(node);
            AddChild(node);
        }
    }
Esempio n. 3
0
    public void HandlePopoverNeedsInventoryRefresh(WTPopoverDialogue popover)
    {
        ImNode node     = (ImNode)popover.correspondingEntity;
        bool   hasTitle = false;
        bool   hasDone  = false;

        foreach (ImTableCell cell in popover.tableCells)
        {
            if (cell.tableCellType == TableCellType.Done)
            {
                hasDone = true;
            }
            if (cell.tableCellType == TableCellType.Title)
            {
                hasTitle = true;
            }
        }

        if (!hasTitle)
        {
            popover.AddTableCell(ImConfig.NameForNodePlacement(node.nodePlacement), TableCellType.Title);
        }

        foreach (ImAbstractItem item in inventory)
        {
            ImTableCell cellWithItem = null;
            foreach (ImTableCell itemCell in popover.tableCells)
            {
                if (itemCell.item == item)
                {
                    cellWithItem = itemCell;
                }
            }
            if (cellWithItem == null && item.CanBeUsedOnEntity(popover.correspondingEntity))
            {
                popover.AddTableCell(item.Description(), "Futile_White", item, TableCellType.Item);
            }
            if (cellWithItem != null && !item.CanBeUsedOnEntity(popover.correspondingEntity))
            {
                popover.RemoveTableCell(cellWithItem);
            }
        }

        if (!hasDone)
        {
            popover.AddTableCell("Done", TableCellType.Done);
        }
    }
Esempio n. 4
0
    public ImVeinLayer()
    {
        Color veinColor = Color.black;

        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.HandLeft, NodePlacement.ElbowLeft), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.ElbowLeft, NodePlacement.ShoulderLeft), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.Neck, NodePlacement.Brain), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.ShoulderLeft, NodePlacement.LungLeft), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.LungLeft, NodePlacement.Heart), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.Heart, NodePlacement.LungRight), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.LungRight, NodePlacement.ShoulderRight), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.ShoulderRight, NodePlacement.ElbowRight), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.ElbowRight, NodePlacement.HandRight), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.Neck, NodePlacement.Heart), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.Heart, NodePlacement.Liver), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.Liver, NodePlacement.Stomach), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.Stomach, NodePlacement.Intestines), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.Intestines, NodePlacement.HipLeft), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.Intestines, NodePlacement.HipRight), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.HipLeft, NodePlacement.KneeLeft), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.KneeLeft, NodePlacement.FootLeft), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.HipRight, NodePlacement.KneeRight), veinColor));
        entities.Add(new ImVein(new VeinEndpoints(NodePlacement.KneeRight, NodePlacement.FootRight), veinColor));

        foreach (ImEntity entity in entities)
        {
            ImVein vein = entity as ImVein;
            vein.name = string.Format("vein; from " + ImConfig.NameForNodePlacement(vein.veinEndpoints.fromNodePlacement) + " to " + ImConfig.NameForNodePlacement(vein.veinEndpoints.toNodePlacement));
            AddChild(vein);

            Vector2 fromNodePosition   = ImConfig.PositionForNodePlacement(vein.veinEndpoints.fromNodePlacement);
            Vector2 toNodePosition     = ImConfig.PositionForNodePlacement(vein.veinEndpoints.toNodePlacement);
            Vector2 lowerNodePosition  = fromNodePosition.y <= toNodePosition.y ? fromNodePosition : toNodePosition;
            Vector2 higherNodePosition = toNodePosition.y >= fromNodePosition.y ? toNodePosition : fromNodePosition;

            float sRotation = 90 + 360 - Mathf.Rad2Deg * Mathf.Atan((higherNodePosition.y - lowerNodePosition.y) / (higherNodePosition.x - lowerNodePosition.x));
            if (Mathf.Sign(higherNodePosition.x - lowerNodePosition.x) == -1f)
            {
                sRotation += 180f;
            }

            vein.x = lowerNodePosition.x;
            vein.y = lowerNodePosition.y;
        }
    }
Esempio n. 5
0
    public ImNode(NodePlacement nodePlacement, string name = "a node") : base(name)
    {
        name = string.Format("node: a node at " + ImConfig.NameForNodePlacement(nodePlacement));

        this.nodePlacement = nodePlacement;

        ImSpriteComponent sc = new ImSpriteComponent("baseSpriteComponent", "circle.psd");

        sc.sprite.scale = 0.5f;
        sc.sprite.color = Color.blue;
        AddComponent(sc);

        ImRadialWipeSpriteComponent ssc = new ImRadialWipeSpriteComponent("diseaseRadialWipeComponent", "circle.psd");

        ssc.sprite.scale      = 0.5f;
        ssc.sprite.color      = Color.red;
        ssc.sprite.percentage = 0;
        AddComponent(ssc);

        AddComponent(new ImHealthComponent("healthComponent", 100));
    }
Esempio n. 6
0
    public void HandleUpdate()
    {
        float newZoom = zoomLevel_;

        newZoom += Input.GetAxis("Mouse ScrollWheel");
        newZoom  = Math.Min(ImConfig.MAX_ZOOM, newZoom);
        newZoom  = Math.Max(ImConfig.MIN_ZOOM, newZoom);
        if (newZoom != zoomLevel_)
        {
            Zoom(ImConfig.GetMousePosition(), newZoom);
        }

        if (Input.GetKeyDown(KeyCode.Space))
        {
            isPaused = !isPaused;
            if (SignalPauseStateChanged != null)
            {
                SignalPauseStateChanged(isPaused);
            }
        }

        if (!isPaused)
        {
            foreach (ImNode node in nodeLayer.entities)
            {
                node.HandleUpdate();
            }
            foreach (ImOrgan organ in organLayer.entities)
            {
                organ.HandleUpdate();
            }
            foreach (ImVein vein in veinLayer.entities)
            {
                vein.HandleUpdate();
            }
        }
    }
Esempio n. 7
0
    public ImOrgan CorrespondingOrganInOrganLayer(ImOrganLayer organLayer)
    {
        OrganType organType = ImConfig.OrganTypeForNodePlacement(nodePlacement);

        return(organLayer.OrganForType(organType));
    }
Esempio n. 8
0
    public ImNode CorrespondingNodeInNodeLayer(ImNodeLayer nodeLayer)
    {
        NodePlacement nodePlacement = ImConfig.NodePlacementForOrganType(organType_);

        return(nodeLayer.NodeForPlacement(nodePlacement));
    }