Exemple #1
0
    void Start()
    {
        var mapGenerator = GetComponent <MapGenerator>();

        blockRenderer    = GetComponent <BlockRenderer>();
        stats            = GetComponent <PlayerStatistics>();
        spawnSerializer  = GetComponent <SpawnSerializer>();
        canvasController = GetComponent <GameCanvasController>();
        sounds           = GetComponent <SoundController>();
        map = mapGenerator.Generate(90, 90);

        Func <Spawn, VectorI2> GetStart = (s) =>
        {
            int        rndId = UnityEngine.Random.Range(0, s.spawnPoints.Count);
            SpawnPoint sp    = s.spawnPoints[rndId];

            var vec = new VectorI2((int)sp.playerSpawn.x, (int)sp.playerSpawn.y);
            map[vec.X, vec.Y] = Constants.Objects.Floor;

            var vecRadio = new VectorI2((int)sp.radioSpawn.x, (int)sp.radioSpawn.y);
            map[vecRadio.X, vecRadio.Y] = Constants.Objects.Radio;

            return(vec);
        };

        playerPos = GetStart(spawnSerializer.GetSpawn());

        blockRenderer.Initialize(SquareIsValid, map, playerPos.X, playerPos.Y);

        StartCoroutine(ReduceOxygen());
        StartCoroutine(RunDownRadio());
    }
Exemple #2
0
        public bool Add(VectorI2 point)
        {
            if (surface.IsValidPoint(point))
            {
                return(points.Add(point));
            }

            return(false);
        }
Exemple #3
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="MouseEventArgs" /> struct.
 /// </summary>
 /// <param name="x">          The x coordinate. </param>
 /// <param name="y">          The y coordinate. </param>
 /// <param name="buttons">    The buttons. </param>
 /// <param name="clicks">     The clicks. </param>
 /// <param name="wheelDelta"> The wheel delta. </param>
 public MouseEventArgs(int x, int y, MouseButtons buttons, int clicks, int wheelDelta)
 {
     Position   = VectorI2.Zero;
     X          = x;
     Y          = y;
     Buttons    = buttons;
     Clicks     = clicks;
     WheelDelta = wheelDelta;
 }
Exemple #4
0
        static public bool IsSolid(this Texture2D item, VectorI2 point, float threshold = 1e-3f)
        {
            if (item.GetSolidness(point) >= threshold)
            {
                return(true);
            }

            return(false);
        }
Exemple #5
0
    private bool MoveIsValid(Func <VectorI2, VectorI2> func)
    {
        VectorI2 temp = func(playerPos);

        if (SquareIsValid(temp.X, temp.Y))
        {
            return(map[temp.X, temp.Y] == Constants.Objects.Floor ||
                   (map[temp.X, temp.Y] == Constants.Objects.Battery && stats.Batteries < Constants.Energy.MaxCarryBattery));
        }

        return(false);
    }
Exemple #6
0
        static public bool IsValidPoint <T>(this Surface <T> item, VectorI2 to_check)
        {
            if (to_check.x >= 0 && to_check.x < item.GetWidth())
            {
                if (to_check.y >= 0 && to_check.y < item.GetHeight())
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #7
0
    private void PerformMove(Func <VectorI2, VectorI2> desiredPosition)
    {
        if (paused)
        {
            return;
        }

        if (MoveIsValid(desiredPosition))
        {
            playerPos = desiredPosition(playerPos);

            if (map[playerPos.X, playerPos.Y] == Constants.Objects.Battery)
            {
                stats.Batteries++;
                map[playerPos.X, playerPos.Y] = Constants.Objects.Floor;
                sounds.PickUpBattery();
                blockRenderer.SpawnBattery(playerPos.X, playerPos.Y);
            }

            blockRenderer.SetCurrentPosition(playerPos.X, playerPos.Y);
            stats.Steps++;
        }
        else
        {
            var desiredPos = desiredPosition(playerPos);
            var blockId    = map[desiredPos.X, desiredPos.Y];

            Action <int, int> interact = null;
            if (interactions.TryGetValue(blockId, out interact))
            {
                interact(desiredPos.X, desiredPos.Y);
            }

            blockRenderer.UpdateMap();
        }
    }
Exemple #8
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="Arc2" /> struct.
 /// </summary>
 /// <param name="center"> The center. </param>
 /// <param name="radius"> The radius. </param>
 /// <param name="start">
 ///     (Optional)
 ///     The start angle in radians.
 /// </param>
 /// <param name="end">
 ///     (Optional)
 ///     The end angle in radians.
 /// </param>
 public Arc2(VectorI2 center, float radius, float start = 0, float end = MathUtil.TwoPi)
     : this(center.X, center.Y, radius, start, end)
 {
 }
Exemple #9
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="Circle2" /> struct.
 /// </summary>
 /// <param name="center"> The center. </param>
 /// <param name="radius"> The radius. </param>
 public Circle2(VectorI2 center, float radius)
     : this(center.X, center.Y, radius)
 {
 }
Exemple #10
0
 static public Rect GetOverflownGridChunk(this Rect item, VectorI2 coords, Vector2 cell_size)
 {
     return(item.GetOverflownGridChunk(coords.x, coords.y, cell_size));
 }
Exemple #11
0
 protected override void FreezeInternal()
 {
     frozen_value = value;
 }
Exemple #12
0
 public bool Remove(VectorI2 point)
 {
     return(points.Remove(point));
 }
 public VectorI3(VectorI2 vector)
 {
     this.x = vector.x;
     this.y = vector.y;
     z      = 0;
 }
Exemple #14
0
 static public Vector2Int GetVector2Int(this VectorI2 item)
 {
     return(new Vector2Int(item.x, item.y));
 }
Exemple #15
0
 protected override void UpdateInternal()
 {
     value = stick.GetRawValue();
     menu_value.UpdateValue(value);
 }
Exemple #16
0
 static public Rect GetGridChunk(this Rect item, VectorI2 coords, int number_columns, int number_rows)
 {
     return(item.GetGridChunk(coords.x, coords.y, number_columns, number_rows));
 }
Exemple #17
0
 static public float GetSolidness(this Texture2D item, VectorI2 point)
 {
     return(item.GetSolidnessAt(point.x, point.y));
 }