Esempio n. 1
0
    // Min part of Minimax with AB pruning
    private int MiniABPruning(PositionManager board, int depth, int a, int b)
    {
        if (depth <= 0)
        {
            return(board.GetValueOfBoard());
        }

        int min = int.MaxValue;
        List <(int, int)> allPM = MoveManager.GetAllPossibleMoves(board, false, false);

        if (allPM.Count == 0)
        {
            return(board.GetValueOfBoard());
        }

        foreach ((int, int)iMove in allPM)
        {
            PositionManager childBoard = new PositionManager(board);
            childBoard.MovePiece(iMove.Item1, iMove.Item2);
            min = Math.Min(min, MaxABPruning(childBoard, depth - 1, a, b));
            b   = Math.Min(b, min);
            if (b <= a)
            {
                break;
            }
        }

        return(min);
    }
    public void startKinect()
    {
        stopKinect();                       //关闭先
        kinect = KinectSensor.GetDefault(); //获得默认kinect

        if (kinect != null)
        {
            bodyFrameReader = kinect.BodyFrameSource.OpenReader();
            if (bodyFrameReader == null)
            {
                opened = false;                         //体感模式没打开
            }
            else
            {
                positionManager = this;
                if (kinect.IsOpen == false)
                {
                    kinect.Open();
                }
                //   Debug.Log("opened!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                opened = true;
            } //
        }     //打开一个读入流
        else
        {
            opened = false;
        }
    }
 // Start is called before the first frame update
 void Start()
 {
     ih = GetComponent <InputHandler>();
     movement_interval = INITIAL_MOVEMENT_INTERVAL;
     OFFSET            = 1.0f;
     pm = GetComponent <PositionManager>();
 }
Esempio n. 4
0
        public void Setup()
        {
            this.context    = new BoardProperties();
            this.positions  = new PositionFactory().Create(context);
            this.boardEmpty = new BoardFactory(context, positions).Create();
            this.boardFull  = new BoardFactory(context, positions).Create();
            var piece = PieceType.P1;

            foreach (var p in this.positions.Positions)
            {
                this.boardFull.Set(p, piece);
                piece = piece.GetOther();
            }

            this.boardHalfFull = new BoardFactory(context, positions).Create();
            var ran = new Random(1);

            foreach (int i in Enumerable.Range(0, this.positions.Positions.Count() / 2))
            {
                var emptyPositions = this.positions.GetEmptyPositions(this.boardHalfFull);
                var p = emptyPositions.ElementAt(ran.Next(0, emptyPositions.Count()));
                this.boardHalfFull.Set(p, piece);
                piece = piece.GetOther();
            }
        }
Esempio n. 5
0
 // Use this for initialization
 void Awake()
 {
     editButton.SetActive(false);
     Item.StepsPerSecond = PlayerPrefs.GetFloat("steps per second", 6);
     if (Item.StepsPerSecond < 3)
     {
         Item.StepsPerSecond = 3;
     }
     GameManager.instanse.gameState = GameState.playing;
     animationSpeedSlider.value     = Item.StepsPerSecond;
     if (instance == null)
     {
         instance = this;
     }
     else
     {
         Destroy(gameObject);
     }
     items = new List <Item> ();
     tileTheBoard(boardSize);
     if (autoInitilize)
     {
         initializeLevel();
     }
     else
     {
         startServival();
     }
 }
        public async Task <ActionResult> Edit(OfficeEditViewModel model)
        {
            var de = await DepartmentManager.GetAllEntities().ToListAsync();

            ViewBag.SelectListDepart = new SelectList(de, "Id", "Name");

            if (ModelState.IsValid)
            {
                var office = await OfficeManager.FindEntityByIdAsync(model.Id);

                if (office == null)
                {
                    return(View("Error", new[] { "找不到该部门" }));
                }
                var depart = await DepartmentManager.FindEntityByIdAsync(model.DepartmentId);

                if (depart == null)
                {
                    return(View("Error", new[] { "找不到该学院" }));
                }
                office.Name        = model.Name;
                office.Description = model.Description;
                office.Department  = depart;
                await OfficeManager.UpdateEntityAsync(office);

                await PositionManager.ResetPositionsOfficeAsync(model.IdsToRemove ?? new int[] { });

                return(RedirectToAction("Index"));
            }
            return(View(model));
        }
 private void Awake()
 {
     if (Instance == null)
     {
         Instance = this;
     }
 }
Esempio n. 8
0
    //private void Awake()
    private void Init()
    {
        if (IsPlayer)
        {
            PlayerController controller = gameObject.AddComponent <PlayerController>();
            controller.UpperPart = this.UpperPart;

            PlayerWeaponManager playerWeaponManager = gameObject.AddComponent <PlayerWeaponManager>();
            playerWeaponManager.UpperPart          = this.UpperPart;
            playerWeaponManager.BulletVFX          = this.Bullet;
            playerWeaponManager.HitVFX             = this.HitVFX;
            playerWeaponManager.MuzzleVFX          = this.MuzzleVFX;
            playerWeaponManager.InitBulletPosition = this.InitBulletPosition;
            playerWeaponManager.ShootSound         = Shoot;
        }
        else
        {
            EnemyController controller = gameObject.AddComponent <EnemyController>();
            controller.UpperPart = this.UpperPart;

            EnemyWeaponManager enemyWeaponManager = gameObject.AddComponent <EnemyWeaponManager>();
            enemyWeaponManager.UpperPart          = this.UpperPart;
            enemyWeaponManager.BulletVFX          = this.Bullet;
            enemyWeaponManager.HitVFX             = this.HitVFX;
            enemyWeaponManager.MuzzleVFX          = this.MuzzleVFX;
            enemyWeaponManager.InitBulletPosition = this.InitBulletPosition;
            enemyWeaponManager.ShootSound         = Shoot;
        }

        PositionManager positionManager = gameObject.AddComponent <PositionManager>();

        positionManager.SetParameters(this.gameObject);
    }
        public async Task <ActionResult> Edit(int?id)
        {
            var position = await PositionManager.FindEntityByIdAsync(id ?? 0);

            if (position == null)
            {
                return(HttpNotFound());
            }

            ViewBag.Positions = await PositionManager.GetAllEntities().ToListAsync();

            var departs = await DepartmentManager.GetAllEntities().ToListAsync();

            ViewBag.selectListDepart = new SelectList(departs, "Id", "Name");

            var offices = await OfficeManager.GetOfficesForDepartment(departs.ElementAtOrDefault(0)).ToListAsync();

            ViewBag.selectListOffice = new SelectList(offices, "Id", "Name");

            var teachers = await UserManager.GetNoPositionTeachersAsync();

            ViewBag.selectListTeacher = new SelectList(teachers, "Id", "Name");

            var model = new PositionEditViewModel
            {
                Id          = position.Id,
                Description = position.Description,
                Name        = position.Name,
                UserId      = position.HeadUser.Teacher.Id,
                OfficeId    = position.Office.Id
            };

            return(View(model));
        }
    // initialize.
    void Awake()
    {
        //Create manager if one doesn't exist.
        if (manager != null && manager != this)
        {
            Destroy(this.gameObject);
            return;
        }
        else
        {
            //Create new gamepad manager instance
            manager = this;
            DontDestroyOnLoad(this.gameObject);

            audioActor             = GetComponent <Audio>();
            itemManager            = GetComponent <ItemManager>();
            lpManager              = GetComponent <LapsManager>();
            posManager             = GetComponent <PositionManager>();
            newPlacementController = GetComponent <NewPlacementController>();
            psActor  = GetComponent <PlayerSelectActor>();
            winActor = GetComponent <WinActor>();

            //Lock gamepadcount based on range
            GamePadCount = Mathf.Clamp(GamePadCount, 1, 4);

            gamepads = new List <xbox_gamepad>();

            //Create gamepads based on gamepad count.
            for (int i = 0; i < GamePadCount; ++i)
            {
                gamepads.Add(new xbox_gamepad(i + 1));
            }
        }
    }
        public async Task <ActionResult> Create(OfficeCreateViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (await OfficeManager.IsEntityExistByLamdaAsync(e => e.Name == model.Name))
                {
                    ModelState.AddModelError("", "同名已存在");
                }
                else
                {
                    var dep = await DepartmentManager.FindEntityByIdAsync(model.DepartmentId);

                    if (dep == null)
                    {
                        ModelState.AddModelError("", "指定学院不存在");
                        return(View(model));
                    }
                    var office = new Office()
                    {
                        Name        = model.Name,
                        Description = model.Description,
                        Department  = dep
                    };
                    await OfficeManager.AddEntityAsync(office);

                    office = await OfficeManager.FindOfficeByNameAsync(office.Name);

                    await PositionManager.SetPositionsOfficeAsync(model.IdsToAdd ?? new int[] { }, office);

                    return(RedirectToAction("Index"));
                }
            }
            return(View(model));
        }
Esempio n. 12
0
    // Minimax main function, should be the one to call in all cases
    // Essentialy the same as MinABPruning but store the actual move
    private (int, int) MiniMaxABPruning(int n)
    {
        (int, int)move = (-1, -1);

        int min = int.MaxValue;
        List <(int, int)> allPM = MoveManager.GetAllPossibleMoves(realBoard, false, false);

        foreach ((int, int)iMove in allPM)
        {
            PositionManager childBoard = new PositionManager(realBoard);
            childBoard.MovePiece(iMove.Item1, iMove.Item2);
            int score = MaxABPruning(childBoard, n, int.MinValue, int.MaxValue);
            if (score == min && (Random.Range(0, 2) == 0))  //add random to make the AI less predictable
            {
                move = iMove;
            }
            if (score < min)
            {
                min  = score;
                move = iMove;
            }
        }

        if (min > 300)
        {
            return(-1, -1);
        }

        return(move);
    }
Esempio n. 13
0
    void ShowPawnWay(int id)
    {
        for (int i = 0; i < 90; i++)
        {
            if (!points[i].isOccupied)
            {
                float _x = points[i].transform.localPosition.x;

                float fromX = ChessmanManager.chessman[id]._x;
                if (_x < (fromX + 6f) && _x > (fromX - 6f))
                {
                    float _z    = points[i].transform.localPosition.z;
                    float fromZ = ChessmanManager.chessman[id]._z;
                    if (_z > (fromZ - 6f) && _z < (fromZ + 6f))
                    {
                        if (PositionManager.canMovePawn(id, _x, _z, -1))
                        {
                            points[i].ShowBeams();
                            hidePoints.Add(points[i]);
                        }
                    }
                }
            }
        }
    }
Esempio n. 14
0
        private void positionDataGridView_RowLeave(object sender, DataGridViewCellEventArgs e)
        {
            if (positionBindingSource == null)
            {
                return;
            }
            if (positionDataGridView.Rows.Count <= 1)
            {
                return;
            }
            if (!positionDataGridView.IsCurrentRowDirty)
            {
                return;
            }
            Validate();
            ((Position)positionBindingSource.Current).DepartmentId =
                ((Department)departmentBindingSource.Current).DepartmentId;
            positionBindingSource.EndEdit();
            var iResult = PositionManager.Save((Position)positionBindingSource.Current);

            if (iResult > 0)
            {
                LoadInitPosition(((Department)departmentBindingSource.Current).DepartmentId);
            }
        }
Esempio n. 15
0
        private void MainForm_OnActPosUpdateButtonClick(object sender, PositionTableArgs e)
        {
            try
            {
                PositionManager tempPosManager = ParseUserArgsPositionForManager(new PositionManager(), e.userArgs);

                List <string[]> tempPosTableData = new List <string[]>();

                tempPosManager.UpdateGeneralParametres();

                if (tempPosManager.Futures != null)
                {
                    tempPosTableData.Add(CreateActualPosTableDataRowFromFut(tempPosManager.Futures));
                }

                foreach (Option opt in tempPosManager.Options)
                {
                    tempPosTableData.Add(CreateActualPosTableDataRowFromOpt(opt));
                }

                mainForm.UpdateActualPositionTableData(tempPosTableData);
            }
            catch (Exception e2)
            {
                LOGGER.Error("An exception when event of ACTUAL position update was enabled:{0}", e2.ToString());
                throw;
            }
        }
 // Use this for initialization
 void Awake()
 {
     Instance = this;
     gameObjects[3].transform.DOMove(GetInital(gameObjects[3]).transform.position, 1f);
     Debug.Log(initalTransform.Length);
     //PositionManager.Instance.SetInitalAll();
 }
Esempio n. 17
0
        private void DeletePosition()
        {
            if (positionBindingSource == null)
            {
                return;
            }
            var dResult = MessageBox.Show(@"Delete current record?", @"Delete", MessageBoxButtons.YesNo,
                                          MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

            if (dResult != DialogResult.Yes)
            {
                return;
            }
            if (PositionManager.Delete(((Position)positionBindingSource.Current).PositionId))
            {
                MessageBox.Show(@"Record was deleted successfully.", @"Delete", MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                positionBindingSource.RemoveCurrent();
            }
            else
            {
                MessageBox.Show(@"Error on delete operation.", @"Delete", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                positionDataGridView.Focus();
            }
        }
Esempio n. 18
0
        private void LoadDRTEnrolleeId()
        {
            Cursor = Cursors.WaitCursor;
            //try catch here
            if (listBox1.Items.Count > 0)
            {
                _iEnrolleeId = ((EmployeeData)listBox1.SelectedItem).EnrolleeId;
                var enrollee = EmployeeManager.Get(_iEnrolleeId);
                var position = PositionManager.Get(enrollee.PositionId);

                if (position != null)
                {
                    _principal        = position.PositionName?.Substring(0, 3).ToUpper() ?? @"NO";
                    _employeePosition = position.PositionName;
                }

                _employeeName = String.Format(@"{0} {1}. {2}", enrollee.EmployeeFirstName,
                                              enrollee.EmployeeMiddleName.Substring(0, 1), enrollee.EmployeeLastName);
                labelEmployee.Text = String.Format(@"{0} - ({1})", _employeeName, _employeePosition);

                _listDTR = DTRManagement.LoadDTRViaDTR(enrollee, _iMonth, _iYear, DTRManager.GetAll(_iEnrolleeId), out _setting);
                dTRBindingSource.DataSource = _listDTR;

                ExecuteSaveDTRThread(); // loop to save dtr.

                MarkUnderOverTimeHours();
            }
            Cursor = Cursors.Default;
        }
Esempio n. 19
0
        public void RedrawPartyLocation()
        {
            MapBox mapBox = _drawingUi.GetMapBox();

            if (mapBox.Width > 0 && mapBox.Height > 0)
            {
                Bitmap map = new Bitmap(mapBox.Width, mapBox.Height);

                using (Graphics graphics = Graphics.FromImage(map))
                {
                    graphics.SmoothingMode     = SmoothingMode.AntiAlias;
                    graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    graphics.PixelOffsetMode   = PixelOffsetMode.HighQuality;

                    if (_partyLocation != null)
                    {
                        Point positionOnScreen       = PositionManager.HexToScreen(_partyLocation, mapBox.TopLeftCoordinate);
                        var   pictureLocationAndSize = new Rectangle(positionOnScreen, new Size(50, 44));

                        using (var selectImage = Image.FromFile("Images/PartyIndicator.png"))
                        {
                            graphics.DrawImage(selectImage, pictureLocationAndSize);
                        }
                    }
                }

                mapBox.UpdateLayerAndMap(Layer.PartyLocation, map);
            }
        }
Esempio n. 20
0
        private static void DebugInfo(PositionManager positions, IBoard board, PatternMatcher matcher)
        {
            var matches1 = matcher.MatchPatterns(board, positions.Lines).ToList();

            PatternBoard pBoard = board as PatternBoard;

            if (pBoard != null)
            {
                var  matches2 = pBoard.Matches.Get().ToList();
                var  any      = matches1.Except(matches2).ToList();
                bool same     = (matches1.Count() == matches2.Count()) && !any.Any();
                Debug.Assert(same);
            }

            var groupedMatches = matches1.GroupBy(m => m.Pattern.PatternType, m => m);

            foreach (var match in groupedMatches)
            {
                var pos = string.Join(",", match.Select(l => $"{l.Pattern.Player}:({l.Positions.First().Row},{l.Positions.First().Col})"));
                if (!string.IsNullOrWhiteSpace(pos))
                {
                    Debug.WriteLine($"Pattern {match.Key} at {pos}.");
                }
            }
        }
        protected override void DrawHex(Graphics graphics, Hex hex, int alpha = 0)
        {
            HexCoordinate positionOnVisibleMap   = hex.Coordinate.Minus(UiInterface.GetMapBox().TopLeftCoordinate);
            Point         positionOnScreen       = PositionManager.HexToScreen(positionOnVisibleMap);
            var           pictureLocationAndSize = new Rectangle(positionOnScreen, new Size(50, 44));

            if (hex.RiverSections.Count == 0)
            {
                return;
            }
            else if (hex.RiverSections.Count == 1)
            {
                var river = hex.RiverSections[0];
                DrawSection(graphics, river, pictureLocationAndSize);
            }
            //else if (hex.RiverSections.Count == 2 && hex.RiverSections[0].Type == hex.RiverSections[1].Type)
            //{
            //    graphics.DrawArc();
            //}
            else
            {
                foreach (var riverSection in hex.RiverSections)
                {
                    DrawSection(graphics, riverSection, pictureLocationAndSize);
                }
            }
        }
Esempio n. 22
0
    private void Awake()
    {
        // Set ID's
        nodeID      = NODE_ID++;
        NodeAlphaID = UtilGraph.ConvertIDToAlphabet(nodeID);

        // Name shown in the editor
        name = NodeType + nodeID + "(" + nodeAlphaID + ")";

        animator = GetComponentInChildren <Animator>();

        // Get textmesh pros
        Component[] textHolders = GetComponentsInChildren(typeof(TextMeshPro));
        textNodeID   = textHolders[0].GetComponent <TextMeshPro>();
        textNodeDist = textHolders[1].GetComponent <TextMeshPro>();


        // Find player object and its camera
        positionManager = FindObjectOfType <PositionManager>();
        graphMain       = FindObjectOfType <GraphMain>();
        audioManager    = FindObjectOfType <AudioManager>();

        // "Set"
        edges = new List <Edge>();
        ResetNode();
    }
Esempio n. 23
0
 public Villager(DrawerCollection textures_, PositionManager pos_, List <Property> properties_, string name_, string type_) : base(textures_, pos_, properties_, name_, type_)
 {
     state    = VillagerState.walkingLeft;
     pos_.pos = GameData.townMiddle.vec;
     path     = GameData.GetRandomPath();
     GameData.availableCitizens--;
     GameData.citizensOutside++;
 }
Esempio n. 24
0
 private void InitComboBox()
 {
     Cursor.Current = Cursors.WaitCursor;
     settingBindingSource.DataSource   = SettingManager.GetAll();
     positionBindingSource.DataSource  = PositionManager.GetAll();
     leaveTypeBindingSource.DataSource = LeaveTypeManager.GetAll();
     Cursor.Current = Cursors.Default;
 }
    public static PositionManager ReadPositions(string Name)
    {
        string          path = "/";
        object          o    = Resources.Load(path + Name);
        PositionManager retrievedPositions = (PositionManager)o;

        return(retrievedPositions);
    }
Esempio n. 26
0
 public MapEventArgs(long mouseX, long mouseY, MouseButtons mouseButton, int clicks, HexCoordinate hexWorldCoordinate)
 {
     X                   = mouseX;
     Y                   = mouseY;
     Button              = mouseButton;
     Clicks              = clicks;
     HexWorldCoordinate  = hexWorldCoordinate;
     HexScreenCoordinate = PositionManager.ScreenToHex(X, Y);
 }
Esempio n. 27
0
 void Start()
 {
     rb = GetComponent <Rigidbody>();
     positionManager  = GetComponent <PositionManager>();
     textSpeedP1      = GameObject.Find("CanvasP1").transform.GetChild(0).GetComponent <TextMeshProUGUI>();
     textSpeedP2      = GameObject.Find("CanvasP2").transform.GetChild(0).GetComponent <TextMeshProUGUI>();
     originalSpeed    = enginePower;
     originalMaxForce = maxSpeed;
 }
Esempio n. 28
0
 public Building(DrawerCollection textures_, PositionManager pos_, List <Property> props_, float cd_, string name_ = null, string text_ = null) : base(textures_, pos_, props_, name_, "building")
 {
     maxCd       = cd_;
     isHovered   = false;
     wasClicked  = false;
     hoveredText = text_;
     release     = false;
     level       = 1;
 }
 void Start()
 {
     // Get the hand componenet
     //hand = GetComponent<Hand>();
     wim      = GameObject.Find("InteractionCenter").GetComponent <WIM_vive>();
     pm       = GameObject.Find("InteractionCenter").GetComponent <PositionManager>();
     hand     = hand1;
     released = true;
 }
Esempio n. 30
0
        private void SaveDesignationDetails(DesignationItem myItem)
        {
            PositionManager myManager = new PositionManager();

            myManager.SaveDesignation(myItem);

            ClearInputFields();
            MessageBox.Show("New position successfully added.");
        }
        // Medotd som körs när man startar ett spel eller om man byter våning.
        // Vad den gör är att den lägger till rätt objekt på rätt ställe, den kollar även vilken textur som ska användas
        public void ChangeFloor(int floor, PositionManager[, ,] positionManager, ref List<GameObj> floortiles,
            ref List<GameObj> walls, ref List<GameObj> objects, ref List<Enemy> enemies)
        {
            floortiles.Clear();
            walls.Clear();
            objects.Clear();
            enemies.Clear();

            string currentMONSTER;
            string currentObject;
            Vector2 currentPosition;

            for (int y = 0; y < 34; y++)
            {
                for (int x = 0; x < 52; x++)
                {
                    currentObject = positionManager[y, x, floor].type;
                    currentMONSTER = positionManager[y, x, floor].monster;
                    currentPosition = new Vector2(x, y);

                    if (positionManager[y, x, floor].floor == true)
                    {
                        floortiles.Add(new GameObj()
                        {
                            Frame = 17,
                            Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                        });
                    }

                    switch (currentObject)
                    {
                        case "empty":
                            break;
                        case "wall":

                          if (positionManager[y + 1, x, floor].type != "wall" && positionManager[y - 1, x, floor].type != "wall" &&
                                positionManager[y, x + 1, floor].type != "wall" && positionManager[y, x - 1, floor].type != "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 0,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });

                            else if (positionManager[y + 1, x, floor].type != "wall" && positionManager[y - 1, x, floor].type != "wall" &&
                                positionManager[y, x + 1, floor].type == "wall" && positionManager[y, x - 1, floor].type != "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 1,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type != "wall" && positionManager[y - 1, x, floor].type != "wall" &&
                                positionManager[y, x + 1, floor].type == "wall" && positionManager[y, x - 1, floor].type == "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 2,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type != "wall" && positionManager[y - 1, x, floor].type != "wall" &&
                                positionManager[y, x + 1, floor].type != "wall" && positionManager[y, x - 1, floor].type == "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 3,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type == "wall" && positionManager[y - 1, x, floor].type != "wall" &&
                                positionManager[y, x + 1, floor].type != "wall" && positionManager[y, x - 1, floor].type != "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 4,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type == "wall" && positionManager[y - 1, x, floor].type == "wall" &&
                                positionManager[y, x + 1, floor].type != "wall" && positionManager[y, x - 1, floor].type != "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 5,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type != "wall" && positionManager[y - 1, x, floor].type == "wall" &&
                                positionManager[y, x + 1, floor].type != "wall" && positionManager[y, x - 1, floor].type != "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 6,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type == "wall" && positionManager[y - 1, x, floor].type == "wall" &&
                                positionManager[y, x + 1, floor].type == "wall" && positionManager[y, x - 1, floor].type == "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 7,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type != "wall" && positionManager[y - 1, x, floor].type == "wall" &&
                                positionManager[y, x + 1, floor].type != "wall" && positionManager[y, x - 1, floor].type != "wall" &&
                                positionManager[y - 1, x - 1, floor].type == "wall" && positionManager[y - 1, x - 1, floor].type == "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 8,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type != "wall" && positionManager[y - 1, x, floor].type == "wall" &&
                                positionManager[y, x + 1, floor].type == "wall" && positionManager[y, x - 1, floor].type != "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 9,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type != "wall" && positionManager[y - 1, x, floor].type == "wall" &&
                                positionManager[y, x + 1, floor].type == "wall" && positionManager[y, x - 1, floor].type == "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 10,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type != "wall" && positionManager[y - 1, x, floor].type == "wall" &&
                                positionManager[y, x + 1, floor].type != "wall" && positionManager[y, x - 1, floor].type == "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 11,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type == "wall" && positionManager[y - 1, x, floor].type == "wall" &&
                                positionManager[y, x + 1, floor].type != "wall" && positionManager[y, x - 1, floor].type == "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 12,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type == "wall" && positionManager[y - 1, x, floor].type == "wall" &&
                                positionManager[y, x + 1, floor].type == "wall" && positionManager[y, x - 1, floor].type != "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 13,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type == "wall" && positionManager[y - 1, x, floor].type != "wall" &&
                                positionManager[y, x + 1, floor].type == "wall" && positionManager[y, x - 1, floor].type != "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 14,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type == "wall" && positionManager[y - 1, x, floor].type != "wall" &&
                                positionManager[y, x + 1, floor].type == "wall" && positionManager[y, x - 1, floor].type == "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 15,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });
                            else if (positionManager[y + 1, x, floor].type == "wall" && positionManager[y - 1, x, floor].type != "wall" &&
                                positionManager[y, x + 1, floor].type != "wall" && positionManager[y, x - 1, floor].type == "wall")
                                walls.Add(new GameObj()
                                {
                                    Frame = 16,
                                    Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                                });

                            break;
                        case "door":
                            objects.Add(new GameObj()
                            {
                                Frame = 23,
                                Position = new Vector2(currentPosition.X * 64, (currentPosition.Y * 64) )
                            });
                            break;
                        case "chest":
                            objects.Add(new GameObj()
                            {
                                Frame = 18,
                                Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                            });
                            positionManager[y, x, floor].iteration = objects.Count();
                            positionManager[y, x, floor].hp = 1;
                            break;
                        case "emptychest":
                            objects.Add(new GameObj()
                            {
                                Frame = 19,
                                Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                            });
                            positionManager[y, x, floor].iteration = objects.Count();
                            positionManager[y, x, floor].hp = 1;
                            break;
                        case "upstairs":
                            objects.Add(new GameObj()
                            {
                                Frame = 21,
                                Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                            });
                            break;
                        case "downstairs":
                            objects.Add(new GameObj()
                            {
                                Frame = 22,
                                Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                            });
                            break;
                        case "enemy":
                            switch (currentMONSTER)
                            {
                                case "goblin":
                                    enemies.Add(new Enemy(20, 8, 12, 2, 60)
                                    {
                                        xCoord = (int)currentPosition.X,
                                        yCoord = (int)currentPosition.Y
                                    });
                                    break;
                                case "dark_elf":
                                    enemies.Add(new Enemy(14, 8, 18, 2, 80)
                                    {
                                        xCoord = (int)currentPosition.X,
                                        yCoord = (int)currentPosition.Y
                                    });
                                    break;
                                case "g_goblin":
                                    enemies.Add(new Enemy(4, 3, 12, 8, 30)
                                    {
                                        xCoord = (int)currentPosition.X,
                                        yCoord = (int)currentPosition.Y
                                    });
                                    break;
                                case "fel_orc":
                                    enemies.Add(new Enemy(200, 20, 4, 1, 200)
                                    {
                                        xCoord = (int)currentPosition.X,
                                        yCoord = (int)currentPosition.Y
                                    });
                                    break;
                                default:
                                    enemies.Add(new Enemy(20, 8, 12, 2, 60)
                                    {
                                        xCoord = (int)currentPosition.X,
                                        yCoord = (int)currentPosition.Y
                                    });
                                    break;
                            }
                            break;
                        default:
                            break;
                    }
                }
            }
        }
        //Metod som körs när man öppnar en kista, den uppdaterar objects för att bytta grafik för kistor
        public void OpenChest(int floor, PositionManager[, ,] positionManager, ref List<GameObj> objects)
        {
            objects.Clear();
            string currentObject;
            Vector2 currentPosition;

            for (int y = 0; y < 34; y++)
            {
                for (int x = 0; x < 52; x++)
                {
                    currentObject = positionManager[y, x, floor].type;
                    currentPosition = new Vector2(x, y);

                    switch (currentObject)
                    {
                        case "door":
                            objects.Add(new GameObj()
                            {
                                Frame = 23,
                                Position = new Vector2(currentPosition.X * 64, (currentPosition.Y * 64))
                            });
                            break;
                        case "chest":
                            objects.Add(new GameObj()
                            {
                                Frame = 18,
                                Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                            });
                            positionManager[y, x, floor].iteration = objects.Count();
                            positionManager[y, x, floor].hp = 1;
                            break;
                        case "emptychest":
                            objects.Add(new GameObj()
                            {
                                Frame = 19,
                                Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                            });
                            positionManager[y, x, floor].iteration = objects.Count();
                            positionManager[y, x, floor].hp = 1;
                            break;
                        case "upstairs":
                            objects.Add(new GameObj()
                            {
                                Frame = 21,
                                Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                            });
                            break;
                        case "downstairs":
                            objects.Add(new GameObj()
                            {
                                Frame = 22,
                                Position = new Vector2(currentPosition.X * 64, currentPosition.Y * 64)
                            });
                            break;
                    }

                }
            }
        }
Esempio n. 33
0
        //Metod för att spara spelet
        public void SaveTheGame(Character Player, int floor, List<Enemy> enemis, float bredd, PositionManager[,,]positionManager)
        {
            //alla värden måste sparas och laddas i exakt samma ordning. Annars kaos

            StreamWriter saveGame = new StreamWriter("save");
            //Spelarvärden
            saveGame.WriteLine(Player.playerPosX);
            saveGame.WriteLine(Player.playerPosY);
            saveGame.WriteLine(floor);
            saveGame.WriteLine(Player.Totstr);
            saveGame.WriteLine(Player.Totdex);
            saveGame.WriteLine(Player.TotalHp);
            saveGame.WriteLine(Player.maximumHp);
            saveGame.WriteLine(Player.Level);
            saveGame.WriteLine(Player.Xp);
            saveGame.WriteLine(Player.XpToLevel);
            saveGame.WriteLine(Player.victoryConition);
            saveGame.WriteLine(Player.PlayerRace);
            saveGame.WriteLine(Player.playerClass);

            //Fiende värden
            saveGame.WriteLine(enemis.Count );
            for (int i = 0; i < enemis.Count; i++) //sparar data för varje fiende
            {
                saveGame.WriteLine(enemis[i].hp);
                saveGame.WriteLine(enemis[i].ReturnExp());
                saveGame.WriteLine(enemis[i].ReturnSpeed());
                saveGame.WriteLine(enemis[i].xCoord);
                saveGame.WriteLine(enemis[i].yCoord);
            }

            //överiga saker
            saveGame.WriteLine(bredd);

            int antalÖppnadeKistor = 0;

            for (int våning = 0; våning < 3; våning++)
            {
                for (int y = 0; y < 34; y++)
                {
                    for (int x = 0; x < 52; x++)
                    {
                        if (positionManager[y, x, våning].type == "emptychest")
                        {
                            antalÖppnadeKistor += 1;
                        }
                    }
                }
            }
            saveGame.WriteLine(antalÖppnadeKistor);

            for (int våning = 0; våning < 3; våning++)
            {
                for (int y = 0; y < 34; y++)
                {
                    for (int x = 0; x < 52; x++)
                    {
                        if (positionManager[y, x, våning].type == "emptychest")
                        {
                            saveGame.WriteLine(y);
                            saveGame.WriteLine(x);
                            saveGame.WriteLine(våning);
                        }
                    }
                }
            }

            saveGame.Close();
        }
Esempio n. 34
0
        //Ansvarig: Jonas Holmberg
        //Denna klass enda uppgift är att rita ut spelets "Fog of war" eller med andra ord begränsa spelarens synfält. Vad klassen gör enkelt är att den
        //kollar om spelaren befinner sig nära eller mot en vägg, den ritar sedan ut 64x64 svarta rutor där spelaren inte skall kunna se, ex över en vägg.
        public void Draw(SpriteBatch spriteBatch, Vector2 DrawOffset, float layer, Texture2D visionTileGfx, Character player, PositionManager[, ,] positionManager, int floor)
        {
            //Fog of war
            for (int i = -6; i < 7; i++)//Ritar ut det maximala synfältet
            {

                for (int j = -7; j < 8; j++)
                {
                    if (new Vector2(j, i) == new Vector2(-4, 0))//mitten
                    { j += 9; }
                    else if (new Vector2(j, i) == new Vector2(-3, -1))//mitten -1
                    { j += 7; }
                    else if (new Vector2(j, i) == new Vector2(-3, 1))//mitten +1
                    { j += 7; }
                    else if (new Vector2(j, i) == new Vector2(-2, 2))//mitten +2
                    { j += 5; }
                    else if (new Vector2(j, i) == new Vector2(-2, -2))//mitten -2
                    { j += 5; }
                    else if (new Vector2(j, i) == new Vector2(-1, -3))//mitten -3
                    { j += 3; }
                    else if (new Vector2(j, i) == new Vector2(-1, 3))//mitten +3
                    { j += 3; }
                    else if (new Vector2(j, i) == new Vector2(0, 4))//mitten +4
                    { j += 1; }
                    else if (new Vector2(j, i) == new Vector2(0, -4))//mitten -4
                    { j += 1; }

                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }

            }

            //Ritar ut fog of war om det är väggar över spelaren
            if (positionManager[player.playerPosY - 1, player.playerPosX, floor].type == "wall")
            {
                for (int j = -7; j < 8; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 2) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY - 2, player.playerPosX, floor].type == "wall")
            {
                for (int j = -7; j < 8; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY - 3, player.playerPosX, floor].type == "wall")
            {
                for (int j = -7; j < 8; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            //S**t på utritning av fog of war över spelaren

            //Ritar ut fog of war om det är väggar under spelaren
            if (positionManager[player.playerPosY + 1, player.playerPosX, floor].type == "wall")
            {
                for (int j = -7; j < 8; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 1) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 2) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY + 2, player.playerPosX, floor].type == "wall")
            {
                for (int j = -7; j < 8; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 2) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY + 3, player.playerPosX, floor].type == "wall")
            {
                for (int j = -7; j < 8; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            //S**t på utritning av fog of war under spelaren

            //Kollar fog of war till vänster om spelaren om det är en vägg där

            if (positionManager[player.playerPosY, player.playerPosX - 1, floor].type == "wall")
            {
                for (int i = -6; i < 7; i++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX - 2) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX - 3) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX - 4) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX - 5) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY, player.playerPosX - 2, floor].type == "wall")
            {
                for (int i = -6; i < 7; i++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX - 3) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX - 4) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX - 5) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY, player.playerPosX - 3, floor].type == "wall")
            {
                for (int i = -6; i < 7; i++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX - 4) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX - 5) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            //S**t på koll till vänster

            //Kollar fog of war till höger om spelaren om det är en vägg där

            if (positionManager[player.playerPosY, player.playerPosX + 1, floor].type == "wall")
            {
                for (int i = -6; i < 7; i++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + 1) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + 2) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + 3) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + 4) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + 5) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY, player.playerPosX + 2, floor].type == "wall")
            {
                for (int i = -6; i < 7; i++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + 2) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + 3) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + 4) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + 5) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY, player.playerPosX + 3, floor].type == "wall")
            {
                for (int i = -6; i < 7; i++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + 3) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + 4) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + 5) * 64, (player.playerPosY + i) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            //S**t på koll till höger

            //Kollar fog of war till vänster om spelaren och UPP en bit om det är en vägg där

            if (positionManager[player.playerPosY - 1, player.playerPosX - 1, floor].type == "wall")
            {
                for (int j = -7; j < -1; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 2) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY - 2, player.playerPosX - 1, floor].type == "wall")
            {
                for (int j = -7; j < -1; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY - 3, player.playerPosX - 1, floor].type == "wall")
            {
                for (int j = -7; j < -1; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }

            //S**t på koll till vänster

            //Kollar fog of war till höger om spelaren och UPP en bit om det är en vägg där

            if (positionManager[player.playerPosY - 1, player.playerPosX + 1, floor].type == "wall")
            {
                for (int j = 1; j < 8; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 2) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY - 2, player.playerPosX + 1, floor].type == "wall")
            {
                for (int j = 1; j < 8; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY - 3, player.playerPosX + 1, floor].type == "wall")
            {
                for (int j = 1; j < 8; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY - 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }

            //S**t på koll till

            //kollar vänster ner
            if (positionManager[player.playerPosY + 1, player.playerPosX - 1, floor].type == "wall")
            {
                for (int j = -7; j < -1; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 1) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 2) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY + 2, player.playerPosX - 1, floor].type == "wall")
            {
                for (int j = -7; j < -1; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 2) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY + 3, player.playerPosX - 1, floor].type == "wall")
            {
                for (int j = -7; j < -1; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            //s**t koll

            //kollar höger ner
            if (positionManager[player.playerPosY + 1, player.playerPosX + 1, floor].type == "wall")
            {
                for (int j = 1; j < 8; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 1) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 2) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY + 2, player.playerPosX + 1, floor].type == "wall")
            {
                for (int j = 1; j < 8; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 2) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            else if (positionManager[player.playerPosY + 3, player.playerPosX + 1, floor].type == "wall")
            {
                for (int j = 1; j < 8; j++)
                {
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 3) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 4) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                    spriteBatch.Draw(visionTileGfx, new Vector2((player.playerPosX + j) * 64, (player.playerPosY + 5) * 64) - player.Position + new Vector2(400, 350), null, Color.White, 0, new Vector2(32, 32), 1.0f, SpriteEffects.None, 0.89f);
                }
            }
            //s**t koll
        }
Esempio n. 35
0
 // Use this for initialization
 void Start()
 {
     anchorInfo = GetComponent<PositionManager>();
     treeSegInfo = anchorInfo.curChild.GetComponent<Tree_Segment_Script>();
 }
Esempio n. 36
0
        public void Update(GameTime gameTime, ref Character player, ref LoadSave saveAndLoadGame, ref int floor, ref  List<Enemy> enemies, ref PositionManager[, ,] positionManager, ref float hpBarBredd
            , ref bool playmenumusic, ref bool playingamemusic, Cue IngameTGU, ref LevelManager levelManager, ref bool attackDone, ref bool attackDone2
            , ref bool attackDoneMiss, SoundBank soundBank, Cue attackHit, Cue attackMiss, ref Attack attack2, ref int playerDamgeDelt
            , ref Rectangle hpBarPos, List<GameObj> objects, Texture2D tileset)
        {
            KeyboardState ks = Keyboard.GetState();

            //Hp och hpbar uträkningar test
            Random tal = new Random();

            //När en attack är klar sätts dessa till true
            if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
            {
                attackDone2 = true;
                attackDoneMiss = true;
            }

            //Rörelse via tangentbordskontroller
            if (ks.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.D)) //Knapptryckning för att röra sig till höger
            {
                if (player.moveCharRight == false && player.allowButtonPress == true)  //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                {
                    player.Frame = 6;   //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen

                    if (positionManager[player.playerPosY, player.playerPosX + 1, floor].type == "enemy")
                    {
                        if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                        {
                            for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                            {
                                if (enemies[i].xCoord == player.playerPosX + 1 && enemies[i].yCoord == player.playerPosY)
                                {

                                    attackDone = false;
                                    player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack

                                    attack2.attackPos = new Vector2(player.playerPosX + 1, player.playerPosY);
                                    attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                    int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                    enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                    int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                    playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                    player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                    if (hpBefore == hpAfter)   //Då har attacken missat
                                    {
                                        attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                        attackDone2 = true;
                                        soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                    }
                                    else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                    {
                                        attackDoneMiss = true;
                                        attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                        soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                    }

                                    if (enemies[i].hp <= 0)   //Ifall fienden dör
                                    {

                                        positionManager[player.playerPosY, player.playerPosX + 1, floor].type = "empty";   //Sätter positionen den var på till empty

                                        player.Xp += enemies[i].ReturnExp();
                                        enemies.RemoveAt(i);  //Tar bort fienden

                                        if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                        {
                                            player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar

                                        }
                                    }
                                }
                                else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                {

                                }
                            }
                        }
                    }

                    else if (positionManager[player.playerPosY, player.playerPosX + 1, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                    {
                        player.moveCharRight = true;    //Gör så att man rör sig åt höger
                        player.allowButtonPress = false;    //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                        player.playerPosX += 1;

                    }

                }
            }
            if (ks.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.A)) //Knapptryckning för att röra sig till vänster
            {
                if (player.moveCharLeft == false && player.allowButtonPress == true)  //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                {
                    player.Frame = 3;  //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen
                    if (positionManager[player.playerPosY, player.playerPosX - 1, floor].type == "enemy")
                    {
                        if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                        {
                            for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                            {
                                if (enemies[i].xCoord == player.playerPosX - 1 && enemies[i].yCoord == player.playerPosY)
                                {

                                    attackDone = false;
                                    player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack
                                    attack2.attackPos = new Vector2(player.playerPosX - 1, player.playerPosY);
                                    attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                    int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                    enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                    int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                    playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                    player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                    if (hpBefore == hpAfter)   //Då har attacken missat
                                    {
                                        attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                        attackDone2 = true;
                                        soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                    }
                                    else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                    {
                                        attackDoneMiss = true;
                                        attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                        soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                    }

                                    if (enemies[i].hp <= 0)   //Ifall fienden dör
                                    {

                                        positionManager[player.playerPosY, player.playerPosX - 1, floor].type = "empty";
                                        player.Xp += enemies[i].ReturnExp();
                                        enemies.RemoveAt(i);  //Tar bort fienden
                                        if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                        {
                                            player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar
                                        }
                                    }
                                }
                                else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                {

                                }
                            }
                        }
                    }

                    else if (positionManager[player.playerPosY, player.playerPosX - 1, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                    {
                        player.moveCharLeft = true;    //Gör så att man rör sig åt vänster

                        player.allowButtonPress = false;   //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                        player.playerPosX -= 1;
                    }
                }
            }
            if (ks.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.W)) //Knapptryckning för att röra sig upp
            {
                if (player.moveCharUp == false && player.allowButtonPress == true)    //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                {
                    player.Frame = 9;  //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen
                    if (positionManager[player.playerPosY - 1, player.playerPosX, floor].type == "enemy")
                    {
                        if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                        {
                            for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                            {
                                if (enemies[i].xCoord == player.playerPosX && enemies[i].yCoord == player.playerPosY - 1)
                                {

                                    attackDone = false;
                                    player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack
                                    attack2.attackPos = new Vector2(player.playerPosX, player.playerPosY - 1);
                                    attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                    int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                    enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                    int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                    playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                    player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                    if (hpBefore == hpAfter)   //Då har attacken missat
                                    {
                                        attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                        attackDone2 = true;
                                        soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                    }
                                    else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                    {
                                        attackDoneMiss = true;
                                        attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                        soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                    }

                                    if (enemies[i].hp <= 0)   //Ifall fienden dör
                                    {
                                        positionManager[player.playerPosY - 1, player.playerPosX, floor].type = "empty";
                                        player.Xp += enemies[i].ReturnExp();
                                        enemies.RemoveAt(i);  //Tar bort fienden
                                        if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                        {
                                            player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar
                                        }
                                    }
                                }
                                else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                {

                                }
                            }
                        }
                    }

                    else if (positionManager[player.playerPosY - 1, player.playerPosX, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                    {
                        player.moveCharUp = true;  //Gör så att man rör sig upp

                        player.allowButtonPress = false;   //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                        player.playerPosY -= 1;
                    }
                }
            }
            if (ks.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.S))  //Knapptryckning för att röra sig ner
            {
                if (player.moveCharDown == false && player.allowButtonPress == true)  //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                {
                    player.Frame = 0; //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen

                    if (positionManager[player.playerPosY + 1, player.playerPosX, floor].type == "enemy")
                    {
                        if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                        {
                            for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                            {
                                if (enemies[i].xCoord == player.playerPosX && enemies[i].yCoord == player.playerPosY + 1)
                                {

                                    attackDone = false;
                                    player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack
                                    attack2.attackPos = new Vector2(player.playerPosX, player.playerPosY + 1);
                                    attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                    int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                    enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                    int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                    playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                    player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                    if (hpBefore == hpAfter)   //Då har attacken missat
                                    {
                                        attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                        attackDone2 = true;
                                        soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                    }
                                    else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                    {
                                        attackDoneMiss = true;
                                        attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                        soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                    }

                                    if (enemies[i].hp <= 0)   //Ifall fienden dör
                                    {

                                        positionManager[player.playerPosY + 1, player.playerPosX, floor].type = "empty";
                                        player.Xp += enemies[i].ReturnExp();
                                        enemies.RemoveAt(i);  //Tar bort fienden
                                        if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                        {
                                            player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar
                                        }
                                    }
                                }
                                else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                {

                                }
                            }
                        }
                    }

                    else if (positionManager[player.playerPosY + 1, player.playerPosX, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                    {
                        player.moveCharDown = true;    //Gör så att man rör sig ner

                        player.allowButtonPress = false;   //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                        player.playerPosY += 1;
                    }

                }
            }
            prevKs = ks;

            //Rörelse via musklick
            MouseState mousestate1 = Mouse.GetState();
            var mouseposition = new Point(mousestate1.X, mousestate1.Y);
            Rectangle moveUpBox = new Rectangle(400 - 28, 294 - 28, 56, 56);
            Rectangle moveDownBox = new Rectangle(400 - 28, 406 - 28, 56, 56);
            Rectangle moveLeftBox = new Rectangle(344 - 28, 350 - 28, 56, 56);
            Rectangle moveRightBox = new Rectangle(456 - 28, 350 - 28, 56, 56);

            if (mousestate1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Released) && prevMs1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Pressed))
            {
                if (moveUpBox.Contains(mouseposition))
                {
                    if (player.moveCharUp == false && player.allowButtonPress == true)    //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                    {
                        player.Frame = 9;  //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen
                        if (positionManager[player.playerPosY - 1, player.playerPosX, floor].type == "enemy")
                        {
                            if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                            {
                                for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                                {
                                    if (enemies[i].xCoord == player.playerPosX && enemies[i].yCoord == player.playerPosY - 1)
                                    {

                                        attackDone = false;
                                        player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack
                                        attack2.attackPos = new Vector2(player.playerPosX, player.playerPosY - 1);
                                        attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                        int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                        enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                        int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                        playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                        player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                        if (hpBefore == hpAfter)   //Då har attacken missat
                                        {
                                            attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                            attackDone2 = true;
                                            soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                        }
                                        else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                        {
                                            attackDoneMiss = true;
                                            attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                            soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                        }

                                        if (enemies[i].hp <= 0)   //Ifall fienden dör
                                        {

                                            positionManager[player.playerPosY - 1, player.playerPosX, floor].type = "empty";
                                            player.Xp += enemies[i].ReturnExp();
                                            enemies.RemoveAt(i);  //Tar bort fienden
                                            if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                            {
                                                player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar
                                            }
                                        }
                                    }
                                    else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                    {

                                    }
                                }
                            }
                        }

                        else if (positionManager[player.playerPosY - 1, player.playerPosX, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                        {
                            player.moveCharUp = true;  //Gör så att man rör sig upp

                            player.allowButtonPress = false;   //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                            player.playerPosY -= 1;
                        }
                    }
                }
            }

            if (mousestate1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Released) && prevMs1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Pressed))
            {
                if (moveDownBox.Contains(mouseposition))
                {
                    if (player.moveCharDown == false && player.allowButtonPress == true)  //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                    {
                        player.Frame = 0; //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen

                        if (positionManager[player.playerPosY + 1, player.playerPosX, floor].type == "enemy")
                        {
                            if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                            {
                                for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                                {
                                    if (enemies[i].xCoord == player.playerPosX && enemies[i].yCoord == player.playerPosY + 1)
                                    {

                                        attackDone = false;
                                        player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack
                                        attack2.attackPos = new Vector2(player.playerPosX, player.playerPosY + 1);
                                        attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                        int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                        enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                        int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                        playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                        player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                        if (hpBefore == hpAfter)   //Då har attacken missat
                                        {
                                            attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                            attackDone2 = true;
                                            soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                        }
                                        else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                        {
                                            attackDoneMiss = true;
                                            attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                            soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                        }

                                        if (enemies[i].hp <= 0)   //Ifall fienden dör
                                        {

                                            positionManager[player.playerPosY + 1, player.playerPosX, floor].type = "empty";
                                            player.Xp += enemies[i].ReturnExp();
                                            enemies.RemoveAt(i);  //Tar bort fienden
                                            if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                            {
                                                player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar
                                            }
                                        }
                                    }
                                    else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                    {

                                    }
                                }
                            }
                        }

                        else if (positionManager[player.playerPosY + 1, player.playerPosX, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                        {
                            player.moveCharDown = true;    //Gör så att man rör sig ner

                            player.allowButtonPress = false;   //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                            player.playerPosY += 1;
                        }

                    }
                }
            }

            if (mousestate1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Released) && prevMs1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Pressed))
            {
                if (moveLeftBox.Contains(mouseposition))
                {
                    if (player.moveCharLeft == false && player.allowButtonPress == true)  //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                    {
                        player.Frame = 3;  //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen
                        if (positionManager[player.playerPosY, player.playerPosX + 1, floor].type == "enemy")
                        {
                            if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                            {
                                for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                                {
                                    if (enemies[i].xCoord == player.playerPosX + 1 && enemies[i].yCoord == player.playerPosY)
                                    {

                                        attackDone = false;
                                        player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack

                                        int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                        enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                        int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                        playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                        player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                        if (hpBefore == hpAfter)   //Då har attacken missat
                                        {
                                            attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                            attackDone2 = true;
                                            soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                        }
                                        else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                        {
                                            attackDoneMiss = true;
                                            attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                            soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                        }
                                        if (enemies[i].hp <= 0)   //Ifall fienden dör
                                        {

                                            positionManager[player.playerPosY, player.playerPosX + 1, floor].type = "empty";   //Sätter positionen den var på till empty

                                            player.Xp += enemies[i].ReturnExp();
                                            enemies.RemoveAt(i);  //Tar bort fienden
                                            if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                            {
                                                player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar
                                            }
                                        }
                                    }
                                    else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                    {

                                    }
                                }
                            }
                        }
                        else if (positionManager[player.playerPosY, player.playerPosX - 1, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                        {
                            player.moveCharLeft = true;    //Gör så att man rör sig åt vänster

                            player.playerPosX -= 1;
                            player.allowButtonPress = false;   //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                        }
                    }
                }
            }

            if (mousestate1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Released) && prevMs1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Pressed))
            {
                if (moveRightBox.Contains(mouseposition))
                {
                    if (player.moveCharRight == false && player.allowButtonPress == true)  //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                    {
                        player.Frame = 6;   //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen

                        if (positionManager[player.playerPosY, player.playerPosX + 1, floor].type == "enemy")
                        {
                            if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                            {
                                for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                                {
                                    if (enemies[i].xCoord == player.playerPosX + 1 && enemies[i].yCoord == player.playerPosY)
                                    {

                                        attackDone = false;
                                        player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack

                                        attack2.attackPos = new Vector2(player.playerPosX + 1, player.playerPosY);
                                        attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                        int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                        enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                        int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                        playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                        player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                        if (hpBefore == hpAfter)   //Då har attacken missat
                                        {
                                            attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                            attackDone2 = true;
                                            soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                        }
                                        else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                        {
                                            attackDoneMiss = true;
                                            attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                            soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                        }

                                        if (enemies[i].hp <= 0)   //Ifall fienden dör
                                        {

                                            positionManager[player.playerPosY, player.playerPosX + 1, floor].type = "empty";   //Sätter positionen den var på till empty

                                            player.Xp += enemies[i].ReturnExp();
                                            enemies.RemoveAt(i);  //Tar bort fienden
                                            if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                            {
                                                player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar

                                            }
                                        }
                                    }
                                    else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                    {

                                    }
                                }
                            }
                        }

                        else if (positionManager[player.playerPosY, player.playerPosX + 1, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                        {
                            player.moveCharRight = true;    //Gör så att man rör sig åt höger
                            player.allowButtonPress = false;    //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                            player.playerPosX += 1;

                        }

                    }
                }
            }

            prevMs1 = mousestate1;

            base.Update(gameTime);
        }
        private void LayoutControls(CategoryContext categoryContext, bool sizeForm, bool performRtlLayoutFixup)
        {
            ClearForm();
            SuspendLayout();

            // calculate how much room there is above me on the parent form
            int parentControlY = _parentControl.PointToScreen(_parentControl.Location).Y ;
            Form parentForm = _parentControl.FindForm() ;
            int parentFormY = parentForm.PointToScreen(parentForm.ClientRectangle.Location).Y ;
            int maxHeight = parentControlY - parentFormY - ScaleY(_topMargin) - ScaleY(_bottomMargin);

            // enforce additional constraint (or not, let freedom reign!)
            //maxHeight = Math.Min(maxHeight, 400) ;

            using (PositionManager positionManager = new PositionManager(ScaleX(X_MARGIN), ScaleY(Y_MARGIN + 2), ScaleY(4), ScaleX(MinDropDownWidth), categoryContainerControl.Width, maxHeight, scale))
            {
                // add 'none' if we're single selecting categories
                if (categoryContext.SelectionMode != CategoryContext.SelectionModes.MultiSelect)
                    AddCategoryControl(new BlogPostCategoryListItem(new BlogPostCategoryNone(), 0), positionManager);

                // add the other categories
                BlogPostCategoryListItem[] categoryListItems = BlogPostCategoryListItem.BuildList(categoryContext.Categories, true) ;
                foreach(BlogPostCategoryListItem categoryListItem in categoryListItems)
                    AddCategoryControl(categoryListItem, positionManager) ;

                if ( sizeForm )
                    PositionAndSizeForm(positionManager);
            }
            if (performRtlLayoutFixup)
                BidiHelper.RtlLayoutFixup(categoryContainerControl);
            ResumeLayout();
        }
Esempio n. 38
0
        //Metod för att ladda spelet
        public void LoadTheGame(ref Character PlayerLoad, ref int floor, ref List<Enemy> enemis, ref PositionManager[,,] positionmanger, ref int bredd)
        {
            StreamReader loadGame = new StreamReader("save");
            //Spelar värden
            PlayerLoad.playerPosX = int.Parse(loadGame.ReadLine());
            PlayerLoad.playerPosY = int.Parse(loadGame.ReadLine());
            floor = int.Parse(loadGame.ReadLine());
            PlayerLoad.Totstr = int.Parse(loadGame.ReadLine());
            PlayerLoad.Totdex = int.Parse(loadGame.ReadLine());
            PlayerLoad.TotalHp = int.Parse(loadGame.ReadLine());
            PlayerLoad.maximumHp = int.Parse(loadGame.ReadLine());
            PlayerLoad.Level = int.Parse(loadGame.ReadLine());
            PlayerLoad.Xp = int.Parse(loadGame.ReadLine());
            PlayerLoad.XpToLevel = int.Parse(loadGame.ReadLine());
            PlayerLoad.victoryConition = bool.Parse(loadGame.ReadLine());
            PlayerLoad.PlayerRace = (loadGame.ReadLine());
            PlayerLoad.playerClass = (loadGame.ReadLine());

            //Finde värden
            int numberOfEnemis = int.Parse(loadGame.ReadLine());
            for (int i = 0; i < numberOfEnemis; i++)
            {
                int enemyhp = int.Parse(loadGame.ReadLine());
                int enemyXP = int.Parse(loadGame.ReadLine());
                int enemySpeed = int.Parse(loadGame.ReadLine());

                int enemystr = 0;
                int enemydex = 0;

                switch (enemyXP)
                {
                    case 30:
                        enemystr = 3;
                        enemydex = 12;
                        break;
                    case 60:
                        enemystr = 8;
                        enemydex = 12;
                        break;
                    case 80:
                        enemystr = 8;
                        enemydex = 18;
                        break;
                    case 200:
                        enemystr = 14;
                        enemydex = 4;
                        break;
                }

                enemis.Add(new Enemy(enemyhp, enemystr, enemydex, enemySpeed, enemyXP));

                enemis[i].xCoord = int.Parse(loadGame.ReadLine());
                enemis[i].yCoord = int.Parse(loadGame.ReadLine());

                positionmanger[enemis[i].yCoord, enemis[i].xCoord, floor].type = "enemy";
                switch (enemyXP)
                {
                    case 30:
                        positionmanger[enemis[i].yCoord, enemis[i].xCoord, floor].monster = "g_goblin";
                        break;
                    case 60:
                        positionmanger[enemis[i].yCoord, enemis[i].xCoord, floor].monster = "goblin";
                        break;
                    case 80:
                        positionmanger[enemis[i].yCoord, enemis[i].xCoord, floor].monster = "dark_elf";
                        break;
                    case 200:
                        positionmanger[enemis[i].yCoord, enemis[i].xCoord, floor].monster = "fel_orc";
                        break;
                }

            }

            //överiga värden
            bredd = int.Parse(loadGame.ReadLine());

            int numberOfOpenChest = int.Parse(loadGame.ReadLine());

            if (numberOfOpenChest != 0)
            {
                for (int i = 0; i < numberOfOpenChest; i++)
                {

                    int ypos = int.Parse(loadGame.ReadLine());
                    int xpos = int.Parse(loadGame.ReadLine());
                    int våning = int.Parse(loadGame.ReadLine());

                    positionmanger[ypos, xpos, våning].type = "emptychest";

                }
            }

            loadGame.Close();
        }
        private void AddCategoryControl(BlogPostCategoryListItem categoryListItem, PositionManager positionManager)
        {
            ICategorySelectorControl catSelector =
                CategorySelectorControlFactory.Instance.GetControl(categoryListItem.Category,
                                                                   (_categoryContext.SelectionMode ==
                                                                    CategoryContext.SelectionModes.MultiSelect));
            catSelector.SelectedChanged += new EventHandler(catSelector_SelectedChanged);

            catSelector.Control.Scale(new SizeF(scale.X, scale.Y));

            positionManager.PositionControl(catSelector.Control, categoryListItem.IndentLevel);

            categoryContainerControl.Controls.Add(catSelector.Control);

            _categoryControls.Add(catSelector.Control);
        }
        private void PositionAndSizeForm(PositionManager manager)
        {
            // determine height based on position manager calculations
            categoryContainerControl.Height = manager.Height;
            Height = manager.Height + ScaleY(_topMargin) + ScaleY(_bottomMargin) ;

            Point bottomRightCorner =
                _parentControl.PointToScreen(new Point(_parentControl.Width - Width, -Height));
            Location = bottomRightCorner;
        }
Esempio n. 41
0
 /// <summary>
 /// Sets up managers when a user is logged in
 /// </summary>
 /// <param name="user">User.</param>
 public static void UserLoggedIn(User user)
 {
     Log.WriteLine (Log.Layer.AL, typeof(Application), "User logged in: " + user);
     User = user;
     GameStatusManager = new GameStatusManager (user);
     InfoManager = new InfoManager (user);
     ItemManager = new ItemManager (user);
     OrderTypeManager = new OrderTypeManager (user);
     PositionManager = new PositionManager (user);
     StarSystemManager = new StarSystemManager (user);
     OrderManager = new OrderManager (user);
     NotificationManager = new NotificationManager (user);
 }
        //Metod som tilldelar rätt typ av objekt till poitionmanger
        //Läser in båda strängar till positionmanager
        public void BuildGame(ref PositionManager[, ,] positionManager)
        {
            string level;

            for (int floor = 0; floor < 3; floor++)
            {
                level = map[floor];
                Vector2 temp = new Vector2(0, 0); //position du läser nuvarande tecken till
                for (int i = 0; i < level.Length; i++)
                {//for loopen kommer fortsätta tills i är lika stor som längden på strängen level, och kommer köra varje tecken i ordning genom en switch
                    switch (level[i])
                    {
                        case ' ':
                            positionManager[(int)temp.Y, (int)temp.X, floor] = new PositionManager//Sätter dessa värden i nuvarande koordinater i positionmanager
                            {
                                type = "empty",
                                floor = false
                            };
                            temp.X++; //flyttar fram ett steg på x koordinaten till nästa tecken
                            break;
                        case 't':
                            positionManager[(int)temp.Y, (int)temp.X, floor] = new PositionManager
                            {
                                type = "door",
                                floor = true
                            };
                            temp.X++;
                            break;
                        case '#':
                            positionManager[(int)temp.Y, (int)temp.X, floor] = new PositionManager
                            {
                                type = "wall",
                                floor = false
                            };
                            temp.X++;
                            break;
                        case 'g':
                            positionManager[(int)temp.Y, (int)temp.X, floor] = new PositionManager
                            {
                                type = "enemy",
                                monster = "goblin",
                                floor = true
                            };
                            temp.X++;
                            break;
                        case 'G':
                            positionManager[(int)temp.Y, (int)temp.X, floor] = new PositionManager
                            {
                                type = "enemy",
                                monster = "g_goblin",
                                floor = true
                            };
                            temp.X++;
                            break;
                        case 'd':
                            positionManager[(int)temp.Y, (int)temp.X, floor] = new PositionManager
                            {
                                type = "enemy",
                                monster = "dark_elf",
                                floor = true
                            };
                            temp.X++;
                            break;
                        case 'f':
                            positionManager[(int)temp.Y, (int)temp.X, floor] = new PositionManager
                            {
                                type = "enemy",
                                monster = "fel_orc",
                                floor = true
                            };
                            temp.X++;
                            break;
                        case '.':
                            positionManager[(int)temp.Y, (int)temp.X, floor] = new PositionManager
                            {
                                type = "empty",
                                floor = true
                            };
                            temp.X++;
                            break;
                        case 'C':
                            positionManager[(int)temp.Y, (int)temp.X, floor] = new PositionManager
                            {
                                type = "chest",
                                floor = true
                            };
                            temp.X++;
                            break;
                        case 'E':
                            positionManager[(int)temp.Y, (int)temp.X, floor] = new PositionManager
                            {
                                type = "wall",
                                entry = true
                            };
                            temp.X++;
                            break;
                        case 'D':
                            positionManager[(int)temp.Y, (int)temp.X, floor] = new PositionManager
                            {
                                type = "downstairs",
                                floor = true
                            };
                            temp.X++;
                            break;
                        case 'U':
                            positionManager[(int)temp.Y, (int)temp.X, floor] = new PositionManager
                            {
                                type = "upstairs",
                                floor = true
                            };
                            temp.X++;
                            break;
                        case '\n'://när radbyte läses så hoppar man ett steg ner i Y axeln och flyttar X till 0 för att läsa nästa rad till rätt positioner
                            temp.Y++;
                            temp.X = 0;
                            break;
                        default:
                            break;
                    }
                }
            }
        }
Esempio n. 43
0
        public void Update(GameTime gameTime,  ref PositionManager[,,]  positionManager, int floor, int playerdex, ref int skada, SoundBank soundBank, Cue attackHit, Cue attackMiss, int level, ref Character player1)
        {
            if (resetAttack == false)
            {
                moved2 += 1;
                if (moved2 > 1 && moved2 < 16)
                { Frame = 0; }
                else if (moved2 > 16 && moved2 < 32)
                { Frame = 1; }
                else if (moved2 > 32 && moved2 < 48)
                { Frame = 2; }
                else if (moved2 > 48 && moved2 < 64)
                { Frame = 3; }

                if (moved2 == 64)
                { moved2 = 0; Frame = 0; resetAttack = true; attackMissed = true; attackDidDmg = true; }   //olika variabler ändras så att man nu kan genomföra en ny rörelse
            }

            //attack animation
            if (attackAnimationDone == true)
            {
                movedattack += 4;
                if (movedattack > 1 && movedattack < 16)
                { attackFrame = 0; }
                else if (movedattack > 16 && movedattack < 32)
                { attackFrame = 1; }
                else if (movedattack > 32 && movedattack < 48)
                { attackFrame = 2; }
                else if (movedattack > 48 && movedattack < 64)
                { attackFrame = 3; }

                if (movedattack == 64)    // när man rört sig 64 pixlar så stannar gubben
                { movedattack = 0; attackFrame = 0; attackAnimationDone = false; }   //olika variabler ändras så att man nu kan genomföra en ny rörelse
            }

            CheckActive();  //Kör metoden för att kolla när fienden skall aktiveras

            //Detta ai fungerar så att fienden kollar var spelaren befinner sig i rutnätet. Först kollar den vart den är på X-leden, sedan rör den sig mot fienden tills den är
            //under den på y-leden. Efter det rör sig fienden mot spelaren på y. Om fienden befinner sig bredvid spelaren kommer den att försöka utföra en attack.
            //Skulle en vägg komma ivägen om fienden exempelvis gick in i en vägg på x-leden kommer den i detta läge undersöka om fienden befinner sig längre upp eller ner
            //på y och sedan röra sig mot spelaren på de viset. Samma sak om den går in i en vägg på y-leden, men då kommer den gå åt något håll på x-leden.

            if (allowMove)  //Om den frå röras startar ai
            {
                if (ActiveMove) // Fienden är aktiv och går mot spelaren samt attackerar om den kan.
                {   // Enemy går mot spelaren om den är tillräckligt när för att attackera så gör den det istället.
                    //if ()//ska kolla om det är kortast till spelaren från Enemy på x kordinaten eller om avståndet är lika.
                    //{
                    if (PlayerPos.X > xCoord) // kollar om spelaren är till höger om enemy.
                    {

                        if (xCoord + 1 == PlayerPos.X && yCoord == PlayerPos.Y) //kollar om spelaren är på rutan till höger om enemy.
                        {
                            if (resetAttack == true)
                            {
                                skada = EnemyAttackCalc(playerdex);
                                if (skada != 0)
                                { soundBank.PlayCue("AttackSound"); }
                                else if (skada == 0)
                                { soundBank.PlayCue("AttackMiss");  }

                                player1.TotalHp = player1.TotalHp - skada;

                            }
                        }
                        // kod för att gå till höger.
                        else if (positionManager[yCoord, xCoord + 1, floor].type != "wall" &&
                            positionManager[yCoord, xCoord + 1, floor].type != "enemy" &&
                            positionManager[yCoord, xCoord + 1, floor].type != "upstairs" &&
                            positionManager[yCoord, xCoord + 1, floor].type != "downstairs" &&
                            positionManager[yCoord, xCoord + 1, floor].type != "chest" &&
                            positionManager[yCoord, xCoord + 1, floor].type != "door")
                        {

                            moveEnemyrRight = true;
                            allowMove = false;
                            positionManager[yCoord, xCoord + 1, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                            positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                            xCoord++;
                        }
                        //Alternativ när fienden går in i en vägg
                        else if (positionManager[yCoord, xCoord + 1, floor].type == "wall" ||
                           positionManager[yCoord, xCoord + 1, floor].type == "enemy" ||
                           positionManager[yCoord, xCoord + 1, floor].type == "upstairs" ||
                           positionManager[yCoord, xCoord + 1, floor].type == "downstairs" ||
                           positionManager[yCoord, xCoord + 1, floor].type == "chest" ||
                           positionManager[yCoord, xCoord + 1, floor].type != "door")
                        {
                            if (PlayerPos.Y < yCoord) // Kollar om spelaren är ovanför enemy.
                            {
                                if (yCoord - 1 == PlayerPos.Y && xCoord == PlayerPos.X) //kollar om spelaren är på rutan ovnaför enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }
                                }
                                // kod för att gå up.
                                else if (positionManager[yCoord - 1, xCoord, floor].type != "wall" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "enemy" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "upstairs" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "downstairs" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "chest" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "door")
                                {

                                    moveEnemyUp = true;
                                    allowMove = false;
                                    positionManager[yCoord - 1, xCoord, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    yCoord--;
                                }
                            }
                            else if (PlayerPos.Y > yCoord) // annars gå uppåt.
                            {
                                if (yCoord + 1 == PlayerPos.Y && xCoord == PlayerPos.X) //kollar om spelaren är på rutan ovnaför enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }

                                }
                                //  kod för att gå ner.
                                else if (positionManager[yCoord + 1, xCoord, floor].type != "wall" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "enemy" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "upstairs" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "downstairs" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "chest" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "door")
                                {
                                    moveEnemyDown = true;
                                    allowMove = false;
                                    positionManager[yCoord + 1, xCoord, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    yCoord++;
                                }
                            }

                        }

                    }
                    else if (PlayerPos.X < xCoord)  // Annars gå till vänster.
                    {
                        if (xCoord - 1 == PlayerPos.X && yCoord == PlayerPos.Y) //kollar om spelaren är på rutan till vänster om enemy.
                        {
                            if (resetAttack == true)
                            {
                                skada = EnemyAttackCalc(playerdex);
                                if (skada != 0)
                                { soundBank.PlayCue("AttackSound"); }
                                else if (skada == 0)
                                { soundBank.PlayCue("AttackMiss"); }
                                player1.TotalHp = player1.TotalHp - skada;

                            }
                        }
                        // Kod för att gå till vänster

                        else if (positionManager[yCoord, xCoord - 1, floor].type != "wall" &&
                            positionManager[yCoord, xCoord - 1, floor].type != "enemy" &&
                            positionManager[yCoord, xCoord - 1, floor].type != "upstairs" &&
                            positionManager[yCoord, xCoord - 1, floor].type != "downstairs" &&
                            positionManager[yCoord, xCoord - 1, floor].type != "chest" &&
                            positionManager[yCoord, xCoord - 1, floor].type != "door")
                        {
                            moveEnemyLeft = true;
                            allowMove = false;
                            positionManager[yCoord, xCoord - 1, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                            positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                            xCoord--;
                        }

                        else if (positionManager[yCoord, xCoord - 1, floor].type == "wall" ||
                           positionManager[yCoord, xCoord - 1, floor].type == "enemy" ||
                           positionManager[yCoord, xCoord - 1, floor].type == "upstairs" ||
                           positionManager[yCoord, xCoord - 1, floor].type == "downstairs" ||
                           positionManager[yCoord, xCoord - 1, floor].type == "chest" ||
                           positionManager[yCoord, xCoord - 1, floor].type != "door")
                        {
                            if (PlayerPos.Y < yCoord) // Kollar om spelaren är ovanför enemy.
                            {
                                if (yCoord - 1 == PlayerPos.Y && xCoord == PlayerPos.X) //kollar om spelaren är på rutan ovnaför enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }
                                }
                                // kod för att gå up.
                                else if (positionManager[yCoord - 1, xCoord, floor].type != "wall" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "enemy" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "upstairs" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "downstairs" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "chest" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "door")
                                {

                                    moveEnemyUp = true;
                                    allowMove = false;
                                    positionManager[yCoord - 1, xCoord, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    yCoord--;
                                }

                            }
                            else if (PlayerPos.Y > yCoord) // annars gå uppåt.
                            {
                                if (yCoord + 1 == PlayerPos.Y && xCoord == PlayerPos.X) //kollar om spelaren är på rutan ovnaför enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }

                                }
                                //  kod för att gå ner.
                                else if (positionManager[yCoord + 1, xCoord, floor].type != "wall" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "enemy" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "upstairs" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "downstairs" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "chest" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "door")
                                {
                                    moveEnemyDown = true;
                                    allowMove = false;
                                    positionManager[yCoord + 1, xCoord, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    yCoord++;
                                }
                            }
                            ///////////////////////
                        ///////////////////////
                        }

                    }
                    //}

                    else if (PlayerPos.Y < yCoord) // Kollar om spelaren är ovanför enemy.
                    {
                        if (yCoord - 1 == PlayerPos.Y && xCoord == PlayerPos.X) //kollar om spelaren är på rutan ovnaför enemy.
                        {
                            if (resetAttack == true)
                            {
                                skada = EnemyAttackCalc(playerdex);
                                if (skada != 0)
                                { soundBank.PlayCue("AttackSound"); }
                                else if (skada == 0)
                                { soundBank.PlayCue("AttackMiss"); }
                                player1.TotalHp = player1.TotalHp - skada;

                            }
                        }
                        // kod för att gå up.
                        else if (positionManager[yCoord - 1, xCoord, floor].type != "wall" &&
                            positionManager[yCoord - 1, xCoord, floor].type != "enemy" &&
                            positionManager[yCoord - 1, xCoord, floor].type != "upstairs" &&
                            positionManager[yCoord - 1, xCoord, floor].type != "downstairs" &&
                            positionManager[yCoord - 1, xCoord, floor].type != "chest" &&
                            positionManager[yCoord - 1, xCoord, floor].type != "door")
                        {

                            moveEnemyUp = true;
                            allowMove = false;
                            positionManager[yCoord - 1, xCoord, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                            positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                            yCoord--;
                        }
                        else if (positionManager[yCoord - 1, xCoord, floor].type == "wall" ||
                            positionManager[yCoord - 1, xCoord, floor].type == "enemy" ||
                            positionManager[yCoord - 1, xCoord, floor].type == "upstairs" ||
                            positionManager[yCoord - 1, xCoord, floor].type == "downstairs" ||
                            positionManager[yCoord - 1, xCoord, floor].type == "chest" ||
                            positionManager[yCoord - 1, xCoord, floor].type == "door")
                        {
                            if (PlayerPos.X > xCoord) // kollar om spelaren är till höger om enemy.
                            {

                                if (xCoord + 1 == PlayerPos.X && yCoord == PlayerPos.Y) //kollar om spelaren är på rutan till höger om enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }
                                }
                                // kod för att gå till höger.
                                else if (positionManager[yCoord, xCoord + 1, floor].type != "wall" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "enemy" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "upstairs" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "downstairs" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "chest" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "door")
                                {

                                    moveEnemyrRight = true;
                                    allowMove = false;
                                    positionManager[yCoord, xCoord + 1, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true};    //Sätter sin förra position i 2d-arrayen till "null"
                                    xCoord++;
                                }

                            }
                            else if (PlayerPos.X < xCoord)  // Annars gå till vänster.
                            {
                                if (xCoord - 1 == PlayerPos.X && yCoord == PlayerPos.Y) //kollar om spelaren är på rutan till vänster om enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }
                                }
                                // Kod för att gå till vänster

                                else if (positionManager[yCoord, xCoord - 1, floor].type != "wall" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "enemy" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "upstairs" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "downstairs" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "chest" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "door")
                                {
                                    moveEnemyLeft = true;
                                    allowMove = false;
                                    positionManager[yCoord, xCoord - 1, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    xCoord--;
                                }
                            }
                            //////////////////////////////////
                        //////////////////////////////////
                        }

                    }
                    else if (PlayerPos.Y > yCoord) // annars gå uppåt.
                    {
                        if (yCoord + 1 == PlayerPos.Y && xCoord == PlayerPos.X) //kollar om spelaren är på rutan ovnaför enemy.
                        {
                            if (resetAttack == true)
                            {
                                skada = EnemyAttackCalc(playerdex);
                                if (skada != 0)
                                { soundBank.PlayCue("AttackSound"); }
                                else if (skada == 0)
                                { soundBank.PlayCue("AttackMiss"); }
                                player1.TotalHp = player1.TotalHp - skada;

                            }

                        }
                        //  kod för att gå ner.
                        else if (positionManager[yCoord + 1, xCoord, floor].type != "wall" &&
                            positionManager[yCoord + 1, xCoord, floor].type != "enemy" &&
                            positionManager[yCoord + 1, xCoord, floor].type != "upstairs" &&
                            positionManager[yCoord + 1, xCoord, floor].type != "downstairs" &&
                            positionManager[yCoord + 1, xCoord, floor].type != "chest" &&
                            positionManager[yCoord + 1, xCoord, floor].type != "door")
                        {
                            moveEnemyDown = true;
                            allowMove = false;
                            positionManager[yCoord + 1, xCoord, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                            positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                            yCoord++;
                        }
                        else if (positionManager[yCoord + 1, xCoord, floor].type == "wall" ||
                           positionManager[yCoord + 1, xCoord, floor].type == "enemy" ||
                           positionManager[yCoord + 1, xCoord, floor].type == "upstairs" ||
                           positionManager[yCoord + 1, xCoord, floor].type == "downstairs" ||
                           positionManager[yCoord + 1, xCoord, floor].type == "chest" ||
                           positionManager[yCoord + 1, xCoord, floor].type == "door")
                        {

                            if (PlayerPos.X > xCoord) // kollar om spelaren är till höger om enemy.
                            {

                                if (xCoord + 1 == PlayerPos.X && yCoord == PlayerPos.Y) //kollar om spelaren är på rutan till höger om enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }
                                }
                                // kod för att gå till höger.
                                else if (positionManager[yCoord, xCoord + 1, floor].type != "wall" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "enemy" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "upstairs" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "downstairs" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "chest" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "door")
                                {

                                    moveEnemyrRight = true;
                                    allowMove = false;
                                    positionManager[yCoord, xCoord + 1, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    xCoord++;
                                }

                            }
                            else if (PlayerPos.X < xCoord)  // Annars gå till vänster.
                            {
                                if (xCoord - 1 == PlayerPos.X && yCoord == PlayerPos.Y) //kollar om spelaren är på rutan till vänster om enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;
                                        //attackAnimationDone = true; //Gör så att fiendens attackanimation

                                    }
                                }
                                // Kod för att gå till vänster

                                else if (positionManager[yCoord, xCoord - 1, floor].type != "wall" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "enemy" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "upstairs" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "downstairs" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "chest" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "door")
                                {
                                    moveEnemyLeft = true;
                                    allowMove = false;
                                    positionManager[yCoord, xCoord - 1, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    xCoord--;
                                }
                            }

                        }

                    }
                }

            }

            //Kallar på metod för att röra sig, beroende på vilket håll den valt i ai-uträkningarna
            if (moveEnemyrRight == true)
            {
                MoveRight2();
            }
            if (moveEnemyLeft == true)
            {
                MoveLeft2();
            }
            if (moveEnemyUp == true)
            {
                MoveUp2();
            }
            if (moveEnemyDown == true)
            {
                MoveDown2();
            }

            base.Update(gameTime);
        }