public IHttpActionResult Put(int id, ETransition eTransition)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != eTransition.transition_id)
            {
                return(BadRequest());
            }

            db.Entry(eTransition).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ETransitionExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public IHttpActionResult Get(int id)
        {
            ETransition eTransition = db.ETransitions.Find(id);

            if (eTransition == null)
            {
                return(NotFound());
            }

            return(Ok(eTransition));
        }
예제 #3
0
 /// <summary>
 /// 获取新的状态,如果有状态过渡
 /// </summary>
 /// <param name="transition"></param>
 /// <returns></returns>
 public string getOutState(ETransition transition)
 {
     if (map.ContainsKey(transition))
     {
         return(map[transition]);
     }
     else
     {
         return(null);
     }
 }
예제 #4
0
 /// <summary>
 /// 删除条件
 /// </summary>
 /// <param name="transition"></param>
 public void deleteTransition(ETransition transition)
 {
     if (transition == ETransition.NULL)
     {
         return;
     }
     if (map.ContainsKey(transition))
     {
         map.Remove(transition);
     }
 }
예제 #5
0
 protected Dictionary <ETransition, string> map = new Dictionary <ETransition, string>();//装换条件和状态的名字
 /// <summary>
 /// 添加条件
 /// </summary>
 /// <param name="transition"></param>
 /// <param name="stateName"></param>
 public void addTransition(ETransition transition, string stateName)
 {
     if (transition == ETransition.NULL || string.IsNullOrEmpty(stateName))
     {
         return;
     }
     if (!map.ContainsKey(transition))
     {
         map.Add(transition, stateName);
     }
 }
        public IHttpActionResult Post(ETransition eTransition)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.ETransitions.Add(eTransition);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = eTransition.transition_id }, eTransition));
        }
예제 #7
0
 internal void register(object obj, float time, float delay, ETransition transition, IDictionary <string, object> properties, CompletedCallback callback)
 {
     _registerInfosInit.Add(new RegisterInfo()
     {
         obj        = obj,
         time       = time,
         delay      = delay,
         transition = transition,
         // startTime = Time.time + delay,
         properties = properties,
         callback   = callback,
     });
 }
        public IHttpActionResult Delete(int id)
        {
            ETransition eTransition = db.ETransitions.Find(id);

            if (eTransition == null)
            {
                return(NotFound());
            }

            db.ETransitions.Remove(eTransition);
            db.SaveChanges();

            return(Ok(eTransition));
        }
예제 #9
0
        /// <summary>
        /// 转换状态
        /// </summary>
        /// <param name="transition">条件</param>
        public void doTransition(ETransition transition)
        {
            if (transition == ETransition.NULL)
            {
                return;
            }
            string newStateName = curState.getOutState(transition);//获取当前状态要装换到的下一个状态名字

            if (string.IsNullOrEmpty(newStateName))
            {
                return;
            }
            //转换状态
            for (int i = 0; i < listState.Count; i++)
            {
                if (newStateName.Equals(listState[i].Name))
                {
                    curState.doBeforeLeaving();  //当前状态离开时候要做的事情
                    curState = listState[i];     //更换当前状态
                    curState.doBeforeEntering(); //进入当前状态做的事情
                    break;
                }
            }
        }
예제 #10
0
        public void updateProperties(GameTime gameTime, IDictionary <string, object> properties, double duration, ETransition transition)
        {
            double startTime = gameTime.TotalGameTime.TotalSeconds;
            double endTime   = startTime + duration;

            foreach (KeyValuePair <string, object> item in properties)
            {
                string name = item.Key;

                IProperty property = null;

                System.Reflection.PropertyInfo proInfo = obj.GetType().GetProperty(name);

                if (proInfo != null)
                {
                    property = new PropertyProperty()
                    {
                        property = proInfo
                    };
                }


                if (property == null)
                {
                    System.Reflection.FieldInfo fieldInfo = obj.GetType().GetField(name);

                    if (fieldInfo != null)
                    {
                        property = new FieldProperty()
                        {
                            field = fieldInfo
                        };
                    }
                }

                if (property == null)
                {
                    continue;
                }

                Type           proType   = property.getType();
                IChangeSet     changeSet = null;
                TransitionCall transCall = EaseUtils.easeLinear;


                switch (transition)
                {
                case ETransition.EaseInElastic:
                    transCall = EaseUtils.easeInElastic;
                    break;

                case ETransition.EaseOutElastic:
                    transCall = EaseUtils.easeOutElastic;
                    break;

                case ETransition.EaseInOutElastic:
                    transCall = EaseUtils.easeInOutElastic;
                    break;

                case ETransition.EaseInCubic:
                    transCall = EaseUtils.easeInCubic;
                    break;

                case ETransition.EaseOutCubic:
                    transCall = EaseUtils.easeOutCubic;
                    break;

                case ETransition.Linear:
                    transCall = EaseUtils.easeLinear;
                    break;
                }

                if (proType == typeof(float))
                {
                    float beginValue  = (float)(property.getValue(obj, null));
                    float gotoValue   = float.Parse(item.Value.ToString());
                    float changeValue = gotoValue - beginValue;

                    FloatSet floatSet = new FloatSet(transCall)
                    {
                        name        = name,
                        beginValue  = beginValue,
                        changeValue = changeValue,
                        startTime   = startTime,
                        endTime     = endTime,
                        duration    = duration,
                        property    = property,
                    };
                    changeSet = floatSet;
                }
                else if (proType == typeof(int))
                {
                    int beginValue  = (int)(property.getValue(obj, null));
                    int gotoValue   = int.Parse(item.Value.ToString());
                    int changeValue = gotoValue - beginValue;

                    changeSet = new IntSet(transCall)
                    {
                        name        = name,
                        beginValue  = beginValue,
                        changeValue = changeValue,
                        startTime   = startTime,
                        endTime     = endTime,
                        duration    = duration,
                        property    = property,
                    };
                }

                if (changeSet != null)
                {
                    if (!_names.Contains(name))
                    {
                        _names.Add(name);
                    }

                    _changeSets[name] = changeSet;
                }
            }
        }
예제 #11
0
 public static void add(object obj, float time, float delay, ETransition transition, IDictionary <string, object> properties, CompletedCallback callback = null)
 {
     Tweener.get().register(obj, time, delay, transition, properties, callback);
 }