void Start() { rm = GetComponent <RoyMove>(); anim = GetComponent <Animator>(); pfsg = 0; pushll = GetComponent <PushPull>(); canInput = true; }
private void LoopThread() { while (true) { if (!running) { return; } DateTime now = DateTime.Now; if ((now - lastLoop).Ticks >= MoveSpeed * 10000) { if (CreateRandomDust) { this.DynamicDust(); } HamsterMove hmove = HamsterMove.None; if (haveHamster) { if (HamIsFree) { ham.LookAround(this.WhatHamSee()); hmove = ham.NextMove(); } else { if (rand.Next(100) < 10) { this.CreateHamster(); } } } roy.LookAround(this.WhatRoySee(), this.DoorsRoySee()); RoyMove move = roy.NextMove(); this.Update(move, hmove); clean = 500; for (int i = 0; i < dust.GetLength(0); i++) { for (int j = 0; j < dust.GetLength(1); j++) { clean -= dust[i, j]; } } if (clean <= -500) { running = false; } this.DrawAll(); lastLoop = now; } } }
private void Update(RoyMove move, HamsterMove hmove) { #region HamMove int hamDx = 0, hamDy = 0; #region switch switch (hmove) { case HamsterMove.Up: hamDy = -1; break; case HamsterMove.Down: hamDy = 1; break; case HamsterMove.Left: hamDx = -1; break; case HamsterMove.Right: hamDx = 1; break; case HamsterMove.UpLeft: hamDy = -1; hamDx = -1; break; case HamsterMove.UpRight: hamDy = -1; hamDx = 1; break; case HamsterMove.DownLeft: hamDy = 1; hamDx = -1; break; case HamsterMove.DownRight: hamDy = 1; hamDx = 1; break; case HamsterMove.Shit: hamDx = 0; hamDy = 0; dust[ham.Row, ham.Col] = 50; break; } #endregion if (ham.Row + hamDx < 0 || ham.Row + hamDx >= house.GetLength(0) || ham.Col + hamDy < 0 || ham.Col + hamDy >= house.GetLength(1) || house[ham.Row + hamDx, ham.Col + hamDy] < 0) { hamDx = 0; hamDy = 0; } else if (house[ham.Row + hamDx, ham.Col + hamDy] == 0) { int newdx = hamDx * 2; if (ham.Row + newdx < 0 || ham.Row + newdx >= house.GetLength(0) || ham.Col + hamDy < 0 || ham.Col + hamDy >= house.GetLength(1) || house[ham.Row + newdx, ham.Col + hamDy] <= 0) { int newdy = hamDy * 2; if (ham.Row + hamDx < 0 || ham.Row + hamDx >= house.GetLength(0) || ham.Col + newdy < 0 || ham.Col + newdy >= house.GetLength(1) || house[ham.Row + hamDx, ham.Col + newdy] <= 0) { hamDx = 0; hamDy = 0; } else { hamDy = newdy; } } else { hamDx = newdx; } } ham.Row += hamDx; ham.Col += hamDy; #endregion #region RoyMove int dx = 0, dy = 0; #region switch switch (move) { case RoyMove.Up: dy = -1; break; case RoyMove.Down: dy = 1; break; case RoyMove.Left: dx = -1; break; case RoyMove.Right: dx = 1; break; case RoyMove.UpLeft: dy = -1; dx = -1; break; case RoyMove.UpRight: dy = -1; dx = 1; break; case RoyMove.DownLeft: dy = 1; dx = -1; break; case RoyMove.DownRight: dy = 1; dx = 1; break; } #endregion if (roy.Row + dx < 0 || roy.Row + dx >= house.GetLength(0) || roy.Col + dy < 0 || roy.Col + dy >= house.GetLength(1) || house[roy.Row + dx, roy.Col + dy] < 0) { dx = 0; dy = 0; } else if (house[roy.Row + dx, roy.Col + dy] == 0) { int newdx = dx * 2; if (roy.Row + newdx < 0 || roy.Row + newdx >= house.GetLength(0) || roy.Col + dy < 0 || roy.Col + dy >= house.GetLength(1) || house[roy.Row + newdx, roy.Col + dy] <= 0) { int newdy = dy * 2; if (roy.Row + dx < 0 || roy.Row + dx >= house.GetLength(0) || roy.Col + newdy < 0 || roy.Col + newdy >= house.GetLength(1) || house[roy.Row + dx, roy.Col + newdy] <= 0) { dx = 0; dy = 0; } else { dy = newdy; } } else { dx = newdx; } } roy.Row += dx; roy.Col += dy; if (dx != 0 || dy != 0) { RoyMoveSteps++; } dust[roy.Row, roy.Col] = 0; if (roy.Row == ham.Row && roy.Col == ham.Col) { HamIsFree = false; } #endregion }