Ejemplo n.º 1
0
    internal static void HighlightGridTile( GridTile tile )
    {
        me.gridTileHighlighter.renderer.enabled = true;
        me.gridTileHighlighter.transform.position = tile.transform.position + Vector3.up * .066f;

        me.hideAllHolos();

        if( mode == HoloMode.Cross ) {

            if( crossHolo != null ) {
                crossHolo.active = true;
                crossHolo.transform.position = tile.transform.position;
                if( tile.obstructed ) {
                    crossHolo.transform.position +=
                        Vector3.up * tile.obstruction.height * 2;
                }
            }

        } else if( mode == HoloMode.HoloUnit ) {

            if( tile.walkable ) {

                GridTile smallestCover = null;

                foreach( GridTile cover in tile.relations.neighbours ) {
                    if( cover.obstructed && !tile.relations.relations[cover].diagonal ) {
                        if( smallestCover == null || smallestCover.coverValue > cover.coverValue ) {
                            smallestCover = cover;
                        }
                    }
                }

                unitHolo = me.unitHoloRunning;

                if( smallestCover == null ) {
                    unitHolo = me.unitHoloRunning;
                    unitHolo.model.renderer.enabled = true;
                    unitHolo.transform.position = tile.transform.position;
                    unitHolo.transform.LookAt( God.selectedUnit.transform );
                    unitHolo.transform.Rotate( Vector3.up * 180 );
                } else {
                    if( smallestCover.coverValue < God.selectedUnit.propHeight ) {
                        unitHolo = me.unitHoloInCoverDucked;
                    } else {
                        unitHolo = me.unitHoloInCover;
                    }
                    unitHolo.model.renderer.enabled = true;
                    unitHolo.transform.position = tile.transform.position;
                    unitHolo.transform.LookAt( smallestCover.transform );
                }

                unitHolo.animation.Rewind();
                unitHolo.animation.Play( "FadeIn" );

                unitHolo.transform.localScale = new Vector3( 1, God.selectedUnit.props.size, 1 );

                //tile.DebugOut( Mathf.Floor( Angles.FixAngleDegSigned( God.selectedUnit.currentTile.relations.GetRelation( tile ).angle + God.selectedUnit.transform.eulerAngles.y - 90 ) ).ToString() );

                //List<GridTile> list = GodOfPathfinding.GetLine( selectedUnit.currentTile, tile );
                //foreach( GridTile t in grid.GetAllTiles() ) {
                //    bool flag = list.Contains( t );
                //    t.transform.Find( "flag" ).renderer.enabled = flag;
                //}

            }

        }

        //float danger = 0;
        //RangedAttackResult r;
        //foreach( Unit subjectUnit in allUnits ) {
        //    if( selectedUnit.team.IsEnemy( subjectUnit ) ) {
        //        if( subjectUnit.inPlay && subjectUnit.CanSee( tile ) ) {
        //            subjectUnit.__SetFlag( true );
        //            r = new RangedAttackResult( subjectUnit, selectedUnit, tile );
        //            danger += r.hitChance * (1-danger/100) ;
        //        }
        //    }
        //}
        //me.gridTileHighlighter.ShowDanger( danger );
    }
Ejemplo n.º 2
0
 public void Start()
 {
     me = this;
     crossHolo = _crossHolo;
     hideAllHolos();
 }