Are you banned? Problems registering?

Are you banned, but don't think you did wrong? Are you having problems registering? Read this post first. If you still have questions, contact forum staff at staff (at) skyscrapersim (dot) com to get help.


Skyscraper Issue/Feature-Request Tracker

The issue/feature-request tracking system for Skyscraper.
Please read http://goo.gl/f0co3x before posting.

Feature Issue: More customizable floor indicator

Pages: [1]   Go Down

Offline Just a forumer

  • No ideas for the title
  • Member
  • *****
  • Posts: 132
  • very simple building developer
« on: March 04, 2018, 06:32:08 AM »
If  we can customize more the floor indicator like:
-We can make the indicator go blank between floors(like in old elevators/lifts)
-delays for when the indicator displays the floor(e.g.:in kone elevators the floor change even before the elevator reach the floor)
-rolling numbers(when the elevators reach another floor the number will have an scrolling animation)
Japanese Doggo

Offline ZZ9_Elevators

  • ZZ9 Productions
  • Member
  • *****
  • Posts: 655
  • Powered by KONE 375LCECPU40 logic
    • My YouTube channel - Skyscrapersim, Elevators & More!
« Reply #1 on: March 04, 2018, 11:07:18 AM »
If  we can customize more the floor indicator like:
-We can make the indicator go blank between floors(like in old elevators/lifts)
-delays for when the indicator displays the floor(e.g.:in kone elevators the floor change even before the elevator reach the floor)
-rolling numbers(when the elevators reach another floor the number will have an scrolling animation)
Yes that's something I have been wanting for a while, especially the one for KONE elevators.
- ZZ9 ;)
Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlphaYouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions
I have a fictional elevator company! I have made a building which has all my own brand of elevators in it.

My top 3 elevator companies:-
  • KONE & Schindler joint 1st
  • Otis
  • ThyssenKrupp

Feel free to give me feedback on my buildings and my YouTube channel! ;D

Quote from: cheapie
1st rule of real life: Anything can happen. It doesn't have to make sense.

Random lift voice of the day: "Please stay calm, help is coming, Please stay calm, help is coming, Please stay calm, help is coming, Please stay calm, help is coming.."

Offline PPEL

  • O_o
  • Member
  • *****
  • Posts: 35
    • My YouTube channel
« Reply #2 on: March 05, 2018, 12:01:31 PM »
Also, the directional indicators should have the option to go out after the doors close.
I wonder why this was never added.

-rolling numbers(when the elevators reach another floor the number will have an scrolling animation)
I think, that it's actually possible to do that.
« Last Edit: March 05, 2018, 12:06:34 PM by PPEL »

Offline ZZ9_Elevators

  • ZZ9 Productions
  • Member
  • *****
  • Posts: 655
  • Powered by KONE 375LCECPU40 logic
    • My YouTube channel - Skyscrapersim, Elevators & More!
« Reply #3 on: March 05, 2018, 02:51:01 PM »
Also, the directional indicators should have the option to go out after the doors close.
Yes, that's another thing that most elevators do, except Otis 2000s and Gen2s in the UK for some reason. :P
- ZZ9 ;)
Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlpha                          Scratch: ZZ9PluralZAlphaYouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions                          YouTube: ZZ9 Productions
I have a fictional elevator company! I have made a building which has all my own brand of elevators in it.

My top 3 elevator companies:-
  • KONE & Schindler joint 1st
  • Otis
  • ThyssenKrupp

Feel free to give me feedback on my buildings and my YouTube channel! ;D

Quote from: cheapie
1st rule of real life: Anything can happen. It doesn't have to make sense.

Random lift voice of the day: "Please stay calm, help is coming, Please stay calm, help is coming, Please stay calm, help is coming, Please stay calm, help is coming.."

Offline JaventheAldericky

  • Member
  • *****
  • Posts: 110
  • The best way to film a lift is to film the lift.
« Reply #4 on: March 06, 2018, 08:02:41 AM »
If  we can customize more the floor indicator like:
-We can make the indicator go blank between floors(like in old elevators/lifts)
-delays for when the indicator displays the floor(e.g.:in kone elevators the floor change even before the elevator reach the floor)
-rolling numbers(when the elevators reach another floor the number will have an scrolling animation)

It will be especially useful to make old lifts' floor indicators more realistic

A post a day keeps the... uh... something away.

;D

Offline cheapie

  • Member
  • *****
  • Posts: 1766
  • Meow!
    • Cheapie Systems
« Reply #5 on: March 07, 2018, 09:23:49 AM »
If  we can customize more the floor indicator like:
-We can make the indicator go blank between floors(like in old elevators/lifts)
-delays for when the indicator displays the floor(e.g.:in kone elevators the floor change even before the elevator reach the floor)
-rolling numbers(when the elevators reach another floor the number will have an scrolling animation)

This sort of thing is part of why I wish we had some way to attach some kind of general-purpose scripting language (Lua would work but is not the only choice) to the simulator. It seems a whole lot easier to me to allow building creators to script the behavior of these things than to just keep adding options forever.

Offline Test Tower

  • Global Moderator
  • *****
  • Posts: 1905
  • ^ Otis 2000
    • Skyscraper Stuff by Test Tower
« Reply #6 on: March 07, 2018, 09:11:37 PM »
Here is the discussion last time, which contains several examples:
https://forum.skyscrapersim.com/index.php?topic=7682.0

Issue updated by eventhorizon
« Reply #7 on: March 12, 2018, 12:30:54 PM »
  • Issue Assigned from (none) to eventhorizon
  • Status changed from New to Assigned

Offline eventhorizon

  • Administrator
  • *****
  • Posts: 3271
    • The Skyscraper Project
« Reply #8 on: March 12, 2018, 12:33:59 PM »
This sort of thing is part of why I wish we had some way to attach some kind of general-purpose scripting language (Lua would work but is not the only choice) to the simulator. It seems a whole lot easier to me to allow building creators to script the behavior of these things than to just keep adding options forever.

I've thought about that before, but for that to work, I think those objects would have to be converted entirely over to a scripted model.  Due to the layout of the simulator (and how other objects such as elevators manipulate things like directional indicators), I'm not quite sure how that can be done at this point.

Offline cheapie

  • Member
  • *****
  • Posts: 1766
  • Meow!
    • Cheapie Systems
« Reply #9 on: March 12, 2018, 11:42:09 PM »
I've thought about that before, but for that to work, I think those objects would have to be converted entirely over to a scripted model.  Due to the layout of the simulator (and how other objects such as elevators manipulate things like directional indicators), I'm not quite sure how that can be done at this point.

The way it was done with the other games I've seen was that objects were created by supplying a table of properties to a function that actually creates the object. These tables then continue to exist and contain status information about the object. Along with some of the basic information about the objects, there were also a bunch of callbacks that could be included (in that case, things like "on_dig" and "on_rightclick"). If one was not supplied for a given function, the engine would substitute a default to perform the standard (for the type of object) function.

So, for example, a directional indicator might contain something like this as one of the defaults. This would not need to be specified as the simulator would use it if nothing was specified during creation:
(this is Lua code, more or less, other languages would of course look different)
Code: [Select]
illuminate = function (self,direction,...)
     if direction == "up" then
          self:changeTexture(self.upTexture)
     else
          self:changeTexture(self.downTexture)
end

But, if the building designer wanted to, say, make it light up purple if the car was coming from the fifth floor or light up blue and do the Dover-style "on-off-on" thing in other cases, something like this could be specified when creating it:
Code: [Select]
illuminate = function(self,direction,...)
     local elevator = skyscraper.getElevator(self.elevatorNumber)
     local srcfloor = elevator.srcFloor
     if direction == "up" then
          if srcfloor == 5 then
               self:changeTexture("lanternUpPurple")
          else
               self:changeTexture("lanternUpBlue")
               skyscraper.after(0.5,skyscraper.directionalIndicator.changeTexture,self,"lanternOff")
               skyscraper.after(1,skyscraper.directionalIndicator.changeTexture,self,"lanternUpBlue")
          end
     else
          if srcfloor == 5 then
               self:changeTexture("lanternDownPurple")
          else
               self:changeTexture("lanternDownBlue")
               skyscraper.after(0.5,skyscraper.directionalIndicator.changeTexture,self,"lanternOff")
               skyscraper.after(1,skyscraper.directionalIndicator.changeTexture,self,"lanternDownBlue")
          end
     end
end
Admittedly, this is a bit of an extreme example, but hopefully it does a good job of demonstrating the sorts of things that would be possible.

Offline eventhorizon

  • Administrator
  • *****
  • Posts: 3271
    • The Skyscraper Project
« Reply #10 on: March 13, 2018, 06:20:26 PM »
Admittedly, this is a bit of an extreme example, but hopefully it does a good job of demonstrating the sorts of things that would be possible.

I've looked that code over.  Floor indicators and directional indicators in Skyscraper are actually very different, and neither of them have actual operational code in them; the elevator code controls their operations.

Floor indicators have a single function called Update() (with no parameters) that just applies the correct texture to the indicator, to show the current elevator car floor.  This function currently needs to be called by the elevator code at different points to refresh the indicators, and I'd have to check but there's a possibility that the functionality could be moved into the indicators themselves to remove the elevator dependence.  Basically right now the elevators run the Update function when they arrive at a new floor.  On the topic of adding the requested features in this ticket, the indicators currently store the texture prefix name, and then add the Floor ID onto that, and they don't store a "blank" texture, so I'd probably have to add a blank texture parameter to the AddFloorIndicator script command.  I'm not currently sure how I'd have the elevator code "blank" the indicators, but it might be easier if you tell it to blank them when it passes a certain location, such as half-way into the floor.  Indicator delays can be done by the elevator code waiting until a certain point before refreshing/updating the indicators.  Rolling numbers could possibly be done by using animated textures (the LoadAnimated texture command) - I haven't tested this at all though to see if it works or not.

Directional indicators have 3 functions, an UpLight and DownLight function which you pass a boolean to, and that allows you to manually turn on/off the lights.  The third function is used internally by those, and is SetLights which you pass an integer value for each light (up and down), 0 for no change, 1 for on, and 2 for off.  This function does the raw texture switching.  There's actually a fourth function which is an auto-switchoff timer.  Directional indicators only have this code, and don't have any code to update themselves according to elevator status, etc.  The elevator code that turns on/off the lights is part of the elevator Car object, the NotifyArrival() function, which does the chime and then calculates the arrival direction using the GetArrivalDirection() function for the lanterns, and then switches on/off the lanterns themselves.  So basically what I'm pointing out is that the process used by directional indicators is much more elaborate than it might seem just by using them, and almost everything in Skyscraper is compartmentalized into individual functions that describe a single operation (that's why when people have debugged the code, they've noticed how extensive the use of functions are in Skyscraper).  The operational code could be moved into the directional indicator object itself, but it would mainly have to know when to operate, e.g. when an elevator car does an arrival notification (this currently makes much more sense having the elevator car doing it).  The only other way is to gut most of the elevator code and script it, which is not easy since there's a lot of code.

Everything is currently very elegant and simple, and the code shouldn't be that hard to learn, you just mainly have to gain an understanding of the functional layout of the SBS engine.  I've wanted to add some kind of scripting element to the objects, but the script code would have to be able to call SBS functions for it to be useful at all.  One other simulator (The Sims) has objects running as virtual machine objects, and objects have their own code written in a stack-based assembly-like language (this was at least true for the Sims 2 - don't know about later versions).  In that app, the objects can crash and not take down the whole simulator which is really nice.  In Skyscraper, the objects are centrally defined in an object framework (as an Object type) which has virtual functions that allow you to call things like Init() and Enable() on any object, so Skyscraper does have some of the concepts of larger sim engines.  This object system didn't originally exist, but developed over time in order to simplify the growing complexity of the simulator.

One thing I wanted to change was to have elevators have their own controller objects,  but that would probably break script code and require a lot of reworking of the sim code.  It's mainly because call buttons have the calling logic built into them, even though in real life elevators have controllers that handle call logic.  When you press a call button, that call button takes authority on the elevator call group, actively searches for an available elevator, and then dispatches the elevator using the elevator's AddRoute() function.  The reason that code isn't in the Elevator objects is because it's based on the call group, and not an individual Elevator object.  Right now, to create the call buttons, you define the call group's elevators and then create the call buttons themselves, and I don't know how this can be migrated over to a controller system (unless I make new commands to define a controller, and then create a new call button creation command - the backwards compatibility is what's confusing to me).  If I created a controller, I could move the call button code into it (which isn't much), but the elevator's call processing and routing code would have to be moved into it too, which is where things get tricky.
« Last Edit: March 13, 2018, 06:23:18 PM by eventhorizon »

Pages: [1]   Go Up

Issue Details

  • Reported
    March 04, 2018, 06:32:08 AM
  • Updated
    March 13, 2018, 06:20:26 PM
  • View Status
    Public
  • Type
    Feature
  • Status
    Assigned
  • Priority
    Normal
  • Version
    (none)
  • Fixed in
    (none)
  • Assigned to
    eventhorizon
  • Category
    Suggestions

Tags



Powered by: SMF Project Tools 0.5.3 © Niko Pahajoki 2007-2011
Powered by EzPortal