Exemple #1
0
        public override bool ReloadData(Hashtable table)
        {
#if true    //正常代码
            if (this.data == null)
            {
                return(true);
            }
            CacheManager.GetCacheManager().Global_Args_Table = table["globe_args"] as Hashtable;
            ActionExp[] exps = (this.data as ActionData).ActionExpArray;
            if (exps != null)
            {
                foreach (ActionExp exp in exps)
                {
                    ExpManager.ReloadExp(exp);
                }
            }
            ScanConst(table);
            return(true);
#else       //兼容代码
            if (this.data == null)
            {
                return(true);
            }
            ActionExp[] exps = this.data as ActionExp[];
            if (exps != null)
            {
                foreach (ActionExp exp in exps)
                {
                    ExpManager.ReloadExp(exp);
                }
            }
            ScanConst(table);
            return(true);
#endif
        }
Exemple #2
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (this.m_actexp == null || this.m_actexp.ReturnType == null || this.m_actexp.ReturnType.DBID == FixedValueProvider.TYPE_NIL_ID)
            {
                MessageBox.Show("先输入条件表达式", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            //选中填充API默认值
            ActionExp expa = ExpManager.CreateNewActionExp(new GameAPIDefine(FixedValueProvider.COMPARE_API_ID));

            expa.API.ArgValues[0] = m_Vexp;                                                      //左值为可变类型
            expa.API.ArgValues[1] = ExpManager.CreateUnknownExp();                               //右值为空类型
            m_Vexp.ReturnType     = expa.API.ArgValues[1].ReturnType = this.m_actexp.ReturnType; //让自动填充的左右两个表达式,类型和上面一致


            ExpForm expform = new ExpForm(expa, this.m_gameEvent, true, expa.ReturnType, m_Vexp);

            expform.StartPosition = FormStartPosition.CenterParent;
            if (expform.ShowDialog() == DialogResult.OK)
            {
                this.listBox1.Items.Add(expform.RusultExp);
                this.m_bChanged = true;
            }
        }
Exemple #3
0
    private void HandleSeedPlanting()
    {
        // plant the flower that will bloom
        Instantiate(plant, transform.position, Quaternion.identity);
        _audioSource.PlayOneShot(_audioClip);
        //disable the mesh
        gameObject.GetComponentInChildren <MeshRenderer>().enabled = false;
        gameObject.GetComponent <SphereCollider>().enabled         = false;


        // update our XP
        switch ((int)mySeedType)
        {
        case 0: ExpManager.UpdateXP(100); break;   // flower sprouted

        case 1: ExpManager.UpdateXP(50); break;    // coins sprouted

        case 2: ExpManager.UpdateXP(1000); break;  // crystals sprouted

        case 3: ExpManager.UpdateXP(2500); break;  // tree sprouted

        case 4: ExpManager.UpdateXP(250); break;   // spidertrap sprouted
        }
        // destroy the seed
        Destroy(gameObject, _audioClip.length);
    }
Exemple #4
0
 private void Start()
 {
     instance = this;
     // if (HandleFirebase.instance != null)
     // {
     //     myRanking = (Ranking)HandleFirebase.instance.thisPlayer.rank;
     // }
     savingText.text = "";
 }
        private void ScanConst(Hashtable table)
        {
            Exp exp = this.data as Exp;

            if (exp != null)
            {
                ExpManager.ScanConstantIntoHistory(exp);
            }
        }
Exemple #6
0
        private static void Initialize(CultureInfo sysDefault)
        {
            System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd(IntPtr.Zero);
            DpiFactor = g.DpiX / 96.0;
            g.Dispose();

            Thread.CurrentThread.CurrentUICulture = sysDefault;

            expManager = new ExpManager();
        }
Exemple #7
0
 private void Awake()
 {
     if (m_experiencePointsManager == null)
     {
         m_experiencePointsManager = this;
     }
     else if (m_experiencePointsManager != this)
     {
         Destroy(gameObject);
     }
 }
Exemple #8
0
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
         DontDestroyOnLoad(gameObject);
     }
     else
     {
         DestroyImmediate(gameObject);
     }
 }
        public override bool ReloadData(Hashtable table)
        {
            CacheManager.GetCacheManager().Global_Args_Table = table["globe_args"] as Hashtable;
            Exp exp = this.data as Exp;

            if (exp != null)
            {
                ExpManager.ReloadExp(exp);
            }

            ScanConst(table);
            return(true);
        }
Exemple #10
0
 // Start is called before the first frame update
 private void Awake()
 {
     if (expmanager == null)
     {
         expmanager = this;
     }
     else
     {
         Destroy(gameObject);
         return;
     }
     DontDestroyOnLoad(gameObject);
 }
Exemple #11
0
        private void ScanConst(Hashtable table)
        {
            CacheManager.GetCacheManager().Global_Args_Table = table["globe_args"] as Hashtable;
            GameEvent gameevent = this.data as GameEvent;

            foreach (Exp exp in gameevent.GetEventAPI().ArgValues)
            {
                if (exp != null)
                {
                    ExpManager.ScanConstantIntoHistory(exp);
                }
            }
        }
Exemple #12
0
        private void btnAdd_Click(object sender, EventArgs e) // 添加
        {
            Exp     expa    = ExpManager.CreateNewExp(TypeDefine.NilType);
            ExpForm expform = new ExpForm(expa, this.m_evt, true, expa.ReturnType, null);

            expform.StartPosition = FormStartPosition.CenterParent;
            if (expform.ShowDialog() == DialogResult.OK)
            {
                this.listBox1.Items.Add(expform.RusultExp);
                //this.listBox1.Items.Insert(this.listBox1.SelectedIndex+1, );
                UpdateUnsavedActionList();
                this.m_bChanged = true;
            }
        }
Exemple #13
0
    // 기본공격
    protected override void Start()
    {
        equipedItems = new List <ItemType>();
        equipedItems.Clear();
        expRequired    = new float[levelMax];
        expRequired[0] = 200;
        expRequired[1] = 200;
        for (int i = 2; i < levelMax; i++)
        {
            expRequired[i] = 500 * (i + 1);
        }

        animator = GetComponent <Animator>();

        level   = 0;
        exp     = 0;
        expMgr  = FindObjectOfType <ExpManager>();
        firePos = weapon.firePos;


        attackSkills = new AttackSkill[(int)AttackType.MAX];
        attackSkills[(int)AttackType.DefaulAttack] = new AttackSkill()
        {
            name = "NormalAttack", skill = new NormalAttack(), isActive = true
        };
        attackSkills[(int)AttackType.FireBall] = new AttackSkill()
        {
            name = "FireBall", skill = new FireBallAttack(), isActive = false
        };
        attackSkills[(int)AttackType.MagicBall] = new AttackSkill()
        {
            name = "MagicBall", skill = new MagicBallAttack(), isActive = false
        };
        attackSkills[(int)AttackType.Cycle] = new AttackSkill()
        {
            name = "Cycle", skill = new CycleMagic(), isActive = false
        };
        attackSkills[(int)AttackType.DefaulAttack].skill.Initialize(this);
        attackSkills[(int)AttackType.FireBall].skill.Initialize(this);
        attackSkills[(int)AttackType.MagicBall].skill.Initialize(this);
        attackSkills[(int)AttackType.Cycle].skill.Initialize(this);

        spriteRenderer = GetComponent <SpriteRenderer>();
        jsMove         = FindObjectOfType <Virtualjoystick3>();

        spd = 2.5f;
        //NormalAttack normalAttack = new NormalAttack();
        //normalAttack.Initialize(this, )
        //attackSkills.Add(NormalAttack );
    }
Exemple #14
0
        private void EventListForm_Load(object sender, EventArgs e)
        {
            GameEvent[] events = ExpManager.GetGameEventList();

            //用带数据的事件替换事件列表中的事件
            for (int i = 0; i < events.Length; i++)
            {
                if (selectedEvent != null && events[i].DBID == selectedEvent.DBID)
                {
                    events[i] = selectedEvent.Clone() as GameEvent;
                    break;
                }
            }

            this.comboBox1.Items_AddRange(events);

            //自动选中
            foreach (GameEvent i_event in comboBox1.Items_All)
            {
                if (selectedEvent != null && i_event != null && selectedEvent.DBID == i_event.DBID)
                {
                    comboBox1.Items_SelectedItem = i_event;
                    break;
                }
            }
            if (comboBox1.Items_SelectedItem == null && comboBox1.Items_Count > 0)
            {
                comboBox1.Items_SelectedItem = comboBox1.Items_All[0];
            }

            //自动选中全部/指定
            GameEvent selEvent = this.comboBox1.Items_SelectedItem as GameEvent;

            if (selEvent != null)
            {
                EventAPI api    = selEvent.GetEventAPI();
                bool     isNull = false;
                for (int i = 0; i < api.ArgValues.Count; i++)
                {
                    if (api.ArgValues[i] != null)
                    {
                        isNull = true;
                    }
                }
                if (isNull)
                {
                    this.radioButtonCustom.Checked = true;
                }
            }
        }
    private void FoundMysteryChest(int itemIndex)
    {
        switch (itemIndex)
        {
        case 0:
        {
            SetPoisoned(false);
            //potion
            break;
        }

        case 1:
        {
            EnableHalo();
            //halo
            break;
        }

        case 2:
        {
            hasStamina = false;
            //jug
            break;
        }

        case 3:
        {
            //coins
            levelCoinCount += 1000;
            break;
        }

        case 4:
        {
            //gems
            levelGemCount += 200;
            break;
        }

        case 5:
        {
            //XP
            ExpManager.UpdateXP(100);
            break;
        }
        }
        // respawn the chests
        SpawnMysteryChests();
    }
Exemple #16
0
 // Start is called before the first frame update
 void Start()
 {
     if (instance == null)
     {
         instance = this;
     }
     else if (instance != this)
     {
         Destroy(this);
     }
     DontDestroyOnLoad(this);
     subjectCheck = false;
     protocol     = new List <ProtocolElement>();
     Invoke("FetchHistory", 0);
 }
Exemple #17
0
 private void ScanConst(Hashtable table)
 {
     //扫描常量至缓存
     if (this.data == null)
     {
         return;
     }
     ActionExp[] exps = (this.data as ActionData).ActionExpArray;
     foreach (ActionExp exp in exps)
     {
         if (exp != null)
         {
             ExpManager.ScanConstantIntoHistory(exp);
         }
     }
 }
Exemple #18
0
        private void ScanConst(Hashtable table)
        {
            ConditionData cd = this.data as ConditionData;

            if (cd != null)
            {
                object[] olist = cd.datalist;
                if (olist != null)
                {
                    Exp exp = olist[0] as Exp;
                    if (exp != null)
                    {
                        ExpManager.ScanConstantIntoHistory(exp);
                    }
                }
            }
        }
Exemple #19
0
    // Use this for initialization
    protected void Start()
    {
        gameManager = GameObject.Find("GameManager").GetComponent <GameManager> ();
        m_agent     = this.GetComponent <NavMeshAgent>();

        if (m_agent != null)
        {
            m_originalMoveSpeed = m_agent.speed;
        }
        m_expManager           = GameObject.FindObjectOfType <ExpManager>();
        m_damageNumbersManager = GameObject.FindObjectOfType <DamageNumberManager>();
        m_statusEffectManager  = GameObject.FindObjectOfType <StatusEffectManager>();
        m_explosionManager     = GameObject.FindObjectOfType <ExplosionManager>();
        m_killStreakManager    = GameObject.FindObjectOfType <KillStreakManager>();

        LevelUpdate();
        m_oldHealth = m_currHealth;
    }
Exemple #20
0
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Player")
        {
            _audioSource.PlayOneShot(_audioClip);
            EnableThisObject(false);

            // if this is a collectible trigger differently
            if (myCollectible != CollectibleType.None)
            {
                InteractionManager.SetItemFound((int)myCollectible, true, false);
                print("Collectible points" + collectiblePoints[(int)myCollectible]);
                ExpManager.UpdateXP(collectiblePoints[(int)myCollectible]);
            }
            else if (myType == ItemType.Chest)
            {
                InteractionManager.SetItemFound((int)myMysteryIndex, false, true);
                ExpManager.UpdateXP(itemPoints[(int)myType]);
            }
            else if (myType == ItemType.Shroom)
            {
                // if this is a shroom, we also need to pass the number of seeds to add
                InteractionManager.instance.currentSeedCount += seedCount;
                InteractionManager.SetItemFound((int)myType, false, false);
                ExpManager.UpdateXP(itemPoints[(int)myType]);
            }
            else if (myType == ItemType.IslandHeart)
            {
                // make sure the player has found the mountain blood first
                if (InteractionManager.foundMountainBlood)
                {
                    InteractionManager.SetItemFound((int)myType, false, false);
                    ExpManager.UpdateXP(itemPoints[(int)myType]);
                }
            }
            else
            {
                InteractionManager.SetItemFound((int)myType, false, false);
                ExpManager.UpdateXP(itemPoints[(int)myType]);
            }

            HandleRemoval();
        }
    }
Exemple #21
0
    protected virtual void Start()
    {
        // //Debug.Log("BTL Start");
        uiBtl                 = UIBTL.instance;
        enemySpawner          = EnemySpawner.instance;
        expManager            = ExpManager.instance;
        uiBtl.numberOfEnemies = numberOfEnemies = enemySpawner.numberOfEnemies;
        ////Debug.Log("____ " + numberOfEnemies);
        for (int i = 0; i < 5; i++)
        {
            enemySpawner.AddPos(enemyPos[i], i);
        }
        //Each player and enemy would have an index that stores their information

        //Get player stats from partystats file
        for (int i = 0; i < players.Length; i++)
        {
            UpdatePlayerStats(i);
        }
    }
Exemple #22
0
    //public Button m_fireSelect;
    //public Button m_iceSelect;
    //public Button m_lightningSelect;

    void Awake()
    {
        m_levelUpUI = FindObjectOfType <LevelUpUI>();
        m_XpManager = FindObjectOfType <ExpManager>();

        m_player = GameObject.FindObjectOfType <Player>();

        if (m_player != null)
        {
            m_playerMana = m_player.gameObject.GetComponent <Mana>();
        }


        m_levelUpUI.setClassSelectUI(true);
        //showPerk(m_StartingPerks[0], 0);
        //showPerk(m_StartingPerks[1], 1);
        //showPerk(m_StartingPerks[2], 2);
        //m_levelUpUI.showUI();
        //m_ShowingUI = true;

        m_UpgradeAvailableText.SetActive(false);
    }
Exemple #23
0
        public override bool ReloadData(Hashtable table)
        {
            ConditionData cd = this.data as ConditionData;

            CacheManager.GetCacheManager().Global_Args_Table = table["globe_args"] as Hashtable;
            if (cd != null)
            {
                object[] olist = cd.datalist;
                if (olist != null)
                {
                    Exp        exp   = olist[0] as Exp;
                    List <Exp> elist = olist[1] as List <Exp>;
                    ExpManager.ReloadExp(exp);
                    foreach (Exp ex in elist)
                    {
                        ExpManager.ReloadExp(ex);
                    }
                }
            }
            ScanConst(table);

            return(true);
        }
Exemple #24
0
    // Update is called once per frame
    void Update()
    {
        if (ControlFreak2.CF2Input.GetMouseButtonDown(0) && canShoot)
        {
            projectile = seedsToLaunch[seedIndex].GetComponent <Rigidbody>();
            Rigidbody bulletInstance = Instantiate(projectile, projectileSpawnPoint.position, Quaternion.Euler(new Vector3(0, 0, transform.localEulerAngles.z))) as Rigidbody;
            bulletInstance.GetComponent <Rigidbody>().AddForce(projectileSpawnPoint.right * projectileVelocity);
            InteractionManager.instance.currentSeedCount--;

            ExpManager.UpdateXP(25);//points for each seed thrown, regardless of type

            canShoot = false;
        }
        if (!canShoot)
        {
            timeBetweenShotsCounter -= Time.deltaTime;
            if (timeBetweenShotsCounter <= 0)
            {
                canShoot = true;
                timeBetweenShotsCounter = timeBetweenShots;
            }
        }
    }
 // Use this for initialization
 void Start()
 {
     instance = this;
 }
Exemple #26
0
 // Use this for initialization
 void Start()
 {
     m_xpManager = GameObject.FindObjectOfType <ExpManager>();
 }
 private void Awake()
 {
     instance = this;
 }
    public static void SetItemFound(int itemFound, bool isCollectible, bool isChest)
    {
        Collectible newCollectible;

        if (isCollectible)
        {
            if (!instance.finalSpecialPanel.activeInHierarchy)
            {
                instance.finalSpecialPanel.SetActive(true);
            }

            int bonusAmount = 0;

            switch (itemFound)
            {
            case 1:
            {
                bonusAmount             = 1000;
                instance.gamePlayer.XP += 1000;
                ExpManager.UpdateXP(1000);

                newCollectible = new Collectible("Wooden Horse", 1);
                instance.gamePlayer.collection.Add(newCollectible);
                break;
            }

            case 2:
            {
                bonusAmount             = 2500;
                instance.gamePlayer.XP += 2500;
                ExpManager.UpdateXP(2500);        // found the bear

                newCollectible = new Collectible("Toy Bear", 2);
                instance.gamePlayer.collection.Add(newCollectible);
                break;
            }

            case 3:
            {
                bonusAmount             = 5000;
                instance.gamePlayer.XP += 5000;
                ExpManager.UpdateXP(5000);        // found the ornament

                newCollectible = new Collectible("Ornament", 3);
                instance.gamePlayer.collection.Add(newCollectible);
                break;
            }

            case 4:
            {
                bonusAmount             = 10000;
                instance.gamePlayer.XP += 10000;
                ExpManager.UpdateXP(10000);        // found the starfish

                newCollectible = new Collectible("Starfish", 4);
                instance.gamePlayer.collection.Add(newCollectible);
                break;
            }
            }
            instance.specialPoints    = instance.specialPoints + bonusAmount;
            instance.specialText.text = "Special:" + instance.specialPoints;
        }
        else
        {
            // if this was a chest, then we need to use the itemFound differently
            if (isChest)
            {
                instance.FoundMysteryChest(itemFound);
            }
            else
            {
                switch (itemFound)
                {
                // main level items
                case 0:
                {
                    // mountain blood
                    instance.mainItemSprite.sprite = instance.foundSprite;
                    foundMountainBlood             = true;
                    instance.gamePlayer.XP        += 1000;
                    ExpManager.UpdateXP(1000);
                    instance.gamePlayer.availableLevels[(int)instance.thisLevel].hasCompleted = true;
                    break;
                }

                case 1:
                {
                    instance.gamePlayer.XP += 500;
                    ExpManager.UpdateXP(500);
                    instance.levelBonusItemScore++;
                    instance.bonusItem1Sprite.sprite = instance.foundSprite;
                    instance.foundBonus1             = true;
                    instance.gamePlayer.availableLevels[(int)instance.thisLevel].foundCrystal1 = true;
                    break;
                }

                case 2:
                {
                    instance.gamePlayer.XP += 500;
                    ExpManager.UpdateXP(500);
                    instance.levelBonusItemScore++;
                    instance.bonusItem2Sprite.sprite = instance.foundSprite;
                    instance.foundBonus2             = true;
                    instance.gamePlayer.availableLevels[(int)instance.thisLevel].foundCrystal2 = true;
                    break;
                }

                // collectibles
                case 3:
                {
                    instance.gamePlayer.XP += 1;
                    ExpManager.UpdateXP(1);
                    instance.levelCoinCount++;
                    break;
                }

                case 4:
                {
                    instance.gamePlayer.XP += 5;
                    ExpManager.UpdateXP(5);
                    instance.levelGemCount++; break;
                }

                //case 5: { instance.FoundMysteryChest(itemFound); break; }//found the chest
                case 6: { instance.SetPoisoned(false); break; } //potion

                case 7: { break; }                              //jug

                case 8: { instance.EnableHalo(); break; }       //halo enabled

                case 9: { instance.EnableThrow(true); break; }  // found the shroom

                case 10: LevelCompleted(); break;

                default: { break; }
                }
            }
        }
    }
 // Use this for initialization
 void Start()
 {
     m_playerLevelDisplay = this.GetComponent <Text>();
     m_expManager         = GameObject.FindObjectOfType <ExpManager>();
 }
Exemple #30
0
        private void btnExp_Click(object sender, EventArgs e)
        {
            ExpForm expform = new ExpForm(this.m_actexp, this.m_gameEvent, true, null, null);

            expform.StartPosition = FormStartPosition.CenterParent;
            if (expform.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                if (this.m_actexp.ReturnType != null && this.m_actexp.ReturnType.DBID != expform.RusultExp.ReturnType.DBID)
                {
                    //清空连接线
                    this.listBox1.Items.Clear();
                }
                this.m_actexp          = expform.RusultExp;
                this.m_Vexp.ReturnType = this.m_actexp.ReturnType;      //可变类型的返回值和表达式一致
                this.textBoxX1.Text    = this.m_actexp.ToString();
                this.m_bChanged        = true;
            }
            else
            {
                return;
            }

            //自动添加分支
            if (this.m_actexp != null && this.m_actexp.ReturnType != null)
            {
                //尝试添加枚举的所有类型
                if (this.m_actexp.ReturnType.isEnum)
                {
                    ConstExp[] cexpArray = ExpManager.GetConstExpByReturnType(this.m_actexp.ReturnType);
                    if (cexpArray != null)
                    {
                        foreach (ConstExp cexp in cexpArray)
                        {
                            ActionExp expa = ExpManager.CreateNewActionExp(new GameAPIDefine(FixedValueProvider.COMPARE_API_ID));
                            expa.API.ArgValues[0] = m_Vexp;           //左值为可变类型
                            expa.API.ArgValues[1] = cexp;             //右值为常数值
                            expa.strText          = m_Vexp.ToString() + "==" + cexp.ToString();
                            if (!listBox1.Items.Contains(expa))
                            {
                                this.listBox1.Items.Add(expa);
                                this.m_bChanged = true;
                            }
                        }
                    }
                }

                //尝试添加OpenWindow的选项
                if (this.m_actexp is ActionExp)
                {
                    ActionExp aexp = this.m_actexp as ActionExp;
                    if (aexp.API.DBID == FixedValueProvider.OPENWINDOW_ID) //多选项窗口
                    {
                        Exp dialogExp = aexp.API.ArgValues[2];             //第三个参数
                        if (dialogExp is ConstExp)                         //如果格式文本输入的是常数才处理
                        {
                            string strDialog = (dialogExp as ConstExp).DBValue;
                            Regex  reg       = new Regex(@"(?!=<)\$[^>]*(?=>)");
                            foreach (Match mat in  reg.Matches(strDialog))
                            {
                                string    strSelection = mat.Value.TrimStart(new char[] { '$', 'C', ' ' });
                                ActionExp expa         = ExpManager.CreateNewActionExp(new GameAPIDefine(FixedValueProvider.COMPARE_API_ID));
                                expa.API.ArgValues[0] = m_Vexp;           //左值为可变类型
                                ConstExp cexp = new ConstExp(strSelection, new TypeDefine(FixedValueProvider.TYPE_STRING_ID));
                                m_Vexp.ReturnType     = cexp.ReturnType;
                                expa.API.ArgValues[1] = cexp;             //右值为字符串
                                expa.strText          = m_Vexp.ToString() + "==" + cexp.ToString();
                                if (!listBox1.Items.Contains(expa))
                                {
                                    this.listBox1.Items.Add(expa);
                                    this.m_bChanged = true;
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #31
0
        public override bool EditData(System.Collections.Hashtable table)
        {
            BindDelegate();
            Trace.Assert(table != null);
            Trace.Assert(table.ContainsKey("data"));
            Trace.Assert(table.ContainsKey("event_data"));
            Trace.Assert(table.ContainsKey("prev_data"));
            Trace.Assert(table.ContainsKey("next_data"));
            Trace.Assert(table.ContainsKey("flowchart_name"));
            Trace.Assert(table.ContainsKey("map_name"));

            LuaManager.GetLuaManager().InitOther("flowchart_name", table["flowchart_name"].ToString());
            LuaManager.GetLuaManager().InitOther("map_name", table["map_name"].ToString());
            LuaManager.GetLuaManager().InitOther("client_dir", table["client_dir"].ToString());

            //初始化历史表
            CacheManager.GetCacheManager().Global_Args_Table = table["globe_args"] as Hashtable;

            Exp        exp;
            List <Exp> elist;

            if (table["data"] == null)
            {
                exp   = ExpManager.CreateUnknownExp();
                elist = new List <Exp>();
            }
            else
            {
                ConditionData cd    = table["data"] as ConditionData;
                object[]      olist = cd.datalist;
                exp   = olist[0] as Exp;
                elist = olist[1] as List <Exp>;
            }

            ConditionForm expform = new ConditionForm(exp, table["event_data"] as GameEvent, elist);

            //conForm.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
            //ExpForm expform = new ExpForm(exp, table["event_data"] as GameEvent, true, null);
            expform.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
            if (expform.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                //清空连接线
                Hashtable outlineList = (table["next_data"] as Hashtable);
                foreach (DataElement de in outlineList.Values)
                {
                    if (!elist.Contains(de.Data as Exp))
                    {
                        de.Data        = null;
                        de.Text        = "";
                        de.TooltipText = "";
                    }
                }

                ConditionData cd = new ConditionData();
                cd.datalist = new object[] { expform.ResultExp, expform.LineExpList };
                this.data   = cd;
                this.text   = expform.ResultExp.ToString();
                if (this.text.Length > 15)
                {
                    this.text = this.text.Substring(0, 13) + "...";
                }
                if (expform.ResultExp is ActionExp)
                {
                    this.TooltipText = (expform.ResultExp as ActionExp).strFullText;
                }
                ScanConst(table);
                return(true);
            }
            return(false);
        }