Example #1
0
        public static PlayerSense GetRandomWeightedPlayerSense(IList <PlayerSense> playerSenseList)
        {
            float totalWeight = 0.0f;

            foreach (PlayerSense sense in playerSenseList)
            {
                totalWeight += sense.Potency;
            }

            var randomNumber = rand.NextDouble() * totalWeight;

            PlayerSense result = null;

            foreach (PlayerSense sense in playerSenseList)
            {
                if (randomNumber < sense.Potency)
                {
                    result = sense;
                    break;
                }

                randomNumber = randomNumber - sense.Potency;
            }
            return(result);
        }
Example #2
0
    private void OnSceneGUI()
    {
        PlayerSense visionComp = (PlayerSense)target;

        Handles.color = Color.yellow;
        Handles.DrawWireArc(visionComp.transform.position, Vector3.up, Vector3.forward, 360, visionComp.Radius);

        Vector3 viewAngleA = visionComp.DirectionFromAngle(-visionComp.ViewAngle / 2, false);
        Vector3 viewAngleB = visionComp.DirectionFromAngle(visionComp.ViewAngle / 2, false);

        Handles.DrawLine(visionComp.transform.position, visionComp.transform.position + viewAngleA * visionComp.Radius);
        Handles.DrawLine(visionComp.transform.position, visionComp.transform.position + viewAngleB * visionComp.Radius);
    }
Example #3
0
    public void Start()
    {
        _movement = GetComponent<SidescrollingMovement>();
        _sprite = GetComponentInChildren<SpriteSystem>();
        _sense = GetComponentInChildren<PlayerSense>();

        List<State> machineStates = new List<State>{
            new State{Condition = () => true, Behavior = Patrol},
            new State{Condition = SensePlayer, Behavior = FightOrFlight},
            new State{Condition = IsHit, Behavior = BeHit}
        };

        _states = new StateMachine(machineStates);
    }
Example #4
0
 public RPGItem(IRPGItem source)
 {
     ItemName      = source.GetName();
     BaseDmg       = source.GetBaseDmg();
     BaseDef       = source.GetBaseDef();
     UsesRemaining = source.GetDurability();
     ColorSns      = source.GetPlayerSense(PlayerSenseType.COLOR);
     HeatEmission  = source.GetTemp();
     Enchantment   = source.GetEnchantment();
     MagicSns      = source.GetPlayerSense(PlayerSenseType.MAGIC);
     NoiseSns      = source.GetPlayerSense(PlayerSenseType.NOISE);
     SmellSns      = source.GetPlayerSense(PlayerSenseType.SMELL);
     Depth         = source.GetDepth();
     Rarity        = source.GetRarity();
 }
Example #5
0
        public PlayerSense GetRoomSense(PlayerSenseType roomSense)
        {
            IList <PlayerSense> senses = new List <PlayerSense>();

            foreach (IRPGObject obj in objects)
            {
                PlayerSense sense = obj.GetPlayerSense(roomSense);
                if (sense != null)
                {
                    senses.Add(sense);
                }
            }

            PlayerSense randomSense = RPGUtils.GetRandomWeightedPlayerSense(senses);

            if (randomSense != null)
            {
                return(new PlayerSense(randomSense.Description, randomSense.Potency));
            }
            else
            {
                return(new PlayerSense());
            }
        }
Example #6
0
    // Use this for initialization
    void Start()
    {
        _originalPosition = transform.position;

        _movement = GetComponent<SidescrollingMovement>();
        _animation = GetComponentInChildren<SpriteSystem>();
        _hitboxes = GetComponentInChildren<HitboxController>();
        _sense = GetComponentInChildren<PlayerSense>();

        _states = new StateMachine(new List<State> {
            new State {Condition = DefaultCondition, Behavior = GuardOriginalPosition},
            new State {Condition = SeesPlayer, Behavior = MoveTowardPlayer},
            new State {Condition = InRange, Behavior = FenceWithPlayer},
            new State {Condition = PlayerIsJumping, Behavior = MoveTowardPlayer},
            new State {Condition = IsHit, Behavior = BeHit}
        });
    }
Example #7
0
    // Use this for initialization
    protected void Start()
    {
        _sense = GetComponentInChildren<PlayerSense>();
        _sprite = GetComponentInChildren<SpriteSystem>();
        _projector = GetComponentInChildren<ProjectileProjector>();
        _webThread = GetComponent<LineRenderer>();

        _controller = GetComponent<CharacterController>();

        _behaviorFSM = new StateMachine(new List<State>	{
            new State { Condition = DefaultCondition, Behavior = DoNothing},
            new State { Condition = SensesPlayer,     Behavior = MoveTowardPlayer },
            new State { Condition = IsOverPlayer,     Behavior = Attack },
            new State { Condition = AttackingTarget,  Behavior = VerticalGrappling }
        });
    }
Example #8
0
 public void Start()
 {
     _sense  = GetComponentInChildren <PlayerSense>();
     _sprite = GetComponentInChildren <SpriteSystem>();
 }