コード例 #1
0
    public void MoveToNext()
    {
        if (reactionQueue.HasNext())
        {
            CurrentReaction = reactionQueue.Next();
        }
        else if (CurrentActive != null && CurrentActive.HasNextAction())
        {
            reactionQueue.Reset(true);
            CurrentAction = CurrentActive.DequeueAction();
        }
        else
        {
            unitTurnEnded?.Invoke();

            if (unitQueue.HasNext())
            {
                CurrentActive = unitQueue.Next();
            }
            else
            {
                EndCycle();
            }
        }
    }
コード例 #2
0
        public static WikiWindow Open(ModWiki wiki, WikiPage page = null)
        {
            if (wiki == null)
                return null;
            if (CurrentActive != null && CurrentActive.Wiki != wiki)
            {
                //Log.Warn("There is already an open wiki page, closing old.");
                CurrentActive.Close(true);
            }

            var created = new WikiWindow(wiki);
            created.CurrentPage = page;
            CurrentActive = created;
            Find.WindowStack?.Add(created);

            return created;
        }
コード例 #3
0
        public static bool BeforeRender()
        {
            if (grid)
            {
                var list = ImGui.GetBackgroundDrawList();

                var width  = Engine.Instance.GetScreenWidth();
                var height = Engine.Instance.GetScreenHeight();
                var off    = ImNode.Offset;

                for (float x = off.X % gridSize; x <= width - off.X % gridSize; x += gridSize)
                {
                    list.AddLine(new Vector2(x, 0), new Vector2(x, height), ((int)(off.X - x) == 0 ? gridMainColor : gridColor).PackedValue);
                }

                for (float y = off.Y % gridSize; y <= height - off.Y % gridSize; y += gridSize)
                {
                    list.AddLine(new Vector2(0, y), new Vector2(width, y), ((int)(off.Y - y) == 0 ? gridMainColor : gridColor).PackedValue);
                }
            }

            RenderVoidMenu();

            if (target.HasValue)
            {
                ImNode.Offset += (target.Value - ImNode.Offset) * Engine.Delta * 10f;

                if ((target.Value - ImNode.Offset).Length() <= 3f)
                {
                    target = null;
                }
            }
            else if (ImGui.IsMouseDragging(2) || Input.Keyboard.IsDown(Keys.Space, true))
            {
                ImNode.Offset += ImGui.GetIO().MouseDelta;
            }


            foreach (var n in ImNodes.Nodes)
            {
                var node = n.Value;

                if (!hideFiltred || filter.PassFilter(node.GetName()))
                {
                    node.Render();
                }

                if (node.Done)
                {
                    toRemove.Add(n.Key);
                }
            }

            CurrentActive?.RemoveEmptyConnection();

            if (toRemove.Count > 0)
            {
                var c = ImNodes.Nodes.Count - 1;

                foreach (var k in toRemove)
                {
                    if (ImNodes.Nodes[k].Id == c)
                    {
                        ImNode.LastId--;
                    }

                    ImNodes.Nodes.Remove(k);
                }

                toRemove.Clear();
            }

            if (pasted != null)
            {
                try {
                    var root = JsonValue.Parse(pasted);

                    if (root.IsJsonObject)
                    {
                        var val  = root["imnode"];
                        var node = ImNode.Create(val, true);

                        if (node != null)
                        {
                            node.New       = true;
                            node.Position  = ImGui.GetIO().MousePos;
                            ImNode.Focused = node;
                        }
                    }
                } catch (Exception e) {
                    Log.Error(e);
                }

                pasted = null;
            }

            if (toAdd != null)
            {
                var node = ImNodeRegistry.Create(toAdd);

                if (node != null)
                {
                    node.New       = true;
                    node.Position  = ImGui.GetIO().MousePos;
                    node.File      = DialogEditor.Current;
                    ImNode.Focused = node;
                }

                Node(node);
                toAdd = null;
            }

            ImGui.SetNextWindowSize(size, ImGuiCond.Once);

            if (!ImGui.Begin("Nodes"))
            {
                ImGui.End();
                return(false);
            }

            return(true);
        }