Esempio n. 1
0
        public static void DrawUnitInfo(Unit unit)
        {
            ZIOX.OutputType = ZIOX.OutputTypeEnum.Buffer;
            ZIOX.BufferName = UIConfig.Buffer_Info;
            ZBuffer.ClearBuffer(ZIOX.BufferName);
            var area = UIConfig.UnitStatsArea;
            var stats = unit.Stats;

            ZIOX.Draw_Stat(area, 0, "Team",			unit.Team.Name);
            ZIOX.Draw_Stat(area, 1, "Name",			unit.Name);
            ZIOX.Draw_Stat(area, 3, "Health", 		ZIOX.Draw_State, stats.CurrentHP, stats.MaxHP, true);
            ZIOX.Draw_Stat(area, 4, "Accuracy",		stats.CurrentAccuracy);
            ZIOX.Draw_Stat(area, 5, "Strength",		stats.CurrentStrength);

            ZIOX.Draw_Stat(area, 7, "Direction",	unit.View.DirectionName);
            ZIOX.Draw_Stat(area, 8, "Crouch",		unit.Position.IsSitting.ToString());

            ZIOX.Draw_Stat(area, 10, "TU", 		ZIOX.Draw_State, stats.CurrentTU, stats.MaxTU, true);

            var activeItem = unit.ActiveItem != null
                ? string.Format("{0} ({1})", unit.ActiveItem.Type.Name, unit.ActiveItem.Value)
                : "nothing";
            ZIOX.Draw_Stat(area, 12, "In hands", activeItem);

            DrawInventory(unit.Inventory);

            ZBuffer.WriteBuffer(UIConfig.Buffer_Info, UIConfig.UnitInfoRect.Left, UIConfig.UnitInfoRect.Top);
            ZIOX.OutputType = ZIOX.OutputTypeEnum.Direct;

            DrawUnitPositionInfo(unit);
        }
Esempio n. 2
0
        public static Team CreateTeam(string teamName, bool isPlayable)
        {
            var team = new Team(teamName, isPlayable);

            for (var i = 0; i < GameConfig.TeamSize; i++)
            {
                var freeNames = SoldierConfig.Names.Where(w => !_usedNames.Contains(w)).ToArray();
                var name = freeNames[RNG.GetNumber(freeNames.Length)];
                _usedNames.Add(name);

                var unit = new Unit(name)
                {
                    Stats = new UnitStats
                        {
                            TU		 = RNG.GetNumber(SoldierConfig.TimeUnitsRange),
                            MaxHP	=  RNG.GetNumber(SoldierConfig.HitPointsRange),
                            Accuracy = RNG.GetNumber(SoldierConfig.AccuracyRange),
                            Strength = RNG.GetNumber(SoldierConfig.StrengthRange)
                        },

                    View = ViewLogic.Initialize(GameConfig.DefaultViewWidth, GameConfig.DefaultViewDistance, RNG.GetNumber(8)),
                    Inventory = new Inventory(ItemConfig.DefaultInventories[i].Select(w => new Item(w)))
                };

                unit.Stats.CurrentHP = unit.Stats.MaxHP;
                unit.Inventory.ActiveItem = unit.Inventory.FirstOrDefault();
                team.Add(unit);
            }

            return team;
        }
Esempio n. 3
0
        private static void DrawTargetMark(Unit currentUnit, Coord target, bool toShow)
        {
            if (toShow)
            {
                ZBuffer.ReadBuffer("targetBuffer", target.X, target.Y, 3, 3);

                var buffer = ZBuffer.BackupBuffer("defaultBuffer");
                ZIOX.OutputType = ZIOX.OutputTypeEnum.Buffer;
                ZIOX.BufferName = "defaultBuffer";

                var targetColor = IsTargetOnSoldier(currentUnit, target) ? Color.Yellow : Color.Cyan;

                ZIOX.Print(target.X-1, target.Y-1, (char)Tools.Get_Ascii_Byte('┌'), targetColor);
                ZIOX.Print(target.X+1, target.Y-1, (char)Tools.Get_Ascii_Byte('┐'), targetColor);
                ZIOX.Print(target.X-1, target.Y+1, (char)Tools.Get_Ascii_Byte('└'), targetColor);
                ZIOX.Print(target.X+1, target.Y+1, (char)Tools.Get_Ascii_Byte('┘'), targetColor);

                MapRender.DrawVisibleUnits(currentUnit);
                ZIOX.OutputType = ZIOX.OutputTypeEnum.Direct;

                ZBuffer.WriteBuffer("defaultBuffer", UIConfig.GameAreaRect.Left, UIConfig.GameAreaRect.Top);
                ZBuffer.SaveBuffer("defaultBuffer", buffer);
            }
            else
            {
                ZBuffer.WriteBuffer("targetBuffer", target.X, target.Y);
            }
        }
Esempio n. 4
0
        public static Coord DoTargetAction(Unit unit)
        {
            var exitFlag = false;

            var target = new Coord(unit.Position.X, unit.Position.Y);
            DrawTargetMark(unit, target, true);

            while (!exitFlag)
            {
                var key = ZInput.ReadKey();
                var oldTarget = new Coord(target.X, target.Y);

                switch (key)
                {
                    case ConsoleKey.LeftArrow	:	MoveTarget(target, -1,  0);		break;
                    case ConsoleKey.RightArrow	:	MoveTarget(target, +1,  0);		break;
                    case ConsoleKey.UpArrow		:	MoveTarget(target,  0, -1);		break;
                    case ConsoleKey.DownArrow	:	MoveTarget(target,  0, +1);		break;

                    case ConsoleKey.Enter		:	return target;		break;
                    case ConsoleKey.Escape		:	exitFlag = true;	break;
                }

                if (!oldTarget.Equals(target))
                {
                    DrawTargetMark(unit, oldTarget, false);
                    DrawTargetMark(unit, target, true);
                }
            }

            return null;
        }
Esempio n. 5
0
 public static bool IsTargetOnSoldier(Unit currentUnit, Coord target)
 {
     foreach (var team in MainGame.Teams)
         foreach (var unit in team.Units.Where(a => a.Name != currentUnit.Name))
             if (target.Equals(unit.Position))
                 return true;
     return false;
 }
Esempio n. 6
0
 public static void DrawVisibleUnits(Unit unit)
 {
     foreach (var team in MainGame.Teams)
         foreach (var target in team.Units.Where(a => a.Name != unit.Name))
             if ((unit.Team.Name == target.Team.Name  &&  unit.Position.LevelId == target.Position.LevelId)  ||
                 unit.View.IsUnitVisible(unit.CurrentLevel, unit.Position, target.Position) == Visibility.Full)
             {
                 ZIOX.Print(target.Position.X, target.Position.Y, "@", (team.Name == unit.Team.Name) ? Color.Magenta : Color.Red);
             }
 }
Esempio n. 7
0
        private static Models.Unit RemoveReference(this Models.Unit item)
        {
            var obj = new Models.Unit();

            if (item != null)
            {
                obj.Id       = item.Id;
                obj.IsActive = item.IsActive;
                obj.Name     = item.Name;
            }
            return(obj);
        }
Esempio n. 8
0
        public static void DrawVisibleTerrain(Unit unit)
        {
            var sizeX = MapConfig.LevelSize.Width;
            var sizeY = MapConfig.LevelSize.Height;
            var level = unit.CurrentLevel;
            var map = level.Map;
            var viewMap1 = new Visibility[sizeY, sizeX];
            var viewMap2 = new Visibility[sizeY, sizeX];

            for (var y = 0; y < sizeY; y++)
                for (var x = 0; x < sizeX; x++)
                    viewMap1[y, x] = unit.View.IsPointVisible(level, unit.Position, new Coord(x, y));

            for (var y = 0; y < sizeY; y++)
                for (var x = 0; x < sizeX; x++)
                {
                    var tile = map[y, x].Type;
                    if (tile.Size != ObjectSize.FullTile)
                        continue;

                    for (var i = -1; i <= 1; i++)
                        for (var j = -1; j <= 1; j++)
                        {
                            var x1 = x + j;
                            var y1 = y + i;

                            if (y1 >= 0  &&  y1 < sizeY  &&  x1 >= 0  &&  x1 < sizeX  &&
                                viewMap1[y1, x1] != Visibility.None  &&  map[y1, x1].Type.Height == ObjectHeight.None)
                            {
                                viewMap2[y, x] = Visibility.Full;
                                break;
                            }
                        }
                }

            for (var y = 0; y < sizeY; y++)
                for (var x = 0; x < sizeX; x++)
                    if (viewMap1[y, x] == Visibility.Full  ||  viewMap2[y, x] == Visibility.Full)
                    {
                        var tile = map[y, x].Type;
                        ZIOX.Print(x, y, tile.Character, tile.ForeColor, tile.BackColor);
                    }
                    else if (viewMap1[y, x] == Visibility.Shadow  ||  viewMap2[y, x] == Visibility.Shadow)
                    {
                        ZIOX.Print(x, y, (char)176, Color.DarkGray);
                    }
                    else
                    {
                        ZIOX.Print(x, y, ' ', Color.Black);
                    }
        }
Esempio n. 9
0
        public static void DrawUnitInfoAsTarget(Unit unit)
        {
            ZIOX.OutputType = ZIOX.OutputTypeEnum.Buffer;
            ZIOX.BufferName = UIConfig.Buffer_TargetInfo;
            var area = UIConfig.UnitStatsArea;
            var stats = unit.Stats;

            ZIOX.Draw_Stat(area, 0, "Name",			unit.Name);
            ZIOX.Draw_Stat(area, 1, "Health", 		ZIOX.Draw_State, stats.CurrentHP, stats.MaxHP, true);
            ZIOX.Draw_Stat(area, 2, "TU", 			ZIOX.Draw_State, stats.CurrentTU, stats.MaxTU, true);
            ZIOX.Draw_Stat(area, 3, "Crouch",		unit.Position.IsSitting.ToString());
            ZIOX.Draw_Stat(area, 5, "Direction",	unit.View.DirectionName);

            ZIOX.Draw_Stat(area, 7, "In hands",	unit.ActiveItem.Type.Name);

            ZBuffer.WriteBuffer(UIConfig.Buffer_TargetInfo, UIConfig.TargetInfoRect.Left, UIConfig.TargetInfoRect.Top);
            ZIOX.OutputType = ZIOX.OutputTypeEnum.Direct;
        }
Esempio n. 10
0
 public static void DrawUnitPositionInfo(Unit unit)
 {
     var position = unit.Position;
     var rect = UIConfig.PositionInfoRect;
     ZOutput.PrintBB(rect.Left + 1, rect.Top+1, string.Format("Level:<{0}>  Position:<{1}>,<{2}>", position.LevelId, position.X, position.Y), Color.Magenta);
 }
Esempio n. 11
0
 public double ToBaseUnitAmount(Unit unit)
 {
     return unit.Quantity * databaseAccessor.GetBaseUnitRatioFromUnitName(unit.Name);
 }
 public void SetUp()
 {
     mockedUnit = Mock.Create<Unit>();
      mockedDatabaseAccessor = Mock.Create<IDatabaseAccessor>();
 }