/// <summary>
        /// Функция, которая возвращает истину, если игрок прыгнул под монстра
        /// Используется для вызова GameOver
        /// </summary>
        /// <param name="keyFlag"></param>
        /// <param name="doodlerY"></param>
        /// <param name="doodlerX"></param>
        /// <param name="doodlerWidth"></param>
        /// <param name="k"></param>
        /// <param name="map"></param>
        /// <returns></returns>
        public static bool MechanicJumpInMonster(Doodler doodle, Map.MonsterInMap kMonsterInMap, Map.Map map)
        {
            if ((doodle != null) && (kMonsterInMap != null) && (map != null))
            {
                if (doodle.KeyRightOrLeft == true)
                {
                    if (IntersectionRectangles(kMonsterInMap.CoordX + 20.0f, kMonsterInMap.CoordY + 20.0f, kMonsterInMap.Width - 20.0f, kMonsterInMap.Height - 20.0f, doodle.DoodlerX, doodle.DoodlerY, doodle.DoodlerWidth - 25, doodle.DoodlerWidth, map.MoveMap))
                    {
                        return(true);
                    }
                }

                if (doodle.KeyRightOrLeft == false)
                {
                    if (IntersectionRectangles(kMonsterInMap.CoordX + 20.0f, kMonsterInMap.CoordY + 20.0f, kMonsterInMap.Width - 20.0f, kMonsterInMap.Height - 20.0f, doodle.DoodlerX + 25, doodle.DoodlerY, doodle.DoodlerWidth - 25, doodle.DoodlerWidth, map.MoveMap))
                    {
                        return(true);
                    }
                }

                return(false);
            }
            else
            {
                return(false);
            }
        }
Exemple #2
0
        public static void DoodlerInDurka(Doodler.Doodler doodle, Map.MonsterInMap durkaXY)
        {
            if ((doodle != null) && (durkaXY != null))
            {
                if ((doodle.DoodlerX >= durkaXY.CoordX) && (doodle.DoodlerX <= ((durkaXY.CoordX + durkaXY.Width) / 2.0f)))
                {
                    doodle.DoodlerX++;
                    doodle.DoodlerY++;
                }

                else
                {
                    doodle.DoodlerX--;
                    doodle.DoodlerY++;
                    doodle.DoodlerWidth--;
                }

                Gl.glEnable(Gl.GL_TEXTURE_2D);
                Gl.glTranslatef(doodle.DoodlerX, doodle.DoodlerY, 0.0f);
                Gl.glBegin(Gl.GL_QUADS);
                Gl.glTexCoord2f(0.0f, 0.0f);
                Gl.glVertex2f(0.0f, 0.0f);
                Gl.glTexCoord2f(1.0f, 0.0f);
                Gl.glVertex2f(doodle.DoodlerWidth, 0.0f);
                Gl.glTexCoord2f(1.0f, 1.0f);
                Gl.glVertex2f(doodle.DoodlerWidth, doodle.DoodlerWidth);
                Gl.glTexCoord2f(0.0f, 1.0f);
                Gl.glVertex2f(0.0f, doodle.DoodlerWidth);

                Gl.glEnd();
                Gl.glDisable(Gl.GL_TEXTURE_2D);
                Gl.glLoadIdentity();
            }
        }
        /// <summary>
        /// Фукнция, которая проверяет прыгает ли игрок на монстра
        /// </summary>
        /// <param name="keyFlag"></param>
        /// <param name="doodlerY"></param>
        /// <param name="doodlerX"></param>
        /// <param name="doodlerWidth"></param>
        /// <param name="i"></param>
        /// <param name="gravity"></param>
        /// <param name="JUMP_H"></param>
        /// <param name="accelY"></param>
        /// <param name="indexDeleteMonster"></param>
        /// <param name="k"></param>
        /// <param name="map"></param>
        /// <param name="jumpFlag"></param>
        /// <param name="accelX"></param>
        public static void MechanicJumpOn(Doodler doodle, ref int indexDeleteMonster, Map.MonsterInMap kMosterInMap, Map.Map map)
        {
            if ((doodle != null) && (kMosterInMap != null) && (map != null))
            {
                if (doodle.KeyRightOrLeft == true)
                {
                    if (((doodle.DoodlerY >= kMosterInMap.CoordY - map.MoveMap) && (doodle.DoodlerY <= kMosterInMap.CoordY + kMosterInMap.Height - map.MoveMap) &&
                         (doodle.DoodlerX >= kMosterInMap.CoordX) && (doodle.DoodlerX <= kMosterInMap.CoordX + kMosterInMap.Width)) || ((doodle.DoodlerY >= kMosterInMap.CoordY - map.MoveMap) &&
                                                                                                                                        (doodle.DoodlerY <= kMosterInMap.CoordY + kMosterInMap.Height - map.MoveMap) && (doodle.DoodlerX + doodle.DoodlerWidth - 25 >= kMosterInMap.CoordX) &&
                                                                                                                                        (doodle.DoodlerX + doodle.DoodlerWidth - 25 <= kMosterInMap.CoordX + kMosterInMap.Width)) || ((doodle.DoodlerY >= kMosterInMap.CoordY - map.MoveMap) &&
                                                                                                                                                                                                                                      (doodle.DoodlerY <= kMosterInMap.CoordY + kMosterInMap.Height - map.MoveMap) && (doodle.DoodlerX + (doodle.DoodlerWidth / 2.0) >= kMosterInMap.CoordX) &&
                                                                                                                                                                                                                                      (doodle.DoodlerX + (doodle.DoodlerWidth / 2.0) <= kMosterInMap.CoordX + kMosterInMap.Width)))
                    {
                        if (kMosterInMap.Type == 4)
                        {
                            MainForm.DurkaFlag = true;
                            MainForm.DurkaXY   = kMosterInMap;
                        }
                        else
                        {
                            doodle.JumpFlag           = false;
                            doodle.AccelX             = 0.0f;
                            doodle.ICurrentJumpHeight = 0.0f;
                            doodle.Gravity            = 0.0f;
                            doodle.JUMP_H             = 500.0f;
                            doodle.AccelY             = 8.0f;
                            indexDeleteMonster        = map.Monsters.IndexOf(kMosterInMap);
                            if (MainForm.Sounds.OffSound == false)
                            {
                                MainForm.Sounds.ESound9.Play();
                            }
                        }
                    }
                }

                if (doodle.KeyRightOrLeft == false)
                {
                    if (((doodle.DoodlerY >= kMosterInMap.CoordY - map.MoveMap) && (doodle.DoodlerY <= kMosterInMap.CoordY + kMosterInMap.Height - map.MoveMap) &&
                         (doodle.DoodlerX + 25 >= kMosterInMap.CoordX) && (doodle.DoodlerX + 25 <= kMosterInMap.CoordX + kMosterInMap.Width)) || ((doodle.DoodlerY >= kMosterInMap.CoordY - map.MoveMap) &&
                                                                                                                                                  (doodle.DoodlerY <= kMosterInMap.CoordY + kMosterInMap.Height - map.MoveMap) && (doodle.DoodlerX + doodle.DoodlerWidth - 25 >= kMosterInMap.CoordX) &&
                                                                                                                                                  (doodle.DoodlerX + doodle.DoodlerWidth - 25 <= kMosterInMap.CoordX + kMosterInMap.Width)) || ((doodle.DoodlerY >= kMosterInMap.CoordY - map.MoveMap) &&
                                                                                                                                                                                                                                                (doodle.DoodlerY <= kMosterInMap.CoordY + kMosterInMap.Height - map.MoveMap) && (doodle.DoodlerX + (doodle.DoodlerWidth / 2.0) >= kMosterInMap.CoordX) &&
                                                                                                                                                                                                                                                (doodle.DoodlerX + (doodle.DoodlerWidth / 2.0) <= kMosterInMap.CoordX + kMosterInMap.Width)))
                    {
                        if (kMosterInMap.Type == 4)
                        {
                            MainForm.DurkaFlag = true;
                            MainForm.DurkaXY   = kMosterInMap;
                        }
                        else
                        {
                            doodle.JumpFlag           = false;
                            doodle.AccelX             = 0.0f;
                            doodle.ICurrentJumpHeight = 0.0f;
                            doodle.Gravity            = 0.0f;
                            doodle.JUMP_H             = 500.0f;
                            doodle.AccelY             = 8.0f;
                            indexDeleteMonster        = map.Monsters.IndexOf(kMosterInMap);
                            if (MainForm.Sounds.OffSound == false)
                            {
                                MainForm.Sounds.ESound9.Play();
                            }
                        }
                    }
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// Method draw Monster
        /// </summary>
        /// <param name="k"></param>
        /// <param name="moveMap"></param>
        public static void Monster(Map.MonsterInMap kMonsterInMap, float moveMap)
        {
            if (kMonsterInMap != null)
            {
                Gl.glLoadIdentity();
                Gl.glTranslatef(kMonsterInMap.CoordX, kMonsterInMap.CoordY - moveMap, 0.0f);
                Gl.glEnable(Gl.GL_TEXTURE_2D);
                if (kMonsterInMap.Type == 1)
                {
                    kMonsterInMap.PEvent++;
                    if (kMonsterInMap.PEvent > 50)
                    {
                        Gl.glBindTexture(Gl.GL_TEXTURE_2D, MainForm.MGlTextureObject[16]);
                    }
                    else
                    {
                        Gl.glBindTexture(Gl.GL_TEXTURE_2D, MainForm.MGlTextureObject[9]);
                    }
                    if (kMonsterInMap.PEvent == 90)
                    {
                        kMonsterInMap.PEvent = 0;
                    }
                }
                if (kMonsterInMap.Type == 2)
                {
                    Gl.glBindTexture(Gl.GL_TEXTURE_2D, MainForm.MGlTextureObject[14]);
                }
                if (kMonsterInMap.Type == 3)
                {
                    if (kMonsterInMap.LeftFlag == true)
                    {
                        kMonsterInMap.PEvent++;
                        if (kMonsterInMap.PEvent < 101)
                        {
                            kMonsterInMap.CoordX++;
                        }
                        if (kMonsterInMap.PEvent % 5 == 0)
                        {
                            kMonsterInMap.CoordY -= 1.0f;
                        }
                        if (kMonsterInMap.PEvent == 100)
                        {
                            kMonsterInMap.LeftFlag = false;
                            kMonsterInMap.PEvent   = 0;
                        }
                        Gl.glBindTexture(Gl.GL_TEXTURE_2D, MainForm.MGlTextureObject[18]);
                    }
                    if (kMonsterInMap.LeftFlag == false)
                    {
                        kMonsterInMap.PEvent++;
                        if (kMonsterInMap.PEvent < 101)
                        {
                            kMonsterInMap.CoordX--;
                        }
                        if (kMonsterInMap.PEvent % 5 == 0)
                        {
                            kMonsterInMap.CoordY += 1.0f;
                        }
                        if (kMonsterInMap.PEvent == 100)
                        {
                            kMonsterInMap.LeftFlag = true;
                            kMonsterInMap.PEvent   = 0;
                        }
                        Gl.glBindTexture(Gl.GL_TEXTURE_2D, MainForm.MGlTextureObject[17]);
                    }
                }
                if (kMonsterInMap.Type == 4)
                {
                    Gl.glBindTexture(Gl.GL_TEXTURE_2D, MainForm.MGlTextureObject[22]);
                }

                Gl.glBegin(Gl.GL_QUADS);
                Gl.glTexCoord2f(0.0f, 0.0f);
                Gl.glVertex2i(0, 0);
                Gl.glTexCoord2f(1.0f, 0.0f);
                Gl.glVertex2i(kMonsterInMap.Width, 0);
                Gl.glTexCoord2f(1.0f, 1.0f);
                Gl.glVertex2i(kMonsterInMap.Width, kMonsterInMap.Height);
                Gl.glTexCoord2f(0.0f, 1.0f);
                Gl.glVertex2i(0, kMonsterInMap.Height);
                Gl.glEnd();
                Gl.glDisable(Gl.GL_TEXTURE_2D);
                Gl.glLoadIdentity();
            }
        }