コード例 #1
0
ファイル: Utils.cs プロジェクト: mts508/Artemis
 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()));
 }
コード例 #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));
        }
コード例 #3
0
ファイル: Barrier.cs プロジェクト: mts508/Artemis
    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;
    }
コード例 #4
0
 internal bool Contains(SequenceSource sequenceSource)
 {
     if (sequenceSource != null)
     {
         return((int)m_sourceRootID == (int)sequenceSource.RootID);
     }
     return(false);
 }
コード例 #5
0
        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();
        }
コード例 #6
0
 public bool ContainsSequenceSource(SequenceSource sequenceSource)
 {
     if (sequenceSource != null)
     {
         return(ContainsSequenceSourceID(sequenceSource.RootID));
     }
     return(false);
 }
コード例 #7
0
ファイル: Prokaryote.cs プロジェクト: radtek/GenomeDatabase
 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;
 }
コード例 #8
0
 internal void InitSequenceSourceData(SequenceSource source)
 {
     if (!(source != null))
     {
         return;
     }
     m_sourceRootID            = source.RootID;
     m_sourceRemoveAtEndOfTurn = source.RemoveAtEndOfTurn;
     m_waitForClientEnable     = source.WaitForClientEnable;
 }
コード例 #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);
 }
コード例 #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);
            }
        }