示例#1
0
        public void Start()
        {
            if (Instance != null)
            {
                Destroy(this);
                return;
            }

            Instance = this;

            library       = new KPU.Library.Library();
            libraryWindow = null;

            ctrlLockAddon = new AddOns.ControlLockAddon();

            Logging.Log("KPUCore loaded successfully.");
        }
示例#2
0
        public override void Window(int id)
        {
            bool toclose = false;

            KPU.Library.Library library = KPUCore.Instance.library;
            GUILayout.BeginHorizontal();
            GUI.SetNextControlName("kpu_nt");
            mNewName = GUILayout.TextField(mNewName, GUILayout.Width(120));
            if (GUILayout.Button("OK", library.nameExists(mNewName) ? mGreyBtnStyle : mBtnStyle, GUILayout.Width(48)))
            {
                toclose = library.renameProgram(mOldName, mNewName);
            }
            GUILayout.EndHorizontal();
            if (toclose)
            {
                Hide();
            }
        }
示例#3
0
文件: KPUCore.cs 项目: ec429/kpu_mod
 public override void OnAwake()
 {
     Instance = this;
     library = new KPU.Library.Library();
     base.OnAwake();
 }
示例#4
0
 public override void Window(int id)
 {
     KPU.Library.Library library         = KPUCore.Instance.library;
     KPU.Library.Program selectedProgram = null;
     GUILayout.BeginHorizontal(GUILayout.Height(310));
     GUILayout.BeginVertical(GUILayout.Width(250));
     {
         // name list pane
         mScrollNames = GUILayout.BeginScrollView(mScrollNames, GUILayout.Width(240), GUILayout.Height(280));
         if (library == null)
         {
             GUILayout.Label("I have no Library!?", mHeadingStyle);
         }
         else if (library.isEmpty())
         {
             GUILayout.Label("There are no saved programs", mHeadingStyle);
         }
         else
         {
             foreach (string name in library.programNames())
             {
                 GUIStyle style = HighLogic.Skin.label;
                 if (name.Equals(mSelected))
                 {
                     style = mSelectionStyle;
                 }
                 if (GUILayout.Button(name, style, GUILayout.Width(216)))
                 {
                     mSelected = name;
                 }
             }
         }
         if (mSelected != null)
         {
             selectedProgram = library.getProgram(mSelected);
         }
         GUILayout.EndScrollView();
         GUILayout.BeginHorizontal();
         bool canLoad = (mCW != null) && (selectedProgram != null);
         if (GUILayout.Button("Load", canLoad ? mBtnStyle : mGreyBtnStyle) && canLoad)
         {
             mCW.instructions = new List <KPU.Processor.Instruction>(selectedProgram.code);
             mCW.mLoaded      = false;
             mCW.decompile();
         }
         if (GUILayout.Button("Rename", selectedProgram != null ? mBtnStyle : mGreyBtnStyle) && selectedProgram != null)
         {
             UI.LibraryRenameWindow lrw = new UI.LibraryRenameWindow(selectedProgram.name);
             lrw.Show();
         }
         if (GUILayout.Button("Delete", selectedProgram != null ? mBtnStyle : mGreyBtnStyle) && selectedProgram != null)
         {
             library.deleteProgram(selectedProgram.name);
         }
         GUILayout.EndHorizontal();
     }
     GUILayout.EndVertical();
     GUILayout.BeginVertical(GUILayout.Width(300));
     {
         // program details pane
         if (selectedProgram == null)
         {
             GUILayout.Label("Select a program from the list", mHeadingStyle, GUILayout.Width(280));
         }
         else
         {
             GUILayout.Label(selectedProgram.name, mHeadingStyle, GUILayout.Width(280));
             mScrollDesc = GUILayout.BeginScrollView(mScrollDesc, GUILayout.Height(64));
             GUI.SetNextControlName("kpu_dt");
             selectedProgram.description = GUILayout.TextArea(selectedProgram.description, GUILayout.Width(270));
             GUILayout.EndScrollView();
             GUILayout.Label("Requirements", mHeadingStyle, GUILayout.Width(280));
             KPU.Processor.Processor proc = mCW == null ? null : mCW.mProcessor;
             require("Level Trigger", selectedProgram.requiresLevelTrigger, proc == null ? false : proc.hasLevelTrigger);
             require("Logic Ops", selectedProgram.requiresLogicOps, proc == null ? false : proc.hasLogicOps);
             require("Arithmetic Ops", selectedProgram.requiresArithOps, proc == null ? false : proc.hasArithOps);
             bool enough = proc == null ? false : selectedProgram.imemWords <= proc.maxImemWords;
             GUILayout.Label(String.Format("Requires {0} words of IMEM", selectedProgram.imemWords), enough ? mGoodNewsStyle : mBadNewsStyle);
             GUILayout.Label("Inputs Used", mHeadingStyle, GUILayout.Width(280));
             mScrollInputs = GUILayout.BeginScrollView(mScrollInputs, GUILayout.Height(64));
             List <string> usedInputs = new List <string>(selectedProgram.usedInputs);
             usedInputs.Sort();
             foreach (string input in usedInputs)
             {
                 if (proc == null)
                 {
                     GUILayout.Label(input, HighLogic.Skin.label, GUILayout.Width(270));
                 }
                 else
                 {
                     bool have = proc.inputValues.ContainsKey(input);
                     GUILayout.Label(input, have ? mGoodNewsStyle : mBadNewsStyle, GUILayout.Width(270));
                 }
             }
             GUILayout.EndScrollView();
         }
     }
     GUILayout.EndVertical();
     GUILayout.EndHorizontal(); base.Window(id);
 }