Esempio n. 1
0
 public static Barrier ConsBarrier(
     ActorData caster,
     StandardBarrierData data,
     Vector3 targetPos,
     Vector3 facingDir,
     SequenceSource seqSource,
     List <GameObject> prefabOverride = null)
 {
     Log.Info($"Spawning barrier by {caster.DisplayName}: max duration {data.m_maxDuration}, max hits {data.m_maxHits}, end on caster death {data.m_endOnCasterDeath}");
     return(new Barrier(
                ArtemisServerResolutionManager.Get().NextBarrierGuid,
                "",
                targetPos,
                facingDir,
                data.m_width,
                data.m_bidirectional,
                data.m_blocksVision,
                data.m_blocksAbilities,
                data.m_blocksMovement,
                data.m_blocksPositionTargeting,
                data.m_considerAsCover,
                data.m_maxDuration,
                caster,
                prefabOverride ?? data.m_barrierSequencePrefabs,
                true,
                data.m_onEnemyMovedThrough,
                data.m_onAllyMovedThrough,
                data.m_maxHits,
                data.m_endOnCasterDeath,
                seqSource,
                caster.GetTeam()));
 }
Esempio n. 2
0
        private ClientResolutionAction MakeResolutionAction(
            MovementNode node,
            Barrier barrier,
            GameObject sequenceToPlay,
            Dictionary <ActorData, ClientActorHitResults> actorToHitResults)
        {
            SequenceSource seqSource = new SequenceSource(null, null, ArtemisServerResolutionManager.Get().NextSeqSourceRootID, true);

            ServerClientUtils.SequenceStartData seqStart = new ServerClientUtils.SequenceStartData(
                sequenceToPlay,
                node.pathInfo.square,
                new ActorData[] { node.actor },
                barrier.Caster,
                seqSource);
            ClientBarrierResults barrierResults = new ClientBarrierResults(
                barrier.m_guid,
                barrier.Caster,
                actorToHitResults,
                new Dictionary <Vector3, ClientPositionHitResults>());
            ClientMovementResults movementResults = new ClientMovementResults(
                node.actor,
                node.pathInfo,
                new List <ServerClientUtils.SequenceStartData> {
                seqStart
            },
                null,
                barrierResults,
                null,
                null);

            return(new ClientResolutionAction(ResolutionActionType.BarrierOnMove, null, null, movementResults));
        }
Esempio n. 3
0
    private void InitBarrier(
        int guid,
        string name,
        Vector3 center,
        Vector3 facingDir,
        float width,
        bool bidirectional,
        BlockingRules blocksVision,
        BlockingRules blocksAbilities,
        BlockingRules blocksMovement,
        BlockingRules blocksMovementOnCrossover,
        BlockingRules blocksPositionTargeting,
        bool considerAsCover,
        int maxDuration,
        ActorData owner,
        List <GameObject> barrierSequencePrefabs,
        bool playSequences,
        GameplayResponseForActor onEnemyMovedThrough,
        GameplayResponseForActor onAllyMovedThrough,
        int maxHits,
        bool endOnCasterDeath,
        SequenceSource parentSequenceSource,
        Team barrierTeam)
    {
        m_guid          = guid;
        m_name          = name;
        m_center        = center;
        m_facingDir     = facingDir;
        m_bidirectional = bidirectional;
        Vector3 a = Vector3.Cross(facingDir, Vector3.up);

        a.Normalize();
        float d = width * Board.Get().squareSize;

        m_endpoint1               = center + a * d / 2f;
        m_endpoint2               = center - a * d / 2f;
        BlocksVision              = blocksVision;
        BlocksAbilities           = blocksAbilities;
        BlocksMovement            = blocksMovement;
        BlocksMovementOnCrossover = blocksMovementOnCrossover;
        BlocksPositionTargeting   = blocksPositionTargeting;
        m_considerAsCover         = considerAsCover;
        m_owner                  = owner;
        m_team                   = m_owner?.GetTeam() ?? barrierTeam;
        m_time                   = new EffectDuration();
        m_time.duration          = maxDuration;
        m_barrierSequencePrefabs = barrierSequencePrefabs;
        m_playSequences          = playSequences && m_barrierSequencePrefabs != null;
        m_barrierSequences       = new List <Sequence>();
        if (m_playSequences)
        {
            BarrierSequenceSource = new SequenceSource(null, null, false, parentSequenceSource);
        }
        m_maxHits = maxHits;

        // added
        m_onEnemyMovedThrough = onEnemyMovedThrough;
        m_onAllyMovedThrough  = onAllyMovedThrough;
        m_endOnCasterDeath    = endOnCasterDeath;
    }
Esempio n. 4
0
 internal bool Contains(SequenceSource sequenceSource)
 {
     if (sequenceSource != null)
     {
         return((int)m_sourceRootID == (int)sequenceSource.RootID);
     }
     return(false);
 }
        private static void fill_source(SequenceSource source, long id)
        {
            Source          sou      = new Source(source, id);
            MySqlCommand    cmmd12   = new MySqlCommand(sou.get_query(), conn);
            MySqlDataReader reader12 = cmmd12.ExecuteReader();

            reader12.Close();
        }
Esempio n. 6
0
 public bool ContainsSequenceSource(SequenceSource sequenceSource)
 {
     if (sequenceSource != null)
     {
         return(ContainsSequenceSourceID(sequenceSource.RootID));
     }
     return(false);
 }
Esempio n. 7
0
 public Prokaryote(SequenceSource source)
 {
     this.id          = 0;
     this.common_name = source.CommonName;
     this.class_level = source.Organism.ClassLevels;
     this.genus       = source.Organism.Genus;
     this.species     = source.Organism.Species;
 }
Esempio n. 8
0
 internal void InitSequenceSourceData(SequenceSource source)
 {
     if (!(source != null))
     {
         return;
     }
     m_sourceRootID            = source.RootID;
     m_sourceRemoveAtEndOfTurn = source.RemoveAtEndOfTurn;
     m_waitForClientEnable     = source.WaitForClientEnable;
 }
Esempio n. 9
0
 protected override ServerClientUtils.SequenceStartData MakeSequenceStart(SequenceSource seqSource)
 {
     ServerClientUtils.SequenceStartData result = new ServerClientUtils.SequenceStartData(
         m_ability.m_sequencePrefab,
         m_targetPos,
         new ActorData[] { },
         m_caster,
         seqSource,
         MakeExtraParams());
     Log.Info($"SequenceStartData: prefab: {result.GetSequencePrefabId()}, pos: {result.GetTargetPos()}, actors: {result.GetTargetActorsString()}");
     return(result);
 }
Esempio n. 10
0
        protected override void MakeBarriers(SequenceSource seqSource)
        {
            StandardBarrierData data    = Ability.ModdedBarrierData();
            BarrierPayload      payload = new BarrierPayload();

            payload.OnEnemyHit = delegate(Barrier barrier)
            {
                payload.RemoveAtTurnEnd = true;
            };
            payload.GetTechPointsForCaster = barrier => Ability.GetBaseTechPointInteractions();
            foreach (Vector3 facingDir in new List <Vector3>()
            {
                new Vector3(0, 0, 1), new Vector3(1, 0, 0)
            })
            {
                var barrier = Utils.ConsBarrier(m_caster, data, m_targetPos, facingDir, seqSource, Ability.ModdedBarrierSequencePrefab());
                Barriers.Add(barrier);
                ArtemisServerBarrierManager.Get().SetBarrierPayload(barrier, payload);
            }
        }