private void HandleStateTransitionSideEffect(CleanerState oldState, CleanerState newState) { switch (oldState) { case CleanerState.Hit: attackDisabled = false; break; } switch (newState) { case CleanerState.Turning: HeadingRight = !HeadingRight; velocity.x = 0f; stateEndTime = Time.time + 0.5f; break; case CleanerState.Hit: attackDisabled = true; stateEndTime = Time.time + 0.5f; break; case CleanerState.Dead: attackDisabled = true; break; } }
public void CitizenOn(Citizen citizen) { this.citizen = citizen; this.citizen.cleanerOn = true; cleanerState = CleanerState.CitizenReady; }
void Start() { cleanerState = CleanerState.Idle; previousPos = transform.position; rightMoves = new List <Vector3>(); wrongMoves = new List <Vector3>(); localVacPos = new Vector3(0, 0, 0); rightMoves.Add(localVacPos); movesDone = new List <MoveDir>(); }
private void MoveDown() { if (Vector3.Distance(endPos, transform.position) > distanceThreshold) { transform.Translate(-Vector3.forward * Time.deltaTime * SPEED, Space.World); } else { cleanerState = CleanerState.Idle; } }
private void MoveLeft() { if (Vector3.Distance(endPos, transform.position) > distanceThreshold) { transform.Translate(-Vector3.right * Time.deltaTime * speed, Space.World); } else { cleanerState = CleanerState.Idle; } }
void Update() { switch (cleanerState) { // if Cleaner is active, Move! case CleanerState.Active: switch (movingDirection) { case (MoveDir.Up): MoveUp(); break; case (MoveDir.Down): MoveDown(); break; case (MoveDir.Left): MoveLeft(); break; case (MoveDir.Right): MoveRight(); break; } CheckCollision(); //Checks collision with walls or other objects break; //if cleaner is Idle : Clean if Cell is dirty, move if cell is clean case CleanerState.Idle: switch (cellState) { case CellState.Clean: movingDirection = Move(); cleanerState = CleanerState.Active; break; case CellState.Dirty: Clean(); cellState = CellState.Clean; break; } break; case CleanerState.Off: { // do nothing break; } } }
private void UpdateState() { CleanerState nextStateByEnvironment = GetNextStateByEnvironment(); nextState = (nextState > nextStateByEnvironment ? nextState : nextStateByEnvironment); if (state != nextState) { HandleStateTransitionSideEffect(state, nextState); state = nextState; } nextState = CleanerState.None; }
void FixedUpdate() { switch (cleanerState) { case CleanerState.Active: switch (movingDirection) { case (MoveDir.Up): MoveUp(); break; case (MoveDir.Down): MoveDown(); break; case (MoveDir.Left): MoveLeft(); break; case (MoveDir.Right): MoveRight(); break; } CheckCollision(); //Checks collision with walls or other objects break; case CleanerState.Idle: switch (cellState) { case CellState.Clean: movingDirection = Move(); cleanerState = CleanerState.Active; break; case CellState.Dirty: Clean(); cellState = CellState.Clean; break; } break; } }
public void SetState(CleanerState cleanerState) { this.cleanerState = cleanerState; if (cleanerState == CleanerState.Cleaning) { takeTime = 0; } else if (cleanerState == CleanerState.CleaningEnd) { citizen.cleanerOn = false; Tile tile = GameManager.Ins.tileController.tiles[0, 4]; //var tile = GameObject.FindObjectOfType<TileController>().tiles[0, 4]; //citizen.transform.position = tile.transform.position; //citizen.pos = tile.pos; citizen.gameObject.SetActive(true); citizen.ChangeColor(CitizenColor.White); citizen.ResetPos(tile); citizen.GoHome(); //citizen.StartFSM(); /* * if (citizen.Home != null) * { * citizen.SetCitizenHome(citizen.Home); * } * else * { * citizen.ChangePattern(); * } */ citizen = null; cleanerState = CleanerState.Idle; } }
void Start() { Debug.Log("Start"); cleanerState = CleanerState.Idle; previousPos = transform.position; }
void Awake() { cleanerState = CleanerState.Idle; previousPos = transform.position; }
public override void Die() { nextState = CleanerState.Dead; UpdateState(); base.Die(); }
public override void OnDamaged(IInteractable attacker, int damage, Vector2 knockback) { base.OnDamaged(attacker, damage, knockback); nextState = CleanerState.Hit; UpdateState(); }