private void GenerateCacheForMethod(MethodInfo method, DebugActionAttribute attribute)
 {
     if (attribute.IsAllowedInCurrentGameState)
     {
         string text = string.IsNullOrEmpty(attribute.name) ? GenText.SplitCamelCase(method.Name) : attribute.name;
         if (attribute.actionType == DebugActionType.ToolMap || attribute.actionType == DebugActionType.ToolMapForPawns || attribute.actionType == DebugActionType.ToolWorld)
         {
             text = "T: " + text;
         }
         string            category          = attribute.category;
         DebugActionOption debugActionOption = default(DebugActionOption);
         debugActionOption.label      = text;
         debugActionOption.category   = category;
         debugActionOption.actionType = attribute.actionType;
         DebugActionOption item = debugActionOption;
         if (attribute.actionType == DebugActionType.ToolMapForPawns)
         {
             item.pawnAction = (Delegate.CreateDelegate(typeof(Action <Pawn>), method) as Action <Pawn>);
         }
         else
         {
             item.action = (Delegate.CreateDelegate(typeof(Action), method) as Action);
         }
         debugActions.Add(item);
     }
 }
Beispiel #2
0
        protected override void DoListingItems()
        {
            base.DoListingItems();
            int    highlightedIndex = HighlightedIndex;
            string b = null;

            for (int i = 0; i < debugActions.Count; i++)
            {
                DebugActionOption debugActionOption = debugActions[i];
                bool highlight = highlightedIndex == i;
                if (debugActionOption.category != b)
                {
                    DoGap();
                    DoLabel(debugActionOption.category);
                    b = debugActionOption.category;
                }
                Log.openOnMessage = true;
                try
                {
                    switch (debugActionOption.actionType)
                    {
                    case DebugActionType.Action:
                        DebugAction_NewTmp(debugActionOption.label, debugActionOption.action, highlight);
                        break;

                    case DebugActionType.ToolMap:
                        DebugToolMap_NewTmp(debugActionOption.label, debugActionOption.action, highlight);
                        break;

                    case DebugActionType.ToolMapForPawns:
                        DebugToolMapForPawns_NewTmp(debugActionOption.label, debugActionOption.pawnAction, highlight);
                        break;

                    case DebugActionType.ToolWorld:
                        DebugToolWorld_NewTmp(debugActionOption.label, debugActionOption.action, highlight);
                        break;
                    }
                }
                finally
                {
                    Log.openOnMessage = false;
                }
            }
        }
Beispiel #3
0
        private void DebugActionSelected(int index)
        {
            DebugActionOption element = debugActions[index];

            switch (element.actionType)
            {
            case DebugActionType.Action:
                element.action();
                break;

            case DebugActionType.ToolMap:
                DebugTools.curTool = new DebugTool(element.label, element.action);
                break;

            case DebugActionType.ToolMapForPawns:
                DebugTools.curTool = new DebugTool(element.label, delegate
                {
                    if (UI.MouseCell().InBounds(Find.CurrentMap))
                    {
                        foreach (Pawn item in (from t in Find.CurrentMap.thingGrid.ThingsAt(UI.MouseCell())
                                               where t is Pawn
                                               select t).Cast <Pawn>().ToList())
                        {
                            element.pawnAction(item);
                        }
                    }
                });
                break;

            case DebugActionType.ToolWorld:
                if (WorldRendererUtility.WorldRenderedNow)
                {
                    DebugTools.curTool = new DebugTool(element.label, element.action);
                }
                break;
            }
        }