-
Notifications
You must be signed in to change notification settings - Fork 0
/
FAFInfluencer.cs
138 lines (120 loc) · 3.16 KB
/
FAFInfluencer.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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace FAF
{
public enum InfluencerType
{
Kimble,
Whitfield,
Nandos,
ProjectLaunch,
SalaryIncrease,
FixedPriceSales
}
public class FAFInfluencer : ICloneable
{
const int BaseSpeed = 2;
static FAFSprite StateSpriteGood, StateSpriteBad;
public static void Init(GraphicsDevice gd)
{
StateSpriteGood = new FAFSprite("Content/InfluencerStateGood.png");
StateSpriteBad = new FAFSprite("Content/InfluencerStateBad.png");
StateSpriteGood.LoadContent(gd);
StateSpriteBad.LoadContent(gd);
}
public FAFSprite Sprite
{
get;
private set;
}
public int PointsOnCollision
{
get;
set;
}
int speed;
public int Speed
{
get
{
return BaseSpeed + speed;
}
set
{
speed = value;
}
}
public int VariableYAmount
{
get;
set;
}
int currentVariableYAmount;
bool isVariableIncreasing;
TimeSpan KillTime
{
get;
set;
}
public bool PointsAwarded
{
get;
set;
}
public bool IsKilled(GameTime gt)
{
return KillTime != TimeSpan.Zero && gt.TotalGameTime >= KillTime;
}
public void SetKilled(GameTime gt)
{
var sp = (FAFSprite)(PointsOnCollision > 0 ? StateSpriteGood.Clone() : StateSpriteBad.Clone());
sp.Position = Sprite.Position;
Sprite = sp;
KillTime = gt.TotalGameTime.Add(TimeSpan.FromSeconds(1));
}
public int GetYDelta()
{
if (VariableYAmount > 0)
{
if (isVariableIncreasing)
{
currentVariableYAmount--;
if (currentVariableYAmount <= -VariableYAmount)
{
// change direction
isVariableIncreasing = false;
}
}
else
{
currentVariableYAmount++;
if (currentVariableYAmount >= VariableYAmount)
{
isVariableIncreasing = true;
}
}
return currentVariableYAmount;
}
return 0;
}
public FAFInfluencer(FAFSprite sp, GraphicsDevice gd)
{
Sprite = sp;
sp.LoadContent(gd);
}
FAFInfluencer(FAFSprite sp)
{
Sprite = sp;
}
public object Clone()
{
return new FAFInfluencer((FAFSprite)Sprite.Clone())
{
Speed = Speed,
PointsOnCollision = PointsOnCollision,
VariableYAmount = VariableYAmount
};
}
}
}