blob: b4d502e03ccb4a241a41a118103a5d2bd5d430d5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
using Microsoft.Xna.Framework;
using System.Collections.Generic;
using V3.Data;
using V3.Objects;
namespace V3.Camera
{
/// <summary>
/// Stores and provides access to the possible cameras.
/// </summary>
// ReSharper disable once ClassNeverInstantiated.Global
public sealed class CameraManager
{
private readonly IOptionsManager mOptionsManager;
private readonly CameraCentered mCameraCentered;
private readonly CameraScrolling mCameraScrolling;
/// <summary>
/// Creates a new CameraManager.
/// </summary>
public CameraManager(CameraCentered cameraCentered,
CameraScrolling cameraScrolling, IOptionsManager optionsManager)
{
mCameraCentered = cameraCentered;
mCameraScrolling = cameraScrolling;
mOptionsManager = optionsManager;
}
/// <summary>
/// Initializes the cameras with the given map data.
/// </summary>
public void Initialize(Point mapPixelSize)
{
// TODO: Warum *2? Irgendwas stimmt bei der Interpretation hier nicht.
var mapPixelHeight = mapPixelSize.Y * 2;
var mapPixelWidth = mapPixelSize.X;
var cameras = new List<ICamera> { mCameraCentered, mCameraScrolling };
foreach (var camera in cameras)
{
camera.MapPixelHeight = mapPixelHeight;
camera.MapPixelWidth = mapPixelWidth;
}
}
/// <summary>
/// Updates the cameras.
/// </summary>
public void Update(ICreature creature)
{
GetCamera().Update(creature);
if (mOptionsManager.Options.CameraType != CameraType.Scrolling)
mCameraScrolling.Location = GetCamera().Location;
}
/// <summary>
/// Returns the currently selected camera.
/// </summary>
public ICamera GetCamera()
{
switch (mOptionsManager.Options.CameraType)
{
case CameraType.Centered:
return mCameraCentered;
case CameraType.Scrolling:
return mCameraScrolling;
default:
return mCameraScrolling;
}
}
}
}
|