コード例 #1
0
        public static void Activate()
        {
            EntityActor actor = The.World.Avatar.Actor;

            if (!actor)
            {
                return;
            }

            if (actor.transform.Find(TypeFullName))
            {
                return;
            }

            GameObject gameObject = GameObject.Instantiate <GameObject>(The.AssetManager.Load <GameObject>(PrefabPath), actor.transform);

            gameObject.name = TypeFullName;
            gameObject.transform.localScale = Vector3.one * InteractiveRange.Radius * 2f;
            MeshRenderer renderer = gameObject.GetComponent <MeshRenderer>();

            if (renderer)
            {
                renderer.material.SetColor("_Color", Colors.Green);
            }
        }
コード例 #2
0
        public void TestStop()
        {
            var mockOrder = new Mock <IOrder>();

            mockOrder.Setup(o => o.IsValid(It.IsAny <Entity>())).Returns(true);
            mockOrder.Setup(o => o.IsComplete(It.IsAny <Entity>())).Returns(false);
            mockOrder.Setup(o => o.Update(It.IsAny <Entity>(), It.IsAny <GameTime>()))
            .Callback(() => TestActor.Tell("Failed"));
            var entity = new Entity();
            var mockComponentActorFactory = new Mock <IComponentActorFactory>();

            mockComponentActorFactory.Setup(f => f.GetOrCreateActorForComponent(It.IsAny <EntityComponent>()))
            .Returns((EntityComponent component) => ActorRefs.Nobody);

            IActorRef entityActor =
                ActorOfAsTestActorRef <EntityActor>(EntityActor.Props(entity, mockComponentActorFactory.Object),
                                                    TestActor);

            entityActor.Tell(new EnqueueOrder(entity.Id, mockOrder.Object));
            entityActor.Tell(new Update(new GameTime()));
            ExpectMsg("Failed");
            entityActor.Tell(new Stop(entity.Id));
            entityActor.Tell(new Update(new GameTime()));
            ExpectNoMsg(500);
        }
コード例 #3
0
        public void TestOrders()
        {
            var mockOrder = new Mock <IOrder>();

            mockOrder.Setup(o => o.IsValid(It.IsAny <Entity>())).Returns(false);
            var entity = new Entity();
            var mockComponentActorFactory = new Mock <IComponentActorFactory>();

            mockComponentActorFactory.Setup(f => f.GetOrCreateActorForComponent(It.IsAny <EntityComponent>()))
            .Returns((EntityComponent component) => ActorRefs.Nobody);

            IActorRef entityActor =
                ActorOfAsTestActorRef <EntityActor>(EntityActor.Props(entity, mockComponentActorFactory.Object),
                                                    TestActor);

            entityActor.Tell(new EnqueueOrder(entity.Id, mockOrder.Object));
            entityActor.Tell(new Update(new GameTime()));
            ExpectMsg <InvalidOrder>();
            mockOrder.Reset();
            mockOrder.Setup(o => o.IsValid(It.IsAny <Entity>())).Returns(true);
            mockOrder.Setup(o => o.IsComplete(It.IsAny <Entity>())).Returns(false);
            entityActor.Tell(new EnqueueOrder(entity.Id, mockOrder.Object));
            entityActor.Tell(new Update(new GameTime()));
            ExpectNoMsg();
            mockOrder.Verify(o => o.IsComplete(It.IsAny <Entity>()), Times.AtMostOnce);
            mockOrder.Verify(o => o.IsValid(It.IsAny <Entity>()), Times.Once);
            mockOrder.Verify(o => o.Update(It.IsAny <Entity>(), It.IsAny <GameTime>()), Times.Once);
            mockOrder.Invocations.Clear();
            mockOrder.Setup(o => o.IsComplete(It.IsAny <Entity>())).Returns(true);
            entityActor.Tell(new Update(new GameTime()));
            ExpectNoMsg(100);
            mockOrder.Verify(o => o.IsComplete(It.IsAny <Entity>()), Times.Once);
            mockOrder.Verify(o => o.IsValid(It.IsAny <Entity>()), Times.AtMostOnce);
            mockOrder.Verify(o => o.Update(It.IsAny <Entity>(), It.IsAny <GameTime>()), Times.Never);
        }
コード例 #4
0
    /// <summary>
    /// Create a new renderer for the given entity
    /// </summary>
    /// <param name="entity">Entity for which the renderer will be created</param>
    private void CreateEntity(IMap map, Entity entity, bool isPlayer)
    {
        GameObject  instance = Instantiate(entityPrefab, Vector3.zero, Quaternion.identity);
        EntityActor actor    = instance.AddComponent(
            isPlayer ? typeof(PlayerActor) : typeof(AIActor)
            ) as EntityActor;

        actor.Init(map, entity);
        instance.transform.parent = transform;
        EntityRenderer renderer = instance.GetComponent <EntityRenderer>();

        renderer.Init(entity);
    }
コード例 #5
0
        public void TestAnyMessage()
        {
            var entity = new Entity();
            var mockComponentActorFactory = new Mock <IComponentActorFactory>();

            IActorRef entityActor =
                ActorOfAsTestActorRef <EntityActor>(EntityActor.Props(entity, mockComponentActorFactory.Object),
                                                    TestActor);

            // ReSharper disable once SuggestVarOrType_SimpleTypes
            entityActor.Tell(new TestMessage());
            ExpectMsg <TestMessage>();
        }
コード例 #6
0
        public void Update(MyInput input)
        {
            if (_BattleMap.MyState.GetType() == typeof(PrototypeBattleLogic.P_BMSPlayerSelectingTile))
            {
                PrototypeBattleLogic.P_BMSPlayerSelectingTile mapstate =
                    _BattleMap.MyState as PrototypeBattleLogic.P_BMSPlayerSelectingTile;
                Tile selectedtile = mapstate._Cursor.Owner as Tile;

                if (selectedtile != TileImViewing)
                {
                    TileImViewing = selectedtile;
                    string one = "", two = "", thr = "", fou = "", fiv = "", six = "", sev = "", eig = "";

                    one = "Tile: " + selectedtile.TileName;
                    two = "Role: " + selectedtile.Role.ToString();
                    if (selectedtile.TileFeatureList.Count > 0)
                    {
                        thr = "Feature: " + selectedtile.TileFeatureList[0].Name;
                    }
                    fou = "Passable: " + selectedtile.IsTilePassable().ToString();
                    fiv = "SeeThru: " + selectedtile.IsTileSeeThru().ToString();
                    if (selectedtile.EntityList.Count > 0)
                    {
                        six = "Entity: " + selectedtile.EntityList[0].Name + "/" + selectedtile.EntityList[0].GetType().Name;
                        sev = "Faction: " + selectedtile.EntityList[0].Faction.ToString();
                        if (selectedtile.EntityList[0].GetType() == typeof(EntityActor))
                        {
                            EntityActor dude = selectedtile.EntityList[0] as EntityActor;
                            eig = "Movement: " + dude.MovementPoints + "/" + dude.MovementType + "/" + dude.TurnStatus;
                        }
                    }


                    one = PadString(one, _Render.SizeX);
                    two = PadString(two, _Render.SizeX);
                    thr = PadString(thr, _Render.SizeX);
                    fou = PadString(fou, _Render.SizeX);
                    fiv = PadString(fiv, _Render.SizeX);
                    six = PadString(six, _Render.SizeX);
                    sev = PadString(sev, _Render.SizeX);
                    eig = PadString(eig, _Render.SizeX);
                    char[] textblob = new char[_Render.SizeX * _Render.SizeY];

                    string bigstring = one + two + thr + fou + fiv + six + sev + eig;
                    bigstring.ToCharArray().CopyTo(textblob, 0);

                    _Render.Graphic = textblob;
                }
            }
        }
コード例 #7
0
        public static void Deactivate()
        {
            EntityActor actor = The.World.Avatar.Actor;

            if (!actor)
            {
                return;
            }

            Transform visualizer = actor.transform.Find(TypeFullName);

            if (visualizer)
            {
                GameObject.Destroy(visualizer.gameObject);
            }
        }
コード例 #8
0
        public IP_BattleMapState Update(P_BattleMap battlemap, MyInput input)
        {
            switch (input)
            {
            case MyInput.Confirm:
                Tile selectedtile = _Cursor.Owner as Tile;
                if (selectedtile == null)
                {
                    break;
                }
                if (selectedtile.EntityList.Count > 0)
                {
                    if (selectedtile.EntityList[0].GetType() == typeof(EntityActor))
                    {
                        EntityActor selectedactor = selectedtile.EntityList[0] as EntityActor;
                        if (selectedactor.TurnStatus == EntityCharacterTurnStatus.MyTurn)
                        {
                            this.Exit(battlemap);
                            return(new P_BMSChose_Movement(battlemap, selectedactor));
                        }
                    }
                }
                break;

            case MyInput.Escape:
                battlemap.GenerateNewMap();
                this.Exit(battlemap);
                return(this);

            case MyInput.DownLeft:
            case MyInput.DownRight:
            case MyInput.Left:
            case MyInput.Right:
            case MyInput.UpLeft:
            case MyInput.UpRight:
                P_BMS.MoveTileCursor(battlemap, P_BMS.InputToDirection(input), _Cursor, ref CursorIndex);
                break;

            default:
                break;
            }
            P_BMS.CursorOffScreen(battlemap, _Cursor);
            return(this);
        }
コード例 #9
0
        public void TestMessageToComponent()
        {
            var entity = new Entity
            {
                new TestComponent()
            };
            var mockComponentActorFactory = new Mock <IComponentActorFactory>();

            mockComponentActorFactory.Setup(f => f.GetOrCreateActorForComponent(It.IsAny <EntityComponent>()))
            .Returns((EntityComponent component) => Sys.ActorOf(Props.Create(() => new ComponentActor())));

            IActorRef entityActor =
                ActorOfAsTestActorRef <EntityActor>(EntityActor.Props(entity, mockComponentActorFactory.Object),
                                                    TestActor);
            // ReSharper disable once SuggestVarOrType_SimpleTypes
            var message = Guid.NewGuid();

            entityActor.Tell(new TestComponentMessage(entity.Id, message));
            ExpectMsg(message);
        }
コード例 #10
0
        public void TestMessageToEntityComponentFirstOfType()
        {
            var mockMessage = new Mock <IMessageToEntityComponentFirstOfType>();
            var mockComponentActorFactory = new Mock <IComponentActorFactory>();

            mockComponentActorFactory.Setup(f => f.GetOrCreateActorForComponent(It.IsAny <EntityComponent>())).Returns(
                (EntityComponent component) =>
            {
                return(Sys.ActorOf(Props.Create(() => new EntityTestActor(component.Id)), $"{component.Id}"));
            }
                );

            var testComponent = new Utils.TestComponent();
            var entity        = new Entity
            {
                testComponent,
                new Utils.TestComponent()
            };

            mockMessage.Setup(m => m.EntityId).Returns(entity.Id);
            mockMessage.Setup(m => m.ComponentType).Returns(typeof(Utils.TestComponent));
            mockMessage.Setup(m => m.Message).Returns("Test");

            IActorRef entityActor = Sys.ActorOf(EntityActor.Props(entity, mockComponentActorFactory.Object));

            entityActor.Tell(mockMessage.Object);
            ExpectMsg(testComponent.Id);

            entity.RemoveAll <EntityComponent>();
            entity.Dispose();

            entity = new Entity
            {
                new Utils.TestComponent(),
                testComponent
            };

            entityActor = Sys.ActorOf(EntityActor.Props(entity, mockComponentActorFactory.Object));
            entityActor.Tell(mockMessage.Object);
            ExpectMsg <Guid>(guid => guid != testComponent.Id);
        }
コード例 #11
0
        public Boolean IsValid(Entity entity, out Single distanceSqr)
        {
            PositionModule module = entity.GetModule <PositionModule>();

            if (module != null)
            {
                distanceSqr = (module.WorldPosition - _position).sqrMagnitude;
                return(_rangeSqr >= distanceSqr);
            }

            EntityActor actor = entity.Actor;

            if (actor != null)
            {
                distanceSqr = (actor.transform.position - _position).sqrMagnitude;
                return(_rangeSqr >= distanceSqr);
            }

            distanceSqr = 0f;
            return(false);
        }
コード例 #12
0
    public void Clear()
    {
        if (this is EntityMyself && PlayerManager.singleton.MySelf == null)
        {
            return;
        }
        if (this.timer.Count != 0)
        {
            foreach (var id in timer)
            {
                TimerManager.DelTimer(id);
            }
            this.timer.Clear();
        }
        if (this.Effcets.Count != 0)
        {
            foreach (var effect in this.Effcets)
            {
                PoolManager.Pools[PoolManager.EffectPoolName].Despawn(effect.transform);
            }
            this.Effcets.Clear();
        }
        PoolManager.Pools[PoolManager.EffectPoolName].Despawn(Transform);
        this.collider2d.enabled  = false;
        this.entityActor.enabled = false;
        this.animator            = null;
        this.fsmMotion           = null;
        _2dxFX_DesintegrationFX deadFx = this.GameObject.GetComponent <_2dxFX_DesintegrationFX>();

        if (deadFx != null)
        {
            deadFx.Desintegration = 0;
        }
        this.entityActor      = null;
        this.audioSource.clip = null;
        this.audioSource      = null;
    }
コード例 #13
0
        public P_BMSPlayerSelectingTile(P_BattleMap map)
        {
            map.MyState = this;
            Random rng = new Random();

            DebugBox = new TilerIsADummy.PrototypeMapGen.PrototypeTextBox.P_DebugBattleBox(map);
            DebugBox.AcceptP_Render(map.Renderer);
            DebugBox.AcceptUpdater(map.Updater);
            while (true)
            {
                int num = rng.Next(0, map.MapEntity.Count);
                if (map.MapEntity[num].GetType() == typeof(EntityActor))
                {
                    EntityActor check = map.MapEntity[num] as EntityActor;
                    if (check.TurnStatus == EntityCharacterTurnStatus.MyTurn && check.MyTileIndex > 0)
                    {
                        _Cursor = new P_SelectionCursor(check.MyLocation);
                        _Cursor.AcceptP_Render(map.Renderer);
                        CursorIndex = check.MyTileIndex;
                        break;
                    }
                }
            }
        }
コード例 #14
0
        public void TestUpdate()
        {
            var mockComponentActorFactory = new Mock <IComponentActorFactory>();

            mockComponentActorFactory.Setup(f => f.GetOrCreateActorForComponent(It.IsAny <EntityComponent>())).Returns(
                (EntityComponent component) =>
            {
                return(Sys.ActorOf(Props.Create(() => new EntityTestActor(component.Id)), $"{component.Id}"));
            }
                );

            var entity = new Entity
            {
                new Utils.TestComponent(),
                new Utils.TestComponent(),
                new Utils.TestComponent()
            };

            IActorRef entityActor = Sys.ActorOf(EntityActor.Props(entity, mockComponentActorFactory.Object));

            entityActor.Tell(new Update(new GameTime()));
            ExpectMsgAllOf(entity.Select(c => c.Id).ToArray());
            ExpectNoMsg(500);
        }
コード例 #15
0
 protected void HasRootEntity <TAccessor>(TAccessor accessor, IBulkRepository <TRootEntity> repository, params IActor[] valueObjectActors)
     where TAccessor : IStorageBasedDataObjectAccessor <TRootEntity>, IDataChangesHandler <TRootEntity>
 {
     _root = new EntityActor <TRootEntity>(_query, repository, _equalityComparerFactory, accessor, accessor, valueObjectActors);
 }
コード例 #16
0
 public P_ActorRenderComponent(EntityActor actor)
 {
     _Graphic    = new char[1];
     _Graphic[0] = '@';
     _MyActor    = actor;
 }