void EvaluateUnaligned(LogEvent logEvent, TextWriter output, IFormatProvider?formatProvider)
        {
            var value = _expression(logEvent);

            if (value == null)
            {
                return; // Undefined is empty
            }
            if (value is ScalarValue scalar)
            {
                if (scalar.Value is null)
                {
                    return; // Null is empty
                }
                if (scalar.Value is LogEventLevel level)
                {
                    // This would be better implemented using CompiledLevelToken : CompiledTemplate.
                    output.Write(LevelRenderer.GetLevelMoniker(level, _format));
                }
                else if (scalar.Value is IFormattable fmt)
                {
                    output.Write(fmt.ToString(_format, formatProvider));
                }
                else
                {
                    output.Write(scalar.Value.ToString());
                }
            }
            else
            {
                JsonFormatter.Format(value, output);
            }
        }
    void Start()
    {
        _levelRenderer = GetComponent <LevelRenderer>();
        BackButton.onClick.AddListener(LoadLevelGeneratorScene);

        if (LevelHolder.Level == null)
        {
            Debug.Log($"[Failed] Failed to load level: {nameof(LevelHolder.Level)} is null");
            return;
        }

        // Draw walls
        _levelRenderer.Draw(LevelHolder.Level);

        // Create wall colliders
        foreach (var levelWall in LevelHolder.Level.Walls)
        {
            levelWall.ToPlatform();
        }

        foreach (var levelElevator in LevelHolder.Level.Elevators)
        {
            levelElevator.ToElevator(ElevatorPrefab);
        }
    }
예제 #3
0
 public GameplayState(LevelCollection levelCollection, LevelRenderer levelRenderer)
 {
     this.levelCollection   = levelCollection;
     this.levelRenderer     = levelRenderer;
     this.commandRunner     = new CommandRunner();
     this.inputStateManager = new InputStateManager();
     this.inputBuffer       = new Queue <InputAction>();
 }
예제 #4
0
        public void Draw(BasicEffect basicEffect, AlphaTestEffect alphaTestEffect)
        {
            Render.StaticDrawCalls = 0;

            LevelRenderer.Draw(this, basicEffect, alphaTestEffect);
            //BaseModel.DrawStatic(this, basicEffect, alphaTestEffect);

            //foreach (var model in Models)
            //    model.Draw(this, basicEffect);
        }
예제 #5
0
        public Level(LevelInfo levelInfo, GraphicsDevice graphicsDevice)
        {
            LevelInfo     = levelInfo;
            LevelRenderer = new LevelRenderer();

            DayCycleTexture = TextureHandler.LoadTexture(graphicsDevice, "C:\\GitHub\\Maps\\YourRoom\\textures\\daycycle.png");
            SetLastColor();

            var entities = new List <EntityInfo>();

            foreach (var structure in LevelInfo.Structures)
            {
                var directory = LevelInfo.DirectoryLocation;
                if (!Path.HasExtension(structure.Map))
                {
                    structure.Map += ".dat";
                }
                var structurePath = Path.Combine(directory, structure.Map);
                var file          = File.ReadAllText(structurePath);

                // Little hack
                var structureData = LevelLoader.Load(file, structurePath);
                foreach (var entityInfo in structureData.Entities)
                {
                    entityInfo.Parent = levelInfo;

                    entityInfo.Position += structure.Offset;

                    var rot = Entity.GetRotationFromVector(entityInfo.Rotation) + (structure.Rotation == -1 ? 0 : structure.Rotation);
                    while (rot > 3)
                    {
                        rot -= 4;
                    }
                    entityInfo.Rotation = Entity.GetRotationFromInteger(rot);
                }

                entities.AddRange(structureData.Entities);
            }

            var combined = LevelInfo.Entities.Concat(entities).ToList();

            foreach (var entity in combined)
            {
                entity.Shader = GetDaytimeColor(true);
                Models.Add(BaseModel.GetModelByEntityInfo(entity, graphicsDevice));
            }

            LevelRenderer.HandleModels(Models);
            LevelRenderer.Setup(graphicsDevice);
            //BaseModel.SetupStatic(graphicsDevice);
        }
예제 #6
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            var tileSheetTexture = Content.Load <Texture2D>("tilesheet");
            var tileSheet        = new TileSheet(tileSheetTexture);

            levelRenderer = new LevelRenderer(graphics, tileSheet);
            using (var importer = new LevelImporter("Content/levels.txt"))
            {
                levelCollection = importer.LoadLevels();
            }
            sceneStateManager = new SceneStateManager(levelCollection, levelRenderer);
        }
예제 #7
0
    private void Start()
    {
        if (levelSize == null)
        {
            return;
        }

        var startingPoint = new LevelCoordinate
        {
            Height = 0,
            Width  = Random.Range(0, levelSize.Width)
        };

        levelRenderer  = GetComponent <LevelRenderer>();
        roomCollection = GetComponent <RoomCollection>();

        layoutCreator = new FourByFourLayout(roomCollection.GetRoomTypes(), startingPoint);

        bounds = levelRenderer.RenderBaseLevel(layoutCreator);
    }
예제 #8
0
 public SceneStateManager(LevelCollection levelCollection, LevelRenderer levelRenderer)
 {
     this.levelCollection = levelCollection;
     this.levelRenderer   = levelRenderer;
     this.sceneState      = new GameplayState(levelCollection, levelRenderer);
 }
예제 #9
0
	// Update is called once per frame
	void FixedUpdate () {

        float xInput = Input.GetAxis("Horizontal");
        float xMove = 0f;

        myX = transform.position[0];
        myY = transform.position[1];


        Vector3 camEdgePos = Camera.main.ScreenToWorldPoint(Vector3.zero);

        if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            if(myDirection == direction.LEFT)
            {
                anim.SetTrigger("right");
            }
            
        }

        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            if (myDirection == direction.RIGHT)
            {
                anim.SetTrigger("left");
            }
        }

        if (xInput > 0)
        {
            xMove = speed;
            myDirection = direction.RIGHT;
            stationary = false;

            
        }
        else if ((LevelRenderer.getTile( camEdgePos[0] ) >= LevelRenderer.getTile(transform.position[0]) )  )
        {
            xMove = 0;
        }
        else if(xInput < 0)
        {

        

            xMove = -speed;
            myDirection = direction.LEFT;
            stationary = false;


        }
        

        myBody.velocity = new Vector2(xMove, myBody.velocity[1]);






    }
예제 #10
0
 public LevelTransitionState(LevelCollection levelCollection, LevelRenderer levelRenderer)
 {
     this.levelCollection = levelCollection;
     this.levelRenderer   = levelRenderer;
 }