Version 0.1 - 0.3.1

Added the World
Added Mobs, and spawning those mobs at runtime
Added simple camera movement
Added simple UI/HUD
This commit is contained in:
gdz
2025-07-29 23:21:53 +02:00
parent 9cef1ddce2
commit 802918e5b8
46 changed files with 1087 additions and 1 deletions

76
scenes/Camera2d.cs Normal file
View File

@@ -0,0 +1,76 @@
using Godot;
using System;
public partial class Camera2d : Camera2D
{
private float targetZoom = 1.0f;
private float minZoom = .1f;
private float maxZoom = 1.0f;
private float zoomIncrement = .1f;
private float zoomRate = 8.0f;
public override void _Ready()
{
// Print the size of the viewport.
GD.Print("Viewport Resolution is: ", GetViewport().GetVisibleRect().Size);
}
public override void _Input(InputEvent @event)
{
// Mouse in viewport coordinates.
if (@event is InputEventMouseButton eventMouseButton)
{
GD.Print("Mouse Click/Unclick at: ", eventMouseButton.Position);
switch (eventMouseButton.ButtonIndex)
{
case MouseButton.Left:
Position = eventMouseButton.Position;
break;
case MouseButton.WheelDown:
zoomIn();
break;
case MouseButton.WheelUp:
zoomOut();
break;
default:
break;
}
}
else if (@event is InputEventMouseMotion eventMouseMotion)
{
Vector2 zoomThreshold = new Vector2(.2f, .2f); // When should the zoom doesnt be accounted
Vector2 zoomThresholdSpeed = new Vector2(1.0f, 1.0f); // What value to use when the Threshold is reached
GD.Print("Mouse Motion at: ", eventMouseMotion.Position);
if (eventMouseMotion.ButtonMask == MouseButtonMask.Middle)
Position -= eventMouseMotion.Relative * (Zoom < zoomThreshold ? zoomThresholdSpeed : Zoom);
}
GD.Print("Camera Position: ", Position);
}
public override void _PhysicsProcess(double delta)
{
Zoom = Lerp(Zoom, targetZoom * Vector2.One, zoomRate * (float)delta);
if (Zoom.X == targetZoom)
SetPhysicsProcess(false);
GD.Print("Camera Zoom: ", Zoom);
}
private void zoomIn()
{
targetZoom = Single.Max(targetZoom - zoomIncrement, minZoom);
SetPhysicsProcess(true);
}
private void zoomOut()
{
targetZoom = Single.Min(targetZoom + zoomIncrement, maxZoom);
SetPhysicsProcess(true);
}
public static Vector2 Lerp(Vector2 from, Vector2 to, float weight) => from + (to - from) * weight;
}