Ejemplo n.º 1
0
    static void ModifyLust(List <Character> characters, ExpressionEnum expression)
    {
        List <int> expressionValue = characters.Select((character) =>
        {
            return(character.Expression.ExprsesionSkillnRoll(expression));
        }).ToList();

        for (int i = 0; i < characters.Count; i++)
        {
            for (int j = 0; j < characters.Count; j++)
            {
                if (j != i)
                {
                    Character charA          = characters[i];
                    Character charB          = characters[j];
                    int       expressRoll    = expressionValue[j];
                    float     attractionBias = charA.Attraction.AttractionBias(charB.Attraction.Identity);
                    float     preference     = charA.Expression.GetPreference(expression);
                    int       amount         = (int)(((expressRoll + preference) * attractionBias / 2) / 4);
                    charA.Relationships.ModifyLust(charB, amount);
                    Debug.Log(charA.name + " lusting for " + charB.name + ": " + amount);
                }
            }
        }
    }
Ejemplo n.º 2
0
 public float GetPreference(ExpressionEnum expression)
 {
     return(preferences[expression]);
 }
Ejemplo n.º 3
0
 public int ExprsesionSkillnRoll(ExpressionEnum expression)
 {
     return(Roll.Bias(5, 20, (int)skills[expression]));
 }
Ejemplo n.º 4
0
        /// <summary>
        /// 表达式树
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="property">字段</param>
        /// <param name="param">值</param>
        /// <param name="QueryType">类型</param>
        /// <returns></returns>
        public static Expression <Func <TEntity, bool> > GetExpression <TEntity>(string property, object param, ExpressionEnum QueryType)
        {
            ParameterExpression Parameter = Expression.Parameter(typeof(TEntity), "t");

            if (typeof(TEntity).GetProperty(property) == null)
            {
                throw new Exception("字段名不存在,请检查!");
            }
            MemberExpression   Left   = Expression.Property(Parameter, typeof(TEntity).GetProperty(property));
            ConstantExpression Right  = Expression.Constant(param, param.GetType());
            Expression         Filter = null;

            switch (QueryType)
            {
            case ExpressionEnum.Like:
                Filter = Expression.Call(Left, typeof(String).GetMethod("Contains", new Type[] { typeof(String) }), Right);
                break;

            case ExpressionEnum.NotLike:
                Filter = Expression.Not(Expression.Call(Left, typeof(String).GetMethod("Contains", new Type[] { typeof(String) }), Right));
                break;

            case ExpressionEnum.Equals:
                Filter = Expression.Equal(Left, Right);
                break;

            case ExpressionEnum.NotEquals:
                Filter = Expression.NotEqual(Left, Right);
                break;

            case ExpressionEnum.GreaterThan:
                Filter = Expression.GreaterThan(Left, Right);
                break;

            case ExpressionEnum.GreaterThanOrEqual:
                Filter = Expression.GreaterThanOrEqual(Left, Right);
                break;

            case ExpressionEnum.LessThan:
                Filter = Expression.LessThan(Left, Right);
                break;

            case ExpressionEnum.LessThanOrEqual:
                Filter = Expression.LessThanOrEqual(Left, Right);
                break;

            default:
                Filter = Expression.Equal(Left, Right);
                break;
            }
            return(Expression.Lambda <Func <TEntity, bool> >(Filter, Parameter));
        }