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); }
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); } }
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); } }
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; } }
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)); }
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(); } } }
public ImOrgan CorrespondingOrganInOrganLayer(ImOrganLayer organLayer) { OrganType organType = ImConfig.OrganTypeForNodePlacement(nodePlacement); return(organLayer.OrganForType(organType)); }
public ImNode CorrespondingNodeInNodeLayer(ImNodeLayer nodeLayer) { NodePlacement nodePlacement = ImConfig.NodePlacementForOrganType(organType_); return(nodeLayer.NodeForPlacement(nodePlacement)); }