-
Notifications
You must be signed in to change notification settings - Fork 0
/
ColorBank.cs
76 lines (66 loc) · 2.47 KB
/
ColorBank.cs
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
72
73
74
75
76
using Android.App;
using Android.Content;
using Android.Graphics;
using Android.Views.Animations;
using System;
namespace Segmentus
{
static class ColorBank
{
static Color[] colors = {
new Color(50, 50, 50),
new Color(244, 243, 238),
new Color(165, 192, 211),
new Color(238, 99, 82),
new Color(255, 209, 81),
new Color(244, 243, 238)
};
public const int Black = 0;
public const int White = 1;
public const int Blue = 2;
public const int Red = 3;
public const int Yellow = 4;
public const int Background = 5;
static public Color GetColor(int index) => colors[index];
//Below the background color animation
const int BgAnimDuration = 500;
static float currentBgCoef;
public static float CurrentBgCoef
{
get { return currentBgCoef; }
private set
{
currentBgCoef = value;
byte wr = colors[White].R, br = colors[Black].R;
byte wg = colors[White].G, bg = colors[Black].G;
byte wb = colors[White].B, bb = colors[Black].B;
colors[Background].R = (byte)(wr * value + br * (1 - value));
colors[Background].G = (byte)(wg * value + bg * (1 - value));
colors[Background].B = (byte)(wb * value + bb * (1 - value));
GameView.Instance.Invalidate();
}
}
static HandyAnimator bgAnim;
static ColorBank()
{
var prefs = Application.Context.GetSharedPreferences("AppPrefs",
FileCreationMode.Private);
CurrentBgCoef = prefs.GetFloat("background", 1);
}
static public void ChangeBackgroundColor(bool toBlack)
{
float coefDest = (toBlack) ? 0 : 1;
var prefs = Application.Context.GetSharedPreferences("AppPrefs",
FileCreationMode.Private);
var editor = prefs.Edit();
editor.PutFloat("background", coefDest);
editor.Commit();
bgAnim?.core.Cancel();
bgAnim = HandyAnimator.OfFloat(currentBgCoef, coefDest,
(int)(Math.Abs(currentBgCoef - coefDest) * BgAnimDuration));
bgAnim.core.SetInterpolator(new DecelerateInterpolator(1.6f));
bgAnim.Update += (value) => CurrentBgCoef = (float)value;
bgAnim.core.Start();
}
}
}