Ejemplo n.º 1
0
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
Ejemplo n.º 2
0
 public void NPCFactoryCreate()
 {
     ItemsFactory wfactory        = new ItemsFactory();
     NPCFactory   factory         = new NPCFactory(wfactory);
     var          creationProfile = new EntityProfile(10, EntityOccupation.Fisherman, EntityRace.None, 10);
     IEntity      entity          = factory.Create(creationProfile);
 }
Ejemplo n.º 3
0
 private void Awake()
 {
     _factory       = GameObject.Find("Factory");
     _playerFactory = _factory.GetComponent <PlayerFactory>();
     _npcFactory    = _factory.GetComponent <NPCFactory>();
     _itemFactory   = _factory.GetComponent <ItemFactory>();
     _bodyFactory   = _factory.GetComponent <BodyFactory>();
 }
Ejemplo n.º 4
0
    public void Init()
    {
        NPCActionChoiceFactory NPCChoiceFactory = new NPCActionChoiceFactory();
        NPCActionFactory       NPCActionFactory = new NPCActionFactory(NPCChoiceFactory);
        NPCFactory             NPCFactory       = new NPCFactory(NPCActionFactory);

        m_npcList = NPCFactory.GetInitailizedNPCList();
    }
Ejemplo n.º 5
0
        /// <summary>
        /// Test original NPC generation.
        /// NB: Will use about 0,1 MB per NPC.
        /// </summary>
        private void TestOriginal()
        {
            INPCFactory npcFac  = new NPCFactory();
            List <INPC> allNPCs = CreateNPCs(npcFac);

            AnimateAll(allNPCs);
            DoneWithTest("(original)");
        }
Ejemplo n.º 6
0
        public IActionResult GetName(int npcId)
        {
            NPC npcData = NPCFactory.GetNPC(npcId);

            return(Json(new
            {
                Name = npcData.Name,
                Id = npcData.Id
            }));
        }
Ejemplo n.º 7
0
        public IActionResult GetNPC(int npcId)
        {
            NPC npcInfo = NPCFactory.GetNPC(npcId);

            npcInfo.RelatedQuestsInfo = npcInfo.RelatedQuests?.Select(c => QuestFactory.GetQuest(c)).Where(c => c != null).Select(c => new QuestName()
            {
                id = c.Id, name = c.Name
            }).ToArray();
            return(Json(npcInfo));
        }
Ejemplo n.º 8
0
    private void Awake()
    {
        enemyFactory    = NPCFactory.GetFactory(NPCType.ENEMY);
        friendlyFactory = NPCFactory.GetFactory(NPCType.FRIEND);

        flyingEnemy  = enemyFactory.GetEnemy(EnemyType.FLYING);
        walkingEnemy = enemyFactory.GetEnemy(EnemyType.WALKING);

        flyingFriend  = friendlyFactory.GetFriendly(FriendType.FLYING);
        walkingFriend = friendlyFactory.GetFriendly(FriendType.WALKING);
    }
Ejemplo n.º 9
0
 void Awake()
 {
     if (Instance == null)
     {
         Instance = this;
     }
     else
     {
         Destroy(Instance);
     }
 }
    // Start is called before the first frame update
    void Start()
    {
        gameController      = GameObject.Find("GameController").GetComponent <GameController>();
        npcFactoryCreator   = new ShopKeeperFactory();
        creatorIsShopKeeper = true;

        canSpawn1 = true;
        canSpawn2 = true;
        canSpawn3 = true;
        canSpawn4 = true;

        spawnIndex = 0;
    }
Ejemplo n.º 11
0
        // The idea behind the abstract factory pattern is to delegate the creation of a family of objects
        // to another class so that the client does not need to deal with that responsibility.

        // A family of objects can be books and publishers or motorbikes and scooters

        //Client
        //This is a class which use AbstractFactory and AbstractProduct interfaces to create a family of related objects.

        //AbstractFactory
        //This is an interface which is used to create abstract product

        //ConcreteFactory
        //This is a class which implements the AbstractFactory interface to create concrete products.

        //AbstractProduct
        //This is an interface which declares a type of product.

        //ConcreteProduct
        //This is a class which implements the AbstractProduct interface to create product.

        // First we need to create the abstract product and concrete products
        // Then we create the abstract factory and concrete factories.
        // And finally implement everything into the client.

        static void Main(string[] args)
        {
            // Not always necessary to create a producer/client.
            #region Game Example

            // Alternative to this would be to create a factory for flying and walking.
            NPCFactory enemyFactory = NPCFactoryProducer.Producer("EmenyFactory");
            var        flyingEnemy  = enemyFactory.GetEnemy(EnemyTypes.Flying);

            NPCFactory friendlyFactory = NPCFactoryProducer.Producer("FriendlyFactory");
            var        walkingFriendly = friendlyFactory.GetFriendly(FriendlyTypes.Walking);

            flyingEnemy.Attack();
            walkingFriendly.Move();


            #endregion

            #region Car Example

            // Class can be configured in the config file or property settings.

            var fordFactory = CarProducer.ProduceFactory();
            var fordSedan   = fordFactory.CreateSedan();
            var fordCoupe   = fordFactory.CreateCoupe();

            #endregion

            #region Auto

            IAutoFactory fac = AutoFactory.ProduceFactory();

            var car = fac.CreateSportsCar();
            car.TurnOn();
            car.TurnOff();

            car = fac.CreateLuxuryCar();
            car.TurnOn();
            car.TurnOff();

            car = fac.CreateEconomyCar();
            car.TurnOn();
            car.TurnOff();

            #endregion

            Console.ReadKey();
        }
Ejemplo n.º 12
0
 //Decides if it should spawn or not and how many npcs
 void DoRandomSpawn()
 {
     //50% chance
     if (Random.value > 0.5f)
     {
         var amountToSpawn = Random.Range(1, 4);
         for (int i = 0; i < amountToSpawn; i++)
         {
             switch (npcToSpawn)
             {
             case NPC.xeno:
                 NPCFactory.SpawnXenomorph(transform.position, transform.parent);
                 break;
             }
         }
     }
 }
Ejemplo n.º 13
0
        public World(IAccountRepository accountRepository, INPCRepository npcRepository, IPlayerRepository playerRepository, IServerStatsRepository statsRepository, IAbilityRepository abilityRepository)
        {
            m_accountRepository = accountRepository;
            m_npcRepository     = npcRepository;
            m_playerRepository  = playerRepository;
            m_statsRepository   = statsRepository;
            m_abilityRepository = abilityRepository;

            m_npcFactory = new NPCFactory(npcRepository);

            m_zones = BuildZones(m_npcRepository);

            m_cpuCounter.CategoryName = "Processor";
            m_cpuCounter.CounterName  = "% Processor Time";
            m_cpuCounter.InstanceName = "_Total";

            m_fiber.Enqueue(Update, false);
            //m_fiber.Enqueue(StatsUpdate, false);
        }
Ejemplo n.º 14
0
        public IActionResult GetQuest(int questId)
        {
            var quest = QuestFactory.GetQuest(questId);

            if (quest.RequirementToStart.NPCId.HasValue)
            {
                quest.RequirementToStart.NPCInfo = NPCFactory.GetNPC(quest.RequirementToStart.NPCId.Value);
            }
            if (quest.RequirementToComplete.NPCId.HasValue)
            {
                quest.RequirementToComplete.NPCInfo = NPCFactory.GetNPC(quest.RequirementToComplete.NPCId.Value);
            }

            if (quest == null)
            {
                return(NotFound());
            }
            return(Json(quest));
        }
Ejemplo n.º 15
0
        void Awake()
        {
            if (!(prefabs && prefabs.IsValid))
            {
                Destroy(gameObject);
                return;
            }

            cam = Camera.main.GetComponent <ThirdPersonCamera>();

            if (!(cam && loseScreen && winScreen))
            {
                Destroy(gameObject);
                return;
            }

            Grid       = GetComponent <AI.AStar.Grid>();
            pathFinder = GetComponent <PathFinder>();

            PathRequestManager = new PathRequestManager(pathFinder);
            npcFactory         = new NPCFactory(prefabs.NPC, PathRequestManager);
            BuildingManager    = new BuildingManager(new BuildingFactory(prefabs.Buildings, prefabs.PressurePlate, Grid));
            waypointFactory    = new PatrolWaypointFactory(prefabs.PatrolWaypoint, Grid);

            for (int i = 0; i < gameStages.Length; ++i)
            {
                if (gameStages[i] == null)
                {
                    continue;
                }

                gameStages[i].Game = this;
                stages.Add(gameStages[i].StageName, gameStages[i]);
            }

            if (initialStage != null)
            {
                CurrentStage = initialStage;
            }
        }
Ejemplo n.º 16
0
        public Zone(int zoneID, INPCRepository npcRepository, NPCFactory npcFactory, MapData mapData)
        {
            ID = zoneID;

            m_npcRepository = npcRepository;
            m_npcFactory    = npcFactory;

            m_mapData = mapData;

            m_npcSpawns = LoadZoneNPCSpawns();
            m_npcArray  = new NPCInstance[m_npcSpawns.Count];
            for (int i = 0; i < m_npcSpawns.Count; i++)
            {
                NPCInstance npcInstance = npcFactory.CreateNPC(m_fiber, m_npcSpawns[i], mapData);
                m_npcs.Add(npcInstance.ID, npcInstance);
                m_npcArray[i] = npcInstance;
            }

            m_playerArray = Enumerable.Empty <PlayerPeer>().ToArray();

            m_fiber.Enqueue(Update);
        }
Ejemplo n.º 17
0
        public IActionResult GetFrame(int npcId)
        {
            NPC npcData = NPCFactory.GetNPC(npcId);

            if (npcData.IsComponentNPC ?? false)
            {
                return(File(AvatarFactory.Render(new Character()
                {
                    AnimationName = "stand1",
                    ItemEntries = npcData.ComponentIds
                                  .Concat(new int[] { npcData.ComponentSkin ?? 2000, (npcData.ComponentSkin ?? 2000) + 10000 })
                                  .Select(c => new AvatarItemEntry()
                    {
                        ItemId = c, Region = Region, Version = Version
                    })
                                  .ToArray()
                }).ImageToByte(Request), "image/png"));
            }
            if (!npcData.Framebooks.ContainsKey("stand"))
            {
                return(NotFound());
            }

            FrameBook standing = npcData.GetFrameBook("stand").First();

            if (standing == null)
            {
                return(NotFound());
            }

            Frame firstFrame = standing.frames.First();

            if (firstFrame == null || firstFrame.Image == null)
            {
                return(NotFound());
            }

            return(File(firstFrame.Image.ImageToByte(Request), "image/png"));
        }
Ejemplo n.º 18
0
    void Awake()
    {
        PlatformType = PlatformType.Local;
#if (UNITY_ANDROID && !UNITY_EDITOR)
#if ANDROID_OPPO
        PlatformType = PlatformType.OPPO;
#elif ANDROID_UC
        PlatformType = PlatformType.UC;
#elif ANDROID_XIAOMI
        PlatformType = PlatformType.MI;
#elif ANDROID_TENCENT
        PlatformType = PlatformType.Tencent;
#endif
#endif
        TraceUtil.Log(PlatformType);
        Application.targetFrameRate = 60;

        m_instance = this;
        this.m_timedSendPackage = GetComponent <TimedSendPackage>();
        this.m_playerFactory    = GetComponent <PlayerFactory>();
        //this.m_monsterFactory = GetComponent<MonsterFactory>();
        this.m_damageFactory     = GetComponent <DamageFactory>();
        this.m_trapFactory       = GetComponent <TrapFactory>();
        this.m_portalFactory     = GetComponent <PortalFactory>();
        this.m_npcFactory        = GetComponent <NPCFactory>();
        this.m_SenceAudioFactory = GetComponent <SenceAudioFactory>();
        //this.m_bulletFactory = GetComponent<BulletFactory>();
        this.m_actionEffectFactory = GetComponent <ActionEffectFactory>();

        LoginManager.Instance.Init91();
        this.RegisterEventHandler();

        this.m_gameSettings = GetComponent <GameSettings>();

        //打印按钮Id
        TraceUtil.Log(SystemModel.Common, TaskBtnManager.Instance.GetBtnId());
    }
Ejemplo n.º 19
0
        public IActionResult Render(int npcId, string framebook, int frame = 0)
        {
            NPC npcData = NPCFactory.GetNPC(npcId);

            if (npcData.IsComponentNPC ?? false)
            {
                return(File(AvatarFactory.Render(new Character()
                {
                    AnimationName = framebook,
                    FrameNumber = frame,
                    ItemEntries = npcData.ComponentIds
                                  .Concat(new int[] { npcData.ComponentSkin ?? 2000, (npcData.ComponentSkin ?? 2000) + 10000 })
                                  .Select(c => new AvatarItemEntry()
                    {
                        ItemId = c, Region = Region, Version = Version
                    })
                                  .ToArray()
                }).ImageToByte(Request), "image/png"));
            }

            FrameBook standing = npcData.GetFrameBook(framebook).First();

            if (standing == null)
            {
                return(NotFound());
            }

            Frame firstFrame = standing.frames.ElementAt(frame % standing.frames.Count());

            if (firstFrame == null || firstFrame.Image == null)
            {
                return(NotFound());
            }

            return(File(firstFrame.Image.ImageToByte(Request), "image/png"));
        }
Ejemplo n.º 20
0
 void Awake()
 {
     Instance = this;
 }
Ejemplo n.º 21
0
        public override void Initialize()
        {
            base.Initialize();

            spriteBatch = new SpriteBatch(this.ScreenManager.GraphicsDevice);

            ecsInstance = new ECSInstance();

            ComponentMapper.ecs_instance = ecsInstance;

            gameContainer = ScreenManager.GameContainer;

            //setup factories
            AnimationFactory.ecs_instance = ecsInstance;
            ActionFactory.ECSInstance     = ecsInstance;

            EntityFactory.ecs_instance  = ecsInstance;
            EntityFactory.GameContainer = gameContainer;
            UtilFactory.ecs_instance    = ecsInstance;
            UtilFactory.Container       = gameContainer;
            UIFactory.ecs_instance      = ecsInstance;
            UIFactory.Container         = gameContainer;



            //create & register systems
            //register update systems
            playerInputSystem  = ecsInstance.system_manager.set_system(new PlayerInputSystem(), new Position(), new Velocity(), new Controllable());
            cameraFocusSystem  = ecsInstance.system_manager.set_system(new CameraFocusSystem(), new CameraFocus(), new Position());
            mousePointerSystem = ecsInstance.system_manager.set_system(new MousePointerSystem(), new Position(), new MousePosition());
            behaviorSystem     = ecsInstance.system_manager.set_system(new BehaviorSystem(), new AiBehavior());
            mapCollisionSystem = ecsInstance.system_manager.set_system(new MapCollisionSystem(), new MapCollidable());
            projectileSystem   = ecsInstance.system_manager.set_system(new ProjectileSystem(), new Projectile());
            meleeSystem        = ecsInstance.system_manager.set_system(new MeleeSystem(), new MeleeAction());
            attackSystem       = ecsInstance.system_manager.set_system(new AttackSystem(), new Attack());
            damageSystem       = ecsInstance.system_manager.set_system(new DamageSystem(), new Damage());
            healthSystem       = ecsInstance.system_manager.set_system(new HealthSystem(), new Health());
            lifeSystem         = ecsInstance.system_manager.set_system(new LifeSystem(), new Life());
            victorySystem      = ecsInstance.system_manager.set_system(new AwardSystem(), new Award());
            uiUpdateSystem     = ecsInstance.system_manager.set_system(new UIUpdateSystem(), new UserInterface());
            triggerSystem      = ecsInstance.system_manager.set_system(new TriggerSystem(), new Trigger());
            actionSystem       = ecsInstance.system_manager.set_system(new ActionSystem(), new VAction());
            lightSystem        = ecsInstance.system_manager.set_system(new LightSystem(), new Light(), new Position());
            targetingSystem    = ecsInstance.system_manager.set_system(new TargetingSystem(), new Target());

            //audio systems
            audioSystem = ecsInstance.system_manager.set_system(new AudioSystem(gameContainer), new Audio());

            //register render systems
            spriteRenderSystem        = ecsInstance.system_manager.set_system(new SpriteRenderSystem(gameContainer), new Position(), new Sprite());
            animationSystem           = ecsInstance.system_manager.set_system(new AnimationSystem(gameContainer), new Character(), new Position());
            mapSystem                 = ecsInstance.system_manager.set_system(new MapSystem(gameContainer), new GameMap());
            healthBarRenderSystem     = ecsInstance.system_manager.set_system(new HealthBarRenderSystem(gameContainer), new Health());
            floatingTextDisplaySystem = ecsInstance.system_manager.set_system(new FloatingTextDisplaySystem(gameContainer), new FloatingText());
            quadTreeDebugRenderSystem = ecsInstance.system_manager.set_system(new QuadTreeDebugRenderSystem(gameContainer), new Position(), new AiBehavior());
            uiDrawSystem              = ecsInstance.system_manager.set_system(new UIDrawSystem(gameContainer.ContentManager, gameContainer.SpriteBatch), new UserInterface());



            //any additional component registration
            ecsInstance.component_manager.register_component_type(new Vaerydian.Components.Graphical.ViewPort());
            ecsInstance.component_manager.register_component_type(new MousePosition());
            ecsInstance.component_manager.register_component_type(new Heading());
            ecsInstance.component_manager.register_component_type(new MapDebug());
            ecsInstance.component_manager.register_component_type(new Transform());
            ecsInstance.component_manager.register_component_type(new SpatialPartition());
            ecsInstance.component_manager.register_component_type(new Interactable());
            ecsInstance.component_manager.register_component_type(new BoundingPolygon());
            ecsInstance.component_manager.register_component_type(new Item());
            ecsInstance.component_manager.register_component_type(new Equipment());
            //ecsInstance.component_manager.register_component_type(new Armor());
            //ecsInstance.component_manager.register_component_type(new Weapon());
            ecsInstance.component_manager.register_component_type(new Statistics());
            ecsInstance.component_manager.register_component_type(new Skills());
            ecsInstance.component_manager.register_component_type(new Knowledges());
            ecsInstance.component_manager.register_component_type(new Factions());
            ecsInstance.component_manager.register_component_type(new Award());
            ecsInstance.component_manager.register_component_type(new Information());
            ecsInstance.component_manager.register_component_type(new Aggrivation());
            ecsInstance.component_manager.register_component_type(new Audio());
            ecsInstance.component_manager.register_component_type(new APath());
            ecsInstance.component_manager.register_component_type(new Light());

            //initialize all systems
            ecsInstance.system_manager.initialize_systems();

            //create the entity factory
            npcFactory = new NPCFactory(ecsInstance);
            mapFactory = new MapFactory(ecsInstance, gameContainer);

            //setup local geometrymapper
            geometryMapper = new ComponentMapper(new GeometryMap(), ecsInstance);
        }
Ejemplo n.º 22
0
        //private ConcurrentDictionary<int, CCharacter> Bots { get; set; }

        public BotQueenBackgroundThread(FightManager fightManager, NPCFactory npcFactory)
        {
            FightManager = fightManager;
            _NPCFactory  = npcFactory;
        }
    // Update is called once per frame
    void Update()
    {
        if (creatorIsShopKeeper)
        {
            gameController.npcType.text = "NPC Type: ShopKeeper";

            if (NPCTypeNum == 0)
            {
                gameController.npcSubType.text = "NPC Sub-Type: Blacksmith";
            }
            else
            {
                gameController.npcSubType.text = "NPC Sub-Type: Swordsmith";
            }
        }
        else
        {
            gameController.npcType.text = "NPC Type: Citizen";

            if (NPCTypeNum == 0)
            {
                gameController.npcSubType.text = "NPC Sub-Type: Townsman";
            }
            else
            {
                gameController.npcSubType.text = "NPC Sub-Type: Townswoman";
            }
        }

        if (Input.GetKeyDown(KeyCode.T))
        {
            if (NPCTypeNum <= 0)
            {
                NPCTypeNum = 0;
                gameController.npcSubType.text = "NPC Sub-Type: ShopKeeper";
            }
            else if (NPCTypeNum >= 0)
            {
                NPCTypeNum--;
            }
        }
        if (Input.GetKeyDown(KeyCode.Y))
        {
            if (NPCTypeNum >= 1)
            {
                NPCTypeNum = 1;
            }
            else if (NPCTypeNum <= 0)
            {
                NPCTypeNum++;
            }
        }

        if (Input.GetKeyDown(KeyCode.Tab))
        {
            if (creatorIsShopKeeper)
            {
                npcFactoryCreator   = new CitizenFactory();
                creatorIsShopKeeper = false;
            }
            else
            {
                npcFactoryCreator   = new ShopKeeperFactory();
                creatorIsShopKeeper = true;
            }
        }

        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            spawnIndex = 0;
            if (creatorIsShopKeeper && canSpawn1)
            {
                SpawnNPC(shopKeeperType[NPCTypeNum]);
                npc1IsSpawned = true;
                canSpawn1     = false;
            }

            if (!creatorIsShopKeeper && canSpawn1)
            {
                SpawnNPC(citizenType[NPCTypeNum]);
                npc1IsSpawned = true;
                canSpawn1     = false;
            }
        }

        if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            spawnIndex = 1;
            if (creatorIsShopKeeper && canSpawn2)
            {
                SpawnNPC(shopKeeperType[NPCTypeNum]);
                npc2IsSpawned = true;
                canSpawn2     = false;
            }

            if (!creatorIsShopKeeper && canSpawn2)
            {
                SpawnNPC(citizenType[NPCTypeNum]);
                npc2IsSpawned = true;
                canSpawn2     = false;
            }
        }

        if (Input.GetKeyDown(KeyCode.Alpha3))
        {
            spawnIndex = 2;
            if (creatorIsShopKeeper && canSpawn3)
            {
                SpawnNPC(shopKeeperType[NPCTypeNum]);
                npc3IsSpawned = true;
                canSpawn3     = false;
            }

            if (!creatorIsShopKeeper && canSpawn3)
            {
                SpawnNPC(citizenType[NPCTypeNum]);
                npc3IsSpawned = true;
                canSpawn3     = false;
            }
        }
        if (Input.GetKeyDown(KeyCode.Alpha4))
        {
            spawnIndex = 3;
            if (creatorIsShopKeeper && canSpawn4)
            {
                SpawnNPC(shopKeeperType[NPCTypeNum]);
                npc4IsSpawned = true;
                canSpawn4     = false;
            }

            if (!creatorIsShopKeeper && canSpawn4)
            {
                SpawnNPC(citizenType[NPCTypeNum]);
                npc4IsSpawned = true;
                canSpawn4     = false;
            }
        }
    }
Ejemplo n.º 24
0
 void Awake()
 {
     _npcFactory = GetComponent <NPCFactory>();
 }
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            AggregateFactory   = new AggregateFactory(this);
            WeaponFactory      = new WeaponFactory(this);
            DoorFactory        = new DoorFactory(this);
            RoomFactory        = new RoomFactory(this);
            CollectableFactory = new CollectibleFactory(this);
            WallFactory        = new WallFactory(this);
            EnemyFactory       = new EnemyFactory(this);
            SkillEntityFactory = new SkillEntityFactory(this);
            NPCFactory         = new NPCFactory(this);

            // Initialize Components
            PlayerComponent          = new PlayerComponent();
            LocalComponent           = new LocalComponent();
            RemoteComponent          = new RemoteComponent();
            PositionComponent        = new PositionComponent();
            MovementComponent        = new MovementComponent();
            MovementSpriteComponent  = new MovementSpriteComponent();
            SpriteComponent          = new SpriteComponent();
            DoorComponent            = new DoorComponent();
            RoomComponent            = new RoomComponent();
            HUDSpriteComponent       = new HUDSpriteComponent();
            HUDComponent             = new HUDComponent();
            InventoryComponent       = new InventoryComponent();
            InventorySpriteComponent = new InventorySpriteComponent();
            ContinueNewGameScreen    = new ContinueNewGameScreen(graphics, this);
            EquipmentComponent       = new EquipmentComponent();
            WeaponComponent          = new WeaponComponent();
            BulletComponent          = new BulletComponent();
            PlayerInfoComponent      = new PlayerInfoComponent();
            WeaponSpriteComponent    = new WeaponSpriteComponent();
            StatsComponent           = new StatsComponent();
            EnemyAIComponent         = new EnemyAIComponent();
            NpcAIComponent           = new NpcAIComponent();

            CollectibleComponent = new CollectibleComponent();
            CollisionComponent   = new CollisionComponent();
            TriggerComponent     = new TriggerComponent();
            EnemyComponent       = new EnemyComponent();
            NPCComponent         = new NPCComponent();
            //QuestComponent = new QuestComponent();
            LevelManager             = new LevelManager(this);
            SpriteAnimationComponent = new SpriteAnimationComponent();
            SkillProjectileComponent = new SkillProjectileComponent();
            SkillAoEComponent        = new SkillAoEComponent();
            SkillDeployableComponent = new SkillDeployableComponent();
            SoundComponent           = new SoundComponent();
            ActorTextComponent       = new ActorTextComponent();
            TurretComponent          = new TurretComponent();
            TrapComponent            = new TrapComponent();
            ExplodingDroidComponent  = new ExplodingDroidComponent();
            HealingStationComponent  = new HealingStationComponent();
            PortableShieldComponent  = new PortableShieldComponent();
            PortableStoreComponent   = new PortableStoreComponent();
            ActiveSkillComponent     = new ActiveSkillComponent();
            PlayerSkillInfoComponent = new PlayerSkillInfoComponent();
            MatchingPuzzleComponent  = new MatchingPuzzleComponent();
            pI = new PlayerInfo();

            Quests = new List <Quest>();


            #region Initialize Effect Components
            AgroDropComponent          = new AgroDropComponent();
            AgroGainComponent          = new AgroGainComponent();
            BuffComponent              = new BuffComponent();
            ChanceToSucceedComponent   = new ChanceToSucceedComponent();
            ChangeVisibilityComponent  = new ChangeVisibilityComponent();
            CoolDownComponent          = new CoolDownComponent();
            DamageOverTimeComponent    = new DamageOverTimeComponent();
            DirectDamageComponent      = new DirectDamageComponent();
            DirectHealComponent        = new DirectHealComponent();
            FearComponent              = new FearComponent();
            HealOverTimeComponent      = new HealOverTimeComponent();
            PsiOrFatigueRegenComponent = new PsiOrFatigueRegenComponent();
            InstantEffectComponent     = new InstantEffectComponent();
            KnockBackComponent         = new KnockBackComponent();
            TargetedKnockBackComponent = new TargetedKnockBackComponent();
            ReduceAgroRangeComponent   = new ReduceAgroRangeComponent();
            ResurrectComponent         = new ResurrectComponent();
            StunComponent              = new StunComponent();
            TimedEffectComponent       = new TimedEffectComponent();
            EnslaveComponent           = new EnslaveComponent();
            CloakComponent             = new CloakComponent();
            #endregion

            base.Initialize();
        }
Ejemplo n.º 26
0
        protected override void process(Entity entity)
        {
            Position         position  = (Position)p_PositionMapper.get(entity);
            Velocity         velocity  = (Velocity)p_VelocityMapper.get(entity);
            Heading          heading   = (Heading)p_HeadingMapper.get(entity);
            Position         mPosition = (Position)p_PositionMapper.get(p_Mouse);
            Transform        transform = (Transform)p_TransformMapper.get(entity);
            Character        character = (Character)p_CharacterMapper.get(entity);
            SpatialPartition spatial   = (SpatialPartition)p_SpatialMapper.get(p_Spatial);

            if (p_FirstRun)
            {
                spatial.QuadTree.setContentAtLocation(entity, position.Pos);
                p_LastNode = spatial.QuadTree.locateNode(position.Pos + position.Offset);
                p_FirstRun = false;
            }

            Vector2 pos  = position.Pos;
            float   vel  = velocity.Vel;
            Vector2 head = heading.getHeading();

            //reset direction
            int dirCount = 0;

            //reset animation
            //sprite.Column = 0;
            p_Moved = false;

            //toggle light?
            if (InputManager.isKeyToggled(Keys.L))
            {
                Light light = (Light)p_LightMapper.get(p_Mouse);
                if (light.IsEnabled)
                {
                    light.IsEnabled = false;
                }
                else
                {
                    light.IsEnabled = true;
                }
            }



            //move up?
            if (InputManager.isKeyPressed(Keys.W))
            {
                Vector2 dir = new Vector2(0, -1);

                head += dir;
                dirCount++;

                //sprite.Y = MOVE_UP;
                //sprite.X = p_Movement.updateFrame(ecs_instance.ElapsedTime);
                p_Moved = true;
            }

            //move down?
            if (InputManager.isKeyPressed(Keys.S))
            {
                Vector2 dir = new Vector2(0, 1);

                head += dir;
                dirCount++;

                //sprite.Y = MOVE_DOWN;
                //sprite.X = p_Movement.updateFrame(ecs_instance.ElapsedTime);
                p_Moved = true;
            }

            //move left?
            if (InputManager.isKeyPressed(Keys.A))
            {
                Vector2 dir = new Vector2(-1, 0);

                head += dir;
                dirCount++;

                //sprite.Y = MOVE_LEFT;
                //sprite.X = p_Movement.updateFrame(ecs_instance.ElapsedTime);
                p_Moved = true;
            }

            //move right?
            if (InputManager.isKeyPressed(Keys.D))
            {
                Vector2 dir = new Vector2(1, 0);

                head += dir;
                dirCount++;

                //sprite.Y = MOVE_RIGHT;
                //sprite.X = p_Movement.updateFrame(ecs_instance.ElapsedTime);
                p_Moved = true;
            }

            //move according to the correct speed
            if (dirCount > 1)
            {
                position.Pos = pos + head * vel * (float)Math.Sqrt(2) / 2;
            }
            else
            {
                position.Pos = pos + head * vel;
            }

            /*
             * Vector2 test = (mPosition.Pos + mPosition.Offset) - pos;
             * test.Normalize();
             *
             * float angle = VectorHelper.getAngle(new Vector2(1,0), test);
             *
             * if (angle >= 0.393f && angle < 1.178f) { sprite.Row = MOVE_UPRIGHT; }
             * else if (angle >= 1.178f && angle < 1.963f) { sprite.Row = MOVE_UP; }
             * else if (angle >= 1.963f && angle < 2.749f) { sprite.Row = MOVE_UPLEFT; }
             * else if (angle >= 2.749f && angle < 3.534f) { sprite.Row = MOVE_LEFT; }
             * else if (angle >= 3.534f && angle < 4.320f) { sprite.Row = MOVE_DOWNLEFT; }
             * else if (angle >= 4.320f && angle < 5.105f) { sprite.Row = MOVE_DOWN; }
             * else if (angle >= 5.105f && angle < 5.890f) { sprite.Row = MOVE_DOWNRIGHT; }
             * else if (angle >= 5.890f || angle < .393f) { sprite.Row = MOVE_RIGHT; }
             *
             * if(p_Moved)
             * sprite.Column = p_Movement.updateFrame(ecs_instance.ElapsedTime);
             */

            if (p_Moved)
            {
                character.CurrentAnimtaion = "MOVING";
            }

            //transform.Rotation = getAngle(pos, mPosition.getPosition());



            /*
             * if (InputManager.isLeftButtonClicked())
             * {
             *  EntityFactory ef = new EntityFactory(ecs_instance);
             *
             *  Vector2 dir = mPosition.getPosition() + mPosition.Offset - new Vector2(16) - pos;
             *
             *  dir.Normalize();
             *
             *  Transform trans = new Transform();
             *  trans.Rotation = -VectorHelper.getAngle(new Vector2(1, 0), dir);
             *  trans.RotationOrigin = new Vector2(16);
             *
             *  ef.createCollidingProjectile(pos + dir * 16, dir, 10f, 1000, ef.createLight(true, 35, new Vector3(pos + position.Offset, 10), 0.7f, Color.Purple.ToVector4()), trans, entity);
             *
             *  UtilFactory uf = new UtilFactory(ecs_instance);
             *  uf.createSound("audio\\effects\\fire", true,0.5f);
             * }*/

            p_LastFired += ecs_instance.ElapsedTime;

            if (InputManager.isLeftButtonDown() && (p_LastFired >= 3 * p_FireRate))
            {
                Target target = (Target)p_TargetMapper.get(p_Target);
                if (target.Active)
                {
                    p_LastFired = 0;

                    Position targetPos = (Position)p_PositionMapper.get(p_Target);

                    Vector2 dir = targetPos.Pos + targetPos.Offset - new Vector2(16) - pos;
                    dir.Normalize();

                    Transform trans = new Transform();
                    trans.Rotation       = -VectorHelper.getAngle(new Vector2(1, 0), dir);
                    trans.RotationOrigin = new Vector2(0, 16);

                    UtilFactory.createMeleeAction(pos + dir * 16, dir, trans, entity);
                }
            }

            if (InputManager.isRightButtonDown() && (p_LastFired >= p_FireRate))
            {
                Target target = (Target)p_TargetMapper.get(p_Target);
                if (target.Active)
                {
                    p_LastFired = 0;

                    Position targetPos = (Position)p_PositionMapper.get(p_Target);

                    Vector2 dir = targetPos.Pos + targetPos.Offset - new Vector2(16) - pos;
                    //Vector2 dir = mPosition.Pos + mPosition.Offset - new Vector2(16) - pos;// +new Vector2(-20 + (float)rand.NextDouble() * 40, -20 + (float)rand.NextDouble() * 40);

                    dir = VectorHelper.rotateVectorRadians(dir, -0.08726f + (float)rand.NextDouble() * 0.1745f);

                    dir.Normalize();

                    Transform trans = new Transform();
                    trans.Rotation       = -VectorHelper.getAngle(new Vector2(1, 0), dir);
                    trans.RotationOrigin = new Vector2(16);

                    EntityFactory.createCollidingProjectile(pos + dir * 16, dir, 10f, 1000, EntityFactory.createLight(true, 2, new Vector3(pos + position.Offset, 10), 0.7f, Color.OrangeRed.ToVector4()), trans, entity);

                    UtilFactory.createSound("audio\\effects\\fire", true, 0.5f);
                }
            }

            if (InputManager.isKeyToggled(Keys.B))
            {
                if (!p_StatWindowOpen)
                {
                    p_StatWindow = UIFactory.createStatWindow(entity, new Point(100, 100), new Point(300, 315), 20);

                    p_StatWindowOpen = true;
                }
                else
                {
                    ecs_instance.delete_entity(p_StatWindow);
                    p_StatWindowOpen = false;
                }
            }

            if (InputManager.isKeyToggled(Keys.I))
            {
                if (!p_InvWindowOpen)
                {
                    p_InvWindow     = UIFactory.createInventoryWindow(entity, new Point(300, 100), new Point(300, 300), 20, 10, 10);
                    p_InvWindowOpen = true;
                }
                else
                {
                    ecs_instance.delete_entity(p_InvWindow);
                    p_InvWindowOpen = false;
                }
            }


            if (InputManager.isKeyToggled(Keys.R))
            {
                List <Entity> locals = spatial.QuadTree.findAllWithinRange(pos, 300);
                if (locals.Count > 1)
                {
                    Target target = (Target)p_TargetMapper.get(p_Target);
                    Sprite sprite = (Sprite)p_SpriteMapper.get(p_Target);
                    sprite.Visible = true;
                    target.Active  = true;

                    Entity closest = null;
                    float  min     = float.MaxValue;

                    for (int i = 0; i < locals.Count; i++)
                    {
                        if (locals[i] == entity)
                        {
                            continue;
                        }

                        Position p = (Position)p_PositionMapper.get(locals[i]);

                        if (p == null)
                        {
                            continue;
                        }

                        float dist = Vector2.Distance(p.Pos, position.Pos);
                        if (dist < min)
                        {
                            closest = locals[i];
                            min     = dist;
                        }
                    }

                    target.TargetEntity = closest;
                }
            }

            if (!p_Moved)
            {
                p_Movement.reset();
                character.CurrentAnimtaion = "IDLE";
            }
            else
            {
                if (p_LastNode != null)
                {
                    p_LastNode.Contents.Remove(entity);
                }

                p_LastNode = spatial.QuadTree.setContentAtLocation(entity, pos + new Vector2(16, 16));
            }

            //TEST FUNCTIONS PAST HERE

            if (InputManager.isKeyPressed(Keys.Up))
            {
                transform.Rotation += 0.1f;
            }

            if (InputManager.isKeyPressed(Keys.Down))
            {
                transform.Rotation -= 0.1f;
            }

            if (InputManager.isKeyPressed(Keys.Left))
            {
                transform.RotationOrigin = new Vector2(16, 32);
            }

            if (InputManager.isKeyPressed(Keys.Right))
            {
                transform.RotationOrigin = new Vector2(0);
            }

            if (InputManager.isKeyPressed(Keys.P))
            {
                NPCFactory ef = new NPCFactory(ecs_instance);
                ef.createFollower(mPosition.Pos + mPosition.Offset - new Vector2(16), entity, rand.Next(50, 300));
            }

            if (InputManager.isKeyToggled(Keys.O))
            {
                NPCFactory ef = new NPCFactory(ecs_instance);
                //ef.createBatEnemy(mPosition.Pos + mPosition.Offset - new Vector2(16),15);
                CharacterDef cDef = GameConfig.CharacterDefs["BAT"];
                cDef.SkillLevel = 15;
                ef.createCharacter(cDef, mPosition.Pos + mPosition.Offset - new Vector2(16));
            }

            if (InputManager.isKeyToggled(Keys.U))
            {
                ActionDef def = GameConfig.ActionDefs["TEST_DMG"];
                ActionFactory.createAction(def, entity, entity);
            }
        }
Ejemplo n.º 27
0
 public IActionResult List([FromQuery] int startAt = 0, [FromQuery] int count = int.MaxValue, [FromQuery] string searchFor = "") => Json(NPCFactory.GetNPCs(startAt, count, searchFor));
Ejemplo n.º 28
0
 public BotQueenMoveDeployBackgroundThread(FightManager fightManager, NPCFactory npcFactory)
 {
     FightManager = fightManager;
 }
Ejemplo n.º 29
0
 protected override void initialize()
 {
     l_LifeMapper = new ComponentMapper(new Life(), ecs_instance);
     l_NPCFactory = new NPCFactory(ecs_instance);
 }