Esempio n. 1
0
 private void Start()
 {
     HP = new ReactiveProperty <int>(initialHP);
     playerActionHandler = GetComponent <PlayerActionHandler>();
     playerActionHandler.ChangeCharacterObservable.Skip(1).Subscribe(x => ChangeCharacter(x)).AddTo(gameObject);
     StartCoroutine(DecreaseHPCoroutine());
 }
Esempio n. 2
0
        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.");
        }
    }
Esempio n. 4
0
    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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        // 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));
 }
Esempio n. 10
0
 /// <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));
 }
Esempio n. 11
0
 public ActionRuleItem(Predicate <PlayerAction> filter, PlayerActionHandler actionRule)
 {
     Filter     = filter;
     ActionRule = actionRule;
 }
Esempio n. 12
0
 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));
 }
Esempio n. 13
0
 // !!! Call this ( base.Start() ) from the child class !!!
 protected virtual void Start()
 {
     partManager   = GetComponent <PlayerPartManager>();
     actionHandler = GetComponent <PlayerActionHandler>();
 }