Beispiel #1
0
    public override EFuncRet FuncExecHandler(HandleTarget Target, FuncData funcdata, FuncContext context)
    {
        try
        {
            int id = funcdata.ParamIntList[0];

            ThriftVector3 pos = new ThriftVector3();
            pos.X = funcdata.ParamIntList[1];
            pos.Y = funcdata.ParamIntList[2];
            pos.Z = funcdata.ParamIntList[3];

            ThriftVector3 rot = new ThriftVector3();
            rot.X = 0;
            rot.Y = funcdata.ParamIntList[4];
            rot.Z = 0;

            ThriftVector3 scal = new ThriftVector3();
            scal.X = funcdata.ParamIntList[5];
            scal.Y = funcdata.ParamIntList[5];
            scal.Z = funcdata.ParamIntList[5];

            TerrainManager.Instance.CreateNpcById(id, pos, rot, scal);
        }
        catch (Exception)
        {
            Debuger.LogWarning("error on create npc by function ");
        }
        return(EFuncRet.Continue);
    }
    public override EFuncRet FuncExecHandler(HandleTarget Target, FuncData funcdata, FuncContext context)
    {
        try
        {
            ThriftVector3 pos = new ThriftVector3();
            pos.X = funcdata.ParamIntList[0];
            pos.Y = funcdata.ParamIntList[1];
            pos.Z = funcdata.ParamIntList[2];

            ThriftVector3 rot = new ThriftVector3();
            rot.X = 0;
            rot.Y = funcdata.ParamIntList[3];
            rot.Z = 0;

            ThriftVector3 scal = new ThriftVector3();
            scal.X = funcdata.ParamIntList[4];
            scal.Y = funcdata.ParamIntList[4];
            scal.Z = funcdata.ParamIntList[4];
            GameObject elem = EffectContainer.EffectFactory(funcdata.ParamStringList[0]);
            elem.transform.position    = pos.GetVector3();
            elem.transform.eulerAngles = rot.GetVector3();
            elem.transform.localScale  = scal.GetVector3();
        }
        catch
        {
        }

        return(EFuncRet.Continue);
    }
    public override EFuncRet FuncExecHandler(HandleTarget Target, FuncData funcdata, FuncContext context)
    {
        int missionId = funcdata.ParamIntList[0];

        MessageDispatcher.Instance.BroadcastMessage(new MessageObject(ClientCustomMessageDefine.C_ACCEPT_MISSION, missionId));
        return(EFuncRet.Continue);
    }
Beispiel #4
0
 public void ApplyFuncPrase()
 {
     for (int i = keys.Count - 1; i >= 0; --i)
     {
         var key = keys[i];
         if (key.StartsWith("(F)"))
         {
             var data = new FuncData();
             var arr  = key.Substring(3).Split('(');
             data.funcName      = arr[0];
             data.funcTypeParam = arr[1].Substring(0, arr[1].Length - 1);
             // 删除形式参数
             var par = new List <string>(data.funcTypeParam.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries));
             for (int j = par.Count - 1; j > 0; j -= 2)
             {
                 par.RemoveAt(j);
             }
             data.funcType = string.Join(", ", par);
             List <string> content = new List <string>();
             data.data = content;
             foreach (var c in dataContent)
             {
                 content.Add((string)c[i]);
                 c.RemoveAt(i);
             }
             funcDatas.Add(key, data);
             cols.RemoveAt(i);
             keys.RemoveAt(i);
             keyNames.RemoveAt(i);
             types.RemoveAt(i);
         }
     }
 }
Beispiel #5
0
        void CheckDataType(string Name)
        {
            if (tdc.CheckName(Name))              //简单输出显示 变量的值
            {
                CalData datatemp;
                try {
                    datatemp = tdc.GetData(Name).GetCalData();
                } catch (AssignedError e) {
                    PushToShow(e.Message);
                    return;
                }

                switch (datatemp.CalType)
                {
                case DataType.BLOCK:
                {
                    BlockData bd = (BlockData)datatemp;
                    PushToShow(bd.ToString());
                }
                break;

                case DataType.EXP:
                {
                    ExpData ed = (ExpData)datatemp;
                    try {
                        PushToShow(ed.ToString());
                    } catch (ExpError e) {
                        PushToShow(e.Message);
                    }
                    break;
                }

                case DataType.MATRIX:
                {
                    Matrix matrix = (Matrix)datatemp;
                    PushToShow(matrix.ToString());
                }
                break;

                case DataType.FUNC:
                {
                    FuncData fd = (FuncData)datatemp;
                    PushToShow(fd.ToString());
                }
                break;
                }
            }
            else
            {
                var str = SimpleCal(InputData);
                if (str == null)
                {
                    PushToShow("No result");
                }
                else
                {
                    PushToShow(str.ToString());
                }
            }
        }
        public int Accept(DataFunction func)
        {
            FuncData.Clear();
            FuncData.AddRange(func.Data);

            return(ErrorCode);
        }
Beispiel #7
0
    public override EFuncRet FuncExecHandler(HandleTarget Target, FuncData funcdata, FuncContext context)
    {
        int missionStep = MissionManager.Instance.GetMissionStepCounter(funcdata.ParamIntList[0]);

        OperationFunc.FuncOperatorValue((EFuncOperator)funcdata.Oper, ref missionStep, funcdata.ParamIntList[1]);
        MissionManager.Instance.SetMissionStepCounter(funcdata.ParamIntList[0], missionStep);
        return(EFuncRet.Continue);
    }
Beispiel #8
0
 private FuncData FInit(FuncData data)
 {
     SetHp(GetMaxHp());
     SetEnergy(GetMaxEnergy());
     P = data.PlayerValue;
     M = data.MapValue;
     S = data.ShopValue;
     return(data);
 }
Beispiel #9
0
        private FuncData DoWithPerks(Actions act, FuncData data)
        {
            switch (act)
            {
            case Actions.GetDamage:
                Func <FuncData, FuncData> getDamage = FGetDamage;
                foreach (var perk in Perks)
                {
                    getDamage = perk.GetDamage(getDamage);
                }
                return(getDamage(data));

            case Actions.GetHeal:
                Func <FuncData, FuncData> getHeal = FGetHeal;
                foreach (var perk in Perks)
                {
                    getHeal = perk.GetHeal(getHeal);
                }
                return(getHeal(data));

            case Actions.StartTurn:
                Func <FuncData, FuncData> startTurn = FStartTurn;
                foreach (var perk in Perks)
                {
                    startTurn = perk.StartTurn(startTurn);
                }
                return(startTurn(data));

            case Actions.EndTurn:
                Func <FuncData, FuncData> endTurn = FEndTurn;
                foreach (var perk in Perks)
                {
                    endTurn = perk.EndTurn(endTurn);
                }
                return(endTurn(data));

            case Actions.Init:
                Func <FuncData, FuncData> init = FInit;
                foreach (var perk in Perks)
                {
                    init = perk.Init(init);
                }
                return(init(data));

            case Actions.LevelUp:
                Func <FuncData, FuncData> levelUp = FLevelUp;
                foreach (var perk in Perks)
                {
                    levelUp = perk.LevelUp(levelUp);
                }
                return(levelUp(data));

            default:
                return(new FuncData(this));
            }
        }
Beispiel #10
0
 private FuncData FStartTurn(FuncData data)
 {
     Chosen = true;
     RefreshAttacks();
     RefreshMovement();
     foreach (var skill in Skills)
     {
         skill.Tick(1);
     }
     return(data);
 }
Beispiel #11
0
 public void EndPCall()
 {
     if (oldTop != -1)
     {
         luaState.EndPCall(oldTop);
         argCount = 0;
         FuncData data = stack.Pop();
         oldTop   = data.oldTop;
         stackPos = data.stackPos;
     }
 }
        private void OnItemChoosed(object data)
        {
            FuncData funcData = data as FuncData;

            if (funcData == null)
            {
                return;
            }
            funcData.Property.stringValue = funcData.Value;
            funcData.Property.serializedObject.ApplyModifiedProperties();
        }
Beispiel #13
0
    static public int HandleFuncExec(HandleTarget Target, int iFuncGroupId, FuncContext context)
    {
        if (null == Target || 0 == iFuncGroupId)
        {
            return(0);
        }

        FuncGroup funcdataGroup = ConfigManager.Instance.GetFuncGroup(iFuncGroupId);

        if (null == funcdataGroup || null == funcdataGroup.FuncDataList)
        {
            return(0);
        }

        //Exec Func
        FuncData ExecData = null;
        int      iLoop    = 0;

        for ( ; iLoop < funcdataGroup.FuncDataList.Count; ++iLoop)
        {
            ExecData = funcdataGroup.FuncDataList[iLoop];
            if (null == ExecData)
            {
                continue;
            }

            FuncMethodsBase func = null;
            FuncExec.TryGetValue(ExecData.Id, out func);
            //
            if (null == func)
            {
                continue;
            }

            EFuncRet eRet = func.FuncExecHandler(Target, ExecData, context);

            if (EFuncRet.Break == eRet)
            {
                break;
            }
            else if (EFuncRet.Error == eRet)
            {
                UnityEngine.Debug.LogWarning("HandleFuncExec is error, id : " + ExecData.Id.ToString());
            }
        }

        if (iLoop == funcdataGroup.FuncDataList.Count)
        {
            return(-1);
        }

        return(iLoop);
    }
Beispiel #14
0
        private FuncData FGetDamage(FuncData damage)
        {
            var arm       = GetArmor();
            var res       = GetResist();
            var resDamage = new Damage(this, damage.PlayerValue, damage.DamageValue.Phys > arm ? damage.DamageValue.Phys - arm : 0,
                                       damage.DamageValue.Magic > res ? damage.DamageValue.Magic - res : 0,
                                       damage.DamageValue.Pure);

            AddHp(-resDamage.Sum());
            resDamage.NotifyPlayer();
            return(new FuncData(this, dmgV: resDamage));
        }
 public override EFuncRet FuncExecHandler(HandleTarget Target, FuncData funcdata, FuncContext context)
 {
     try
     {
         bool newValue = funcdata.ParamIntList[0] != 0;
         GestureManager.Instance.SetDictation(newValue);
     }
     catch (Exception)
     {
         Debuger.LogWarning("error on Change Dictate Game Status by function ");
     }
     return(EFuncRet.Continue);
 }
    public override EFuncRet FuncExecHandler(HandleTarget Target, FuncData funcdata, FuncContext context)
    {
        try
        {
            int id = funcdata.ParamIntList[0];

            MessageDispatcher.Instance.BroadcastMessage(new MessageObject(ClientCustomMessageDefine.C_CHANGE_TO_WORLD_GAME, id));
        }
        catch (Exception)
        {
            Debuger.LogWarning("error on Change To WorldGame by function ");
        }
        return(EFuncRet.Continue);
    }
Beispiel #17
0
    public override EFuncRet FuncExecHandler(HandleTarget Target, FuncData funcdata, FuncContext context)
    {
        try
        {
            int id = funcdata.ParamIntList[0];

            TerrainManager.Instance.DestroyNpcById(id);
        }
        catch (Exception)
        {
            Debuger.LogWarning("error on create npc by function ");
        }
        return(EFuncRet.Continue);
    }
Beispiel #18
0
 public override EFuncRet FuncExecHandler(HandleTarget Target, FuncData funcdata, FuncContext context)
 {
     List<Ilife> target = Target.GetTarget((EFuncTarget) (funcdata.Target));
     for (int i = 0; i < target.Count; ++i)
     {
         Ilife elem = target[i];
         if (!(elem is PlayerCharacter))
         {
             continue;
         }
         bool newValue = funcdata.ParamIntList[1] != 0;
         PlayerManager.Instance.GetCharCounterData().SetFlag(funcdata.ParamIntList[0], newValue);
     }
     return EFuncRet.Continue;
 }
 private static void ProcessOperator(FuncData op, Expression e, Stack <FuncData> tmpStack)
 {
     while (tmpStack.Count > 0)           //while operators with higher or equal precedence
     {
         FuncData fd = tmpStack.Peek();
         if (fd.SpecialKind == SpecialOperandKind.NotSpecial && !fd.IsFunctionOrUnary && fd.Precedence >= op.Precedence)
         {
             e.Append(tmpStack.Pop().Func);
         }
         else
         {
             break;
         }
     }
     tmpStack.Push(op);
 }
Beispiel #20
0
    public override EFuncRet FuncExecHandler(HandleTarget Target, FuncData funcdata, FuncContext context)
    {
        List <Ilife> target = Target.GetTarget((EFuncTarget)(funcdata.Target));

        for (int i = 0; i < target.Count; ++i)
        {
            Ilife elem = target[i];
            if (!(elem is PlayerCharacter))
            {
                continue;
            }
            sbyte newValue = 0;
            OperationFunc.FuncOperatorValue((EFuncOperator)(funcdata.Oper), ref newValue, (sbyte)(funcdata.ParamIntList[1]));
            PlayerManager.Instance.GetCharCounterData().SetBit8Count(funcdata.ParamIntList[0], newValue);
        }
        return(EFuncRet.Continue);
    }
Beispiel #21
0
        /// <summary>
        /// 给定函数的名字 返回修改Funcexpresstemp后的FuncString对象 连同变量一同替换 一步到位
        /// </summary>
        /// <param name="funname">函数名</param>
        /// <returns>FuncString 或者 null</returns>
        public FuncString FindFuncInTDC(string funname)
        {
            FuncString fs = null;

            if (tdc.CheckName(funname))
            {
                FuncData   fd          = (FuncData)tdc.GetData(funname).GetCalData();
                FuncString funs        = new  FuncString(funname, fd.GetExpValue(), fd.GetParamers());
                string     funcexpress = ReplaceParamers(funs.GetFuncExpress(), funs.GetParamers());
                if (funcexpress != null)
                {
                    funs.SetFuncExpress(funcexpress);
                }
                fs = funs;
            }
            return(fs);
        }
Beispiel #22
0
        public double FuncResult(string fs, TempDataCollection tdcl, params string[] nums)
        {
            double result = 0;

            if (fs != null)
            {
                PushToShow("有括号求值");
                FuncCal    fc   = new FuncCal();
                FuncData   fd   = (FuncData)tdc.GetData(fs).GetCalData();
                FuncString funs = new  FuncString(fs, fd.GetExpValue(), fd.GetParamers());
                fc.SetFuncString(funs);
                fc.DealFuncstring(nums);
                result = fc.GetResult();
                PushToShow("结果:" + fc.GetResult());
                if (fc.IsWrong())
                {
                    PushToShow("出错了!" + fc.ErrorMessage());
                }
            }
            return(result);
        }
    public override EFuncRet FuncExecHandler(HandleTarget Target, FuncData funcdata, FuncContext context)
    {
        try
        {
            int id = funcdata.ParamIntList[0];

            if (id > 9 && id < 15)
            {
                PlayerManager.Instance.GetCharCounterData().SetFlag(id, true);
            }
            else
            {
                Debuger.LogWarning("error on unlock stage");
            }
        }
        catch (Exception)
        {
            Debuger.LogWarning("error on unlock stage ");
        }
        return(EFuncRet.Continue);
    }
Beispiel #24
0
    public override EFuncRet FuncExecHandler(HandleTarget Target, FuncData funcdata, FuncContext context)
    {
        try
        {
            int id = funcdata.ParamIntList[0];

            MessageDispatcher.Instance.BroadcastMessage(new MessageObject(ClientCustomMessageDefine.C_CHANGE_TO_NODE_GAME, id));

            if (funcdata.ParamIntList.Count > 2)
            {
                WorldSceneDispatchController.Instance.SetExitFunId(funcdata.ParamIntList[1], funcdata.ParamIntList[2]);
            }
            else if (funcdata.ParamIntList.Count > 1)
            {
                WorldSceneDispatchController.Instance.SetExitFunId(funcdata.ParamIntList[1], 0);
            }
        }
        catch (Exception)
        {
            Debuger.LogWarning("error on Change To NodeGame by function ");
        }
        return(EFuncRet.Continue);
    }
Beispiel #25
0
 private FuncData FEndTurn(FuncData data)
 {
     Regenerate();
     Chosen = false;
     return(data);
 }
Beispiel #26
0
 private FuncData FGetHeal(FuncData heal)
 {
     AddHp(heal.DoubleValue);
     return(heal);
 }
Beispiel #27
0
 private FuncData FLevelUp(FuncData data)
 {
     Level++;
     return(data);
 }
Beispiel #28
0
		private static void ProcessOperator(FuncData op, Expression e, Stack<FuncData> tmpStack)
		{
			while (tmpStack.Count>0) //while operators with higher or equal precedence
			{
				FuncData fd = tmpStack.Peek();
				if (fd.SpecialKind == SpecialOperandKind.NotSpecial && !fd.IsFunctionOrUnary && fd.Precedence >= op.Precedence)
					e.Append(tmpStack.Pop().Func);
				else 
					break;
			}
			tmpStack.Push(op);
		}
Beispiel #29
0
 public abstract EFuncRet FuncExecHandler(HandleTarget Target, FuncData funcdata, FuncContext context);
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            if (popupStyle == null)
            {
                popupStyle = new GUIStyle(GUI.skin.GetStyle("PaneOptions"));
                popupStyle.imagePosition = ImagePosition.ImageOnly;
            }

            label    = EditorGUI.BeginProperty(position, label, property);
            position = EditorGUI.PrefixLabel(position, label);

            EditorGUI.BeginChangeCheck();

            //property.serializedObject.Update();

            SerializedProperty spIdentifier = property.FindPropertyRelative("m_Identifier");


            // Calculate rect for configuration button
            Rect buttonRect = new Rect(position);

            buttonRect.yMin += popupStyle.margin.top;
            buttonRect.width = popupStyle.fixedHeight + popupStyle.margin.right;
            position.xMin    = buttonRect.xMax + popupStyle.margin.right;
            property.serializedObject.ApplyModifiedProperties();
            object           obj              = ObjectFinder.FindObject(this.fieldInfo, property);
            IEnumerable      enumerable       = obj as IEnumerable;
            ObjectIdentifier objectIdentifier = obj as ObjectIdentifier;

            if (enumerable != null)
            {
                int index = 0;
                int.TryParse(property.propertyPath.Last((c) => c != ']').ToString(), out index);
                foreach (var enumObj in enumerable)
                {
                    if (index == 0)
                    {
                        objectIdentifier = enumObj as ObjectIdentifier;
                        break;
                    }
                    index--;
                }
            }

            //ObjectIdentifier objectIdentifier = GetValue(GetParent(property), property.name) as ObjectIdentifier;

            // Store old indent level and set it to 0, the PrefixLabel takes care of it
            int indent = EditorGUI.indentLevel;

            EditorGUI.indentLevel = 0;

            //if (Event.current.commandName.Equals("ObjectSelectorUpdated"))
            //{
            //    UnityEngine.Object g = EditorGUIUtility.GetObjectPickerObject();
            //    Debug.Log(g);
            //}

            if (objectIdentifier != null)
            {
                List <CoreObject> coreObjects = new List <CoreObject>();
                Type[]            types       = objectIdentifier.GetSupportedTypes();
                if (types != null)
                {
                    foreach (Type type in types)
                    {
                        UnityEngine.Object[] foundObjects = Resources.FindObjectsOfTypeAll(type);
                        foreach (UnityEngine.Object foundObject in foundObjects)
                        {
                            CoreObject foundCoreObject = foundObject as CoreObject;
                            if (foundCoreObject)
                            {
                                coreObjects.Add(foundCoreObject);
                            }
                        }
                    }
                }
                coreObjects.Sort((first, second) => { return(first.Identifier.CompareTo(second.Identifier)); });
                string[]    names = new string[coreObjects.Count];
                GenericMenu gm    = new GenericMenu();
                for (int i = 0; i < coreObjects.Count; i++)
                {
                    names[i] = coreObjects[i].Identifier;
                    FuncData funcData = new FuncData();
                    funcData.Property = spIdentifier;
                    funcData.Value    = names[i];
                    gm.AddItem(new GUIContent(names[i].Replace('.', '/')), false, OnItemChoosed, funcData);
                }
                if (GUI.Button(buttonRect, GUIContent.none, popupStyle))
                {
                    gm.DropDown(buttonRect);

                    //EditorGUIUtility.ShowObjectPicker<CoreObject>(null, false, "", 0);
                }
                //spIdentifier.stringValue = EditorGUI.TextField(position, spIdentifier.stringValue);

                Event evt = Event.current; switch (evt.type)
                {
                case EventType.DragUpdated:
                case EventType.DragPerform:
                    if (!position.Contains(evt.mousePosition))
                    {
                        return;
                    }

                    if (DragAndDrop.objectReferences.Length != 1)
                    {
                        return;
                    }
                    CoreObject coreObject = DragAndDrop.objectReferences[0] as CoreObject;
                    if (!coreObject)
                    {
                        return;
                    }

                    DragAndDrop.visualMode = DragAndDropVisualMode.Copy;

                    if (evt.type == EventType.DragPerform)
                    {
                        DragAndDrop.AcceptDrag();

                        spIdentifier.stringValue = coreObject.Identifier;
                        spIdentifier.serializedObject.ApplyModifiedProperties();
                        property.serializedObject.ApplyModifiedProperties();
                    }
                    break;
                }
                EditorGUI.PropertyField(position, spIdentifier, GUIContent.none);
            }
            if (EditorGUI.EndChangeCheck())
            {
                property.serializedObject.ApplyModifiedProperties();
            }

            EditorGUI.indentLevel = indent;
            EditorGUI.EndProperty();
        }
 public override EFuncRet FuncExecHandler(HandleTarget Target, FuncData funcdata, FuncContext context)
 {
     AudioPlayer.Instance.PlayAudio(funcdata.ParamStringList[0], Vector3.zero, false);
     return(EFuncRet.Continue);
 }