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]); } } } }
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(); }
public override void _Process(float delta) { WorldScreenSizeX = GetViewport().Size.x *CurrentCamera.GetXZoom(); if (PlayerState.Is(PlayerState.State.Pause)) { return; } timePlayed += delta; }
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"); }
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; }
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"); }
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(); } }
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); }
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(); } }
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); } }
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; }