private void Start() { HP = new ReactiveProperty <int>(initialHP); playerActionHandler = GetComponent <PlayerActionHandler>(); playerActionHandler.ChangeCharacterObservable.Skip(1).Subscribe(x => ChangeCharacter(x)).AddTo(gameObject); StartCoroutine(DecreaseHPCoroutine()); }
public PlayerAction <TModelData> AddAction(string name, PlayerActionHandler <TModelData> handler, params object[] requirements) { var action = new PlayerAction <TModelData>(name, handler, requirements); _playerActions.Add(name, action); return(action); }
private void initComponents() { cachedTransform = transform; rb2d = GetComponent <Rigidbody2D>(); if (rb2d == null) { Debug.LogError("Error: No Rigidbody2D found on the player in CharacterMovement script! Please attach it."); } rb2d.sleepMode = RigidbodySleepMode2D.NeverSleep; anim = GetComponent <Animator>(); if (anim == null) { Debug.LogError("Error: No Animator found on the player in CharacterMovement script! Please attach it."); } actionHandler = GetComponent <PlayerActionHandler>(); if (actionHandler == null) { Debug.LogError("Error: No PlayerActionHandler found on the player in CharacterMovement script! Please attach it."); } playerCollider = GetComponent <Collider2D>(); if (playerCollider == null) { Debug.LogError("Error: No Collider2D found on the player in CharacterMovement script! Please attach it."); } }
public override void Initialize() { base.Initialize(); _playerID = 1; userActions = GameAccesPoint.Instance.managerSystem.inputManager._userActions; SaveManager.Instance.onSaveGame += SaveData; if (!LoadData()) { // TODO: Create new game data } statsHandler = gameObject.AddComponent <PlayerStatsHandler>(); movementHandler = gameObject.AddComponent <PlayerMovementHandler>(); animationHandler = gameObject.AddComponent <PlayerAnimationHandler>(); inventoryHandler = gameObject.AddComponent <PlayerInventoryHandler>(); actionHandler = gameObject.AddComponent <PlayerActionHandler>(); statsHandler.Initialize(this); movementHandler.Initialize(this); animationHandler.Initialize(this); inventoryHandler.Initialize(this); actionHandler.Initialize(this); statsHandler.onPlayerDeath += OnDeath; statsHandler.onPlayerStartDeath += OnStartDeath; isInit = true; }
// Start is called before the first frame update void Start() { animator = GetComponent <Animator>(); playerMover = GetComponent <PlayerMover>(); playerActionHandler = GetComponent <PlayerActionHandler>(); playerMover.isMove.Subscribe(x => isAnimatorMove = x).AddTo(gameObject); playerActionHandler.ChangeCharacterObservable.Subscribe(info => characterSkin = (int)info.characterType); GameManager.isGame.Subscribe(flag => isSleep = !flag); }
public void CreateSubstringOfActionInput_ShouldReturnSubstring() { const string fullCmdLineInput = "enter observatory"; const string firstWordKeyword = "enter"; const string expectedOutput = "observatory"; var result = PlayerActionHandler.CreateSubstringOfActionInput(fullCmdLineInput, firstWordKeyword); Assert.AreEqual(expectedOutput, result); }
public static bool HandlePlayerTradingItem(string fullInput, Character.Models.Character player, Room.Models.Room currentRoom, string inputWord, bool inputResolved) { if (currentRoom.RoomCharacters.Any()) { var substring = PlayerActionHandler.CreateSubstringOfActionInput(fullInput, inputWord); var character = RoomHandler.FindAnyMatchingCharacterByKeywords(substring.Trim(), currentRoom); var inventoryKeywords = GetAllInventoryItemKeywords(player); var foundItem = FindAnyMatchingItemsByKeywords(substring.Trim(), inventoryKeywords, player.CarriedItems, new List <WeaponItem> { player.WeaponItem }); if (foundItem != null && character != null) { if (GiveItemIsOk(player, character, foundItem)) { var tradedItem = HandleItemTrade(player, character, foundItem, currentRoom); if (!string.IsNullOrEmpty(tradedItem.ItemName)) { TypingAnimation.Animate("\nYou give the " + foundItem.InventoryItems.First().ItemName + " to " + character.Name + ".\n" + character.Name + " gives you the " + tradedItem.ItemName + ".\n", Color.Gold); } else { TypingAnimation.Animate("Your inventory is full... You cannot take the " + tradedItem.ItemName + ".\n", Color.DarkOliveGreen); } inputResolved = true; } else { Colorful.Console.WriteLine(); TypingAnimation.Animate(character.Name + " doesn't want that item.\n", Color.DarkOliveGreen); inputResolved = true; } } } else { Colorful.Console.WriteLine("\nThere is no one here to give that to...", Color.DarkOliveGreen); inputResolved = true; } return(inputResolved); }
// This is the logic for prompting the user for input continuously // until the user enters keywords to get to another room. // (Calls into a separate method to act on the input) public static Models.Room EnterRoom(Character.Models.Character player, Models.Room room, bool firstRoomEntered = false) { var redisplayRoomDesc = false; Models.Room nextRoom = null; Program.CharacterCreator.Player.CurrentRoomName = room.RoomName; while (nextRoom == null) { Console.Clear(); Console.ReplaceAllColorsWithDefaults(); // Print out the current Room description to the console (animate the first time) if (redisplayRoomDesc) { Console.WriteLine(room.RoomEntered ? room.GenericRoomDescription : room.InitialRoomDescription, Color.Bisque); if (room.RoomCharacters.Any()) { foreach (var character in room.RoomCharacters) { Console.WriteLine(); Console.WriteLine(character.OnMeetDescription + "\n", Color.Gold); } } if (player.PersistDisplayedItems) { PlayerActionHandler.PrintItemsToConsole(player, room); } else if (player.PersistDisplayedWeapons) { PlayerActionHandler.PrintWeaponsToConsole(player, room); } else if (player.PersistDisplayedExits) { PlayerActionHandler.PrintExitsToConsole(player, room); } else { Console.WriteLine(); } } else { TypingAnimation.Animate(room.RoomEntered ? room.GenericRoomDescription : room.InitialRoomDescription, Color.Bisque); Console.WriteLine(); if (room.RoomCharacters.Any()) { foreach (var character in room.RoomCharacters) { TypingAnimation.Animate(character.OnMeetDescription + "\n", Color.Gold); } } } Thread.Sleep(50); if (firstRoomEntered) { Console.Write("TUTORIAL: ", Color.MediumPurple); if (player.CarriedItems.Count == 0 || string.IsNullOrEmpty(player.WeaponItem.WeaponName)) { Console.WriteLine("Collect the item and weapon in this room\n", Color.Aquamarine); Console.WriteLineStyled(ConsoleStrings.ItemsHints, ConsoleStringStyleSheets.GameHelpStyleSheet(Color.AliceBlue)); Console.WriteLineStyled(ConsoleStrings.InfoHints, ConsoleStringStyleSheets.GameHelpStyleSheet(Color.AliceBlue)); } else { Console.WriteLine("Exit this room\n", Color.Red); Console.WriteLineStyled(ConsoleStrings.RoomHints, ConsoleStringStyleSheets.GameHelpStyleSheet(Color.AliceBlue)); } Console.WriteLine(ConsoleStrings.FirstRoomHelpHint, Color.MediumPurple); } if (player.ShowInputHelp && !firstRoomEntered) { Console.WriteLineStyled(ConsoleStrings.InputHelper, RoomStyleSheets.InputHelperStyleSheet()); } Console.WriteWithGradient(ConsoleStrings.PlayerInputPrompt, Color.SpringGreen, Color.NavajoWhite, 4); Console.WriteLine(); Console.Write("> "); var playerInput = Console.ReadLine(); nextRoom = PlayerActionHandler.HandlePlayerInput(playerInput.ToLower(), player, room); redisplayRoomDesc = true; } return(nextRoom); }
// Start is called before the first frame update void Start() { playerActionHandler = GetComponent <PlayerActionHandler>(); playerActionHandler.ChangeCharacterObservable.Subscribe(info => PlayChangeEffect(info.characterType)); GameManager.isGame.Subscribe(flag => PlayZZZ(!flag)); }
/// <summary> /// Adds an filter rule item that will been called, if the user triggers an filter /// InvokePlayerAction. /// </summary> /// <param name="filter">The predicate determining whether the rule is valued</param> /// <param name="rule">Rule being executed, when the filter is matching</param> public void AddRule(Predicate <PlayerAction> filter, PlayerActionHandler rule) { _rules.Add(new ActionRuleItem(filter, rule)); }
public ActionRuleItem(Predicate <PlayerAction> filter, PlayerActionHandler actionRule) { Filter = filter; ActionRule = actionRule; }
public PlayerAction(string name, PlayerActionHandler <TModelData> handler, params object[] reqs) : base(name, reqs.Where(r => r.GetType() == typeof(State <TModelData>)).Cast <State <TModelData> >()) { Requirements = reqs.Where(r => r.GetType() == typeof(Requirement <TModelData>)).Cast <Requirement <TModelData> >(); Handler = handler ?? throw new ArgumentNullException(nameof(handler)); }
// !!! Call this ( base.Start() ) from the child class !!! protected virtual void Start() { partManager = GetComponent <PlayerPartManager>(); actionHandler = GetComponent <PlayerActionHandler>(); }