protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            IEntityAccessor accessor = EntityAccessorFactory.Create(EntityAccessorTypes.WebForm);

            Administrator admin = Administrator.FindAll()[0];

            accessor
            .SetConfig(EntityAccessorOptions.AllFields, true)
            .SetConfig(EntityAccessorOptions.ItemPrefix, "field")
            .SetConfig(EntityAccessorOptions.Container, this)
            .Write(admin, null);


            Administrator admin2 = new Administrator();
            accessor.Read(admin2, null);


            Debug.Assert(admin.ID == admin2.ID);
            Debug.Assert(admin.Name == admin2.Name);
            Debug.Assert(admin2.DisplayName == null); // Label只能写不能读
            Debug.Assert(admin2.FriendName == admin2.FriendName);
            Debug.Assert(admin.Logins == admin2.Logins);
            Debug.Assert(admin.IsEnable == admin2.IsEnable);
            Debug.Assert(Math.Abs((admin.LastLogin - admin2.LastLogin).Ticks) < TimeSpan.FromSeconds(1).Ticks);
            Debug.Assert(admin.RoleID == admin2.RoleID);
            Debug.Assert(admin.RoleName == admin2.RoleName);
            //Debug.Assert(admin.SSOUserID == admin2.SSOUserID);
        }
    }
Пример #2
0
        /// <summary>1フレーム分の描画処理を実行します。</summary>
        /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
        /// <param name="graphics">グラフィック データ。</param>
        public void draw(IEntityAccessor accessor, Graphics graphics)
        {
            Score score = (Score)accessor.entity;

            graphics.spriteBatch.DrawString(graphics.spriteFont,
                                            "HISCORE: " + score.highest.ToString(), new Vector2(0, 560), Color.Black);
        }
Пример #3
0
 /// <summary>1フレーム分の描画処理を実行します。</summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 /// <param name="graphics">グラフィック データ。</param>
 public virtual void draw(IEntityAccessor accessor, Graphics graphics)
 {
     Character.CharacterAccessor chr = (Character.CharacterAccessor)accessor;
     graphics.spriteBatch.Draw(graphics.gameThumbnail, chr.position,
                               null, chr.color, 0f, new Vector2(Graphics.RECT * 0.5f),
                               chr.size / Graphics.RECT, SpriteEffects.None, 0f);
 }
Пример #4
0
 /// <summary>
 /// <para>状態が開始された時に呼び出されます。</para>
 /// <para>このメソッドは、遷移元の<c>teardown</c>よりも後に呼び出されます。</para>
 /// </summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 public override void setup(IEntityAccessor accessor)
 {
     Character.CharacterAccessor chr = (Character.CharacterAccessor)accessor;
     chr.color    = Color.White;
     chr.size     = SIZE;
     chr.position = defaultPosition;
     amount       = DEFAULT_AMOUNT;
 }
Пример #5
0
        /// <summary>1フレーム分の描画処理を実行します。</summary>
        /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
        /// <param name="graphics">グラフィック データ。</param>
        public void draw(IEntityAccessor accessor, Graphics graphics)
        {
            Score score = (Score)accessor.entity;

            graphics.spriteBatch.DrawString(graphics.spriteFont,
                                            "SCORE: " + score.now.ToString(), new Vector2(300, 560), Color.Black);
            StateHiScoreOnly.instance.draw(accessor, graphics);
        }
Пример #6
0
 /// <summary>1フレーム分の描画処理を実行します。</summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 /// <param name="graphics">グラフィック データ。</param>
 public void draw(IEntityAccessor accessor, Graphics graphics)
 {
     graphics.spriteBatch.DrawString(
         graphics.spriteFont, "SAMPLE 1", new Vector2(200, 100),
         Color.Black, 0f, Vector2.Zero, 5f, SpriteEffects.None, 0f);
     graphics.spriteBatch.DrawString(graphics.spriteFont,
                                     "PUSH SPACE KEY.", new Vector2(340, 400), Color.Black);
 }
Пример #7
0
        public JsClr(IJintVisitor visitor)
        {
            _global = visitor.Global;
            _propertyGetter = visitor.PropertyGetter;
            _fieldGetter = visitor.FieldGetter;
            _entityAccessor = visitor.EntityAccessor;

            value = null;
        }
Пример #8
0
 /// <summary>1フレーム分の更新処理を実行します。</summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 public void update(IEntityAccessor accessor)
 {
     mgrTask.update();
     createEnemy(accessor);
     if (mgrEnemy.hitTest(player) && !player.damage(1))
     {
         accessor.entity.nextState = SceneTitle.instance;
     }
 }
Пример #9
0
        public JsClr(IJintVisitor visitor)
        {
            _global         = visitor.Global;
            _propertyGetter = visitor.PropertyGetter;
            _fieldGetter    = visitor.FieldGetter;
            _entityAccessor = visitor.EntityAccessor;

            value = null;
        }
Пример #10
0
 /// <summary>
 /// 1フレーム分の更新を行う時に呼び出されます。
 /// </summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 public override void update(IEntityAccessor accessor)
 {
     if (accessor.counter >= HOMING_LIMIT)
     {
         accessor.entity.nextState = StateEnemyStraight.homing;
     }
     Character.CharacterAccessor chr = (Character.CharacterAccessor)accessor;
     initVelocity(chr, chr.velocity.Length());
     base.update(accessor);
 }
Пример #11
0
 /// <summary>
 /// <para>状態が開始された時に呼び出されます。</para>
 /// <para>このメソッドは、遷移元の<c>teardown</c>よりも後に呼び出されます。</para>
 /// </summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 public override void setup(IEntityAccessor accessor)
 {
     Character.CharacterAccessor chr = (Character.CharacterAccessor)accessor;
     chr.counter = 0;
     chr.size    = SIZE;
     chr.color   = color;
     if (!chr.entity.contains)
     {
         start(chr);
     }
 }
Пример #12
0
        /// <summary>
        /// 敵機を作成します。
        /// </summary>
        /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
        private void createEnemy(IEntityAccessor accessor)
        {
            int counter = accessor.counter;

            if (counter % (int)MathHelper.Max(60 - counter * 0.01f, 1) == 0)
            {
                mgrEnemy.create(counter * 0.001f);
                if (Score.instance.add(10))
                {
                    player.damage(-1);
                }
            }
        }
Пример #13
0
        /// <summary>1フレーム分の更新処理を実行します。</summary>
        /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
        public override void update(IEntityAccessor accessor)
        {
            Character.CharacterAccessor chr = (Character.CharacterAccessor)accessor;
            chr.velocity = createVelocity();
            Vector2 prev = chr.position;

            base.update(accessor);
            if (!chr.entity.contains)
            {
                chr.position = prev;
                chr.velocity = Vector2.Zero;
            }
        }
Пример #14
0
        /// <summary>1フレーム分の更新処理を実行します。</summary>
        /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
        public void update(IEntityAccessor accessor)
        {
            KeyboardState keyState  = KeyStatus.instance.keyboardState;
            IState        nextState = null;

            if (keyState.IsKeyDown(Keys.Escape))
            {
                nextState = StateEmpty.instance;
            }
            if (keyState.IsKeyDown(Keys.Space))
            {
                // ゲーム開始
                nextState = ScenePlay.instance;
            }
            accessor.entity.nextState = nextState;
        }
Пример #15
0
        public ExecutionVisitor(Options options, IScriptEngineContext context)
        {
            this.scriptEngineContext = context;
            this.methodInvoker = context.GetMethodInvoker(this);//new CachedMethodInvoker(this);
            this.propertyGetter = new CachedReflectionPropertyGetter(methodInvoker);
            this.constructorInvoker = new CachedConstructorInvoker(methodInvoker);
            this.typeResolver = context.GetTypeResolver();//new CachedTypeResolver();
            this.fieldGetter = new CachedReflectionFieldGetter(methodInvoker);
            _entitiyAccessor = new EntityAccessor();

            GlobalScope = new JsObject();
            Global = new JsGlobal(this, options);
            GlobalScope.Prototype = Global as JsDictionaryObject;
            EnterScope(GlobalScope);
            CallStack = new Stack<string>();
        }
Пример #16
0
        /// <summary>使用Request参数填充entity</summary>
        /// <param name="entity"></param>
        protected virtual void FillEntityWithRequest(IEntity entity)
        {
            if (entity == null || HttpContext.Current == null || HttpContext.Current.Request == null)
            {
                return;
            }

            // 借助Http实体访问器,直接把Request参数读入到实体里面
            IEntityAccessor accessor = EntityAccessorFactory.Create(EntityAccessorTypes.Http);

            // 这里的异常不需要暴露到外部
            try
            {
                accessor.Read(entity);
            }
            catch { }
        }
    protected void fieldID_Click(object sender, EventArgs e)
    {
        IEntityAccessor accessor = EntityAccessorFactory.Create(EntityAccessorTypes.WebForm);
        Administrator   admin2   = new Administrator();

        accessor
        .SetConfig(EntityAccessorOptions.AllFields, true)
        .SetConfig(EntityAccessorOptions.ItemPrefix, "field")
        .SetConfig(EntityAccessorOptions.Container, this)
        .Read(admin2, null);


        Debug.Assert(admin2.Name != null);
        Debug.Assert(admin2.DisplayName == null); // Label只能写不能读
        Debug.Assert(admin2.RoleName != null);
        Debug.Assert(admin2.RoleID != 0);
        Debug.Assert(admin2.Logins > 0);
        Debug.Assert(admin2.Password != null);
        Debug.Assert(admin2.LastLogin - DateTime.MinValue > TimeSpan.FromDays(1));
        Debug.Assert(admin2.ID != 0);
    }
Пример #18
0
 public ClrEntityDescriptor(IEntityAccessor entityAccessor, IGlobal global, JsDictionaryObject owner, string name)
     : base(owner, name)
 {
     _entityAccessor = entityAccessor;
     _global = global;
 }
Пример #19
0
 /// <summary>
 /// <para>状態が開始された時に呼び出されます。</para>
 /// <para>このメソッドは、遷移元の<c>teardown</c>よりも後に呼び出されます。</para>
 /// </summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 public void teardown(IEntityAccessor accessor)
 {
 }
Пример #20
0
 /// <summary>1フレーム分の描画処理を実行します。</summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 /// <param name="graphics">グラフィック データ。</param>
 public void draw(IEntityAccessor accessor, Graphics graphics)
 {
     mgrTask.draw(graphics);
 }
Пример #21
0
 /// <summary>1フレーム分の更新処理を実行します。</summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 public virtual void update(IEntityAccessor accessor)
 {
     Character.CharacterAccessor chr = (Character.CharacterAccessor)accessor;
     chr.position += chr.velocity;
 }
Пример #22
0
 /// <summary>
 /// <para>状態が開始された時に呼び出されます。</para>
 /// <para>このメソッドは、遷移元の<c>teardown</c>よりも後に呼び出されます。</para>
 /// </summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 public abstract void setup(IEntityAccessor accessor);
Пример #23
0
 public static TW Create(IEntityAccessor <T> accessor, ITransactionContextBase context)
 => (TW)Activator.CreateInstance(typeof(TW), accessor, context);
Пример #24
0
 /// <summary>1フレーム分の更新処理を実行します。</summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 public void update(IEntityAccessor accessor)
 {
 }
 public TestWrapper(IEntityAccessor <Entity> accessor, ITransactionContextBase context)
     : base(accessor, context)
 {
 }
Пример #26
0
 /// <summary>
 /// <para>状態が開始された時に呼び出されます。</para>
 /// <para>このメソッドは、遷移元の<c>teardown</c>よりも後に呼び出されます。</para>
 /// </summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 public void teardown(IEntityAccessor accessor)
 {
     mgrTask.reset();
     Score.instance.reset();
 }
Пример #27
0
 /// <summary>1フレーム分の描画処理を実行します。</summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 /// <param name="graphics">グラフィック データ。</param>
 public void draw(IEntityAccessor accessor, Graphics graphics)
 {
 }
Пример #28
0
 /// <summary>
 /// <para>状態が開始された時に呼び出されます。</para>
 /// <para>このメソッドは、遷移元の<c>teardown</c>よりも後に呼び出されます。</para>
 /// </summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 public void setup(IEntityAccessor accessor)
 {
     Score.instance.drawNowScore = false;
 }
Пример #29
0
 /// <summary>
 /// <para>状態が開始された時に呼び出されます。</para>
 /// <para>このメソッドは、遷移元の<c>teardown</c>よりも後に呼び出されます。</para>
 /// </summary>
 /// <param name="accessor">この状態を適用されたオブジェクトへのアクセサ。</param>
 public void setup(IEntityAccessor accessor)
 {
 }
Пример #30
0
 public EntityWrapper(IEntityAccessor <T> accessor, ITransactionContextBase context)
     : base(accessor)
 {
     Context = context ?? throw new ArgumentNullException(nameof(context));
 }
 public TestGenericWrapper(IEntityAccessor <T> accessor, ITransactionContextBase context)
     : base(accessor, context)
 {
 }
Пример #32
0
 public ClrEntityDescriptor(IEntityAccessor entityAccessor, IGlobal global, JsDictionaryObject owner, string name)
     : base(owner, name)
 {
     _entityAccessor = entityAccessor;
     _global         = global;
 }
 public EntityAccessorWrapper(IEntityAccessor <T> accessor)
 {
     _accessor = accessor ?? throw new ArgumentNullException(nameof(accessor));
 }