/// <summary> /// Default constructor. /// </summary> public ScareCrow() { cornMesh = new XMesh("data/corn.x"); cornfields.Add(new CornField(cornMesh, new Vector3(30, 0, 30))); cornfields.Add(new CornField(cornMesh, new Vector3(-30, 0, 30))); cornfields.Add(new CornField(cornMesh, new Vector3(-30, 0, -30))); birds = new Birds(100); birds.Random = false; birds.SetRandomTarget(); arrow = new GameObject(); arrow.Mesh = new XMesh("data\\arrow.x"); startTime = 0; }
public void OnFrameMove(Microsoft.DirectX.Direct3D.Device device, double totalTime, float elapsedTime) { if (startTime != 0) { if (cropsLeft > 0) { minutes = (int)Math.Floor((Program.Instance.CurrentTime - startTime) / 60); seconds = (int)Math.Floor((Program.Instance.CurrentTime - startTime) - minutes * 60); } if (cropsLeft < 0) { Program.Instance.CenterHud.ShowGameText(string.Format("Game over!\nYou defended the crops for {0} minutes and {1} seconds", minutes, seconds), 1000); } else { Program.Instance.CenterHud.ShowGameText(string.Format("Your time : {0}:{1}\nCrops remaining : {2}%", minutes, seconds.ToString("00"), (int)(Math.Floor(cropsLeft))), 1000); } } else { startTime = Program.Instance.CurrentTime; } if (totalTime > lastUpdate + 5) { if ((birds.TargetReached) || (currentTargetField == -1)) { if ((birds.TargetReached) && (currentTargetField != -1)) { if (!justArrived) { justArrived = true; } else { Retarget(); } } else { Retarget(); } } lastUpdate = totalTime; } if (birds.TargetReached) { if (currentTargetField != -1) { bool temp = birds.TargetReached; cropsLeft -= (double)(2 * elapsedTime); arrow.Position = new Vector3(cornfields[currentTargetField].Position.X, 3f, cornfields[currentTargetField].Position.Z); arrow.RotateYAngle = (float)totalTime; arrow.OnFrameMove(device, totalTime, elapsedTime); } } foreach (CornField field in cornfields) { field.OnFrameMove(device, totalTime, elapsedTime); } birds.OnFrameMove(device, totalTime, elapsedTime); if (birds.Scared) { currentTargetField = -1; birds.SetRandomTarget(); } }