Beispiel #1
0
    public void CloneWater(float viewportX, Vector2 origin)
    {
        Vector2 p             = origin * CurrentCamera.GetXZoom();
        int     viewportSizeX = Mathf.FloorToInt(viewportX * CurrentCamera.GetXZoom());
        Vector2 vecMin        = Convertion.Location2World(p) * -1;
        Vector2 vecMax        = Convertion.Location2World(new Vector2(p.x * -1 + viewportSizeX, p.y));

        if (vecMin.x < 0)
        {
            i  = (int)Mathf.Abs(vecMin.x / Chunk.size) + 1;
            i *= Chunk.size;
            foreach (Tuple <int, int> block in listLiquid)
            {
                if (block.Item1 > width - i)
                {
                    Liquid.listMap[type].SetCell(block.Item1 - width - 1, height - block.Item2, map[block.Item1, block.Item2]);
                }
            }
        }
        if (vecMax.x >= World.size * Chunk.size)
        {
            i  = (int)Mathf.Abs((vecMax.x - Chunk.size * World.size) / Chunk.size) + 1;
            i *= Chunk.size;
            foreach (Tuple <int, int> block in listLiquid)
            {
                if (block.Item1 < i)
                {
                    Liquid.listMap[type].SetCell(width + block.Item1 + 1, height - block.Item2, map[block.Item1, block.Item2]);
                }
            }
        }
    }
Beispiel #2
0
    public override void _Process(float delta)
    {
        int     viewportSizeX = Mathf.FloorToInt(GetViewport().Size.x *CurrentCamera.GetXZoom());
        Vector2 p             = GetViewportTransform().origin *CurrentCamera.GetXZoom();
        float   xdiff         = viewportPos.x - p.x;
        float   ydiff         = viewportPos.y - p.y;

        /*Detection de teleportation a un seuil de 95%*/
        if (Mathf.Abs(xdiff) >= 0.95f * World.size * Chunk.size * World.BlockTilemap.CellSize.x)
        {
            foreach (var s in childs)
            {
                s.Position = new Vector2(s.Position.x + xdiff, s.Position.y + ydiff * speed);
            }
        }
        else
        {
            foreach (var s in childs)
            {
                s.Position = new Vector2(s.Position.x + xdiff * speed, s.Position.y + ydiff * speed);
                if (s.Position.x + texture.GetSize().x / 2 < -p.x)
                {
                    s.Position = new Vector2(s.Position.x + texture.GetSize().x *2, s.Position.y);
                }
                if (s.Position.x - texture.GetSize().x / 2 > (-p.x) + viewportSizeX)
                {
                    s.Position = new Vector2(s.Position.x - texture.GetSize().x *2, s.Position.y);
                }
            }
        }
        viewportPos = GetViewportTransform().origin *CurrentCamera.GetXZoom();
    }
Beispiel #3
0
 public override void _Process(float delta)
 {
     WorldScreenSizeX = GetViewport().Size.x *CurrentCamera.GetXZoom();
     if (PlayerState.Is(PlayerState.State.Pause))
     {
         return;
     }
     timePlayed += delta;
 }
Beispiel #4
0
    public override void _Ready()
    {
        Vector2 p      = GetViewportTransform().origin *CurrentCamera.GetXZoom();
        Vector2 vecMin = Convertion.Location2World(p) * -1;

        prev_x_viewport = vecMin.x;
        GetNode <Sprite>("OUTLINE").Material = (Material)GetNode <Sprite>("OUTLINE").Material.Duplicate();

        GetNode <Timer>("TimerEnergy").WaitTime = 1.0f;
        timerEnergyWaitTime = GetNode <Timer>("TimerEnergy").WaitTime;

        timer = GetNode <Timer>("Timer");
    }
Beispiel #5
0
    public override void _Ready()
    {
        time      = GetNode <Timer>("cooldown");
        time2     = GetNode <Timer>("afterattack");
        Enemy_fly = GetNode <Sprite>("Enemy_Fly");
        Enemy_Die = GetNode <Sprite>("Enemy_Die");
        proximity = GetNode <Area2D>("Detection");
        anim      = GetNode <AnimationPlayer>("AnimationEnemy");
        anim.Play("Flying");

        Enemies.enemiesCount++;

        Vector2 p      = GetViewportTransform().origin *CurrentCamera.GetXZoom();
        Vector2 vecMin = Convertion.Location2World(p) * -1;

        prev_x_viewport = vecMin.x;
    }
Beispiel #6
0
    public override void _Ready()
    {
        Random r = new Random();

        speed   = ((float)r.NextDouble() * (SPEEDMAX - SPEEDMIN)) + SPEEDMIN;
        dephase = (float)r.NextDouble() * 2.0f;

        if (!hasLoot)
        {
            QueueFree();
        }
        area = GetNode <Area2D>("ZONE");
        time = 0;

        Vector2 p      = GetViewportTransform().origin *CurrentCamera.GetXZoom();
        Vector2 vecMin = Convertion.Location2World(p) * -1;

        prev_x_viewport = vecMin.x;

        World.IsInitWorldTest("Loot constructor");
    }
Beispiel #7
0
    public override void _EnterTree()
    {
        Camera2D camera = GetNode <Camera2D>("Player/Camera2D");

        CurrentCamera.Init(camera);
        root             = this;
        WorldScreenSizeX = GetViewport().Size.x *CurrentCamera.GetXZoom();
        if (!load)
        {
            TileMap back      = GetNode("Tilemaps").GetNode <TileMap>("0");
            TileMap ground    = GetNode("Tilemaps").GetNode <TileMap>("1");
            TileMap uiground  = GetNode("Tilemaps").GetNode <TileMap>("3");
            TileMap uiground2 = GetNode("Tilemaps").GetNode <TileMap>("2");
            Building.Init(this);
            Loot.Init(this);
            Tree.Init(this);
            BuildingInterface.Init(GetNode("CanvasLayer"));
            Liquid.Init();
            World.Init(ground, uiground, uiground2, back);
            Structure.Init();
            SpaceShip.Init();
            PlayerMouvements.initialPosition = World.spawn;
            InitialiseIverntories();
        }
        else
        {
            TileMap back      = GetNode("Tilemaps").GetNode <TileMap>("0");
            TileMap ground    = GetNode("Tilemaps").GetNode <TileMap>("1");
            TileMap uiground  = GetNode("Tilemaps").GetNode <TileMap>("3");
            TileMap uiground2 = GetNode("Tilemaps").GetNode <TileMap>("2");
            Loot.Init(this);
            Tree.Init(this);
            Building.Init(this);
            BuildingInterface.Init(GetNode("CanvasLayer"));
            World.Init(ground, uiground, uiground2, back, false);
            Save._Load(saveName);
            SpaceShip.Init();
        }
    }
Beispiel #8
0
    public override void _Ready()
    {
        if (!PlayerMouvements.HasPlayer)
        {
            throw new UninitializedException("Paralax", "PlayerMouvement");
        }
        viewportPos = GetViewportTransform().origin *CurrentCamera.GetXZoom();

        Sprite s1 = new Sprite();
        Sprite s2 = new Sprite();

        s1.Texture  = texture;
        s2.Texture  = texture;
        s1.ZIndex   = zIndex;
        s2.ZIndex   = zIndex;
        s1.Centered = true;
        s2.Centered = true;
        s1.Position = new Vector2(PlayerMouvements.instance.Position.x, y);
        s2.Position = new Vector2(PlayerMouvements.instance.Position.x + texture.GetSize().x, y);
        AddChild(s1);
        AddChild(s2);
        childs.Add(s1);
        childs.Add(s2);
    }
Beispiel #9
0
    public override void _Process(float delta)
    {
        if (PlayerState.Is(PlayerState.State.Pause))
        {
            return;
        }

        /*Teleportation Tree*/
        Vector2 p             = GetViewportTransform().origin *CurrentCamera.GetXZoom();
        int     viewportSizeX = Mathf.FloorToInt(GetViewport().Size.x *CurrentCamera.GetXZoom());
        Vector2 vecMin        = Convertion.Location2World(p) * -1;
        Vector2 vecMax        = Convertion.Location2World(new Vector2(p.x * -1 + viewportSizeX, p.y));

        if (vecMin.x < 0)
        {
            if (!mirrored)
            {
                int i = (int)Mathf.Abs(vecMin.x / Chunk.size) + 1;
                if (Convertion.Location2World(Position).x >= (World.size - i) * Chunk.size)
                {
                    Position = Position - new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                    mirrored = true;
                }
            }
            else if (-vecMin.x + prev_x_viewport >= 0.90f * World.size * Chunk.size)
            {
                int i = (int)Mathf.Abs(vecMin.x / Chunk.size) + 1;
                if (Convertion.Location2World(Position).x >= (World.size - i) * Chunk.size)
                {
                    Position = Position - new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                    mirrored = false;
                }
            }
        }
        else if (vecMax.x >= World.size * Chunk.size)
        {
            if (!mirrored)
            {
                int i = (int)Mathf.Abs((vecMax.x - World.size * Chunk.size) / Chunk.size) + 1;
                if (Convertion.Location2World(Position).x <= i * Chunk.size)
                {
                    Position = Position + new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                    mirrored = true;
                }
            }
            else if (vecMin.x - prev_x_viewport >= 0.90f * World.size * Chunk.size)
            {
                int i = (int)Mathf.Abs((vecMax.x - World.size * Chunk.size) / Chunk.size) + 1;
                if (Convertion.Location2World(Position).x <= i * Chunk.size)
                {
                    Position = Position + new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                    mirrored = false;
                }
            }
        }
        else if (vecMax.x < World.size * Chunk.size && vecMin.x >= 0)
        {
            if (mirrored)
            {
                if (Convertion.Location2World(Position).x < 0)
                {
                    Position = Position + new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                }
                else
                {
                    Position = Position - new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                }

                mirrored = false;
            }
        }
        prev_x_viewport = vecMin.x;
        /*----------------------*/
        locationNow = Convertion.Location2World(Position);

        if (HasBuildingSelected && BuildingSelected == this)
        {
            if (!BuildingInRange(10))
            {
                ResetOutline();
                HasBuildingSelected = false;
                BuildingSelected    = null;
            }
        }

        if (mouseOn)
        {
            _on_ZONE_mouse_entered();
        }
    }
Beispiel #10
0
    public override void _PhysicsProcess(float delta)
    {
        if (PlayerState.Is(PlayerState.State.Pause))
        {
            return;
        }

        if (dead)
        {
            return;
        }
        time += delta;
        if (time >= LIFETIME)
        {
            Explosion();
            dead = true;
            Delay.StartDelay(this, 0.3f, () => QueueFree());
        }


        /*Teleportation loots*/
        Vector2 p             = GetViewportTransform().origin *CurrentCamera.GetXZoom();
        int     viewportSizeX = Mathf.FloorToInt(GetViewport().Size.x *CurrentCamera.GetXZoom());
        Vector2 vecMin        = Convertion.Location2World(p) * -1;
        Vector2 vecMax        = Convertion.Location2World(new Vector2(p.x * -1 + viewportSizeX, p.y));

        if (vecMin.x < 0)
        {
            if (!mirrored)
            {
                int i = (int)Mathf.Abs(vecMin.x / Chunk.size) + 1;
                if (Convertion.Location2World(Position).x >= (World.size - i) * Chunk.size)
                {
                    Position = Position - new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                    mirrored = true;
                }
            }
            else if (-vecMin.x + prev_x_viewport >= 0.90f * World.size * Chunk.size)
            {
                int i = (int)Mathf.Abs(vecMin.x / Chunk.size) + 1;
                if (Convertion.Location2World(Position).x >= (World.size - i) * Chunk.size)
                {
                    Position = Position - new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                    mirrored = false;
                }
            }
        }
        else if (vecMax.x >= World.size * Chunk.size)
        {
            if (!mirrored)
            {
                int i = (int)Mathf.Abs((vecMax.x - World.size * Chunk.size) / Chunk.size) + 1;
                if (Convertion.Location2World(Position).x <= i * Chunk.size)
                {
                    Position = Position + new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                    mirrored = true;
                }
            }
            else if (vecMin.x - prev_x_viewport >= 0.90f * World.size * Chunk.size)
            {
                int i = (int)Mathf.Abs((vecMax.x - World.size * Chunk.size) / Chunk.size) + 1;
                if (Convertion.Location2World(Position).x <= i * Chunk.size)
                {
                    Position = Position + new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                    mirrored = false;
                }
            }
        }
        else if (vecMax.x < World.size * Chunk.size && vecMin.x >= 0)
        {
            if (mirrored)
            {
                if (Convertion.Location2World(Position).x < 0)
                {
                    Position = Position + new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                }
                else
                {
                    Position = Position - new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                }

                mirrored = false;
            }
        }
        prev_x_viewport = vecMin.x;
        /*----------------------*/

        var    bodies = area.GetOverlappingBodies();
        Node2D Player = null;

        foreach (var body in bodies)
        {
            if (((Node2D)body).GetGroups().Contains("Player"))
            {
                Player = (Node2D)body;
            }
        }
        Node2D NearestLoot = null;
        var    areas       = area.GetOverlappingAreas();

        foreach (var a in areas)
        {
            Node2D n = (Node2D)a;
            if (n.GetGroups().Contains("loot") && n.GetNode <Loot>("..") != this)
            {
                Loot l = n.GetNode <Loot>("..");
                if (l.GetLootType() == GetLootType() && GetLootAmount() < STACKSIZE && l.GetLootAmount() < STACKSIZE)
                {
                    NearestLoot = n.GetNode <Loot>("..");
                    break;
                }
            }
        }

        if (Player != null)
        {
            Vector2 vec = Player.Position - Position;
            Position = Position + (vec.Normalized() * speed);
        }
        else if (NearestLoot != null)
        {
            Vector2 vec = NearestLoot.Position - Position;
            Position = Position + (vec.Normalized() * 4.0f);
        }
        else
        {
            Position = new Vector2(Position.x, Position.y + Mathf.Sin((float)OS.GetTicksMsec() * 0.004f + dephase) * 0.2f);
        }
    }
Beispiel #11
0
    public override void _PhysicsProcess(float delta)
    {
        if (PlayerState.Is(PlayerState.State.Pause))
        {
            return;
        }

        if (dead)
        {
            return;
        }

        if (t >= lifeTime)
        {
            QueueFree();
            Enemies.enemiesCount--;
        }

        if (!verifground)
        {
            if (IsOnFloor())
            {
                verifground = true;
            }
            vel.x = 0;
            if (!verifdie)
            {
                vel.y = 300;
            }
            else
            {
                vel.y = 10;
            }
            MoveAndSlide(vel, up);
        }
        if (verifground)
        {
            this.delta = delta;
            if (!verifattack)
            {
                if (!Player_Near())
                {
                    if (!veriftime)
                    {
                        time.Start();
                        veriftime = true;
                    }
                    t += delta;
                    Random_moves();
                }
                else
                {
                    t = 0;
                    time.Stop();
                    veriftime = false;
                    Get_To_Player();
                }
            }
            else
            {
                Position_Player = new Vector2(PlayerMouvements.GetX(), PlayerMouvements.GetY());
                Position_Player = Convertion.World2Location(Position_Player);

                Vector2 direction = (-this.GlobalPosition + Position_Player).Normalized();
                vel = direction * (-Speed / 5);
                MoveAndSlide(vel, up);
            }
        }



        Vector2 p             = GetViewportTransform().origin *CurrentCamera.GetXZoom();
        int     viewportSizeX = Mathf.FloorToInt(GetViewport().Size.x *CurrentCamera.GetXZoom());
        Vector2 vecMin        = Convertion.Location2World(p) * -1;
        Vector2 vecMax        = Convertion.Location2World(new Vector2(p.x * -1 + viewportSizeX, p.y));

        if (vecMin.x < 0)
        {
            if (!mirrored)
            {
                int i = (int)Mathf.Abs(vecMin.x / Chunk.size) + 1;
                if (Convertion.Location2World(Position).x >= (World.size - i) * Chunk.size)
                {
                    Position = Position - new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                    mirrored = true;
                }
            }
            else if (-vecMin.x + prev_x_viewport >= 0.90f * World.size * Chunk.size)
            {
                int i = (int)Mathf.Abs(vecMin.x / Chunk.size) + 1;
                if (Convertion.Location2World(Position).x >= (World.size - i) * Chunk.size)
                {
                    Position = Position - new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                    mirrored = false;
                }
            }
        }
        else if (vecMax.x >= World.size * Chunk.size)
        {
            if (!mirrored)
            {
                int i = (int)Mathf.Abs((vecMax.x - World.size * Chunk.size) / Chunk.size) + 1;
                if (Convertion.Location2World(Position).x <= i * Chunk.size)
                {
                    Position = Position + new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                    mirrored = true;
                }
            }
            else if (vecMin.x - prev_x_viewport >= 0.90f * World.size * Chunk.size)
            {
                int i = (int)Mathf.Abs((vecMax.x - World.size * Chunk.size) / Chunk.size) + 1;
                if (Convertion.Location2World(Position).x <= i * Chunk.size)
                {
                    Position = Position + new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                    mirrored = false;
                }
            }
        }
        else if (vecMax.x < World.size * Chunk.size && vecMin.x >= 0)
        {
            if (mirrored)
            {
                if (Convertion.Location2World(Position).x < 0)
                {
                    Position = Position + new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                }
                else
                {
                    Position = Position - new Vector2(World.size * Chunk.size * World.BlockTilemap.CellSize.x, 0);
                }

                mirrored = false;
            }
        }
        prev_x_viewport = vecMin.x;
    }