예제 #1
0
파일: Program.cs 프로젝트: NullandKale/CRT
        public static void engineTestSetup()
        {
            Entity pc = new Entity(new Vec3(0, 0, 0), 0);

            pc.AddComponent(new CameraComponent());
            worldManager.addEntity(pc);

            SolarSystem.SolarSystem solarSystem = new SolarSystem.SolarSystem(800);
            for (int i = 0; i < solarSystem.numPlanets; i++)
            {
                worldManager.addEntity(solarSystem.planets[i].entity);
            }

            ChexelEntity pcT = new ChexelEntity(new vector2(60, 228), ConsoleColor.White, '@');

            pcT.AddComponent(new CameraCComponent());
            tileMapManager.addEntity(pcT);

            string[] rocket =
            {
                "     /\\ ",
                "    |==| ",
                "    |  | ",
                "    |  | ",
                "    |  | ",
                "   /____\\ ",
                "   |    | ",
                "   |    | ",
                "   |    | ",
                "   |    | ",
                "  /| |  |\\ ",
                " / | |  | \\ ",
                "/__|_|__|__\\ ",
                "   /_\\/_\\ "
            };

            FrameEntity rocketShip = new FrameEntity(new vector2(54, 2), ConsoleColor.White, ' ', Frame.FromStringArray(rocket, ConsoleColor.Black, ConsoleColor.Green));

            rocketShip.AddComponent(new CockpitCComponent());
            tileMapManager.addFrameEntity(rocketShip);

            FrameEntity rocketExhaust = new FrameEntity(new vector2(rocketShip.pos.x, rocketShip.pos.y + rocket.Length), ConsoleColor.White, ' ', new Frame(12, 8, 0, 0));

            rocketExhaust.AddComponent(new FollowEndCComponent(rocketShip));
            rocketExhaust.frame.shader    = new FireShader(rocketExhaust.frame);
            rocketExhaust.frame.hasShader = true;
            tileMapManager.addFrameEntity(rocketExhaust);
        }
예제 #2
0
        public void Throw_If_Frame_Cant_Be_Found()
        {
            var access  = new FrameAccess();
            var builder = new ContextFactoryBuilder();
            var frame   = new FrameEntity
            {
                PosHi    = 0,
                PosLo    = 0,
                ThreadId = 1
            };

            builder.WithFrame(frame);
            access.ContextFactory = builder.Build();
            Action throws = () => access.GetFrame("test", new Position(1, 0), 1);

            throws.Should().Throw <IndexOutOfRangeException>();
        }
예제 #3
0
        public void Get_The_Correct_Frame_If_One_Exists()
        {
            var access  = new FrameAccess();
            var builder = new ContextFactoryBuilder();
            var frame   = new FrameEntity
            {
                PosHi    = 0,
                PosLo    = 0,
                ThreadId = 1
            };

            builder.WithFrame(frame);
            access.ContextFactory = builder.Build();
            var converter = new FrameDomainEntityConverter();
            var domain    = converter.ToDomain(frame, access.ContextFactory.GetContext(""));

            access.GetFrame("anyproject", new Position(0, 0), 1).Should().Be(domain);
        }
예제 #4
0
        public void Create_The_Correct_Expression_Tree_For_And()
        {
            var visitor   = new FrameCriterionVisitor();
            var criteria1 = new RegisterEqualsCriterion(Register.Rax, ((ulong)0).ToHexString());
            var criteria2 = new RegisterEqualsCriterion(Register.Rbx, ((ulong)1).ToHexString());
            var and       = new AndCriterion(new[] { criteria1, criteria2 });
            var f         = visitor.Visit(and);

            var frame = new FrameEntity
            {
                Rax = ((ulong)0).ToHexString(),
                Rbx = ((ulong)1).ToHexString()
            };
            var frame2 = new FrameEntity
            {
                Rax = ((ulong)1).ToHexString(),
                Rbx = ((ulong)1).ToHexString()
            };

            var method = ((FramePredicateExpression)f).Compile();

            new[] { frame, frame2 }.Single(x => method(x)).Should().Be(frame);
        }
예제 #5
0
        public void Create_The_Correct_Expression_Tree_For_Or()
        {
            var visitor   = new FrameCriterionVisitor();
            var criteria1 = new RegisterEqualsCriterion(Register.Rax, ((ulong)0).ToHexString());
            var criteria2 = new RegisterEqualsCriterion(Register.Rbx, ((ulong)1).ToHexString());
            var and       = new OrCriterion(new[] { criteria1, criteria2 });
            var f         = visitor.Visit(and);
            var builder   = new ContextFactoryBuilder();
            var frame     = new FrameEntity
            {
                Rax = ((ulong)0).ToHexString(),
                Rbx = ((ulong)1).ToHexString()
            };
            var frame2 = new FrameEntity
            {
                Rax = ((ulong)1).ToHexString(),
                Rbx = ((ulong)1).ToHexString()
            };

            builder.WithFrame(frame).WithFrame(frame2);
            var method = ((FramePredicateExpression)f).Compile();

            new[] { frame, frame2 }.Where(x => method(x)).SequenceEqual(new[] { frame, frame2 }).Should().BeTrue();
        }
예제 #6
0
 /// <summary>
 ///     Adds a frame to the collection of frames
 /// </summary>
 /// <param name="frame">The frame.</param>
 /// <returns>ContextFactoryBuilder.</returns>
 public ContextFactoryBuilder WithFrame(FrameEntity frame)
 {
     _context.FrameEntities.Add(frame);
     return(this);
 }
예제 #7
0
 public FollowEndCComponent(FrameEntity target)
 {
     this.target = target;
 }
예제 #8
0
 public void start(ChexelEntity e)
 {
     entity = (FrameEntity)e;
 }
예제 #9
0
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="entity">更新</param>
 /// <returns></returns>
 public int Update(FrameEntity entity)
 {
     return(baseRepository.Update(entity));
 }
예제 #10
0
 /// <summary>
 /// 新增
 /// </summary>
 /// <param name="entity">新增实体</param>
 /// <returns></returns>
 public int Insert(FrameEntity entity)
 {
     return(baseRepository.Insert(entity));
 }
예제 #11
0
 /// <summary>
 /// 删除
 /// </summary>
 /// <param name="entity">删除实体</param>
 /// <returns></returns>
 public int Delete(FrameEntity entity)
 {
     return(baseRepository.Delete(entity));
 }