Exemplo n.º 1
0
        public void TestSetBase()
        {
            FluidStat stat = new FluidStat(10);

            Assert.AreEqual(10, stat.Base);
            Assert.AreEqual(10, stat.Max);
            Assert.AreEqual(10, stat.Current);

            // lower
            stat.Base -= 2;
            Assert.AreEqual(8, stat.Base);
            Assert.AreEqual(8, stat.Max);
            Assert.AreEqual(8, stat.Current);

            // raise
            stat.Base = 20;
            Assert.AreEqual(20, stat.Base);
            Assert.AreEqual(20, stat.Max);
            Assert.AreEqual(8, stat.Current);

            // clamp to min
            stat.Base = stat.Min - 10;
            Assert.AreEqual(stat.Min, stat.Base);
            Assert.AreEqual(stat.Min, stat.Max);
            Assert.AreEqual(stat.Min, stat.Current);
        }
Exemplo n.º 2
0
        public void TestSetBonus()
        {
            FluidStat stat = new FluidStat(15);

            Assert.AreEqual(15, stat.Base);
            Assert.AreEqual(15, stat.Max);
            Assert.AreEqual(15, stat.Current);

            stat.SetBonus(BonusType.Equipment, 2);
            Assert.AreEqual(15, stat.Base);
            Assert.AreEqual(17, stat.Max);
            Assert.AreEqual(15, stat.Current);

            stat.SetBonus(BonusType.Equipment, 0);
            Assert.AreEqual(15, stat.Base);
            Assert.AreEqual(15, stat.Max);
            Assert.AreEqual(15, stat.Current);

            stat.SetBonus(BonusType.Equipment, -4);
            Assert.AreEqual(15, stat.Base);
            Assert.AreEqual(11, stat.Max);
            Assert.AreEqual(11, stat.Current);

            stat.SetBonus(BonusType.Haste, 2);
            Assert.AreEqual(15, stat.Base);
            Assert.AreEqual(13, stat.Max);
            Assert.AreEqual(11, stat.Current);
        }
Exemplo n.º 3
0
        public void TestConstructor()
        {
            FluidStat stat = new FluidStat(10);

            Assert.AreEqual(0, stat.Min);
            Assert.AreEqual(10, stat.Base);
            Assert.AreEqual(10, stat.Max);
            Assert.AreEqual(10, stat.Current);
        }
Exemplo n.º 4
0
        private void WriteStat(ITerminal terminal, int y, string name, FluidStat value)
        {
            TermColor color     = TermColor.Green;
            TermColor textColor = TermColor.Gray;

            // highlight stats that are below the base value
            if (value.Current < value.Max)
            {
                color = TermColor.Red;
                terminal[-1, y][TermColor.DarkRed].Write(Glyph.ExclamationMark);
                textColor = TermColor.DarkRed;
            }

            terminal[0, y][color].Write(value.Current.ToString().PadLeft(terminal.Size.X - 1));
            terminal[0, y][textColor].Write(name);
        }
Exemplo n.º 5
0
        public void TestSetCurrent()
        {
            FluidStat stat = new FluidStat(10);

            Assert.AreEqual(10, stat.Current);

            // lower
            stat.Current -= 2;
            Assert.AreEqual(8, stat.Current);

            // clamp to max
            stat.Current = stat.Base + 20;
            Assert.AreEqual(stat.Base, stat.Current);

            // clamp to min
            stat.Current = stat.Min - 10;
            Assert.AreEqual(stat.Min, stat.Current);
        }
Exemplo n.º 6
0
        private void WriteMaxStat(ITerminal terminal, int y, string name, FluidStat value, Func <int, string> formatter)
        {
            TermColor color     = TermColor.Gray;
            TermColor textColor = TermColor.Gray;

            // highlight stats that are below the base value
            if (value.IsLowered)
            {
                color = TermColor.Purple;
                terminal[-1, y][TermColor.DarkPurple].Write(Glyph.ArrowDown);
                textColor = TermColor.DarkPurple;
            }
            else if (value.IsRaised)
            {
                color = TermColor.Blue;
                terminal[-1, y][TermColor.DarkBlue].Write(Glyph.ArrowUp);
            }

            terminal[0, y][color].Write(formatter(value.Max).PadLeft(terminal.Size.X - 1));
            terminal[0, y][textColor].Write(name);
        }
Exemplo n.º 7
0
        public void TestIsMax()
        {
            FluidStat stat = new FluidStat(10);

            Assert.IsTrue(stat.IsMax);

            // lower
            stat.Current -= 2;
            Assert.IsFalse(stat.IsMax);

            // restore
            stat.Current = stat.Max;
            Assert.IsTrue(stat.IsMax);

            // add a bonus
            stat.AddBonus(BonusType.Haste, 5);
            Assert.IsFalse(stat.IsMax);

            // restore
            stat.Current = stat.Max;
            Assert.IsTrue(stat.IsMax);
        }
Exemplo n.º 8
0
        public void TestRestore()
        {
            FluidStat stat = new FluidStat(15);

            Assert.AreEqual(15, stat.Base);
            Assert.AreEqual(15, stat.Max);
            Assert.AreEqual(15, stat.Current);

            stat.AddBonus(BonusType.Drain, -2);
            Assert.AreEqual(15, stat.Base);
            Assert.AreEqual(13, stat.Max);
            Assert.AreEqual(13, stat.Current);

            bool restored = stat.Restore();

            Assert.IsTrue(restored);
            Assert.AreEqual(15, stat.Base);
            Assert.AreEqual(15, stat.Max);
            Assert.AreEqual(13, stat.Current);

            restored = stat.Restore();
            Assert.IsFalse(restored);
        }
Exemplo n.º 9
0
        public void TestAddBonus()
        {
            FluidStat stat = new FluidStat(15);

            Assert.AreEqual(15, stat.Base);
            Assert.AreEqual(15, stat.Max);
            Assert.AreEqual(15, stat.Current);

            stat.AddBonus(BonusType.Drain, 2);
            Assert.AreEqual(15, stat.Base);
            Assert.AreEqual(17, stat.Max);
            Assert.AreEqual(15, stat.Current);

            stat.AddBonus(BonusType.Drain, 0);
            Assert.AreEqual(15, stat.Base);
            Assert.AreEqual(17, stat.Max);
            Assert.AreEqual(15, stat.Current);

            stat.AddBonus(BonusType.Drain, -4);
            Assert.AreEqual(15, stat.Base);
            Assert.AreEqual(13, stat.Max);
            Assert.AreEqual(13, stat.Current);
        }
Exemplo n.º 10
0
 private void WriteMaxStat(ITerminal terminal, int y, string name, FluidStat value)
 {
     WriteMaxStat(terminal, y, name, value, (max) => max.ToString());
 }
Exemplo n.º 11
0
        public void TestChangedEvent()
        {
            FluidStat stat = new FluidStat(15);

            stat.Changed += Stat_Changed;

            // set to same base
            stat.Base = 15;
            AssertNoChangedReceived();

            // set to different base
            stat.Base = 13;
            AssertChangedReceived();

            // set to same current
            stat.Current = 13;
            AssertNoChangedReceived();

            // set to same current (clamped)
            stat.Current = 25;
            AssertNoChangedReceived();

            // set to different current
            stat.Current = 8;
            AssertChangedReceived();

            // set no bonus
            stat.SetBonus(BonusType.Haste, 0);
            AssertNoChangedReceived();

            // set a bonus
            stat.SetBonus(BonusType.Haste, 3);
            AssertChangedReceived();

            // set no bonus
            stat.SetBonus(BonusType.Haste, 3);
            AssertNoChangedReceived();

            // add no bonus
            stat.AddBonus(BonusType.Haste, 0);
            AssertNoChangedReceived();

            // add a bonus
            stat.AddBonus(BonusType.Haste, 3);
            AssertChangedReceived();

            // drain
            stat.AddBonus(BonusType.Drain, -3);
            AssertChangedReceived();

            // restore
            stat.Restore();
            AssertChangedReceived();

            // restore when not needed
            stat.Restore();
            AssertNoChangedReceived();

            stat.Changed -= Stat_Changed;

            // set to different value after unregistering
            stat.Base = 17;
            AssertNoChangedReceived();
        }