/// <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); } }
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(); } } } } } }
/// <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(); } }