Пример #1
0
 public void Initialize(TrackEditor editor, AbstractTrack track)
 {
     this.editor = editor;
     this.Track  = track;
     this.rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, Track.GetTrackHeight());
     this.input.text = track.TrackName;
     Update();
 }
Пример #2
0
 protected override string GetGameObjectName()
 {
     if (trackEntry != null)
     {
         AbstractTrack track = trackEntry.gameObject.GetComponent <AbstractTrack> ();
         if (track)
         {
             return("Play " + track.GetTrackName());
         }
     }
     return("undefined_PlayTrack");
 }
Пример #3
0
    public void AddPath(AbstractTrack track)
    {
        //paused = true;
        //path_queue.Add(path);
        //pos_map.Add(totalLength,path);

        PathSpline path = track.GetPath();
        LinkedList <KeyValuePair <float, PathNode> > list = new LinkedList <KeyValuePair <float, PathNode> >();

        if (path == null)
        {
            return;
        }

        foreach (KeyValuePair <float, PathNode> temp in path.node_map)
        {
            list.AddLast(temp);
        }



        foreach (KeyValuePair <float, PathNode> temp in list)
        {
            if (traverser_path.back != null)
            {
                if (Mathf.Abs(temp.Value.x - traverser_path.back.x) < 0.05 && Mathf.Abs(temp.Value.y - traverser_path.back.y) < 0.05)
                {
                    continue;
                }
                if (Mathf.Abs(temp.Value.x - traverser_path.back.x) > 5 && Mathf.Abs(temp.Value.y - traverser_path.back.y) > 5)
                {
                    continue;
                }
            }
            //liner.positionCount = (liner.positionCount + 1);
            PathNode newnode = new PathNode(temp.Value.x, temp.Value.y, temp.Value.z);
            //vertices.Add(newnode.getVector() + new Vector3(0,5,0));
            //Point newpoint = Instantiate(linerendererobj, new Vector3(newnode.x, 2, newnode.y), Quaternion.identity).GetComponent<Point>();
            //newpoint.SetNum(count);
            //count++;
            //liner.SetPositions(vertices.ToArray());
            traverser_path.AddNode(newnode);
        }
        //paused = false;
        Global.Instance.last_inspected_track = track;
    }
Пример #4
0
    /*
     * public void Activate_Train(){
     *  active = true;
     * }
     *
     * public void Deactivate_Train(){
     *  active = false;
     *  current_speed = 0;
     * } */

    public void JunctionTapped()
    {
        GameObject junction_object = EventManager.GetGameObject("JUNCTION_TAPPED");

        if (junction_object == null)
        {
            TapDetection.IOSdebug("JunctionTapped-- junction_object is null");
            return;
        }
        AbstractTrack junction = junction_object.GetComponent <AbstractTrack>();

        if (junction == null)
        {
            TapDetection.IOSdebug("JunctionTapped-- junction is null");
            return;
        }
        junction.toggle_direction();
    }
Пример #5
0
    void InitializeTrain()
    {
        train_head = Instantiate(train_head_prefab);
        Global.Instance.train_head = train_head;
        AbstractTrack track = current_level.start_station.GetFirstTrack();

        for (int i = 0; i < 5; i++)
        {
            AddPath(track);
            track = track.GetNextTrack();
        }
        tracks_object.RequestPath(this);
        distance_travelled = 12;
        for (int i = 0; i < 3; i++)
        {
            GameObject new_carriage = Instantiate(carriage_prefab);
            train_carriages.AddLast(new_carriage);
        }
    }
Пример #6
0
    override public PathSpline GetPath()
    {
        GameObject last_obj = Global.Instance.last_inspected_track.gameObject;

        //print("TwoJoin: last_track name: "+last_obj.name);

        AbstractTrack last_track = last_obj.GetComponent <AbstractTrack>();

        if (last_track == null)
        {
            return(rightpath);
        }


        Vector3 twojoin_startpoint = GetStartPoint();


        if (twojoin_startpoint.x - transform.position.x < -1f)
        {
            return(leftpath);
        }
        else if (twojoin_startpoint.x - transform.position.x > 1f)
        {
            return(rightpath);
        }
        else
        {
            if (last_track.usable_junction())
            {
                if (last_track.GetOffset() < 0)
                {
                    return(leftpath);
                }
                else
                {
                    return(rightpath);
                }
            }
        }
        return(rightpath);
    }
Пример #7
0
    /*
     * public AbstractTrack GetNextTrack(Vector3 pos){
     *  GameObject track = gameObject;
     *  float dist2 = Mathf.Infinity;
     *  foreach (GameObject track_object in track_array)
     *  {
     *      float this_dist = (track_object.transform.position - pos).magnitude;
     *      if(this_dist < dist2){
     *          dist2 = this_dist;
     *          track = track_object;
     *      }
     *  }
     *
     *  int offset =  track.GetComponent<AbstractTrack>().GetOffset();
     *  Vector3 ref_pos = track.transform.position + new Vector3(offset*3,0,4);
     *  GameObject closest = track;
     *  float dist = Mathf.Infinity;
     *  foreach (GameObject track_object in track_array)
     *  {
     *      float this_dist = (track_object.transform.position - ref_pos).magnitude;
     *      if(this_dist < dist){
     *          dist = this_dist;
     *          closest = track_object;
     *      }
     *  }
     *
     *  return closest.GetComponent<AbstractTrack>();
     * }
     *
     * public AbstractTrack GetTrackAt(Vector3 pos){
     *  GameObject track = gameObject;
     *  float dist2 = Mathf.Infinity;
     *  foreach (GameObject track_object in track_array)
     *  {
     *      float z_dist = -(track_object.GetComponent<AbstractTrack>().GetStartPoint().z - pos.z);
     *      float this_dist = (track_object.GetComponent<AbstractTrack>().GetStartPoint() - pos).magnitude;
     *      if(z_dist<0){
     *          continue;
     *      }
     *      if(this_dist < dist2){
     *          dist2 = this_dist;
     *          track = track_object;
     *      }
     *  }
     *  return track.GetComponent<AbstractTrack>();
     * }
     *
     */

    public void RequestPath(GameHandler gamehandler)
    {
        //print("controller requested path");

        AbstractTrack picked_track = Global.Instance.last_inspected_track.GetNextTrack();

        //print("name of last inspected track: "+Global.Instance.last_inspected_track.name);

        //print("name of the picked_track: "+ picked_track.name);


        /*
         * if(Global.Instance.last_inspected_track != null){
         *  if(!picked_track.Equals(Global.Instance.last_inspected_track)){
         *      controller.AddPath(picked_track);
         *  }
         * } */
        if (picked_track == null)
        {
            Debug.LogError("RequestPath: picked_track is null");
        }

        if (picked_track.gameObject.CompareTag("Junction"))
        {
            picked_track.lock_track();
            //                                                  CHECK THIS
            gamehandler.AddPath(picked_track);
            picked_track = picked_track.GetNextTrack();
        }



        //picked_track.lock_track();
        //Global.Instance.last_inspected_track = picked_track;

        int count = 0;

        //picked_track = GetNextTrack(picked_track.gameObject);
        while (true)
        {
            if ((picked_track.gameObject.CompareTag("Junction") && picked_track.usable_junction()))
            {
                Global.Instance.junction_queue.Enqueue(picked_track);
                Global.Instance.ActivateNextJunction();
                //print("queued next junction: "+ picked_track.name);
                break;
            }
            count++;

            //                                                     CHECK THIS
            gamehandler.AddPath(picked_track);
            picked_track.lock_track();

            //Global.Instance.last_inspected_track = picked_track;
            //print("adding track: "+ picked_track.name + "; next track: "+picked_track.GetNextTrack());
            picked_track = picked_track.GetNextTrack();
            if (picked_track.Equals(Global.Instance.last_inspected_track))
            {
                //print("found end");
                break;
            }
            if (picked_track == null)
            {
                Debug.LogWarning("picked track is null");
                break;
            }
            if (count > 100)
            {
                Debug.LogError("COUNT TOO HIGH. INFO: " + picked_track.gameObject.name);
                return;
            }
        }
    }
Пример #8
0
 public void SelectTrack(AbstractTrack track)
 {
     this.selectedTrack = track;
     this.selectedTrackCategoryDropdown.value = (int)selectedTrack.TrackCategory;
 }
Пример #9
0
 virtual public void CalculateNextTrack()
 {
     next_track = Global.Instance.tracks_object.GetNextTrack(this.gameObject);
 }
Пример #10
0
 static int sortByZ(AbstractTrack track1, AbstractTrack track2)
 {
     return(track1.transform.position.z.CompareTo(track2.transform.position.z));
 }