Beispiel #1
0
    // Update is called once per frame
    void Update()
    {
        slider_value = right_click.GetComponent <RightClickSlider>().slider.value;
        enemy        = right_click.GetComponent <RightClickSlider>().enemy;
        if (cloneInstance == null && enemy_stored == false)
        {
            currentMode = Mode.Empty;
        }
        else if (cloneInstance == null)
        {
            currentMode = Mode.Stored;
        }
        else
        {
            currentMode = Mode.Spawned;
            if (cloneInstance.GetComponent <PlayerAttackPattern>().entity == null)
            {
                cloneInstance.GetComponent <PlayerAttackPattern>().entity     = cloneInstance.GetComponent <Entity>();
                cloneInstance.GetComponent <MovementPatternAbstract>().entity = cloneInstance.GetComponent <Entity>();
            }
            cloneInstance.GetComponent <CloneEntity>().setTargetVector(Input.mousePosition);
        }
        switch (currentMode)
        {
        case Mode.Empty:
            active = true;
            if (enemy != null)
            {
                EmptyFill();
                if (recorded_value == 1)
                {
                    cloneTemplate        = enemy.GetComponent <PrefabHolder>().prefab;
                    moveSpeed            = enemy.GetComponent <Entity>().moveSpeed;
                    attackAnimationDelay = enemy.GetComponent <Entity>().attackAnimationDelay;
                    attackSpeed          = enemy.GetComponent <Entity>().attackSpeed;
                    DEFAULT_SPEED        = enemy.GetComponent <Entity>().DEFAULT_SPEED;
                    equip = enemy.GetComponent <Entity>().equip;

                    cloneTemplate = cloneTemplate.GetComponent <PrefabHolder>().prefab;
                    //Debug.Log(equip);
                    recorded_value = 0;
                    enemy_stored   = true;
                }
            }
            else
            {
                setSliderPos2Mouse();
            }
            break;

        case Mode.Stored:
            active = true;
            StoredFill();
            if (cloneInstance == null && clone_ready)
            {
                cloneInstance = Instantiate(cloneTemplate, transform.position, Quaternion.identity);
                Destroy(cloneInstance.GetComponent <MovementPatternAbstract>());
                Destroy(cloneInstance.GetComponent <AttackPatternAbstract>());
                Entity prevEntity = cloneInstance.GetComponent <Entity>();
                //Destroy(cloneInstance.GetComponent<Entity>());
                if (cloneInstance.GetComponent <MeleeMovement>())
                {
                    Destroy(cloneInstance.GetComponent <MeleeMovement>());
                }

                CloneEntity currentEntity = cloneInstance.AddComponent <CloneEntity>();

                currentEntity.equip = prevEntity.equip;

                /*
                 * cloneInstance.GetComponent<Entity>().moveSpeed = this.moveSpeed;
                 * cloneInstance.GetComponent<Entity>().attackAnimationDelay = this.attackAnimationDelay;
                 * cloneInstance.GetComponent<Entity>().attackSpeed = this.attackSpeed;
                 * cloneInstance.GetComponent<Entity>().DEFAULT_SPEED = this.DEFAULT_SPEED;
                 * cloneInstance.GetComponent<Entity>().equip = this.equip;
                 * cloneInstance.GetComponent<Entity>().createWeaponInstance();
                 * //Debug.Log(cloneInstance.GetComponent<Entity>().equip);
                 */

                cloneInstance.AddComponent <CloneMovement>();
                cloneInstance.AddComponent <PlayerAttackPattern>();
                cloneInstance.GetComponent <PlayerAttackPattern>().entity = cloneInstance.GetComponent <Entity>();
                cloneInstance.GetComponent <Entity>().createWeaponInstance();
                cloneInstance.GetComponent <Entity>().setTargetVector(Input.mousePosition);
                //cloneInstance.GetComponent<PlayerAttackPattern>().setEntity(cloneInstance.GetComponent<Entity>());

                cloneInstance.layer = 9;
                cloneInstance.tag   = "Clone";
                setCloneHealth();
                cloneInstance.GetComponent <CloneEntity>().setColor();
                Destroy(prevEntity);
            }

            recorded_value = 0;
            break;

        case Mode.Spawned:
            break;
        }
    }
        /// <summary>
        /// リモートリポジトリをローカルへ複製する
        /// </summary>
        /// <param name="entity">エンティティ</param>
        /// <param name="monitor">モニター</param>
        public void CloneRepository(CloneEntity entity, BusyIndicatorProgressMonitor monitor)
        {
            FilePath directory = entity.Path;

            CloneCommand clone = new CloneCommand();

            //clone.SetCloneAllBranches(true);
            clone.SetDirectory(directory);
            clone.SetURI(entity.Url);

            clone.SetProgressMonitor(monitor);

            if (entity.IsCredential)
            {
                UsernamePasswordCredentialsProvider user = new UsernamePasswordCredentialsProvider(entity.UserName, entity.PassWord);

                clone.SetCredentialsProvider(user);
            }
            BackgroundWorker bw = new BackgroundWorker();

            bw.DoWork += (s, evt) =>
                {
                    monitor.StartAction();

                    try
                    {
                        clone.Call();
                    }
                    catch (JGitInternalException exception)
                    {
                        // TODO:
                    }
                };
            bw.RunWorkerCompleted += (s, evt) =>
                {
                    monitor.CompleteAction();
                };
            bw.RunWorkerAsync();
        }