Пример #1
0
        private void SendLockpickButtonClicked(object sender, RoutedEventArgs e)
        {
            if (!HACGUIKeyset.TempLockpickPayloadFileInfo.Exists)
            {
                GitHubClient gitClient = new GitHubClient(new ProductHeaderValue("Github"));
                Task.Run(async() =>
                {
                    Release release = await gitClient.Repository.Release.GetLatest("shchmue", "Lockpick_RCM");      // get latest release

                    ReleaseAsset asset = release.Assets.FirstOrDefault(r => r.BrowserDownloadUrl.EndsWith(".bin")); // get first asset that ends with .bin (the payload)

                    HttpClient httpClient = new HttpClient();
                    Stream src            = await httpClient.GetStreamAsync(asset.BrowserDownloadUrl); // get stream of .bin file

                    using (Stream dest = HACGUIKeyset.TempLockpickPayloadFileInfo.OpenWrite())
                        await src.CopyToAsync(dest); // stream payload to file

                    while (!HACGUIKeyset.TempLockpickPayloadFileInfo.CanOpen())
                    {
                        ;                                                         // prevent race condition?
                    }
                }).Wait();
            }

            InjectService.SendPayload(HACGUIKeyset.TempLockpickPayloadFileInfo);
        }
Пример #2
0
        public PickNANDPage() : base()
        {
            InitializeComponent();

            Loaded += (_, __) =>
            {
                if (Native.IsAdministrator)
                {
                    MemloaderDescriptionLabel.Text = "HACGUI is waiting for a Switch in RCM to be plugged in.";

                    RestartAsAdminButton.Content   = "Inject for me";
                    RestartAsAdminButton.IsEnabled = InjectService.LibusbKInstalled;
                    InjectService.DeviceInserted  += () =>
                    {
                        if (InjectService.LibusbKInstalled)
                        {
                            Dispatcher.Invoke(() => RestartAsAdminButton.IsEnabled = true);
                        }
                    };

                    InjectService.DeviceRemoved += () =>
                    {
                        Dispatcher.Invoke(() => RestartAsAdminButton.IsEnabled = false);
                    };
                }

                NANDService.OnNANDPluggedIn += () =>
                {
                    InjectService.Stop();
                    StartDeriving();
                };

                NANDService.Start();
            };
        }
Пример #3
0
        /// <summary>
        /// 执行初始化过程
        /// </summary>
        //[RuntimeInitializeOnLoadMethod]
        public void Initialize()
        {
            ///命令系统注入
            if (InjectService.Get <IServiceCommand>() == null)
            {
                ServiceCommand commandService = new ServiceCommand();
                commandService.Initialize();
            }

            //注册实体工具
            if (InjectService.Get <IEntityService>() == null)
            {
                InjectService.RegisterSingleton <IEntityService>(new EntityServiceImpl());
            }

            //注册信号塔对象池
            if (InjectService.Get <ObjectPool <TowerModel> >() == null)
            {
                InjectService.RegisterSingleton(new ObjectPool <TowerModel>());
            }

            //注册手机对象池
            if (InjectService.Get <ObjectPool <PhoneModel> >() == null)
            {
                InjectService.RegisterSingleton(new ObjectPool <PhoneModel>());
            }


            //注册实体工具
            if (InjectService.Get <EntityUtils>() == null)
            {
                InjectService.RegisterSingleton(new EntityUtils());
            }
        }
Пример #4
0
        public void InitTowerList()
        {
            ObjectPool <TowerModel> pool = InjectService.Get <ObjectPool <TowerModel> >();

            Transform parent = GameObject.Find("LinkListParent").transform;

            //遍历字典读取所有的信塔,加载预设
            foreach (var key in pool.objectsDic.Keys)
            {
                var    model   = pool.objectsDic[key];
                var    entity  = (TowerEntity)model.DataEntity;
                string strList = "";
                for (int i = 0; i < entity.towerList.Count; i++)
                {
                    strList += entity.towerList[i].ToString() + ">";
                }
                if (string.IsNullOrEmpty(strList))
                {
                    continue;
                }
                else
                {
                    strList = strList.Remove(strList.Length - 1);
                    //把资源加载到内存中
                    Object obj = Resources.Load("TextList", typeof(GameObject));
                    //用加载得到的资源对象,实例化游戏对象,实现游戏物体的动态加载
                    GameObject prefab = Instantiate(obj) as GameObject;
                    prefab.transform.SetParent(parent);
                    prefab.transform.Find("name/Text").GetComponent <Text>().text = strList;
                }
            }
        }
Пример #5
0
        /// <summary>
        /// 执行初始化过程
        /// </summary>
        //[RuntimeInitializeOnLoadMethod]
        public void Initialize()
        {
            //注册灯对象池
            if (InjectService.Get <ObjectPool <LightDataModel> >() == null)
            {
                InjectService.RegisterSingleton(new ObjectPool <LightDataModel>());
            }

            //注册舞者对象池
            if (InjectService.Get <ObjectPool <DancerDataModel> >() == null)
            {
                InjectService.RegisterSingleton(new ObjectPool <DancerDataModel>());
            }

            //注册实体工具
            if (InjectService.Get <IEntityService>() == null)
            {
                InjectService.RegisterSingleton <IEntityService>(new EntityServiceImpl());
            }

            //注册Logging工具
            if (InjectService.Get <ILoggingService>() == null)
            {
                InjectService.RegisterSingleton <ILoggingService>(new LoggingServiceImpl());
            }
        }
Пример #6
0
        /// <summary>
        /// 设置连接的显示
        /// </summary>
        public void SettingLinkShow(int index)
        {
            //得到当前基站的信息
            ObjectPool <TowerModel> pool = InjectService.Get <ObjectPool <TowerModel> >();

            foreach (var key in pool.objectsDic.Keys)
            {
                pool.objectsDic[key].transform.GetChild(2).GetComponent <Renderer>().material.color = Color.yellow;
                if (key.ToString().Equals(dropdown.captionText.text))
                {
                    pool.objectsDic[key].transform.GetChild(2).GetComponent <Renderer>().material.color = Color.red;
                    var    towerEntity = (TowerEntity)pool.objectsDic[key].DataEntity;
                    string linkInfo    = "";
                    for (int i = 0; i < towerEntity.towerList.Count; i++)
                    {
                        if (i == 0)
                        {
                            linkInfo = towerEntity.towerList[0].ToString();
                        }
                        else
                        {
                            linkInfo = linkInfo + "_" + towerEntity.towerList[i];
                        }
                        var entity = (SettingLinkEntity)GetComponent <SettingLinkViewModel>().DataEntity;
                        entity.linkList = linkInfo;
                    }
                }
            }
        }
Пример #7
0
 /// <summary>
 /// 初始化实验服务
 /// </summary>
 public void Initialize()
 {
     //注册服务单利
     if (InjectService.Get <IServiceExperiment>() == null)
     {
         InjectService.RegisterSingleton <IServiceExperiment, ServiceExperiment>(this);
     }
 }
Пример #8
0
 /// <summary>
 /// 注入命令系统
 /// </summary>
 private void Start()
 {
     goUndo    = GameObject.Find("/Canvas/BtnUndo");
     goRedo    = GameObject.Find("/Canvas/BtnRedo");
     CmdEntity = (CommandDataEntity)FindObjectOfType <CommandDataModel>().DataEntity;
     InjectService.InjectInto(this);
     StartCoroutine(UpdateCommandUIState());
 }
Пример #9
0
 /// <summary>
 /// 初始化服务
 /// </summary>
 public void Initialize()
 {
     //注册服务单利
     if (InjectService.Get <IServiceCompress>() == null)
     {
         InjectService.RegisterSingleton <IServiceCompress, ServiceGzip>(this);
     }
 }
Пример #10
0
        private void InjectMemloaderPayload(object sender, RoutedEventArgs e)
        {
            MenuItem item    = sender as MenuItem;
            string   iniFile = item.Tag + ".ini";

            InjectService.SendPayload(HACGUIKeyset.MemloaderPayloadFileInfo);
            InjectService.SendIni(HACGUIKeyset.MemloaderSampleFolderInfo.GetFile(iniFile));
        }
Пример #11
0
        /// <summary>
        /// 在对象池中删除本对象
        /// </summary>
        private void OnDestroy()
        {
            //在对象池中删除本对象
            ObjectPool <DancerDataModel> pool =
                InjectService.Get <ObjectPool <DancerDataModel> >();

            pool.RemoveObject(this);
        }
Пример #12
0
 /// <summary>
 /// 初始化服务
 /// </summary>
 public void Initialize()
 {
     //注册服务单利
     if (InjectService.Get <IServiceSerializer>() == null)
     {
         InjectService.RegisterSingleton <IServiceSerializer, ServiceJsonDotNet>(this);
     }
 }
Пример #13
0
        /// <summary>
        /// 创建通讯
        /// </summary>
        public void CreateCommincation()
        {
            //Debug.Log("创建通讯");
            //手机1和手机2是否准备就绪
            string str1 = phone1.captionText.text;
            string str2 = phone2.captionText.text;

            if (string.IsNullOrEmpty(str1) || string.IsNullOrEmpty(str2))
            {
                ConnectDefeated("请确认通讯设备是否准备就绪");
                return;
            }
            else
            {
                if (str1.Equals(str2))
                {
                    ConnectDefeated("不能与自己通讯");
                    return;
                }
                else
                {
                    //判断通讯状态
                    int phoneID_1 = System.Convert.ToInt32(phone1.captionText.text);
                    int phoneID_2 = System.Convert.ToInt32(phone2.captionText.text);
                    ObjectPool <PhoneModel> poolPhone = InjectService.Get <ObjectPool <PhoneModel> >();
                    ObjectPool <TowerModel> poolTower = InjectService.Get <ObjectPool <TowerModel> >();
                    var phone1Entity = (PhoneEntity)poolPhone.objectsDic[phoneID_1].DataEntity;
                    var phone2Entity = (PhoneEntity)poolPhone.objectsDic[phoneID_2].DataEntity;

                    var tower1ID = phone1Entity.towerModelID;
                    var tower2ID = phone2Entity.towerModelID;

                    //1.两个手机是否都在服务器
                    if (tower1ID == -1 || tower2ID == -1)
                    {
                        ConnectDefeated("手机不在服务区");
                        return;
                    }
                    //2.两个手机所在的信号塔是否可以互相通信
                    else
                    {
                        var tower1Entity = (TowerEntity)poolTower.objectsDic[tower1ID].DataEntity;
                        var tower2Entity = (TowerEntity)poolTower.objectsDic[tower2ID].DataEntity;
                        //phone1 呼叫 phone2
                        //Debug.Log(tower1ID+"__"+tower2ID);
                        //Debug.Log(tower1Entity.towerList.Count);
                        if (tower1ID == tower2ID || tower1Entity.towerList.Contains(tower2ID))
                        {
                            ConnectSuccess();
                        }
                        else
                        {
                            ConnectDefeated("链路不通");
                        }
                    }
                }
            }
        }
Пример #14
0
 /// <summary>
 /// 注入服务对象
 /// </summary>
 private void Awake()
 {
     //注入WebGLWebAPI接口
     if (InjectService.Get <IWebGlWebAPIService>() == null)
     {
         WebGLWebAPIService service = new WebGLWebAPIService();
         service.Initialize();
     }
 }
Пример #15
0
        private void SendMemloaderIniClicked(object sender, RoutedEventArgs e)
        {
            FileInfo file = RequestOpenFileFromUser(".ini", "Memloader ini (.ini)|*.ini", "Select a ini...");

            if (file != null)
            {
                InjectService.SendIni(file);
            }
        }
Пример #16
0
        /// <summary>
        /// 改变手机显示状态
        /// </summary>
        public void ChangPhoneState(int phoneObjectID, Color color)
        {
            ObjectPool <PhoneModel> pool = InjectService.Get <ObjectPool <PhoneModel> >();

            if (pool.objectsDic.ContainsKey(phoneObjectID))
            {
                pool.objectsDic[phoneObjectID].gameObject.GetComponent <Renderer>().material.color = color;
            }
        }
Пример #17
0
    public void TestTransient2()
    {
        //Not we are not using the interface here
        InjectService.RegisterTransient <WordService>();
        Assert.IsNotNull(InjectService.Get <WordService>());

        InjectService.RegisterTransient(() => new SentanceService());
        Assert.IsNotNull(InjectService.Get <SentanceService>());
    }
 /// <summary>
 /// Unity Method
 /// </summary>
 private void Start()
 {
     _restoreSystem      = new RestoreSystem();
     testFilePath        = Path.Combine(Application.dataPath, testFilePath);
     filePath            = Path.Combine(Application.dataPath, filePath);
     igcsPath            = Path.Combine(Application.dataPath, igcsPath);
     _storgaeDataWrapper = new StorgaeDataWrapper();
     InjectService.InjectInto(this);
 }
Пример #19
0
        private void InjectPayloadClicked(object sender, RoutedEventArgs e)
        {
            FileInfo file = RequestOpenFileFromUser(".bin", "RCM payloads (.bin)|*.bin", "Select a payload...");

            if (file != null)
            {
                InjectService.SendPayload(file);
            }
        }
Пример #20
0
 private void Update()
 {
     if (Input.GetKeyDown(KeyCode.Q))
     {
         ObjectPool <PhoneModel> pool = InjectService.Get <ObjectPool <PhoneModel> >();
         Debug.Log(pool.Count());
         pool.Foreach(Foreach);
     }
 }
Пример #21
0
        /// <summary>
        /// Unity Method
        /// </summary>
        void Start()
        {
            InjectService.InjectInto(this);
            InitTerrain();

            CmdEntity = entityUtils.GetEntity <CommandDataEntity>(gameObject);

            StartCoroutine(UpdateCommandUIState());
        }
Пример #22
0
        private void MountSDButtonClicked(object sender, RoutedEventArgs e)
        {
            InjectService.SendPayload(HACGUIKeyset.MemloaderPayloadFileInfo);

            MountSDLock = true;
            Dispatcher.Invoke(() => UpdateSDButton());

            InjectService.SendIni(HACGUIKeyset.MemloaderSampleFolderInfo.GetFile("ums_sd.ini"));
        }
Пример #23
0
    public void TestPrint()
    {
        InjectService.RegisterSingleton <IWordService, WordService>();
        InjectService.RegisterSingleton <ISentanceService, SentanceService>();
        InjectService.RegisterSingleton <Document>();

        var log = InjectService.Print();

        Assert.IsTrue(log.Count() == 3);
    }
Пример #24
0
 /// <summary>
 /// 初始化浏览器服务
 /// </summary>
 public void Initialize()
 {
     this.Wapper = new WebGLWebAPIServiceWapper();
     Wapper.Initialize();
     //注册服务单利
     if (InjectService.Get <IWebGlWebAPIService>() == null)
     {
         InjectService.RegisterSingleton <IWebGlWebAPIService, WebGLWebAPIService>(this);
     }
 }
Пример #25
0
        /// <summary>
        /// 注册本对象到对象池中
        /// </summary>
        protected override void Start()
        {
            base.Start();

            //注册本对象到对象池中
            ObjectPool <DancerDataModel> pool =
                InjectService.Get <ObjectPool <DancerDataModel> >();

            pool.RegisterObject(this);
        }
Пример #26
0
        public void Initialize()
        {
            wrapper = new LabInterApiWrapper();
            wrapper.Initialize();

            //注册服务单利
            if (InjectService.Get <ILabInterApiService>() == null)
            {
                InjectService.RegisterSingleton <ILabInterApiService, LabInterApiService>(this);
            }
        }
Пример #27
0
        /// <summary>
        /// Undo操作
        /// </summary>
        public override void Undo()
        {
            newObject.SetActive(false);
            ObjectPool <PhoneModel> pool = InjectService.Get <ObjectPool <PhoneModel> >();

            pool.RemoveObject(newObject.GetComponent <PhoneModel>());
            var phoneModel  = newObject.GetComponent <PhoneModel>();
            var phoneEntity = (PhoneEntity)phoneModel.DataEntity;

            pool.objectsDic.Remove(phoneEntity.objectID);
        }
Пример #28
0
        /// <summary>
        /// Redo操作
        /// </summary>
        public override void Redo()
        {
            newObject.SetActive(true);
            ObjectPool <PhoneModel> pool = InjectService.Get <ObjectPool <PhoneModel> >();
            var phoneModel  = newObject.GetComponent <PhoneModel>();
            var phoneEntity = (PhoneEntity)phoneModel.DataEntity;

            pool.RegisterObject(phoneModel);
            if (!pool.objectsDic.ContainsKey(phoneEntity.objectID))
            {
                pool.objectsDic.Add(phoneEntity.objectID, phoneModel);
            }
        }
Пример #29
0
 public void Awake()
 {
     if (InjectService.Get <LabInterSystem>() == null)
     {
         InjectService.RegisterSingleton(this);
     }
     //注入ILabInterApi接口
     if (InjectService.Get <ILabInterApiService>() == null)
     {
         LabInterApiService service = new LabInterApiService();
         service.Initialize();
     }
 }
Пример #30
0
        private void Awake()
        {
            if (InjectService.Get <IServiceCommand>() == null)
            {
                ServiceCommand commandService = new ServiceCommand();
                commandService.Initialize();
            }

            if (InjectService.Get <UIController>() == null)
            {
                InjectService.RegisterSingleton(new UIController());
            }
        }